diff --git a/ITV.txt b/ITV.txt
new file mode 100644
index 0000000..db37f46
--- /dev/null
+++ b/ITV.txt
@@ -0,0 +1,647 @@
+央视频道,#genre#
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000004953&livemode=1&stbId=yu&mode=1
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000002226&livemode=1&stbId=yu&mode=1
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000030810&livemode=1&stbId=yu&mode=1
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265001&livemode=1&stbId=yu&mode=1
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000052&livemode=1&stbId=yu&mode=1
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000029752&livemode=1&stbId=yu&mode=1
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000018602&livemode=1&stbId=yu&mode=1
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000021973&livemode=1&stbId=yu&mode=1
+CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265001&livemode=1&stbId=yu&mode=1
+CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000005000031113&livemode=1&stbId=yu&mode=1
+CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031101&livemode=1&stbId=yu&mode=1
+CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000014161&livemode=1&stbId=yu&mode=1
+CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=8878432746825677699&livemode=1&stbId=yu&mode=1
+CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000012442&livemode=1&stbId=yu&mode=1
+CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000023315&livemode=1&stbId=yu&mode=1
+CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265002&livemode=1&stbId=yu&mode=1
+CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5353323539453949720&livemode=1&stbId=yu&mode=1
+CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000002000020548&livemode=1&stbId=yu&mode=1
+CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000008883&livemode=1&stbId=yu&mode=1
+CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265003&livemode=1&stbId=yu&mode=1
+CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000022313&livemode=1&stbId=yu&mode=1
+CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000011218&livemode=1&stbId=yu&mode=1
+CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000013682&livemode=1&stbId=yu&mode=1
+CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265003&livemode=1&stbId=yu&mode=1
+CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8378175926191110263&livemode=1&stbId=yu&mode=1
+CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000005000030093&livemode=1&stbId=yu&mode=1
+CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031102&livemode=1&stbId=yu&mode=1
+CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265004&livemode=1&stbId=yu&mode=1
+CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000031664&livemode=1&stbId=yu&mode=1
+CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265004&livemode=1&stbId=yu&mode=1
+CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8183388942203045169&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000008885&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000016619&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265005&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=4867251683694877276&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000016431&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=7680777599813046442&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000004794&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000003000030177&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000025222&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265005&livemode=1&stbId=yu&mode=1
+CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=reallive-cctv5&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000008886&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000018433&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265006&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000004574&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6994512760913257617&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001737&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000016466&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265006&livemode=1&stbId=yu&mode=1
+CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6117099895556651277&livemode=1&stbId=yu&mode=1
+CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000005000026715&livemode=1&stbId=yu&mode=1
+CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031104&livemode=1&stbId=yu&mode=1
+CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009055&livemode=1&stbId=yu&mode=1
+CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000017218&livemode=1&stbId=yu&mode=1
+CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000024341&livemode=1&stbId=yu&mode=1
+CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265007&livemode=1&stbId=yu&mode=1
+CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7050628689018054317&livemode=1&stbId=yu&mode=1
+CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000008888&livemode=1&stbId=yu&mode=1
+CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000018377&livemode=1&stbId=yu&mode=1
+CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000001070&livemode=1&stbId=yu&mode=1
+CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=8967744667154419073&livemode=1&stbId=yu&mode=1
+CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000003736&livemode=1&stbId=yu&mode=1
+CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000031433&livemode=1&stbId=yu&mode=1
+CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265008&livemode=1&stbId=yu&mode=1
+CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8871488051501921127&livemode=1&stbId=yu&mode=1
+CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000018384&livemode=1&stbId=yu&mode=1
+CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288020&livemode=1&stbId=yu&mode=1
+CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000032162&livemode=1&stbId=yu&mode=1
+CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6350727550077620987&livemode=1&stbId=yu&mode=1
+CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014583&livemode=1&stbId=yu&mode=1
+CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000028286&livemode=1&stbId=yu&mode=1
+CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265009&livemode=1&stbId=yu&mode=1
+CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6275371742726901431&livemode=1&stbId=yu&mode=1
+CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000012827&livemode=1&stbId=yu&mode=1
+CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000016738&livemode=1&stbId=yu&mode=1
+CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000031506&livemode=1&stbId=yu&mode=1
+CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000023734&livemode=1&stbId=yu&mode=1
+CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000026367&livemode=1&stbId=yu&mode=1
+CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265010&livemode=1&stbId=yu&mode=1
+CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7019587760656900133&livemode=1&stbId=yu&mode=1
+CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040011&livemode=1&stbId=yu&mode=1
+CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031106&livemode=1&stbId=yu&mode=1
+CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000019789&livemode=1&stbId=yu&mode=1
+CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265011&livemode=1&stbId=yu&mode=1
+CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6351457414282570521&livemode=1&stbId=yu&mode=1
+CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040012&livemode=1&stbId=yu&mode=1
+CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031107&livemode=1&stbId=yu&mode=1
+CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000022586&livemode=1&stbId=yu&mode=1
+CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001640&livemode=1&stbId=yu&mode=1
+CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000032494&livemode=1&stbId=yu&mode=1
+CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265012&livemode=1&stbId=yu&mode=1
+CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5325631075193490169&livemode=1&stbId=yu&mode=1
+CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000005000001827&livemode=1&stbId=yu&mode=1
+CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031108&livemode=1&stbId=yu&mode=1
+CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000021303&livemode=1&stbId=yu&mode=1
+CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265101&livemode=1&stbId=yu&mode=1
+CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6918130250570453526&livemode=1&stbId=yu&mode=1
+CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000006673&livemode=1&stbId=yu&mode=1
+CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000023358&livemode=1&stbId=yu&mode=1
+CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000013647&livemode=1&stbId=yu&mode=1
+CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6113730085955692619&livemode=1&stbId=yu&mode=1
+CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000008170&livemode=1&stbId=yu&mode=1
+CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000021349&livemode=1&stbId=yu&mode=1
+CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265013&livemode=1&stbId=yu&mode=1
+CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8203666801302077036&livemode=1&stbId=yu&mode=1
+CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000005000018417&livemode=1&stbId=yu&mode=1
+CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031109&livemode=1&stbId=yu&mode=1
+CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000008163&livemode=1&stbId=yu&mode=1
+CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265014&livemode=1&stbId=yu&mode=1
+CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4832596595465032187&livemode=1&stbId=yu&mode=1
+CCTV16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000008000023254&livemode=1&stbId=yu&mode=1
+CCTV16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000008000023253&livemode=1&stbId=yu&mode=1
+CCTV16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000233001&livemode=1&stbId=yu&mode=1
+CCTV16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000233002&livemode=1&stbId=yu&mode=1
+CCTV17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288014&livemode=1&stbId=yu&mode=1
+CCTV17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000056836&livemode=1&stbId=yu&mode=1
+CCTV17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265015&livemode=1&stbId=yu&mode=1
+CCTV17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268004&livemode=1&stbId=yu&mode=1
+CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031127&livemode=1&stbId=yu&mode=1
+CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=5350361928876847638&livemode=1&stbId=yu&mode=1
+CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000015875&livemode=1&stbId=yu&mode=1
+CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000018504&livemode=1&stbId=yu&mode=1
+CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000020505&livemode=1&stbId=yu&mode=1
+CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265016&livemode=1&stbId=yu&mode=1
+CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=reallive-cctv5plus&livemode=1&stbId=yu&mode=1
+卫视频道,#genre#
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000006692&livemode=1&stbId=yu&mode=1
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000030452&livemode=1&stbId=yu&mode=1
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265010&livemode=1&stbId=yu&mode=1
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000018044&livemode=1&stbId=yu&mode=1
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009115&livemode=1&stbId=yu&mode=1
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000032695&livemode=1&stbId=yu&mode=1
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265024&livemode=1&stbId=yu&mode=1
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6954818217931477266&livemode=1&stbId=yu&mode=1
+湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8655038471675748531&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000014098&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000032246&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265007&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000003639&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6690661682550849647&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000005866&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000030202&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265018&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4699937686040264690&livemode=1&stbId=yu&mode=1
+东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6081477947334326291&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000019351&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000018509&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265009&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000014861&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001828&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000004684&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265030&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4690153511271751319&livemode=1&stbId=yu&mode=1
+江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4796340999304424198&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000014694&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000030417&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=5306115082857917057&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000031076&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014176&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000028357&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265034&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5616881981321254555&livemode=1&stbId=yu&mode=1
+广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6604532991586541024&livemode=1&stbId=yu&mode=1
+浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000007275&livemode=1&stbId=yu&mode=1
+浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000017320&livemode=1&stbId=yu&mode=1
+浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000032070&livemode=1&stbId=yu&mode=1
+浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009806&livemode=1&stbId=yu&mode=1
+浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014260&livemode=1&stbId=yu&mode=1
+浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265031&livemode=1&stbId=yu&mode=1
+浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4945391150963996912&livemode=1&stbId=yu&mode=1
+浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7889730693553663314&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000031556&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000011502&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265011&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000020451&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000017156&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000021288&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265027&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8186688740528366039&livemode=1&stbId=yu&mode=1
+北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8258663409451267714&livemode=1&stbId=yu&mode=1
+深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000007410&livemode=1&stbId=yu&mode=1
+深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000024026&livemode=1&stbId=yu&mode=1
+深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000002116&livemode=1&stbId=yu&mode=1
+深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009227&livemode=1&stbId=yu&mode=1
+深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000011645&livemode=1&stbId=yu&mode=1
+深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265028&livemode=1&stbId=yu&mode=1
+深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5352218613763113657&livemode=1&stbId=yu&mode=1
+深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7696950400632248401&livemode=1&stbId=yu&mode=1
+天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000030788&livemode=1&stbId=yu&mode=1
+天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000006827&livemode=1&stbId=yu&mode=1
+天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009186&livemode=1&stbId=yu&mode=1
+天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000000831&livemode=1&stbId=yu&mode=1
+天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000003475&livemode=1&stbId=yu&mode=1
+天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265026&livemode=1&stbId=yu&mode=1
+天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6707942579111517572&livemode=1&stbId=yu&mode=1
+天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8798367982904688776&livemode=1&stbId=yu&mode=1
+山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000020424&livemode=1&stbId=yu&mode=1
+山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000027763&livemode=1&stbId=yu&mode=1
+山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000004134&livemode=1&stbId=yu&mode=1
+山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000012807&livemode=1&stbId=yu&mode=1
+山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000016568&livemode=1&stbId=yu&mode=1
+山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265019&livemode=1&stbId=yu&mode=1
+山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7347081113971056899&livemode=1&stbId=yu&mode=1
+山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7744799445271696577&livemode=1&stbId=yu&mode=1
+安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000027288&livemode=1&stbId=yu&mode=1
+安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000023002&livemode=1&stbId=yu&mode=1
+安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009954&livemode=1&stbId=yu&mode=1
+安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000020780&livemode=1&stbId=yu&mode=1
+安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000030159&livemode=1&stbId=yu&mode=1
+安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265025&livemode=1&stbId=yu&mode=1
+安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4774346722046993363&livemode=1&stbId=yu&mode=1
+江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000032154&livemode=1&stbId=yu&mode=1
+江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000011210&livemode=1&stbId=yu&mode=1
+江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000013731&livemode=1&stbId=yu&mode=1
+江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265032&livemode=1&stbId=yu&mode=1
+江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268001&livemode=1&stbId=yu&mode=1
+江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5616078396620462481&livemode=1&stbId=yu&mode=1
+黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000025203&livemode=1&stbId=yu&mode=1
+黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000031107&livemode=1&stbId=yu&mode=1
+黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000016510&livemode=1&stbId=yu&mode=1
+黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001925&livemode=1&stbId=yu&mode=1
+黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009082&livemode=1&stbId=yu&mode=1
+黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265029&livemode=1&stbId=yu&mode=1
+黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8467838254824392379&livemode=1&stbId=yu&mode=1
+四川卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000006119&livemode=1&stbId=yu&mode=1
+四川卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000016825&livemode=1&stbId=yu&mode=1
+贵州卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000025843&livemode=1&stbId=yu&mode=1
+贵州卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000003169&livemode=1&stbId=yu&mode=1
+湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000014954&livemode=1&stbId=yu&mode=1
+湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000022140&livemode=1&stbId=yu&mode=1
+湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000015436&livemode=1&stbId=yu&mode=1
+湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000010355&livemode=1&stbId=yu&mode=1
+湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000024621&livemode=1&stbId=yu&mode=1
+湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265023&livemode=1&stbId=yu&mode=1
+湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6956052407855047826&livemode=1&stbId=yu&mode=1
+辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000008940&livemode=1&stbId=yu&mode=1
+辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000011671&livemode=1&stbId=yu&mode=1
+辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001945&livemode=1&stbId=yu&mode=1
+辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000024033&livemode=1&stbId=yu&mode=1
+辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265022&livemode=1&stbId=yu&mode=1
+辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7638375013635582245&livemode=1&stbId=yu&mode=1
+广西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040014&livemode=1&stbId=yu&mode=1
+广西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031118&livemode=1&stbId=yu&mode=1
+广西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000019837&livemode=1&stbId=yu&mode=1
+重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000025797&livemode=1&stbId=yu&mode=1
+重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001096&livemode=1&stbId=yu&mode=1
+重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000018937&livemode=1&stbId=yu&mode=1
+重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265017&livemode=1&stbId=yu&mode=1
+重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4995134319251569870&livemode=1&stbId=yu&mode=1
+东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000005829&livemode=1&stbId=yu&mode=1
+东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000010584&livemode=1&stbId=yu&mode=1
+东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000009263&livemode=1&stbId=yu&mode=1
+东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265033&livemode=1&stbId=yu&mode=1
+东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7721801662260370363&livemode=1&stbId=yu&mode=1
+吉林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040013&livemode=1&stbId=yu&mode=1
+吉林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031117&livemode=1&stbId=yu&mode=1
+吉林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000027730&livemode=1&stbId=yu&mode=1
+海南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000006211&livemode=1&stbId=yu&mode=1
+海南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000023773&livemode=1&stbId=yu&mode=1
+云南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040019&livemode=1&stbId=yu&mode=1
+云南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031120&livemode=1&stbId=yu&mode=1
+云南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000024694&livemode=1&stbId=yu&mode=1
+厦门卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266006&livemode=1&stbId=yu&mode=1
+河南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000005000017925&livemode=1&stbId=yu&mode=1
+河南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031119&livemode=1&stbId=yu&mode=1
+河南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000027731&livemode=1&stbId=yu&mode=1
+河北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040016&livemode=1&stbId=yu&mode=1
+河北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000017118&livemode=1&stbId=yu&mode=1
+陕西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040017&livemode=1&stbId=yu&mode=1
+陕西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000007495&livemode=1&stbId=yu&mode=1
+山西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040023&livemode=1&stbId=yu&mode=1
+山西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000021220&livemode=1&stbId=yu&mode=1
+甘肃卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040021&livemode=1&stbId=yu&mode=1
+甘肃卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031121&livemode=1&stbId=yu&mode=1
+甘肃卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000017827&livemode=1&stbId=yu&mode=1
+宁夏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040022&livemode=1&stbId=yu&mode=1
+宁夏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000031451&livemode=1&stbId=yu&mode=1
+青海卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040015&livemode=1&stbId=yu&mode=1
+青海卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000013359&livemode=1&stbId=yu&mode=1
+西藏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000015894&livemode=1&stbId=yu&mode=1
+新疆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040018&livemode=1&stbId=yu&mode=1
+新疆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000029441&livemode=1&stbId=yu&mode=1
+三沙卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288016&livemode=1&stbId=yu&mode=1
+农林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000046&livemode=1&stbId=yu&mode=1
+农林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266003&livemode=1&stbId=yu&mode=1
+延边卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000049&livemode=1&stbId=yu&mode=1
+延边卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266008&livemode=1&stbId=yu&mode=1
+兵团卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040020&livemode=1&stbId=yu&mode=1
+兵团卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266005&livemode=1&stbId=yu&mode=1
+康巴卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266002&livemode=1&stbId=yu&mode=1
+安多卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266001&livemode=1&stbId=yu&mode=1
+内蒙古卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000014080&livemode=1&stbId=yu&mode=1
+大湾区卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000045&livemode=1&stbId=yu&mode=1
+大湾区卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000011619&livemode=1&stbId=yu&mode=1
+山东教育卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000004097&livemode=1&stbId=yu&mode=1
+地方频道,#genre#
+北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031204&livemode=1&stbId=yu&mode=1
+北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000065&livemode=1&stbId=yu&mode=1
+北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000026&livemode=1&stbId=yu&mode=1
+北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001910&livemode=1&stbId=yu&mode=1
+北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000028380&livemode=1&stbId=yu&mode=1
+北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265020&livemode=1&stbId=yu&mode=1
+北京卡酷少儿,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000265008&livemode=1&stbId=yu&mode=1
+北京卡酷少儿,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=7851974109718180595&livemode=1&stbId=yu&mode=1
+北京卡酷少儿,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000002413&livemode=1&stbId=yu&mode=1
+广东珠江,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000033&livemode=1&stbId=yu&mode=1
+广东珠江,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000011655&livemode=1&stbId=yu&mode=1
+广东嘉佳卡通,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000025964&livemode=1&stbId=yu&mode=1
+湖南茶频道,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031209&livemode=1&stbId=yu&mode=1
+湖南茶频道,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000070&livemode=1&stbId=yu&mode=1
+湖南快乐垂钓,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031206&livemode=1&stbId=yu&mode=1
+湖南快乐垂钓,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000067&livemode=1&stbId=yu&mode=1
+湖南金鹰卡通,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040024&livemode=1&stbId=yu&mode=1
+湖南金鹰卡通,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000016601&livemode=1&stbId=yu&mode=1
+湖南金鹰纪实,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031203&livemode=1&stbId=yu&mode=1
+湖南金鹰纪实,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000011724&livemode=1&stbId=yu&mode=1
+江苏优漫卡通,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000010063&livemode=1&stbId=yu&mode=1
+江苏财富天下,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031208&livemode=1&stbId=yu&mode=1
+江苏财富天下,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000069&livemode=1&stbId=yu&mode=1
+上海ICS,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000030951&livemode=1&stbId=yu&mode=1
+上海ICS,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288018&livemode=1&stbId=yu&mode=1
+上海ICS,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000001&livemode=1&stbId=yu&mode=1
+上海都市,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000018926&livemode=1&stbId=yu&mode=1
+上海都市,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000012&livemode=1&stbId=yu&mode=1
+上海教育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288019&livemode=1&stbId=yu&mode=1
+上海新闻综合,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031110&livemode=1&stbId=yu&mode=1
+上海新闻综合,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000005&livemode=1&stbId=yu&mode=1
+上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000021713&livemode=1&stbId=yu&mode=1
+上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000004000010282&livemode=1&stbId=yu&mode=1
+上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000010606&livemode=1&stbId=yu&mode=1
+上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000016545&livemode=1&stbId=yu&mode=1
+上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265021&livemode=1&stbId=yu&mode=1
+上海东方影视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000032212&livemode=1&stbId=yu&mode=1
+上海东方影视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000013&livemode=1&stbId=yu&mode=1
+上海第一财经,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000027146&livemode=1&stbId=yu&mode=1
+上海第一财经,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000004&livemode=1&stbId=yu&mode=1
+上海五星体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000017540&livemode=1&stbId=yu&mode=1
+上海五星体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000007&livemode=1&stbId=yu&mode=1
+上海哈哈炫动,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000005000031641&livemode=1&stbId=yu&mode=1
+上海哈哈炫动,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031123&livemode=1&stbId=yu&mode=1
+上海哈哈炫动,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000000172&livemode=1&stbId=yu&mode=1
+其它频道,#genre#
+中国教育1台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000002000002652&livemode=1&stbId=yu&mode=1
+中国教育1台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288015&livemode=1&stbId=yu&mode=1
+中国教育1台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000027253&livemode=1&stbId=yu&mode=1
+中国教育2台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031201&livemode=1&stbId=yu&mode=1
+中国教育2台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288017&livemode=1&stbId=yu&mode=1
+中国教育2台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000047&livemode=1&stbId=yu&mode=1
+中国教育2台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266004&livemode=1&stbId=yu&mode=1
+中国教育4台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000012123&livemode=1&stbId=yu&mode=1
+中国教育4台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031126&livemode=1&stbId=yu&mode=1
+中国教育4台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000025333&livemode=1&stbId=yu&mode=1
+求索纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000010&livemode=1&stbId=yu&mode=1
+求索纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000002000032052&livemode=1&stbId=yu&mode=1
+求索动物,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000009&livemode=1&stbId=yu&mode=1
+求索动物,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000002000010046&livemode=1&stbId=yu&mode=1
+求索科学,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000011&livemode=1&stbId=yu&mode=1
+求索科学,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000002000032344&livemode=1&stbId=yu&mode=1
+求索生活,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000008&livemode=1&stbId=yu&mode=1
+求索生活,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000002000003382&livemode=1&stbId=yu&mode=1
+中国天气,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000005000031974&livemode=1&stbId=yu&mode=1
+中国天气,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000057&livemode=1&stbId=yu&mode=1
+健康养生,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288006&livemode=1&stbId=yu&mode=1
+中华美食,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000052&livemode=1&stbId=yu&mode=1
+中华美食,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266015&livemode=1&stbId=yu&mode=1
+风尚音乐,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000004&livemode=1&stbId=yu&mode=1
+风尚音乐,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=5529729098703832176&livemode=1&stbId=yu&mode=1
+高清娱乐,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000013&livemode=1&stbId=yu&mode=1
+高清娱乐,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000001569&livemode=1&stbId=yu&mode=1
+华数服务,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000025&livemode=1&stbId=yu&mode=1
+精品剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000002&livemode=1&stbId=yu&mode=1
+精品剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=8230197131234717902&livemode=1&stbId=yu&mode=1
+精品综合,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000008&livemode=1&stbId=yu&mode=1
+精品综合,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5595720619887440144&livemode=1&stbId=yu&mode=1
+漫游世界,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000017&livemode=1&stbId=yu&mode=1
+漫游世界,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000028434&livemode=1&stbId=yu&mode=1
+欧美影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000005&livemode=1&stbId=yu&mode=1
+欧美影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=7185203501769528108&livemode=1&stbId=yu&mode=1
+热播精选,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000016&livemode=1&stbId=yu&mode=1
+热播精选,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7681593242002292003&livemode=1&stbId=yu&mode=1
+少儿动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000003&livemode=1&stbId=yu&mode=1
+少儿动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=8145334647720731271&livemode=1&stbId=yu&mode=1
+探索纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000007&livemode=1&stbId=yu&mode=1
+探索纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=5359008697329269813&livemode=1&stbId=yu&mode=1
+电子竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000015&livemode=1&stbId=yu&mode=1
+电子竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000011654&livemode=1&stbId=yu&mode=1
+亚洲影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000006&livemode=1&stbId=yu&mode=1
+亚洲影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=5841816227539527643&livemode=1&stbId=yu&mode=1
+精彩影视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000063&livemode=1&stbId=yu&mode=1
+精彩影视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000320630&livemode=1&stbId=yu&mode=1
+睛彩竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011528&livemode=1&stbId=yu&mode=1
+睛彩竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011530&livemode=1&stbId=yu&mode=1
+睛彩竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000060&livemode=1&stbId=yu&mode=1
+睛彩竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270001&livemode=1&stbId=yu&mode=1
+睛彩青少,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011525&livemode=1&stbId=yu&mode=1
+睛彩青少,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000031315&livemode=1&stbId=yu&mode=1
+睛彩青少,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000068&livemode=1&stbId=yu&mode=1
+睛彩青少,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270007&livemode=1&stbId=yu&mode=1
+睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011529&livemode=1&stbId=yu&mode=1
+睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011531&livemode=1&stbId=yu&mode=1
+睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000061&livemode=1&stbId=yu&mode=1
+睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000065&livemode=1&stbId=yu&mode=1
+睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270002&livemode=1&stbId=yu&mode=1
+睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270006&livemode=1&stbId=yu&mode=1
+睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011523&livemode=1&stbId=yu&mode=1
+睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011524&livemode=1&stbId=yu&mode=1
+睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000062&livemode=1&stbId=yu&mode=1
+睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000064&livemode=1&stbId=yu&mode=1
+睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270003&livemode=1&stbId=yu&mode=1
+睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270005&livemode=1&stbId=yu&mode=1
+华数4K,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000014&livemode=1&stbId=yu&mode=1
+华数4K,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000004748&livemode=1&stbId=yu&mode=1
+纯享4K,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000011651&livemode=1&stbId=yu&mode=1
+炫动3D,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000012&livemode=1&stbId=yu&mode=1
+炫动3D,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000000558&livemode=1&stbId=yu&mode=1
+移动云VR,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000015686&livemode=1&stbId=yu&mode=1
+英雄联盟音乐节,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000011&livemode=1&stbId=yu&mode=1
+英雄联盟音乐节,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8978605063318475207&livemode=1&stbId=yu&mode=1
+咪咕视频,#genre#
+咪咕体育-4K,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000005180&livemode=1&stbId=yu&mode=1
+咪咕视频-1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000005969&livemode=1&stbId=yu&mode=1
+咪咕视频-2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000007218&livemode=1&stbId=yu&mode=1
+咪咕视频-3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000008001&livemode=1&stbId=yu&mode=1
+咪咕视频-4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000010129&livemode=1&stbId=yu&mode=1
+咪咕视频-5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000010948&livemode=1&stbId=yu&mode=1
+咪咕视频-6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000028638&livemode=1&stbId=yu&mode=1
+咪咕视频-7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000031494&livemode=1&stbId=yu&mode=1
+咪咕视频-8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000000097&livemode=1&stbId=yu&mode=1
+咪咕视频-9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000002019&livemode=1&stbId=yu&mode=1
+咪咕视频-10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000003915&livemode=1&stbId=yu&mode=1
+咪咕视频-11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000004193&livemode=1&stbId=yu&mode=1
+咪咕视频-12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000005837&livemode=1&stbId=yu&mode=1
+咪咕视频-13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000006077&livemode=1&stbId=yu&mode=1
+咪咕视频-14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000006658&livemode=1&stbId=yu&mode=1
+咪咕视频-15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000009788&livemode=1&stbId=yu&mode=1
+咪咕视频-16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000010833&livemode=1&stbId=yu&mode=1
+咪咕视频-17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000011297&livemode=1&stbId=yu&mode=1
+咪咕视频-18,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000011518&livemode=1&stbId=yu&mode=1
+咪咕视频-19,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000012558&livemode=1&stbId=yu&mode=1
+咪咕视频-20,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000012616&livemode=1&stbId=yu&mode=1
+咪咕视频-21,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000015470&livemode=1&stbId=yu&mode=1
+咪咕视频-22,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000019839&livemode=1&stbId=yu&mode=1
+咪咕视频-23,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000021904&livemode=1&stbId=yu&mode=1
+咪咕视频-24,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000025380&livemode=1&stbId=yu&mode=1
+咪咕视频-25,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000027691&livemode=1&stbId=yu&mode=1
+咪咕视频-26,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000031669&livemode=1&stbId=yu&mode=1
+咪咕视频-27,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011518&livemode=1&stbId=yu&mode=1
+咪咕视频-28,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011519&livemode=1&stbId=yu&mode=1
+咪咕视频-29,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011520&livemode=1&stbId=yu&mode=1
+咪咕视频-30,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011521&livemode=1&stbId=yu&mode=1
+咪咕视频-31,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011522&livemode=1&stbId=yu&mode=1
+咪咕视频-32,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000063&livemode=1&stbId=yu&mode=1
+咪咕视频-33,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270004&livemode=1&stbId=yu&mode=1
+咪咕游戏赛事-1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000008176&livemode=1&stbId=yu&mode=1
+咪咕足球赛事-2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000005308&livemode=1&stbId=yu&mode=1
+咪咕足球赛事-3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000008379&livemode=1&stbId=yu&mode=1
+咪咕足球赛事-4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000002809&livemode=1&stbId=yu&mode=1
+咪咕足球赛事-5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000015560&livemode=1&stbId=yu&mode=1
+咪咕足球赛事-6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000023434&livemode=1&stbId=yu&mode=1
+SiTV频道,#genre#
+SiTV动漫秀场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000002000023636&livemode=1&stbId=yu&mode=1
+SiTV动漫秀场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031113&livemode=1&stbId=yu&mode=1
+SiTV动漫秀场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000009&livemode=1&stbId=yu&mode=1
+SiTV游戏风云,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000002000027005&livemode=1&stbId=yu&mode=1
+SiTV游戏风云,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031114&livemode=1&stbId=yu&mode=1
+SiTV游戏风云,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000011&livemode=1&stbId=yu&mode=1
+SiTV法治天地,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=9001547084732463424&livemode=1&stbId=yu&mode=1
+SiTV法治天地,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000014&livemode=1&stbId=yu&mode=1
+SiTV劲爆体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000002000029972&livemode=1&stbId=yu&mode=1
+SiTV劲爆体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000008&livemode=1&stbId=yu&mode=1
+SiTV魅力足球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031207&livemode=1&stbId=yu&mode=1
+SiTV魅力足球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000068&livemode=1&stbId=yu&mode=1
+SiTV金色学堂,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000010000026105&livemode=1&stbId=yu&mode=1
+SiTV金色学堂,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000061&livemode=1&stbId=yu&mode=1
+SiTV欢笑剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000002000009455&livemode=1&stbId=yu&mode=1
+SiTV欢笑剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000007000010001&livemode=1&stbId=yu&mode=1
+SiTV欢笑剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000016&livemode=1&stbId=yu&mode=1
+SiTV七彩戏剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031116&livemode=1&stbId=yu&mode=1
+SiTV七彩戏剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000010&livemode=1&stbId=yu&mode=1
+SiTV生活时尚,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000002000019634&livemode=1&stbId=yu&mode=1
+SiTV生活时尚,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000006&livemode=1&stbId=yu&mode=1
+SiTV乐游,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000006000040025&livemode=1&stbId=yu&mode=1
+SiTV乐游,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031112&livemode=1&stbId=yu&mode=1
+SiTV乐游,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000059&livemode=1&stbId=yu&mode=1
+SiTV乐游,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000092&livemode=1&stbId=yu&mode=1
+SiTV都市剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000002000004412&livemode=1&stbId=yu&mode=1
+SiTV都市剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000031111&livemode=1&stbId=yu&mode=1
+SiTV都市剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000015&livemode=1&stbId=yu&mode=1
+SiTV东方财经,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000007000010003&livemode=1&stbId=yu&mode=1
+SiTV东方财经,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000090&livemode=1&stbId=yu&mode=1
+iHOT频道,#genre#
+iHOT爱科学,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000047&livemode=1&stbId=yu&mode=1
+iHOT爱科学,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000160630&livemode=1&stbId=yu&mode=1
+iHOT爱历史,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000046&livemode=1&stbId=yu&mode=1
+iHOT爱历史,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000150630&livemode=1&stbId=yu&mode=1
+iHOT爱旅行,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000056&livemode=1&stbId=yu&mode=1
+iHOT爱旅行,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000250630&livemode=1&stbId=yu&mode=1
+iHOT爱体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000060&livemode=1&stbId=yu&mode=1
+iHOT爱体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000290630&livemode=1&stbId=yu&mode=1
+iHOT爱赛车,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000055&livemode=1&stbId=yu&mode=1
+iHOT爱赛车,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000240630&livemode=1&stbId=yu&mode=1
+iHOT爱浪漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000035&livemode=1&stbId=yu&mode=1
+iHOT爱浪漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000040630&livemode=1&stbId=yu&mode=1
+iHOT爱奇谈,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000058&livemode=1&stbId=yu&mode=1
+iHOT爱奇谈,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000270630&livemode=1&stbId=yu&mode=1
+iHOT爱动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000059&livemode=1&stbId=yu&mode=1
+iHOT爱动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000280630&livemode=1&stbId=yu&mode=1
+iHOT爱谍战,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000038&livemode=1&stbId=yu&mode=1
+iHOT爱谍战,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000070630&livemode=1&stbId=yu&mode=1
+iHOT爱科幻,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000033&livemode=1&stbId=yu&mode=1
+iHOT爱科幻,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000020630&livemode=1&stbId=yu&mode=1
+iHOT爱喜剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000032&livemode=1&stbId=yu&mode=1
+iHOT爱喜剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000010630&livemode=1&stbId=yu&mode=1
+iHOT爱悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000036&livemode=1&stbId=yu&mode=1
+iHOT爱悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000050630&livemode=1&stbId=yu&mode=1
+iHOT爱院线,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000034&livemode=1&stbId=yu&mode=1
+iHOT爱院线,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000030630&livemode=1&stbId=yu&mode=1
+iHOT爱玩具,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000053&livemode=1&stbId=yu&mode=1
+iHOT爱玩具,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000220630&livemode=1&stbId=yu&mode=1
+iHOT爱幼教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000049&livemode=1&stbId=yu&mode=1
+iHOT爱幼教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000180630&livemode=1&stbId=yu&mode=1
+CGTN频道,#genre#
+CGTN,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=7745129417417101820&livemode=1&stbId=yu&mode=1
+CGTN,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000009569&livemode=1&stbId=yu&mode=1
+CGTN俄语,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000280004&livemode=1&stbId=yu&mode=1
+CGTN法语,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000280003&livemode=1&stbId=yu&mode=1
+CGTN纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=7114647837765104058&livemode=1&stbId=yu&mode=1
+CGTN阿拉伯语,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000280001&livemode=1&stbId=yu&mode=1
+CGTN西班牙语,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000280002&livemode=1&stbId=yu&mode=1
+BesTV频道,#genre#
+BesTV星光影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288013&livemode=1&stbId=yu&mode=1
+BesTV谍战剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288004&livemode=1&stbId=yu&mode=1
+BesTV华语影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288005&livemode=1&stbId=yu&mode=1
+BesTV全球大片,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288009&livemode=1&stbId=yu&mode=1
+BesTV热门剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288010&livemode=1&stbId=yu&mode=1
+BesTV青春动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288008&livemode=1&stbId=yu&mode=1
+BesTV宝宝动画,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288002&livemode=1&stbId=yu&mode=1
+BesTV电竞天堂,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288003&livemode=1&stbId=yu&mode=1
+BesTV热门综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288011&livemode=1&stbId=yu&mode=1
+BesTV戏曲精选,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288012&livemode=1&stbId=yu&mode=1
+BesTV百变课堂,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288001&livemode=1&stbId=yu&mode=1
+BesTV看天下精选,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000011000288007&livemode=1&stbId=yu&mode=1
+BesTV-1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000002898&livemode=1&stbId=yu&mode=1
+BesTV-2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000004876&livemode=1&stbId=yu&mode=1
+BesTV-3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000006777&livemode=1&stbId=yu&mode=1
+BesTV-4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000018009&livemode=1&stbId=yu&mode=1
+BesTV-5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000019233&livemode=1&stbId=yu&mode=1
+BesTV-6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000022620&livemode=1&stbId=yu&mode=1
+BesTV-7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000023256&livemode=1&stbId=yu&mode=1
+BesTV-8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000026930&livemode=1&stbId=yu&mode=1
+BesTV-9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000024&livemode=1&stbId=yu&mode=1
+BesTV-10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000026&livemode=1&stbId=yu&mode=1
+BesTV-11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000027&livemode=1&stbId=yu&mode=1
+BesTV-12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000028&livemode=1&stbId=yu&mode=1
+BesTV-13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000030&livemode=1&stbId=yu&mode=1
+BesTV-14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000049&livemode=1&stbId=yu&mode=1
+BesTV-15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000050&livemode=1&stbId=yu&mode=1
+BesTV-16http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000051&livemode=1&stbId=yu&mode=1
+BesTV-17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000001116&livemode=1&stbId=yu&mode=1
+BesTV-18,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=5000000001000017342&livemode=1&stbId=yu&mode=1
+BesTV-19,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000025&livemode=1&stbId=yu&mode=1
+BesTV-20,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000029&livemode=1&stbId=yu&mode=1
+NewTV频道,#genre#
+NewTV黑莓电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000001&livemode=1&stbId=yu&mode=1
+NewTV黑莓电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000019624&livemode=1&stbId=yu&mode=1
+NewTV黑莓电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8785669936177902664&livemode=1&stbId=yu&mode=1
+NewTV黑莓动画,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000002&livemode=1&stbId=yu&mode=1
+NewTV黑莓动画,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000021734&livemode=1&stbId=yu&mode=1
+NewTV黑莓动画,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6497762188035533951&livemode=1&stbId=yu&mode=1
+NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000004&livemode=1&stbId=yu&mode=1
+NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000039&livemode=1&stbId=yu&mode=1
+NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000040&livemode=1&stbId=yu&mode=1
+NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000003775&livemode=1&stbId=yu&mode=1
+NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000006906&livemode=1&stbId=yu&mode=1
+NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5320946857686967621&livemode=1&stbId=yu&mode=1
+NewTV哒啵电竞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000066&livemode=1&stbId=yu&mode=1
+NewTV哒啵电竞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000032327&livemode=1&stbId=yu&mode=1
+NewTV超级电视剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000032&livemode=1&stbId=yu&mode=1
+NewTV超级电视剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000008139&livemode=1&stbId=yu&mode=1
+NewTV超级电视剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000024993&livemode=1&stbId=yu&mode=1
+NewTV超级电视剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268003&livemode=1&stbId=yu&mode=1
+NewTV超级电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000031&livemode=1&stbId=yu&mode=1
+NewTV超级电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000012884&livemode=1&stbId=yu&mode=1
+NewTV超级电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000003000012426&livemode=1&stbId=yu&mode=1
+NewTV超级电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000002120&livemode=1&stbId=yu&mode=1
+NewTV动作电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000017&livemode=1&stbId=yu&mode=1
+NewTV动作电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000018653&livemode=1&stbId=yu&mode=1
+NewTV动作电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8103864434730665389&livemode=1&stbId=yu&mode=1
+NewTV家庭剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000012&livemode=1&stbId=yu&mode=1
+NewTV家庭剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000008284&livemode=1&stbId=yu&mode=1
+NewTV家庭剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6316377948248689070&livemode=1&stbId=yu&mode=1
+NewTV惊悚悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000015&livemode=1&stbId=yu&mode=1
+NewTV惊悚悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000024282&livemode=1&stbId=yu&mode=1
+NewTV惊悚悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7151256057701199617&livemode=1&stbId=yu&mode=1
+NewTV精品大剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000020&livemode=1&stbId=yu&mode=1
+NewTV精品大剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000013968&livemode=1&stbId=yu&mode=1
+NewTV精品大剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7882297361445410858&livemode=1&stbId=yu&mode=1
+NewTV明星大片,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000019008&livemode=1&stbId=yu&mode=1
+NewTV军旅剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000014&livemode=1&stbId=yu&mode=1
+NewTV军旅剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7485075951068666323&livemode=1&stbId=yu&mode=1
+NewTV古装剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000024&livemode=1&stbId=yu&mode=1
+NewTV古装剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6859053933687922163&livemode=1&stbId=yu&mode=1
+NewTV欢乐剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000050&livemode=1&stbId=yu&mode=1
+NewTV欢乐剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266012&livemode=1&stbId=yu&mode=1
+NewTV东北热剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000051&livemode=1&stbId=yu&mode=1
+NewTV东北热剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266013&livemode=1&stbId=yu&mode=1
+NewTV爱情喜剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000010&livemode=1&stbId=yu&mode=1
+NewTV爱情喜剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8393829412396288037&livemode=1&stbId=yu&mode=1
+NewTV精品纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000019&livemode=1&stbId=yu&mode=1
+NewTV精品纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000013730&livemode=1&stbId=yu&mode=1
+NewTV精品纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6298506997017621594&livemode=1&stbId=yu&mode=1
+NewTV超级体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000030&livemode=1&stbId=yu&mode=1
+NewTV超级体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009204&livemode=1&stbId=yu&mode=1
+NewTV超级体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009601&livemode=1&stbId=yu&mode=1
+NewTV超级体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000007755&livemode=1&stbId=yu&mode=1
+NewTV精品体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000021&livemode=1&stbId=yu&mode=1
+NewTV精品体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000014634&livemode=1&stbId=yu&mode=1
+NewTV精品体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6460382139625130259&livemode=1&stbId=yu&mode=1
+NewTV中国功夫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000009&livemode=1&stbId=yu&mode=1
+NewTV中国功夫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5897056882324761054&livemode=1&stbId=yu&mode=1
+NewTV超级综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000029&livemode=1&stbId=yu&mode=1
+NewTV超级综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000025771&livemode=1&stbId=yu&mode=1
+NewTV超级综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000023658&livemode=1&stbId=yu&mode=1
+NewTV超级综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268002&livemode=1&stbId=yu&mode=1
+NewTV金牌综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000005&livemode=1&stbId=yu&mode=1
+NewTV金牌综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000026167&livemode=1&stbId=yu&mode=1
+NewTV金牌综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6399725674632152632&livemode=1&stbId=yu&mode=1
+NewTV魅力潇湘,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000041&livemode=1&stbId=yu&mode=1
+NewTV魅力潇湘,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000006197&livemode=1&stbId=yu&mode=1
+NewTV魅力潇湘,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266014&livemode=1&stbId=yu&mode=1
+NewTV炫舞未来,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000044&livemode=1&stbId=yu&mode=1
+NewTV炫舞未来,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000000515&livemode=1&stbId=yu&mode=1
+NewTV农业致富,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000003&livemode=1&stbId=yu&mode=1
+NewTV农业致富,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6193684637634073625&livemode=1&stbId=yu&mode=1
+NewTV军事评论,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000022&livemode=1&stbId=yu&mode=1
+NewTV军事评论,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5822616274253344775&livemode=1&stbId=yu&mode=1
+NewTV精品萌宠,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000067&livemode=1&stbId=yu&mode=1
+NewTV精品萌宠,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000032328&livemode=1&stbId=yu&mode=1
+NewTV潮妈辣婆,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000018&livemode=1&stbId=yu&mode=1
+NewTV潮妈辣婆,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6516734029835465177&livemode=1&stbId=yu&mode=1
+NewTV怡伴健康,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000023&livemode=1&stbId=yu&mode=1
+NewTV怡伴健康,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266011&livemode=1&stbId=yu&mode=1
+NewTV怡伴健康,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7820874641606664941&livemode=1&stbId=yu&mode=1
+NewTV武搏世界,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000007&livemode=1&stbId=yu&mode=1
+NewTV武搏世界,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=bokesen&livemode=1&stbId=yu&mode=1
diff --git a/JS/56动漫.js b/JS/56动漫.js
new file mode 100644
index 0000000..266b5f0
--- /dev/null
+++ b/JS/56动漫.js
@@ -0,0 +1,40 @@
+var rule = {
+ title: '56动漫',
+ host: 'https://www.56dm.cc/',
+ url: 'https://www.56dm.cc/type/fyclass-fypage.html',
+ searchUrl: 'https://www.56dm.cc/search/**----------fypage---.html',
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
+ headers: {
+ 'User-Agent': 'UC_UA', // "Cookie": ""
+ }, // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
+ class_parse: '.snui-header-menu-nav li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html',
+ play_parse: true,
+ lazy: `js:
+ if(/\\.(m3u8|mp4)/.test(input)){
+ input = {parse:0,url:input}
+ }else{
+ if(rule.parse_url.startsWith('json:')){
+ let purl = rule.parse_url.replace('json:','')+input;
+ let html = request(purl);
+ input = {parse:0,url:JSON.parse(html).url}
+ }else{
+ input= rule.parse_url+input;
+ }
+ }
+ `,
+ limit: 6,
+ 推荐: '.cCBf_FAAEfbc;li;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href',
+ double: true, // 推荐内容是否双层定位
+ 一级: '.cCBf_FAAEfbc li;a&&title;a&&data-original;.dAD_BBCI&&Text;a&&href',
+ 二级: {
+ "title": "h1&&Text",
+ "img": ".stui-content__thumb .lazyload&&data-original",
+ "desc": ".cCBf_DABCcac__hcIdeE p:eq(0)&&Text;.cCBf_DABCcac__hcIdeE p:eq(1)&&Text;.cCBf_DABCcac__hcIdeE p:eq(2)&&Text;.cCBf_DABCcac__hcIdeE p:eq(3)&&Text;.cCBf_DABCcac__hcIdeE p:eq(4)&&Text",
+ "content": ".detail&&Text",
+ "tabs": ".channel-tab li",
+ "lists": ".play-list-content:eq(#id) li"
+ },
+ 搜索: '.cCBf_FAAEfbc__dbD;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href;.cCBf_FAAEfbc__hcIdeE&&p:eq(0) p&&Text',
+}
\ No newline at end of file
diff --git a/drpy_js/APPV2[模板].js b/JS/APPV2.js
similarity index 100%
rename from drpy_js/APPV2[模板].js
rename to JS/APPV2.js
diff --git a/JS/Anime1.js b/JS/Anime1.js
new file mode 100644
index 0000000..c0e6fb0
--- /dev/null
+++ b/JS/Anime1.js
@@ -0,0 +1,169 @@
+// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
+// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
+// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
+// 3个set-Cookie
+
+var rule = {
+ title:'Anime1动畫',
+ host:'https://anime1.me',
+ url: '/fyclass',
+ detailUrl:'/?cat=fyid',
+ searchUrl: '/page/fypage?s=**',
+ searchable:2,
+ quickSearch:0,
+ headers:{'User-Agent': 'PC_UA'},
+ timeout:5000,
+ class_name:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&更早',
+ class_url:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&2017',
+ play_parse:true,
+ lazy:`js:
+ var apiurl = 'https://v.anime1.me/api';
+ var html = request(apiurl, {
+ headers: {
+ 'Referer': HOST,
+ },
+ body: 'd=' + input,
+ method: 'POST',
+ withHeaders: true
+ });
+ let json = JSON.parse(html);
+ print(json);
+ log(Object.keys(json));
+ let setCk = Object.keys(json).filter(it => it.toLowerCase() === "set-cookie");
+ let cookie = setCk ? json[setCk] : "";
+ // 3个set-Cookie
+ if (Array.isArray(cookie)) {
+ cookie = cookie.join(';');
+ }
+ cookie = cookie.split(';').filter(function(it) {
+ return ['e', 'p', 'h'].includes(it.split('=')[0])
+ }).join(';');
+ log(cookie);
+ var purl = JSON.parse(json.body).s[0].src;
+ if (purl.startsWith('/')) {
+ purl = 'https:' + purl
+ }
+ input = {
+ jx: 0,
+ url: purl,
+ parse: 0,
+ header: JSON.stringify({
+ 'referer': HOST,
+ 'Cookie': cookie,
+ 'user-agent': PC_UA
+ }),
+ }
+ `,
+ limit:6,
+ 推荐: `js:
+ var d = [];
+ function stripHtmlTag(src) {
+ return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
+ }
+ var timestamp = new Date().getTime();
+ var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
+ var list = JSON.parse(json);
+ let playKeys = Object.values(list).filter(function(x) {
+ return x[2].includes('連載中');
+ });
+ playKeys.forEach(function(it) {
+ d.push({
+ title: stripHtmlTag(it[1]),
+ img: 'https://sta.anicdn.com/playerImg/8.jpg',
+ desc: it[2],
+ url: it[0],
+ });
+ });
+ setResult(d);
+ `,
+ 一级: `js:
+ var d = [];
+ function stripHtmlTag(src) {
+ return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
+ }
+ var timestamp = new Date().getTime();
+ var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
+ var list = JSON.parse(json);
+ let playKeys = Object.values(list).filter(function(x) {
+ if (MY_CATE === '連載中') return x[2].includes(MY_CATE);
+ else if (MY_CATE === '2017') return x[3] <= MY_CATE;
+ else return x[3] == MY_CATE;
+ });
+ playKeys.forEach(function(it) {
+ d.push({
+ title: stripHtmlTag(it[1]),
+ img: 'https://sta.anicdn.com/playerImg/8.jpg',
+ desc: it[2],
+ url: it[0],
+ });
+ });
+ setResult(d);
+ `,
+ 二级: `js:
+ pdfh = jsp.pdfh; pdfa = jsp.pdfa; pd = jsp.pd;
+ var html = request(input);
+ var timestamp = new Date().getTime();
+ var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
+ var list = JSON.parse(json);
+ var vid = input.split('=')[1];
+ let playKeys = Object.values(list).find(function(x) {
+ return x[0] === parseInt(vid);
+ });
+ VOD = {
+ vod_pic: 'https://sta.anicdn.com/playerImg/8.jpg',
+ vod_id: playKeys[0],
+ vod_name: playKeys[1],
+ vod_content: playKeys[2],
+ vod_year: playKeys[3],
+ type_name: playKeys[4],
+ vod_actor: playKeys[5],
+ };
+ var pageurl = pd(html, '.cat-links&&a&&href');
+ var pagenum = 1;
+ let vod_tab_list = [];
+ let vlist = [];
+ for (let p = 1; p < parseInt(pagenum) + 1; p++) {
+ let phtml = request(pageurl + '/page/' + pagenum);
+ let new_vod_list = [];
+ let vodList = [];
+ vodList = pdfa(phtml, '.site-main&&article');
+ for (let i = 0; i < vodList.length; i++) {
+ let it = vodList[i];
+ let ptitle = pdfh(it, '.entry-title&&Text').replace(/\\[(.*)\\]/, '$1');
+ let purl = pd(it, '.video-js&&data-apireq');
+ new_vod_list.push(ptitle + '$' + purl);
+ }
+ vlist = vlist.concat(new_vod_list);
+ try {
+ pagenum = pd(phtml, '.nav-previous&&a&&href').split('/page/')[1];
+ } catch(e) {}
+ }
+ let vlist2 = vlist.reverse().join("#");
+ vod_tab_list.push(vlist2);
+ VOD.vod_play_from = '在线播放';
+ VOD.vod_play_url = vod_tab_list.join("$$$");
+ `,
+ 搜索: `js:
+ var d = [];
+ function stripHtmlTag(src) {
+ return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
+ }
+ var timestamp = new Date().getTime();
+ var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
+ var list = JSON.parse(json);
+ var wd = input.split('=')[1];
+ let playKeys = Object.values(list).filter(function(x) {
+ return x[1].includes(wd);
+ });
+ log(playKeys);
+ playKeys.forEach(function(it) {
+ d.push({
+ title: stripHtmlTag(it[1]),
+ img: 'https://sta.anicdn.com/playerImg/8.jpg',
+ desc: it[2],
+ url: it[0],
+ });
+ });
+ setResult(d);
+ `,
+}
\ No newline at end of file
diff --git a/JS/NT动漫.js b/JS/NT动漫.js
new file mode 100644
index 0000000..4dde948
--- /dev/null
+++ b/JS/NT动漫.js
@@ -0,0 +1,1013 @@
+// http://www.ntdm.tv
+var rule = {
+ title: 'NT动漫',
+ host: 'http://www.ntdm8.com',
+ homeUrl: '/type/riben.html',
+ // url:'/show/fyclass--------fypage---.html',
+ url: '/show/fyclassfyfilter.html',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '--{{fl.by}}-{{fl.class}}--{{fl.letter}}---fypage---{{fl.year}}',
+ filter: {
+ "riben": [{
+ "key": "year",
+ "name": "年份:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000以前",
+ "v": "2000以前"
+ }]
+ }, {
+ "key": "class",
+ "name": "类型:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "搞笑",
+ "v": "搞笑"
+ }, {
+ "n": "运动",
+ "v": "运动"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "热血",
+ "v": "热血"
+ }, {
+ "n": "战斗",
+ "v": "战斗"
+ }, {
+ "n": "竞技",
+ "v": "竞技"
+ }, {
+ "n": "校园",
+ "v": "校园"
+ }, {
+ "n": "青春",
+ "v": "青春"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "后宫",
+ "v": "后宫"
+ }, {
+ "n": "百合",
+ "v": "百合"
+ }, {
+ "n": "治愈",
+ "v": "治愈"
+ }, {
+ "n": "萝莉",
+ "v": "萝莉"
+ }, {
+ "n": "魔法",
+ "v": "魔法"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "推理",
+ "v": "推理"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "游戏",
+ "v": "游戏"
+ }, {
+ "n": "神魔",
+ "v": "神魔"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "血腥",
+ "v": "血腥"
+ }, {
+ "n": "机战",
+ "v": "机战"
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "犯罪",
+ "v": "犯罪"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "社会",
+ "v": "社会"
+ }, {
+ "n": "职场",
+ "v": "职场"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "伪娘",
+ "v": "伪娘"
+ }, {
+ "n": "耽美",
+ "v": "耽美"
+ }, {
+ "n": "童年",
+ "v": "童年"
+ }, {
+ "n": "教育",
+ "v": "教育"
+ }, {
+ "n": "亲子",
+ "v": "亲子"
+ }, {
+ "n": "真人",
+ "v": "真人"
+ }, {
+ "n": "歌舞",
+ "v": "歌舞"
+ }, {
+ "n": "肉番",
+ "v": "肉番"
+ }, {
+ "n": "美少女",
+ "v": "美少女"
+ }, {
+ "n": "轻小说",
+ "v": "轻小说"
+ }, {
+ "n": "吸血鬼",
+ "v": "吸血鬼"
+ }, {
+ "n": "女性向",
+ "v": "女性向"
+ }, {
+ "n": "泡面番",
+ "v": "泡面番"
+ }, {
+ "n": "欢乐向",
+ "v": "欢乐向"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }, {
+ "n": "0~9",
+ "v": "0~9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序:",
+ "value": [{
+ "n": "更新时间",
+ "v": "time"
+ }, {
+ "n": "人气",
+ "v": "hits"
+ }, {
+ "n": "评分",
+ "v": "score"
+ }]
+ }],
+ "zhongguo": [{
+ "key": "year",
+ "name": "年份:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000以前",
+ "v": "2000以前"
+ }]
+ }, {
+ "key": "class",
+ "name": "类型:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "搞笑",
+ "v": "搞笑"
+ }, {
+ "n": "运动",
+ "v": "运动"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "热血",
+ "v": "热血"
+ }, {
+ "n": "战斗",
+ "v": "战斗"
+ }, {
+ "n": "竞技",
+ "v": "竞技"
+ }, {
+ "n": "校园",
+ "v": "校园"
+ }, {
+ "n": "青春",
+ "v": "青春"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "后宫",
+ "v": "后宫"
+ }, {
+ "n": "百合",
+ "v": "百合"
+ }, {
+ "n": "治愈",
+ "v": "治愈"
+ }, {
+ "n": "萝莉",
+ "v": "萝莉"
+ }, {
+ "n": "魔法",
+ "v": "魔法"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "推理",
+ "v": "推理"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "游戏",
+ "v": "游戏"
+ }, {
+ "n": "神魔",
+ "v": "神魔"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "血腥",
+ "v": "血腥"
+ }, {
+ "n": "机战",
+ "v": "机战"
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "犯罪",
+ "v": "犯罪"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "社会",
+ "v": "社会"
+ }, {
+ "n": "职场",
+ "v": "职场"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "伪娘",
+ "v": "伪娘"
+ }, {
+ "n": "耽美",
+ "v": "耽美"
+ }, {
+ "n": "童年",
+ "v": "童年"
+ }, {
+ "n": "教育",
+ "v": "教育"
+ }, {
+ "n": "亲子",
+ "v": "亲子"
+ }, {
+ "n": "真人",
+ "v": "真人"
+ }, {
+ "n": "歌舞",
+ "v": "歌舞"
+ }, {
+ "n": "肉番",
+ "v": "肉番"
+ }, {
+ "n": "美少女",
+ "v": "美少女"
+ }, {
+ "n": "轻小说",
+ "v": "轻小说"
+ }, {
+ "n": "吸血鬼",
+ "v": "吸血鬼"
+ }, {
+ "n": "女性向",
+ "v": "女性向"
+ }, {
+ "n": "泡面番",
+ "v": "泡面番"
+ }, {
+ "n": "欢乐向",
+ "v": "欢乐向"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }, {
+ "n": "0~9",
+ "v": "0~9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序:",
+ "value": [{
+ "n": "更新时间",
+ "v": "time"
+ }, {
+ "n": "人气",
+ "v": "hits"
+ }, {
+ "n": "评分",
+ "v": "score"
+ }]
+ }],
+ "omei": [{
+ "key": "year",
+ "name": "年份:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000以前",
+ "v": "2000以前"
+ }]
+ }, {
+ "key": "class",
+ "name": "类型:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "搞笑",
+ "v": "搞笑"
+ }, {
+ "n": "运动",
+ "v": "运动"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "热血",
+ "v": "热血"
+ }, {
+ "n": "战斗",
+ "v": "战斗"
+ }, {
+ "n": "竞技",
+ "v": "竞技"
+ }, {
+ "n": "校园",
+ "v": "校园"
+ }, {
+ "n": "青春",
+ "v": "青春"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "后宫",
+ "v": "后宫"
+ }, {
+ "n": "百合",
+ "v": "百合"
+ }, {
+ "n": "治愈",
+ "v": "治愈"
+ }, {
+ "n": "萝莉",
+ "v": "萝莉"
+ }, {
+ "n": "魔法",
+ "v": "魔法"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "推理",
+ "v": "推理"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "游戏",
+ "v": "游戏"
+ }, {
+ "n": "神魔",
+ "v": "神魔"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "血腥",
+ "v": "血腥"
+ }, {
+ "n": "机战",
+ "v": "机战"
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "犯罪",
+ "v": "犯罪"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "社会",
+ "v": "社会"
+ }, {
+ "n": "职场",
+ "v": "职场"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "伪娘",
+ "v": "伪娘"
+ }, {
+ "n": "耽美",
+ "v": "耽美"
+ }, {
+ "n": "童年",
+ "v": "童年"
+ }, {
+ "n": "教育",
+ "v": "教育"
+ }, {
+ "n": "亲子",
+ "v": "亲子"
+ }, {
+ "n": "真人",
+ "v": "真人"
+ }, {
+ "n": "歌舞",
+ "v": "歌舞"
+ }, {
+ "n": "肉番",
+ "v": "肉番"
+ }, {
+ "n": "美少女",
+ "v": "美少女"
+ }, {
+ "n": "轻小说",
+ "v": "轻小说"
+ }, {
+ "n": "吸血鬼",
+ "v": "吸血鬼"
+ }, {
+ "n": "女性向",
+ "v": "女性向"
+ }, {
+ "n": "泡面番",
+ "v": "泡面番"
+ }, {
+ "n": "欢乐向",
+ "v": "欢乐向"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母:",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }, {
+ "n": "0~9",
+ "v": "0~9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序:",
+ "value": [{
+ "n": "更新时间",
+ "v": "time"
+ }, {
+ "n": "人气",
+ "v": "hits"
+ }, {
+ "n": "评分",
+ "v": "score"
+ }]
+ }]
+ },
+ searchUrl: '/search/**----------fypage---.html',
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ headers: { //网站的请求头,完整支持所有的,常带ua和cookies
+ 'User-Agent': 'MOBILE_UA',
+ },
+ class_parse: '.search-tag li;a&&Text;a&&href;.*/(\\w+).html',
+ play_parse: true,
+ detailUrl: '',
+ lazy: "",
+ limit: 6,
+ 推荐: '*',
+ 一级: '.blockcontent1&&.blockdif2;img&&alt;img&&src;.newname&&Text;a&&href',
+ 二级访问前: '',
+ 二级: {
+ "title": "h4&&Text;.detail_imform_value:eq(6)&&Text",
+ "img": ".poster&&src",
+ "desc": ".detail_imform_kv:eq(0)&&Text;.detail_imform_value:eq(5)&&Text;.detail_imform_value:eq(2)&&Text;.detail_imform_kv:eq(0)&&Text;.detail_imform_kv:eq(3)&&Text",
+ "content": ".detail_imform_desc_pre&&Text",
+ "tabs": "#menu0&&li",
+ "lists": ".movurl:eq(#id)&&li"
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/JS/NyaFun.js b/JS/NyaFun.js
new file mode 100644
index 0000000..16b21a2
--- /dev/null
+++ b/JS/NyaFun.js
@@ -0,0 +1,13 @@
+muban.短视2.二级.img = '.detail-pic&&img&&data-src';
+var rule = {
+ title: 'NyaFun',
+ 模板:'短视2',
+ host: 'https://www.nyafun.net',
+ homeUrl:'/map.html',
+ url: '/index.php/api/vod#type=fyclass&page=fypage',
+ class_name:'番剧&剧场',
+ class_url:'2&1',
+ detailUrl:'/bangumi/fyid.html',
+ 推荐:'.border-box .public-list-box;a&&title;.lazy&&data-src;.public-list-prb&&Text;a&&href',
+ double: false, // 推荐内容是否双层定位
+}
\ No newline at end of file
diff --git a/JS/alishare.txt b/JS/alishare.txt
new file mode 100644
index 0000000..cd52f13
--- /dev/null
+++ b/JS/alishare.txt
@@ -0,0 +1,70 @@
+[
+ {
+ "share_name": "优品阁",
+ "share_id": "uWa9gbM3RJ7"
+ },
+ {
+ "share_name": "阿里1T",
+ "share_id": "mxAfB6eRgY4"
+ },
+ {
+ "share_name": "平凡中的",
+ "share_id": "4ydLxf7VgH7"
+ },
+ {
+ "share_name": "tacit0924",
+ "share_id": "DNgnCudf4cD?pwd=6666"
+ },
+ {
+ "share_name": "黄妈",
+ "share_id": "4bGRVUdUtct"
+ },
+ {
+ "share_name": "YYDSVIP",
+ "share_id": "dieULBdYP3D"
+ },
+ {
+ "share_name": "优源阁",
+ "share_id": "RnjUi1urdb2"
+ },
+ {
+ "share_name": "风流动漫",
+ "share_id": "WdaaeX7HK44"
+ },
+ {
+ "share_name": "风流剧集",
+ "share_id": "kgxWjZsK6bq"
+ },
+ {
+ "share_name": "xiaaluo",
+ "share_id": "sg8CdGUwmUr"
+ },
+ {
+ "share_name": "4K影视",
+ "share_id": "wHPKUENKFsS"
+ },
+ {
+ "share_name": "诺兰全集",
+ "share_id": "gf2GebXnZHh"
+ },
+ {
+ "share_name": "纪录片",
+ "share_id": "fSNHaYST47s"
+ },
+ {
+ "share_name": "掌灯者|港",
+ "share_id": "wHPKUENKFsS"
+ },
+ {
+ "share_name": "掌灯者|一",
+ "share_id": "wHPKUENKFsS"
+ },
+ {
+ "share_name": "掌灯者|二",
+ "share_id": "wHPKUENKFsS"
+ },
+ {
+ "share_name": "掌灯者|三",
+ "share_id": "wHPKUENKFsS"
+ }
+]
\ No newline at end of file
diff --git a/JS/cheerio.min.js b/JS/cheerio.min.js
new file mode 100644
index 0000000..24acb69
--- /dev/null
+++ b/JS/cheerio.min.js
@@ -0,0 +1,10945 @@
+var e, t = function() {
+ return t = Object.assign || function(e) {
+ for (var t, n = 1, r = arguments.length; n < r; n++)
+ for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
+ return e
+ }, t.apply(this, arguments)
+ },
+ n = {
+ xml: !1,
+ decodeEntities: !0
+ },
+ r = {
+ _useHtmlParser2: !0,
+ xmlMode: !0
+ };
+
+function i(e) {
+ return (null == e ? void 0 : e.xml) ? "boolean" == typeof e.xml ? r : t(t({}, r), e.xml) : null != e ? e : void 0
+}! function(e) {
+ e.Root = "root", e.Text = "text", e.Directive = "directive", e.Comment = "comment", e.Script = "script", e.Style = "style", e.Tag = "tag", e.CDATA = "cdata", e.Doctype = "doctype"
+}(e || (e = {}));
+const s = e.Root,
+ a = e.Text,
+ o = e.Directive,
+ c = e.Comment,
+ l = e.Script,
+ h = e.Style,
+ u = e.Tag,
+ p = e.CDATA,
+ f = e.Doctype;
+class d {
+ constructor() {
+ this.parent = null, this.prev = null, this.next = null, this.startIndex = null, this.endIndex = null
+ }
+ get parentNode() {
+ return this.parent
+ }
+ set parentNode(e) {
+ this.parent = e
+ }
+ get previousSibling() {
+ return this.prev
+ }
+ set previousSibling(e) {
+ this.prev = e
+ }
+ get nextSibling() {
+ return this.next
+ }
+ set nextSibling(e) {
+ this.next = e
+ }
+ cloneNode(e = !1) {
+ return v(this, e)
+ }
+}
+class E extends d {
+ constructor(e) {
+ super(), this.data = e
+ }
+ get nodeValue() {
+ return this.data
+ }
+ set nodeValue(e) {
+ this.data = e
+ }
+}
+class m extends E {
+ constructor() {
+ super(...arguments), this.type = e.Text
+ }
+ get nodeType() {
+ return 3
+ }
+}
+class T extends E {
+ constructor() {
+ super(...arguments), this.type = e.Comment
+ }
+ get nodeType() {
+ return 8
+ }
+}
+class _ extends E {
+ constructor(t, n) {
+ super(n), this.name = t, this.type = e.Directive
+ }
+ get nodeType() {
+ return 1
+ }
+}
+class A extends d {
+ constructor(e) {
+ super(), this.children = e
+ }
+ get firstChild() {
+ var e;
+ return null !== (e = this.children[0]) && void 0 !== e ? e : null
+ }
+ get lastChild() {
+ return this.children.length > 0 ? this.children[this.children.length - 1] : null
+ }
+ get childNodes() {
+ return this.children
+ }
+ set childNodes(e) {
+ this.children = e
+ }
+}
+class g extends A {
+ constructor() {
+ super(...arguments), this.type = e.CDATA
+ }
+ get nodeType() {
+ return 4
+ }
+}
+class N extends A {
+ constructor() {
+ super(...arguments), this.type = e.Root
+ }
+ get nodeType() {
+ return 9
+ }
+}
+class C extends A {
+ constructor(t, n, r = [], i = ("script" === t ? e.Script : "style" === t ? e.Style : e.Tag)) {
+ super(r), this.name = t, this.attribs = n, this.type = i
+ }
+ get nodeType() {
+ return 1
+ }
+ get tagName() {
+ return this.name
+ }
+ set tagName(e) {
+ this.name = e
+ }
+ get attributes() {
+ return Object.keys(this.attribs).map((e => {
+ var t, n;
+ return {
+ name: e,
+ value: this.attribs[e],
+ namespace: null === (t = this["x-attribsNamespace"]) || void 0 === t ? void 0 : t[e],
+ prefix: null === (n = this["x-attribsPrefix"]) || void 0 === n ? void 0 : n[e]
+ }
+ }))
+ }
+}
+
+function I(t) {
+ return (n = t).type === e.Tag || n.type === e.Script || n.type === e.Style;
+ var n
+}
+
+function S(t) {
+ return t.type === e.CDATA
+}
+
+function b(t) {
+ return t.type === e.Text
+}
+
+function O(t) {
+ return t.type === e.Comment
+}
+
+function y(t) {
+ return t.type === e.Directive
+}
+
+function L(t) {
+ return t.type === e.Root
+}
+
+function k(e) {
+ return Object.prototype.hasOwnProperty.call(e, "children")
+}
+
+function v(e, t = !1) {
+ let n;
+ if (b(e)) n = new m(e.data);
+ else if (O(e)) n = new T(e.data);
+ else if (I(e)) {
+ const r = t ? D(e.children) : [],
+ i = new C(e.name, {
+ ...e.attribs
+ }, r);
+ r.forEach((e => e.parent = i)), null != e.namespace && (i.namespace = e.namespace), e["x-attribsNamespace"] && (i["x-attribsNamespace"] = {
+ ...e["x-attribsNamespace"]
+ }), e["x-attribsPrefix"] && (i["x-attribsPrefix"] = {
+ ...e["x-attribsPrefix"]
+ }), n = i
+ } else if (S(e)) {
+ const r = t ? D(e.children) : [],
+ i = new g(r);
+ r.forEach((e => e.parent = i)), n = i
+ } else if (L(e)) {
+ const r = t ? D(e.children) : [],
+ i = new N(r);
+ r.forEach((e => e.parent = i)), e["x-mode"] && (i["x-mode"] = e["x-mode"]), n = i
+ } else {
+ if (!y(e)) throw new Error(`Not implemented yet: ${e.type}`);
+ {
+ const t = new _(e.name, e.data);
+ null != e["x-name"] && (t["x-name"] = e["x-name"], t["x-publicId"] = e["x-publicId"], t["x-systemId"] = e["x-systemId"]), n = t
+ }
+ }
+ return n.startIndex = e.startIndex, n.endIndex = e.endIndex, null != e.sourceCodeLocation && (n.sourceCodeLocation = e.sourceCodeLocation), n
+}
+
+function D(e) {
+ const t = e.map((e => v(e, !0)));
+ for (let e = 1; e < t.length; e++) t[e].prev = t[e - 1], t[e - 1].next = t[e];
+ return t
+}
+const R = {
+ withStartIndices: !1,
+ withEndIndices: !1,
+ xmlMode: !1
+};
+class M {
+ constructor(e, t, n) {
+ this.dom = [], this.root = new N(this.dom), this.done = !1, this.tagStack = [this.root], this.lastNode = null, this.parser = null, "function" == typeof t && (n = t, t = R), "object" == typeof e && (t = e, e = void 0), this.callback = null != e ? e : null, this.options = null != t ? t : R, this.elementCB = null != n ? n : null
+ }
+ onparserinit(e) {
+ this.parser = e
+ }
+ onreset() {
+ this.dom = [], this.root = new N(this.dom), this.done = !1, this.tagStack = [this.root], this.lastNode = null, this.parser = null
+ }
+ onend() {
+ this.done || (this.done = !0, this.parser = null, this.handleCallback(null))
+ }
+ onerror(e) {
+ this.handleCallback(e)
+ }
+ onclosetag() {
+ this.lastNode = null;
+ const e = this.tagStack.pop();
+ this.options.withEndIndices && (e.endIndex = this.parser.endIndex), this.elementCB && this.elementCB(e)
+ }
+ onopentag(t, n) {
+ const r = this.options.xmlMode ? e.Tag : void 0,
+ i = new C(t, n, void 0, r);
+ this.addNode(i), this.tagStack.push(i)
+ }
+ ontext(t) {
+ const {
+ lastNode: n
+ } = this;
+ if (n && n.type === e.Text) n.data += t, this.options.withEndIndices && (n.endIndex = this.parser.endIndex);
+ else {
+ const e = new m(t);
+ this.addNode(e), this.lastNode = e
+ }
+ }
+ oncomment(t) {
+ if (this.lastNode && this.lastNode.type === e.Comment) return void(this.lastNode.data += t);
+ const n = new T(t);
+ this.addNode(n), this.lastNode = n
+ }
+ oncommentend() {
+ this.lastNode = null
+ }
+ oncdatastart() {
+ const e = new m(""),
+ t = new g([e]);
+ this.addNode(t), e.parent = t, this.lastNode = e
+ }
+ oncdataend() {
+ this.lastNode = null
+ }
+ onprocessinginstruction(e, t) {
+ const n = new _(e, t);
+ this.addNode(n)
+ }
+ handleCallback(e) {
+ if ("function" == typeof this.callback) this.callback(e, this.dom);
+ else if (e) throw e
+ }
+ addNode(e) {
+ const t = this.tagStack[this.tagStack.length - 1],
+ n = t.children[t.children.length - 1];
+ this.options.withStartIndices && (e.startIndex = this.parser.startIndex), this.options.withEndIndices && (e.endIndex = this.parser.endIndex), t.children.push(e), n && (e.prev = n, n.next = e), e.parent = t, this.lastNode = null
+ }
+}
+const P = /["&'<>$\x80-\uFFFF]/g,
+ x = new Map([
+ [34, """],
+ [38, "&"],
+ [39, "'"],
+ [60, "<"],
+ [62, ">"]
+ ]),
+ w = null != String.prototype.codePointAt ? (e, t) => e.codePointAt(t) : (e, t) => 55296 == (64512 & e.charCodeAt(t)) ? 1024 * (e.charCodeAt(t) - 55296) + e.charCodeAt(t + 1) - 56320 + 65536 : e.charCodeAt(t);
+
+function B(e) {
+ let t, n = "",
+ r = 0;
+ for (; null !== (t = P.exec(e));) {
+ const i = t.index,
+ s = e.charCodeAt(i),
+ a = x.get(s);
+ void 0 !== a ? (n += e.substring(r, i) + a, r = i + 1) : (n += `${e.substring(r,i)}${w(e,i).toString(16)};`, r = P.lastIndex += Number(55296 == (64512 & s)))
+ }
+ return n + e.substr(r)
+}
+
+function F(e, t) {
+ return function(n) {
+ let r, i = 0,
+ s = "";
+ for (; r = e.exec(n);) i !== r.index && (s += n.substring(i, r.index)), s += t.get(r[0].charCodeAt(0)), i = r.index + 1;
+ return s + n.substring(i)
+ }
+}
+const U = F(/["&\u00A0]/g, new Map([
+ [34, """],
+ [38, "&"],
+ [160, " "]
+ ])),
+ H = F(/[&<>\u00A0]/g, new Map([
+ [38, "&"],
+ [60, "<"],
+ [62, ">"],
+ [160, " "]
+ ])),
+ G = new Map(["altGlyph", "altGlyphDef", "altGlyphItem", "animateColor", "animateMotion", "animateTransform", "clipPath", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "foreignObject", "glyphRef", "linearGradient", "radialGradient", "textPath"].map((e => [e.toLowerCase(), e]))),
+ Y = new Map(["definitionURL", "attributeName", "attributeType", "baseFrequency", "baseProfile", "calcMode", "clipPathUnits", "diffuseConstant", "edgeMode", "filterUnits", "glyphRef", "gradientTransform", "gradientUnits", "kernelMatrix", "kernelUnitLength", "keyPoints", "keySplines", "keyTimes", "lengthAdjust", "limitingConeAngle", "markerHeight", "markerUnits", "markerWidth", "maskContentUnits", "maskUnits", "numOctaves", "pathLength", "patternContentUnits", "patternTransform", "patternUnits", "pointsAtX", "pointsAtY", "pointsAtZ", "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "refX", "refY", "repeatCount", "repeatDur", "requiredExtensions", "requiredFeatures", "specularConstant", "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stitchTiles", "surfaceScale", "systemLanguage", "tableValues", "targetX", "targetY", "textLength", "viewBox", "viewTarget", "xChannelSelector", "yChannelSelector", "zoomAndPan"].map((e => [e.toLowerCase(), e]))),
+ q = new Set(["style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript"]);
+
+function K(e) {
+ return e.replace(/"/g, """)
+}
+const j = new Set(["area", "base", "basefont", "br", "col", "command", "embed", "frame", "hr", "img", "input", "isindex", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
+
+function V(e, t = {}) {
+ const n = "length" in e ? e : [e];
+ let r = "";
+ for (let e = 0; e < n.length; e++) r += W(n[e], t);
+ return r
+}
+
+function W(e, t) {
+ switch (e.type) {
+ case s:
+ return V(e.children, t);
+ case f:
+ case o:
+ return `<${e.data}>`;
+ case c:
+ return function(e) {
+ return `\x3c!--${e.data}--\x3e`
+ }(e);
+ case p:
+ return function(e) {
+ return ``
+ }(e);
+ case l:
+ case h:
+ case u:
+ return function(e, t) {
+ var n;
+ "foreign" === t.xmlMode && (e.name = null !== (n = G.get(e.name)) && void 0 !== n ? n : e.name, e.parent && Q.has(e.parent.name) && (t = {
+ ...t,
+ xmlMode: !1
+ }));
+ !t.xmlMode && X.has(e.name) && (t = {
+ ...t,
+ xmlMode: "foreign"
+ });
+ let r = `<${e.name}`;
+ const i = function(e, t) {
+ var n;
+ if (!e) return;
+ const r = !1 === (null !== (n = t.encodeEntities) && void 0 !== n ? n : t.decodeEntities) ? K : t.xmlMode || "utf8" !== t.encodeEntities ? B : U;
+ return Object.keys(e).map((n => {
+ var i, s;
+ const a = null !== (i = e[n]) && void 0 !== i ? i : "";
+ return "foreign" === t.xmlMode && (n = null !== (s = Y.get(n)) && void 0 !== s ? s : n), t.emptyAttrs || t.xmlMode || "" !== a ? `${n}="${r(a)}"` : n
+ })).join(" ")
+ }(e.attribs, t);
+ i && (r += ` ${i}`);
+ 0 === e.children.length && (t.xmlMode ? !1 !== t.selfClosingTags : t.selfClosingTags && j.has(e.name)) ? (t.xmlMode || (r += " "), r += "/>") : (r += ">", e.children.length > 0 && (r += V(e.children, t)), !t.xmlMode && j.has(e.name) || (r += `${e.name}>`));
+ return r
+ }(e, t);
+ case a:
+ return function(e, t) {
+ var n;
+ let r = e.data || "";
+ !1 === (null !== (n = t.encodeEntities) && void 0 !== n ? n : t.decodeEntities) || !t.xmlMode && e.parent && q.has(e.parent.name) || (r = t.xmlMode || "utf8" !== t.encodeEntities ? B(r) : H(r));
+ return r
+ }(e, t)
+ }
+}
+const Q = new Set(["mi", "mo", "mn", "ms", "mtext", "annotation-xml", "foreignObject", "desc", "title"]),
+ X = new Set(["svg", "math"]);
+
+function $(e, t) {
+ return V(e, t)
+}
+
+function z(e) {
+ return Array.isArray(e) ? e.map(z).join("") : k(e) && !O(e) ? z(e.children) : b(e) ? e.data : ""
+}
+
+function J(t) {
+ return Array.isArray(t) ? t.map(J).join("") : k(t) && (t.type === e.Tag || S(t)) ? J(t.children) : b(t) ? t.data : ""
+}
+
+function Z(e) {
+ return k(e) ? e.children : []
+}
+
+function ee(e) {
+ return e.parent || null
+}
+
+function te(e) {
+ const t = ee(e);
+ if (null != t) return Z(t);
+ const n = [e];
+ let {
+ prev: r,
+ next: i
+ } = e;
+ for (; null != r;) n.unshift(r), ({
+ prev: r
+ } = r);
+ for (; null != i;) n.push(i), ({
+ next: i
+ } = i);
+ return n
+}
+
+function ne(e) {
+ let {
+ next: t
+ } = e;
+ for (; null !== t && !I(t);)({
+ next: t
+ } = t);
+ return t
+}
+
+function re(e) {
+ let {
+ prev: t
+ } = e;
+ for (; null !== t && !I(t);)({
+ prev: t
+ } = t);
+ return t
+}
+
+function ie(e) {
+ if (e.prev && (e.prev.next = e.next), e.next && (e.next.prev = e.prev), e.parent) {
+ const t = e.parent.children;
+ t.splice(t.lastIndexOf(e), 1)
+ }
+}
+
+function se(e, t, n = !0, r = 1 / 0) {
+ return Array.isArray(t) || (t = [t]), ae(e, t, n, r)
+}
+
+function ae(e, t, n, r) {
+ const i = [];
+ for (const s of t) {
+ if (e(s) && (i.push(s), --r <= 0)) break;
+ if (n && k(s) && s.children.length > 0) {
+ const t = ae(e, s.children, n, r);
+ if (i.push(...t), r -= t.length, r <= 0) break
+ }
+ }
+ return i
+}
+
+function oe(e, t, n = !0) {
+ let r = null;
+ for (let i = 0; i < t.length && !r; i++) {
+ const s = t[i];
+ I(s) && (e(s) ? r = s : n && s.children.length > 0 && (r = oe(e, s.children, !0)))
+ }
+ return r
+}
+const ce = {
+ tag_name: e => "function" == typeof e ? t => I(t) && e(t.name) : "*" === e ? I : t => I(t) && t.name === e,
+ tag_type: e => "function" == typeof e ? t => e(t.type) : t => t.type === e,
+ tag_contains: e => "function" == typeof e ? t => b(t) && e(t.data) : t => b(t) && t.data === e
+};
+
+function le(e, t) {
+ return "function" == typeof t ? n => I(n) && t(n.attribs[e]) : n => I(n) && n.attribs[e] === t
+}
+
+function he(e, t) {
+ return n => e(n) || t(n)
+}
+
+function ue(e) {
+ const t = Object.keys(e).map((t => {
+ const n = e[t];
+ return Object.prototype.hasOwnProperty.call(ce, t) ? ce[t](n) : le(t, n)
+ }));
+ return 0 === t.length ? null : t.reduce(he)
+}
+
+function pe(e, t, n = !0, r = 1 / 0) {
+ return se(ce.tag_name(e), t, n, r)
+}
+var fe;
+
+function de(e, t) {
+ const n = [],
+ r = [];
+ if (e === t) return 0;
+ let i = k(e) ? e : e.parent;
+ for (; i;) n.unshift(i), i = i.parent;
+ for (i = k(t) ? t : t.parent; i;) r.unshift(i), i = i.parent;
+ const s = Math.min(n.length, r.length);
+ let a = 0;
+ for (; a < s && n[a] === r[a];) a++;
+ if (0 === a) return fe.DISCONNECTED;
+ const o = n[a - 1],
+ c = o.children,
+ l = n[a],
+ h = r[a];
+ return c.indexOf(l) > c.indexOf(h) ? o === t ? fe.FOLLOWING | fe.CONTAINED_BY : fe.FOLLOWING : o === e ? fe.PRECEDING | fe.CONTAINS : fe.PRECEDING
+}
+
+function Ee(e) {
+ return (e = e.filter(((e, t, n) => !n.includes(e, t + 1)))).sort(((e, t) => {
+ const n = de(e, t);
+ return n & fe.PRECEDING ? -1 : n & fe.FOLLOWING ? 1 : 0
+ })), e
+}! function(e) {
+ e[e.DISCONNECTED = 1] = "DISCONNECTED", e[e.PRECEDING = 2] = "PRECEDING", e[e.FOLLOWING = 4] = "FOLLOWING", e[e.CONTAINS = 8] = "CONTAINS", e[e.CONTAINED_BY = 16] = "CONTAINED_BY"
+}(fe || (fe = {}));
+const me = ["url", "type", "lang"],
+ Te = ["fileSize", "bitrate", "framerate", "samplingrate", "channels", "duration", "height", "width"];
+
+function _e(e) {
+ return pe("media:content", e).map((e => {
+ const {
+ attribs: t
+ } = e, n = {
+ medium: t.medium,
+ isDefault: !!t.isDefault
+ };
+ for (const e of me) t[e] && (n[e] = t[e]);
+ for (const e of Te) t[e] && (n[e] = parseInt(t[e], 10));
+ return t.expression && (n.expression = t.expression), n
+ }))
+}
+
+function Ae(e, t) {
+ return pe(e, t, !0, 1)[0]
+}
+
+function ge(e, t, n = !1) {
+ return z(pe(e, t, n, 1)).trim()
+}
+
+function Ne(e, t, n, r, i = !1) {
+ const s = ge(n, r, i);
+ s && (e[t] = s)
+}
+
+function Ce(e) {
+ return "rss" === e || "feed" === e || "rdf:RDF" === e
+}
+var Ie, Se = Object.freeze({
+ __proto__: null,
+ isTag: I,
+ isCDATA: S,
+ isText: b,
+ isComment: O,
+ isDocument: L,
+ hasChildren: k,
+ getOuterHTML: $,
+ getInnerHTML: function(e, t) {
+ return k(e) ? e.children.map((e => $(e, t))).join("") : ""
+ },
+ getText: function e(t) {
+ return Array.isArray(t) ? t.map(e).join("") : I(t) ? "br" === t.name ? "\n" : e(t.children) : S(t) ? e(t.children) : b(t) ? t.data : ""
+ },
+ textContent: z,
+ innerText: J,
+ getChildren: Z,
+ getParent: ee,
+ getSiblings: te,
+ getAttributeValue: function(e, t) {
+ var n;
+ return null === (n = e.attribs) || void 0 === n ? void 0 : n[t]
+ },
+ hasAttrib: function(e, t) {
+ return null != e.attribs && Object.prototype.hasOwnProperty.call(e.attribs, t) && null != e.attribs[t]
+ },
+ getName: function(e) {
+ return e.name
+ },
+ nextElementSibling: ne,
+ prevElementSibling: re,
+ removeElement: ie,
+ replaceElement: function(e, t) {
+ const n = t.prev = e.prev;
+ n && (n.next = t);
+ const r = t.next = e.next;
+ r && (r.prev = t);
+ const i = t.parent = e.parent;
+ if (i) {
+ const n = i.children;
+ n[n.lastIndexOf(e)] = t, e.parent = null
+ }
+ },
+ appendChild: function(e, t) {
+ if (ie(t), t.next = null, t.parent = e, e.children.push(t) > 1) {
+ const n = e.children[e.children.length - 2];
+ n.next = t, t.prev = n
+ } else t.prev = null
+ },
+ append: function(e, t) {
+ ie(t);
+ const {
+ parent: n
+ } = e, r = e.next;
+ if (t.next = r, t.prev = e, e.next = t, t.parent = n, r) {
+ if (r.prev = t, n) {
+ const e = n.children;
+ e.splice(e.lastIndexOf(r), 0, t)
+ }
+ } else n && n.children.push(t)
+ },
+ prependChild: function(e, t) {
+ if (ie(t), t.parent = e, t.prev = null, 1 !== e.children.unshift(t)) {
+ const n = e.children[1];
+ n.prev = t, t.next = n
+ } else t.next = null
+ },
+ prepend: function(e, t) {
+ ie(t);
+ const {
+ parent: n
+ } = e;
+ if (n) {
+ const r = n.children;
+ r.splice(r.indexOf(e), 0, t)
+ }
+ e.prev && (e.prev.next = t), t.parent = n, t.prev = e.prev, t.next = e, e.prev = t
+ },
+ filter: se,
+ find: ae,
+ findOneChild: function(e, t) {
+ return t.find(e)
+ },
+ findOne: oe,
+ existsOne: function e(t, n) {
+ return n.some((n => I(n) && (t(n) || n.children.length > 0 && e(t, n.children))))
+ },
+ findAll: function(e, t) {
+ var n;
+ const r = [],
+ i = t.filter(I);
+ let s;
+ for (; s = i.shift();) {
+ const t = null === (n = s.children) || void 0 === n ? void 0 : n.filter(I);
+ t && t.length > 0 && i.unshift(...t), e(s) && r.push(s)
+ }
+ return r
+ },
+ testElement: function(e, t) {
+ const n = ue(e);
+ return !n || n(t)
+ },
+ getElements: function(e, t, n, r = 1 / 0) {
+ const i = ue(e);
+ return i ? se(i, t, n, r) : []
+ },
+ getElementById: function(e, t, n = !0) {
+ return Array.isArray(t) || (t = [t]), oe(le("id", e), t, n)
+ },
+ getElementsByTagName: pe,
+ getElementsByTagType: function(e, t, n = !0, r = 1 / 0) {
+ return se(ce.tag_type(e), t, n, r)
+ },
+ removeSubsets: function(e) {
+ let t = e.length;
+ for (; --t >= 0;) {
+ const n = e[t];
+ if (t > 0 && e.lastIndexOf(n, t - 1) >= 0) e.splice(t, 1);
+ else
+ for (let r = n.parent; r; r = r.parent)
+ if (e.includes(r)) {
+ e.splice(t, 1);
+ break
+ }
+ }
+ return e
+ },
+ get DocumentPosition() {
+ return fe
+ },
+ compareDocumentPosition: de,
+ uniqueSort: Ee,
+ getFeed: function(e) {
+ const t = Ae(Ce, e);
+ return t ? "feed" === t.name ? function(e) {
+ var t;
+ const n = e.children,
+ r = {
+ type: "atom",
+ items: pe("entry", n).map((e => {
+ var t;
+ const {
+ children: n
+ } = e, r = {
+ media: _e(n)
+ };
+ Ne(r, "id", "id", n), Ne(r, "title", "title", n);
+ const i = null === (t = Ae("link", n)) || void 0 === t ? void 0 : t.attribs.href;
+ i && (r.link = i);
+ const s = ge("summary", n) || ge("content", n);
+ s && (r.description = s);
+ const a = ge("updated", n);
+ return a && (r.pubDate = new Date(a)), r
+ }))
+ };
+ Ne(r, "id", "id", n), Ne(r, "title", "title", n);
+ const i = null === (t = Ae("link", n)) || void 0 === t ? void 0 : t.attribs.href;
+ i && (r.link = i);
+ Ne(r, "description", "subtitle", n);
+ const s = ge("updated", n);
+ s && (r.updated = new Date(s));
+ return Ne(r, "author", "email", n, !0), r
+ }(t) : function(e) {
+ var t, n;
+ const r = null !== (n = null === (t = Ae("channel", e.children)) || void 0 === t ? void 0 : t.children) && void 0 !== n ? n : [],
+ i = {
+ type: e.name.substr(0, 3),
+ id: "",
+ items: pe("item", e.children).map((e => {
+ const {
+ children: t
+ } = e, n = {
+ media: _e(t)
+ };
+ Ne(n, "id", "guid", t), Ne(n, "title", "title", t), Ne(n, "link", "link", t), Ne(n, "description", "description", t);
+ const r = ge("pubDate", t);
+ return r && (n.pubDate = new Date(r)), n
+ }))
+ };
+ Ne(i, "title", "title", r), Ne(i, "link", "link", r), Ne(i, "description", "description", r);
+ const s = ge("lastBuildDate", r);
+ s && (i.updated = new Date(s));
+ return Ne(i, "author", "managingEditor", r, !0), i
+ }(t) : null
+ }
+ }),
+ be = "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {};
+
+function Oe(e) {
+ if (Object.keys) return Object.keys(e);
+ var t = [];
+ for (var n in e) t.push(n);
+ return t
+}
+
+function ye(e, t) {
+ if (e.forEach) return e.forEach(t);
+ for (var n = 0; n < e.length; n++) t(e[n], n, e)
+}
+
+function Le() {
+ try {
+ return Object.defineProperty({}, "_", {}),
+ function(e, t, n) {
+ Object.defineProperty(e, t, {
+ writable: !0,
+ enumerable: !1,
+ configurable: !0,
+ value: n
+ })
+ }
+ } catch (e) {
+ return function(e, t, n) {
+ e[t] = n
+ }
+ }
+}
+var ke = ["Array", "Boolean", "Date", "Error", "EvalError", "Function", "Infinity", "JSON", "Math", "NaN", "Number", "Object", "RangeError", "ReferenceError", "RegExp", "String", "SyntaxError", "TypeError", "URIError", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "eval", "isFinite", "isNaN", "parseFloat", "parseInt", "undefined", "unescape"];
+
+function ve() {}
+
+function De(e) {
+ if (!(this instanceof De)) return new De(e);
+ this.code = e
+}
+
+function Re(e) {
+ if (Me(e)) return e;
+ var t = new ve;
+ return "object" == typeof e && ye(Oe(e), (function(n) {
+ t[n] = e[n]
+ })), t
+}
+
+function Me(e) {
+ return e instanceof ve
+}
+ve.prototype = {}, De.prototype.runInContext = function(e) {
+ if (!(e instanceof ve)) throw new TypeError("needs a 'context' argument.");
+ if (be.document) {
+ var t = be.document.createElement("iframe");
+ t.style || (t.style = {}), t.style.display = "none", be.document.body.appendChild(t);
+ var n = t.contentWindow,
+ r = n.eval,
+ i = n.execScript;
+ !r && i && (i.call(n, "null"), r = n.eval), ye(Oe(e), (function(t) {
+ n[t] = e[t]
+ })), ye(ke, (function(t) {
+ e[t] && (n[t] = e[t])
+ }));
+ var s = Oe(n),
+ a = r.call(n, this.code);
+ return ye(Oe(n), (function(t) {
+ (t in e || -1 === function(e, t) {
+ if (xe) return e.indexOf(t);
+ for (var n = 0; n < e.length; ++n)
+ if (e[n] === t) return n;
+ return -1
+ }(s, t)) && (e[t] = n[t])
+ })), ye(ke, (function(t) {
+ var r, i, s;
+ t in e || (r = e, i = t, s = n[t], "function" != typeof Ie && (Ie = Le), Ie(r, i, s))
+ })), be.document.body.removeChild(t), a
+ }
+ return function(e, t) {
+ var n = Oe(be);
+ return n.push("with (this.__ctx__){return eval(this.__code__)}"), Function.apply(null, n).apply({
+ __code__: e,
+ __ctx__: t
+ })
+ }(this.code, e)
+}, De.prototype.runInThisContext = function() {
+ return new Function("code", "return eval(code);").call(be, this.code)
+}, De.prototype.runInNewContext = function(e) {
+ var t = Re(e),
+ n = this.runInContext(t);
+ return e && ye(Oe(t), (function(n) {
+ e[n] = t[n]
+ })), n
+};
+var Pe = {
+ runInContext: function(e, t, n) {
+ return new De(e).runInContext(t, n)
+ },
+ isContext: Me,
+ createContext: Re,
+ createScript: function(e) {
+ return new De(e)
+ },
+ Script: De,
+ runInThisContext: function(e, t) {
+ return new De(e).runInThisContext(t)
+ },
+ runInNewContext: function(e, t, n) {
+ return new De(e).runInNewContext(t, n)
+ }
+ },
+ xe = [].indexOf;
+const {
+ hasOwnProperty: we
+} = Object.prototype;
+
+function Be(e, t) {
+ return (e = e.slice()).push(t), e
+}
+
+function Fe(e, t) {
+ return (t = t.slice()).unshift(e), t
+}
+class Ue extends Error {
+ constructor(e) {
+ super('JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'), this.avoidNew = !0, this.value = e, this.name = "NewError"
+ }
+}
+
+function He(e, t, n, r, i) {
+ if (!(this instanceof He)) try {
+ return new He(e, t, n, r, i)
+ } catch (e) {
+ if (!e.avoidNew) throw e;
+ return e.value
+ }
+ "string" == typeof e && (i = r, r = n, n = t, t = e, e = null);
+ const s = e && "object" == typeof e;
+ if (e = e || {}, this.json = e.json || n, this.path = e.path || t, this.resultType = e.resultType || "value", this.flatten = e.flatten || !1, this.wrap = !we.call(e, "wrap") || e.wrap, this.sandbox = e.sandbox || {}, this.preventEval = e.preventEval || !1, this.parent = e.parent || null, this.parentProperty = e.parentProperty || null, this.callback = e.callback || r || null, this.otherTypeCallback = e.otherTypeCallback || i || function() {
+ throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.")
+ }, !1 !== e.autostart) {
+ const r = {
+ path: s ? e.path : t
+ };
+ s ? "json" in e && (r.json = e.json) : r.json = n;
+ const i = this.evaluate(r);
+ if (!i || "object" != typeof i) throw new Ue(i);
+ return i
+ }
+}
+He.prototype.evaluate = function(e, t, n, r) {
+ let i = this.parent,
+ s = this.parentProperty,
+ {
+ flatten: a,
+ wrap: o
+ } = this;
+ if (this.currResultType = this.resultType, this.currPreventEval = this.preventEval, this.currSandbox = this.sandbox, n = n || this.callback, this.currOtherTypeCallback = r || this.otherTypeCallback, t = t || this.json, (e = e || this.path) && "object" == typeof e && !Array.isArray(e)) {
+ if (!e.path && "" !== e.path) throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().');
+ if (!we.call(e, "json")) throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().');
+ ({
+ json: t
+ } = e), a = we.call(e, "flatten") ? e.flatten : a, this.currResultType = we.call(e, "resultType") ? e.resultType : this.currResultType, this.currSandbox = we.call(e, "sandbox") ? e.sandbox : this.currSandbox, o = we.call(e, "wrap") ? e.wrap : o, this.currPreventEval = we.call(e, "preventEval") ? e.preventEval : this.currPreventEval, n = we.call(e, "callback") ? e.callback : n, this.currOtherTypeCallback = we.call(e, "otherTypeCallback") ? e.otherTypeCallback : this.currOtherTypeCallback, i = we.call(e, "parent") ? e.parent : i, s = we.call(e, "parentProperty") ? e.parentProperty : s, e = e.path
+ }
+ if (i = i || null, s = s || null, Array.isArray(e) && (e = He.toPathString(e)), !e && "" !== e || !t) return;
+ const c = He.toPathArray(e);
+ "$" === c[0] && c.length > 1 && c.shift(), this._hasParentSelector = null;
+ const l = this._trace(c, t, ["$"], i, s, n).filter((function(e) {
+ return e && !e.isParentSelector
+ }));
+ return l.length ? o || 1 !== l.length || l[0].hasArrExpr ? l.reduce(((e, t) => {
+ const n = this._getPreferredOutput(t);
+ return a && Array.isArray(n) ? e = e.concat(n) : e.push(n), e
+ }), []) : this._getPreferredOutput(l[0]) : o ? [] : void 0
+}, He.prototype._getPreferredOutput = function(e) {
+ const t = this.currResultType;
+ switch (t) {
+ case "all": {
+ const t = Array.isArray(e.path) ? e.path : He.toPathArray(e.path);
+ return e.pointer = He.toPointer(t), e.path = "string" == typeof e.path ? e.path : He.toPathString(e.path), e
+ }
+ case "value":
+ case "parent":
+ case "parentProperty":
+ return e[t];
+ case "path":
+ return He.toPathString(e[t]);
+ case "pointer":
+ return He.toPointer(e.path);
+ default:
+ throw new TypeError("Unknown result type")
+ }
+}, He.prototype._handleCallback = function(e, t, n) {
+ if (t) {
+ const r = this._getPreferredOutput(e);
+ e.path = "string" == typeof e.path ? e.path : He.toPathString(e.path), t(r, n, e)
+ }
+}, He.prototype._trace = function(e, t, n, r, i, s, a, o) {
+ let c;
+ if (!e.length) return c = {
+ path: n,
+ value: t,
+ parent: r,
+ parentProperty: i,
+ hasArrExpr: a
+ }, this._handleCallback(c, s, "value"), c;
+ const l = e[0],
+ h = e.slice(1),
+ u = [];
+
+ function p(e) {
+ Array.isArray(e) ? e.forEach((e => {
+ u.push(e)
+ })) : u.push(e)
+ }
+ if (("string" != typeof l || o) && t && we.call(t, l)) p(this._trace(h, t[l], Be(n, l), t, l, s, a));
+ else if ("*" === l) this._walk(t, (e => {
+ p(this._trace(h, t[e], Be(n, e), t, e, s, !0, !0))
+ }));
+ else if (".." === l) p(this._trace(h, t, n, r, i, s, a)), this._walk(t, (r => {
+ "object" == typeof t[r] && p(this._trace(e.slice(), t[r], Be(n, r), t, r, s, !0))
+ }));
+ else {
+ if ("^" === l) return this._hasParentSelector = !0, {
+ path: n.slice(0, -1),
+ expr: h,
+ isParentSelector: !0
+ };
+ if ("~" === l) return c = {
+ path: Be(n, l),
+ value: i,
+ parent: r,
+ parentProperty: null
+ }, this._handleCallback(c, s, "property"), c;
+ if ("$" === l) p(this._trace(h, t, n, null, null, s, a));
+ else if (/^(-?\d*):(-?\d*):?(\d*)$/u.test(l)) p(this._slice(l, h, t, n, r, i, s));
+ else if (0 === l.indexOf("?(")) {
+ if (this.currPreventEval) throw new Error("Eval [?(expr)] prevented in JSONPath expression.");
+ const e = l.replace(/^\?\((.*?)\)$/u, "$1");
+ this._walk(t, (a => {
+ this._eval(e, t[a], a, n, r, i) && p(this._trace(h, t[a], Be(n, a), t, a, s, !0))
+ }))
+ } else if ("(" === l[0]) {
+ if (this.currPreventEval) throw new Error("Eval [(expr)] prevented in JSONPath expression.");
+ p(this._trace(Fe(this._eval(l, t, n[n.length - 1], n.slice(0, -1), r, i), h), t, n, r, i, s, a))
+ } else if ("@" === l[0]) {
+ let e = !1;
+ const a = l.slice(1, -2);
+ switch (a) {
+ case "scalar":
+ t && ["object", "function"].includes(typeof t) || (e = !0);
+ break;
+ case "boolean":
+ case "string":
+ case "undefined":
+ case "function":
+ typeof t === a && (e = !0);
+ break;
+ case "integer":
+ !Number.isFinite(t) || t % 1 || (e = !0);
+ break;
+ case "number":
+ Number.isFinite(t) && (e = !0);
+ break;
+ case "nonFinite":
+ "number" != typeof t || Number.isFinite(t) || (e = !0);
+ break;
+ case "object":
+ t && typeof t === a && (e = !0);
+ break;
+ case "array":
+ Array.isArray(t) && (e = !0);
+ break;
+ case "other":
+ e = this.currOtherTypeCallback(t, n, r, i);
+ break;
+ case "null":
+ null === t && (e = !0);
+ break;
+ default:
+ throw new TypeError("Unknown value type " + a)
+ }
+ if (e) return c = {
+ path: n,
+ value: t,
+ parent: r,
+ parentProperty: i
+ }, this._handleCallback(c, s, "value"), c
+ } else if ("`" === l[0] && t && we.call(t, l.slice(1))) {
+ const e = l.slice(1);
+ p(this._trace(h, t[e], Be(n, e), t, e, s, a, !0))
+ } else if (l.includes(",")) {
+ const e = l.split(",");
+ for (const a of e) p(this._trace(Fe(a, h), t, n, r, i, s, !0))
+ } else !o && t && we.call(t, l) && p(this._trace(h, t[l], Be(n, l), t, l, s, a, !0))
+ }
+ if (this._hasParentSelector)
+ for (let e = 0; e < u.length; e++) {
+ const n = u[e];
+ if (n && n.isParentSelector) {
+ const o = this._trace(n.expr, t, n.path, r, i, s, a);
+ if (Array.isArray(o)) {
+ u[e] = o[0];
+ const t = o.length;
+ for (let n = 1; n < t; n++) e++, u.splice(e, 0, o[n])
+ } else u[e] = o
+ }
+ }
+ return u
+}, He.prototype._walk = function(e, t) {
+ if (Array.isArray(e)) {
+ const n = e.length;
+ for (let e = 0; e < n; e++) t(e)
+ } else e && "object" == typeof e && Object.keys(e).forEach((e => {
+ t(e)
+ }))
+}, He.prototype._slice = function(e, t, n, r, i, s, a) {
+ if (!Array.isArray(n)) return;
+ const o = n.length,
+ c = e.split(":"),
+ l = c[2] && Number.parseInt(c[2]) || 1;
+ let h = c[0] && Number.parseInt(c[0]) || 0,
+ u = c[1] && Number.parseInt(c[1]) || o;
+ h = h < 0 ? Math.max(0, h + o) : Math.min(o, h), u = u < 0 ? Math.max(0, u + o) : Math.min(o, u);
+ const p = [];
+ for (let e = h; e < u; e += l) {
+ this._trace(Fe(e, t), n, r, i, s, a, !0).forEach((e => {
+ p.push(e)
+ }))
+ }
+ return p
+}, He.prototype._eval = function(e, t, n, r, i, s) {
+ this.currSandbox._$_parentProperty = s, this.currSandbox._$_parent = i, this.currSandbox._$_property = n, this.currSandbox._$_root = this.json, this.currSandbox._$_v = t;
+ const a = e.includes("@path");
+ a && (this.currSandbox._$_path = He.toPathString(r.concat([n])));
+ const o = "script:" + e;
+ if (!He.cache[o]) {
+ let t = e.replace(/@parentProperty/gu, "_$_parentProperty").replace(/@parent/gu, "_$_parent").replace(/@property/gu, "_$_property").replace(/@root/gu, "_$_root").replace(/@([.\s)[])/gu, "_$_v$1");
+ a && (t = t.replace(/@path/gu, "_$_path")), He.cache[o] = new this.vm.Script(t)
+ }
+ try {
+ return He.cache[o].runInNewContext(this.currSandbox)
+ } catch (t) {
+ throw new Error("jsonPath: " + t.message + ": " + e)
+ }
+}, He.cache = {}, He.toPathString = function(e) {
+ const t = e,
+ n = t.length;
+ let r = "$";
+ for (let e = 1; e < n; e++) /^(~|\^|@.*?\(\))$/u.test(t[e]) || (r += /^[0-9*]+$/u.test(t[e]) ? "[" + t[e] + "]" : "['" + t[e] + "']");
+ return r
+}, He.toPointer = function(e) {
+ const t = e,
+ n = t.length;
+ let r = "";
+ for (let e = 1; e < n; e++) /^(~|\^|@.*?\(\))$/u.test(t[e]) || (r += "/" + t[e].toString().replace(/~/gu, "~0").replace(/\//gu, "~1"));
+ return r
+}, He.toPathArray = function(e) {
+ const {
+ cache: t
+ } = He;
+ if (t[e]) return t[e].concat();
+ const n = [],
+ r = e.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/gu, ";$&;").replace(/[['](\??\(.*?\))[\]']/gu, (function(e, t) {
+ return "[#" + (n.push(t) - 1) + "]"
+ })).replace(/\[['"]([^'\]]*)['"]\]/gu, (function(e, t) {
+ return "['" + t.replace(/\./gu, "%@%").replace(/~/gu, "%%@@%%") + "']"
+ })).replace(/~/gu, ";~;").replace(/['"]?\.['"]?(?![^[]*\])|\[['"]?/gu, ";").replace(/%@%/gu, ".").replace(/%%@@%%/gu, "~").replace(/(?:;)?(\^+)(?:;)?/gu, (function(e, t) {
+ return ";" + t.split("").join(";") + ";"
+ })).replace(/;;;|;;/gu, ";..;").replace(/;$|'?\]|'$/gu, ""),
+ i = r.split(";").map((function(e) {
+ const t = e.match(/#(\d+)/u);
+ return t && t[1] ? n[t[1]] : e
+ }));
+ return t[e] = i, t[e].concat()
+}, He.prototype.vm = Pe;
+var Ge = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};
+
+function Ye() {
+ throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")
+}
+
+function qe(e) {
+ return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e
+}
+
+function Ke(e, t) {
+ return e(t = {
+ exports: {}
+ }, t.exports), t.exports
+}
+var je = Ke((function(e) {
+ var t = Array.prototype,
+ n = Object.prototype,
+ r = {
+ "&": "&",
+ '"': """,
+ "'": "'",
+ "<": "<",
+ ">": ">"
+ },
+ i = /[&"'<>]/g,
+ s = e.exports = {};
+
+ function a(e, t) {
+ return n.hasOwnProperty.call(e, t)
+ }
+
+ function o(e) {
+ return r[e]
+ }
+
+ function c(e, t, n) {
+ var r, i, s;
+ if (e instanceof Error && (e = (i = e).name + ": " + i.message), Object.setPrototypeOf ? (r = new Error(e), Object.setPrototypeOf(r, c.prototype)) : (r = this, Object.defineProperty(r, "message", {
+ enumerable: !1,
+ writable: !0,
+ value: e
+ })), Object.defineProperty(r, "name", {
+ value: "Template render error"
+ }), Error.captureStackTrace && Error.captureStackTrace(r, this.constructor), i) {
+ var a = Object.getOwnPropertyDescriptor(i, "stack");
+ (s = a && (a.get || function() {
+ return a.value
+ })) || (s = function() {
+ return i.stack
+ })
+ } else {
+ var o = new Error(e).stack;
+ s = function() {
+ return o
+ }
+ }
+ return Object.defineProperty(r, "stack", {
+ get: function() {
+ return s.call(r)
+ }
+ }), Object.defineProperty(r, "cause", {
+ value: i
+ }), r.lineno = t, r.colno = n, r.firstUpdate = !0, r.Update = function(e) {
+ var t = "(" + (e || "unknown path") + ")";
+ return this.firstUpdate && (this.lineno && this.colno ? t += " [Line " + this.lineno + ", Column " + this.colno + "]" : this.lineno && (t += " [Line " + this.lineno + "]")), t += "\n ", this.firstUpdate && (t += " "), this.message = t + (this.message || ""), this.firstUpdate = !1, this
+ }, r
+ }
+
+ function l(e) {
+ return "[object Function]" === n.toString.call(e)
+ }
+
+ function h(e) {
+ return "[object Array]" === n.toString.call(e)
+ }
+
+ function u(e) {
+ return "[object String]" === n.toString.call(e)
+ }
+
+ function p(e) {
+ return "[object Object]" === n.toString.call(e)
+ }
+
+ function f(e) {
+ var t = function(e) {
+ return e ? "string" == typeof e ? e.split(".") : [e] : []
+ }(e);
+ return function(e) {
+ for (var n = e, r = 0; r < t.length; r++) {
+ var i = t[r];
+ if (!a(n, i)) return;
+ n = n[i]
+ }
+ return n
+ }
+ }
+
+ function d(e) {
+ return Array.prototype.slice.call(e)
+ }
+
+ function E(e, t, n) {
+ return Array.prototype.indexOf.call(e || [], t, n)
+ }
+
+ function m(e) {
+ var t = [];
+ for (var n in e) a(e, n) && t.push(n);
+ return t
+ }
+ s.hasOwnProp = a, s._prettifyError = function(e, t, n) {
+ if (n.Update || (n = new s.TemplateError(n)), n.Update(e), !t) {
+ var r = n;
+ (n = new Error(r.message)).name = r.name
+ }
+ return n
+ }, Object.setPrototypeOf ? Object.setPrototypeOf(c.prototype, Error.prototype) : c.prototype = Object.create(Error.prototype, {
+ constructor: {
+ value: c
+ }
+ }), s.TemplateError = c, s.escape = function(e) {
+ return e.replace(i, o)
+ }, s.isFunction = l, s.isArray = h, s.isString = u, s.isObject = p, s.getAttrGetter = f, s.groupBy = function(e, t, n) {
+ for (var r = {}, i = l(t) ? t : f(t), s = 0; s < e.length; s++) {
+ var a = e[s],
+ o = i(a, s);
+ if (void 0 === o && !0 === n) throw new TypeError('groupby: attribute "' + t + '" resolved to undefined');
+ (r[o] || (r[o] = [])).push(a)
+ }
+ return r
+ }, s.toArray = d, s.without = function(e) {
+ var t = [];
+ if (!e) return t;
+ for (var n = e.length, r = d(arguments).slice(1), i = -1; ++i < n;) - 1 === E(r, e[i]) && t.push(e[i]);
+ return t
+ }, s.repeat = function(e, t) {
+ for (var n = "", r = 0; r < t; r++) n += e;
+ return n
+ }, s.each = function(e, n, r) {
+ if (null != e)
+ if (t.forEach && e.forEach === t.forEach) e.forEach(n, r);
+ else if (e.length === +e.length)
+ for (var i = 0, s = e.length; i < s; i++) n.call(r, e[i], i, e)
+ }, s.map = function(e, n) {
+ var r = [];
+ if (null == e) return r;
+ if (t.map && e.map === t.map) return e.map(n);
+ for (var i = 0; i < e.length; i++) r[r.length] = n(e[i], i);
+ return e.length === +e.length && (r.length = e.length), r
+ }, s.asyncIter = function(e, t, n) {
+ var r = -1;
+ ! function i() {
+ ++r < e.length ? t(e[r], r, i, n) : n()
+ }()
+ }, s.asyncFor = function(e, t, n) {
+ var r = m(e || {}),
+ i = r.length,
+ s = -1;
+ ! function a() {
+ s++;
+ var o = r[s];
+ s < i ? t(o, e[o], s, i, a) : n()
+ }()
+ }, s.indexOf = E, s.keys = m, s._entries = function(e) {
+ return m(e).map((function(t) {
+ return [t, e[t]]
+ }))
+ }, s._values = function(e) {
+ return m(e).map((function(t) {
+ return e[t]
+ }))
+ }, s._assign = s.extend = function(e, t) {
+ return e = e || {}, m(t).forEach((function(n) {
+ e[n] = t[n]
+ })), e
+ }, s.inOperator = function(e, t) {
+ if (h(t) || u(t)) return -1 !== t.indexOf(e);
+ if (p(t)) return e in t;
+ throw new Error('Cannot use "in" operator to search for "' + e + '" in unexpected types.')
+ }
+}));
+
+function Ve() {
+ throw new Error("setTimeout has not been defined")
+}
+
+function We() {
+ throw new Error("clearTimeout has not been defined")
+}
+var Qe = Ve,
+ Xe = We;
+
+function $e(e) {
+ if (Qe === setTimeout) return setTimeout(e, 0);
+ if ((Qe === Ve || !Qe) && setTimeout) return Qe = setTimeout, setTimeout(e, 0);
+ try {
+ return Qe(e, 0)
+ } catch (t) {
+ try {
+ return Qe.call(null, e, 0)
+ } catch (t) {
+ return Qe.call(this, e, 0)
+ }
+ }
+}
+"function" == typeof be.setTimeout && (Qe = setTimeout), "function" == typeof be.clearTimeout && (Xe = clearTimeout);
+var ze, Je = [],
+ Ze = !1,
+ et = -1;
+
+function tt() {
+ Ze && ze && (Ze = !1, ze.length ? Je = ze.concat(Je) : et = -1, Je.length && nt())
+}
+
+function nt() {
+ if (!Ze) {
+ var e = $e(tt);
+ Ze = !0;
+ for (var t = Je.length; t;) {
+ for (ze = Je, Je = []; ++et < t;) ze && ze[et].run();
+ et = -1, t = Je.length
+ }
+ ze = null, Ze = !1,
+ function(e) {
+ if (Xe === clearTimeout) return clearTimeout(e);
+ if ((Xe === We || !Xe) && clearTimeout) return Xe = clearTimeout, clearTimeout(e);
+ try {
+ Xe(e)
+ } catch (t) {
+ try {
+ return Xe.call(null, e)
+ } catch (t) {
+ return Xe.call(this, e)
+ }
+ }
+ }(e)
+ }
+}
+
+function rt(e, t) {
+ this.fun = e, this.array = t
+}
+rt.prototype.run = function() {
+ this.fun.apply(null, this.array)
+};
+
+function it() {}
+var st = it,
+ at = it,
+ ot = it,
+ ct = it,
+ lt = it,
+ ht = it,
+ ut = it;
+var pt = be.performance || {},
+ ft = pt.now || pt.mozNow || pt.msNow || pt.oNow || pt.webkitNow || function() {
+ return (new Date).getTime()
+ };
+var dt = new Date;
+var Et = {
+ nextTick: function(e) {
+ var t = new Array(arguments.length - 1);
+ if (arguments.length > 1)
+ for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
+ Je.push(new rt(e, t)), 1 !== Je.length || Ze || $e(nt)
+ },
+ title: "browser",
+ browser: !0,
+ env: {},
+ argv: [],
+ version: "",
+ versions: {},
+ on: st,
+ addListener: at,
+ once: ot,
+ off: ct,
+ removeListener: lt,
+ removeAllListeners: ht,
+ emit: ut,
+ binding: function(e) {
+ throw new Error("process.binding is not supported")
+ },
+ cwd: function() {
+ return "/"
+ },
+ chdir: function(e) {
+ throw new Error("process.chdir is not supported")
+ },
+ umask: function() {
+ return 0
+ },
+ hrtime: function(e) {
+ var t = .001 * ft.call(pt),
+ n = Math.floor(t),
+ r = Math.floor(t % 1 * 1e9);
+ return e && (n -= e[0], (r -= e[1]) < 0 && (n--, r += 1e9)), [n, r]
+ },
+ platform: "browser",
+ release: {},
+ config: {},
+ uptime: function() {
+ return (new Date - dt) / 1e3
+ }
+};
+
+function mt() {}
+
+function Tt() {
+ Tt.init.call(this)
+}
+
+function _t(e) {
+ return void 0 === e._maxListeners ? Tt.defaultMaxListeners : e._maxListeners
+}
+
+function At(e, t, n) {
+ if (t) e.call(n);
+ else
+ for (var r = e.length, i = yt(e, r), s = 0; s < r; ++s) i[s].call(n)
+}
+
+function gt(e, t, n, r) {
+ if (t) e.call(n, r);
+ else
+ for (var i = e.length, s = yt(e, i), a = 0; a < i; ++a) s[a].call(n, r)
+}
+
+function Nt(e, t, n, r, i) {
+ if (t) e.call(n, r, i);
+ else
+ for (var s = e.length, a = yt(e, s), o = 0; o < s; ++o) a[o].call(n, r, i)
+}
+
+function Ct(e, t, n, r, i, s) {
+ if (t) e.call(n, r, i, s);
+ else
+ for (var a = e.length, o = yt(e, a), c = 0; c < a; ++c) o[c].call(n, r, i, s)
+}
+
+function It(e, t, n, r) {
+ if (t) e.apply(n, r);
+ else
+ for (var i = e.length, s = yt(e, i), a = 0; a < i; ++a) s[a].apply(n, r)
+}
+
+function St(e, t, n, r) {
+ var i, s, a;
+ if ("function" != typeof n) throw new TypeError('"listener" argument must be a function');
+ if ((s = e._events) ? (s.newListener && (e.emit("newListener", t, n.listener ? n.listener : n), s = e._events), a = s[t]) : (s = e._events = new mt, e._eventsCount = 0), a) {
+ if ("function" == typeof a ? a = s[t] = r ? [n, a] : [a, n] : r ? a.unshift(n) : a.push(n), !a.warned && (i = _t(e)) && i > 0 && a.length > i) {
+ a.warned = !0;
+ var o = new Error("Possible EventEmitter memory leak detected. " + a.length + " " + t + " listeners added. Use emitter.setMaxListeners() to increase limit");
+ o.name = "MaxListenersExceededWarning", o.emitter = e, o.type = t, o.count = a.length,
+ function(e) {
+ "function" == typeof console.warn ? console.warn(e) : console.log(e)
+ }(o)
+ }
+ } else a = s[t] = n, ++e._eventsCount;
+ return e
+}
+
+function bt(e, t, n) {
+ var r = !1;
+
+ function i() {
+ e.removeListener(t, i), r || (r = !0, n.apply(e, arguments))
+ }
+ return i.listener = n, i
+}
+
+function Ot(e) {
+ var t = this._events;
+ if (t) {
+ var n = t[e];
+ if ("function" == typeof n) return 1;
+ if (n) return n.length
+ }
+ return 0
+}
+
+function yt(e, t) {
+ for (var n = new Array(t); t--;) n[t] = e[t];
+ return n
+}
+
+function Lt() {
+ var e;
+ Tt.call(this), this.__emitError = (e = this, function(t) {
+ e.emit("error", t)
+ })
+}
+
+function kt() {
+ return new Lt
+}
+mt.prototype = Object.create(null), Tt.EventEmitter = Tt, Tt.usingDomains = !1, Tt.prototype.domain = void 0, Tt.prototype._events = void 0, Tt.prototype._maxListeners = void 0, Tt.defaultMaxListeners = 10, Tt.init = function() {
+ this.domain = null, Tt.usingDomains && undefined.active, this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = new mt, this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0
+}, Tt.prototype.setMaxListeners = function(e) {
+ if ("number" != typeof e || e < 0 || isNaN(e)) throw new TypeError('"n" argument must be a positive number');
+ return this._maxListeners = e, this
+}, Tt.prototype.getMaxListeners = function() {
+ return _t(this)
+}, Tt.prototype.emit = function(e) {
+ var t, n, r, i, s, a, o, c = "error" === e;
+ if (a = this._events) c = c && null == a.error;
+ else if (!c) return !1;
+ if (o = this.domain, c) {
+ if (t = arguments[1], !o) {
+ if (t instanceof Error) throw t;
+ var l = new Error('Uncaught, unspecified "error" event. (' + t + ")");
+ throw l.context = t, l
+ }
+ return t || (t = new Error('Uncaught, unspecified "error" event')), t.domainEmitter = this, t.domain = o, t.domainThrown = !1, o.emit("error", t), !1
+ }
+ if (!(n = a[e])) return !1;
+ var h = "function" == typeof n;
+ switch (r = arguments.length) {
+ case 1:
+ At(n, h, this);
+ break;
+ case 2:
+ gt(n, h, this, arguments[1]);
+ break;
+ case 3:
+ Nt(n, h, this, arguments[1], arguments[2]);
+ break;
+ case 4:
+ Ct(n, h, this, arguments[1], arguments[2], arguments[3]);
+ break;
+ default:
+ for (i = new Array(r - 1), s = 1; s < r; s++) i[s - 1] = arguments[s];
+ It(n, h, this, i)
+ }
+ return !0
+}, Tt.prototype.addListener = function(e, t) {
+ return St(this, e, t, !1)
+}, Tt.prototype.on = Tt.prototype.addListener, Tt.prototype.prependListener = function(e, t) {
+ return St(this, e, t, !0)
+}, Tt.prototype.once = function(e, t) {
+ if ("function" != typeof t) throw new TypeError('"listener" argument must be a function');
+ return this.on(e, bt(this, e, t)), this
+}, Tt.prototype.prependOnceListener = function(e, t) {
+ if ("function" != typeof t) throw new TypeError('"listener" argument must be a function');
+ return this.prependListener(e, bt(this, e, t)), this
+}, Tt.prototype.removeListener = function(e, t) {
+ var n, r, i, s, a;
+ if ("function" != typeof t) throw new TypeError('"listener" argument must be a function');
+ if (!(r = this._events)) return this;
+ if (!(n = r[e])) return this;
+ if (n === t || n.listener && n.listener === t) 0 == --this._eventsCount ? this._events = new mt : (delete r[e], r.removeListener && this.emit("removeListener", e, n.listener || t));
+ else if ("function" != typeof n) {
+ for (i = -1, s = n.length; s-- > 0;)
+ if (n[s] === t || n[s].listener && n[s].listener === t) {
+ a = n[s].listener, i = s;
+ break
+ } if (i < 0) return this;
+ if (1 === n.length) {
+ if (n[0] = void 0, 0 == --this._eventsCount) return this._events = new mt, this;
+ delete r[e]
+ } else ! function(e, t) {
+ for (var n = t, r = n + 1, i = e.length; r < i; n += 1, r += 1) e[n] = e[r];
+ e.pop()
+ }(n, i);
+ r.removeListener && this.emit("removeListener", e, a || t)
+ }
+ return this
+}, Tt.prototype.removeAllListeners = function(e) {
+ var t, n;
+ if (!(n = this._events)) return this;
+ if (!n.removeListener) return 0 === arguments.length ? (this._events = new mt, this._eventsCount = 0) : n[e] && (0 == --this._eventsCount ? this._events = new mt : delete n[e]), this;
+ if (0 === arguments.length) {
+ for (var r, i = Object.keys(n), s = 0; s < i.length; ++s) "removeListener" !== (r = i[s]) && this.removeAllListeners(r);
+ return this.removeAllListeners("removeListener"), this._events = new mt, this._eventsCount = 0, this
+ }
+ if ("function" == typeof(t = n[e])) this.removeListener(e, t);
+ else if (t)
+ do {
+ this.removeListener(e, t[t.length - 1])
+ } while (t[0]);
+ return this
+}, Tt.prototype.listeners = function(e) {
+ var t, n = this._events;
+ return n && (t = n[e]) ? "function" == typeof t ? [t.listener || t] : function(e) {
+ for (var t = new Array(e.length), n = 0; n < t.length; ++n) t[n] = e[n].listener || e[n];
+ return t
+ }(t) : []
+}, Tt.listenerCount = function(e, t) {
+ return "function" == typeof e.listenerCount ? e.listenerCount(t) : Ot.call(e, t)
+}, Tt.prototype.listenerCount = Ot, Tt.prototype.eventNames = function() {
+ return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []
+}, ("function" == typeof Object.create ? function(e, t) {
+ e.super_ = t, e.prototype = Object.create(t.prototype, {
+ constructor: {
+ value: e,
+ enumerable: !1,
+ writable: !0,
+ configurable: !0
+ }
+ })
+} : function(e, t) {
+ e.super_ = t;
+ var n = function() {};
+ n.prototype = t.prototype, e.prototype = new n, e.prototype.constructor = e
+})(Lt, Tt), Lt.prototype.add = function(e) {
+ e.on("error", this.__emitError)
+}, Lt.prototype.remove = function(e) {
+ e.removeListener("error", this.__emitError)
+}, Lt.prototype.bind = function(e) {
+ var t = this.__emitError;
+ return function() {
+ var n = Array.prototype.slice.call(arguments);
+ try {
+ e.apply(null, n)
+ } catch (e) {
+ t(e)
+ }
+ }
+}, Lt.prototype.intercept = function(e) {
+ var t = this.__emitError;
+ return function(n) {
+ if (n) t(n);
+ else {
+ var r = Array.prototype.slice.call(arguments, 1);
+ try {
+ e.apply(null, r)
+ } catch (n) {
+ t(n)
+ }
+ }
+ }
+}, Lt.prototype.run = function(e) {
+ var t = this.__emitError;
+ try {
+ e()
+ } catch (e) {
+ t(e)
+ }
+ return this
+}, Lt.prototype.dispose = function() {
+ return this.removeAllListeners(), this
+}, Lt.prototype.enter = Lt.prototype.exit = function() {
+ return this
+};
+var vt, Dt = {
+ Domain: Lt,
+ createDomain: kt,
+ create: kt
+ },
+ Rt = "function" == typeof setImmediate,
+ Mt = Pt;
+
+function Pt(e) {
+ xt.length || (Ut(), wt = !0), xt[xt.length] = e
+}
+var xt = [],
+ wt = !1,
+ Bt = 0;
+
+function Ft() {
+ for (; Bt < xt.length;) {
+ var e = Bt;
+ if (Bt += 1, xt[e].call(), Bt > 1024) {
+ for (var t = 0, n = xt.length - Bt; t < n; t++) xt[t] = xt[t + Bt];
+ xt.length -= Bt, Bt = 0
+ }
+ }
+ xt.length = 0, Bt = 0, wt = !1
+}
+
+function Ut() {
+ var e = Et.domain;
+ e && (vt || (vt = Dt), vt.active = Et.domain = null), wt && Rt ? setImmediate(Ft) : Et.nextTick(Ft), e && (vt.active = Et.domain = e)
+}
+Pt.requestFlush = Ut;
+var Ht = [],
+ Gt = function(e) {
+ var t;
+ t = Ht.length ? Ht.pop() : new Yt;
+ t.task = e, t.domain = Et.domain, Mt(t)
+ };
+
+function Yt() {
+ this.task = null, this.domain = null
+}
+Yt.prototype.call = function() {
+ this.domain && this.domain.enter();
+ var e = !0;
+ try {
+ this.task.call(), e = !1, this.domain && this.domain.exit()
+ } finally {
+ e && Mt.requestFlush(), this.task = null, this.domain = null, Ht.push(this)
+ }
+};
+var qt = Ke((function(e) {
+ ! function(t) {
+ var n = function() {
+ var e = Array.prototype.slice.call(arguments);
+ "function" == typeof e[0] && e[0].apply(null, e.splice(1))
+ },
+ r = function(e) {
+ "function" == typeof setImmediate ? setImmediate(e) : void 0 !== Et && Et.nextTick ? Et.nextTick(e) : setTimeout(e, 0)
+ },
+ i = Array.isArray || function(e) {
+ return "[object Array]" === Object.prototype.toString.call(e)
+ },
+ s = function(e, t, s) {
+ var a = s ? r : n;
+ if (t = t || function() {}, !i(e)) {
+ var o = new Error("First argument to waterfall must be an array of functions");
+ return t(o)
+ }
+ if (!e.length) return t();
+ var c = function(e) {
+ return function(n) {
+ if (n) t.apply(null, arguments), t = function() {};
+ else {
+ var r = Array.prototype.slice.call(arguments, 1),
+ i = e.next();
+ i ? r.push(c(i)) : r.push(t), a((function() {
+ e.apply(null, r)
+ }))
+ }
+ }
+ };
+ c(function(e) {
+ var t = function(n) {
+ var r = function() {
+ return e.length && e[n].apply(null, arguments), r.next()
+ };
+ return r.next = function() {
+ return n < e.length - 1 ? t(n + 1) : null
+ }, r
+ };
+ return t(0)
+ }(e))()
+ };
+ e.exports ? e.exports = s : t.waterfall = s
+ }(Ge)
+}));
+
+function Kt(e, t, n, r) {
+ return {
+ type: e,
+ value: t,
+ lineno: n,
+ colno: r
+ }
+}
+var jt = function() {
+ function e(e, t) {
+ this.str = e, this.index = 0, this.len = e.length, this.lineno = 0, this.colno = 0, this.in_code = !1;
+ var n = (t = t || {}).tags || {};
+ this.tags = {
+ BLOCK_START: n.blockStart || "{%",
+ BLOCK_END: n.blockEnd || "%}",
+ VARIABLE_START: n.variableStart || "{{",
+ VARIABLE_END: n.variableEnd || "}}",
+ COMMENT_START: n.commentStart || "{#",
+ COMMENT_END: n.commentEnd || "#}"
+ }, this.trimBlocks = !!t.trimBlocks, this.lstripBlocks = !!t.lstripBlocks
+ }
+ var t = e.prototype;
+ return t.nextToken = function() {
+ var e, t = this.lineno,
+ n = this.colno;
+ if (this.in_code) {
+ var r = this.current();
+ if (this.isFinished()) return null;
+ if ('"' === r || "'" === r) return Kt("string", this._parseString(r), t, n);
+ if (e = this._extract(" \n\t\r ")) return Kt("whitespace", e, t, n);
+ if ((e = this._extractString(this.tags.BLOCK_END)) || (e = this._extractString("-" + this.tags.BLOCK_END))) return this.in_code = !1, this.trimBlocks && ("\n" === (r = this.current()) ? this.forward() : "\r" === r && (this.forward(), "\n" === (r = this.current()) ? this.forward() : this.back())), Kt("block-end", e, t, n);
+ if ((e = this._extractString(this.tags.VARIABLE_END)) || (e = this._extractString("-" + this.tags.VARIABLE_END))) return this.in_code = !1, Kt("variable-end", e, t, n);
+ if ("r" === r && "/" === this.str.charAt(this.index + 1)) {
+ this.forwardN(2);
+ for (var i = ""; !this.isFinished();) {
+ if ("/" === this.current() && "\\" !== this.previous()) {
+ this.forward();
+ break
+ }
+ i += this.current(), this.forward()
+ }
+ for (var s = ["g", "i", "m", "y"], a = ""; !this.isFinished();) {
+ if (!(-1 !== s.indexOf(this.current()))) break;
+ a += this.current(), this.forward()
+ }
+ return Kt("regex", {
+ body: i,
+ flags: a
+ }, t, n)
+ }
+ if (-1 !== "()[]{}%*-+~/#,:|.<>=!".indexOf(r)) {
+ this.forward();
+ var o, c = ["==", "===", "!=", "!==", "<=", ">=", "//", "**"],
+ l = r + this.current();
+ switch (-1 !== je.indexOf(c, l) && (this.forward(), r = l, -1 !== je.indexOf(c, l + this.current()) && (r = l + this.current(), this.forward())), r) {
+ case "(":
+ o = "left-paren";
+ break;
+ case ")":
+ o = "right-paren";
+ break;
+ case "[":
+ o = "left-bracket";
+ break;
+ case "]":
+ o = "right-bracket";
+ break;
+ case "{":
+ o = "left-curly";
+ break;
+ case "}":
+ o = "right-curly";
+ break;
+ case ",":
+ o = "comma";
+ break;
+ case ":":
+ o = "colon";
+ break;
+ case "~":
+ o = "tilde";
+ break;
+ case "|":
+ o = "pipe";
+ break;
+ default:
+ o = "operator"
+ }
+ return Kt(o, r, t, n)
+ }
+ if ((e = this._extractUntil(" \n\t\r ()[]{}%*-+~/#,:|.<>=!")).match(/^[-+]?[0-9]+$/)) return "." === this.current() ? (this.forward(), Kt("float", e + "." + this._extract("0123456789"), t, n)) : Kt("int", e, t, n);
+ if (e.match(/^(true|false)$/)) return Kt("boolean", e, t, n);
+ if ("none" === e) return Kt("none", e, t, n);
+ if ("null" === e) return Kt("none", e, t, n);
+ if (e) return Kt("symbol", e, t, n);
+ throw new Error("Unexpected value while parsing: " + e)
+ }
+ var h, u = this.tags.BLOCK_START.charAt(0) + this.tags.VARIABLE_START.charAt(0) + this.tags.COMMENT_START.charAt(0) + this.tags.COMMENT_END.charAt(0);
+ if (this.isFinished()) return null;
+ if ((e = this._extractString(this.tags.BLOCK_START + "-")) || (e = this._extractString(this.tags.BLOCK_START))) return this.in_code = !0, Kt("block-start", e, t, n);
+ if ((e = this._extractString(this.tags.VARIABLE_START + "-")) || (e = this._extractString(this.tags.VARIABLE_START))) return this.in_code = !0, Kt("variable-start", e, t, n);
+ e = "";
+ var p = !1;
+ for (this._matches(this.tags.COMMENT_START) && (p = !0, e = this._extractString(this.tags.COMMENT_START)); null !== (h = this._extractUntil(u));) {
+ if (e += h, (this._matches(this.tags.BLOCK_START) || this._matches(this.tags.VARIABLE_START) || this._matches(this.tags.COMMENT_START)) && !p) {
+ if (this.lstripBlocks && this._matches(this.tags.BLOCK_START) && this.colno > 0 && this.colno <= e.length) {
+ var f = e.slice(-this.colno);
+ if (/^\s+$/.test(f) && !(e = e.slice(0, -this.colno)).length) return this.nextToken()
+ }
+ break
+ }
+ if (this._matches(this.tags.COMMENT_END)) {
+ if (!p) throw new Error("unexpected end of comment");
+ e += this._extractString(this.tags.COMMENT_END);
+ break
+ }
+ e += this.current(), this.forward()
+ }
+ if (null === h && p) throw new Error("expected end of comment, got end of file");
+ return Kt(p ? "comment" : "data", e, t, n)
+ }, t._parseString = function(e) {
+ this.forward();
+ for (var t = ""; !this.isFinished() && this.current() !== e;) {
+ var n = this.current();
+ if ("\\" === n) {
+ switch (this.forward(), this.current()) {
+ case "n":
+ t += "\n";
+ break;
+ case "t":
+ t += "\t";
+ break;
+ case "r":
+ t += "\r";
+ break;
+ default:
+ t += this.current()
+ }
+ this.forward()
+ } else t += n, this.forward()
+ }
+ return this.forward(), t
+ }, t._matches = function(e) {
+ return this.index + e.length > this.len ? null : this.str.slice(this.index, this.index + e.length) === e
+ }, t._extractString = function(e) {
+ return this._matches(e) ? (this.forwardN(e.length), e) : null
+ }, t._extractUntil = function(e) {
+ return this._extractMatching(!0, e || "")
+ }, t._extract = function(e) {
+ return this._extractMatching(!1, e)
+ }, t._extractMatching = function(e, t) {
+ if (this.isFinished()) return null;
+ var n = t.indexOf(this.current());
+ if (e && -1 === n || !e && -1 !== n) {
+ var r = this.current();
+ this.forward();
+ for (var i = t.indexOf(this.current());
+ (e && -1 === i || !e && -1 !== i) && !this.isFinished();) r += this.current(), this.forward(), i = t.indexOf(this.current());
+ return r
+ }
+ return ""
+ }, t._extractRegex = function(e) {
+ var t = this.currentStr().match(e);
+ return t ? (this.forwardN(t[0].length), t) : null
+ }, t.isFinished = function() {
+ return this.index >= this.len
+ }, t.forwardN = function(e) {
+ for (var t = 0; t < e; t++) this.forward()
+ }, t.forward = function() {
+ this.index++, "\n" === this.previous() ? (this.lineno++, this.colno = 0) : this.colno++
+ }, t.backN = function(e) {
+ for (var t = 0; t < e; t++) this.back()
+ }, t.back = function() {
+ if (this.index--, "\n" === this.current()) {
+ this.lineno--;
+ var e = this.src.lastIndexOf("\n", this.index - 1);
+ this.colno = -1 === e ? this.index : this.index - e
+ } else this.colno--
+ }, t.current = function() {
+ return this.isFinished() ? "" : this.str.charAt(this.index)
+ }, t.currentStr = function() {
+ return this.isFinished() ? "" : this.str.substr(this.index)
+ }, t.previous = function() {
+ return this.str.charAt(this.index - 1)
+ }, e
+ }(),
+ Vt = {
+ lex: function(e, t) {
+ return new jt(e, t)
+ },
+ TOKEN_STRING: "string",
+ TOKEN_WHITESPACE: "whitespace",
+ TOKEN_DATA: "data",
+ TOKEN_BLOCK_START: "block-start",
+ TOKEN_BLOCK_END: "block-end",
+ TOKEN_VARIABLE_START: "variable-start",
+ TOKEN_VARIABLE_END: "variable-end",
+ TOKEN_COMMENT: "comment",
+ TOKEN_LEFT_PAREN: "left-paren",
+ TOKEN_RIGHT_PAREN: "right-paren",
+ TOKEN_LEFT_BRACKET: "left-bracket",
+ TOKEN_RIGHT_BRACKET: "right-bracket",
+ TOKEN_LEFT_CURLY: "left-curly",
+ TOKEN_RIGHT_CURLY: "right-curly",
+ TOKEN_OPERATOR: "operator",
+ TOKEN_COMMA: "comma",
+ TOKEN_COLON: "colon",
+ TOKEN_TILDE: "tilde",
+ TOKEN_PIPE: "pipe",
+ TOKEN_INT: "int",
+ TOKEN_FLOAT: "float",
+ TOKEN_BOOLEAN: "boolean",
+ TOKEN_NONE: "none",
+ TOKEN_SYMBOL: "symbol",
+ TOKEN_SPECIAL: "special",
+ TOKEN_REGEX: "regex"
+ };
+
+function Wt(e, t) {
+ for (var n = 0; n < t.length; n++) {
+ var r = t[n];
+ r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
+ }
+}
+
+function Qt(e, t, n) {
+ return t && Wt(e.prototype, t), n && Wt(e, n), e
+}
+
+function Xt(e, t) {
+ e.prototype = Object.create(t.prototype), e.prototype.constructor = e, $t(e, t)
+}
+
+function $t(e, t) {
+ return $t = Object.setPrototypeOf || function(e, t) {
+ return e.__proto__ = t, e
+ }, $t(e, t)
+}
+
+function zt(e, t, n) {
+ n = n || {}, je.keys(n).forEach((function(t) {
+ n[t] = function(e, t) {
+ return "function" != typeof e || "function" != typeof t ? t : function() {
+ var n = this.parent;
+ this.parent = e;
+ var r = t.apply(this, arguments);
+ return this.parent = n, r
+ }
+ }(e.prototype[t], n[t])
+ }));
+ var r = function(e) {
+ function n() {
+ return e.apply(this, arguments) || this
+ }
+ return Xt(n, e), Qt(n, [{
+ key: "typename",
+ get: function() {
+ return t
+ }
+ }]), n
+ }(e);
+ return je._assign(r.prototype, n), r
+}
+var Jt = function() {
+ function e() {
+ this.init.apply(this, arguments)
+ }
+ return e.prototype.init = function() {}, e.extend = function(e, t) {
+ return "object" == typeof e && (t = e, e = "anonymous"), zt(this, e, t)
+ }, Qt(e, [{
+ key: "typename",
+ get: function() {
+ return this.constructor.name
+ }
+ }]), e
+ }(),
+ Zt = function(e) {
+ function t() {
+ var t, n;
+ return (t = n = e.call(this) || this).init.apply(t, arguments), n
+ }
+ return Xt(t, e), t.prototype.init = function() {}, t.extend = function(e, t) {
+ return "object" == typeof e && (t = e, e = "anonymous"), zt(this, e, t)
+ }, Qt(t, [{
+ key: "typename",
+ get: function() {
+ return this.constructor.name
+ }
+ }]), t
+ }(Tt),
+ en = {
+ Obj: Jt,
+ EmitterObj: Zt
+ };
+
+function tn(e, t) {
+ for (var n = 0; n < t.length; n++) {
+ var r = t[n];
+ r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
+ }
+}
+
+function nn(e, t, n) {
+ return t && tn(e.prototype, t), n && tn(e, n), e
+}
+
+function rn(e, t) {
+ e.prototype = Object.create(t.prototype), e.prototype.constructor = e, sn(e, t)
+}
+
+function sn(e, t) {
+ return sn = Object.setPrototypeOf || function(e, t) {
+ return e.__proto__ = t, e
+ }, sn(e, t)
+}
+
+function an(e, t, n) {
+ e instanceof t && n.push(e), e instanceof on && e.findAll(t, n)
+}
+var on = function(e) {
+ function t() {
+ return e.apply(this, arguments) || this
+ }
+ rn(t, e);
+ var n = t.prototype;
+ return n.init = function(e, t) {
+ for (var n = arguments, r = this, i = arguments.length, s = new Array(i > 2 ? i - 2 : 0), a = 2; a < i; a++) s[a - 2] = arguments[a];
+ this.lineno = e, this.colno = t, this.fields.forEach((function(e, t) {
+ var i = n[t + 2];
+ void 0 === i && (i = null), r[e] = i
+ }))
+ }, n.findAll = function(e, t) {
+ var n = this;
+ return t = t || [], this instanceof ln ? this.children.forEach((function(n) {
+ return an(n, e, t)
+ })) : this.fields.forEach((function(r) {
+ return an(n[r], e, t)
+ })), t
+ }, n.iterFields = function(e) {
+ var t = this;
+ this.fields.forEach((function(n) {
+ e(t[n], n)
+ }))
+ }, t
+ }(en.Obj),
+ cn = function(e) {
+ function t() {
+ return e.apply(this, arguments) || this
+ }
+ return rn(t, e), nn(t, [{
+ key: "typename",
+ get: function() {
+ return "Value"
+ }
+ }, {
+ key: "fields",
+ get: function() {
+ return ["value"]
+ }
+ }]), t
+ }(on),
+ ln = function(e) {
+ function t() {
+ return e.apply(this, arguments) || this
+ }
+ rn(t, e);
+ var n = t.prototype;
+ return n.init = function(t, n, r) {
+ e.prototype.init.call(this, t, n, r || [])
+ }, n.addChild = function(e) {
+ this.children.push(e)
+ }, nn(t, [{
+ key: "typename",
+ get: function() {
+ return "NodeList"
+ }
+ }, {
+ key: "fields",
+ get: function() {
+ return ["children"]
+ }
+ }]), t
+ }(on),
+ hn = ln.extend("Root"),
+ un = cn.extend("Literal"),
+ pn = cn.extend("Symbol"),
+ fn = ln.extend("Group"),
+ dn = ln.extend("Array"),
+ En = on.extend("Pair", {
+ fields: ["key", "value"]
+ }),
+ mn = ln.extend("Dict"),
+ Tn = on.extend("LookupVal", {
+ fields: ["target", "val"]
+ }),
+ _n = on.extend("If", {
+ fields: ["cond", "body", "else_"]
+ }),
+ An = _n.extend("IfAsync"),
+ gn = on.extend("InlineIf", {
+ fields: ["cond", "body", "else_"]
+ }),
+ Nn = on.extend("For", {
+ fields: ["arr", "name", "body", "else_"]
+ }),
+ Cn = Nn.extend("AsyncEach"),
+ In = Nn.extend("AsyncAll"),
+ Sn = on.extend("Macro", {
+ fields: ["name", "args", "body"]
+ }),
+ bn = Sn.extend("Caller"),
+ On = on.extend("Import", {
+ fields: ["template", "target", "withContext"]
+ }),
+ yn = function(e) {
+ function t() {
+ return e.apply(this, arguments) || this
+ }
+ return rn(t, e), t.prototype.init = function(t, n, r, i, s) {
+ e.prototype.init.call(this, t, n, r, i || new ln, s)
+ }, nn(t, [{
+ key: "typename",
+ get: function() {
+ return "FromImport"
+ }
+ }, {
+ key: "fields",
+ get: function() {
+ return ["template", "names", "withContext"]
+ }
+ }]), t
+ }(on),
+ Ln = on.extend("FunCall", {
+ fields: ["name", "args"]
+ }),
+ kn = Ln.extend("Filter"),
+ vn = kn.extend("FilterAsync", {
+ fields: ["name", "args", "symbol"]
+ }),
+ Dn = mn.extend("KeywordArgs"),
+ Rn = on.extend("Block", {
+ fields: ["name", "body"]
+ }),
+ Mn = on.extend("Super", {
+ fields: ["blockName", "symbol"]
+ }),
+ Pn = on.extend("TemplateRef", {
+ fields: ["template"]
+ }).extend("Extends"),
+ xn = on.extend("Include", {
+ fields: ["template", "ignoreMissing"]
+ }),
+ wn = on.extend("Set", {
+ fields: ["targets", "value"]
+ }),
+ Bn = on.extend("Switch", {
+ fields: ["expr", "cases", "default"]
+ }),
+ Fn = on.extend("Case", {
+ fields: ["cond", "body"]
+ }),
+ Un = ln.extend("Output"),
+ Hn = on.extend("Capture", {
+ fields: ["body"]
+ }),
+ Gn = un.extend("TemplateData"),
+ Yn = on.extend("UnaryOp", {
+ fields: ["target"]
+ }),
+ qn = on.extend("BinOp", {
+ fields: ["left", "right"]
+ }),
+ Kn = qn.extend("In"),
+ jn = qn.extend("Is"),
+ Vn = qn.extend("Or"),
+ Wn = qn.extend("And"),
+ Qn = Yn.extend("Not"),
+ Xn = qn.extend("Add"),
+ $n = qn.extend("Concat"),
+ zn = qn.extend("Sub"),
+ Jn = qn.extend("Mul"),
+ Zn = qn.extend("Div"),
+ er = qn.extend("FloorDiv"),
+ tr = qn.extend("Mod"),
+ nr = qn.extend("Pow"),
+ rr = Yn.extend("Neg"),
+ ir = Yn.extend("Pos"),
+ sr = on.extend("Compare", {
+ fields: ["expr", "ops"]
+ }),
+ ar = on.extend("CompareOperand", {
+ fields: ["expr", "type"]
+ }),
+ or = on.extend("CallExtension", {
+ init: function(e, t, n, r) {
+ this.parent(), this.extName = e.__name || e, this.prop = t, this.args = n || new ln, this.contentArgs = r || [], this.autoescape = e.autoescape
+ },
+ fields: ["extName", "prop", "args", "contentArgs"]
+ }),
+ cr = or.extend("CallExtensionAsync");
+
+function lr(e, t, n) {
+ var r = e.split("\n");
+ r.forEach((function(e, i) {
+ e && (n && i > 0 || !n) && Et.stdout.write(" ".repeat(t));
+ var s = i === r.length - 1 ? "" : "\n";
+ Et.stdout.write("" + e + s)
+ }))
+}
+var hr = {
+ Node: on,
+ Root: hn,
+ NodeList: ln,
+ Value: cn,
+ Literal: un,
+ Symbol: pn,
+ Group: fn,
+ Array: dn,
+ Pair: En,
+ Dict: mn,
+ Output: Un,
+ Capture: Hn,
+ TemplateData: Gn,
+ If: _n,
+ IfAsync: An,
+ InlineIf: gn,
+ For: Nn,
+ AsyncEach: Cn,
+ AsyncAll: In,
+ Macro: Sn,
+ Caller: bn,
+ Import: On,
+ FromImport: yn,
+ FunCall: Ln,
+ Filter: kn,
+ FilterAsync: vn,
+ KeywordArgs: Dn,
+ Block: Rn,
+ Super: Mn,
+ Extends: Pn,
+ Include: xn,
+ Set: wn,
+ Switch: Bn,
+ Case: Fn,
+ LookupVal: Tn,
+ BinOp: qn,
+ In: Kn,
+ Is: jn,
+ Or: Vn,
+ And: Wn,
+ Not: Qn,
+ Add: Xn,
+ Concat: $n,
+ Sub: zn,
+ Mul: Jn,
+ Div: Zn,
+ FloorDiv: er,
+ Mod: tr,
+ Pow: nr,
+ Neg: rr,
+ Pos: ir,
+ Compare: sr,
+ CompareOperand: ar,
+ CallExtension: or,
+ CallExtensionAsync: cr,
+ printNodes: function e(t, n) {
+ if (n = n || 0, lr(t.typename + ": ", n), t instanceof ln) lr("\n"), t.children.forEach((function(t) {
+ e(t, n + 2)
+ }));
+ else if (t instanceof or) lr(t.extName + "." + t.prop + "\n"), t.args && e(t.args, n + 2), t.contentArgs && t.contentArgs.forEach((function(t) {
+ e(t, n + 2)
+ }));
+ else {
+ var r = [],
+ i = null;
+ t.iterFields((function(e, t) {
+ e instanceof on ? r.push([t, e]) : (i = i || {})[t] = e
+ })), i ? lr(JSON.stringify(i, null, 2) + "\n", null, !0) : lr("\n"), r.forEach((function(t) {
+ var r = t[0],
+ i = t[1];
+ lr("[" + r + "] =>", n + 2), e(i, n + 4)
+ }))
+ }
+ }
+};
+
+function ur(e, t) {
+ return ur = Object.setPrototypeOf || function(e, t) {
+ return e.__proto__ = t, e
+ }, ur(e, t)
+}
+hr.Node, hr.Root, hr.NodeList, hr.Value, hr.Literal, hr.Group, hr.Pair, hr.Dict, hr.Output, hr.Capture, hr.TemplateData, hr.If, hr.IfAsync, hr.InlineIf, hr.For, hr.AsyncEach, hr.AsyncAll, hr.Macro, hr.Caller, hr.Import, hr.FromImport, hr.FunCall, hr.Filter, hr.FilterAsync, hr.KeywordArgs, hr.Block, hr.Super, hr.Extends, hr.Include, hr.Switch, hr.Case, hr.LookupVal, hr.BinOp, hr.In, hr.Is, hr.Or, hr.And, hr.Not, hr.Add, hr.Concat, hr.Sub, hr.Mul, hr.Div, hr.FloorDiv, hr.Mod, hr.Pow, hr.Neg, hr.Pos, hr.Compare, hr.CompareOperand, hr.CallExtension, hr.CallExtensionAsync, hr.printNodes;
+var pr = function(e) {
+ var t, n;
+
+ function r() {
+ return e.apply(this, arguments) || this
+ }
+ n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, ur(t, n);
+ var i = r.prototype;
+ return i.init = function(e) {
+ this.tokens = e, this.peeked = null, this.breakOnBlocks = null, this.dropLeadingWhitespace = !1, this.extensions = []
+ }, i.nextToken = function(e) {
+ var t;
+ if (this.peeked) {
+ if (e || this.peeked.type !== Vt.TOKEN_WHITESPACE) return t = this.peeked, this.peeked = null, t;
+ this.peeked = null
+ }
+ if (t = this.tokens.nextToken(), !e)
+ for (; t && t.type === Vt.TOKEN_WHITESPACE;) t = this.tokens.nextToken();
+ return t
+ }, i.peekToken = function() {
+ return this.peeked = this.peeked || this.nextToken(), this.peeked
+ }, i.pushToken = function(e) {
+ if (this.peeked) throw new Error("pushToken: can only push one token on between reads");
+ this.peeked = e
+ }, i.error = function(e, t, n) {
+ if (void 0 === t || void 0 === n) {
+ var r = this.peekToken() || {};
+ t = r.lineno, n = r.colno
+ }
+ return void 0 !== t && (t += 1), void 0 !== n && (n += 1), new je.TemplateError(e, t, n)
+ }, i.fail = function(e, t, n) {
+ throw this.error(e, t, n)
+ }, i.skip = function(e) {
+ var t = this.nextToken();
+ return !(!t || t.type !== e) || (this.pushToken(t), !1)
+ }, i.expect = function(e) {
+ var t = this.nextToken();
+ return t.type !== e && this.fail("expected " + e + ", got " + t.type, t.lineno, t.colno), t
+ }, i.skipValue = function(e, t) {
+ var n = this.nextToken();
+ return !(!n || n.type !== e || n.value !== t) || (this.pushToken(n), !1)
+ }, i.skipSymbol = function(e) {
+ return this.skipValue(Vt.TOKEN_SYMBOL, e)
+ }, i.advanceAfterBlockEnd = function(e) {
+ var t;
+ return e || ((t = this.peekToken()) || this.fail("unexpected end of file"), t.type !== Vt.TOKEN_SYMBOL && this.fail("advanceAfterBlockEnd: expected symbol token or explicit name to be passed"), e = this.nextToken().value), (t = this.nextToken()) && t.type === Vt.TOKEN_BLOCK_END ? "-" === t.value.charAt(0) && (this.dropLeadingWhitespace = !0) : this.fail("expected block end in " + e + " statement"), t
+ }, i.advanceAfterVariableEnd = function() {
+ var e = this.nextToken();
+ e && e.type === Vt.TOKEN_VARIABLE_END ? this.dropLeadingWhitespace = "-" === e.value.charAt(e.value.length - this.tokens.tags.VARIABLE_END.length - 1) : (this.pushToken(e), this.fail("expected variable end"))
+ }, i.parseFor = function() {
+ var e, t, n = this.peekToken();
+ if (this.skipSymbol("for") ? (e = new hr.For(n.lineno, n.colno), t = "endfor") : this.skipSymbol("asyncEach") ? (e = new hr.AsyncEach(n.lineno, n.colno), t = "endeach") : this.skipSymbol("asyncAll") ? (e = new hr.AsyncAll(n.lineno, n.colno), t = "endall") : this.fail("parseFor: expected for{Async}", n.lineno, n.colno), e.name = this.parsePrimary(), e.name instanceof hr.Symbol || this.fail("parseFor: variable name expected for loop"), this.peekToken().type === Vt.TOKEN_COMMA) {
+ var r = e.name;
+ for (e.name = new hr.Array(r.lineno, r.colno), e.name.addChild(r); this.skip(Vt.TOKEN_COMMA);) {
+ var i = this.parsePrimary();
+ e.name.addChild(i)
+ }
+ }
+ return this.skipSymbol("in") || this.fail('parseFor: expected "in" keyword for loop', n.lineno, n.colno), e.arr = this.parseExpression(), this.advanceAfterBlockEnd(n.value), e.body = this.parseUntilBlocks(t, "else"), this.skipSymbol("else") && (this.advanceAfterBlockEnd("else"), e.else_ = this.parseUntilBlocks(t)), this.advanceAfterBlockEnd(), e
+ }, i.parseMacro = function() {
+ var e = this.peekToken();
+ this.skipSymbol("macro") || this.fail("expected macro");
+ var t = this.parsePrimary(!0),
+ n = this.parseSignature(),
+ r = new hr.Macro(e.lineno, e.colno, t, n);
+ return this.advanceAfterBlockEnd(e.value), r.body = this.parseUntilBlocks("endmacro"), this.advanceAfterBlockEnd(), r
+ }, i.parseCall = function() {
+ var e = this.peekToken();
+ this.skipSymbol("call") || this.fail("expected call");
+ var t = this.parseSignature(!0) || new hr.NodeList,
+ n = this.parsePrimary();
+ this.advanceAfterBlockEnd(e.value);
+ var r = this.parseUntilBlocks("endcall");
+ this.advanceAfterBlockEnd();
+ var i = new hr.Symbol(e.lineno, e.colno, "caller"),
+ s = new hr.Caller(e.lineno, e.colno, i, t, r),
+ a = n.args.children;
+ return a[a.length - 1] instanceof hr.KeywordArgs || a.push(new hr.KeywordArgs), a[a.length - 1].addChild(new hr.Pair(e.lineno, e.colno, i, s)), new hr.Output(e.lineno, e.colno, [n])
+ }, i.parseWithContext = function() {
+ var e = this.peekToken(),
+ t = null;
+ return this.skipSymbol("with") ? t = !0 : this.skipSymbol("without") && (t = !1), null !== t && (this.skipSymbol("context") || this.fail("parseFrom: expected context after with/without", e.lineno, e.colno)), t
+ }, i.parseImport = function() {
+ var e = this.peekToken();
+ this.skipSymbol("import") || this.fail("parseImport: expected import", e.lineno, e.colno);
+ var t = this.parseExpression();
+ this.skipSymbol("as") || this.fail('parseImport: expected "as" keyword', e.lineno, e.colno);
+ var n = this.parseExpression(),
+ r = this.parseWithContext(),
+ i = new hr.Import(e.lineno, e.colno, t, n, r);
+ return this.advanceAfterBlockEnd(e.value), i
+ }, i.parseFrom = function() {
+ var e = this.peekToken();
+ this.skipSymbol("from") || this.fail("parseFrom: expected from");
+ var t = this.parseExpression();
+ this.skipSymbol("import") || this.fail("parseFrom: expected import", e.lineno, e.colno);
+ for (var n, r = new hr.NodeList;;) {
+ var i = this.peekToken();
+ if (i.type === Vt.TOKEN_BLOCK_END) {
+ r.children.length || this.fail("parseFrom: Expected at least one import name", e.lineno, e.colno), "-" === i.value.charAt(0) && (this.dropLeadingWhitespace = !0), this.nextToken();
+ break
+ }
+ r.children.length > 0 && !this.skip(Vt.TOKEN_COMMA) && this.fail("parseFrom: expected comma", e.lineno, e.colno);
+ var s = this.parsePrimary();
+ if ("_" === s.value.charAt(0) && this.fail("parseFrom: names starting with an underscore cannot be imported", s.lineno, s.colno), this.skipSymbol("as")) {
+ var a = this.parsePrimary();
+ r.addChild(new hr.Pair(s.lineno, s.colno, s, a))
+ } else r.addChild(s);
+ n = this.parseWithContext()
+ }
+ return new hr.FromImport(e.lineno, e.colno, t, r, n)
+ }, i.parseBlock = function() {
+ var e = this.peekToken();
+ this.skipSymbol("block") || this.fail("parseBlock: expected block", e.lineno, e.colno);
+ var t = new hr.Block(e.lineno, e.colno);
+ t.name = this.parsePrimary(), t.name instanceof hr.Symbol || this.fail("parseBlock: variable name expected", e.lineno, e.colno), this.advanceAfterBlockEnd(e.value), t.body = this.parseUntilBlocks("endblock"), this.skipSymbol("endblock"), this.skipSymbol(t.name.value);
+ var n = this.peekToken();
+ return n || this.fail("parseBlock: expected endblock, got end of file"), this.advanceAfterBlockEnd(n.value), t
+ }, i.parseExtends = function() {
+ var e = "extends",
+ t = this.peekToken();
+ this.skipSymbol(e) || this.fail("parseTemplateRef: expected extends");
+ var n = new hr.Extends(t.lineno, t.colno);
+ return n.template = this.parseExpression(), this.advanceAfterBlockEnd(t.value), n
+ }, i.parseInclude = function() {
+ var e = "include",
+ t = this.peekToken();
+ this.skipSymbol(e) || this.fail("parseInclude: expected include");
+ var n = new hr.Include(t.lineno, t.colno);
+ return n.template = this.parseExpression(), this.skipSymbol("ignore") && this.skipSymbol("missing") && (n.ignoreMissing = !0), this.advanceAfterBlockEnd(t.value), n
+ }, i.parseIf = function() {
+ var e, t = this.peekToken();
+ this.skipSymbol("if") || this.skipSymbol("elif") || this.skipSymbol("elseif") ? e = new hr.If(t.lineno, t.colno) : this.skipSymbol("ifAsync") ? e = new hr.IfAsync(t.lineno, t.colno) : this.fail("parseIf: expected if, elif, or elseif", t.lineno, t.colno), e.cond = this.parseExpression(), this.advanceAfterBlockEnd(t.value), e.body = this.parseUntilBlocks("elif", "elseif", "else", "endif");
+ var n = this.peekToken();
+ switch (n && n.value) {
+ case "elseif":
+ case "elif":
+ e.else_ = this.parseIf();
+ break;
+ case "else":
+ this.advanceAfterBlockEnd(), e.else_ = this.parseUntilBlocks("endif"), this.advanceAfterBlockEnd();
+ break;
+ case "endif":
+ e.else_ = null, this.advanceAfterBlockEnd();
+ break;
+ default:
+ this.fail("parseIf: expected elif, else, or endif, got end of file")
+ }
+ return e
+ }, i.parseSet = function() {
+ var e = this.peekToken();
+ this.skipSymbol("set") || this.fail("parseSet: expected set", e.lineno, e.colno);
+ for (var t, n = new hr.Set(e.lineno, e.colno, []);
+ (t = this.parsePrimary()) && (n.targets.push(t), this.skip(Vt.TOKEN_COMMA)););
+ return this.skipValue(Vt.TOKEN_OPERATOR, "=") ? (n.value = this.parseExpression(), this.advanceAfterBlockEnd(e.value)) : this.skip(Vt.TOKEN_BLOCK_END) ? (n.body = new hr.Capture(e.lineno, e.colno, this.parseUntilBlocks("endset")), n.value = null, this.advanceAfterBlockEnd()) : this.fail("parseSet: expected = or block end in set tag", e.lineno, e.colno), n
+ }, i.parseSwitch = function() {
+ var e = "switch",
+ t = "endswitch",
+ n = "case",
+ r = "default",
+ i = this.peekToken();
+ this.skipSymbol(e) || this.skipSymbol(n) || this.skipSymbol(r) || this.fail('parseSwitch: expected "switch," "case" or "default"', i.lineno, i.colno);
+ var s = this.parseExpression();
+ this.advanceAfterBlockEnd(e), this.parseUntilBlocks(n, r, t);
+ var a, o = this.peekToken(),
+ c = [];
+ do {
+ this.skipSymbol(n);
+ var l = this.parseExpression();
+ this.advanceAfterBlockEnd(e);
+ var h = this.parseUntilBlocks(n, r, t);
+ c.push(new hr.Case(o.line, o.col, l, h)), o = this.peekToken()
+ } while (o && o.value === n);
+ switch (o.value) {
+ case r:
+ this.advanceAfterBlockEnd(), a = this.parseUntilBlocks(t), this.advanceAfterBlockEnd();
+ break;
+ case t:
+ this.advanceAfterBlockEnd();
+ break;
+ default:
+ this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.')
+ }
+ return new hr.Switch(i.lineno, i.colno, s, c, a)
+ }, i.parseStatement = function() {
+ var e = this.peekToken();
+ if (e.type !== Vt.TOKEN_SYMBOL && this.fail("tag name expected", e.lineno, e.colno), this.breakOnBlocks && -1 !== je.indexOf(this.breakOnBlocks, e.value)) return null;
+ switch (e.value) {
+ case "raw":
+ return this.parseRaw();
+ case "verbatim":
+ return this.parseRaw("verbatim");
+ case "if":
+ case "ifAsync":
+ return this.parseIf();
+ case "for":
+ case "asyncEach":
+ case "asyncAll":
+ return this.parseFor();
+ case "block":
+ return this.parseBlock();
+ case "extends":
+ return this.parseExtends();
+ case "include":
+ return this.parseInclude();
+ case "set":
+ return this.parseSet();
+ case "macro":
+ return this.parseMacro();
+ case "call":
+ return this.parseCall();
+ case "import":
+ return this.parseImport();
+ case "from":
+ return this.parseFrom();
+ case "filter":
+ return this.parseFilterStatement();
+ case "switch":
+ return this.parseSwitch();
+ default:
+ if (this.extensions.length)
+ for (var t = 0; t < this.extensions.length; t++) {
+ var n = this.extensions[t];
+ if (-1 !== je.indexOf(n.tags || [], e.value)) return n.parse(this, hr, Vt)
+ }
+ this.fail("unknown block tag: " + e.value, e.lineno, e.colno)
+ }
+ }, i.parseRaw = function(e) {
+ for (var t = "end" + (e = e || "raw"), n = new RegExp("([\\s\\S]*?){%\\s*(" + e + "|" + t + ")\\s*(?=%})%}"), r = 1, i = "", s = null, a = this.advanceAfterBlockEnd();
+ (s = this.tokens._extractRegex(n)) && r > 0;) {
+ var o = s[0],
+ c = s[1],
+ l = s[2];
+ l === e ? r += 1 : l === t && (r -= 1), 0 === r ? (i += c, this.tokens.backN(o.length - c.length)) : i += o
+ }
+ return new hr.Output(a.lineno, a.colno, [new hr.TemplateData(a.lineno, a.colno, i)])
+ }, i.parsePostfix = function(e) {
+ for (var t, n = this.peekToken(); n;) {
+ if (n.type === Vt.TOKEN_LEFT_PAREN) e = new hr.FunCall(n.lineno, n.colno, e, this.parseSignature());
+ else if (n.type === Vt.TOKEN_LEFT_BRACKET)(t = this.parseAggregate()).children.length > 1 && this.fail("invalid index"), e = new hr.LookupVal(n.lineno, n.colno, e, t.children[0]);
+ else {
+ if (n.type !== Vt.TOKEN_OPERATOR || "." !== n.value) break;
+ this.nextToken();
+ var r = this.nextToken();
+ r.type !== Vt.TOKEN_SYMBOL && this.fail("expected name as lookup value, got " + r.value, r.lineno, r.colno), t = new hr.Literal(r.lineno, r.colno, r.value), e = new hr.LookupVal(n.lineno, n.colno, e, t)
+ }
+ n = this.peekToken()
+ }
+ return e
+ }, i.parseExpression = function() {
+ return this.parseInlineIf()
+ }, i.parseInlineIf = function() {
+ var e = this.parseOr();
+ if (this.skipSymbol("if")) {
+ var t = this.parseOr(),
+ n = e;
+ (e = new hr.InlineIf(e.lineno, e.colno)).body = n, e.cond = t, this.skipSymbol("else") ? e.else_ = this.parseOr() : e.else_ = null
+ }
+ return e
+ }, i.parseOr = function() {
+ for (var e = this.parseAnd(); this.skipSymbol("or");) {
+ var t = this.parseAnd();
+ e = new hr.Or(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseAnd = function() {
+ for (var e = this.parseNot(); this.skipSymbol("and");) {
+ var t = this.parseNot();
+ e = new hr.And(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseNot = function() {
+ var e = this.peekToken();
+ return this.skipSymbol("not") ? new hr.Not(e.lineno, e.colno, this.parseNot()) : this.parseIn()
+ }, i.parseIn = function() {
+ for (var e = this.parseIs();;) {
+ var t = this.nextToken();
+ if (!t) break;
+ var n = t.type === Vt.TOKEN_SYMBOL && "not" === t.value;
+ if (n || this.pushToken(t), !this.skipSymbol("in")) {
+ n && this.pushToken(t);
+ break
+ }
+ var r = this.parseIs();
+ e = new hr.In(e.lineno, e.colno, e, r), n && (e = new hr.Not(e.lineno, e.colno, e))
+ }
+ return e
+ }, i.parseIs = function() {
+ var e = this.parseCompare();
+ if (this.skipSymbol("is")) {
+ var t = this.skipSymbol("not"),
+ n = this.parseCompare();
+ e = new hr.Is(e.lineno, e.colno, e, n), t && (e = new hr.Not(e.lineno, e.colno, e))
+ }
+ return e
+ }, i.parseCompare = function() {
+ for (var e = ["==", "===", "!=", "!==", "<", ">", "<=", ">="], t = this.parseConcat(), n = [];;) {
+ var r = this.nextToken();
+ if (!r) break;
+ if (-1 === e.indexOf(r.value)) {
+ this.pushToken(r);
+ break
+ }
+ n.push(new hr.CompareOperand(r.lineno, r.colno, this.parseConcat(), r.value))
+ }
+ return n.length ? new hr.Compare(n[0].lineno, n[0].colno, t, n) : t
+ }, i.parseConcat = function() {
+ for (var e = this.parseAdd(); this.skipValue(Vt.TOKEN_TILDE, "~");) {
+ var t = this.parseAdd();
+ e = new hr.Concat(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseAdd = function() {
+ for (var e = this.parseSub(); this.skipValue(Vt.TOKEN_OPERATOR, "+");) {
+ var t = this.parseSub();
+ e = new hr.Add(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseSub = function() {
+ for (var e = this.parseMul(); this.skipValue(Vt.TOKEN_OPERATOR, "-");) {
+ var t = this.parseMul();
+ e = new hr.Sub(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseMul = function() {
+ for (var e = this.parseDiv(); this.skipValue(Vt.TOKEN_OPERATOR, "*");) {
+ var t = this.parseDiv();
+ e = new hr.Mul(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseDiv = function() {
+ for (var e = this.parseFloorDiv(); this.skipValue(Vt.TOKEN_OPERATOR, "/");) {
+ var t = this.parseFloorDiv();
+ e = new hr.Div(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseFloorDiv = function() {
+ for (var e = this.parseMod(); this.skipValue(Vt.TOKEN_OPERATOR, "//");) {
+ var t = this.parseMod();
+ e = new hr.FloorDiv(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseMod = function() {
+ for (var e = this.parsePow(); this.skipValue(Vt.TOKEN_OPERATOR, "%");) {
+ var t = this.parsePow();
+ e = new hr.Mod(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parsePow = function() {
+ for (var e = this.parseUnary(); this.skipValue(Vt.TOKEN_OPERATOR, "**");) {
+ var t = this.parseUnary();
+ e = new hr.Pow(e.lineno, e.colno, e, t)
+ }
+ return e
+ }, i.parseUnary = function(e) {
+ var t, n = this.peekToken();
+ return t = this.skipValue(Vt.TOKEN_OPERATOR, "-") ? new hr.Neg(n.lineno, n.colno, this.parseUnary(!0)) : this.skipValue(Vt.TOKEN_OPERATOR, "+") ? new hr.Pos(n.lineno, n.colno, this.parseUnary(!0)) : this.parsePrimary(), e || (t = this.parseFilter(t)), t
+ }, i.parsePrimary = function(e) {
+ var t, n = this.nextToken(),
+ r = null;
+ if (n ? n.type === Vt.TOKEN_STRING ? t = n.value : n.type === Vt.TOKEN_INT ? t = parseInt(n.value, 10) : n.type === Vt.TOKEN_FLOAT ? t = parseFloat(n.value) : n.type === Vt.TOKEN_BOOLEAN ? "true" === n.value ? t = !0 : "false" === n.value ? t = !1 : this.fail("invalid boolean: " + n.value, n.lineno, n.colno) : n.type === Vt.TOKEN_NONE ? t = null : n.type === Vt.TOKEN_REGEX && (t = new RegExp(n.value.body, n.value.flags)) : this.fail("expected expression, got end of file"), void 0 !== t ? r = new hr.Literal(n.lineno, n.colno, t) : n.type === Vt.TOKEN_SYMBOL ? r = new hr.Symbol(n.lineno, n.colno, n.value) : (this.pushToken(n), r = this.parseAggregate()), e || (r = this.parsePostfix(r)), r) return r;
+ throw this.error("unexpected token: " + n.value, n.lineno, n.colno)
+ }, i.parseFilterName = function() {
+ for (var e = this.expect(Vt.TOKEN_SYMBOL), t = e.value; this.skipValue(Vt.TOKEN_OPERATOR, ".");) t += "." + this.expect(Vt.TOKEN_SYMBOL).value;
+ return new hr.Symbol(e.lineno, e.colno, t)
+ }, i.parseFilterArgs = function(e) {
+ return this.peekToken().type === Vt.TOKEN_LEFT_PAREN ? this.parsePostfix(e).args.children : []
+ }, i.parseFilter = function(e) {
+ for (; this.skip(Vt.TOKEN_PIPE);) {
+ var t = this.parseFilterName();
+ e = new hr.Filter(t.lineno, t.colno, t, new hr.NodeList(t.lineno, t.colno, [e].concat(this.parseFilterArgs(e))))
+ }
+ return e
+ }, i.parseFilterStatement = function() {
+ var e = this.peekToken();
+ this.skipSymbol("filter") || this.fail("parseFilterStatement: expected filter");
+ var t = this.parseFilterName(),
+ n = this.parseFilterArgs(t);
+ this.advanceAfterBlockEnd(e.value);
+ var r = new hr.Capture(t.lineno, t.colno, this.parseUntilBlocks("endfilter"));
+ this.advanceAfterBlockEnd();
+ var i = new hr.Filter(t.lineno, t.colno, t, new hr.NodeList(t.lineno, t.colno, [r].concat(n)));
+ return new hr.Output(t.lineno, t.colno, [i])
+ }, i.parseAggregate = function() {
+ var e, t = this.nextToken();
+ switch (t.type) {
+ case Vt.TOKEN_LEFT_PAREN:
+ e = new hr.Group(t.lineno, t.colno);
+ break;
+ case Vt.TOKEN_LEFT_BRACKET:
+ e = new hr.Array(t.lineno, t.colno);
+ break;
+ case Vt.TOKEN_LEFT_CURLY:
+ e = new hr.Dict(t.lineno, t.colno);
+ break;
+ default:
+ return null
+ }
+ for (;;) {
+ var n = this.peekToken().type;
+ if (n === Vt.TOKEN_RIGHT_PAREN || n === Vt.TOKEN_RIGHT_BRACKET || n === Vt.TOKEN_RIGHT_CURLY) {
+ this.nextToken();
+ break
+ }
+ if (e.children.length > 0 && (this.skip(Vt.TOKEN_COMMA) || this.fail("parseAggregate: expected comma after expression", t.lineno, t.colno)), e instanceof hr.Dict) {
+ var r = this.parsePrimary();
+ this.skip(Vt.TOKEN_COLON) || this.fail("parseAggregate: expected colon after dict key", t.lineno, t.colno);
+ var i = this.parseExpression();
+ e.addChild(new hr.Pair(r.lineno, r.colno, r, i))
+ } else {
+ var s = this.parseExpression();
+ e.addChild(s)
+ }
+ }
+ return e
+ }, i.parseSignature = function(e, t) {
+ var n = this.peekToken();
+ if (!t && n.type !== Vt.TOKEN_LEFT_PAREN) {
+ if (e) return null;
+ this.fail("expected arguments", n.lineno, n.colno)
+ }
+ n.type === Vt.TOKEN_LEFT_PAREN && (n = this.nextToken());
+ for (var r = new hr.NodeList(n.lineno, n.colno), i = new hr.KeywordArgs(n.lineno, n.colno), s = !1;;) {
+ if (n = this.peekToken(), !t && n.type === Vt.TOKEN_RIGHT_PAREN) {
+ this.nextToken();
+ break
+ }
+ if (t && n.type === Vt.TOKEN_BLOCK_END) break;
+ if (s && !this.skip(Vt.TOKEN_COMMA)) this.fail("parseSignature: expected comma after expression", n.lineno, n.colno);
+ else {
+ var a = this.parseExpression();
+ this.skipValue(Vt.TOKEN_OPERATOR, "=") ? i.addChild(new hr.Pair(a.lineno, a.colno, a, this.parseExpression())) : r.addChild(a)
+ }
+ s = !0
+ }
+ return i.children.length && r.addChild(i), r
+ }, i.parseUntilBlocks = function() {
+ for (var e = this.breakOnBlocks, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r];
+ this.breakOnBlocks = n;
+ var i = this.parse();
+ return this.breakOnBlocks = e, i
+ }, i.parseNodes = function() {
+ for (var e, t = []; e = this.nextToken();)
+ if (e.type === Vt.TOKEN_DATA) {
+ var n = e.value,
+ r = this.peekToken(),
+ i = r && r.value;
+ this.dropLeadingWhitespace && (n = n.replace(/^\s*/, ""), this.dropLeadingWhitespace = !1), r && (r.type === Vt.TOKEN_BLOCK_START && "-" === i.charAt(i.length - 1) || r.type === Vt.TOKEN_VARIABLE_START && "-" === i.charAt(this.tokens.tags.VARIABLE_START.length) || r.type === Vt.TOKEN_COMMENT && "-" === i.charAt(this.tokens.tags.COMMENT_START.length)) && (n = n.replace(/\s*$/, "")), t.push(new hr.Output(e.lineno, e.colno, [new hr.TemplateData(e.lineno, e.colno, n)]))
+ } else if (e.type === Vt.TOKEN_BLOCK_START) {
+ this.dropLeadingWhitespace = !1;
+ var s = this.parseStatement();
+ if (!s) break;
+ t.push(s)
+ } else if (e.type === Vt.TOKEN_VARIABLE_START) {
+ var a = this.parseExpression();
+ this.dropLeadingWhitespace = !1, this.advanceAfterVariableEnd(), t.push(new hr.Output(e.lineno, e.colno, [a]))
+ } else e.type === Vt.TOKEN_COMMENT ? this.dropLeadingWhitespace = "-" === e.value.charAt(e.value.length - this.tokens.tags.COMMENT_END.length - 1) : this.fail("Unexpected token at top-level: " + e.type, e.lineno, e.colno);
+ return t
+ }, i.parse = function() {
+ return new hr.NodeList(0, 0, this.parseNodes())
+ }, i.parseAsRoot = function() {
+ return new hr.Root(0, 0, this.parseNodes())
+ }, r
+ }(en.Obj),
+ fr = {
+ parse: function(e, t, n) {
+ var r = new pr(Vt.lex(e, n));
+ return void 0 !== t && (r.extensions = t), r.parseAsRoot()
+ },
+ Parser: pr
+ },
+ dr = 0;
+
+function Er() {
+ return "hole_" + dr++
+}
+
+function mr(e, t) {
+ for (var n = null, r = 0; r < e.length; r++) {
+ var i = t(e[r]);
+ i !== e[r] && (n || (n = e.slice()), n[r] = i)
+ }
+ return n || e
+}
+
+function Tr(e, t, n) {
+ if (!(e instanceof hr.Node)) return e;
+ if (!n) {
+ var r = t(e);
+ if (r && r !== e) return r
+ }
+ if (e instanceof hr.NodeList) {
+ var i = mr(e.children, (function(e) {
+ return Tr(e, t, n)
+ }));
+ i !== e.children && (e = new hr[e.typename](e.lineno, e.colno, i))
+ } else if (e instanceof hr.CallExtension) {
+ var s = Tr(e.args, t, n),
+ a = mr(e.contentArgs, (function(e) {
+ return Tr(e, t, n)
+ }));
+ s === e.args && a === e.contentArgs || (e = new hr[e.typename](e.extName, e.prop, s, a))
+ } else {
+ var o = e.fields.map((function(t) {
+ return e[t]
+ })),
+ c = mr(o, (function(e) {
+ return Tr(e, t, n)
+ }));
+ c !== o && (e = new hr[e.typename](e.lineno, e.colno), c.forEach((function(t, n) {
+ e[e.fields[n]] = t
+ })))
+ }
+ return n && t(e) || e
+}
+
+function _r(e, t) {
+ return Tr(e, t, !0)
+}
+
+function Ar(e, t, n) {
+ var r = [],
+ i = _r(n ? e[n] : e, (function(e) {
+ var n;
+ return e instanceof hr.Block ? e : ((e instanceof hr.Filter && -1 !== je.indexOf(t, e.name.value) || e instanceof hr.CallExtensionAsync) && (n = new hr.Symbol(e.lineno, e.colno, Er()), r.push(new hr.FilterAsync(e.lineno, e.colno, e.name, e.args, n))), n)
+ }));
+ return n ? e[n] = i : e = i, r.length ? (r.push(e), new hr.NodeList(e.lineno, e.colno, r)) : e
+}
+
+function gr(e, t) {
+ return function(e) {
+ return _r(e, (function(e) {
+ if (e instanceof hr.If || e instanceof hr.For) {
+ var t = !1;
+ if (Tr(e, (function(e) {
+ if (e instanceof hr.FilterAsync || e instanceof hr.IfAsync || e instanceof hr.AsyncEach || e instanceof hr.AsyncAll || e instanceof hr.CallExtensionAsync) return t = !0, e
+ })), t) {
+ if (e instanceof hr.If) return new hr.IfAsync(e.lineno, e.colno, e.cond, e.body, e.else_);
+ if (e instanceof hr.For && !(e instanceof hr.AsyncAll)) return new hr.AsyncEach(e.lineno, e.colno, e.arr, e.name, e.body, e.else_)
+ }
+ }
+ }))
+ }(function(e) {
+ return Tr(e, (function(e) {
+ if (e instanceof hr.Block) {
+ var t = !1,
+ n = Er();
+ e.body = Tr(e.body, (function(e) {
+ if (e instanceof hr.FunCall && "super" === e.name.value) return t = !0, new hr.Symbol(e.lineno, e.colno, n)
+ })), t && e.body.children.unshift(new hr.Super(0, 0, e.name, new hr.Symbol(0, 0, n)))
+ }
+ }))
+ }(function(e, t) {
+ return _r(e, (function(e) {
+ return e instanceof hr.Output ? Ar(e, t) : e instanceof hr.Set ? Ar(e, t, "value") : e instanceof hr.For ? Ar(e, t, "arr") : e instanceof hr.If ? Ar(e, t, "cond") : e instanceof hr.CallExtension ? Ar(e, t, "args") : void 0
+ }))
+ }(e, t)))
+}
+var Nr = {
+ transform: function(e, t) {
+ return gr(e, t || [])
+ }
+ },
+ Cr = Array.from,
+ Ir = "function" == typeof Symbol && Symbol.iterator && "function" == typeof Cr,
+ Sr = function() {
+ function e(e, t) {
+ this.variables = Object.create(null), this.parent = e, this.topLevel = !1, this.isolateWrites = t
+ }
+ var t = e.prototype;
+ return t.set = function(e, t, n) {
+ var r = e.split("."),
+ i = this.variables,
+ s = this;
+ if (n && (s = this.resolve(r[0], !0))) s.set(e, t);
+ else {
+ for (var a = 0; a < r.length - 1; a++) {
+ var o = r[a];
+ i[o] || (i[o] = {}), i = i[o]
+ }
+ i[r[r.length - 1]] = t
+ }
+ }, t.get = function(e) {
+ var t = this.variables[e];
+ return void 0 !== t ? t : null
+ }, t.lookup = function(e) {
+ var t = this.parent,
+ n = this.variables[e];
+ return void 0 !== n ? n : t && t.lookup(e)
+ }, t.resolve = function(e, t) {
+ var n = t && this.isolateWrites ? void 0 : this.parent;
+ return void 0 !== this.variables[e] ? this : n && n.resolve(e)
+ }, t.push = function(t) {
+ return new e(this, t)
+ }, t.pop = function() {
+ return this.parent
+ }, e
+ }();
+
+function br(e) {
+ return e && Object.prototype.hasOwnProperty.call(e, "__keywords")
+}
+
+function Or(e) {
+ var t = e.length;
+ if (t) {
+ var n = e[t - 1];
+ if (br(n)) return n
+ }
+ return {}
+}
+
+function yr(e) {
+ var t = e.length;
+ return 0 === t ? 0 : br(e[t - 1]) ? t - 1 : t
+}
+
+function Lr(e) {
+ if ("string" != typeof e) return e;
+ this.val = e, Object.defineProperty(this, "length", {
+ writable: !0,
+ configurable: !0,
+ value: e.length
+ })
+}
+Lr.prototype = Object.create(String.prototype, {
+ length: {
+ writable: !0,
+ configurable: !0,
+ value: 0
+ }
+}), Lr.prototype.valueOf = function() {
+ return this.val
+}, Lr.prototype.toString = function() {
+ return this.val
+};
+var kr = {
+ Frame: Sr,
+ makeMacro: function(e, t, n) {
+ return function() {
+ for (var r = arguments.length, i = new Array(r), s = 0; s < r; s++) i[s] = arguments[s];
+ var a, o = yr(i),
+ c = Or(i);
+ if (o > e.length) a = i.slice(0, e.length), i.slice(a.length, o).forEach((function(e, n) {
+ n < t.length && (c[t[n]] = e)
+ })), a.push(c);
+ else if (o < e.length) {
+ a = i.slice(0, o);
+ for (var l = o; l < e.length; l++) {
+ var h = e[l];
+ a.push(c[h]), delete c[h]
+ }
+ a.push(c)
+ } else a = i;
+ return n.apply(this, a)
+ }
+ },
+ makeKeywordArgs: function(e) {
+ return e.__keywords = !0, e
+ },
+ numArgs: yr,
+ suppressValue: function(e, t) {
+ return "object" == typeof(e = null != e ? e : "") ? new Lr(JSON.stringify(e).toString()) : (!t || e instanceof Lr || (e = je.escape(e.toString())), e)
+ },
+ ensureDefined: function(e, t, n) {
+ if (null == e) throw new je.TemplateError("attempted to output null or undefined value", t + 1, n + 1);
+ return e
+ },
+ memberLookup: function(e, t) {
+ if (null != e) return "function" == typeof e[t] ? function() {
+ for (var n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
+ return e[t].apply(e, r)
+ } : e[t]
+ },
+ contextOrFrameLookup: function(e, t, n) {
+ var r = t.lookup(n);
+ return void 0 !== r ? r : e.lookup(n)
+ },
+ callWrap: function(e, t, n, r) {
+ if (!e) throw new Error("Unable to call `" + t + "`, which is undefined or falsey");
+ if ("function" != typeof e) throw new Error("Unable to call `" + t + "`, which is not a function");
+ return e.apply(n, r)
+ },
+ handleError: function(e, t, n) {
+ return e.lineno ? e : new je.TemplateError(e, t, n)
+ },
+ isArray: je.isArray,
+ keys: je.keys,
+ SafeString: Lr,
+ copySafeness: function(e, t) {
+ return e instanceof Lr ? new Lr(t) : t.toString()
+ },
+ markSafe: function(e) {
+ var t = typeof e;
+ return "string" === t ? new Lr(e) : "function" !== t ? e : function(t) {
+ var n = e.apply(this, arguments);
+ return "string" == typeof n ? new Lr(n) : n
+ }
+ },
+ asyncEach: function(e, t, n, r) {
+ if (je.isArray(e)) {
+ var i = e.length;
+ je.asyncIter(e, (function(e, r, s) {
+ switch (t) {
+ case 1:
+ n(e, r, i, s);
+ break;
+ case 2:
+ n(e[0], e[1], r, i, s);
+ break;
+ case 3:
+ n(e[0], e[1], e[2], r, i, s);
+ break;
+ default:
+ e.push(r, i, s), n.apply(this, e)
+ }
+ }), r)
+ } else je.asyncFor(e, (function(e, t, r, i, s) {
+ n(e, t, r, i, s)
+ }), r)
+ },
+ asyncAll: function(e, t, n, r) {
+ var i, s, a = 0;
+
+ function o(e, t) {
+ a++, s[e] = t, a === i && r(null, s.join(""))
+ }
+ if (je.isArray(e))
+ if (i = e.length, s = new Array(i), 0 === i) r(null, "");
+ else
+ for (var c = 0; c < e.length; c++) {
+ var l = e[c];
+ switch (t) {
+ case 1:
+ n(l, c, i, o);
+ break;
+ case 2:
+ n(l[0], l[1], c, i, o);
+ break;
+ case 3:
+ n(l[0], l[1], l[2], c, i, o);
+ break;
+ default:
+ l.push(c, i, o), n.apply(this, l)
+ }
+ } else {
+ var h = je.keys(e || {});
+ if (i = h.length, s = new Array(i), 0 === i) r(null, "");
+ else
+ for (var u = 0; u < h.length; u++) {
+ var p = h[u];
+ n(p, e[p], u, i, o)
+ }
+ }
+ },
+ inOperator: je.inOperator,
+ fromIterator: function(e) {
+ return "object" != typeof e || null === e || je.isArray(e) ? e : Ir && Symbol.iterator in e ? Cr(e) : e
+ }
+};
+
+function vr(e, t) {
+ return vr = Object.setPrototypeOf || function(e, t) {
+ return e.__proto__ = t, e
+ }, vr(e, t)
+}
+kr.Frame, kr.makeMacro, kr.makeKeywordArgs, kr.numArgs, kr.suppressValue, kr.ensureDefined, kr.memberLookup, kr.contextOrFrameLookup, kr.callWrap, kr.handleError, kr.isArray, kr.keys, kr.SafeString, kr.copySafeness, kr.markSafe, kr.asyncEach, kr.asyncAll, kr.inOperator, kr.fromIterator;
+var Dr = je.TemplateError,
+ Rr = kr.Frame,
+ Mr = {
+ "==": "==",
+ "===": "===",
+ "!=": "!=",
+ "!==": "!==",
+ "<": "<",
+ ">": ">",
+ "<=": "<=",
+ ">=": ">="
+ },
+ Pr = function(e) {
+ var t, n;
+
+ function r() {
+ return e.apply(this, arguments) || this
+ }
+ n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, vr(t, n);
+ var i = r.prototype;
+ return i.init = function(e, t) {
+ this.templateName = e, this.codebuf = [], this.lastId = 0, this.buffer = null, this.bufferStack = [], this._scopeClosers = "", this.inBlock = !1, this.throwOnUndefined = t
+ }, i.fail = function(e, t, n) {
+ throw void 0 !== t && (t += 1), void 0 !== n && (n += 1), new Dr(e, t, n)
+ }, i._pushBuffer = function() {
+ var e = this._tmpid();
+ return this.bufferStack.push(this.buffer), this.buffer = e, this._emit("var " + this.buffer + ' = "";'), e
+ }, i._popBuffer = function() {
+ this.buffer = this.bufferStack.pop()
+ }, i._emit = function(e) {
+ this.codebuf.push(e)
+ }, i._emitLine = function(e) {
+ this._emit(e + "\n")
+ }, i._emitLines = function() {
+ for (var e = this, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r];
+ n.forEach((function(t) {
+ return e._emitLine(t)
+ }))
+ }, i._emitFuncBegin = function(e, t) {
+ this.buffer = "output", this._scopeClosers = "", this._emitLine("function " + t + "(env, context, frame, runtime, cb) {"), this._emitLine("var lineno = " + e.lineno + ";"), this._emitLine("var colno = " + e.colno + ";"), this._emitLine("var " + this.buffer + ' = "";'), this._emitLine("try {")
+ }, i._emitFuncEnd = function(e) {
+ e || this._emitLine("cb(null, " + this.buffer + ");"), this._closeScopeLevels(), this._emitLine("} catch (e) {"), this._emitLine(" cb(runtime.handleError(e, lineno, colno));"), this._emitLine("}"), this._emitLine("}"), this.buffer = null
+ }, i._addScopeLevel = function() {
+ this._scopeClosers += "})"
+ }, i._closeScopeLevels = function() {
+ this._emitLine(this._scopeClosers + ";"), this._scopeClosers = ""
+ }, i._withScopedSyntax = function(e) {
+ var t = this._scopeClosers;
+ this._scopeClosers = "", e.call(this), this._closeScopeLevels(), this._scopeClosers = t
+ }, i._makeCallback = function(e) {
+ var t = this._tmpid();
+ return "function(" + t + (e ? "," + e : "") + ") {\nif(" + t + ") { cb(" + t + "); return; }"
+ }, i._tmpid = function() {
+ return this.lastId++, "t_" + this.lastId
+ }, i._templateName = function() {
+ return null == this.templateName ? "undefined" : JSON.stringify(this.templateName)
+ }, i._compileChildren = function(e, t) {
+ var n = this;
+ e.children.forEach((function(e) {
+ n.compile(e, t)
+ }))
+ }, i._compileAggregate = function(e, t, n, r) {
+ var i = this;
+ n && this._emit(n), e.children.forEach((function(e, n) {
+ n > 0 && i._emit(","), i.compile(e, t)
+ })), r && this._emit(r)
+ }, i._compileExpression = function(e, t) {
+ this.assertType(e, hr.Literal, hr.Symbol, hr.Group, hr.Array, hr.Dict, hr.FunCall, hr.Caller, hr.Filter, hr.LookupVal, hr.Compare, hr.InlineIf, hr.In, hr.Is, hr.And, hr.Or, hr.Not, hr.Add, hr.Concat, hr.Sub, hr.Mul, hr.Div, hr.FloorDiv, hr.Mod, hr.Pow, hr.Neg, hr.Pos, hr.Compare, hr.NodeList), this.compile(e, t)
+ }, i.assertType = function(e) {
+ for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r];
+ n.some((function(t) {
+ return e instanceof t
+ })) || this.fail("assertType: invalid type: " + e.typename, e.lineno, e.colno)
+ }, i.compileCallExtension = function(e, t, n) {
+ var r = this,
+ i = e.args,
+ s = e.contentArgs,
+ a = "boolean" != typeof e.autoescape || e.autoescape;
+ if (n || this._emit(this.buffer + " += runtime.suppressValue("), this._emit('env.getExtension("' + e.extName + '")["' + e.prop + '"]('), this._emit("context"), (i || s) && this._emit(","), i && (i instanceof hr.NodeList || this.fail("compileCallExtension: arguments must be a NodeList, use `parser.parseSignature`"), i.children.forEach((function(e, n) {
+ r._compileExpression(e, t), (n !== i.children.length - 1 || s.length) && r._emit(",")
+ }))), s.length && s.forEach((function(e, n) {
+ if (n > 0 && r._emit(","), e) {
+ r._emitLine("function(cb) {"), r._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}");
+ var i = r._pushBuffer();
+ r._withScopedSyntax((function() {
+ r.compile(e, t), r._emitLine("cb(null, " + i + ");")
+ })), r._popBuffer(), r._emitLine("return " + i + ";"), r._emitLine("}")
+ } else r._emit("null")
+ })), n) {
+ var o = this._tmpid();
+ this._emitLine(", " + this._makeCallback(o)), this._emitLine(this.buffer + " += runtime.suppressValue(" + o + ", " + a + " && env.opts.autoescape);"), this._addScopeLevel()
+ } else this._emit(")"), this._emit(", " + a + " && env.opts.autoescape);\n")
+ }, i.compileCallExtensionAsync = function(e, t) {
+ this.compileCallExtension(e, t, !0)
+ }, i.compileNodeList = function(e, t) {
+ this._compileChildren(e, t)
+ }, i.compileLiteral = function(e) {
+ if ("string" == typeof e.value) {
+ var t = e.value.replace(/\\/g, "\\\\");
+ t = (t = (t = (t = (t = t.replace(/"/g, '\\"')).replace(/\n/g, "\\n")).replace(/\r/g, "\\r")).replace(/\t/g, "\\t")).replace(/\u2028/g, "\\u2028"), this._emit('"' + t + '"')
+ } else null === e.value ? this._emit("null") : this._emit(e.value.toString())
+ }, i.compileSymbol = function(e, t) {
+ var n = e.value,
+ r = t.lookup(n);
+ r ? this._emit(r) : this._emit('runtime.contextOrFrameLookup(context, frame, "' + n + '")')
+ }, i.compileGroup = function(e, t) {
+ this._compileAggregate(e, t, "(", ")")
+ }, i.compileArray = function(e, t) {
+ this._compileAggregate(e, t, "[", "]")
+ }, i.compileDict = function(e, t) {
+ this._compileAggregate(e, t, "{", "}")
+ }, i.compilePair = function(e, t) {
+ var n = e.key,
+ r = e.value;
+ n instanceof hr.Symbol ? n = new hr.Literal(n.lineno, n.colno, n.value) : n instanceof hr.Literal && "string" == typeof n.value || this.fail("compilePair: Dict keys must be strings or names", n.lineno, n.colno), this.compile(n, t), this._emit(": "), this._compileExpression(r, t)
+ }, i.compileInlineIf = function(e, t) {
+ this._emit("("), this.compile(e.cond, t), this._emit("?"), this.compile(e.body, t), this._emit(":"), null !== e.else_ ? this.compile(e.else_, t) : this._emit('""'), this._emit(")")
+ }, i.compileIn = function(e, t) {
+ this._emit("runtime.inOperator("), this.compile(e.left, t), this._emit(","), this.compile(e.right, t), this._emit(")")
+ }, i.compileIs = function(e, t) {
+ var n = e.right.name ? e.right.name.value : e.right.value;
+ this._emit('env.getTest("' + n + '").call(context, '), this.compile(e.left, t), e.right.args && (this._emit(","), this.compile(e.right.args, t)), this._emit(") === true")
+ }, i._binOpEmitter = function(e, t, n) {
+ this.compile(e.left, t), this._emit(n), this.compile(e.right, t)
+ }, i.compileOr = function(e, t) {
+ return this._binOpEmitter(e, t, " || ")
+ }, i.compileAnd = function(e, t) {
+ return this._binOpEmitter(e, t, " && ")
+ }, i.compileAdd = function(e, t) {
+ return this._binOpEmitter(e, t, " + ")
+ }, i.compileConcat = function(e, t) {
+ return this._binOpEmitter(e, t, ' + "" + ')
+ }, i.compileSub = function(e, t) {
+ return this._binOpEmitter(e, t, " - ")
+ }, i.compileMul = function(e, t) {
+ return this._binOpEmitter(e, t, " * ")
+ }, i.compileDiv = function(e, t) {
+ return this._binOpEmitter(e, t, " / ")
+ }, i.compileMod = function(e, t) {
+ return this._binOpEmitter(e, t, " % ")
+ }, i.compileNot = function(e, t) {
+ this._emit("!"), this.compile(e.target, t)
+ }, i.compileFloorDiv = function(e, t) {
+ this._emit("Math.floor("), this.compile(e.left, t), this._emit(" / "), this.compile(e.right, t), this._emit(")")
+ }, i.compilePow = function(e, t) {
+ this._emit("Math.pow("), this.compile(e.left, t), this._emit(", "), this.compile(e.right, t), this._emit(")")
+ }, i.compileNeg = function(e, t) {
+ this._emit("-"), this.compile(e.target, t)
+ }, i.compilePos = function(e, t) {
+ this._emit("+"), this.compile(e.target, t)
+ }, i.compileCompare = function(e, t) {
+ var n = this;
+ this.compile(e.expr, t), e.ops.forEach((function(e) {
+ n._emit(" " + Mr[e.type] + " "), n.compile(e.expr, t)
+ }))
+ }, i.compileLookupVal = function(e, t) {
+ this._emit("runtime.memberLookup(("), this._compileExpression(e.target, t), this._emit("),"), this._compileExpression(e.val, t), this._emit(")")
+ }, i._getNodeName = function(e) {
+ switch (e.typename) {
+ case "Symbol":
+ return e.value;
+ case "FunCall":
+ return "the return value of (" + this._getNodeName(e.name) + ")";
+ case "LookupVal":
+ return this._getNodeName(e.target) + '["' + this._getNodeName(e.val) + '"]';
+ case "Literal":
+ return e.value.toString();
+ default:
+ return "--expression--"
+ }
+ }, i.compileFunCall = function(e, t) {
+ this._emit("(lineno = " + e.lineno + ", colno = " + e.colno + ", "), this._emit("runtime.callWrap("), this._compileExpression(e.name, t), this._emit(', "' + this._getNodeName(e.name).replace(/"/g, '\\"') + '", context, '), this._compileAggregate(e.args, t, "[", "])"), this._emit(")")
+ }, i.compileFilter = function(e, t) {
+ var n = e.name;
+ this.assertType(n, hr.Symbol), this._emit('env.getFilter("' + n.value + '").call(context, '), this._compileAggregate(e.args, t), this._emit(")")
+ }, i.compileFilterAsync = function(e, t) {
+ var n = e.name,
+ r = e.symbol.value;
+ this.assertType(n, hr.Symbol), t.set(r, r), this._emit('env.getFilter("' + n.value + '").call(context, '), this._compileAggregate(e.args, t), this._emitLine(", " + this._makeCallback(r)), this._addScopeLevel()
+ }, i.compileKeywordArgs = function(e, t) {
+ this._emit("runtime.makeKeywordArgs("), this.compileDict(e, t), this._emit(")")
+ }, i.compileSet = function(e, t) {
+ var n = this,
+ r = [];
+ e.targets.forEach((function(e) {
+ var i = e.value,
+ s = t.lookup(i);
+ null == s && (s = n._tmpid(), n._emitLine("var " + s + ";")), r.push(s)
+ })), e.value ? (this._emit(r.join(" = ") + " = "), this._compileExpression(e.value, t), this._emitLine(";")) : (this._emit(r.join(" = ") + " = "), this.compile(e.body, t), this._emitLine(";")), e.targets.forEach((function(e, t) {
+ var i = r[t],
+ s = e.value;
+ n._emitLine('frame.set("' + s + '", ' + i + ", true);"), n._emitLine("if(frame.topLevel) {"), n._emitLine('context.setVariable("' + s + '", ' + i + ");"), n._emitLine("}"), "_" !== s.charAt(0) && (n._emitLine("if(frame.topLevel) {"), n._emitLine('context.addExport("' + s + '", ' + i + ");"), n._emitLine("}"))
+ }))
+ }, i.compileSwitch = function(e, t) {
+ var n = this;
+ this._emit("switch ("), this.compile(e.expr, t), this._emit(") {"), e.cases.forEach((function(e, r) {
+ n._emit("case "), n.compile(e.cond, t), n._emit(": "), n.compile(e.body, t), e.body.children.length && n._emitLine("break;")
+ })), e.default && (this._emit("default:"), this.compile(e.default, t)), this._emit("}")
+ }, i.compileIf = function(e, t, n) {
+ var r = this;
+ this._emit("if("), this._compileExpression(e.cond, t), this._emitLine(") {"), this._withScopedSyntax((function() {
+ r.compile(e.body, t), n && r._emit("cb()")
+ })), e.else_ ? (this._emitLine("}\nelse {"), this._withScopedSyntax((function() {
+ r.compile(e.else_, t), n && r._emit("cb()")
+ }))) : n && (this._emitLine("}\nelse {"), this._emit("cb()")), this._emitLine("}")
+ }, i.compileIfAsync = function(e, t) {
+ this._emit("(function(cb) {"), this.compileIf(e, t, !0), this._emit("})(" + this._makeCallback()), this._addScopeLevel()
+ }, i._emitLoopBindings = function(e, t, n, r) {
+ var i = this;
+ [{
+ name: "index",
+ val: n + " + 1"
+ }, {
+ name: "index0",
+ val: n
+ }, {
+ name: "revindex",
+ val: r + " - " + n
+ }, {
+ name: "revindex0",
+ val: r + " - " + n + " - 1"
+ }, {
+ name: "first",
+ val: n + " === 0"
+ }, {
+ name: "last",
+ val: n + " === " + r + " - 1"
+ }, {
+ name: "length",
+ val: r
+ }].forEach((function(e) {
+ i._emitLine('frame.set("loop.' + e.name + '", ' + e.val + ");")
+ }))
+ }, i.compileFor = function(e, t) {
+ var n = this,
+ r = this._tmpid(),
+ i = this._tmpid(),
+ s = this._tmpid();
+ if (t = t.push(), this._emitLine("frame = frame.push();"), this._emit("var " + s + " = "), this._compileExpression(e.arr, t), this._emitLine(";"), this._emit("if(" + s + ") {"), this._emitLine(s + " = runtime.fromIterator(" + s + ");"), e.name instanceof hr.Array) {
+ this._emitLine("var " + r + ";"), this._emitLine("if(runtime.isArray(" + s + ")) {"), this._emitLine("var " + i + " = " + s + ".length;"), this._emitLine("for(" + r + "=0; " + r + " < " + s + ".length; " + r + "++) {"), e.name.children.forEach((function(i, a) {
+ var o = n._tmpid();
+ n._emitLine("var " + o + " = " + s + "[" + r + "][" + a + "];"), n._emitLine('frame.set("' + i + '", ' + s + "[" + r + "][" + a + "]);"), t.set(e.name.children[a].value, o)
+ })), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() {
+ n.compile(e.body, t)
+ })), this._emitLine("}"), this._emitLine("} else {");
+ var a = e.name.children,
+ o = a[0],
+ c = a[1],
+ l = this._tmpid(),
+ h = this._tmpid();
+ t.set(o.value, l), t.set(c.value, h), this._emitLine(r + " = -1;"), this._emitLine("var " + i + " = runtime.keys(" + s + ").length;"), this._emitLine("for(var " + l + " in " + s + ") {"), this._emitLine(r + "++;"), this._emitLine("var " + h + " = " + s + "[" + l + "];"), this._emitLine('frame.set("' + o.value + '", ' + l + ");"), this._emitLine('frame.set("' + c.value + '", ' + h + ");"), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() {
+ n.compile(e.body, t)
+ })), this._emitLine("}"), this._emitLine("}")
+ } else {
+ var u = this._tmpid();
+ t.set(e.name.value, u), this._emitLine("var " + i + " = " + s + ".length;"), this._emitLine("for(var " + r + "=0; " + r + " < " + s + ".length; " + r + "++) {"), this._emitLine("var " + u + " = " + s + "[" + r + "];"), this._emitLine('frame.set("' + e.name.value + '", ' + u + ");"), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() {
+ n.compile(e.body, t)
+ })), this._emitLine("}")
+ }
+ this._emitLine("}"), e.else_ && (this._emitLine("if (!" + i + ") {"), this.compile(e.else_, t), this._emitLine("}")), this._emitLine("frame = frame.pop();")
+ }, i._compileAsyncLoop = function(e, t, n) {
+ var r = this,
+ i = this._tmpid(),
+ s = this._tmpid(),
+ a = this._tmpid(),
+ o = n ? "asyncAll" : "asyncEach";
+ if (t = t.push(), this._emitLine("frame = frame.push();"), this._emit("var " + a + " = runtime.fromIterator("), this._compileExpression(e.arr, t), this._emitLine(");"), e.name instanceof hr.Array) {
+ var c = e.name.children.length;
+ this._emit("runtime." + o + "(" + a + ", " + c + ", function("), e.name.children.forEach((function(e) {
+ r._emit(e.value + ",")
+ })), this._emit(i + "," + s + ",next) {"), e.name.children.forEach((function(e) {
+ var n = e.value;
+ t.set(n, n), r._emitLine('frame.set("' + n + '", ' + n + ");")
+ }))
+ } else {
+ var l = e.name.value;
+ this._emitLine("runtime." + o + "(" + a + ", 1, function(" + l + ", " + i + ", " + s + ",next) {"), this._emitLine('frame.set("' + l + '", ' + l + ");"), t.set(l, l)
+ }
+ this._emitLoopBindings(e, a, i, s), this._withScopedSyntax((function() {
+ var s;
+ n && (s = r._pushBuffer()), r.compile(e.body, t), r._emitLine("next(" + i + (s ? "," + s : "") + ");"), n && r._popBuffer()
+ }));
+ var h = this._tmpid();
+ this._emitLine("}, " + this._makeCallback(h)), this._addScopeLevel(), n && this._emitLine(this.buffer + " += " + h + ";"), e.else_ && (this._emitLine("if (!" + a + ".length) {"), this.compile(e.else_, t), this._emitLine("}")), this._emitLine("frame = frame.pop();")
+ }, i.compileAsyncEach = function(e, t) {
+ this._compileAsyncLoop(e, t)
+ }, i.compileAsyncAll = function(e, t) {
+ this._compileAsyncLoop(e, t, !0)
+ }, i._compileMacro = function(e, t) {
+ var n = this,
+ r = [],
+ i = null,
+ s = "macro_" + this._tmpid(),
+ a = void 0 !== t;
+ e.args.children.forEach((function(t, s) {
+ s === e.args.children.length - 1 && t instanceof hr.Dict ? i = t : (n.assertType(t, hr.Symbol), r.push(t))
+ }));
+ var o, c = [].concat(r.map((function(e) {
+ return "l_" + e.value
+ })), ["kwargs"]),
+ l = r.map((function(e) {
+ return '"' + e.value + '"'
+ })),
+ h = (i && i.children || []).map((function(e) {
+ return '"' + e.key.value + '"'
+ }));
+ o = a ? t.push(!0) : new Rr, this._emitLines("var " + s + " = runtime.makeMacro(", "[" + l.join(", ") + "], ", "[" + h.join(", ") + "], ", "function (" + c.join(", ") + ") {", "var callerFrame = frame;", "frame = " + (a ? "frame.push(true);" : "new runtime.Frame();"), "kwargs = kwargs || {};", 'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {', 'frame.set("caller", kwargs.caller); }'), r.forEach((function(e) {
+ n._emitLine('frame.set("' + e.value + '", l_' + e.value + ");"), o.set(e.value, "l_" + e.value)
+ })), i && i.children.forEach((function(e) {
+ var t = e.key.value;
+ n._emit('frame.set("' + t + '", '), n._emit('Object.prototype.hasOwnProperty.call(kwargs, "' + t + '")'), n._emit(' ? kwargs["' + t + '"] : '), n._compileExpression(e.value, o), n._emit(");")
+ }));
+ var u = this._pushBuffer();
+ return this._withScopedSyntax((function() {
+ n.compile(e.body, o)
+ })), this._emitLine("frame = " + (a ? "frame.pop();" : "callerFrame;")), this._emitLine("return new runtime.SafeString(" + u + ");"), this._emitLine("});"), this._popBuffer(), s
+ }, i.compileMacro = function(e, t) {
+ var n = this._compileMacro(e),
+ r = e.name.value;
+ t.set(r, n), t.parent ? this._emitLine('frame.set("' + r + '", ' + n + ");") : ("_" !== e.name.value.charAt(0) && this._emitLine('context.addExport("' + r + '");'), this._emitLine('context.setVariable("' + r + '", ' + n + ");"))
+ }, i.compileCaller = function(e, t) {
+ this._emit("(function (){");
+ var n = this._compileMacro(e, t);
+ this._emit("return " + n + ";})()")
+ }, i._compileGetTemplate = function(e, t, n, r) {
+ var i = this._tmpid(),
+ s = this._templateName(),
+ a = this._makeCallback(i),
+ o = n ? "true" : "false",
+ c = r ? "true" : "false";
+ return this._emit("env.getTemplate("), this._compileExpression(e.template, t), this._emitLine(", " + o + ", " + s + ", " + c + ", " + a), i
+ }, i.compileImport = function(e, t) {
+ var n = e.target.value,
+ r = this._compileGetTemplate(e, t, !1, !1);
+ this._addScopeLevel(), this._emitLine(r + ".getExported(" + (e.withContext ? "context.getVariables(), frame, " : "") + this._makeCallback(r)), this._addScopeLevel(), t.set(n, r), t.parent ? this._emitLine('frame.set("' + n + '", ' + r + ");") : this._emitLine('context.setVariable("' + n + '", ' + r + ");")
+ }, i.compileFromImport = function(e, t) {
+ var n = this,
+ r = this._compileGetTemplate(e, t, !1, !1);
+ this._addScopeLevel(), this._emitLine(r + ".getExported(" + (e.withContext ? "context.getVariables(), frame, " : "") + this._makeCallback(r)), this._addScopeLevel(), e.names.children.forEach((function(e) {
+ var i, s, a = n._tmpid();
+ e instanceof hr.Pair ? (i = e.key.value, s = e.value.value) : s = i = e.value, n._emitLine("if(Object.prototype.hasOwnProperty.call(" + r + ', "' + i + '")) {'), n._emitLine("var " + a + " = " + r + "." + i + ";"), n._emitLine("} else {"), n._emitLine("cb(new Error(\"cannot import '" + i + "'\")); return;"), n._emitLine("}"), t.set(s, a), t.parent ? n._emitLine('frame.set("' + s + '", ' + a + ");") : n._emitLine('context.setVariable("' + s + '", ' + a + ");")
+ }))
+ }, i.compileBlock = function(e) {
+ var t = this._tmpid();
+ this.inBlock || this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '), this._emit('context.getBlock("' + e.name.value + '")'), this.inBlock || this._emit(")"), this._emitLine("(env, context, frame, runtime, " + this._makeCallback(t)), this._emitLine(this.buffer + " += " + t + ";"), this._addScopeLevel()
+ }, i.compileSuper = function(e, t) {
+ var n = e.blockName.value,
+ r = e.symbol.value,
+ i = this._makeCallback(r);
+ this._emitLine('context.getSuper(env, "' + n + '", b_' + n + ", frame, runtime, " + i), this._emitLine(r + " = runtime.markSafe(" + r + ");"), this._addScopeLevel(), t.set(r, r)
+ }, i.compileExtends = function(e, t) {
+ var n = this._tmpid(),
+ r = this._compileGetTemplate(e, t, !0, !1);
+ this._emitLine("parentTemplate = " + r), this._emitLine("for(var " + n + " in parentTemplate.blocks) {"), this._emitLine("context.addBlock(" + n + ", parentTemplate.blocks[" + n + "]);"), this._emitLine("}"), this._addScopeLevel()
+ }, i.compileInclude = function(e, t) {
+ this._emitLine("var tasks = [];"), this._emitLine("tasks.push("), this._emitLine("function(callback) {");
+ var n = this._compileGetTemplate(e, t, !1, e.ignoreMissing);
+ this._emitLine("callback(null," + n + ");});"), this._emitLine("});");
+ var r = this._tmpid();
+ this._emitLine("tasks.push("), this._emitLine("function(template, callback){"), this._emitLine("template.render(context.getVariables(), frame, " + this._makeCallback(r)), this._emitLine("callback(null," + r + ");});"), this._emitLine("});"), this._emitLine("tasks.push("), this._emitLine("function(result, callback){"), this._emitLine(this.buffer + " += result;"), this._emitLine("callback(null);"), this._emitLine("});"), this._emitLine("env.waterfall(tasks, function(){"), this._addScopeLevel()
+ }, i.compileTemplateData = function(e, t) {
+ this.compileLiteral(e, t)
+ }, i.compileCapture = function(e, t) {
+ var n = this,
+ r = this.buffer;
+ this.buffer = "output", this._emitLine("(function() {"), this._emitLine('var output = "";'), this._withScopedSyntax((function() {
+ n.compile(e.body, t)
+ })), this._emitLine("return output;"), this._emitLine("})()"), this.buffer = r
+ }, i.compileOutput = function(e, t) {
+ var n = this;
+ e.children.forEach((function(r) {
+ r instanceof hr.TemplateData ? r.value && (n._emit(n.buffer + " += "), n.compileLiteral(r, t), n._emitLine(";")) : (n._emit(n.buffer + " += runtime.suppressValue("), n.throwOnUndefined && n._emit("runtime.ensureDefined("), n.compile(r, t), n.throwOnUndefined && n._emit("," + e.lineno + "," + e.colno + ")"), n._emit(", env.opts.autoescape);\n"))
+ }))
+ }, i.compileRoot = function(e, t) {
+ var n = this;
+ t && this.fail("compileRoot: root node can't have frame"), t = new Rr, this._emitFuncBegin(e, "root"), this._emitLine("var parentTemplate = null;"), this._compileChildren(e, t), this._emitLine("if(parentTemplate) {"), this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"), this._emitLine("} else {"), this._emitLine("cb(null, " + this.buffer + ");"), this._emitLine("}"), this._emitFuncEnd(!0), this.inBlock = !0;
+ var r = [],
+ i = e.findAll(hr.Block);
+ i.forEach((function(e, t) {
+ var i = e.name.value;
+ if (-1 !== r.indexOf(i)) throw new Error('Block "' + i + '" defined more than once.');
+ r.push(i), n._emitFuncBegin(e, "b_" + i);
+ var s = new Rr;
+ n._emitLine("var frame = frame.push(true);"), n.compile(e.body, s), n._emitFuncEnd()
+ })), this._emitLine("return {"), i.forEach((function(e, t) {
+ var r = "b_" + e.name.value;
+ n._emitLine(r + ": " + r + ",")
+ })), this._emitLine("root: root\n};")
+ }, i.compile = function(e, t) {
+ var n = this["compile" + e.typename];
+ n ? n.call(this, e, t) : this.fail("compile: Cannot compile node: " + e.typename, e.lineno, e.colno)
+ }, i.getCode = function() {
+ return this.codebuf.join("")
+ }, r
+ }(en.Obj),
+ xr = {
+ compile: function(e, t, n, r, i) {
+ void 0 === i && (i = {});
+ var s = new Pr(r, i.throwOnUndefined),
+ a = (n || []).map((function(e) {
+ return e.preprocess
+ })).filter((function(e) {
+ return !!e
+ })).reduce((function(e, t) {
+ return t(e)
+ }), e);
+ return s.compile(Nr.transform(fr.parse(a, n, i), t, r)), s.getCode()
+ },
+ Compiler: Pr
+ },
+ wr = Ke((function(e) {
+ var t = e.exports = {};
+
+ function n(e, t) {
+ return null == e || !1 === e ? t : e
+ }
+
+ function r(e) {
+ return e != e
+ }
+
+ function i(e) {
+ var t = (e = n(e, "")).toLowerCase();
+ return kr.copySafeness(e, t.charAt(0).toUpperCase() + t.slice(1))
+ }
+
+ function s(e) {
+ if (je.isString(e)) return e.split("");
+ if (je.isObject(e)) return je._entries(e || {}).map((function(e) {
+ return {
+ key: e[0],
+ value: e[1]
+ }
+ }));
+ if (je.isArray(e)) return e;
+ throw new je.TemplateError("list filter: type not iterable")
+ }
+
+ function a(e) {
+ return function(t, n, r) {
+ void 0 === n && (n = "truthy");
+ var i = this,
+ s = i.env.getTest(n);
+ return je.toArray(t).filter((function(t) {
+ return s.call(i, t, r) === e
+ }))
+ }
+ }
+
+ function o(e) {
+ return kr.copySafeness(e, e.replace(/^\s*|\s*$/g, ""))
+ }
+ t.abs = Math.abs, t.batch = function(e, t, n) {
+ var r, i = [],
+ s = [];
+ for (r = 0; r < e.length; r++) r % t == 0 && s.length && (i.push(s), s = []), s.push(e[r]);
+ if (s.length) {
+ if (n)
+ for (r = s.length; r < t; r++) s.push(n);
+ i.push(s)
+ }
+ return i
+ }, t.capitalize = i, t.center = function(e, t) {
+ if (t = t || 80, (e = n(e, "")).length >= t) return e;
+ var r = t - e.length,
+ i = je.repeat(" ", r / 2 - r % 2),
+ s = je.repeat(" ", r / 2);
+ return kr.copySafeness(e, i + e + s)
+ }, t.default = function(e, t, n) {
+ return n ? e || t : void 0 !== e ? e : t
+ }, t.dictsort = function(e, t, n) {
+ if (!je.isObject(e)) throw new je.TemplateError("dictsort filter: val must be an object");
+ var r, i = [];
+ for (var s in e) i.push([s, e[s]]);
+ if (void 0 === n || "key" === n) r = 0;
+ else {
+ if ("value" !== n) throw new je.TemplateError("dictsort filter: You can only sort by either key or value");
+ r = 1
+ }
+ return i.sort((function(e, n) {
+ var i = e[r],
+ s = n[r];
+ return t || (je.isString(i) && (i = i.toUpperCase()), je.isString(s) && (s = s.toUpperCase())), i > s ? 1 : i === s ? 0 : -1
+ })), i
+ }, t.dump = function(e, t) {
+ return JSON.stringify(e, null, t)
+ }, t.escape = function(e) {
+ return e instanceof kr.SafeString ? e : (e = null == e ? "" : e, kr.markSafe(je.escape(e.toString())))
+ }, t.safe = function(e) {
+ return e instanceof kr.SafeString ? e : (e = null == e ? "" : e, kr.markSafe(e.toString()))
+ }, t.first = function(e) {
+ return e[0]
+ }, t.forceescape = function(e) {
+ return e = null == e ? "" : e, kr.markSafe(je.escape(e.toString()))
+ }, t.groupby = function(e, t) {
+ return je.groupBy(e, t, this.env.opts.throwOnUndefined)
+ }, t.indent = function(e, t, r) {
+ if ("" === (e = n(e, ""))) return "";
+ t = t || 4;
+ var i = e.split("\n"),
+ s = je.repeat(" ", t),
+ a = i.map((function(e, t) {
+ return 0 !== t || r ? "" + s + e : e
+ })).join("\n");
+ return kr.copySafeness(e, a)
+ }, t.join = function(e, t, n) {
+ return t = t || "", n && (e = je.map(e, (function(e) {
+ return e[n]
+ }))), e.join(t)
+ }, t.last = function(e) {
+ return e[e.length - 1]
+ }, t.length = function(e) {
+ var t = n(e, "");
+ return void 0 !== t ? "function" == typeof Map && t instanceof Map || "function" == typeof Set && t instanceof Set ? t.size : !je.isObject(t) || t instanceof kr.SafeString ? t.length : je.keys(t).length : 0
+ }, t.list = s, t.lower = function(e) {
+ return (e = n(e, "")).toLowerCase()
+ }, t.nl2br = function(e) {
+ return null == e ? "" : kr.copySafeness(e, e.replace(/\r\n|\n/g, "
\n"))
+ }, t.random = function(e) {
+ return e[Math.floor(Math.random() * e.length)]
+ }, t.reject = a(!1), t.rejectattr = function(e, t) {
+ return e.filter((function(e) {
+ return !e[t]
+ }))
+ }, t.select = a(!0), t.selectattr = function(e, t) {
+ return e.filter((function(e) {
+ return !!e[t]
+ }))
+ }, t.replace = function(e, t, n, r) {
+ var i = e;
+ if (t instanceof RegExp) return e.replace(t, n);
+ void 0 === r && (r = -1);
+ var s = "";
+ if ("number" == typeof t) t = "" + t;
+ else if ("string" != typeof t) return e;
+ if ("number" == typeof e && (e = "" + e), "string" != typeof e && !(e instanceof kr.SafeString)) return e;
+ if ("" === t) return s = n + e.split("").join(n) + n, kr.copySafeness(e, s);
+ var a = e.indexOf(t);
+ if (0 === r || -1 === a) return e;
+ for (var o = 0, c = 0; a > -1 && (-1 === r || c < r);) s += e.substring(o, a) + n, o = a + t.length, c++, a = e.indexOf(t, o);
+ return o < e.length && (s += e.substring(o)), kr.copySafeness(i, s)
+ }, t.reverse = function(e) {
+ var t;
+ return (t = je.isString(e) ? s(e) : je.map(e, (function(e) {
+ return e
+ }))).reverse(), je.isString(e) ? kr.copySafeness(e, t.join("")) : t
+ }, t.round = function(e, t, n) {
+ t = t || 0;
+ var r = Math.pow(10, t);
+ return ("ceil" === n ? Math.ceil : "floor" === n ? Math.floor : Math.round)(e * r) / r
+ }, t.slice = function(e, t, n) {
+ for (var r = Math.floor(e.length / t), i = e.length % t, s = [], a = 0, o = 0; o < t; o++) {
+ var c = a + o * r;
+ o < i && a++;
+ var l = a + (o + 1) * r,
+ h = e.slice(c, l);
+ n && o >= i && h.push(n), s.push(h)
+ }
+ return s
+ }, t.sum = function(e, t, n) {
+ return void 0 === n && (n = 0), t && (e = je.map(e, (function(e) {
+ return e[t]
+ }))), n + e.reduce((function(e, t) {
+ return e + t
+ }), 0)
+ }, t.sort = kr.makeMacro(["value", "reverse", "case_sensitive", "attribute"], [], (function(e, t, n, r) {
+ var i = this,
+ s = je.map(e, (function(e) {
+ return e
+ })),
+ a = je.getAttrGetter(r);
+ return s.sort((function(e, s) {
+ var o = r ? a(e) : e,
+ c = r ? a(s) : s;
+ if (i.env.opts.throwOnUndefined && r && (void 0 === o || void 0 === c)) throw new TypeError('sort: attribute "' + r + '" resolved to undefined');
+ return !n && je.isString(o) && je.isString(c) && (o = o.toLowerCase(), c = c.toLowerCase()), o < c ? t ? 1 : -1 : o > c ? t ? -1 : 1 : 0
+ })), s
+ })), t.string = function(e) {
+ return kr.copySafeness(e, e)
+ }, t.striptags = function(e, t) {
+ var r = o((e = n(e, "")).replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>|/gi, "")),
+ i = "";
+ return i = t ? r.replace(/^ +| +$/gm, "").replace(/ +/g, " ").replace(/(\r\n)/g, "\n").replace(/\n\n\n+/g, "\n\n") : r.replace(/\s+/gi, " "), kr.copySafeness(e, i)
+ }, t.title = function(e) {
+ var t = (e = n(e, "")).split(" ").map((function(e) {
+ return i(e)
+ }));
+ return kr.copySafeness(e, t.join(" "))
+ }, t.trim = o, t.truncate = function(e, t, r, i) {
+ var s = e;
+ if (t = t || 255, (e = n(e, "")).length <= t) return e;
+ if (r) e = e.substring(0, t);
+ else {
+ var a = e.lastIndexOf(" ", t); - 1 === a && (a = t), e = e.substring(0, a)
+ }
+ return e += null != i ? i : "...", kr.copySafeness(s, e)
+ }, t.upper = function(e) {
+ return (e = n(e, "")).toUpperCase()
+ }, t.urlencode = function(e) {
+ var t = encodeURIComponent;
+ return je.isString(e) ? t(e) : (je.isArray(e) ? e : je._entries(e)).map((function(e) {
+ var n = e[0],
+ r = e[1];
+ return t(n) + "=" + t(r)
+ })).join("&")
+ };
+ var c = /^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/,
+ l = /^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,
+ h = /^https?:\/\/.*$/,
+ u = /^www\./,
+ p = /\.(?:org|net|com)(?:\:|\/|$)/;
+ t.urlize = function(e, t, n) {
+ r(t) && (t = 1 / 0);
+ var i = !0 === n ? ' rel="nofollow"' : "";
+ return e.split(/(\s+)/).filter((function(e) {
+ return e && e.length
+ })).map((function(e) {
+ var n = e.match(c),
+ r = n ? n[1] : e,
+ s = r.substr(0, t);
+ return h.test(r) ? '" + s + "" : u.test(r) ? '" + s + "" : l.test(r) ? '' + r + "" : p.test(r) ? '" + s + "" : e
+ })).join("")
+ }, t.wordcount = function(e) {
+ var t = (e = n(e, "")) ? e.match(/\w+/g) : null;
+ return t ? t.length : null
+ }, t.float = function(e, t) {
+ var n = parseFloat(e);
+ return r(n) ? t : n
+ };
+ var f = kr.makeMacro(["value", "default", "base"], [], (function(e, t, n) {
+ void 0 === n && (n = 10);
+ var i = parseInt(e, n);
+ return r(i) ? t : i
+ }));
+ t.int = f, t.d = t.default, t.e = t.escape
+ })),
+ Br = {};
+
+function Fr(e, t) {
+ for (var n = 0, r = e.length - 1; r >= 0; r--) {
+ var i = e[r];
+ "." === i ? e.splice(r, 1) : ".." === i ? (e.splice(r, 1), n++) : n && (e.splice(r, 1), n--)
+ }
+ if (t)
+ for (; n--; n) e.unshift("..");
+ return e
+}
+var Ur = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,
+ Hr = function(e) {
+ return Ur.exec(e).slice(1)
+ };
+
+function Gr() {
+ for (var e = "", t = !1, n = arguments.length - 1; n >= -1 && !t; n--) {
+ var r = n >= 0 ? arguments[n] : "/";
+ if ("string" != typeof r) throw new TypeError("Arguments to path.resolve must be strings");
+ r && (e = r + "/" + e, t = "/" === r.charAt(0))
+ }
+ return (t ? "/" : "") + (e = Fr(jr(e.split("/"), (function(e) {
+ return !!e
+ })), !t).join("/")) || "."
+}
+
+function Yr(e) {
+ var t = qr(e),
+ n = "/" === Vr(e, -1);
+ return (e = Fr(jr(e.split("/"), (function(e) {
+ return !!e
+ })), !t).join("/")) || t || (e = "."), e && n && (e += "/"), (t ? "/" : "") + e
+}
+
+function qr(e) {
+ return "/" === e.charAt(0)
+}
+var Kr = {
+ extname: function(e) {
+ return Hr(e)[3]
+ },
+ basename: function(e, t) {
+ var n = Hr(e)[2];
+ return t && n.substr(-1 * t.length) === t && (n = n.substr(0, n.length - t.length)), n
+ },
+ dirname: function(e) {
+ var t = Hr(e),
+ n = t[0],
+ r = t[1];
+ return n || r ? (r && (r = r.substr(0, r.length - 1)), n + r) : "."
+ },
+ sep: "/",
+ delimiter: ":",
+ relative: function(e, t) {
+ function n(e) {
+ for (var t = 0; t < e.length && "" === e[t]; t++);
+ for (var n = e.length - 1; n >= 0 && "" === e[n]; n--);
+ return t > n ? [] : e.slice(t, n - t + 1)
+ }
+ e = Gr(e).substr(1), t = Gr(t).substr(1);
+ for (var r = n(e.split("/")), i = n(t.split("/")), s = Math.min(r.length, i.length), a = s, o = 0; o < s; o++)
+ if (r[o] !== i[o]) {
+ a = o;
+ break
+ } var c = [];
+ for (o = a; o < r.length; o++) c.push("..");
+ return (c = c.concat(i.slice(a))).join("/")
+ },
+ join: function() {
+ var e = Array.prototype.slice.call(arguments, 0);
+ return Yr(jr(e, (function(e, t) {
+ if ("string" != typeof e) throw new TypeError("Arguments to path.join must be strings");
+ return e
+ })).join("/"))
+ },
+ isAbsolute: qr,
+ normalize: Yr,
+ resolve: Gr
+};
+
+function jr(e, t) {
+ if (e.filter) return e.filter(t);
+ for (var n = [], r = 0; r < e.length; r++) t(e[r], r, e) && n.push(e[r]);
+ return n
+}
+var Vr = "b" === "ab".substr(-1) ? function(e, t, n) {
+ return e.substr(t, n)
+} : function(e, t, n) {
+ return t < 0 && (t = e.length + t), e.substr(t, n)
+};
+
+function Wr(e, t) {
+ return Wr = Object.setPrototypeOf || function(e, t) {
+ return e.__proto__ = t, e
+ }, Wr(e, t)
+}
+var Qr = function(e) {
+ var t, n;
+
+ function r() {
+ return e.apply(this, arguments) || this
+ }
+ n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, Wr(t, n);
+ var i = r.prototype;
+ return i.resolve = function(e, t) {
+ return Kr.resolve(Kr.dirname(e), t)
+ }, i.isRelative = function(e) {
+ return 0 === e.indexOf("./") || 0 === e.indexOf("../")
+ }, r
+}(en.EmitterObj);
+
+function Xr(e, t) {
+ return Xr = Object.setPrototypeOf || function(e, t) {
+ return e.__proto__ = t, e
+ }, Xr(e, t)
+}
+var $r = function(e) {
+ var t, n;
+
+ function r(t) {
+ var n;
+ return (n = e.call(this) || this).precompiled = t || {}, n
+ }
+ return n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, Xr(t, n), r.prototype.getSource = function(e) {
+ return this.precompiled[e] ? {
+ src: {
+ type: "code",
+ obj: this.precompiled[e]
+ },
+ path: e
+ } : null
+ }, r
+}(Qr);
+
+function zr(e, t) {
+ e.prototype = Object.create(t.prototype), e.prototype.constructor = e, Jr(e, t)
+}
+
+function Jr(e, t) {
+ return Jr = Object.setPrototypeOf || function(e, t) {
+ return e.__proto__ = t, e
+ }, Jr(e, t)
+}
+var Zr = {
+ PrecompiledLoader: $r
+ }.PrecompiledLoader,
+ ei = function(e) {
+ function t(t, n) {
+ var r;
+ return n = n || {}, (r = e.call(this) || this).pathsToNames = {}, r.noCache = !!n.noCache, t ? (t = Array.isArray(t) ? t : [t], r.searchPaths = t.map(Kr.normalize)) : r.searchPaths = ["."], r
+ }
+ return zr(t, e), t.prototype.getSource = function(e) {
+ for (var t = null, n = this.searchPaths, r = 0; r < n.length; r++) {
+ var i = Kr.resolve(n[r]),
+ s = Kr.resolve(n[r], e);
+ if (0 === s.indexOf(i) && Br.existsSync(s)) {
+ t = s;
+ break
+ }
+ }
+ if (!t) return null;
+ this.pathsToNames[t] = e;
+ var a = {
+ src: Br.readFileSync(t, "utf-8"),
+ path: t,
+ noCache: this.noCache
+ };
+ return this.emit("load", e, a), a
+ }, t
+ }(Qr),
+ ti = {
+ FileSystemLoader: ei,
+ PrecompiledLoader: Zr,
+ NodeResolveLoader: function(e) {
+ function t(t) {
+ var n;
+ return t = t || {}, (n = e.call(this) || this).pathsToNames = {}, n.noCache = !!t.noCache, n
+ }
+ return zr(t, e), t.prototype.getSource = function(e) {
+ if (/^\.?\.?(\/|\\)/.test(e)) return null;
+ if (/^[A-Z]:/.test(e)) return null;
+ var t;
+ try {
+ t = Ye.resolve(e)
+ } catch (e) {
+ return null
+ }
+ this.pathsToNames[t] = e;
+ var n = {
+ src: Br.readFileSync(t, "utf-8"),
+ path: t,
+ noCache: this.noCache
+ };
+ return this.emit("load", e, n), n
+ }, t
+ }(Qr)
+ },
+ ni = Ke((function(e, t) {
+ var n = kr.SafeString;
+ t.callable = function(e) {
+ return "function" == typeof e
+ }, t.defined = function(e) {
+ return void 0 !== e
+ }, t.divisibleby = function(e, t) {
+ return e % t == 0
+ }, t.escaped = function(e) {
+ return e instanceof n
+ }, t.equalto = function(e, t) {
+ return e === t
+ }, t.eq = t.equalto, t.sameas = t.equalto, t.even = function(e) {
+ return e % 2 == 0
+ }, t.falsy = function(e) {
+ return !e
+ }, t.ge = function(e, t) {
+ return e >= t
+ }, t.greaterthan = function(e, t) {
+ return e > t
+ }, t.gt = t.greaterthan, t.le = function(e, t) {
+ return e <= t
+ }, t.lessthan = function(e, t) {
+ return e < t
+ }, t.lt = t.lessthan, t.lower = function(e) {
+ return e.toLowerCase() === e
+ }, t.ne = function(e, t) {
+ return e !== t
+ }, t.null = function(e) {
+ return null === e
+ }, t.number = function(e) {
+ return "number" == typeof e
+ }, t.odd = function(e) {
+ return e % 2 == 1
+ }, t.string = function(e) {
+ return "string" == typeof e
+ }, t.truthy = function(e) {
+ return !!e
+ }, t.undefined = function(e) {
+ return void 0 === e
+ }, t.upper = function(e) {
+ return e.toUpperCase() === e
+ }, t.iterable = function(e) {
+ return "undefined" != typeof Symbol ? !!e[Symbol.iterator] : Array.isArray(e) || "string" == typeof e
+ }, t.mapping = function(e) {
+ var t = null != e && "object" == typeof e && !Array.isArray(e);
+ return Set ? t && !(e instanceof Set) : t
+ }
+ }));
+
+function ri(e) {
+ var t = -1;
+ return {
+ current: null,
+ reset: function() {
+ t = -1, this.current = null
+ },
+ next: function() {
+ return ++t >= e.length && (t = 0), this.current = e[t], this.current
+ }
+ }
+}
+ni.callable, ni.defined, ni.divisibleby, ni.escaped, ni.equalto, ni.eq, ni.sameas, ni.even, ni.falsy, ni.ge, ni.greaterthan, ni.gt, ni.le, ni.lessthan, ni.lt, ni.lower, ni.ne, ni.number, ni.odd, ni.string, ni.truthy, ni.undefined, ni.upper, ni.iterable, ni.mapping;
+var ii = function() {
+ return {
+ range: function(e, t, n) {
+ void 0 === t ? (t = e, e = 0, n = 1) : n || (n = 1);
+ var r = [];
+ if (n > 0)
+ for (var i = e; i < t; i += n) r.push(i);
+ else
+ for (var s = e; s > t; s += n) r.push(s);
+ return r
+ },
+ cycler: function() {
+ return ri(Array.prototype.slice.call(arguments))
+ },
+ joiner: function(e) {
+ return function(e) {
+ e = e || ",";
+ var t = !0;
+ return function() {
+ var n = t ? "" : e;
+ return t = !1, n
+ }
+ }(e)
+ }
+ }
+};
+
+function si(e, t) {
+ e.prototype = Object.create(t.prototype), e.prototype.constructor = e, ai(e, t)
+}
+
+function ai(e, t) {
+ return ai = Object.setPrototypeOf || function(e, t) {
+ return e.__proto__ = t, e
+ }, ai(e, t)
+}
+var oi = ti.FileSystemLoader,
+ ci = ti.WebLoader,
+ li = ti.PrecompiledLoader,
+ hi = en.Obj,
+ ui = en.EmitterObj,
+ pi = kr.handleError,
+ fi = kr.Frame;
+
+function di(e, t, n) {
+ Gt((function() {
+ e(t, n)
+ }))
+}
+var Ei = {
+ type: "code",
+ obj: {
+ root: function(e, t, n, r, i) {
+ try {
+ i(null, "")
+ } catch (e) {
+ i(pi(e, null, null))
+ }
+ }
+ }
+ },
+ mi = function(e) {
+ function t() {
+ return e.apply(this, arguments) || this
+ }
+ si(t, e);
+ var n = t.prototype;
+ return n.init = function(e, t) {
+ var n = this;
+ t = this.opts = t || {}, this.opts.dev = !!t.dev, this.opts.autoescape = null == t.autoescape || t.autoescape, this.opts.throwOnUndefined = !!t.throwOnUndefined, this.opts.trimBlocks = !!t.trimBlocks, this.opts.lstripBlocks = !!t.lstripBlocks, this.loaders = [], e ? this.loaders = je.isArray(e) ? e : [e] : oi ? this.loaders = [new oi("views")] : ci && (this.loaders = [new ci("/views")]), "undefined" != typeof window && window.jinja2Precompiled && this.loaders.unshift(new li(window.jinja2Precompiled)), this._initLoaders(), this.globals = ii(), this.filters = {}, this.tests = {}, this.asyncFilters = [], this.extensions = {}, this.extensionsList = [], je._entries(wr).forEach((function(e) {
+ var t = e[0],
+ r = e[1];
+ return n.addFilter(t, r)
+ })), je._entries(ni).forEach((function(e) {
+ var t = e[0],
+ r = e[1];
+ return n.addTest(t, r)
+ }))
+ }, n._initLoaders = function() {
+ var e = this;
+ this.loaders.forEach((function(t) {
+ t.cache = {}, "function" == typeof t.on && (t.on("update", (function(n, r) {
+ t.cache[n] = null, e.emit("update", n, r, t)
+ })), t.on("load", (function(n, r) {
+ e.emit("load", n, r, t)
+ })))
+ }))
+ }, n.invalidateCache = function() {
+ this.loaders.forEach((function(e) {
+ e.cache = {}
+ }))
+ }, n.addExtension = function(e, t) {
+ return t.__name = e, this.extensions[e] = t, this.extensionsList.push(t), this
+ }, n.removeExtension = function(e) {
+ var t = this.getExtension(e);
+ t && (this.extensionsList = je.without(this.extensionsList, t), delete this.extensions[e])
+ }, n.getExtension = function(e) {
+ return this.extensions[e]
+ }, n.hasExtension = function(e) {
+ return !!this.extensions[e]
+ }, n.addGlobal = function(e, t) {
+ return this.globals[e] = t, this
+ }, n.getGlobal = function(e) {
+ if (void 0 === this.globals[e]) throw new Error("global not found: " + e);
+ return this.globals[e]
+ }, n.addFilter = function(e, t, n) {
+ var r = t;
+ return n && this.asyncFilters.push(e), this.filters[e] = r, this
+ }, n.getFilter = function(e) {
+ if (!this.filters[e]) throw new Error("filter not found: " + e);
+ return this.filters[e]
+ }, n.addTest = function(e, t) {
+ return this.tests[e] = t, this
+ }, n.getTest = function(e) {
+ if (!this.tests[e]) throw new Error("test not found: " + e);
+ return this.tests[e]
+ }, n.resolveTemplate = function(e, t, n) {
+ return !(!e.isRelative || !t) && e.isRelative(n) && e.resolve ? e.resolve(t, n) : n
+ }, n.getTemplate = function(e, t, n, r, i) {
+ var s, a = this,
+ o = this,
+ c = null;
+ if (e && e.raw && (e = e.raw), je.isFunction(n) && (i = n, n = null, t = t || !1), je.isFunction(t) && (i = t, t = !1), e instanceof _i) c = e;
+ else {
+ if ("string" != typeof e) throw new Error("template names must be a string: " + e);
+ for (var l = 0; l < this.loaders.length; l++) {
+ var h = this.loaders[l];
+ if (c = h.cache[this.resolveTemplate(h, n, e)]) break
+ }
+ }
+ if (c) return t && c.compile(), i ? void i(null, c) : c;
+ return je.asyncIter(this.loaders, (function(t, r, i, s) {
+ function a(e, n) {
+ e ? s(e) : n ? (n.loader = t, s(null, n)) : i()
+ }
+ e = o.resolveTemplate(t, n, e), t.async ? t.getSource(e, a) : a(null, t.getSource(e))
+ }), (function(n, o) {
+ if (o || n || r || (n = new Error("template not found: " + e)), n) {
+ if (i) return void i(n);
+ throw n
+ }
+ var c;
+ o ? (c = new _i(o.src, a, o.path, t), o.noCache || (o.loader.cache[e] = c)) : c = new _i(Ei, a, "", t), i ? i(null, c) : s = c
+ })), s
+ }, n.express = function(e) {
+ return function(e, t) {
+ function n(e, t) {
+ if (this.name = e, this.path = e, this.defaultEngine = t.defaultEngine, this.ext = Kr.extname(e), !this.ext && !this.defaultEngine) throw new Error("No default engine was specified and no extension was provided.");
+ this.ext || (this.name += this.ext = ("." !== this.defaultEngine[0] ? "." : "") + this.defaultEngine)
+ }
+ return n.prototype.render = function(t, n) {
+ e.render(this.name, t, n)
+ }, t.set("view", n), t.set("jinja2Env", e), e
+ }(this, e)
+ }, n.render = function(e, t, n) {
+ je.isFunction(t) && (n = t, t = null);
+ var r = null;
+ return this.getTemplate(e, (function(e, i) {
+ if (e && n) di(n, e);
+ else {
+ if (e) throw e;
+ r = i.render(t, n)
+ }
+ })), r
+ }, n.renderString = function(e, t, n, r) {
+ return je.isFunction(n) && (r = n, n = {}), new _i(e, this, (n = n || {}).path).render(t, r)
+ }, n.waterfall = function(e, t, n) {
+ return qt(e, t, n)
+ }, t
+ }(ui),
+ Ti = function(e) {
+ function t() {
+ return e.apply(this, arguments) || this
+ }
+ si(t, e);
+ var n = t.prototype;
+ return n.init = function(e, t, n) {
+ var r = this;
+ this.env = n || new mi, this.ctx = je.extend({}, e), this.blocks = {}, this.exported = [], je.keys(t).forEach((function(e) {
+ r.addBlock(e, t[e])
+ }))
+ }, n.lookup = function(e) {
+ return e in this.env.globals && !(e in this.ctx) ? this.env.globals[e] : this.ctx[e]
+ }, n.setVariable = function(e, t) {
+ this.ctx[e] = t
+ }, n.getVariables = function() {
+ return this.ctx
+ }, n.addBlock = function(e, t) {
+ return this.blocks[e] = this.blocks[e] || [], this.blocks[e].push(t), this
+ }, n.getBlock = function(e) {
+ if (!this.blocks[e]) throw new Error('unknown block "' + e + '"');
+ return this.blocks[e][0]
+ }, n.getSuper = function(e, t, n, r, i, s) {
+ var a = je.indexOf(this.blocks[t] || [], n),
+ o = this.blocks[t][a + 1];
+ if (-1 === a || !o) throw new Error('no super block available for "' + t + '"');
+ o(e, this, r, i, s)
+ }, n.addExport = function(e) {
+ this.exported.push(e)
+ }, n.getExported = function() {
+ var e = this,
+ t = {};
+ return this.exported.forEach((function(n) {
+ t[n] = e.ctx[n]
+ })), t
+ }, t
+ }(hi),
+ _i = function(e) {
+ function t() {
+ return e.apply(this, arguments) || this
+ }
+ si(t, e);
+ var n = t.prototype;
+ return n.init = function(e, t, n, r) {
+ if (this.env = t || new mi, je.isObject(e)) switch (e.type) {
+ case "code":
+ this.tmplProps = e.obj;
+ break;
+ case "string":
+ this.tmplStr = e.obj;
+ break;
+ default:
+ throw new Error("Unexpected template object type " + e.type + "; expected 'code', or 'string'")
+ } else {
+ if (!je.isString(e)) throw new Error("src must be a string or an object describing the source");
+ this.tmplStr = e
+ }
+ if (this.path = n, r) try {
+ this._compile()
+ } catch (e) {
+ throw je._prettifyError(this.path, this.env.opts.dev, e)
+ } else this.compiled = !1
+ }, n.render = function(e, t, n) {
+ var r = this;
+ "function" == typeof e ? (n = e, e = {}) : "function" == typeof t && (n = t, t = null);
+ var i = !t;
+ try {
+ this.compile()
+ } catch (e) {
+ var s = je._prettifyError(this.path, this.env.opts.dev, e);
+ if (n) return di(n, s);
+ throw s
+ }
+ var a = new Ti(e || {}, this.blocks, this.env),
+ o = t ? t.push(!0) : new fi;
+ o.topLevel = !0;
+ var c = null,
+ l = !1;
+ return this.rootRenderFunc(this.env, a, o, kr, (function(e, t) {
+ if (!l || !n || void 0 === t)
+ if (e && (e = je._prettifyError(r.path, r.env.opts.dev, e), l = !0), n) i ? di(n, e, t) : n(e, t);
+ else {
+ if (e) throw e;
+ c = t
+ }
+ })), c
+ }, n.getExported = function(e, t, n) {
+ "function" == typeof e && (n = e, e = {}), "function" == typeof t && (n = t, t = null);
+ try {
+ this.compile()
+ } catch (e) {
+ if (n) return n(e);
+ throw e
+ }
+ var r = t ? t.push() : new fi;
+ r.topLevel = !0;
+ var i = new Ti(e || {}, this.blocks, this.env);
+ this.rootRenderFunc(this.env, i, r, kr, (function(e) {
+ e ? n(e, null) : n(null, i.getExported())
+ }))
+ }, n.compile = function() {
+ this.compiled || this._compile()
+ }, n._compile = function() {
+ var e;
+ if (this.tmplProps) e = this.tmplProps;
+ else {
+ var t = xr.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts);
+ e = new Function(t)()
+ }
+ this.blocks = this._getBlocks(e), this.rootRenderFunc = e.root, this.compiled = !0
+ }, n._getBlocks = function(e) {
+ var t = {};
+ return je.keys(e).forEach((function(n) {
+ "b_" === n.slice(0, 2) && (t[n.slice(2)] = e[n])
+ })), t
+ }, t
+ }(hi),
+ Ai = {
+ Environment: mi,
+ Template: _i
+ };
+je._prettifyError;
+var gi, Ni = Ai.Environment;
+
+function Ci(e, t) {
+ var n;
+ return t = t || {}, je.isObject(e) && (t = e, e = null), ti.FileSystemLoader ? n = new ti.FileSystemLoader(e, {
+ watch: t.watch,
+ noCache: t.noCache
+ }) : ti.WebLoader && (n = new ti.WebLoader(e, {
+ useCache: t.web && t.web.useCache,
+ async: t.web && t.web.async
+ })), gi = new Ni(n, t), t && t.express && gi.express(t.express), gi
+}
+ti.FileSystemLoader, ti.NodeResolveLoader, ti.PrecompiledLoader, ti.WebLoader;
+var Ii = function(e, t, n) {
+ return gi || Ci(), gi.renderString(e, t, n)
+ },
+ Si = function() {
+ return Si = Object.assign || function(e) {
+ for (var t, n = 1, r = arguments.length; n < r; n++)
+ for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
+ return e
+ }, Si.apply(this, arguments)
+ };
+
+function bi(e, t, n) {
+ return e ? e(null != t ? t : e._root.children, null, void 0, n).toString() : ""
+}
+
+function Oi(e, t) {
+ return bi(this, function(e, t) {
+ return !t && "object" == typeof e && null != e && !("length" in e) && !("type" in e)
+ }(e) ? void(t = e) : e, Si(Si(Si({}, n), null == this ? void 0 : this._options), i(null != t ? t : {})))
+}
+
+function yi(e) {
+ return bi(this, e, Si(Si({}, this._options), {
+ xmlMode: !0
+ }))
+}
+
+function Li(e) {
+ for (var t = e || (this ? this.root() : []), n = "", r = 0; r < t.length; r++) n += z(t[r]);
+ return n
+}
+
+function ki(e, t, r) {
+ if (void 0 === r && (r = "boolean" == typeof t && t), !e || "string" != typeof e) return null;
+ "boolean" == typeof t && (r = t);
+ var i = this.load(e, n, !1);
+ return r || i("script").remove(), i.root()[0].children.slice()
+}
+
+function vi() {
+ return this(this._root)
+}
+
+function Di(e, t) {
+ if (t === e) return !1;
+ for (var n = t; n && n !== n.parent;)
+ if ((n = n.parent) === e) return !0;
+ return !1
+}
+
+function Ri(e, t) {
+ if (Mi(e) && Mi(t)) {
+ for (var n = e.length, r = +t.length, i = 0; i < r; i++) e[n++] = t[i];
+ return e.length = n, e
+ }
+}
+
+function Mi(e) {
+ if (Array.isArray(e)) return !0;
+ if ("object" != typeof e || !Object.prototype.hasOwnProperty.call(e, "length") || "number" != typeof e.length || e.length < 0) return !1;
+ for (var t = 0; t < e.length; t++)
+ if (!(t in e)) return !1;
+ return !0
+}
+var Pi, xi = Object.freeze({
+ __proto__: null,
+ html: Oi,
+ xml: yi,
+ text: Li,
+ parseHTML: ki,
+ root: vi,
+ contains: Di,
+ merge: Ri,
+ jp: function(e, t) {
+ return He({
+ path: e,
+ json: t
+ })
+ },
+ jpo: function(e) {
+ return He(e)
+ },
+ jinja2: function(e, t) {
+ return Ii(e, t)
+ }
+});
+
+function wi(e) {
+ return null != e.cheerio
+}
+
+function Bi(e, t) {
+ for (var n = e.length, r = 0; r < n; r++) t(e[r], r);
+ return e
+}
+
+function Fi(e) {
+ var t = "length" in e ? Array.prototype.map.call(e, (function(e) {
+ return v(e, !0)
+ })) : [v(e, !0)],
+ n = new N(t);
+ return t.forEach((function(e) {
+ e.parent = n
+ })), t
+}
+
+function Ui(e) {
+ var t = e.indexOf("<");
+ if (t < 0 || t > e.length - 3) return !1;
+ var n = e.charCodeAt(t + 1);
+ return (n >= Pi.LowerA && n <= Pi.LowerZ || n >= Pi.UpperA && n <= Pi.UpperZ || n === Pi.Exclamation) && e.includes(">", t + 2)
+}! function(e) {
+ e[e.LowerA = 97] = "LowerA", e[e.LowerZ = 122] = "LowerZ", e[e.UpperA = 65] = "UpperA", e[e.UpperZ = 90] = "UpperZ", e[e.Exclamation = 33] = "Exclamation"
+}(Pi || (Pi = {}));
+var Hi = Object.prototype.hasOwnProperty,
+ Gi = /\s+/,
+ Yi = {
+ null: null,
+ true: !0,
+ false: !1
+ },
+ qi = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ Ki = /^{[^]*}$|^\[[^]*]$/;
+
+function ji(e, t, n) {
+ var r;
+ if (e && I(e)) return null !== (r = e.attribs) && void 0 !== r || (e.attribs = {}), t ? Hi.call(e.attribs, t) ? !n && qi.test(t) ? t : e.attribs[t] : "option" === e.name && "value" === t ? Li(e.children) : "input" !== e.name || "radio" !== e.attribs.type && "checkbox" !== e.attribs.type || "value" !== t ? void 0 : "on" : e.attribs
+}
+
+function Vi(e, t, n) {
+ null === n ? zi(e, t) : e.attribs[t] = "".concat(n)
+}
+
+function Wi(e, t, n) {
+ return t in e ? e[t] : !n && qi.test(t) ? void 0 !== ji(e, t, !1) : ji(e, t, n)
+}
+
+function Qi(e, t, n, r) {
+ t in e ? e[t] = n : Vi(e, t, !r && qi.test(t) ? n ? "" : null : "".concat(n))
+}
+
+function Xi(e, t, n) {
+ var r, i = e;
+ null !== (r = i.data) && void 0 !== r || (i.data = {}), "object" == typeof t ? Object.assign(i.data, t) : "string" == typeof t && void 0 !== n && (i.data[t] = n)
+}
+
+function $i(e, t) {
+ var n, r, i, s;
+ null == t ? r = (n = Object.keys(e.attribs).filter((function(e) {
+ return e.startsWith("data-")
+ }))).map((function(e) {
+ return e.slice("data-".length).replace(/[_.-](\w|$)/g, (function(e, t) {
+ return t.toUpperCase()
+ }))
+ })) : (n = ["data-" + (s = t, s.replace(/[A-Z]/g, "-$&").toLowerCase())], r = [t]);
+ for (var a = 0; a < n.length; ++a) {
+ var o = n[a],
+ c = r[a];
+ if (Hi.call(e.attribs, o) && !Hi.call(e.data, c)) {
+ if (i = e.attribs[o], Hi.call(Yi, i)) i = Yi[i];
+ else if (i === String(Number(i))) i = Number(i);
+ else if (Ki.test(i)) try {
+ i = JSON.parse(i)
+ } catch (e) {}
+ e.data[c] = i
+ }
+ }
+ return null == t ? e.data : i
+}
+
+function zi(e, t) {
+ e.attribs && Hi.call(e.attribs, t) && delete e.attribs[t]
+}
+
+function Ji(e) {
+ return e ? e.trim().split(Gi) : []
+}
+var Zi, es, ts = Object.freeze({
+ __proto__: null,
+ attr: function(e, t) {
+ if ("object" == typeof e || void 0 !== t) {
+ if ("function" == typeof t) {
+ if ("string" != typeof e) throw new Error("Bad combination of arguments.");
+ return Bi(this, (function(n, r) {
+ I(n) && Vi(n, e, t.call(n, r, n.attribs[e]))
+ }))
+ }
+ return Bi(this, (function(n) {
+ I(n) && ("object" == typeof e ? Object.keys(e).forEach((function(t) {
+ var r = e[t];
+ Vi(n, t, r)
+ })) : Vi(n, e, t))
+ }))
+ }
+ return arguments.length > 1 ? this : ji(this[0], e, this.options.xmlMode)
+ },
+ prop: function(e, t) {
+ var n, r = this;
+ if ("string" == typeof e && void 0 === t) {
+ var i = this[0];
+ if (!i || !I(i)) return;
+ switch (e) {
+ case "style":
+ var s = this.css(),
+ a = Object.keys(s);
+ return a.forEach((function(e, t) {
+ s[t] = e
+ })), s.length = a.length, s;
+ case "tagName":
+ case "nodeName":
+ return i.name.toUpperCase();
+ case "href":
+ case "src":
+ var o = null === (n = i.attribs) || void 0 === n ? void 0 : n[e];
+ return "undefined" == typeof URL || ("href" !== e || "a" !== i.tagName && "link" !== i.name) && ("src" !== e || "img" !== i.tagName && "iframe" !== i.tagName && "audio" !== i.tagName && "video" !== i.tagName && "source" !== i.tagName) || void 0 === o || !this.options.baseURI ? o : new URL(o, this.options.baseURI).href;
+ case "innerText":
+ return J(i);
+ case "textContent":
+ return z(i);
+ case "outerHTML":
+ return this.clone().wrap("").parent().html();
+ case "innerHTML":
+ return this.html();
+ default:
+ return Wi(i, e, this.options.xmlMode)
+ }
+ }
+ if ("object" == typeof e || void 0 !== t) {
+ if ("function" == typeof t) {
+ if ("object" == typeof e) throw new Error("Bad combination of arguments.");
+ return Bi(this, (function(n, i) {
+ I(n) && Qi(n, e, t.call(n, i, Wi(n, e, r.options.xmlMode)), r.options.xmlMode)
+ }))
+ }
+ return Bi(this, (function(n) {
+ I(n) && ("object" == typeof e ? Object.keys(e).forEach((function(t) {
+ var i = e[t];
+ Qi(n, t, i, r.options.xmlMode)
+ })) : Qi(n, e, t, r.options.xmlMode))
+ }))
+ }
+ },
+ data: function(e, t) {
+ var n, r = this[0];
+ if (r && I(r)) {
+ var i = r;
+ return null !== (n = i.data) && void 0 !== n || (i.data = {}), e ? "object" == typeof e || void 0 !== t ? (Bi(this, (function(n) {
+ I(n) && ("object" == typeof e ? Xi(n, e) : Xi(n, e, t))
+ })), this) : Hi.call(i.data, e) ? i.data[e] : $i(i, e) : $i(i)
+ }
+ },
+ val: function(e) {
+ var t = 0 === arguments.length,
+ n = this[0];
+ if (!n || !I(n)) return t ? void 0 : this;
+ switch (n.name) {
+ case "textarea":
+ return this.text(e);
+ case "select":
+ var r = this.find("option:selected");
+ if (!t) {
+ if (null == this.attr("multiple") && "object" == typeof e) return this;
+ this.find("option").removeAttr("selected");
+ for (var i = "object" != typeof e ? [e] : e, s = 0; s < i.length; s++) this.find('option[value="'.concat(i[s], '"]')).attr("selected", "");
+ return this
+ }
+ return this.attr("multiple") ? r.toArray().map((function(e) {
+ return Li(e.children)
+ })) : r.attr("value");
+ case "input":
+ case "option":
+ return t ? this.attr("value") : this.attr("value", e)
+ }
+ },
+ removeAttr: function(e) {
+ for (var t = Ji(e), n = function(e) {
+ Bi(r, (function(n) {
+ I(n) && zi(n, t[e])
+ }))
+ }, r = this, i = 0; i < t.length; i++) n(i);
+ return this
+ },
+ hasClass: function(e) {
+ return this.toArray().some((function(t) {
+ var n = I(t) && t.attribs.class,
+ r = -1;
+ if (n && e.length)
+ for (;
+ (r = n.indexOf(e, r + 1)) > -1;) {
+ var i = r + e.length;
+ if ((0 === r || Gi.test(n[r - 1])) && (i === n.length || Gi.test(n[i]))) return !0
+ }
+ return !1
+ }))
+ },
+ addClass: function e(t) {
+ if ("function" == typeof t) return Bi(this, (function(n, r) {
+ if (I(n)) {
+ var i = n.attribs.class || "";
+ e.call([n], t.call(n, r, i))
+ }
+ }));
+ if (!t || "string" != typeof t) return this;
+ for (var n = t.split(Gi), r = this.length, i = 0; i < r; i++) {
+ var s = this[i];
+ if (I(s)) {
+ var a = ji(s, "class", !1);
+ if (a) {
+ for (var o = " ".concat(a, " "), c = 0; c < n.length; c++) {
+ var l = "".concat(n[c], " ");
+ o.includes(" ".concat(l)) || (o += l)
+ }
+ Vi(s, "class", o.trim())
+ } else Vi(s, "class", n.join(" ").trim())
+ }
+ }
+ return this
+ },
+ removeClass: function e(t) {
+ if ("function" == typeof t) return Bi(this, (function(n, r) {
+ I(n) && e.call([n], t.call(n, r, n.attribs.class || ""))
+ }));
+ var n = Ji(t),
+ r = n.length,
+ i = 0 === arguments.length;
+ return Bi(this, (function(e) {
+ if (I(e))
+ if (i) e.attribs.class = "";
+ else {
+ for (var t = Ji(e.attribs.class), s = !1, a = 0; a < r; a++) {
+ var o = t.indexOf(n[a]);
+ o >= 0 && (t.splice(o, 1), s = !0, a--)
+ }
+ s && (e.attribs.class = t.join(" "))
+ }
+ }))
+ },
+ toggleClass: function e(t, n) {
+ if ("function" == typeof t) return Bi(this, (function(r, i) {
+ I(r) && e.call([r], t.call(r, i, r.attribs.class || "", n), n)
+ }));
+ if (!t || "string" != typeof t) return this;
+ for (var r = t.split(Gi), i = r.length, s = "boolean" == typeof n ? n ? 1 : -1 : 0, a = this.length, o = 0; o < a; o++) {
+ var c = this[o];
+ if (I(c)) {
+ for (var l = Ji(c.attribs.class), h = 0; h < i; h++) {
+ var u = l.indexOf(r[h]);
+ s >= 0 && u < 0 ? l.push(r[h]) : s <= 0 && u >= 0 && l.splice(u, 1)
+ }
+ c.attribs.class = l.join(" ")
+ }
+ }
+ return this
+ }
+});
+! function(e) {
+ e.Attribute = "attribute", e.Pseudo = "pseudo", e.PseudoElement = "pseudo-element", e.Tag = "tag", e.Universal = "universal", e.Adjacent = "adjacent", e.Child = "child", e.Descendant = "descendant", e.Parent = "parent", e.Sibling = "sibling", e.ColumnCombinator = "column-combinator"
+}(Zi || (Zi = {})),
+function(e) {
+ e.Any = "any", e.Element = "element", e.End = "end", e.Equals = "equals", e.Exists = "exists", e.Hyphen = "hyphen", e.Not = "not", e.Start = "start"
+}(es || (es = {}));
+const ns = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,
+ rs = /\\([\da-f]{1,6}\s?|(\s)|.)/gi,
+ is = new Map([
+ [126, es.Element],
+ [94, es.Start],
+ [36, es.End],
+ [42, es.Any],
+ [33, es.Not],
+ [124, es.Hyphen]
+ ]),
+ ss = new Set(["has", "not", "matches", "is", "where", "host", "host-context"]);
+
+function as(e) {
+ switch (e.type) {
+ case Zi.Adjacent:
+ case Zi.Child:
+ case Zi.Descendant:
+ case Zi.Parent:
+ case Zi.Sibling:
+ case Zi.ColumnCombinator:
+ return !0;
+ default:
+ return !1
+ }
+}
+const os = new Set(["contains", "icontains"]);
+
+function cs(e, t, n) {
+ const r = parseInt(t, 16) - 65536;
+ return r != r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
+}
+
+function ls(e) {
+ return e.replace(rs, cs)
+}
+
+function hs(e) {
+ return 39 === e || 34 === e
+}
+
+function us(e) {
+ return 32 === e || 9 === e || 10 === e || 12 === e || 13 === e
+}
+
+function ps(e) {
+ const t = [],
+ n = fs(t, `${e}`, 0);
+ if (n < e.length) throw new Error(`Unmatched selector: ${e.slice(n)}`);
+ return t
+}
+
+function fs(e, t, n) {
+ let r = [];
+
+ function i(e) {
+ const r = t.slice(n + e).match(ns);
+ if (!r) throw new Error(`Expected name, found ${t.slice(n)}`);
+ const [i] = r;
+ return n += e + i.length, ls(i)
+ }
+
+ function s(e) {
+ for (n += e; n < t.length && us(t.charCodeAt(n));) n++
+ }
+
+ function a() {
+ const e = n += 1;
+ let r = 1;
+ for (; r > 0 && n < t.length; n++) 40 !== t.charCodeAt(n) || o(n) ? 41 !== t.charCodeAt(n) || o(n) || r-- : r++;
+ if (r) throw new Error("Parenthesis not matched");
+ return ls(t.slice(e, n - 1))
+ }
+
+ function o(e) {
+ let n = 0;
+ for (; 92 === t.charCodeAt(--e);) n++;
+ return 1 == (1 & n)
+ }
+
+ function c() {
+ if (r.length > 0 && as(r[r.length - 1])) throw new Error("Did not expect successive traversals.")
+ }
+
+ function l(e) {
+ r.length > 0 && r[r.length - 1].type === Zi.Descendant ? r[r.length - 1].type = e : (c(), r.push({
+ type: e
+ }))
+ }
+
+ function h(e, t) {
+ r.push({
+ type: Zi.Attribute,
+ name: e,
+ action: t,
+ value: i(1),
+ namespace: null,
+ ignoreCase: "quirks"
+ })
+ }
+
+ function u() {
+ if (r.length && r[r.length - 1].type === Zi.Descendant && r.pop(), 0 === r.length) throw new Error("Empty sub-selector");
+ e.push(r)
+ }
+ if (s(0), t.length === n) return n;
+ e: for (; n < t.length;) {
+ const e = t.charCodeAt(n);
+ switch (e) {
+ case 32:
+ case 9:
+ case 10:
+ case 12:
+ case 13:
+ 0 !== r.length && r[0].type === Zi.Descendant || (c(), r.push({
+ type: Zi.Descendant
+ })), s(1);
+ break;
+ case 62:
+ l(Zi.Child), s(1);
+ break;
+ case 60:
+ l(Zi.Parent), s(1);
+ break;
+ case 126:
+ l(Zi.Sibling), s(1);
+ break;
+ case 43:
+ l(Zi.Adjacent), s(1);
+ break;
+ case 46:
+ h("class", es.Element);
+ break;
+ case 35:
+ h("id", es.Equals);
+ break;
+ case 91: {
+ let e;
+ s(1);
+ let a = null;
+ 124 === t.charCodeAt(n) ? e = i(1) : t.startsWith("*|", n) ? (a = "*", e = i(2)) : (e = i(0), 124 === t.charCodeAt(n) && 61 !== t.charCodeAt(n + 1) && (a = e, e = i(1))), s(0);
+ let c = es.Exists;
+ const l = is.get(t.charCodeAt(n));
+ if (l) {
+ if (c = l, 61 !== t.charCodeAt(n + 1)) throw new Error("Expected `=`");
+ s(2)
+ } else 61 === t.charCodeAt(n) && (c = es.Equals, s(1));
+ let h = "",
+ u = null;
+ if ("exists" !== c) {
+ if (hs(t.charCodeAt(n))) {
+ const e = t.charCodeAt(n);
+ let r = n + 1;
+ for (; r < t.length && (t.charCodeAt(r) !== e || o(r));) r += 1;
+ if (t.charCodeAt(r) !== e) throw new Error("Attribute value didn't end");
+ h = ls(t.slice(n + 1, r)), n = r + 1
+ } else {
+ const e = n;
+ for (; n < t.length && (!us(t.charCodeAt(n)) && 93 !== t.charCodeAt(n) || o(n));) n += 1;
+ h = ls(t.slice(e, n))
+ }
+ s(0);
+ const e = 32 | t.charCodeAt(n);
+ 115 === e ? (u = !1, s(1)) : 105 === e && (u = !0, s(1))
+ }
+ if (93 !== t.charCodeAt(n)) throw new Error("Attribute selector didn't terminate");
+ n += 1;
+ const p = {
+ type: Zi.Attribute,
+ name: e,
+ action: c,
+ value: h,
+ namespace: a,
+ ignoreCase: u
+ };
+ r.push(p);
+ break
+ }
+ case 58: {
+ if (58 === t.charCodeAt(n + 1)) {
+ r.push({
+ type: Zi.PseudoElement,
+ name: i(2).toLowerCase(),
+ data: 40 === t.charCodeAt(n) ? a() : null
+ });
+ continue
+ }
+ const e = i(1).toLowerCase();
+ let s = null;
+ if (40 === t.charCodeAt(n))
+ if (ss.has(e)) {
+ if (hs(t.charCodeAt(n + 1))) throw new Error(`Pseudo-selector ${e} cannot be quoted`);
+ if (s = [], n = fs(s, t, n + 1), 41 !== t.charCodeAt(n)) throw new Error(`Missing closing parenthesis in :${e} (${t})`);
+ n += 1
+ } else {
+ if (s = a(), os.has(e)) {
+ const e = s.charCodeAt(0);
+ e === s.charCodeAt(s.length - 1) && hs(e) && (s = s.slice(1, -1))
+ }
+ s = ls(s)
+ } r.push({
+ type: Zi.Pseudo,
+ name: e,
+ data: s
+ });
+ break
+ }
+ case 44:
+ u(), r = [], s(1);
+ break;
+ default: {
+ if (t.startsWith("/*", n)) {
+ const e = t.indexOf("*/", n + 2);
+ if (e < 0) throw new Error("Comment was not terminated");
+ n = e + 2, 0 === r.length && s(0);
+ break
+ }
+ let a, o = null;
+ if (42 === e) n += 1, a = "*";
+ else if (124 === e) {
+ if (a = "", 124 === t.charCodeAt(n + 1)) {
+ l(Zi.ColumnCombinator), s(2);
+ break
+ }
+ } else {
+ if (!ns.test(t.slice(n))) break e;
+ a = i(0)
+ }
+ 124 === t.charCodeAt(n) && 124 !== t.charCodeAt(n + 1) && (o = a, 42 === t.charCodeAt(n + 1) ? (a = "*", n += 2) : a = i(1)), r.push("*" === a ? {
+ type: Zi.Universal,
+ namespace: o
+ } : {
+ type: Zi.Tag,
+ name: a,
+ namespace: o
+ })
+ }
+ }
+ }
+ return u(), n
+}
+var ds = {
+ trueFunc: function() {
+ return !0
+ },
+ falseFunc: function() {
+ return !1
+ }
+ },
+ Es = ds.trueFunc;
+const ms = new Map([
+ [Zi.Universal, 50],
+ [Zi.Tag, 30],
+ [Zi.Attribute, 1],
+ [Zi.Pseudo, 0]
+]);
+
+function Ts(e) {
+ return !ms.has(e.type)
+}
+const _s = new Map([
+ [es.Exists, 10],
+ [es.Equals, 8],
+ [es.Not, 7],
+ [es.Start, 6],
+ [es.End, 6],
+ [es.Any, 5]
+]);
+
+function As(e) {
+ const t = e.map(gs);
+ for (let n = 1; n < e.length; n++) {
+ const r = t[n];
+ if (!(r < 0))
+ for (let i = n - 1; i >= 0 && r < t[i]; i--) {
+ const n = e[i + 1];
+ e[i + 1] = e[i], e[i] = n, t[i + 1] = t[i], t[i] = r
+ }
+ }
+}
+
+function gs(e) {
+ var t, n;
+ let r = null !== (t = ms.get(e.type)) && void 0 !== t ? t : -1;
+ return e.type === Zi.Attribute ? (r = null !== (n = _s.get(e.action)) && void 0 !== n ? n : 4, e.action === es.Equals && "id" === e.name && (r = 9), e.ignoreCase && (r >>= 1)) : e.type === Zi.Pseudo && (e.data ? "has" === e.name || "contains" === e.name ? r = 0 : Array.isArray(e.data) ? (r = Math.min(...e.data.map((e => Math.min(...e.map(gs))))), r < 0 && (r = 0)) : r = 2 : r = 3), r
+}
+const Ns = /[-[\]{}()*+?.,\\^$|#\s]/g;
+
+function Cs(e) {
+ return e.replace(Ns, "\\$&")
+}
+const Is = new Set(["accept", "accept-charset", "align", "alink", "axis", "bgcolor", "charset", "checked", "clear", "codetype", "color", "compact", "declare", "defer", "dir", "direction", "disabled", "enctype", "face", "frame", "hreflang", "http-equiv", "lang", "language", "link", "media", "method", "multiple", "nohref", "noresize", "noshade", "nowrap", "readonly", "rel", "rev", "rules", "scope", "scrolling", "selected", "shape", "target", "text", "type", "valign", "valuetype", "vlink"]);
+
+function Ss(e, t) {
+ return "boolean" == typeof e.ignoreCase ? e.ignoreCase : "quirks" === e.ignoreCase ? !!t.quirksMode : !t.xmlMode && Is.has(e.name)
+}
+const bs = {
+ equals(e, t, n) {
+ const {
+ adapter: r
+ } = n, {
+ name: i
+ } = t;
+ let {
+ value: s
+ } = t;
+ return Ss(t, n) ? (s = s.toLowerCase(), t => {
+ const n = r.getAttributeValue(t, i);
+ return null != n && n.length === s.length && n.toLowerCase() === s && e(t)
+ }) : t => r.getAttributeValue(t, i) === s && e(t)
+ },
+ hyphen(e, t, n) {
+ const {
+ adapter: r
+ } = n, {
+ name: i
+ } = t;
+ let {
+ value: s
+ } = t;
+ const a = s.length;
+ return Ss(t, n) ? (s = s.toLowerCase(), function(t) {
+ const n = r.getAttributeValue(t, i);
+ return null != n && (n.length === a || "-" === n.charAt(a)) && n.substr(0, a).toLowerCase() === s && e(t)
+ }) : function(t) {
+ const n = r.getAttributeValue(t, i);
+ return null != n && (n.length === a || "-" === n.charAt(a)) && n.substr(0, a) === s && e(t)
+ }
+ },
+ element(e, t, n) {
+ const {
+ adapter: r
+ } = n, {
+ name: i,
+ value: s
+ } = t;
+ if (/\s/.test(s)) return ds.falseFunc;
+ const a = new RegExp(`(?:^|\\s)${Cs(s)}(?:$|\\s)`, Ss(t, n) ? "i" : "");
+ return function(t) {
+ const n = r.getAttributeValue(t, i);
+ return null != n && n.length >= s.length && a.test(n) && e(t)
+ }
+ },
+ exists: (e, {
+ name: t
+ }, {
+ adapter: n
+ }) => r => n.hasAttrib(r, t) && e(r),
+ start(e, t, n) {
+ const {
+ adapter: r
+ } = n, {
+ name: i
+ } = t;
+ let {
+ value: s
+ } = t;
+ const a = s.length;
+ return 0 === a ? ds.falseFunc : Ss(t, n) ? (s = s.toLowerCase(), t => {
+ const n = r.getAttributeValue(t, i);
+ return null != n && n.length >= a && n.substr(0, a).toLowerCase() === s && e(t)
+ }) : t => {
+ var n;
+ return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.startsWith(s)) && e(t)
+ }
+ },
+ end(e, t, n) {
+ const {
+ adapter: r
+ } = n, {
+ name: i
+ } = t;
+ let {
+ value: s
+ } = t;
+ const a = -s.length;
+ return 0 === a ? ds.falseFunc : Ss(t, n) ? (s = s.toLowerCase(), t => {
+ var n;
+ return (null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.substr(a).toLowerCase()) === s && e(t)
+ }) : t => {
+ var n;
+ return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.endsWith(s)) && e(t)
+ }
+ },
+ any(e, t, n) {
+ const {
+ adapter: r
+ } = n, {
+ name: i,
+ value: s
+ } = t;
+ if ("" === s) return ds.falseFunc;
+ if (Ss(t, n)) {
+ const t = new RegExp(Cs(s), "i");
+ return function(n) {
+ const a = r.getAttributeValue(n, i);
+ return null != a && a.length >= s.length && t.test(a) && e(n)
+ }
+ }
+ return t => {
+ var n;
+ return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.includes(s)) && e(t)
+ }
+ },
+ not(e, t, n) {
+ const {
+ adapter: r
+ } = n, {
+ name: i
+ } = t;
+ let {
+ value: s
+ } = t;
+ return "" === s ? t => !!r.getAttributeValue(t, i) && e(t) : Ss(t, n) ? (s = s.toLowerCase(), t => {
+ const n = r.getAttributeValue(t, i);
+ return (null == n || n.length !== s.length || n.toLowerCase() !== s) && e(t)
+ }) : t => r.getAttributeValue(t, i) !== s && e(t)
+ }
+};
+var Os = Ke((function(e, t) {
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ }), t.parse = void 0;
+ var n = new Set([9, 10, 12, 13, 32]),
+ r = "0".charCodeAt(0),
+ i = "9".charCodeAt(0);
+ t.parse = function(e) {
+ if ("even" === (e = e.trim().toLowerCase())) return [2, 0];
+ if ("odd" === e) return [2, 1];
+ var t = 0,
+ s = 0,
+ a = c(),
+ o = l();
+ if (t < e.length && "n" === e.charAt(t) && (t++, s = a * (null != o ? o : 1), h(), t < e.length ? (a = c(), h(), o = l()) : a = o = 0), null === o || t < e.length) throw new Error("n-th rule couldn't be parsed ('" + e + "')");
+ return [s, a * o];
+
+ function c() {
+ return "-" === e.charAt(t) ? (t++, -1) : ("+" === e.charAt(t) && t++, 1)
+ }
+
+ function l() {
+ for (var n = t, s = 0; t < e.length && e.charCodeAt(t) >= r && e.charCodeAt(t) <= i;) s = 10 * s + (e.charCodeAt(t) - r), t++;
+ return t === n ? null : s
+ }
+
+ function h() {
+ for (; t < e.length && n.has(e.charCodeAt(t));) t++
+ }
+ }
+}));
+qe(Os), Os.parse;
+var ys = Ke((function(e, t) {
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ }), t.compile = void 0, t.compile = function(e) {
+ var t = e[0],
+ n = e[1] - 1;
+ if (n < 0 && t <= 0) return ds.falseFunc;
+ if (-1 === t) return function(e) {
+ return e <= n
+ };
+ if (0 === t) return function(e) {
+ return e === n
+ };
+ if (1 === t) return n < 0 ? ds.trueFunc : function(e) {
+ return e >= n
+ };
+ var r = Math.abs(t),
+ i = (n % r + r) % r;
+ return t > 1 ? function(e) {
+ return e >= n && e % r === i
+ } : function(e) {
+ return e <= n && e % r === i
+ }
+ }
+}));
+qe(ys), ys.compile;
+var Ls = Os,
+ ks = ys,
+ vs = Ke((function(e, t) {
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ }), t.compile = t.parse = void 0, Object.defineProperty(t, "parse", {
+ enumerable: !0,
+ get: function() {
+ return Ls.parse
+ }
+ }), Object.defineProperty(t, "compile", {
+ enumerable: !0,
+ get: function() {
+ return ks.compile
+ }
+ }), t.default = function(e) {
+ return (0, ks.compile)((0, Ls.parse)(e))
+ }
+ })),
+ Ds = qe(vs);
+
+function Rs(e, t) {
+ return n => {
+ const r = t.getParent(n);
+ return null != r && t.isTag(r) && e(n)
+ }
+}
+vs.compile, vs.parse;
+const Ms = {
+ contains: (e, t, {
+ adapter: n
+ }) => function(r) {
+ return e(r) && n.getText(r).includes(t)
+ },
+ icontains(e, t, {
+ adapter: n
+ }) {
+ const r = t.toLowerCase();
+ return function(t) {
+ return e(t) && n.getText(t).toLowerCase().includes(r)
+ }
+ },
+ "nth-child"(e, t, {
+ adapter: n,
+ equals: r
+ }) {
+ const i = Ds(t);
+ return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) {
+ const s = n.getSiblings(t);
+ let a = 0;
+ for (let e = 0; e < s.length && !r(t, s[e]); e++) n.isTag(s[e]) && a++;
+ return i(a) && e(t)
+ }
+ },
+ "nth-last-child"(e, t, {
+ adapter: n,
+ equals: r
+ }) {
+ const i = Ds(t);
+ return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) {
+ const s = n.getSiblings(t);
+ let a = 0;
+ for (let e = s.length - 1; e >= 0 && !r(t, s[e]); e--) n.isTag(s[e]) && a++;
+ return i(a) && e(t)
+ }
+ },
+ "nth-of-type"(e, t, {
+ adapter: n,
+ equals: r
+ }) {
+ const i = Ds(t);
+ return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) {
+ const s = n.getSiblings(t);
+ let a = 0;
+ for (let e = 0; e < s.length; e++) {
+ const i = s[e];
+ if (r(t, i)) break;
+ n.isTag(i) && n.getName(i) === n.getName(t) && a++
+ }
+ return i(a) && e(t)
+ }
+ },
+ "nth-last-of-type"(e, t, {
+ adapter: n,
+ equals: r
+ }) {
+ const i = Ds(t);
+ return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) {
+ const s = n.getSiblings(t);
+ let a = 0;
+ for (let e = s.length - 1; e >= 0; e--) {
+ const i = s[e];
+ if (r(t, i)) break;
+ n.isTag(i) && n.getName(i) === n.getName(t) && a++
+ }
+ return i(a) && e(t)
+ }
+ },
+ root: (e, t, {
+ adapter: n
+ }) => t => {
+ const r = n.getParent(t);
+ return (null == r || !n.isTag(r)) && e(t)
+ },
+ scope(e, t, n, r) {
+ const {
+ equals: i
+ } = n;
+ return r && 0 !== r.length ? 1 === r.length ? t => i(r[0], t) && e(t) : t => r.includes(t) && e(t) : Ms.root(e, t, n)
+ },
+ hover: Ps("isHovered"),
+ visited: Ps("isVisited"),
+ active: Ps("isActive")
+};
+
+function Ps(e) {
+ return function(t, n, {
+ adapter: r
+ }) {
+ const i = r[e];
+ return "function" != typeof i ? ds.falseFunc : function(e) {
+ return i(e) && t(e)
+ }
+ }
+}
+const xs = {
+ empty: (e, {
+ adapter: t
+ }) => !t.getChildren(e).some((e => t.isTag(e) || "" !== t.getText(e))),
+ "first-child"(e, {
+ adapter: t,
+ equals: n
+ }) {
+ if (t.prevElementSibling) return null == t.prevElementSibling(e);
+ const r = t.getSiblings(e).find((e => t.isTag(e)));
+ return null != r && n(e, r)
+ },
+ "last-child"(e, {
+ adapter: t,
+ equals: n
+ }) {
+ const r = t.getSiblings(e);
+ for (let i = r.length - 1; i >= 0; i--) {
+ if (n(e, r[i])) return !0;
+ if (t.isTag(r[i])) break
+ }
+ return !1
+ },
+ "first-of-type"(e, {
+ adapter: t,
+ equals: n
+ }) {
+ const r = t.getSiblings(e),
+ i = t.getName(e);
+ for (let s = 0; s < r.length; s++) {
+ const a = r[s];
+ if (n(e, a)) return !0;
+ if (t.isTag(a) && t.getName(a) === i) break
+ }
+ return !1
+ },
+ "last-of-type"(e, {
+ adapter: t,
+ equals: n
+ }) {
+ const r = t.getSiblings(e),
+ i = t.getName(e);
+ for (let s = r.length - 1; s >= 0; s--) {
+ const a = r[s];
+ if (n(e, a)) return !0;
+ if (t.isTag(a) && t.getName(a) === i) break
+ }
+ return !1
+ },
+ "only-of-type"(e, {
+ adapter: t,
+ equals: n
+ }) {
+ const r = t.getName(e);
+ return t.getSiblings(e).every((i => n(e, i) || !t.isTag(i) || t.getName(i) !== r))
+ },
+ "only-child": (e, {
+ adapter: t,
+ equals: n
+ }) => t.getSiblings(e).every((r => n(e, r) || !t.isTag(r)))
+};
+
+function ws(e, t, n, r) {
+ if (null === n) {
+ if (e.length > r) throw new Error(`Pseudo-class :${t} requires an argument`)
+ } else if (e.length === r) throw new Error(`Pseudo-class :${t} doesn't have any arguments`)
+}
+const Bs = {
+ "any-link": ":is(a, area, link)[href]",
+ link: ":any-link:not(:visited)",
+ disabled: ":is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )",
+ enabled: ":not(:disabled)",
+ checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",
+ required: ":is(input, select, textarea)[required]",
+ optional: ":is(input, select, textarea):not([required])",
+ selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",
+ checkbox: "[type=checkbox]",
+ file: "[type=file]",
+ password: "[type=password]",
+ radio: "[type=radio]",
+ reset: "[type=reset]",
+ image: "[type=image]",
+ submit: "[type=submit]",
+ parent: ":not(:empty)",
+ header: ":is(h1, h2, h3, h4, h5, h6)",
+ button: ":is(button, input[type=button])",
+ input: ":is(input, textarea, select, button)",
+ text: "input:is(:not([type!='']), [type=text])"
+ },
+ Fs = {};
+
+function Us(e, t) {
+ const n = t.getSiblings(e);
+ if (n.length <= 1) return [];
+ const r = n.indexOf(e);
+ return r < 0 || r === n.length - 1 ? [] : n.slice(r + 1).filter(t.isTag)
+}
+
+function Hs(e) {
+ return {
+ xmlMode: !!e.xmlMode,
+ lowerCaseAttributeNames: !!e.lowerCaseAttributeNames,
+ lowerCaseTags: !!e.lowerCaseTags,
+ quirksMode: !!e.quirksMode,
+ cacheResults: !!e.cacheResults,
+ pseudos: e.pseudos,
+ adapter: e.adapter,
+ equals: e.equals
+ }
+}
+const Gs = (e, t, n, r, i) => {
+ const s = i(t, Hs(n), r);
+ return s === ds.trueFunc ? e : s === ds.falseFunc ? ds.falseFunc : t => s(t) && e(t)
+ },
+ Ys = {
+ is: Gs,
+ matches: Gs,
+ where: Gs,
+ not(e, t, n, r, i) {
+ const s = i(t, Hs(n), r);
+ return s === ds.falseFunc ? e : s === ds.trueFunc ? ds.falseFunc : t => !s(t) && e(t)
+ },
+ has(e, t, n, r, i) {
+ const {
+ adapter: s
+ } = n, a = Hs(n);
+ a.relativeSelector = !0;
+ const o = t.some((e => e.some(Ts))) ? [Fs] : void 0,
+ c = i(t, a, o);
+ if (c === ds.falseFunc) return ds.falseFunc;
+ const l = function(e, t) {
+ return e === ds.falseFunc ? ds.falseFunc : n => t.isTag(n) && e(n)
+ }(c, s);
+ if (o && c !== ds.trueFunc) {
+ const {
+ shouldTestNextSiblings: t = !1
+ } = c;
+ return n => {
+ if (!e(n)) return !1;
+ o[0] = n;
+ const r = s.getChildren(n),
+ i = t ? [...r, ...Us(n, s)] : r;
+ return s.existsOne(l, i)
+ }
+ }
+ return t => e(t) && s.existsOne(l, s.getChildren(t))
+ }
+ };
+
+function qs(e, t) {
+ const n = t.getParent(e);
+ return n && t.isTag(n) ? n : null
+}
+
+function Ks(e, t, n, r, i) {
+ const {
+ adapter: s,
+ equals: a
+ } = n;
+ switch (t.type) {
+ case Zi.PseudoElement:
+ throw new Error("Pseudo-elements are not supported by css-select");
+ case Zi.ColumnCombinator:
+ throw new Error("Column combinators are not yet supported by css-select");
+ case Zi.Attribute:
+ if (null != t.namespace) throw new Error("Namespaced attributes are not yet supported by css-select");
+ return n.xmlMode && !n.lowerCaseAttributeNames || (t.name = t.name.toLowerCase()), bs[t.action](e, t, n);
+ case Zi.Pseudo:
+ return function(e, t, n, r, i) {
+ var s;
+ const {
+ name: a,
+ data: o
+ } = t;
+ if (Array.isArray(o)) {
+ if (!(a in Ys)) throw new Error(`Unknown pseudo-class :${a}(${o})`);
+ return Ys[a](e, o, n, r, i)
+ }
+ const c = null === (s = n.pseudos) || void 0 === s ? void 0 : s[a],
+ l = "string" == typeof c ? c : Bs[a];
+ if ("string" == typeof l) {
+ if (null != o) throw new Error(`Pseudo ${a} doesn't have any arguments`);
+ const t = ps(l);
+ return Ys.is(e, t, n, r, i)
+ }
+ if ("function" == typeof c) return ws(c, a, o, 1), t => c(t, o) && e(t);
+ if (a in Ms) return Ms[a](e, o, n, r);
+ if (a in xs) {
+ const t = xs[a];
+ return ws(t, a, o, 2), r => t(r, n, o) && e(r)
+ }
+ throw new Error(`Unknown pseudo-class :${a}`)
+ }(e, t, n, r, i);
+ case Zi.Tag: {
+ if (null != t.namespace) throw new Error("Namespaced tag names are not yet supported by css-select");
+ let {
+ name: r
+ } = t;
+ return n.xmlMode && !n.lowerCaseTags || (r = r.toLowerCase()),
+ function(t) {
+ return s.getName(t) === r && e(t)
+ }
+ }
+ case Zi.Descendant: {
+ if (!1 === n.cacheResults || "undefined" == typeof WeakSet) return function(t) {
+ let n = t;
+ for (; n = qs(n, s);)
+ if (e(n)) return !0;
+ return !1
+ };
+ const t = new WeakSet;
+ return function(n) {
+ let r = n;
+ for (; r = qs(r, s);)
+ if (!t.has(r)) {
+ if (s.isTag(r) && e(r)) return !0;
+ t.add(r)
+ } return !1
+ }
+ }
+ case "_flexibleDescendant":
+ return function(t) {
+ let n = t;
+ do {
+ if (e(n)) return !0
+ } while (n = qs(n, s));
+ return !1
+ };
+ case Zi.Parent:
+ return function(t) {
+ return s.getChildren(t).some((t => s.isTag(t) && e(t)))
+ };
+ case Zi.Child:
+ return function(t) {
+ const n = s.getParent(t);
+ return null != n && s.isTag(n) && e(n)
+ };
+ case Zi.Sibling:
+ return function(t) {
+ const n = s.getSiblings(t);
+ for (let r = 0; r < n.length; r++) {
+ const i = n[r];
+ if (a(t, i)) break;
+ if (s.isTag(i) && e(i)) return !0
+ }
+ return !1
+ };
+ case Zi.Adjacent:
+ return s.prevElementSibling ? function(t) {
+ const n = s.prevElementSibling(t);
+ return null != n && e(n)
+ } : function(t) {
+ const n = s.getSiblings(t);
+ let r;
+ for (let e = 0; e < n.length; e++) {
+ const i = n[e];
+ if (a(t, i)) break;
+ s.isTag(i) && (r = i)
+ }
+ return !!r && e(r)
+ };
+ case Zi.Universal:
+ if (null != t.namespace && "*" !== t.namespace) throw new Error("Namespaced universal selectors are not yet supported by css-select");
+ return e
+ }
+}
+
+function js(e) {
+ return e.type === Zi.Pseudo && ("scope" === e.name || Array.isArray(e.data) && e.data.some((e => e.some(js))))
+}
+const Vs = {
+ type: Zi.Descendant
+ },
+ Ws = {
+ type: "_flexibleDescendant"
+ },
+ Qs = {
+ type: Zi.Pseudo,
+ name: "scope",
+ data: null
+ };
+
+function Xs(e, t, n) {
+ var r;
+ e.forEach(As), n = null !== (r = t.context) && void 0 !== r ? r : n;
+ const i = Array.isArray(n),
+ s = n && (Array.isArray(n) ? n : [n]);
+ if (!1 !== t.relativeSelector) ! function(e, {
+ adapter: t
+ }, n) {
+ const r = !!(null == n ? void 0 : n.every((e => {
+ const n = t.isTag(e) && t.getParent(e);
+ return e === Fs || n && t.isTag(n)
+ })));
+ for (const t of e) {
+ if (t.length > 0 && Ts(t[0]) && t[0].type !== Zi.Descendant);
+ else {
+ if (!r || t.some(js)) continue;
+ t.unshift(Vs)
+ }
+ t.unshift(Qs)
+ }
+ }(e, t, s);
+ else if (e.some((e => e.length > 0 && Ts(e[0])))) throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");
+ let a = !1;
+ const o = e.map((e => {
+ if (e.length >= 2) {
+ const [t, n] = e;
+ t.type !== Zi.Pseudo || "scope" !== t.name || (i && n.type === Zi.Descendant ? e[1] = Ws : n.type !== Zi.Adjacent && n.type !== Zi.Sibling || (a = !0))
+ }
+ return function(e, t, n) {
+ var r;
+ return e.reduce(((e, r) => e === ds.falseFunc ? ds.falseFunc : Ks(e, r, t, n, Xs)), null !== (r = t.rootFunc) && void 0 !== r ? r : ds.trueFunc)
+ }(e, t, s)
+ })).reduce($s, ds.falseFunc);
+ return o.shouldTestNextSiblings = a, o
+}
+
+function $s(e, t) {
+ return t === ds.falseFunc || e === ds.trueFunc ? e : e === ds.falseFunc || t === ds.trueFunc ? t : function(n) {
+ return e(n) || t(n)
+ }
+}
+const zs = (e, t) => e === t,
+ Js = {
+ adapter: Se,
+ equals: zs
+ };
+const Zs = (ea = Xs, function(e, t, n) {
+ const r = function(e) {
+ var t, n, r, i;
+ const s = null != e ? e : Js;
+ return null !== (t = s.adapter) && void 0 !== t || (s.adapter = Se), null !== (n = s.equals) && void 0 !== n || (s.equals = null !== (i = null === (r = s.adapter) || void 0 === r ? void 0 : r.equals) && void 0 !== i ? i : zs), s
+ }(t);
+ return ea(e, r, n)
+});
+var ea;
+
+function ta(e, t, n = !1) {
+ return n && (e = function(e, t) {
+ const n = Array.isArray(e) ? e.slice(0) : [e],
+ r = n.length;
+ for (let e = 0; e < r; e++) {
+ const r = Us(n[e], t);
+ n.push(...r)
+ }
+ return n
+ }(e, t)), Array.isArray(e) ? t.removeSubsets(e) : t.getChildren(e)
+}
+const na = new Set(["first", "last", "eq", "gt", "nth", "lt", "even", "odd"]);
+
+function ra(e) {
+ return "pseudo" === e.type && (!!na.has(e.name) || !("not" !== e.name || !Array.isArray(e.data)) && e.data.some((e => e.some(ra))))
+}
+
+function ia(e) {
+ const t = [],
+ n = [];
+ for (const r of e) r.some(ra) ? t.push(r) : n.push(r);
+ return [n, t]
+}
+const sa = {
+ type: Zi.Universal,
+ namespace: null
+ },
+ aa = {
+ type: Zi.Pseudo,
+ name: "scope",
+ data: null
+ };
+
+function oa(e, t, n = {}) {
+ return ca([e], t, n)
+}
+
+function ca(e, t, n = {}) {
+ if ("function" == typeof t) return e.some(t);
+ const [r, i] = ia(ps(t));
+ return r.length > 0 && e.some(Zs(r, n)) || i.some((t => ua(t, e, n).length > 0))
+}
+
+function la(e, t, n = {}) {
+ return ha(ps(e), t, n)
+}
+
+function ha(e, t, n) {
+ if (0 === t.length) return [];
+ const [r, i] = ia(e);
+ let s;
+ if (r.length) {
+ const e = Ea(t, r, n);
+ if (0 === i.length) return e;
+ e.length && (s = new Set(e))
+ }
+ for (let e = 0; e < i.length && (null == s ? void 0 : s.size) !== t.length; e++) {
+ const r = i[e],
+ a = s ? t.filter((e => I(e) && !s.has(e))) : t;
+ if (0 === a.length) break;
+ const o = ua(r, t, n);
+ if (o.length)
+ if (s) o.forEach((e => s.add(e)));
+ else {
+ if (e === i.length - 1) return o;
+ s = new Set(o)
+ }
+ }
+ return void 0 !== s ? s.size === t.length ? t : t.filter((e => s.has(e))) : []
+}
+
+function ua(e, t, n) {
+ var r;
+ if (e.some(as)) {
+ const i = null !== (r = n.root) && void 0 !== r ? r : function(e) {
+ for (; e.parent;) e = e.parent;
+ return e
+ }(t[0]),
+ s = {
+ ...n,
+ context: t,
+ relativeSelector: !1
+ };
+ return e.push(aa), pa(i, e, s, !0, t.length)
+ }
+ return pa(t, e, n, !1, t.length)
+}
+
+function pa(e, t, n, r, i) {
+ const s = t.findIndex(ra),
+ a = t.slice(0, s),
+ o = t[s],
+ c = t.length - 1 === s ? i : 1 / 0,
+ l = function(e, t, n) {
+ const r = null != t ? parseInt(t, 10) : NaN;
+ switch (e) {
+ case "first":
+ return 1;
+ case "nth":
+ case "eq":
+ return isFinite(r) ? r >= 0 ? r + 1 : 1 / 0 : 0;
+ case "lt":
+ return isFinite(r) ? r >= 0 ? Math.min(r, n) : 1 / 0 : 0;
+ case "gt":
+ return isFinite(r) ? 1 / 0 : 0;
+ case "odd":
+ return 2 * n;
+ case "even":
+ return 2 * n - 1;
+ case "last":
+ case "not":
+ return 1 / 0
+ }
+ }(o.name, o.data, c);
+ if (0 === l) return [];
+ const h = (0 !== a.length || Array.isArray(e) ? 0 === a.length ? (Array.isArray(e) ? e : [e]).filter(I) : r || a.some(as) ? fa(e, [a], n, l) : Ea(e, [a], n) : Z(e).filter(I)).slice(0, l);
+ let u = function(e, t, n, r) {
+ const i = "string" == typeof n ? parseInt(n, 10) : NaN;
+ switch (e) {
+ case "first":
+ case "lt":
+ return t;
+ case "last":
+ return t.length > 0 ? [t[t.length - 1]] : t;
+ case "nth":
+ case "eq":
+ return isFinite(i) && Math.abs(i) < t.length ? [i < 0 ? t[t.length + i] : t[i]] : [];
+ case "gt":
+ return isFinite(i) ? t.slice(i + 1) : [];
+ case "even":
+ return t.filter(((e, t) => t % 2 == 0));
+ case "odd":
+ return t.filter(((e, t) => t % 2 == 1));
+ case "not": {
+ const e = new Set(ha(n, t, r));
+ return t.filter((t => !e.has(t)))
+ }
+ }
+ }(o.name, h, o.data, n);
+ if (0 === u.length || t.length === s + 1) return u;
+ const p = t.slice(s + 1),
+ f = p.some(as);
+ if (f) {
+ if (as(p[0])) {
+ const {
+ type: e
+ } = p[0];
+ e !== Zi.Sibling && e !== Zi.Adjacent || (u = ta(u, Se, !0)), p.unshift(sa)
+ }
+ n = {
+ ...n,
+ relativeSelector: !1,
+ rootFunc: e => u.includes(e)
+ }
+ } else n.rootFunc && n.rootFunc !== Es && (n = {
+ ...n,
+ rootFunc: Es
+ });
+ return p.some(ra) ? pa(u, p, n, !1, i) : f ? fa(u, [p], n, i) : Ea(u, [p], n)
+}
+
+function fa(e, t, n, r) {
+ return da(e, Zs(t, n, e), r)
+}
+
+function da(e, t, n = 1 / 0) {
+ return ae((e => I(e) && t(e)), ta(e, Se, t.shouldTestNextSiblings), !0, n)
+}
+
+function Ea(e, t, n) {
+ const r = (Array.isArray(e) ? e : [e]).filter(I);
+ if (0 === r.length) return r;
+ const i = Zs(t, n);
+ return i === Es ? r : r.filter(i)
+}
+var ma = function(e, t, n) {
+ if (n || 2 === arguments.length)
+ for (var r, i = 0, s = t.length; i < s; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]);
+ return e.concat(r || Array.prototype.slice.call(t))
+ },
+ Ta = /^\s*[~+]/;
+
+function _a(e) {
+ return function(t) {
+ for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r];
+ return function(r) {
+ var i, s = e(t, this);
+ return r && (s = xa(s, r, this.options.xmlMode, null === (i = this._root) || void 0 === i ? void 0 : i[0])), this._make(this.length > 1 && s.length > 1 ? n.reduce((function(e, t) {
+ return t(e)
+ }), s) : s)
+ }
+ }
+}
+var Aa = _a((function(e, t) {
+ for (var n, r = [], i = 0; i < t.length; i++) {
+ var s = e(t[i]);
+ r.push(s)
+ }
+ return (n = new Array).concat.apply(n, r)
+ })),
+ ga = _a((function(e, t) {
+ for (var n = [], r = 0; r < t.length; r++) {
+ var i = e(t[r]);
+ null !== i && n.push(i)
+ }
+ return n
+ }));
+
+function Na(e) {
+ for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
+ var r = null,
+ i = _a((function(e, t) {
+ var n = [];
+ return Bi(t, (function(t) {
+ for (var i;
+ (i = e(t)) && !(null == r ? void 0 : r(i, n.length)); t = i) n.push(i)
+ })), n
+ })).apply(void 0, ma([e], t, !1));
+ return function(e, t) {
+ var n = this;
+ r = "string" == typeof e ? function(t) {
+ return oa(t, e, n.options)
+ } : e ? Pa(e) : null;
+ var s = i.call(this, t);
+ return r = null, s
+ }
+}
+
+function Ca(e) {
+ return Array.from(new Set(e))
+}
+var Ia = ga((function(e) {
+ var t = e.parent;
+ return t && !L(t) ? t : null
+ }), Ca),
+ Sa = Aa((function(e) {
+ for (var t = []; e.parent && !L(e.parent);) t.push(e.parent), e = e.parent;
+ return t
+ }), Ee, (function(e) {
+ return e.reverse()
+ })),
+ ba = Na((function(e) {
+ var t = e.parent;
+ return t && !L(t) ? t : null
+ }), Ee, (function(e) {
+ return e.reverse()
+ }));
+var Oa = ga((function(e) {
+ return ne(e)
+ })),
+ ya = Aa((function(e) {
+ for (var t = []; e.next;) I(e = e.next) && t.push(e);
+ return t
+ }), Ca),
+ La = Na((function(e) {
+ return ne(e)
+ }), Ca),
+ ka = ga((function(e) {
+ return re(e)
+ })),
+ va = Aa((function(e) {
+ for (var t = []; e.prev;) I(e = e.prev) && t.push(e);
+ return t
+ }), Ca),
+ Da = Na((function(e) {
+ return re(e)
+ }), Ca),
+ Ra = Aa((function(e) {
+ return te(e).filter((function(t) {
+ return I(t) && t !== e
+ }))
+ }), Ee),
+ Ma = Aa((function(e) {
+ return Z(e).filter(I)
+ }), Ca);
+
+function Pa(e) {
+ return "function" == typeof e ? function(t, n) {
+ return e.call(t, n, t)
+ } : wi(e) ? function(t) {
+ return Array.prototype.includes.call(e, t)
+ } : function(t) {
+ return e === t
+ }
+}
+
+function xa(e, t, n, r) {
+ return "string" == typeof t ? la(t, e, {
+ xmlMode: n,
+ root: r
+ }) : e.filter(Pa(t))
+}
+var wa = Object.freeze({
+ __proto__: null,
+ find: function(e) {
+ var t;
+ if (!e) return this._make([]);
+ var n = this.toArray();
+ if ("string" != typeof e) {
+ var r = wi(e) ? e.toArray() : [e];
+ return this._make(r.filter((function(e) {
+ return n.some((function(t) {
+ return Di(t, e)
+ }))
+ })))
+ }
+ var i = Ta.test(e) ? n : this.children().toArray(),
+ s = {
+ context: n,
+ root: null === (t = this._root) || void 0 === t ? void 0 : t[0],
+ xmlMode: this.options.xmlMode,
+ lowerCaseTags: this.options.lowerCaseTags,
+ lowerCaseAttributeNames: this.options.lowerCaseAttributeNames,
+ pseudos: this.options.pseudos,
+ quirksMode: this.options.quirksMode
+ };
+ return this._make(function(e, t, n = {}, r = 1 / 0) {
+ if ("function" == typeof e) return da(t, e);
+ const [i, s] = ia(ps(e)), a = s.map((e => pa(t, e, n, !0, r)));
+ return i.length && a.push(fa(t, i, n, r)), 0 === a.length ? [] : 1 === a.length ? a[0] : Ee(a.reduce(((e, t) => [...e, ...t])))
+ }(e, i, s))
+ },
+ parent: Ia,
+ parents: Sa,
+ parentsUntil: ba,
+ closest: function(e) {
+ var t, n = [];
+ if (!e) return this._make(n);
+ var r = {
+ xmlMode: this.options.xmlMode,
+ root: null === (t = this._root) || void 0 === t ? void 0 : t[0]
+ },
+ i = "string" == typeof e ? function(t) {
+ return oa(t, e, r)
+ } : Pa(e);
+ return Bi(this, (function(e) {
+ for (; e && I(e);) {
+ if (i(e, 0)) {
+ n.includes(e) || n.push(e);
+ break
+ }
+ e = e.parent
+ }
+ })), this._make(n)
+ },
+ next: Oa,
+ nextAll: ya,
+ nextUntil: La,
+ prev: ka,
+ prevAll: va,
+ prevUntil: Da,
+ siblings: Ra,
+ children: Ma,
+ contents: function() {
+ var e = this.toArray().reduce((function(e, t) {
+ return k(t) ? e.concat(t.children) : e
+ }), []);
+ return this._make(e)
+ },
+ each: function(e) {
+ for (var t = 0, n = this.length; t < n && !1 !== e.call(this[t], t, this[t]);) ++t;
+ return this
+ },
+ map: function(e) {
+ for (var t = [], n = 0; n < this.length; n++) {
+ var r = this[n],
+ i = e.call(r, n, r);
+ null != i && (t = t.concat(i))
+ }
+ return this._make(t)
+ },
+ filter: function(e) {
+ var t;
+ return this._make(xa(this.toArray(), e, this.options.xmlMode, null === (t = this._root) || void 0 === t ? void 0 : t[0]))
+ },
+ filterArray: xa,
+ is: function(e) {
+ var t = this.toArray();
+ return "string" == typeof e ? ca(t.filter(I), e, this.options) : !!e && t.some(Pa(e))
+ },
+ not: function(e) {
+ var t = this.toArray();
+ if ("string" == typeof e) {
+ var n = new Set(la(e, t, this.options));
+ t = t.filter((function(e) {
+ return !n.has(e)
+ }))
+ } else {
+ var r = Pa(e);
+ t = t.filter((function(e, t) {
+ return !r(e, t)
+ }))
+ }
+ return this._make(t)
+ },
+ has: function(e) {
+ var t = this;
+ return this.filter("string" == typeof e ? ":has(".concat(e, ")") : function(n, r) {
+ return t._make(r).find(e).length > 0
+ })
+ },
+ first: function() {
+ return this.length > 1 ? this._make(this[0]) : this
+ },
+ last: function() {
+ return this.length > 0 ? this._make(this[this.length - 1]) : this
+ },
+ eq: function(e) {
+ var t;
+ return 0 === (e = +e) && this.length <= 1 ? this : (e < 0 && (e = this.length + e), this._make(null !== (t = this[e]) && void 0 !== t ? t : []))
+ },
+ get: function(e) {
+ return null == e ? this.toArray() : this[e < 0 ? this.length + e : e]
+ },
+ toArray: function() {
+ return Array.prototype.slice.call(this)
+ },
+ index: function(e) {
+ var t, n;
+ return null == e ? (t = this.parent().children(), n = this[0]) : "string" == typeof e ? (t = this._make(e), n = this[0]) : (t = this, n = wi(e) ? e[0] : e), Array.prototype.indexOf.call(t, n)
+ },
+ slice: function(e, t) {
+ return this._make(Array.prototype.slice.call(this, e, t))
+ },
+ end: function() {
+ var e;
+ return null !== (e = this.prevObject) && void 0 !== e ? e : this._make([])
+ },
+ add: function(e, t) {
+ var n = this._make(e, t),
+ r = Ee(ma(ma([], this.get(), !0), n.get(), !0));
+ return this._make(r)
+ },
+ addBack: function(e) {
+ return this.prevObject ? this.add(e ? this.prevObject.filter(e) : this.prevObject) : this
+ }
+});
+
+function Ba(e, t) {
+ var n = Array.isArray(e) ? e : [e];
+ t ? t.children = n : t = null;
+ for (var r = 0; r < n.length; r++) {
+ var i = n[r];
+ i.parent && i.parent.children !== n && ie(i), t ? (i.prev = n[r - 1] || null, i.next = n[r + 1] || null) : i.prev = i.next = null, i.parent = t
+ }
+ return t
+}
+var Fa = function(e, t, n) {
+ if (n || 2 === arguments.length)
+ for (var r, i = 0, s = t.length; i < s; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]);
+ return e.concat(r || Array.prototype.slice.call(t))
+};
+
+function Ua(e) {
+ return function() {
+ for (var t = this, n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
+ var i = this.length - 1;
+ return Bi(this, (function(r, s) {
+ if (k(r)) {
+ var a = "function" == typeof n[0] ? n[0].call(r, s, t._render(r.children)) : n,
+ o = t._makeDomArray(a, s < i);
+ e(o, r.children, r)
+ }
+ }))
+ }
+}
+
+function Ha(e, t, n, r, i) {
+ for (var s, a, o = Fa([t, n], r, !0), c = 0 === t ? null : e[t - 1], l = t + n >= e.length ? null : e[t + n], h = 0; h < r.length; ++h) {
+ var u = r[h],
+ p = u.parent;
+ if (p) {
+ var f = p.children.indexOf(u);
+ f > -1 && (p.children.splice(f, 1), i === p && t > f && o[0]--)
+ }
+ u.parent = i, u.prev && (u.prev.next = null !== (s = u.next) && void 0 !== s ? s : null), u.next && (u.next.prev = null !== (a = u.prev) && void 0 !== a ? a : null), u.prev = 0 === h ? c : r[h - 1], u.next = h === r.length - 1 ? l : r[h + 1]
+ }
+ return c && (c.next = r[0]), l && (l.prev = r[r.length - 1]), e.splice.apply(e, o)
+}
+var Ga = Ua((function(e, t, n) {
+ Ha(t, t.length, 0, e, n)
+ })),
+ Ya = Ua((function(e, t, n) {
+ Ha(t, 0, 0, e, n)
+ }));
+
+function qa(e) {
+ return function(t) {
+ for (var n = this.length - 1, r = this.parents().last(), i = 0; i < this.length; i++) {
+ var s = this[i],
+ a = "function" == typeof t ? t.call(s, i, s) : "string" != typeof t || Ui(t) ? t : r.find(t).clone(),
+ o = this._makeDomArray(a, i < n)[0];
+ if (o && k(o)) {
+ for (var c = o, l = 0; l < c.children.length;) {
+ var h = c.children[l];
+ I(h) ? (c = h, l = 0) : l++
+ }
+ e(s, c, [o])
+ }
+ }
+ return this
+ }
+}
+var Ka = qa((function(e, t, n) {
+ var r = e.parent;
+ if (r) {
+ var i = r.children,
+ s = i.indexOf(e);
+ Ba([e], t), Ha(i, s, 0, n, r)
+ }
+ })),
+ ja = qa((function(e, t, n) {
+ k(e) && (Ba(e.children, t), Ba(n, e))
+ }));
+var Va = Object.freeze({
+ __proto__: null,
+ _makeDomArray: function(e, t) {
+ var n = this;
+ return null == e ? [] : wi(e) ? t ? Fi(e.get()) : e.get() : Array.isArray(e) ? e.reduce((function(e, r) {
+ return e.concat(n._makeDomArray(r, t))
+ }), []) : "string" == typeof e ? this._parse(e, this.options, !1, null).children : t ? Fi([e]) : [e]
+ },
+ appendTo: function(e) {
+ return (wi(e) ? e : this._make(e)).append(this), this
+ },
+ prependTo: function(e) {
+ return (wi(e) ? e : this._make(e)).prepend(this), this
+ },
+ append: Ga,
+ prepend: Ya,
+ wrap: Ka,
+ wrapInner: ja,
+ unwrap: function(e) {
+ var t = this;
+ return this.parent(e).not("body").each((function(e, n) {
+ t._make(n).replaceWith(n.children)
+ })), this
+ },
+ wrapAll: function(e) {
+ var t = this[0];
+ if (t) {
+ for (var n = this._make("function" == typeof e ? e.call(t, 0, t) : e).insertBefore(t), r = void 0, i = 0; i < n.length; i++) "tag" === n[i].type && (r = n[i]);
+ for (var s = 0; r && s < r.children.length;) {
+ var a = r.children[s];
+ "tag" === a.type ? (r = a, s = 0) : s++
+ }
+ r && this._make(r).append(this)
+ }
+ return this
+ },
+ after: function() {
+ for (var e = this, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
+ var r = this.length - 1;
+ return Bi(this, (function(n, i) {
+ var s = n.parent;
+ if (k(n) && s) {
+ var a = s.children,
+ o = a.indexOf(n);
+ if (!(o < 0)) {
+ var c = "function" == typeof t[0] ? t[0].call(n, i, e._render(n.children)) : t;
+ Ha(a, o + 1, 0, e._makeDomArray(c, i < r), s)
+ }
+ }
+ }))
+ },
+ insertAfter: function(e) {
+ var t = this;
+ "string" == typeof e && (e = this._make(e)), this.remove();
+ var n = [];
+ return this._makeDomArray(e).forEach((function(e) {
+ var r = t.clone().toArray(),
+ i = e.parent;
+ if (i) {
+ var s = i.children,
+ a = s.indexOf(e);
+ a < 0 || (Ha(s, a + 1, 0, r, i), n.push.apply(n, r))
+ }
+ })), this._make(n)
+ },
+ before: function() {
+ for (var e = this, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
+ var r = this.length - 1;
+ return Bi(this, (function(n, i) {
+ var s = n.parent;
+ if (k(n) && s) {
+ var a = s.children,
+ o = a.indexOf(n);
+ if (!(o < 0)) {
+ var c = "function" == typeof t[0] ? t[0].call(n, i, e._render(n.children)) : t;
+ Ha(a, o, 0, e._makeDomArray(c, i < r), s)
+ }
+ }
+ }))
+ },
+ insertBefore: function(e) {
+ var t = this,
+ n = this._make(e);
+ this.remove();
+ var r = [];
+ return Bi(n, (function(e) {
+ var n = t.clone().toArray(),
+ i = e.parent;
+ if (i) {
+ var s = i.children,
+ a = s.indexOf(e);
+ a < 0 || (Ha(s, a, 0, n, i), r.push.apply(r, n))
+ }
+ })), this._make(r)
+ },
+ remove: function(e) {
+ return Bi(e ? this.filter(e) : this, (function(e) {
+ ie(e), e.prev = e.next = e.parent = null
+ })), this
+ },
+ replaceWith: function(e) {
+ var t = this;
+ return Bi(this, (function(n, r) {
+ var i = n.parent;
+ if (i) {
+ var s = i.children,
+ a = "function" == typeof e ? e.call(n, r, n) : e,
+ o = t._makeDomArray(a);
+ Ba(o, null);
+ var c = s.indexOf(n);
+ Ha(s, c, 1, o, i), o.includes(n) || (n.parent = n.prev = n.next = null)
+ }
+ }))
+ },
+ empty: function() {
+ return Bi(this, (function(e) {
+ k(e) && (e.children.forEach((function(e) {
+ e.next = e.prev = e.parent = null
+ })), e.children.length = 0)
+ }))
+ },
+ html: function(e) {
+ var t = this;
+ if (void 0 === e) {
+ var n = this[0];
+ return n && k(n) ? this._render(n.children) : null
+ }
+ return Bi(this, (function(n) {
+ k(n) && (n.children.forEach((function(e) {
+ e.next = e.prev = e.parent = null
+ })), Ba(wi(e) ? e.toArray() : t._parse("".concat(e), t.options, !1, n).children, n))
+ }))
+ },
+ toString: function() {
+ return this._render(this)
+ },
+ text: function(e) {
+ var t = this;
+ return void 0 === e ? Li(this) : Bi(this, "function" == typeof e ? function(n, r) {
+ return t._make(n).text(e.call(n, r, Li([n])))
+ } : function(t) {
+ k(t) && (t.children.forEach((function(e) {
+ e.next = e.prev = e.parent = null
+ })), Ba(new m("".concat(e)), t))
+ })
+ },
+ clone: function() {
+ return this._make(Fi(this.get()))
+ }
+});
+
+function Wa(e, t, n, r) {
+ if ("string" == typeof t) {
+ var i = Qa(e),
+ s = "function" == typeof n ? n.call(e, r, i[t]) : n;
+ "" === s ? delete i[t] : null != s && (i[t] = s), e.attribs.style = (a = i, Object.keys(a).reduce((function(e, t) {
+ return "".concat(e).concat(e ? " " : "").concat(t, ": ").concat(a[t], ";")
+ }), ""))
+ } else "object" == typeof t && Object.keys(t).forEach((function(n, r) {
+ Wa(e, n, t[n], r)
+ }));
+ var a
+}
+
+function Qa(e, t) {
+ if (e && I(e)) {
+ var n = function(e) {
+ if (!(e = (e || "").trim())) return {};
+ for (var t, n = {}, r = 0, i = e.split(";"); r < i.length; r++) {
+ var s = i[r],
+ a = s.indexOf(":");
+ if (a < 1 || a === s.length - 1) {
+ var o = s.trimEnd();
+ o.length > 0 && void 0 !== t && (n[t] += ";".concat(o))
+ } else n[t = s.slice(0, a).trim()] = s.slice(a + 1).trim()
+ }
+ return n
+ }(e.attribs.style);
+ if ("string" == typeof t) return n[t];
+ if (Array.isArray(t)) {
+ var r = {};
+ return t.forEach((function(e) {
+ null != n[e] && (r[e] = n[e])
+ })), r
+ }
+ return n
+ }
+}
+var Xa = Object.freeze({
+ __proto__: null,
+ css: function(e, t) {
+ return null != e && null != t || "object" == typeof e && !Array.isArray(e) ? Bi(this, (function(n, r) {
+ I(n) && Wa(n, e, t, r)
+ })) : 0 !== this.length ? Qa(this[0], e) : void 0
+ }
+ }),
+ $a = /%20/g,
+ za = /\r?\n/g;
+var Ja = Object.freeze({
+ __proto__: null,
+ serialize: function() {
+ var e = this.serializeArray().map((function(e) {
+ return "".concat(encodeURIComponent(e.name), "=").concat(encodeURIComponent(e.value))
+ }));
+ return e.join("&").replace($a, "+")
+ },
+ serializeArray: function() {
+ var e = this;
+ return this.map((function(t, n) {
+ var r = e._make(n);
+ return I(n) && "form" === n.name ? r.find("input,select,textarea,keygen").toArray() : r.filter("input,select,textarea,keygen").toArray()
+ })).filter('[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))').map((function(t, n) {
+ var r, i = e._make(n),
+ s = i.attr("name"),
+ a = null !== (r = i.val()) && void 0 !== r ? r : "";
+ return Array.isArray(a) ? a.map((function(e) {
+ return {
+ name: s,
+ value: e.replace(za, "\r\n")
+ }
+ })) : {
+ name: s,
+ value: a.replace(za, "\r\n")
+ }
+ })).toArray()
+ }
+ }),
+ Za = function(e, t, n) {
+ if (this.length = 0, this.options = n, this._root = t, e) {
+ for (var r = 0; r < e.length; r++) this[r] = e[r];
+ this.length = e.length
+ }
+ };
+Za.prototype.cheerio = "[cheerio object]", Za.prototype.splice = Array.prototype.splice, Za.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator], Object.assign(Za.prototype, ts, wa, Va, Xa, Ja);
+var eo, to = (eo = function(e, t) {
+ return eo = Object.setPrototypeOf || {
+ __proto__: []
+ }
+ instanceof Array && function(e, t) {
+ e.__proto__ = t
+ } || function(e, t) {
+ for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
+ }, eo(e, t)
+ }, function(e, t) {
+ if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
+
+ function n() {
+ this.constructor = e
+ }
+ eo(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
+ }),
+ no = function() {
+ return no = Object.assign || function(e) {
+ for (var t, n = 1, r = arguments.length; n < r; n++)
+ for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
+ return e
+ }, no.apply(this, arguments)
+ };
+const ro = new Set([65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111]);
+var io;
+! function(e) {
+ e[e.EOF = -1] = "EOF", e[e.NULL = 0] = "NULL", e[e.TABULATION = 9] = "TABULATION", e[e.CARRIAGE_RETURN = 13] = "CARRIAGE_RETURN", e[e.LINE_FEED = 10] = "LINE_FEED", e[e.FORM_FEED = 12] = "FORM_FEED", e[e.SPACE = 32] = "SPACE", e[e.EXCLAMATION_MARK = 33] = "EXCLAMATION_MARK", e[e.QUOTATION_MARK = 34] = "QUOTATION_MARK", e[e.NUMBER_SIGN = 35] = "NUMBER_SIGN", e[e.AMPERSAND = 38] = "AMPERSAND", e[e.APOSTROPHE = 39] = "APOSTROPHE", e[e.HYPHEN_MINUS = 45] = "HYPHEN_MINUS", e[e.SOLIDUS = 47] = "SOLIDUS", e[e.DIGIT_0 = 48] = "DIGIT_0", e[e.DIGIT_9 = 57] = "DIGIT_9", e[e.SEMICOLON = 59] = "SEMICOLON", e[e.LESS_THAN_SIGN = 60] = "LESS_THAN_SIGN", e[e.EQUALS_SIGN = 61] = "EQUALS_SIGN", e[e.GREATER_THAN_SIGN = 62] = "GREATER_THAN_SIGN", e[e.QUESTION_MARK = 63] = "QUESTION_MARK", e[e.LATIN_CAPITAL_A = 65] = "LATIN_CAPITAL_A", e[e.LATIN_CAPITAL_F = 70] = "LATIN_CAPITAL_F", e[e.LATIN_CAPITAL_X = 88] = "LATIN_CAPITAL_X", e[e.LATIN_CAPITAL_Z = 90] = "LATIN_CAPITAL_Z", e[e.RIGHT_SQUARE_BRACKET = 93] = "RIGHT_SQUARE_BRACKET", e[e.GRAVE_ACCENT = 96] = "GRAVE_ACCENT", e[e.LATIN_SMALL_A = 97] = "LATIN_SMALL_A", e[e.LATIN_SMALL_F = 102] = "LATIN_SMALL_F", e[e.LATIN_SMALL_X = 120] = "LATIN_SMALL_X", e[e.LATIN_SMALL_Z = 122] = "LATIN_SMALL_Z", e[e.REPLACEMENT_CHARACTER = 65533] = "REPLACEMENT_CHARACTER"
+}(io = io || (io = {}));
+const so = "--",
+ ao = "[CDATA[",
+ oo = "doctype",
+ co = "script",
+ lo = "public",
+ ho = "system";
+
+function uo(e) {
+ return e >= 55296 && e <= 57343
+}
+
+function po(e) {
+ return 32 !== e && 10 !== e && 13 !== e && 9 !== e && 12 !== e && e >= 1 && e <= 31 || e >= 127 && e <= 159
+}
+
+function fo(e) {
+ return e >= 64976 && e <= 65007 || ro.has(e)
+}
+var Eo;
+! function(e) {
+ e.controlCharacterInInputStream = "control-character-in-input-stream", e.noncharacterInInputStream = "noncharacter-in-input-stream", e.surrogateInInputStream = "surrogate-in-input-stream", e.nonVoidHtmlElementStartTagWithTrailingSolidus = "non-void-html-element-start-tag-with-trailing-solidus", e.endTagWithAttributes = "end-tag-with-attributes", e.endTagWithTrailingSolidus = "end-tag-with-trailing-solidus", e.unexpectedSolidusInTag = "unexpected-solidus-in-tag", e.unexpectedNullCharacter = "unexpected-null-character", e.unexpectedQuestionMarkInsteadOfTagName = "unexpected-question-mark-instead-of-tag-name", e.invalidFirstCharacterOfTagName = "invalid-first-character-of-tag-name", e.unexpectedEqualsSignBeforeAttributeName = "unexpected-equals-sign-before-attribute-name", e.missingEndTagName = "missing-end-tag-name", e.unexpectedCharacterInAttributeName = "unexpected-character-in-attribute-name", e.unknownNamedCharacterReference = "unknown-named-character-reference", e.missingSemicolonAfterCharacterReference = "missing-semicolon-after-character-reference", e.unexpectedCharacterAfterDoctypeSystemIdentifier = "unexpected-character-after-doctype-system-identifier", e.unexpectedCharacterInUnquotedAttributeValue = "unexpected-character-in-unquoted-attribute-value", e.eofBeforeTagName = "eof-before-tag-name", e.eofInTag = "eof-in-tag", e.missingAttributeValue = "missing-attribute-value", e.missingWhitespaceBetweenAttributes = "missing-whitespace-between-attributes", e.missingWhitespaceAfterDoctypePublicKeyword = "missing-whitespace-after-doctype-public-keyword", e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers = "missing-whitespace-between-doctype-public-and-system-identifiers", e.missingWhitespaceAfterDoctypeSystemKeyword = "missing-whitespace-after-doctype-system-keyword", e.missingQuoteBeforeDoctypePublicIdentifier = "missing-quote-before-doctype-public-identifier", e.missingQuoteBeforeDoctypeSystemIdentifier = "missing-quote-before-doctype-system-identifier", e.missingDoctypePublicIdentifier = "missing-doctype-public-identifier", e.missingDoctypeSystemIdentifier = "missing-doctype-system-identifier", e.abruptDoctypePublicIdentifier = "abrupt-doctype-public-identifier", e.abruptDoctypeSystemIdentifier = "abrupt-doctype-system-identifier", e.cdataInHtmlContent = "cdata-in-html-content", e.incorrectlyOpenedComment = "incorrectly-opened-comment", e.eofInScriptHtmlCommentLikeText = "eof-in-script-html-comment-like-text", e.eofInDoctype = "eof-in-doctype", e.nestedComment = "nested-comment", e.abruptClosingOfEmptyComment = "abrupt-closing-of-empty-comment", e.eofInComment = "eof-in-comment", e.incorrectlyClosedComment = "incorrectly-closed-comment", e.eofInCdata = "eof-in-cdata", e.absenceOfDigitsInNumericCharacterReference = "absence-of-digits-in-numeric-character-reference", e.nullCharacterReference = "null-character-reference", e.surrogateCharacterReference = "surrogate-character-reference", e.characterReferenceOutsideUnicodeRange = "character-reference-outside-unicode-range", e.controlCharacterReference = "control-character-reference", e.noncharacterCharacterReference = "noncharacter-character-reference", e.missingWhitespaceBeforeDoctypeName = "missing-whitespace-before-doctype-name", e.missingDoctypeName = "missing-doctype-name", e.invalidCharacterSequenceAfterDoctypeName = "invalid-character-sequence-after-doctype-name", e.duplicateAttribute = "duplicate-attribute", e.nonConformingDoctype = "non-conforming-doctype", e.missingDoctype = "missing-doctype", e.misplacedDoctype = "misplaced-doctype", e.endTagWithoutMatchingOpenElement = "end-tag-without-matching-open-element", e.closingOfElementWithOpenChildElements = "closing-of-element-with-open-child-elements", e.disallowedContentInNoscriptInHead = "disallowed-content-in-noscript-in-head", e.openElementsLeftAfterEof = "open-elements-left-after-eof", e.abandonedHeadElementChild = "abandoned-head-element-child", e.misplacedStartTagForHeadElement = "misplaced-start-tag-for-head-element", e.nestedNoscriptInHead = "nested-noscript-in-head", e.eofInElementThatCanContainOnlyText = "eof-in-element-that-can-contain-only-text"
+}(Eo = Eo || (Eo = {}));
+class mo {
+ constructor(e) {
+ this.handler = e, this.html = "", this.pos = -1, this.lastGapPos = -2, this.gapStack = [], this.skipNextNewLine = !1, this.lastChunkWritten = !1, this.endOfChunkHit = !1, this.bufferWaterline = 65536, this.isEol = !1, this.lineStartPos = 0, this.droppedBufferSize = 0, this.line = 1, this.lastErrOffset = -1
+ }
+ get col() {
+ return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos)
+ }
+ get offset() {
+ return this.droppedBufferSize + this.pos
+ }
+ getError(e) {
+ const {
+ line: t,
+ col: n,
+ offset: r
+ } = this;
+ return {
+ code: e,
+ startLine: t,
+ endLine: t,
+ startCol: n,
+ endCol: n,
+ startOffset: r,
+ endOffset: r
+ }
+ }
+ _err(e) {
+ this.handler.onParseError && this.lastErrOffset !== this.offset && (this.lastErrOffset = this.offset, this.handler.onParseError(this.getError(e)))
+ }
+ _addGap() {
+ this.gapStack.push(this.lastGapPos), this.lastGapPos = this.pos
+ }
+ _processSurrogate(e) {
+ if (this.pos !== this.html.length - 1) {
+ const t = this.html.charCodeAt(this.pos + 1);
+ if (function(e) {
+ return e >= 56320 && e <= 57343
+ }(t)) return this.pos++, this._addGap(), 1024 * (e - 55296) + 9216 + t
+ } else if (!this.lastChunkWritten) return this.endOfChunkHit = !0, io.EOF;
+ return this._err(Eo.surrogateInInputStream), e
+ }
+ willDropParsedChunk() {
+ return this.pos > this.bufferWaterline
+ }
+ dropParsedChunk() {
+ this.willDropParsedChunk() && (this.html = this.html.substring(this.pos), this.lineStartPos -= this.pos, this.droppedBufferSize += this.pos, this.pos = 0, this.lastGapPos = -2, this.gapStack.length = 0)
+ }
+ write(e, t) {
+ this.html.length > 0 ? this.html += e : this.html = e, this.endOfChunkHit = !1, this.lastChunkWritten = t
+ }
+ insertHtmlAtCurrentPos(e) {
+ this.html = this.html.substring(0, this.pos + 1) + e + this.html.substring(this.pos + 1), this.endOfChunkHit = !1
+ }
+ startsWith(e, t) {
+ if (this.pos + e.length > this.html.length) return this.endOfChunkHit = !this.lastChunkWritten, !1;
+ if (t) return this.html.startsWith(e, this.pos);
+ for (let t = 0; t < e.length; t++) {
+ if ((32 | this.html.charCodeAt(this.pos + t)) !== e.charCodeAt(t)) return !1
+ }
+ return !0
+ }
+ peek(e) {
+ const t = this.pos + e;
+ return t >= this.html.length ? (this.endOfChunkHit = !this.lastChunkWritten, io.EOF) : this.html.charCodeAt(t)
+ }
+ advance() {
+ if (this.pos++, this.isEol && (this.isEol = !1, this.line++, this.lineStartPos = this.pos), this.pos >= this.html.length) return this.endOfChunkHit = !this.lastChunkWritten, io.EOF;
+ let e = this.html.charCodeAt(this.pos);
+ if (e === io.CARRIAGE_RETURN) return this.isEol = !0, this.skipNextNewLine = !0, io.LINE_FEED;
+ if (e === io.LINE_FEED && (this.isEol = !0, this.skipNextNewLine)) return this.line--, this.skipNextNewLine = !1, this._addGap(), this.advance();
+ this.skipNextNewLine = !1, uo(e) && (e = this._processSurrogate(e));
+ return null === this.handler.onParseError || e > 31 && e < 127 || e === io.LINE_FEED || e === io.CARRIAGE_RETURN || e > 159 && e < 64976 || this._checkForProblematicCharacters(e), e
+ }
+ _checkForProblematicCharacters(e) {
+ po(e) ? this._err(Eo.controlCharacterInInputStream) : fo(e) && this._err(Eo.noncharacterInInputStream)
+ }
+ retreat(e) {
+ for (this.pos -= e; this.pos < this.lastGapPos;) this.lastGapPos = this.gapStack.pop(), this.pos--;
+ this.isEol = !1
+ }
+}
+var To;
+
+function _o(e, t) {
+ for (let n = e.attrs.length - 1; n >= 0; n--)
+ if (e.attrs[n].name === t) return e.attrs[n].value;
+ return null
+}! function(e) {
+ e[e.CHARACTER = 0] = "CHARACTER", e[e.NULL_CHARACTER = 1] = "NULL_CHARACTER", e[e.WHITESPACE_CHARACTER = 2] = "WHITESPACE_CHARACTER", e[e.START_TAG = 3] = "START_TAG", e[e.END_TAG = 4] = "END_TAG", e[e.COMMENT = 5] = "COMMENT", e[e.DOCTYPE = 6] = "DOCTYPE", e[e.EOF = 7] = "EOF", e[e.HIBERNATION = 8] = "HIBERNATION"
+}(To = To || (To = {}));
+var Ao = Ke((function(e, t) {
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ }), t.default = new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏઑඡ༉༦ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲϏϢϸontourIntegraìȹoɴ\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲy;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱còJTabcdfgorstרׯؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ߂ߐĀiyޱrc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣসে্ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४ĀnrࢃgleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpwਖਛgȀLRlr৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼અઋp;椅y;䐜Ādl੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑඞcy;䐊cute;䅃ƀaeyહાron;䅇dil;䅅;䐝ƀgswે૰ativeƀMTV૨ediumSpace;怋hiĀcn૦ëeryThiîtedĀGLଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷreak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪௫ఄ಄ದൡඅ櫬Āoungruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater;EFGLSTஶஷ扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨setĀ;Eೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂෛ෧ขภยา฿ไlig;䅒cute耻Ó䃓Āiyීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲcr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬืde耻Õ䃕es;樷ml耻Ö䃖erĀBP๋Āar๐๓r;怾acĀek๚;揞et;掴arenthesis;揜ҀacfhilorsງຊຏຒດຝະrtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ檻cedesȀ;EST່້扺qual;檯lantEqual;扼ilde;找me;怳Ādpuct;戏ortionĀ;aȥl;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL憒ar;懥eftArrow;懄eiling;按oǵ\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄቕቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHcቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗ĀeiቻDzኀ\0ኇefore;戴a;䎘ĀcnኘkSpace;쀀 Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtèa;䎖r;愨pf;愤cr;쀀𝒵ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒;Eaeiopᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;eᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;eᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰᝃᝈ០៦ᠹᡐᜍ᥈ᥰot;櫭ĀcrᛶkȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;tbrk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯᝳ;䎲;愶een;扬r;쀀𝔟gcostuvwឍឝឳេ៕៛ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀakoᠦᠵĀcn៲ᠣkƀlst֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ;敛;敘;攘;攔;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģbar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;elƀ;bhᥨᥩᥫ䁜;槅sub;柈ŬᥴlĀ;e怢t»pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭒\0᯽\0ᰌƀcprᦲute;䄇̀;abcdsᦿᧀᧄ᧕᧙戩nd;橄rcup;橉Āau᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r;Ecefms᩠ᩢᩫ᪤᪪旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ\0\0aĀ;t䀬;䁀ƀ;fl戁îᅠeĀmxent»eóɍǧ\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯delprvw᭠᭬᭷ᮂᮬᯔarrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;pᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰻᰿ᱝᱩᱵᲞᲬᲷᴍᵻᶑᶫᶻ᷆᷍ròar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂᳖᳜᳠mƀ;oș᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄĀDoḆᴴoôĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»ṺƀaeiἒἚls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧\0耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₥₰₴⃰℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽ƀ;qsؾٌlanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqrⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0proør;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼ròòΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonóquigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roøurĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨íistĀ;sடr;쀀𝔫ȀEest⩦⩹⩼ƀ;qs⩭ƀ;qs⩴lanôií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast⭕⭚⭟lleìl;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖchimpqu⮽⯍⯙⬄⯤⯯Ȁ;cerല⯆ഷ⯉uå;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭ååഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñĀ;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;cⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācrir;榿;쀀𝔬ͯ\0\0\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕⶥⶨrò᪀Āirⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔǒr;榷rp;榹;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ\0\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ脀¶;l䂶leìЃɩ\0\0m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳ᤈ⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t⾴ïrel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⋢⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔ABHabcdefhilmnoprstuxけさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstwガクシスゼゾダッデナp;極Ā;fゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ìâヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘rrowĀ;tㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowóarpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓ròaòՑ;怏oustĀ;a㈞掱che»mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì耻䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;qኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫwar;椪lig耻ß䃟㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rëƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproøim»ኬsðኞĀas㚺㚮ðrn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈadempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xôheadĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roðtré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜtré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((function(e) {
+ return e.charCodeAt(0)
+ })))
+}));
+qe(Ao);
+var go = Ke((function(e, t) {
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ }), t.default = new Uint16Array("Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((function(e) {
+ return e.charCodeAt(0)
+ })))
+}));
+qe(go);
+var No = Ke((function(e, t) {
+ var n;
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ }), t.replaceCodePoint = t.fromCodePoint = void 0;
+ var r = new Map([
+ [0, 65533],
+ [128, 8364],
+ [130, 8218],
+ [131, 402],
+ [132, 8222],
+ [133, 8230],
+ [134, 8224],
+ [135, 8225],
+ [136, 710],
+ [137, 8240],
+ [138, 352],
+ [139, 8249],
+ [140, 338],
+ [142, 381],
+ [145, 8216],
+ [146, 8217],
+ [147, 8220],
+ [148, 8221],
+ [149, 8226],
+ [150, 8211],
+ [151, 8212],
+ [152, 732],
+ [153, 8482],
+ [154, 353],
+ [155, 8250],
+ [156, 339],
+ [158, 382],
+ [159, 376]
+ ]);
+
+ function i(e) {
+ var t;
+ return e >= 55296 && e <= 57343 || e > 1114111 ? 65533 : null !== (t = r.get(e)) && void 0 !== t ? t : e
+ }
+ t.fromCodePoint = null !== (n = String.fromCodePoint) && void 0 !== n ? n : function(e) {
+ var t = "";
+ return e > 65535 && (e -= 65536, t += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), t += String.fromCharCode(e)
+ }, t.replaceCodePoint = i, t.default = function(e) {
+ return (0, t.fromCodePoint)(i(e))
+ }
+}));
+qe(No), No.replaceCodePoint, No.fromCodePoint;
+var Co = Ao,
+ Io = go,
+ So = No,
+ bo = Ke((function(e, t) {
+ var n = Ge && Ge.__importDefault || function(e) {
+ return e && e.__esModule ? e : {
+ default: e
+ }
+ };
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ }), t.decodeXML = t.decodeHTMLStrict = t.decodeHTML = t.determineBranch = t.BinTrieFlags = t.fromCodePoint = t.replaceCodePoint = t.decodeCodePoint = t.xmlDecodeTree = t.htmlDecodeTree = void 0;
+ var r = n(Co);
+ t.htmlDecodeTree = r.default;
+ var i = n(Io);
+ t.xmlDecodeTree = i.default;
+ var s = n(So);
+ t.decodeCodePoint = s.default;
+ var a, o, c = So;
+
+ function l(e) {
+ return function(t, n) {
+ for (var r = "", i = 0, c = 0;
+ (c = t.indexOf("&", c)) >= 0;)
+ if (r += t.slice(i, c), i = c, c += 1, t.charCodeAt(c) !== a.NUM) {
+ for (var l = 0, u = 1, p = 0, f = e[p]; c < t.length && !((p = h(e, f, p + 1, t.charCodeAt(c))) < 0); c++, u++) {
+ var d = (f = e[p]) & o.VALUE_LENGTH;
+ if (d) {
+ var E;
+ if (n && t.charCodeAt(c) !== a.SEMI || (l = p, u = 0), 0 === (E = (d >> 14) - 1)) break;
+ p += E
+ }
+ }
+ if (0 !== l) r += 1 === (E = (e[l] & o.VALUE_LENGTH) >> 14) ? String.fromCharCode(e[l] & ~o.VALUE_LENGTH) : 2 === E ? String.fromCharCode(e[l + 1]) : String.fromCharCode(e[l + 1], e[l + 2]), i = c - u + 1
+ } else {
+ var m = c + 1,
+ T = 10,
+ _ = t.charCodeAt(m);
+ (_ | a.To_LOWER_BIT) === a.LOWER_X && (T = 16, c += 1, m += 1);
+ do {
+ _ = t.charCodeAt(++c)
+ } while (_ >= a.ZERO && _ <= a.NINE || 16 === T && (_ | a.To_LOWER_BIT) >= a.LOWER_A && (_ | a.To_LOWER_BIT) <= a.LOWER_F);
+ if (m !== c) {
+ var A = t.substring(m, c),
+ g = parseInt(A, T);
+ if (t.charCodeAt(c) === a.SEMI) c += 1;
+ else if (n) continue;
+ r += (0, s.default)(g), i = c
+ }
+ } return r + t.slice(i)
+ }
+ }
+
+ function h(e, t, n, r) {
+ var i = (t & o.BRANCH_LENGTH) >> 7,
+ s = t & o.JUMP_TABLE;
+ if (0 === i) return 0 !== s && r === s ? n : -1;
+ if (s) {
+ var a = r - s;
+ return a < 0 || a >= i ? -1 : e[n + a] - 1
+ }
+ for (var c = n, l = c + i - 1; c <= l;) {
+ var h = c + l >>> 1,
+ u = e[h];
+ if (u < r) c = h + 1;
+ else {
+ if (!(u > r)) return e[h + i];
+ l = h - 1
+ }
+ }
+ return -1
+ }
+ Object.defineProperty(t, "replaceCodePoint", {
+ enumerable: !0,
+ get: function() {
+ return c.replaceCodePoint
+ }
+ }), Object.defineProperty(t, "fromCodePoint", {
+ enumerable: !0,
+ get: function() {
+ return c.fromCodePoint
+ }
+ }),
+ function(e) {
+ e[e.NUM = 35] = "NUM", e[e.SEMI = 59] = "SEMI", e[e.ZERO = 48] = "ZERO", e[e.NINE = 57] = "NINE", e[e.LOWER_A = 97] = "LOWER_A", e[e.LOWER_F = 102] = "LOWER_F", e[e.LOWER_X = 120] = "LOWER_X", e[e.To_LOWER_BIT = 32] = "To_LOWER_BIT"
+ }(a || (a = {})),
+ function(e) {
+ e[e.VALUE_LENGTH = 49152] = "VALUE_LENGTH", e[e.BRANCH_LENGTH = 16256] = "BRANCH_LENGTH", e[e.JUMP_TABLE = 127] = "JUMP_TABLE"
+ }(o = t.BinTrieFlags || (t.BinTrieFlags = {})), t.determineBranch = h;
+ var u = l(r.default),
+ p = l(i.default);
+ t.decodeHTML = function(e) {
+ return u(e, !1)
+ }, t.decodeHTMLStrict = function(e) {
+ return u(e, !0)
+ }, t.decodeXML = function(e) {
+ return p(e, !0)
+ }
+ }));
+qe(bo), bo.decodeXML, bo.decodeHTMLStrict, bo.decodeHTML;
+var Oo = bo.determineBranch,
+ yo = bo.BinTrieFlags,
+ Lo = bo.fromCodePoint,
+ ko = bo.replaceCodePoint;
+bo.decodeCodePoint;
+var vo, Do, Ro, Mo, Po, xo = bo.xmlDecodeTree,
+ wo = bo.htmlDecodeTree;
+! function(e) {
+ e.HTML = "http://www.w3.org/1999/xhtml", e.MATHML = "http://www.w3.org/1998/Math/MathML", e.SVG = "http://www.w3.org/2000/svg", e.XLINK = "http://www.w3.org/1999/xlink", e.XML = "http://www.w3.org/XML/1998/namespace", e.XMLNS = "http://www.w3.org/2000/xmlns/"
+}(vo = vo || (vo = {})),
+function(e) {
+ e.TYPE = "type", e.ACTION = "action", e.ENCODING = "encoding", e.PROMPT = "prompt", e.NAME = "name", e.COLOR = "color", e.FACE = "face", e.SIZE = "size"
+}(Do = Do || (Do = {})),
+function(e) {
+ e.NO_QUIRKS = "no-quirks", e.QUIRKS = "quirks", e.LIMITED_QUIRKS = "limited-quirks"
+}(Ro = Ro || (Ro = {})),
+function(e) {
+ e.A = "a", e.ADDRESS = "address", e.ANNOTATION_XML = "annotation-xml", e.APPLET = "applet", e.AREA = "area", e.ARTICLE = "article", e.ASIDE = "aside", e.B = "b", e.BASE = "base", e.BASEFONT = "basefont", e.BGSOUND = "bgsound", e.BIG = "big", e.BLOCKQUOTE = "blockquote", e.BODY = "body", e.BR = "br", e.BUTTON = "button", e.CAPTION = "caption", e.CENTER = "center", e.CODE = "code", e.COL = "col", e.COLGROUP = "colgroup", e.DD = "dd", e.DESC = "desc", e.DETAILS = "details", e.DIALOG = "dialog", e.DIR = "dir", e.DIV = "div", e.DL = "dl", e.DT = "dt", e.EM = "em", e.EMBED = "embed", e.FIELDSET = "fieldset", e.FIGCAPTION = "figcaption", e.FIGURE = "figure", e.FONT = "font", e.FOOTER = "footer", e.FOREIGN_OBJECT = "foreignObject", e.FORM = "form", e.FRAME = "frame", e.FRAMESET = "frameset", e.H1 = "h1", e.H2 = "h2", e.H3 = "h3", e.H4 = "h4", e.H5 = "h5", e.H6 = "h6", e.HEAD = "head", e.HEADER = "header", e.HGROUP = "hgroup", e.HR = "hr", e.HTML = "html", e.I = "i", e.IMG = "img", e.IMAGE = "image", e.INPUT = "input", e.IFRAME = "iframe", e.KEYGEN = "keygen", e.LABEL = "label", e.LI = "li", e.LINK = "link", e.LISTING = "listing", e.MAIN = "main", e.MALIGNMARK = "malignmark", e.MARQUEE = "marquee", e.MATH = "math", e.MENU = "menu", e.META = "meta", e.MGLYPH = "mglyph", e.MI = "mi", e.MO = "mo", e.MN = "mn", e.MS = "ms", e.MTEXT = "mtext", e.NAV = "nav", e.NOBR = "nobr", e.NOFRAMES = "noframes", e.NOEMBED = "noembed", e.NOSCRIPT = "noscript", e.OBJECT = "object", e.OL = "ol", e.OPTGROUP = "optgroup", e.OPTION = "option", e.P = "p", e.PARAM = "param", e.PLAINTEXT = "plaintext", e.PRE = "pre", e.RB = "rb", e.RP = "rp", e.RT = "rt", e.RTC = "rtc", e.RUBY = "ruby", e.S = "s", e.SCRIPT = "script", e.SECTION = "section", e.SELECT = "select", e.SOURCE = "source", e.SMALL = "small", e.SPAN = "span", e.STRIKE = "strike", e.STRONG = "strong", e.STYLE = "style", e.SUB = "sub", e.SUMMARY = "summary", e.SUP = "sup", e.TABLE = "table", e.TBODY = "tbody", e.TEMPLATE = "template", e.TEXTAREA = "textarea", e.TFOOT = "tfoot", e.TD = "td", e.TH = "th", e.THEAD = "thead", e.TITLE = "title", e.TR = "tr", e.TRACK = "track", e.TT = "tt", e.U = "u", e.UL = "ul", e.SVG = "svg", e.VAR = "var", e.WBR = "wbr", e.XMP = "xmp"
+}(Mo = Mo || (Mo = {})),
+function(e) {
+ e[e.UNKNOWN = 0] = "UNKNOWN", e[e.A = 1] = "A", e[e.ADDRESS = 2] = "ADDRESS", e[e.ANNOTATION_XML = 3] = "ANNOTATION_XML", e[e.APPLET = 4] = "APPLET", e[e.AREA = 5] = "AREA", e[e.ARTICLE = 6] = "ARTICLE", e[e.ASIDE = 7] = "ASIDE", e[e.B = 8] = "B", e[e.BASE = 9] = "BASE", e[e.BASEFONT = 10] = "BASEFONT", e[e.BGSOUND = 11] = "BGSOUND", e[e.BIG = 12] = "BIG", e[e.BLOCKQUOTE = 13] = "BLOCKQUOTE", e[e.BODY = 14] = "BODY", e[e.BR = 15] = "BR", e[e.BUTTON = 16] = "BUTTON", e[e.CAPTION = 17] = "CAPTION", e[e.CENTER = 18] = "CENTER", e[e.CODE = 19] = "CODE", e[e.COL = 20] = "COL", e[e.COLGROUP = 21] = "COLGROUP", e[e.DD = 22] = "DD", e[e.DESC = 23] = "DESC", e[e.DETAILS = 24] = "DETAILS", e[e.DIALOG = 25] = "DIALOG", e[e.DIR = 26] = "DIR", e[e.DIV = 27] = "DIV", e[e.DL = 28] = "DL", e[e.DT = 29] = "DT", e[e.EM = 30] = "EM", e[e.EMBED = 31] = "EMBED", e[e.FIELDSET = 32] = "FIELDSET", e[e.FIGCAPTION = 33] = "FIGCAPTION", e[e.FIGURE = 34] = "FIGURE", e[e.FONT = 35] = "FONT", e[e.FOOTER = 36] = "FOOTER", e[e.FOREIGN_OBJECT = 37] = "FOREIGN_OBJECT", e[e.FORM = 38] = "FORM", e[e.FRAME = 39] = "FRAME", e[e.FRAMESET = 40] = "FRAMESET", e[e.H1 = 41] = "H1", e[e.H2 = 42] = "H2", e[e.H3 = 43] = "H3", e[e.H4 = 44] = "H4", e[e.H5 = 45] = "H5", e[e.H6 = 46] = "H6", e[e.HEAD = 47] = "HEAD", e[e.HEADER = 48] = "HEADER", e[e.HGROUP = 49] = "HGROUP", e[e.HR = 50] = "HR", e[e.HTML = 51] = "HTML", e[e.I = 52] = "I", e[e.IMG = 53] = "IMG", e[e.IMAGE = 54] = "IMAGE", e[e.INPUT = 55] = "INPUT", e[e.IFRAME = 56] = "IFRAME", e[e.KEYGEN = 57] = "KEYGEN", e[e.LABEL = 58] = "LABEL", e[e.LI = 59] = "LI", e[e.LINK = 60] = "LINK", e[e.LISTING = 61] = "LISTING", e[e.MAIN = 62] = "MAIN", e[e.MALIGNMARK = 63] = "MALIGNMARK", e[e.MARQUEE = 64] = "MARQUEE", e[e.MATH = 65] = "MATH", e[e.MENU = 66] = "MENU", e[e.META = 67] = "META", e[e.MGLYPH = 68] = "MGLYPH", e[e.MI = 69] = "MI", e[e.MO = 70] = "MO", e[e.MN = 71] = "MN", e[e.MS = 72] = "MS", e[e.MTEXT = 73] = "MTEXT", e[e.NAV = 74] = "NAV", e[e.NOBR = 75] = "NOBR", e[e.NOFRAMES = 76] = "NOFRAMES", e[e.NOEMBED = 77] = "NOEMBED", e[e.NOSCRIPT = 78] = "NOSCRIPT", e[e.OBJECT = 79] = "OBJECT", e[e.OL = 80] = "OL", e[e.OPTGROUP = 81] = "OPTGROUP", e[e.OPTION = 82] = "OPTION", e[e.P = 83] = "P", e[e.PARAM = 84] = "PARAM", e[e.PLAINTEXT = 85] = "PLAINTEXT", e[e.PRE = 86] = "PRE", e[e.RB = 87] = "RB", e[e.RP = 88] = "RP", e[e.RT = 89] = "RT", e[e.RTC = 90] = "RTC", e[e.RUBY = 91] = "RUBY", e[e.S = 92] = "S", e[e.SCRIPT = 93] = "SCRIPT", e[e.SECTION = 94] = "SECTION", e[e.SELECT = 95] = "SELECT", e[e.SOURCE = 96] = "SOURCE", e[e.SMALL = 97] = "SMALL", e[e.SPAN = 98] = "SPAN", e[e.STRIKE = 99] = "STRIKE", e[e.STRONG = 100] = "STRONG", e[e.STYLE = 101] = "STYLE", e[e.SUB = 102] = "SUB", e[e.SUMMARY = 103] = "SUMMARY", e[e.SUP = 104] = "SUP", e[e.TABLE = 105] = "TABLE", e[e.TBODY = 106] = "TBODY", e[e.TEMPLATE = 107] = "TEMPLATE", e[e.TEXTAREA = 108] = "TEXTAREA", e[e.TFOOT = 109] = "TFOOT", e[e.TD = 110] = "TD", e[e.TH = 111] = "TH", e[e.THEAD = 112] = "THEAD", e[e.TITLE = 113] = "TITLE", e[e.TR = 114] = "TR", e[e.TRACK = 115] = "TRACK", e[e.TT = 116] = "TT", e[e.U = 117] = "U", e[e.UL = 118] = "UL", e[e.SVG = 119] = "SVG", e[e.VAR = 120] = "VAR", e[e.WBR = 121] = "WBR", e[e.XMP = 122] = "XMP"
+}(Po = Po || (Po = {}));
+const Bo = new Map([
+ [Mo.A, Po.A],
+ [Mo.ADDRESS, Po.ADDRESS],
+ [Mo.ANNOTATION_XML, Po.ANNOTATION_XML],
+ [Mo.APPLET, Po.APPLET],
+ [Mo.AREA, Po.AREA],
+ [Mo.ARTICLE, Po.ARTICLE],
+ [Mo.ASIDE, Po.ASIDE],
+ [Mo.B, Po.B],
+ [Mo.BASE, Po.BASE],
+ [Mo.BASEFONT, Po.BASEFONT],
+ [Mo.BGSOUND, Po.BGSOUND],
+ [Mo.BIG, Po.BIG],
+ [Mo.BLOCKQUOTE, Po.BLOCKQUOTE],
+ [Mo.BODY, Po.BODY],
+ [Mo.BR, Po.BR],
+ [Mo.BUTTON, Po.BUTTON],
+ [Mo.CAPTION, Po.CAPTION],
+ [Mo.CENTER, Po.CENTER],
+ [Mo.CODE, Po.CODE],
+ [Mo.COL, Po.COL],
+ [Mo.COLGROUP, Po.COLGROUP],
+ [Mo.DD, Po.DD],
+ [Mo.DESC, Po.DESC],
+ [Mo.DETAILS, Po.DETAILS],
+ [Mo.DIALOG, Po.DIALOG],
+ [Mo.DIR, Po.DIR],
+ [Mo.DIV, Po.DIV],
+ [Mo.DL, Po.DL],
+ [Mo.DT, Po.DT],
+ [Mo.EM, Po.EM],
+ [Mo.EMBED, Po.EMBED],
+ [Mo.FIELDSET, Po.FIELDSET],
+ [Mo.FIGCAPTION, Po.FIGCAPTION],
+ [Mo.FIGURE, Po.FIGURE],
+ [Mo.FONT, Po.FONT],
+ [Mo.FOOTER, Po.FOOTER],
+ [Mo.FOREIGN_OBJECT, Po.FOREIGN_OBJECT],
+ [Mo.FORM, Po.FORM],
+ [Mo.FRAME, Po.FRAME],
+ [Mo.FRAMESET, Po.FRAMESET],
+ [Mo.H1, Po.H1],
+ [Mo.H2, Po.H2],
+ [Mo.H3, Po.H3],
+ [Mo.H4, Po.H4],
+ [Mo.H5, Po.H5],
+ [Mo.H6, Po.H6],
+ [Mo.HEAD, Po.HEAD],
+ [Mo.HEADER, Po.HEADER],
+ [Mo.HGROUP, Po.HGROUP],
+ [Mo.HR, Po.HR],
+ [Mo.HTML, Po.HTML],
+ [Mo.I, Po.I],
+ [Mo.IMG, Po.IMG],
+ [Mo.IMAGE, Po.IMAGE],
+ [Mo.INPUT, Po.INPUT],
+ [Mo.IFRAME, Po.IFRAME],
+ [Mo.KEYGEN, Po.KEYGEN],
+ [Mo.LABEL, Po.LABEL],
+ [Mo.LI, Po.LI],
+ [Mo.LINK, Po.LINK],
+ [Mo.LISTING, Po.LISTING],
+ [Mo.MAIN, Po.MAIN],
+ [Mo.MALIGNMARK, Po.MALIGNMARK],
+ [Mo.MARQUEE, Po.MARQUEE],
+ [Mo.MATH, Po.MATH],
+ [Mo.MENU, Po.MENU],
+ [Mo.META, Po.META],
+ [Mo.MGLYPH, Po.MGLYPH],
+ [Mo.MI, Po.MI],
+ [Mo.MO, Po.MO],
+ [Mo.MN, Po.MN],
+ [Mo.MS, Po.MS],
+ [Mo.MTEXT, Po.MTEXT],
+ [Mo.NAV, Po.NAV],
+ [Mo.NOBR, Po.NOBR],
+ [Mo.NOFRAMES, Po.NOFRAMES],
+ [Mo.NOEMBED, Po.NOEMBED],
+ [Mo.NOSCRIPT, Po.NOSCRIPT],
+ [Mo.OBJECT, Po.OBJECT],
+ [Mo.OL, Po.OL],
+ [Mo.OPTGROUP, Po.OPTGROUP],
+ [Mo.OPTION, Po.OPTION],
+ [Mo.P, Po.P],
+ [Mo.PARAM, Po.PARAM],
+ [Mo.PLAINTEXT, Po.PLAINTEXT],
+ [Mo.PRE, Po.PRE],
+ [Mo.RB, Po.RB],
+ [Mo.RP, Po.RP],
+ [Mo.RT, Po.RT],
+ [Mo.RTC, Po.RTC],
+ [Mo.RUBY, Po.RUBY],
+ [Mo.S, Po.S],
+ [Mo.SCRIPT, Po.SCRIPT],
+ [Mo.SECTION, Po.SECTION],
+ [Mo.SELECT, Po.SELECT],
+ [Mo.SOURCE, Po.SOURCE],
+ [Mo.SMALL, Po.SMALL],
+ [Mo.SPAN, Po.SPAN],
+ [Mo.STRIKE, Po.STRIKE],
+ [Mo.STRONG, Po.STRONG],
+ [Mo.STYLE, Po.STYLE],
+ [Mo.SUB, Po.SUB],
+ [Mo.SUMMARY, Po.SUMMARY],
+ [Mo.SUP, Po.SUP],
+ [Mo.TABLE, Po.TABLE],
+ [Mo.TBODY, Po.TBODY],
+ [Mo.TEMPLATE, Po.TEMPLATE],
+ [Mo.TEXTAREA, Po.TEXTAREA],
+ [Mo.TFOOT, Po.TFOOT],
+ [Mo.TD, Po.TD],
+ [Mo.TH, Po.TH],
+ [Mo.THEAD, Po.THEAD],
+ [Mo.TITLE, Po.TITLE],
+ [Mo.TR, Po.TR],
+ [Mo.TRACK, Po.TRACK],
+ [Mo.TT, Po.TT],
+ [Mo.U, Po.U],
+ [Mo.UL, Po.UL],
+ [Mo.SVG, Po.SVG],
+ [Mo.VAR, Po.VAR],
+ [Mo.WBR, Po.WBR],
+ [Mo.XMP, Po.XMP]
+]);
+
+function Fo(e) {
+ var t;
+ return null !== (t = Bo.get(e)) && void 0 !== t ? t : Po.UNKNOWN
+}
+const Uo = Po,
+ Ho = {
+ [vo.HTML]: new Set([Uo.ADDRESS, Uo.APPLET, Uo.AREA, Uo.ARTICLE, Uo.ASIDE, Uo.BASE, Uo.BASEFONT, Uo.BGSOUND, Uo.BLOCKQUOTE, Uo.BODY, Uo.BR, Uo.BUTTON, Uo.CAPTION, Uo.CENTER, Uo.COL, Uo.COLGROUP, Uo.DD, Uo.DETAILS, Uo.DIR, Uo.DIV, Uo.DL, Uo.DT, Uo.EMBED, Uo.FIELDSET, Uo.FIGCAPTION, Uo.FIGURE, Uo.FOOTER, Uo.FORM, Uo.FRAME, Uo.FRAMESET, Uo.H1, Uo.H2, Uo.H3, Uo.H4, Uo.H5, Uo.H6, Uo.HEAD, Uo.HEADER, Uo.HGROUP, Uo.HR, Uo.HTML, Uo.IFRAME, Uo.IMG, Uo.INPUT, Uo.LI, Uo.LINK, Uo.LISTING, Uo.MAIN, Uo.MARQUEE, Uo.MENU, Uo.META, Uo.NAV, Uo.NOEMBED, Uo.NOFRAMES, Uo.NOSCRIPT, Uo.OBJECT, Uo.OL, Uo.P, Uo.PARAM, Uo.PLAINTEXT, Uo.PRE, Uo.SCRIPT, Uo.SECTION, Uo.SELECT, Uo.SOURCE, Uo.STYLE, Uo.SUMMARY, Uo.TABLE, Uo.TBODY, Uo.TD, Uo.TEMPLATE, Uo.TEXTAREA, Uo.TFOOT, Uo.TH, Uo.THEAD, Uo.TITLE, Uo.TR, Uo.TRACK, Uo.UL, Uo.WBR, Uo.XMP]),
+ [vo.MATHML]: new Set([Uo.MI, Uo.MO, Uo.MN, Uo.MS, Uo.MTEXT, Uo.ANNOTATION_XML]),
+ [vo.SVG]: new Set([Uo.TITLE, Uo.FOREIGN_OBJECT, Uo.DESC]),
+ [vo.XLINK]: new Set,
+ [vo.XML]: new Set,
+ [vo.XMLNS]: new Set
+ };
+
+function Go(e) {
+ return e === Uo.H1 || e === Uo.H2 || e === Uo.H3 || e === Uo.H4 || e === Uo.H5 || e === Uo.H6
+}
+const Yo = new Set([Mo.STYLE, Mo.SCRIPT, Mo.XMP, Mo.IFRAME, Mo.NOEMBED, Mo.NOFRAMES, Mo.PLAINTEXT]);
+const qo = new Map([
+ [128, 8364],
+ [130, 8218],
+ [131, 402],
+ [132, 8222],
+ [133, 8230],
+ [134, 8224],
+ [135, 8225],
+ [136, 710],
+ [137, 8240],
+ [138, 352],
+ [139, 8249],
+ [140, 338],
+ [142, 381],
+ [145, 8216],
+ [146, 8217],
+ [147, 8220],
+ [148, 8221],
+ [149, 8226],
+ [150, 8211],
+ [151, 8212],
+ [152, 732],
+ [153, 8482],
+ [154, 353],
+ [155, 8250],
+ [156, 339],
+ [158, 382],
+ [159, 376]
+]);
+var Ko;
+! function(e) {
+ e[e.DATA = 0] = "DATA", e[e.RCDATA = 1] = "RCDATA", e[e.RAWTEXT = 2] = "RAWTEXT", e[e.SCRIPT_DATA = 3] = "SCRIPT_DATA", e[e.PLAINTEXT = 4] = "PLAINTEXT", e[e.TAG_OPEN = 5] = "TAG_OPEN", e[e.END_TAG_OPEN = 6] = "END_TAG_OPEN", e[e.TAG_NAME = 7] = "TAG_NAME", e[e.RCDATA_LESS_THAN_SIGN = 8] = "RCDATA_LESS_THAN_SIGN", e[e.RCDATA_END_TAG_OPEN = 9] = "RCDATA_END_TAG_OPEN", e[e.RCDATA_END_TAG_NAME = 10] = "RCDATA_END_TAG_NAME", e[e.RAWTEXT_LESS_THAN_SIGN = 11] = "RAWTEXT_LESS_THAN_SIGN", e[e.RAWTEXT_END_TAG_OPEN = 12] = "RAWTEXT_END_TAG_OPEN", e[e.RAWTEXT_END_TAG_NAME = 13] = "RAWTEXT_END_TAG_NAME", e[e.SCRIPT_DATA_LESS_THAN_SIGN = 14] = "SCRIPT_DATA_LESS_THAN_SIGN", e[e.SCRIPT_DATA_END_TAG_OPEN = 15] = "SCRIPT_DATA_END_TAG_OPEN", e[e.SCRIPT_DATA_END_TAG_NAME = 16] = "SCRIPT_DATA_END_TAG_NAME", e[e.SCRIPT_DATA_ESCAPE_START = 17] = "SCRIPT_DATA_ESCAPE_START", e[e.SCRIPT_DATA_ESCAPE_START_DASH = 18] = "SCRIPT_DATA_ESCAPE_START_DASH", e[e.SCRIPT_DATA_ESCAPED = 19] = "SCRIPT_DATA_ESCAPED", e[e.SCRIPT_DATA_ESCAPED_DASH = 20] = "SCRIPT_DATA_ESCAPED_DASH", e[e.SCRIPT_DATA_ESCAPED_DASH_DASH = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH", e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN", e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN", e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME", e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START", e[e.SCRIPT_DATA_DOUBLE_ESCAPED = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN", e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END", e[e.BEFORE_ATTRIBUTE_NAME = 31] = "BEFORE_ATTRIBUTE_NAME", e[e.ATTRIBUTE_NAME = 32] = "ATTRIBUTE_NAME", e[e.AFTER_ATTRIBUTE_NAME = 33] = "AFTER_ATTRIBUTE_NAME", e[e.BEFORE_ATTRIBUTE_VALUE = 34] = "BEFORE_ATTRIBUTE_VALUE", e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED", e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED", e[e.ATTRIBUTE_VALUE_UNQUOTED = 37] = "ATTRIBUTE_VALUE_UNQUOTED", e[e.AFTER_ATTRIBUTE_VALUE_QUOTED = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED", e[e.SELF_CLOSING_START_TAG = 39] = "SELF_CLOSING_START_TAG", e[e.BOGUS_COMMENT = 40] = "BOGUS_COMMENT", e[e.MARKUP_DECLARATION_OPEN = 41] = "MARKUP_DECLARATION_OPEN", e[e.COMMENT_START = 42] = "COMMENT_START", e[e.COMMENT_START_DASH = 43] = "COMMENT_START_DASH", e[e.COMMENT = 44] = "COMMENT", e[e.COMMENT_LESS_THAN_SIGN = 45] = "COMMENT_LESS_THAN_SIGN", e[e.COMMENT_LESS_THAN_SIGN_BANG = 46] = "COMMENT_LESS_THAN_SIGN_BANG", e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH", e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH", e[e.COMMENT_END_DASH = 49] = "COMMENT_END_DASH", e[e.COMMENT_END = 50] = "COMMENT_END", e[e.COMMENT_END_BANG = 51] = "COMMENT_END_BANG", e[e.DOCTYPE = 52] = "DOCTYPE", e[e.BEFORE_DOCTYPE_NAME = 53] = "BEFORE_DOCTYPE_NAME", e[e.DOCTYPE_NAME = 54] = "DOCTYPE_NAME", e[e.AFTER_DOCTYPE_NAME = 55] = "AFTER_DOCTYPE_NAME", e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD", e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER", e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED", e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED", e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER", e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS", e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD", e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER", e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED", e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED", e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER", e[e.BOGUS_DOCTYPE = 67] = "BOGUS_DOCTYPE", e[e.CDATA_SECTION = 68] = "CDATA_SECTION", e[e.CDATA_SECTION_BRACKET = 69] = "CDATA_SECTION_BRACKET", e[e.CDATA_SECTION_END = 70] = "CDATA_SECTION_END", e[e.CHARACTER_REFERENCE = 71] = "CHARACTER_REFERENCE", e[e.NAMED_CHARACTER_REFERENCE = 72] = "NAMED_CHARACTER_REFERENCE", e[e.AMBIGUOUS_AMPERSAND = 73] = "AMBIGUOUS_AMPERSAND", e[e.NUMERIC_CHARACTER_REFERENCE = 74] = "NUMERIC_CHARACTER_REFERENCE", e[e.HEXADEMICAL_CHARACTER_REFERENCE_START = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START", e[e.HEXADEMICAL_CHARACTER_REFERENCE = 76] = "HEXADEMICAL_CHARACTER_REFERENCE", e[e.DECIMAL_CHARACTER_REFERENCE = 77] = "DECIMAL_CHARACTER_REFERENCE", e[e.NUMERIC_CHARACTER_REFERENCE_END = 78] = "NUMERIC_CHARACTER_REFERENCE_END"
+}(Ko || (Ko = {}));
+const jo = {
+ DATA: Ko.DATA,
+ RCDATA: Ko.RCDATA,
+ RAWTEXT: Ko.RAWTEXT,
+ SCRIPT_DATA: Ko.SCRIPT_DATA,
+ PLAINTEXT: Ko.PLAINTEXT,
+ CDATA_SECTION: Ko.CDATA_SECTION
+};
+
+function Vo(e) {
+ return e >= io.DIGIT_0 && e <= io.DIGIT_9
+}
+
+function Wo(e) {
+ return e >= io.LATIN_CAPITAL_A && e <= io.LATIN_CAPITAL_Z
+}
+
+function Qo(e) {
+ return function(e) {
+ return e >= io.LATIN_SMALL_A && e <= io.LATIN_SMALL_Z
+ }(e) || Wo(e)
+}
+
+function Xo(e) {
+ return Qo(e) || Vo(e)
+}
+
+function $o(e) {
+ return e >= io.LATIN_CAPITAL_A && e <= io.LATIN_CAPITAL_F
+}
+
+function zo(e) {
+ return e >= io.LATIN_SMALL_A && e <= io.LATIN_SMALL_F
+}
+
+function Jo(e) {
+ return e + 32
+}
+
+function Zo(e) {
+ return e === io.SPACE || e === io.LINE_FEED || e === io.TABULATION || e === io.FORM_FEED
+}
+
+function ec(e) {
+ return Zo(e) || e === io.SOLIDUS || e === io.GREATER_THAN_SIGN
+}
+class tc {
+ constructor(e, t) {
+ this.options = e, this.handler = t, this.paused = !1, this.inLoop = !1, this.inForeignNode = !1, this.lastStartTagName = "", this.active = !1, this.state = Ko.DATA, this.returnState = Ko.DATA, this.charRefCode = -1, this.consumedAfterSnapshot = -1, this.currentCharacterToken = null, this.currentToken = null, this.currentAttr = {
+ name: "",
+ value: ""
+ }, this.preprocessor = new mo(t), this.currentLocation = this.getCurrentLocation(-1)
+ }
+ _err(e) {
+ var t, n;
+ null === (n = (t = this.handler).onParseError) || void 0 === n || n.call(t, this.preprocessor.getError(e))
+ }
+ getCurrentLocation(e) {
+ return this.options.sourceCodeLocationInfo ? {
+ startLine: this.preprocessor.line,
+ startCol: this.preprocessor.col - e,
+ startOffset: this.preprocessor.offset - e,
+ endLine: -1,
+ endCol: -1,
+ endOffset: -1
+ } : null
+ }
+ _runParsingLoop() {
+ if (!this.inLoop) {
+ for (this.inLoop = !0; this.active && !this.paused;) {
+ this.consumedAfterSnapshot = 0;
+ const e = this._consume();
+ this._ensureHibernation() || this._callState(e)
+ }
+ this.inLoop = !1
+ }
+ }
+ pause() {
+ this.paused = !0
+ }
+ resume(e) {
+ if (!this.paused) throw new Error("Parser was already resumed");
+ this.paused = !1, this.inLoop || (this._runParsingLoop(), this.paused || null == e || e())
+ }
+ write(e, t, n) {
+ this.active = !0, this.preprocessor.write(e, t), this._runParsingLoop(), this.paused || null == n || n()
+ }
+ insertHtmlAtCurrentPos(e) {
+ this.active = !0, this.preprocessor.insertHtmlAtCurrentPos(e), this._runParsingLoop()
+ }
+ _ensureHibernation() {
+ return !!this.preprocessor.endOfChunkHit && (this._unconsume(this.consumedAfterSnapshot), this.active = !1, !0)
+ }
+ _consume() {
+ return this.consumedAfterSnapshot++, this.preprocessor.advance()
+ }
+ _unconsume(e) {
+ this.consumedAfterSnapshot -= e, this.preprocessor.retreat(e)
+ }
+ _reconsumeInState(e, t) {
+ this.state = e, this._callState(t)
+ }
+ _advanceBy(e) {
+ this.consumedAfterSnapshot += e;
+ for (let t = 0; t < e; t++) this.preprocessor.advance()
+ }
+ _consumeSequenceIfMatch(e, t) {
+ return !!this.preprocessor.startsWith(e, t) && (this._advanceBy(e.length - 1), !0)
+ }
+ _createStartTagToken() {
+ this.currentToken = {
+ type: To.START_TAG,
+ tagName: "",
+ tagID: Po.UNKNOWN,
+ selfClosing: !1,
+ ackSelfClosing: !1,
+ attrs: [],
+ location: this.getCurrentLocation(1)
+ }
+ }
+ _createEndTagToken() {
+ this.currentToken = {
+ type: To.END_TAG,
+ tagName: "",
+ tagID: Po.UNKNOWN,
+ selfClosing: !1,
+ ackSelfClosing: !1,
+ attrs: [],
+ location: this.getCurrentLocation(2)
+ }
+ }
+ _createCommentToken(e) {
+ this.currentToken = {
+ type: To.COMMENT,
+ data: "",
+ location: this.getCurrentLocation(e)
+ }
+ }
+ _createDoctypeToken(e) {
+ this.currentToken = {
+ type: To.DOCTYPE,
+ name: e,
+ forceQuirks: !1,
+ publicId: null,
+ systemId: null,
+ location: this.currentLocation
+ }
+ }
+ _createCharacterToken(e, t) {
+ this.currentCharacterToken = {
+ type: e,
+ chars: t,
+ location: this.currentLocation
+ }
+ }
+ _createAttr(e) {
+ this.currentAttr = {
+ name: e,
+ value: ""
+ }, this.currentLocation = this.getCurrentLocation(0)
+ }
+ _leaveAttrName() {
+ var e, t;
+ const n = this.currentToken;
+ if (null === _o(n, this.currentAttr.name)) {
+ if (n.attrs.push(this.currentAttr), n.location && this.currentLocation) {
+ (null !== (e = (t = n.location).attrs) && void 0 !== e ? e : t.attrs = Object.create(null))[this.currentAttr.name] = this.currentLocation, this._leaveAttrValue()
+ }
+ } else this._err(Eo.duplicateAttribute)
+ }
+ _leaveAttrValue() {
+ this.currentLocation && (this.currentLocation.endLine = this.preprocessor.line, this.currentLocation.endCol = this.preprocessor.col, this.currentLocation.endOffset = this.preprocessor.offset)
+ }
+ prepareToken(e) {
+ this._emitCurrentCharacterToken(e.location), this.currentToken = null, e.location && (e.location.endLine = this.preprocessor.line, e.location.endCol = this.preprocessor.col + 1, e.location.endOffset = this.preprocessor.offset + 1), this.currentLocation = this.getCurrentLocation(-1)
+ }
+ emitCurrentTagToken() {
+ const e = this.currentToken;
+ this.prepareToken(e), e.tagID = Fo(e.tagName), e.type === To.START_TAG ? (this.lastStartTagName = e.tagName, this.handler.onStartTag(e)) : (e.attrs.length > 0 && this._err(Eo.endTagWithAttributes), e.selfClosing && this._err(Eo.endTagWithTrailingSolidus), this.handler.onEndTag(e)), this.preprocessor.dropParsedChunk()
+ }
+ emitCurrentComment(e) {
+ this.prepareToken(e), this.handler.onComment(e), this.preprocessor.dropParsedChunk()
+ }
+ emitCurrentDoctype(e) {
+ this.prepareToken(e), this.handler.onDoctype(e), this.preprocessor.dropParsedChunk()
+ }
+ _emitCurrentCharacterToken(e) {
+ if (this.currentCharacterToken) {
+ switch (e && this.currentCharacterToken.location && (this.currentCharacterToken.location.endLine = e.startLine, this.currentCharacterToken.location.endCol = e.startCol, this.currentCharacterToken.location.endOffset = e.startOffset), this.currentCharacterToken.type) {
+ case To.CHARACTER:
+ this.handler.onCharacter(this.currentCharacterToken);
+ break;
+ case To.NULL_CHARACTER:
+ this.handler.onNullCharacter(this.currentCharacterToken);
+ break;
+ case To.WHITESPACE_CHARACTER:
+ this.handler.onWhitespaceCharacter(this.currentCharacterToken)
+ }
+ this.currentCharacterToken = null
+ }
+ }
+ _emitEOFToken() {
+ const e = this.getCurrentLocation(0);
+ e && (e.endLine = e.startLine, e.endCol = e.startCol, e.endOffset = e.startOffset), this._emitCurrentCharacterToken(e), this.handler.onEof({
+ type: To.EOF,
+ location: e
+ }), this.active = !1
+ }
+ _appendCharToCurrentCharacterToken(e, t) {
+ if (this.currentCharacterToken) {
+ if (this.currentCharacterToken.type === e) return void(this.currentCharacterToken.chars += t);
+ this.currentLocation = this.getCurrentLocation(0), this._emitCurrentCharacterToken(this.currentLocation), this.preprocessor.dropParsedChunk()
+ }
+ this._createCharacterToken(e, t)
+ }
+ _emitCodePoint(e) {
+ const t = Zo(e) ? To.WHITESPACE_CHARACTER : e === io.NULL ? To.NULL_CHARACTER : To.CHARACTER;
+ this._appendCharToCurrentCharacterToken(t, String.fromCodePoint(e))
+ }
+ _emitChars(e) {
+ this._appendCharToCurrentCharacterToken(To.CHARACTER, e)
+ }
+ _matchNamedCharacterReference(e) {
+ let t = null,
+ n = 0,
+ r = !1;
+ for (let s = 0, a = wo[0]; s >= 0 && (s = Oo(wo, a, s + 1, e), !(s < 0)); e = this._consume()) {
+ n += 1, a = wo[s];
+ const o = a & yo.VALUE_LENGTH;
+ if (o) {
+ const a = (o >> 14) - 1;
+ if (e !== io.SEMICOLON && this._isCharacterReferenceInAttribute() && ((i = this.preprocessor.peek(1)) === io.EQUALS_SIGN || Xo(i)) ? (t = [io.AMPERSAND], s += a) : (t = 0 === a ? [wo[s] & ~yo.VALUE_LENGTH] : 1 === a ? [wo[++s]] : [wo[++s], wo[++s]], n = 0, r = e !== io.SEMICOLON), 0 === a) {
+ this._consume();
+ break
+ }
+ }
+ }
+ var i;
+ return this._unconsume(n), r && !this.preprocessor.endOfChunkHit && this._err(Eo.missingSemicolonAfterCharacterReference), this._unconsume(1), t
+ }
+ _isCharacterReferenceInAttribute() {
+ return this.returnState === Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === Ko.ATTRIBUTE_VALUE_UNQUOTED
+ }
+ _flushCodePointConsumedAsCharacterReference(e) {
+ this._isCharacterReferenceInAttribute() ? this.currentAttr.value += String.fromCodePoint(e) : this._emitCodePoint(e)
+ }
+ _callState(e) {
+ switch (this.state) {
+ case Ko.DATA:
+ this._stateData(e);
+ break;
+ case Ko.RCDATA:
+ this._stateRcdata(e);
+ break;
+ case Ko.RAWTEXT:
+ this._stateRawtext(e);
+ break;
+ case Ko.SCRIPT_DATA:
+ this._stateScriptData(e);
+ break;
+ case Ko.PLAINTEXT:
+ this._statePlaintext(e);
+ break;
+ case Ko.TAG_OPEN:
+ this._stateTagOpen(e);
+ break;
+ case Ko.END_TAG_OPEN:
+ this._stateEndTagOpen(e);
+ break;
+ case Ko.TAG_NAME:
+ this._stateTagName(e);
+ break;
+ case Ko.RCDATA_LESS_THAN_SIGN:
+ this._stateRcdataLessThanSign(e);
+ break;
+ case Ko.RCDATA_END_TAG_OPEN:
+ this._stateRcdataEndTagOpen(e);
+ break;
+ case Ko.RCDATA_END_TAG_NAME:
+ this._stateRcdataEndTagName(e);
+ break;
+ case Ko.RAWTEXT_LESS_THAN_SIGN:
+ this._stateRawtextLessThanSign(e);
+ break;
+ case Ko.RAWTEXT_END_TAG_OPEN:
+ this._stateRawtextEndTagOpen(e);
+ break;
+ case Ko.RAWTEXT_END_TAG_NAME:
+ this._stateRawtextEndTagName(e);
+ break;
+ case Ko.SCRIPT_DATA_LESS_THAN_SIGN:
+ this._stateScriptDataLessThanSign(e);
+ break;
+ case Ko.SCRIPT_DATA_END_TAG_OPEN:
+ this._stateScriptDataEndTagOpen(e);
+ break;
+ case Ko.SCRIPT_DATA_END_TAG_NAME:
+ this._stateScriptDataEndTagName(e);
+ break;
+ case Ko.SCRIPT_DATA_ESCAPE_START:
+ this._stateScriptDataEscapeStart(e);
+ break;
+ case Ko.SCRIPT_DATA_ESCAPE_START_DASH:
+ this._stateScriptDataEscapeStartDash(e);
+ break;
+ case Ko.SCRIPT_DATA_ESCAPED:
+ this._stateScriptDataEscaped(e);
+ break;
+ case Ko.SCRIPT_DATA_ESCAPED_DASH:
+ this._stateScriptDataEscapedDash(e);
+ break;
+ case Ko.SCRIPT_DATA_ESCAPED_DASH_DASH:
+ this._stateScriptDataEscapedDashDash(e);
+ break;
+ case Ko.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:
+ this._stateScriptDataEscapedLessThanSign(e);
+ break;
+ case Ko.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:
+ this._stateScriptDataEscapedEndTagOpen(e);
+ break;
+ case Ko.SCRIPT_DATA_ESCAPED_END_TAG_NAME:
+ this._stateScriptDataEscapedEndTagName(e);
+ break;
+ case Ko.SCRIPT_DATA_DOUBLE_ESCAPE_START:
+ this._stateScriptDataDoubleEscapeStart(e);
+ break;
+ case Ko.SCRIPT_DATA_DOUBLE_ESCAPED:
+ this._stateScriptDataDoubleEscaped(e);
+ break;
+ case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:
+ this._stateScriptDataDoubleEscapedDash(e);
+ break;
+ case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:
+ this._stateScriptDataDoubleEscapedDashDash(e);
+ break;
+ case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:
+ this._stateScriptDataDoubleEscapedLessThanSign(e);
+ break;
+ case Ko.SCRIPT_DATA_DOUBLE_ESCAPE_END:
+ this._stateScriptDataDoubleEscapeEnd(e);
+ break;
+ case Ko.BEFORE_ATTRIBUTE_NAME:
+ this._stateBeforeAttributeName(e);
+ break;
+ case Ko.ATTRIBUTE_NAME:
+ this._stateAttributeName(e);
+ break;
+ case Ko.AFTER_ATTRIBUTE_NAME:
+ this._stateAfterAttributeName(e);
+ break;
+ case Ko.BEFORE_ATTRIBUTE_VALUE:
+ this._stateBeforeAttributeValue(e);
+ break;
+ case Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED:
+ this._stateAttributeValueDoubleQuoted(e);
+ break;
+ case Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED:
+ this._stateAttributeValueSingleQuoted(e);
+ break;
+ case Ko.ATTRIBUTE_VALUE_UNQUOTED:
+ this._stateAttributeValueUnquoted(e);
+ break;
+ case Ko.AFTER_ATTRIBUTE_VALUE_QUOTED:
+ this._stateAfterAttributeValueQuoted(e);
+ break;
+ case Ko.SELF_CLOSING_START_TAG:
+ this._stateSelfClosingStartTag(e);
+ break;
+ case Ko.BOGUS_COMMENT:
+ this._stateBogusComment(e);
+ break;
+ case Ko.MARKUP_DECLARATION_OPEN:
+ this._stateMarkupDeclarationOpen(e);
+ break;
+ case Ko.COMMENT_START:
+ this._stateCommentStart(e);
+ break;
+ case Ko.COMMENT_START_DASH:
+ this._stateCommentStartDash(e);
+ break;
+ case Ko.COMMENT:
+ this._stateComment(e);
+ break;
+ case Ko.COMMENT_LESS_THAN_SIGN:
+ this._stateCommentLessThanSign(e);
+ break;
+ case Ko.COMMENT_LESS_THAN_SIGN_BANG:
+ this._stateCommentLessThanSignBang(e);
+ break;
+ case Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH:
+ this._stateCommentLessThanSignBangDash(e);
+ break;
+ case Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:
+ this._stateCommentLessThanSignBangDashDash(e);
+ break;
+ case Ko.COMMENT_END_DASH:
+ this._stateCommentEndDash(e);
+ break;
+ case Ko.COMMENT_END:
+ this._stateCommentEnd(e);
+ break;
+ case Ko.COMMENT_END_BANG:
+ this._stateCommentEndBang(e);
+ break;
+ case Ko.DOCTYPE:
+ this._stateDoctype(e);
+ break;
+ case Ko.BEFORE_DOCTYPE_NAME:
+ this._stateBeforeDoctypeName(e);
+ break;
+ case Ko.DOCTYPE_NAME:
+ this._stateDoctypeName(e);
+ break;
+ case Ko.AFTER_DOCTYPE_NAME:
+ this._stateAfterDoctypeName(e);
+ break;
+ case Ko.AFTER_DOCTYPE_PUBLIC_KEYWORD:
+ this._stateAfterDoctypePublicKeyword(e);
+ break;
+ case Ko.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:
+ this._stateBeforeDoctypePublicIdentifier(e);
+ break;
+ case Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:
+ this._stateDoctypePublicIdentifierDoubleQuoted(e);
+ break;
+ case Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:
+ this._stateDoctypePublicIdentifierSingleQuoted(e);
+ break;
+ case Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:
+ this._stateAfterDoctypePublicIdentifier(e);
+ break;
+ case Ko.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:
+ this._stateBetweenDoctypePublicAndSystemIdentifiers(e);
+ break;
+ case Ko.AFTER_DOCTYPE_SYSTEM_KEYWORD:
+ this._stateAfterDoctypeSystemKeyword(e);
+ break;
+ case Ko.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:
+ this._stateBeforeDoctypeSystemIdentifier(e);
+ break;
+ case Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:
+ this._stateDoctypeSystemIdentifierDoubleQuoted(e);
+ break;
+ case Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:
+ this._stateDoctypeSystemIdentifierSingleQuoted(e);
+ break;
+ case Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:
+ this._stateAfterDoctypeSystemIdentifier(e);
+ break;
+ case Ko.BOGUS_DOCTYPE:
+ this._stateBogusDoctype(e);
+ break;
+ case Ko.CDATA_SECTION:
+ this._stateCdataSection(e);
+ break;
+ case Ko.CDATA_SECTION_BRACKET:
+ this._stateCdataSectionBracket(e);
+ break;
+ case Ko.CDATA_SECTION_END:
+ this._stateCdataSectionEnd(e);
+ break;
+ case Ko.CHARACTER_REFERENCE:
+ this._stateCharacterReference(e);
+ break;
+ case Ko.NAMED_CHARACTER_REFERENCE:
+ this._stateNamedCharacterReference(e);
+ break;
+ case Ko.AMBIGUOUS_AMPERSAND:
+ this._stateAmbiguousAmpersand(e);
+ break;
+ case Ko.NUMERIC_CHARACTER_REFERENCE:
+ this._stateNumericCharacterReference(e);
+ break;
+ case Ko.HEXADEMICAL_CHARACTER_REFERENCE_START:
+ this._stateHexademicalCharacterReferenceStart(e);
+ break;
+ case Ko.HEXADEMICAL_CHARACTER_REFERENCE:
+ this._stateHexademicalCharacterReference(e);
+ break;
+ case Ko.DECIMAL_CHARACTER_REFERENCE:
+ this._stateDecimalCharacterReference(e);
+ break;
+ case Ko.NUMERIC_CHARACTER_REFERENCE_END:
+ this._stateNumericCharacterReferenceEnd(e);
+ break;
+ default:
+ throw new Error("Unknown state")
+ }
+ }
+ _stateData(e) {
+ switch (e) {
+ case io.LESS_THAN_SIGN:
+ this.state = Ko.TAG_OPEN;
+ break;
+ case io.AMPERSAND:
+ this.returnState = Ko.DATA, this.state = Ko.CHARACTER_REFERENCE;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this._emitCodePoint(e);
+ break;
+ case io.EOF:
+ this._emitEOFToken();
+ break;
+ default:
+ this._emitCodePoint(e)
+ }
+ }
+ _stateRcdata(e) {
+ switch (e) {
+ case io.AMPERSAND:
+ this.returnState = Ko.RCDATA, this.state = Ko.CHARACTER_REFERENCE;
+ break;
+ case io.LESS_THAN_SIGN:
+ this.state = Ko.RCDATA_LESS_THAN_SIGN;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this._emitChars("�");
+ break;
+ case io.EOF:
+ this._emitEOFToken();
+ break;
+ default:
+ this._emitCodePoint(e)
+ }
+ }
+ _stateRawtext(e) {
+ switch (e) {
+ case io.LESS_THAN_SIGN:
+ this.state = Ko.RAWTEXT_LESS_THAN_SIGN;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this._emitChars("�");
+ break;
+ case io.EOF:
+ this._emitEOFToken();
+ break;
+ default:
+ this._emitCodePoint(e)
+ }
+ }
+ _stateScriptData(e) {
+ switch (e) {
+ case io.LESS_THAN_SIGN:
+ this.state = Ko.SCRIPT_DATA_LESS_THAN_SIGN;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this._emitChars("�");
+ break;
+ case io.EOF:
+ this._emitEOFToken();
+ break;
+ default:
+ this._emitCodePoint(e)
+ }
+ }
+ _statePlaintext(e) {
+ switch (e) {
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this._emitChars("�");
+ break;
+ case io.EOF:
+ this._emitEOFToken();
+ break;
+ default:
+ this._emitCodePoint(e)
+ }
+ }
+ _stateTagOpen(e) {
+ if (Qo(e)) this._createStartTagToken(), this.state = Ko.TAG_NAME, this._stateTagName(e);
+ else switch (e) {
+ case io.EXCLAMATION_MARK:
+ this.state = Ko.MARKUP_DECLARATION_OPEN;
+ break;
+ case io.SOLIDUS:
+ this.state = Ko.END_TAG_OPEN;
+ break;
+ case io.QUESTION_MARK:
+ this._err(Eo.unexpectedQuestionMarkInsteadOfTagName), this._createCommentToken(1), this.state = Ko.BOGUS_COMMENT, this._stateBogusComment(e);
+ break;
+ case io.EOF:
+ this._err(Eo.eofBeforeTagName), this._emitChars("<"), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.invalidFirstCharacterOfTagName), this._emitChars("<"), this.state = Ko.DATA, this._stateData(e)
+ }
+ }
+ _stateEndTagOpen(e) {
+ if (Qo(e)) this._createEndTagToken(), this.state = Ko.TAG_NAME, this._stateTagName(e);
+ else switch (e) {
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.missingEndTagName), this.state = Ko.DATA;
+ break;
+ case io.EOF:
+ this._err(Eo.eofBeforeTagName), this._emitChars(""), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.invalidFirstCharacterOfTagName), this._createCommentToken(2), this.state = Ko.BOGUS_COMMENT, this._stateBogusComment(e)
+ }
+ }
+ _stateTagName(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ this.state = Ko.BEFORE_ATTRIBUTE_NAME;
+ break;
+ case io.SOLIDUS:
+ this.state = Ko.SELF_CLOSING_START_TAG;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.DATA, this.emitCurrentTagToken();
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), t.tagName += "�";
+ break;
+ case io.EOF:
+ this._err(Eo.eofInTag), this._emitEOFToken();
+ break;
+ default:
+ t.tagName += String.fromCodePoint(Wo(e) ? Jo(e) : e)
+ }
+ }
+ _stateRcdataLessThanSign(e) {
+ e === io.SOLIDUS ? this.state = Ko.RCDATA_END_TAG_OPEN : (this._emitChars("<"), this.state = Ko.RCDATA, this._stateRcdata(e))
+ }
+ _stateRcdataEndTagOpen(e) {
+ Qo(e) ? (this.state = Ko.RCDATA_END_TAG_NAME, this._stateRcdataEndTagName(e)) : (this._emitChars(""), this.state = Ko.RCDATA, this._stateRcdata(e))
+ }
+ handleSpecialEndTag(e) {
+ if (!this.preprocessor.startsWith(this.lastStartTagName, !1)) return !this._ensureHibernation();
+ this._createEndTagToken();
+ this.currentToken.tagName = this.lastStartTagName;
+ switch (this.preprocessor.peek(this.lastStartTagName.length)) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ return this._advanceBy(this.lastStartTagName.length), this.state = Ko.BEFORE_ATTRIBUTE_NAME, !1;
+ case io.SOLIDUS:
+ return this._advanceBy(this.lastStartTagName.length), this.state = Ko.SELF_CLOSING_START_TAG, !1;
+ case io.GREATER_THAN_SIGN:
+ return this._advanceBy(this.lastStartTagName.length), this.emitCurrentTagToken(), this.state = Ko.DATA, !1;
+ default:
+ return !this._ensureHibernation()
+ }
+ }
+ _stateRcdataEndTagName(e) {
+ this.handleSpecialEndTag(e) && (this._emitChars(""), this.state = Ko.RCDATA, this._stateRcdata(e))
+ }
+ _stateRawtextLessThanSign(e) {
+ e === io.SOLIDUS ? this.state = Ko.RAWTEXT_END_TAG_OPEN : (this._emitChars("<"), this.state = Ko.RAWTEXT, this._stateRawtext(e))
+ }
+ _stateRawtextEndTagOpen(e) {
+ Qo(e) ? (this.state = Ko.RAWTEXT_END_TAG_NAME, this._stateRawtextEndTagName(e)) : (this._emitChars(""), this.state = Ko.RAWTEXT, this._stateRawtext(e))
+ }
+ _stateRawtextEndTagName(e) {
+ this.handleSpecialEndTag(e) && (this._emitChars(""), this.state = Ko.RAWTEXT, this._stateRawtext(e))
+ }
+ _stateScriptDataLessThanSign(e) {
+ switch (e) {
+ case io.SOLIDUS:
+ this.state = Ko.SCRIPT_DATA_END_TAG_OPEN;
+ break;
+ case io.EXCLAMATION_MARK:
+ this.state = Ko.SCRIPT_DATA_ESCAPE_START, this._emitChars("");
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this.state = Ko.SCRIPT_DATA_ESCAPED, this._emitChars("�");
+ break;
+ case io.EOF:
+ this._err(Eo.eofInScriptHtmlCommentLikeText), this._emitEOFToken();
+ break;
+ default:
+ this.state = Ko.SCRIPT_DATA_ESCAPED, this._emitCodePoint(e)
+ }
+ }
+ _stateScriptDataEscapedLessThanSign(e) {
+ e === io.SOLIDUS ? this.state = Ko.SCRIPT_DATA_ESCAPED_END_TAG_OPEN : Qo(e) ? (this._emitChars("<"), this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPE_START, this._stateScriptDataDoubleEscapeStart(e)) : (this._emitChars("<"), this.state = Ko.SCRIPT_DATA_ESCAPED, this._stateScriptDataEscaped(e))
+ }
+ _stateScriptDataEscapedEndTagOpen(e) {
+ Qo(e) ? (this.state = Ko.SCRIPT_DATA_ESCAPED_END_TAG_NAME, this._stateScriptDataEscapedEndTagName(e)) : (this._emitChars(""), this.state = Ko.SCRIPT_DATA_ESCAPED, this._stateScriptDataEscaped(e))
+ }
+ _stateScriptDataEscapedEndTagName(e) {
+ this.handleSpecialEndTag(e) && (this._emitChars(""), this.state = Ko.SCRIPT_DATA_ESCAPED, this._stateScriptDataEscaped(e))
+ }
+ _stateScriptDataDoubleEscapeStart(e) {
+ if (this.preprocessor.startsWith(co, !1) && ec(this.preprocessor.peek(co.length))) {
+ this._emitCodePoint(e);
+ for (let e = 0; e < co.length; e++) this._emitCodePoint(this._consume());
+ this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED
+ } else this._ensureHibernation() || (this.state = Ko.SCRIPT_DATA_ESCAPED, this._stateScriptDataEscaped(e))
+ }
+ _stateScriptDataDoubleEscaped(e) {
+ switch (e) {
+ case io.HYPHEN_MINUS:
+ this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH, this._emitChars("-");
+ break;
+ case io.LESS_THAN_SIGN:
+ this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, this._emitChars("<");
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this._emitChars("�");
+ break;
+ case io.EOF:
+ this._err(Eo.eofInScriptHtmlCommentLikeText), this._emitEOFToken();
+ break;
+ default:
+ this._emitCodePoint(e)
+ }
+ }
+ _stateScriptDataDoubleEscapedDash(e) {
+ switch (e) {
+ case io.HYPHEN_MINUS:
+ this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH, this._emitChars("-");
+ break;
+ case io.LESS_THAN_SIGN:
+ this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, this._emitChars("<");
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._emitChars("�");
+ break;
+ case io.EOF:
+ this._err(Eo.eofInScriptHtmlCommentLikeText), this._emitEOFToken();
+ break;
+ default:
+ this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._emitCodePoint(e)
+ }
+ }
+ _stateScriptDataDoubleEscapedDashDash(e) {
+ switch (e) {
+ case io.HYPHEN_MINUS:
+ this._emitChars("-");
+ break;
+ case io.LESS_THAN_SIGN:
+ this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, this._emitChars("<");
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.SCRIPT_DATA, this._emitChars(">");
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._emitChars("�");
+ break;
+ case io.EOF:
+ this._err(Eo.eofInScriptHtmlCommentLikeText), this._emitEOFToken();
+ break;
+ default:
+ this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._emitCodePoint(e)
+ }
+ }
+ _stateScriptDataDoubleEscapedLessThanSign(e) {
+ e === io.SOLIDUS ? (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPE_END, this._emitChars("/")) : (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._stateScriptDataDoubleEscaped(e))
+ }
+ _stateScriptDataDoubleEscapeEnd(e) {
+ if (this.preprocessor.startsWith(co, !1) && ec(this.preprocessor.peek(co.length))) {
+ this._emitCodePoint(e);
+ for (let e = 0; e < co.length; e++) this._emitCodePoint(this._consume());
+ this.state = Ko.SCRIPT_DATA_ESCAPED
+ } else this._ensureHibernation() || (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._stateScriptDataDoubleEscaped(e))
+ }
+ _stateBeforeAttributeName(e) {
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.SOLIDUS:
+ case io.GREATER_THAN_SIGN:
+ case io.EOF:
+ this.state = Ko.AFTER_ATTRIBUTE_NAME, this._stateAfterAttributeName(e);
+ break;
+ case io.EQUALS_SIGN:
+ this._err(Eo.unexpectedEqualsSignBeforeAttributeName), this._createAttr("="), this.state = Ko.ATTRIBUTE_NAME;
+ break;
+ default:
+ this._createAttr(""), this.state = Ko.ATTRIBUTE_NAME, this._stateAttributeName(e)
+ }
+ }
+ _stateAttributeName(e) {
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ case io.SOLIDUS:
+ case io.GREATER_THAN_SIGN:
+ case io.EOF:
+ this._leaveAttrName(), this.state = Ko.AFTER_ATTRIBUTE_NAME, this._stateAfterAttributeName(e);
+ break;
+ case io.EQUALS_SIGN:
+ this._leaveAttrName(), this.state = Ko.BEFORE_ATTRIBUTE_VALUE;
+ break;
+ case io.QUOTATION_MARK:
+ case io.APOSTROPHE:
+ case io.LESS_THAN_SIGN:
+ this._err(Eo.unexpectedCharacterInAttributeName), this.currentAttr.name += String.fromCodePoint(e);
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this.currentAttr.name += "�";
+ break;
+ default:
+ this.currentAttr.name += String.fromCodePoint(Wo(e) ? Jo(e) : e)
+ }
+ }
+ _stateAfterAttributeName(e) {
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.SOLIDUS:
+ this.state = Ko.SELF_CLOSING_START_TAG;
+ break;
+ case io.EQUALS_SIGN:
+ this.state = Ko.BEFORE_ATTRIBUTE_VALUE;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.DATA, this.emitCurrentTagToken();
+ break;
+ case io.EOF:
+ this._err(Eo.eofInTag), this._emitEOFToken();
+ break;
+ default:
+ this._createAttr(""), this.state = Ko.ATTRIBUTE_NAME, this._stateAttributeName(e)
+ }
+ }
+ _stateBeforeAttributeValue(e) {
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.QUOTATION_MARK:
+ this.state = Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED;
+ break;
+ case io.APOSTROPHE:
+ this.state = Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.missingAttributeValue), this.state = Ko.DATA, this.emitCurrentTagToken();
+ break;
+ default:
+ this.state = Ko.ATTRIBUTE_VALUE_UNQUOTED, this._stateAttributeValueUnquoted(e)
+ }
+ }
+ _stateAttributeValueDoubleQuoted(e) {
+ switch (e) {
+ case io.QUOTATION_MARK:
+ this.state = Ko.AFTER_ATTRIBUTE_VALUE_QUOTED;
+ break;
+ case io.AMPERSAND:
+ this.returnState = Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED, this.state = Ko.CHARACTER_REFERENCE;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�";
+ break;
+ case io.EOF:
+ this._err(Eo.eofInTag), this._emitEOFToken();
+ break;
+ default:
+ this.currentAttr.value += String.fromCodePoint(e)
+ }
+ }
+ _stateAttributeValueSingleQuoted(e) {
+ switch (e) {
+ case io.APOSTROPHE:
+ this.state = Ko.AFTER_ATTRIBUTE_VALUE_QUOTED;
+ break;
+ case io.AMPERSAND:
+ this.returnState = Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED, this.state = Ko.CHARACTER_REFERENCE;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�";
+ break;
+ case io.EOF:
+ this._err(Eo.eofInTag), this._emitEOFToken();
+ break;
+ default:
+ this.currentAttr.value += String.fromCodePoint(e)
+ }
+ }
+ _stateAttributeValueUnquoted(e) {
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ this._leaveAttrValue(), this.state = Ko.BEFORE_ATTRIBUTE_NAME;
+ break;
+ case io.AMPERSAND:
+ this.returnState = Ko.ATTRIBUTE_VALUE_UNQUOTED, this.state = Ko.CHARACTER_REFERENCE;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._leaveAttrValue(), this.state = Ko.DATA, this.emitCurrentTagToken();
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�";
+ break;
+ case io.QUOTATION_MARK:
+ case io.APOSTROPHE:
+ case io.LESS_THAN_SIGN:
+ case io.EQUALS_SIGN:
+ case io.GRAVE_ACCENT:
+ this._err(Eo.unexpectedCharacterInUnquotedAttributeValue), this.currentAttr.value += String.fromCodePoint(e);
+ break;
+ case io.EOF:
+ this._err(Eo.eofInTag), this._emitEOFToken();
+ break;
+ default:
+ this.currentAttr.value += String.fromCodePoint(e)
+ }
+ }
+ _stateAfterAttributeValueQuoted(e) {
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ this._leaveAttrValue(), this.state = Ko.BEFORE_ATTRIBUTE_NAME;
+ break;
+ case io.SOLIDUS:
+ this._leaveAttrValue(), this.state = Ko.SELF_CLOSING_START_TAG;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._leaveAttrValue(), this.state = Ko.DATA, this.emitCurrentTagToken();
+ break;
+ case io.EOF:
+ this._err(Eo.eofInTag), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.missingWhitespaceBetweenAttributes), this.state = Ko.BEFORE_ATTRIBUTE_NAME, this._stateBeforeAttributeName(e)
+ }
+ }
+ _stateSelfClosingStartTag(e) {
+ switch (e) {
+ case io.GREATER_THAN_SIGN:
+ this.currentToken.selfClosing = !0, this.state = Ko.DATA, this.emitCurrentTagToken();
+ break;
+ case io.EOF:
+ this._err(Eo.eofInTag), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.unexpectedSolidusInTag), this.state = Ko.BEFORE_ATTRIBUTE_NAME, this._stateBeforeAttributeName(e)
+ }
+ }
+ _stateBogusComment(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.DATA, this.emitCurrentComment(t);
+ break;
+ case io.EOF:
+ this.emitCurrentComment(t), this._emitEOFToken();
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), t.data += "�";
+ break;
+ default:
+ t.data += String.fromCodePoint(e)
+ }
+ }
+ _stateMarkupDeclarationOpen(e) {
+ this._consumeSequenceIfMatch(so, !0) ? (this._createCommentToken(so.length + 1), this.state = Ko.COMMENT_START) : this._consumeSequenceIfMatch(oo, !1) ? (this.currentLocation = this.getCurrentLocation(oo.length + 1), this.state = Ko.DOCTYPE) : this._consumeSequenceIfMatch(ao, !0) ? this.inForeignNode ? this.state = Ko.CDATA_SECTION : (this._err(Eo.cdataInHtmlContent), this._createCommentToken(ao.length + 1), this.currentToken.data = "[CDATA[", this.state = Ko.BOGUS_COMMENT) : this._ensureHibernation() || (this._err(Eo.incorrectlyOpenedComment), this._createCommentToken(2), this.state = Ko.BOGUS_COMMENT, this._stateBogusComment(e))
+ }
+ _stateCommentStart(e) {
+ switch (e) {
+ case io.HYPHEN_MINUS:
+ this.state = Ko.COMMENT_START_DASH;
+ break;
+ case io.GREATER_THAN_SIGN: {
+ this._err(Eo.abruptClosingOfEmptyComment), this.state = Ko.DATA;
+ const e = this.currentToken;
+ this.emitCurrentComment(e);
+ break
+ }
+ default:
+ this.state = Ko.COMMENT, this._stateComment(e)
+ }
+ }
+ _stateCommentStartDash(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.HYPHEN_MINUS:
+ this.state = Ko.COMMENT_END;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.abruptClosingOfEmptyComment), this.state = Ko.DATA, this.emitCurrentComment(t);
+ break;
+ case io.EOF:
+ this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken();
+ break;
+ default:
+ t.data += "-", this.state = Ko.COMMENT, this._stateComment(e)
+ }
+ }
+ _stateComment(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.HYPHEN_MINUS:
+ this.state = Ko.COMMENT_END_DASH;
+ break;
+ case io.LESS_THAN_SIGN:
+ t.data += "<", this.state = Ko.COMMENT_LESS_THAN_SIGN;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), t.data += "�";
+ break;
+ case io.EOF:
+ this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken();
+ break;
+ default:
+ t.data += String.fromCodePoint(e)
+ }
+ }
+ _stateCommentLessThanSign(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.EXCLAMATION_MARK:
+ t.data += "!", this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG;
+ break;
+ case io.LESS_THAN_SIGN:
+ t.data += "<";
+ break;
+ default:
+ this.state = Ko.COMMENT, this._stateComment(e)
+ }
+ }
+ _stateCommentLessThanSignBang(e) {
+ e === io.HYPHEN_MINUS ? this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH : (this.state = Ko.COMMENT, this._stateComment(e))
+ }
+ _stateCommentLessThanSignBangDash(e) {
+ e === io.HYPHEN_MINUS ? this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH : (this.state = Ko.COMMENT_END_DASH, this._stateCommentEndDash(e))
+ }
+ _stateCommentLessThanSignBangDashDash(e) {
+ e !== io.GREATER_THAN_SIGN && e !== io.EOF && this._err(Eo.nestedComment), this.state = Ko.COMMENT_END, this._stateCommentEnd(e)
+ }
+ _stateCommentEndDash(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.HYPHEN_MINUS:
+ this.state = Ko.COMMENT_END;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken();
+ break;
+ default:
+ t.data += "-", this.state = Ko.COMMENT, this._stateComment(e)
+ }
+ }
+ _stateCommentEnd(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.DATA, this.emitCurrentComment(t);
+ break;
+ case io.EXCLAMATION_MARK:
+ this.state = Ko.COMMENT_END_BANG;
+ break;
+ case io.HYPHEN_MINUS:
+ t.data += "-";
+ break;
+ case io.EOF:
+ this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken();
+ break;
+ default:
+ t.data += "--", this.state = Ko.COMMENT, this._stateComment(e)
+ }
+ }
+ _stateCommentEndBang(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.HYPHEN_MINUS:
+ t.data += "--!", this.state = Ko.COMMENT_END_DASH;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.incorrectlyClosedComment), this.state = Ko.DATA, this.emitCurrentComment(t);
+ break;
+ case io.EOF:
+ this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken();
+ break;
+ default:
+ t.data += "--!", this.state = Ko.COMMENT, this._stateComment(e)
+ }
+ }
+ _stateDoctype(e) {
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ this.state = Ko.BEFORE_DOCTYPE_NAME;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.BEFORE_DOCTYPE_NAME, this._stateBeforeDoctypeName(e);
+ break;
+ case io.EOF: {
+ this._err(Eo.eofInDoctype), this._createDoctypeToken(null);
+ const e = this.currentToken;
+ e.forceQuirks = !0, this.emitCurrentDoctype(e), this._emitEOFToken();
+ break
+ }
+ default:
+ this._err(Eo.missingWhitespaceBeforeDoctypeName), this.state = Ko.BEFORE_DOCTYPE_NAME, this._stateBeforeDoctypeName(e)
+ }
+ }
+ _stateBeforeDoctypeName(e) {
+ if (Wo(e)) this._createDoctypeToken(String.fromCharCode(Jo(e))), this.state = Ko.DOCTYPE_NAME;
+ else switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), this._createDoctypeToken("�"), this.state = Ko.DOCTYPE_NAME;
+ break;
+ case io.GREATER_THAN_SIGN: {
+ this._err(Eo.missingDoctypeName), this._createDoctypeToken(null);
+ const e = this.currentToken;
+ e.forceQuirks = !0, this.emitCurrentDoctype(e), this.state = Ko.DATA;
+ break
+ }
+ case io.EOF: {
+ this._err(Eo.eofInDoctype), this._createDoctypeToken(null);
+ const e = this.currentToken;
+ e.forceQuirks = !0, this.emitCurrentDoctype(e), this._emitEOFToken();
+ break
+ }
+ default:
+ this._createDoctypeToken(String.fromCodePoint(e)), this.state = Ko.DOCTYPE_NAME
+ }
+ }
+ _stateDoctypeName(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ this.state = Ko.AFTER_DOCTYPE_NAME;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.DATA, this.emitCurrentDoctype(t);
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), t.name += "�";
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ t.name += String.fromCodePoint(Wo(e) ? Jo(e) : e)
+ }
+ }
+ _stateAfterDoctypeName(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.DATA, this.emitCurrentDoctype(t);
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ this._consumeSequenceIfMatch(lo, !1) ? this.state = Ko.AFTER_DOCTYPE_PUBLIC_KEYWORD : this._consumeSequenceIfMatch(ho, !1) ? this.state = Ko.AFTER_DOCTYPE_SYSTEM_KEYWORD : this._ensureHibernation() || (this._err(Eo.invalidCharacterSequenceAfterDoctypeName), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e))
+ }
+ }
+ _stateAfterDoctypePublicKeyword(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ this.state = Ko.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;
+ break;
+ case io.QUOTATION_MARK:
+ this._err(Eo.missingWhitespaceAfterDoctypePublicKeyword), t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;
+ break;
+ case io.APOSTROPHE:
+ this._err(Eo.missingWhitespaceAfterDoctypePublicKeyword), t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.missingDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t);
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.missingQuoteBeforeDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)
+ }
+ }
+ _stateBeforeDoctypePublicIdentifier(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.QUOTATION_MARK:
+ t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;
+ break;
+ case io.APOSTROPHE:
+ t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.missingDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t);
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.missingQuoteBeforeDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)
+ }
+ }
+ _stateDoctypePublicIdentifierDoubleQuoted(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.QUOTATION_MARK:
+ this.state = Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), t.publicId += "�";
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.abruptDoctypePublicIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ t.publicId += String.fromCodePoint(e)
+ }
+ }
+ _stateDoctypePublicIdentifierSingleQuoted(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.APOSTROPHE:
+ this.state = Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), t.publicId += "�";
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.abruptDoctypePublicIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ t.publicId += String.fromCodePoint(e)
+ }
+ }
+ _stateAfterDoctypePublicIdentifier(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ this.state = Ko.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.DATA, this.emitCurrentDoctype(t);
+ break;
+ case io.QUOTATION_MARK:
+ this._err(Eo.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
+ break;
+ case io.APOSTROPHE:
+ this._err(Eo.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)
+ }
+ }
+ _stateBetweenDoctypePublicAndSystemIdentifiers(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.emitCurrentDoctype(t), this.state = Ko.DATA;
+ break;
+ case io.QUOTATION_MARK:
+ t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
+ break;
+ case io.APOSTROPHE:
+ t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)
+ }
+ }
+ _stateAfterDoctypeSystemKeyword(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ this.state = Ko.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;
+ break;
+ case io.QUOTATION_MARK:
+ this._err(Eo.missingWhitespaceAfterDoctypeSystemKeyword), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
+ break;
+ case io.APOSTROPHE:
+ this._err(Eo.missingWhitespaceAfterDoctypeSystemKeyword), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.missingDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t);
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)
+ }
+ }
+ _stateBeforeDoctypeSystemIdentifier(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.QUOTATION_MARK:
+ t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
+ break;
+ case io.APOSTROPHE:
+ t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.missingDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t);
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)
+ }
+ }
+ _stateDoctypeSystemIdentifierDoubleQuoted(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.QUOTATION_MARK:
+ this.state = Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), t.systemId += "�";
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.abruptDoctypeSystemIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ t.systemId += String.fromCodePoint(e)
+ }
+ }
+ _stateDoctypeSystemIdentifierSingleQuoted(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.APOSTROPHE:
+ this.state = Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter), t.systemId += "�";
+ break;
+ case io.GREATER_THAN_SIGN:
+ this._err(Eo.abruptDoctypeSystemIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ t.systemId += String.fromCodePoint(e)
+ }
+ }
+ _stateAfterDoctypeSystemIdentifier(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.SPACE:
+ case io.LINE_FEED:
+ case io.TABULATION:
+ case io.FORM_FEED:
+ break;
+ case io.GREATER_THAN_SIGN:
+ this.emitCurrentDoctype(t), this.state = Ko.DATA;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken();
+ break;
+ default:
+ this._err(Eo.unexpectedCharacterAfterDoctypeSystemIdentifier), this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)
+ }
+ }
+ _stateBogusDoctype(e) {
+ const t = this.currentToken;
+ switch (e) {
+ case io.GREATER_THAN_SIGN:
+ this.emitCurrentDoctype(t), this.state = Ko.DATA;
+ break;
+ case io.NULL:
+ this._err(Eo.unexpectedNullCharacter);
+ break;
+ case io.EOF:
+ this.emitCurrentDoctype(t), this._emitEOFToken()
+ }
+ }
+ _stateCdataSection(e) {
+ switch (e) {
+ case io.RIGHT_SQUARE_BRACKET:
+ this.state = Ko.CDATA_SECTION_BRACKET;
+ break;
+ case io.EOF:
+ this._err(Eo.eofInCdata), this._emitEOFToken();
+ break;
+ default:
+ this._emitCodePoint(e)
+ }
+ }
+ _stateCdataSectionBracket(e) {
+ e === io.RIGHT_SQUARE_BRACKET ? this.state = Ko.CDATA_SECTION_END : (this._emitChars("]"), this.state = Ko.CDATA_SECTION, this._stateCdataSection(e))
+ }
+ _stateCdataSectionEnd(e) {
+ switch (e) {
+ case io.GREATER_THAN_SIGN:
+ this.state = Ko.DATA;
+ break;
+ case io.RIGHT_SQUARE_BRACKET:
+ this._emitChars("]");
+ break;
+ default:
+ this._emitChars("]]"), this.state = Ko.CDATA_SECTION, this._stateCdataSection(e)
+ }
+ }
+ _stateCharacterReference(e) {
+ e === io.NUMBER_SIGN ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE : Xo(e) ? (this.state = Ko.NAMED_CHARACTER_REFERENCE, this._stateNamedCharacterReference(e)) : (this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._reconsumeInState(this.returnState, e))
+ }
+ _stateNamedCharacterReference(e) {
+ const t = this._matchNamedCharacterReference(e);
+ if (this._ensureHibernation());
+ else if (t) {
+ for (let e = 0; e < t.length; e++) this._flushCodePointConsumedAsCharacterReference(t[e]);
+ this.state = this.returnState
+ } else this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this.state = Ko.AMBIGUOUS_AMPERSAND
+ }
+ _stateAmbiguousAmpersand(e) {
+ Xo(e) ? this._flushCodePointConsumedAsCharacterReference(e) : (e === io.SEMICOLON && this._err(Eo.unknownNamedCharacterReference), this._reconsumeInState(this.returnState, e))
+ }
+ _stateNumericCharacterReference(e) {
+ this.charRefCode = 0, e === io.LATIN_SMALL_X || e === io.LATIN_CAPITAL_X ? this.state = Ko.HEXADEMICAL_CHARACTER_REFERENCE_START : Vo(e) ? (this.state = Ko.DECIMAL_CHARACTER_REFERENCE, this._stateDecimalCharacterReference(e)) : (this._err(Eo.absenceOfDigitsInNumericCharacterReference), this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._flushCodePointConsumedAsCharacterReference(io.NUMBER_SIGN), this._reconsumeInState(this.returnState, e))
+ }
+ _stateHexademicalCharacterReferenceStart(e) {
+ ! function(e) {
+ return Vo(e) || $o(e) || zo(e)
+ }(e) ? (this._err(Eo.absenceOfDigitsInNumericCharacterReference), this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._flushCodePointConsumedAsCharacterReference(io.NUMBER_SIGN), this._unconsume(2), this.state = this.returnState) : (this.state = Ko.HEXADEMICAL_CHARACTER_REFERENCE, this._stateHexademicalCharacterReference(e))
+ }
+ _stateHexademicalCharacterReference(e) {
+ $o(e) ? this.charRefCode = 16 * this.charRefCode + e - 55 : zo(e) ? this.charRefCode = 16 * this.charRefCode + e - 87 : Vo(e) ? this.charRefCode = 16 * this.charRefCode + e - 48 : e === io.SEMICOLON ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END : (this._err(Eo.missingSemicolonAfterCharacterReference), this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END, this._stateNumericCharacterReferenceEnd(e))
+ }
+ _stateDecimalCharacterReference(e) {
+ Vo(e) ? this.charRefCode = 10 * this.charRefCode + e - 48 : e === io.SEMICOLON ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END : (this._err(Eo.missingSemicolonAfterCharacterReference), this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END, this._stateNumericCharacterReferenceEnd(e))
+ }
+ _stateNumericCharacterReferenceEnd(e) {
+ if (this.charRefCode === io.NULL) this._err(Eo.nullCharacterReference), this.charRefCode = io.REPLACEMENT_CHARACTER;
+ else if (this.charRefCode > 1114111) this._err(Eo.characterReferenceOutsideUnicodeRange), this.charRefCode = io.REPLACEMENT_CHARACTER;
+ else if (uo(this.charRefCode)) this._err(Eo.surrogateCharacterReference), this.charRefCode = io.REPLACEMENT_CHARACTER;
+ else if (fo(this.charRefCode)) this._err(Eo.noncharacterCharacterReference);
+ else if (po(this.charRefCode) || this.charRefCode === io.CARRIAGE_RETURN) {
+ this._err(Eo.controlCharacterReference);
+ const e = qo.get(this.charRefCode);
+ void 0 !== e && (this.charRefCode = e)
+ }
+ this._flushCodePointConsumedAsCharacterReference(this.charRefCode), this._reconsumeInState(this.returnState, e)
+ }
+}
+const nc = new Set([Po.DD, Po.DT, Po.LI, Po.OPTGROUP, Po.OPTION, Po.P, Po.RB, Po.RP, Po.RT, Po.RTC]),
+ rc = new Set([...nc, Po.CAPTION, Po.COLGROUP, Po.TBODY, Po.TD, Po.TFOOT, Po.TH, Po.THEAD, Po.TR]),
+ ic = new Map([
+ [Po.APPLET, vo.HTML],
+ [Po.CAPTION, vo.HTML],
+ [Po.HTML, vo.HTML],
+ [Po.MARQUEE, vo.HTML],
+ [Po.OBJECT, vo.HTML],
+ [Po.TABLE, vo.HTML],
+ [Po.TD, vo.HTML],
+ [Po.TEMPLATE, vo.HTML],
+ [Po.TH, vo.HTML],
+ [Po.ANNOTATION_XML, vo.MATHML],
+ [Po.MI, vo.MATHML],
+ [Po.MN, vo.MATHML],
+ [Po.MO, vo.MATHML],
+ [Po.MS, vo.MATHML],
+ [Po.MTEXT, vo.MATHML],
+ [Po.DESC, vo.SVG],
+ [Po.FOREIGN_OBJECT, vo.SVG],
+ [Po.TITLE, vo.SVG]
+ ]),
+ sc = [Po.H1, Po.H2, Po.H3, Po.H4, Po.H5, Po.H6],
+ ac = [Po.TR, Po.TEMPLATE, Po.HTML],
+ oc = [Po.TBODY, Po.TFOOT, Po.THEAD, Po.TEMPLATE, Po.HTML],
+ cc = [Po.TABLE, Po.TEMPLATE, Po.HTML],
+ lc = [Po.TD, Po.TH];
+class hc {
+ constructor(e, t, n) {
+ this.treeAdapter = t, this.handler = n, this.items = [], this.tagIDs = [], this.stackTop = -1, this.tmplCount = 0, this.currentTagId = Po.UNKNOWN, this.current = e
+ }
+ get currentTmplContentOrNode() {
+ return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current
+ }
+ _indexOf(e) {
+ return this.items.lastIndexOf(e, this.stackTop)
+ }
+ _isInTemplate() {
+ return this.currentTagId === Po.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === vo.HTML
+ }
+ _updateCurrentElement() {
+ this.current = this.items[this.stackTop], this.currentTagId = this.tagIDs[this.stackTop]
+ }
+ push(e, t) {
+ this.stackTop++, this.items[this.stackTop] = e, this.current = e, this.tagIDs[this.stackTop] = t, this.currentTagId = t, this._isInTemplate() && this.tmplCount++, this.handler.onItemPush(e, t, !0)
+ }
+ pop() {
+ const e = this.current;
+ this.tmplCount > 0 && this._isInTemplate() && this.tmplCount--, this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(e, !0)
+ }
+ replace(e, t) {
+ const n = this._indexOf(e);
+ this.items[n] = t, n === this.stackTop && (this.current = t)
+ }
+ insertAfter(e, t, n) {
+ const r = this._indexOf(e) + 1;
+ this.items.splice(r, 0, t), this.tagIDs.splice(r, 0, n), this.stackTop++, r === this.stackTop && this._updateCurrentElement(), this.handler.onItemPush(this.current, this.currentTagId, r === this.stackTop)
+ }
+ popUntilTagNamePopped(e) {
+ let t = this.stackTop + 1;
+ do {
+ t = this.tagIDs.lastIndexOf(e, t - 1)
+ } while (t > 0 && this.treeAdapter.getNamespaceURI(this.items[t]) !== vo.HTML);
+ this.shortenToLength(t < 0 ? 0 : t)
+ }
+ shortenToLength(e) {
+ for (; this.stackTop >= e;) {
+ const t = this.current;
+ this.tmplCount > 0 && this._isInTemplate() && (this.tmplCount -= 1), this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(t, this.stackTop < e)
+ }
+ }
+ popUntilElementPopped(e) {
+ const t = this._indexOf(e);
+ this.shortenToLength(t < 0 ? 0 : t)
+ }
+ popUntilPopped(e, t) {
+ const n = this._indexOfTagNames(e, t);
+ this.shortenToLength(n < 0 ? 0 : n)
+ }
+ popUntilNumberedHeaderPopped() {
+ this.popUntilPopped(sc, vo.HTML)
+ }
+ popUntilTableCellPopped() {
+ this.popUntilPopped(lc, vo.HTML)
+ }
+ popAllUpToHtmlElement() {
+ this.tmplCount = 0, this.shortenToLength(1)
+ }
+ _indexOfTagNames(e, t) {
+ for (let n = this.stackTop; n >= 0; n--)
+ if (e.includes(this.tagIDs[n]) && this.treeAdapter.getNamespaceURI(this.items[n]) === t) return n;
+ return -1
+ }
+ clearBackTo(e, t) {
+ const n = this._indexOfTagNames(e, t);
+ this.shortenToLength(n + 1)
+ }
+ clearBackToTableContext() {
+ this.clearBackTo(cc, vo.HTML)
+ }
+ clearBackToTableBodyContext() {
+ this.clearBackTo(oc, vo.HTML)
+ }
+ clearBackToTableRowContext() {
+ this.clearBackTo(ac, vo.HTML)
+ }
+ remove(e) {
+ const t = this._indexOf(e);
+ t >= 0 && (t === this.stackTop ? this.pop() : (this.items.splice(t, 1), this.tagIDs.splice(t, 1), this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(e, !1)))
+ }
+ tryPeekProperlyNestedBodyElement() {
+ return this.stackTop >= 1 && this.tagIDs[1] === Po.BODY ? this.items[1] : null
+ }
+ contains(e) {
+ return this._indexOf(e) > -1
+ }
+ getCommonAncestor(e) {
+ const t = this._indexOf(e) - 1;
+ return t >= 0 ? this.items[t] : null
+ }
+ isRootHtmlElementCurrent() {
+ return 0 === this.stackTop && this.tagIDs[0] === Po.HTML
+ }
+ hasInScope(e) {
+ for (let t = this.stackTop; t >= 0; t--) {
+ const n = this.tagIDs[t],
+ r = this.treeAdapter.getNamespaceURI(this.items[t]);
+ if (n === e && r === vo.HTML) return !0;
+ if (ic.get(n) === r) return !1
+ }
+ return !0
+ }
+ hasNumberedHeaderInScope() {
+ for (let e = this.stackTop; e >= 0; e--) {
+ const t = this.tagIDs[e],
+ n = this.treeAdapter.getNamespaceURI(this.items[e]);
+ if (Go(t) && n === vo.HTML) return !0;
+ if (ic.get(t) === n) return !1
+ }
+ return !0
+ }
+ hasInListItemScope(e) {
+ for (let t = this.stackTop; t >= 0; t--) {
+ const n = this.tagIDs[t],
+ r = this.treeAdapter.getNamespaceURI(this.items[t]);
+ if (n === e && r === vo.HTML) return !0;
+ if ((n === Po.UL || n === Po.OL) && r === vo.HTML || ic.get(n) === r) return !1
+ }
+ return !0
+ }
+ hasInButtonScope(e) {
+ for (let t = this.stackTop; t >= 0; t--) {
+ const n = this.tagIDs[t],
+ r = this.treeAdapter.getNamespaceURI(this.items[t]);
+ if (n === e && r === vo.HTML) return !0;
+ if (n === Po.BUTTON && r === vo.HTML || ic.get(n) === r) return !1
+ }
+ return !0
+ }
+ hasInTableScope(e) {
+ for (let t = this.stackTop; t >= 0; t--) {
+ const n = this.tagIDs[t];
+ if (this.treeAdapter.getNamespaceURI(this.items[t]) === vo.HTML) {
+ if (n === e) return !0;
+ if (n === Po.TABLE || n === Po.TEMPLATE || n === Po.HTML) return !1
+ }
+ }
+ return !0
+ }
+ hasTableBodyContextInTableScope() {
+ for (let e = this.stackTop; e >= 0; e--) {
+ const t = this.tagIDs[e];
+ if (this.treeAdapter.getNamespaceURI(this.items[e]) === vo.HTML) {
+ if (t === Po.TBODY || t === Po.THEAD || t === Po.TFOOT) return !0;
+ if (t === Po.TABLE || t === Po.HTML) return !1
+ }
+ }
+ return !0
+ }
+ hasInSelectScope(e) {
+ for (let t = this.stackTop; t >= 0; t--) {
+ const n = this.tagIDs[t];
+ if (this.treeAdapter.getNamespaceURI(this.items[t]) === vo.HTML) {
+ if (n === e) return !0;
+ if (n !== Po.OPTION && n !== Po.OPTGROUP) return !1
+ }
+ }
+ return !0
+ }
+ generateImpliedEndTags() {
+ for (; nc.has(this.currentTagId);) this.pop()
+ }
+ generateImpliedEndTagsThoroughly() {
+ for (; rc.has(this.currentTagId);) this.pop()
+ }
+ generateImpliedEndTagsWithExclusion(e) {
+ for (; this.currentTagId !== e && rc.has(this.currentTagId);) this.pop()
+ }
+}
+var uc;
+! function(e) {
+ e[e.Marker = 0] = "Marker", e[e.Element = 1] = "Element"
+}(uc = uc || (uc = {}));
+const pc = {
+ type: uc.Marker
+};
+class fc {
+ constructor(e) {
+ this.treeAdapter = e, this.entries = [], this.bookmark = null
+ }
+ _getNoahArkConditionCandidates(e, t) {
+ const n = [],
+ r = t.length,
+ i = this.treeAdapter.getTagName(e),
+ s = this.treeAdapter.getNamespaceURI(e);
+ for (let e = 0; e < this.entries.length; e++) {
+ const t = this.entries[e];
+ if (t.type === uc.Marker) break;
+ const {
+ element: a
+ } = t;
+ if (this.treeAdapter.getTagName(a) === i && this.treeAdapter.getNamespaceURI(a) === s) {
+ const t = this.treeAdapter.getAttrList(a);
+ t.length === r && n.push({
+ idx: e,
+ attrs: t
+ })
+ }
+ }
+ return n
+ }
+ _ensureNoahArkCondition(e) {
+ if (this.entries.length < 3) return;
+ const t = this.treeAdapter.getAttrList(e),
+ n = this._getNoahArkConditionCandidates(e, t);
+ if (n.length < 3) return;
+ const r = new Map(t.map((e => [e.name, e.value])));
+ let i = 0;
+ for (let e = 0; e < n.length; e++) {
+ const t = n[e];
+ t.attrs.every((e => r.get(e.name) === e.value)) && (i += 1, i >= 3 && this.entries.splice(t.idx, 1))
+ }
+ }
+ insertMarker() {
+ this.entries.unshift(pc)
+ }
+ pushElement(e, t) {
+ this._ensureNoahArkCondition(e), this.entries.unshift({
+ type: uc.Element,
+ element: e,
+ token: t
+ })
+ }
+ insertElementAfterBookmark(e, t) {
+ const n = this.entries.indexOf(this.bookmark);
+ this.entries.splice(n, 0, {
+ type: uc.Element,
+ element: e,
+ token: t
+ })
+ }
+ removeEntry(e) {
+ const t = this.entries.indexOf(e);
+ t >= 0 && this.entries.splice(t, 1)
+ }
+ clearToLastMarker() {
+ const e = this.entries.indexOf(pc);
+ e >= 0 ? this.entries.splice(0, e + 1) : this.entries.length = 0
+ }
+ getElementEntryInScopeWithTagName(e) {
+ const t = this.entries.find((t => t.type === uc.Marker || this.treeAdapter.getTagName(t.element) === e));
+ return t && t.type === uc.Element ? t : null
+ }
+ getElementEntry(e) {
+ return this.entries.find((t => t.type === uc.Element && t.element === e))
+ }
+}
+
+function dc(e) {
+ return {
+ nodeName: "#text",
+ value: e,
+ parentNode: null
+ }
+}
+const Ec = {
+ createDocument: () => ({
+ nodeName: "#document",
+ mode: Ro.NO_QUIRKS,
+ childNodes: []
+ }),
+ createDocumentFragment: () => ({
+ nodeName: "#document-fragment",
+ childNodes: []
+ }),
+ createElement: (e, t, n) => ({
+ nodeName: e,
+ tagName: e,
+ attrs: n,
+ namespaceURI: t,
+ childNodes: [],
+ parentNode: null
+ }),
+ createCommentNode: e => ({
+ nodeName: "#comment",
+ data: e,
+ parentNode: null
+ }),
+ appendChild(e, t) {
+ e.childNodes.push(t), t.parentNode = e
+ },
+ insertBefore(e, t, n) {
+ const r = e.childNodes.indexOf(n);
+ e.childNodes.splice(r, 0, t), t.parentNode = e
+ },
+ setTemplateContent(e, t) {
+ e.content = t
+ },
+ getTemplateContent: e => e.content,
+ setDocumentType(e, t, n, r) {
+ const i = e.childNodes.find((e => "#documentType" === e.nodeName));
+ if (i) i.name = t, i.publicId = n, i.systemId = r;
+ else {
+ const i = {
+ nodeName: "#documentType",
+ name: t,
+ publicId: n,
+ systemId: r,
+ parentNode: null
+ };
+ Ec.appendChild(e, i)
+ }
+ },
+ setDocumentMode(e, t) {
+ e.mode = t
+ },
+ getDocumentMode: e => e.mode,
+ detachNode(e) {
+ if (e.parentNode) {
+ const t = e.parentNode.childNodes.indexOf(e);
+ e.parentNode.childNodes.splice(t, 1), e.parentNode = null
+ }
+ },
+ insertText(e, t) {
+ if (e.childNodes.length > 0) {
+ const n = e.childNodes[e.childNodes.length - 1];
+ if (Ec.isTextNode(n)) return void(n.value += t)
+ }
+ Ec.appendChild(e, dc(t))
+ },
+ insertTextBefore(e, t, n) {
+ const r = e.childNodes[e.childNodes.indexOf(n) - 1];
+ r && Ec.isTextNode(r) ? r.value += t : Ec.insertBefore(e, dc(t), n)
+ },
+ adoptAttributes(e, t) {
+ const n = new Set(e.attrs.map((e => e.name)));
+ for (let r = 0; r < t.length; r++) n.has(t[r].name) || e.attrs.push(t[r])
+ },
+ getFirstChild: e => e.childNodes[0],
+ getChildNodes: e => e.childNodes,
+ getParentNode: e => e.parentNode,
+ getAttrList: e => e.attrs,
+ getTagName: e => e.tagName,
+ getNamespaceURI: e => e.namespaceURI,
+ getTextNodeContent: e => e.value,
+ getCommentNodeContent: e => e.data,
+ getDocumentTypeNodeName: e => e.name,
+ getDocumentTypeNodePublicId: e => e.publicId,
+ getDocumentTypeNodeSystemId: e => e.systemId,
+ isTextNode: e => "#text" === e.nodeName,
+ isCommentNode: e => "#comment" === e.nodeName,
+ isDocumentTypeNode: e => "#documentType" === e.nodeName,
+ isElementNode: e => Object.prototype.hasOwnProperty.call(e, "tagName"),
+ setNodeSourceCodeLocation(e, t) {
+ e.sourceCodeLocation = t
+ },
+ getNodeSourceCodeLocation: e => e.sourceCodeLocation,
+ updateNodeSourceCodeLocation(e, t) {
+ e.sourceCodeLocation = {
+ ...e.sourceCodeLocation,
+ ...t
+ }
+ }
+ },
+ mc = ["+//silmaril//dtd html pro v0r11 19970101//", "-//as//dtd html 3.0 aswedit + extensions//", "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", "-//ietf//dtd html 2.0 level 1//", "-//ietf//dtd html 2.0 level 2//", "-//ietf//dtd html 2.0 strict level 1//", "-//ietf//dtd html 2.0 strict level 2//", "-//ietf//dtd html 2.0 strict//", "-//ietf//dtd html 2.0//", "-//ietf//dtd html 2.1e//", "-//ietf//dtd html 3.0//", "-//ietf//dtd html 3.2 final//", "-//ietf//dtd html 3.2//", "-//ietf//dtd html 3//", "-//ietf//dtd html level 0//", "-//ietf//dtd html level 1//", "-//ietf//dtd html level 2//", "-//ietf//dtd html level 3//", "-//ietf//dtd html strict level 0//", "-//ietf//dtd html strict level 1//", "-//ietf//dtd html strict level 2//", "-//ietf//dtd html strict level 3//", "-//ietf//dtd html strict//", "-//ietf//dtd html//", "-//metrius//dtd metrius presentational//", "-//microsoft//dtd internet explorer 2.0 html strict//", "-//microsoft//dtd internet explorer 2.0 html//", "-//microsoft//dtd internet explorer 2.0 tables//", "-//microsoft//dtd internet explorer 3.0 html strict//", "-//microsoft//dtd internet explorer 3.0 html//", "-//microsoft//dtd internet explorer 3.0 tables//", "-//netscape comm. corp.//dtd html//", "-//netscape comm. corp.//dtd strict html//", "-//o'reilly and associates//dtd html 2.0//", "-//o'reilly and associates//dtd html extended 1.0//", "-//o'reilly and associates//dtd html extended relaxed 1.0//", "-//sq//dtd html 2.0 hotmetal + extensions//", "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", "-//spyglass//dtd html 2.0 extended//", "-//sun microsystems corp.//dtd hotjava html//", "-//sun microsystems corp.//dtd hotjava strict html//", "-//w3c//dtd html 3 1995-03-24//", "-//w3c//dtd html 3.2 draft//", "-//w3c//dtd html 3.2 final//", "-//w3c//dtd html 3.2//", "-//w3c//dtd html 3.2s draft//", "-//w3c//dtd html 4.0 frameset//", "-//w3c//dtd html 4.0 transitional//", "-//w3c//dtd html experimental 19960712//", "-//w3c//dtd html experimental 970421//", "-//w3c//dtd w3 html//", "-//w3o//dtd w3 html 3.0//", "-//webtechs//dtd mozilla html 2.0//", "-//webtechs//dtd mozilla html//"],
+ Tc = [...mc, "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//"],
+ _c = new Set(["-//w3o//dtd w3 html strict 3.0//en//", "-/w3c/dtd html 4.0 transitional/en", "html"]),
+ Ac = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"],
+ gc = [...Ac, "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//"];
+
+function Nc(e, t) {
+ return t.some((t => e.startsWith(t)))
+}
+const Cc = "text/html",
+ Ic = "application/xhtml+xml",
+ Sc = new Map(["attributeName", "attributeType", "baseFrequency", "baseProfile", "calcMode", "clipPathUnits", "diffuseConstant", "edgeMode", "filterUnits", "glyphRef", "gradientTransform", "gradientUnits", "kernelMatrix", "kernelUnitLength", "keyPoints", "keySplines", "keyTimes", "lengthAdjust", "limitingConeAngle", "markerHeight", "markerUnits", "markerWidth", "maskContentUnits", "maskUnits", "numOctaves", "pathLength", "patternContentUnits", "patternTransform", "patternUnits", "pointsAtX", "pointsAtY", "pointsAtZ", "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "refX", "refY", "repeatCount", "repeatDur", "requiredExtensions", "requiredFeatures", "specularConstant", "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stitchTiles", "surfaceScale", "systemLanguage", "tableValues", "targetX", "targetY", "textLength", "viewBox", "viewTarget", "xChannelSelector", "yChannelSelector", "zoomAndPan"].map((e => [e.toLowerCase(), e]))),
+ bc = new Map([
+ ["xlink:actuate", {
+ prefix: "xlink",
+ name: "actuate",
+ namespace: vo.XLINK
+ }],
+ ["xlink:arcrole", {
+ prefix: "xlink",
+ name: "arcrole",
+ namespace: vo.XLINK
+ }],
+ ["xlink:href", {
+ prefix: "xlink",
+ name: "href",
+ namespace: vo.XLINK
+ }],
+ ["xlink:role", {
+ prefix: "xlink",
+ name: "role",
+ namespace: vo.XLINK
+ }],
+ ["xlink:show", {
+ prefix: "xlink",
+ name: "show",
+ namespace: vo.XLINK
+ }],
+ ["xlink:title", {
+ prefix: "xlink",
+ name: "title",
+ namespace: vo.XLINK
+ }],
+ ["xlink:type", {
+ prefix: "xlink",
+ name: "type",
+ namespace: vo.XLINK
+ }],
+ ["xml:base", {
+ prefix: "xml",
+ name: "base",
+ namespace: vo.XML
+ }],
+ ["xml:lang", {
+ prefix: "xml",
+ name: "lang",
+ namespace: vo.XML
+ }],
+ ["xml:space", {
+ prefix: "xml",
+ name: "space",
+ namespace: vo.XML
+ }],
+ ["xmlns", {
+ prefix: "",
+ name: "xmlns",
+ namespace: vo.XMLNS
+ }],
+ ["xmlns:xlink", {
+ prefix: "xmlns",
+ name: "xlink",
+ namespace: vo.XMLNS
+ }]
+ ]),
+ Oc = new Map(["altGlyph", "altGlyphDef", "altGlyphItem", "animateColor", "animateMotion", "animateTransform", "clipPath", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "foreignObject", "glyphRef", "linearGradient", "radialGradient", "textPath"].map((e => [e.toLowerCase(), e]))),
+ yc = new Set([Po.B, Po.BIG, Po.BLOCKQUOTE, Po.BODY, Po.BR, Po.CENTER, Po.CODE, Po.DD, Po.DIV, Po.DL, Po.DT, Po.EM, Po.EMBED, Po.H1, Po.H2, Po.H3, Po.H4, Po.H5, Po.H6, Po.HEAD, Po.HR, Po.I, Po.IMG, Po.LI, Po.LISTING, Po.MENU, Po.META, Po.NOBR, Po.OL, Po.P, Po.PRE, Po.RUBY, Po.S, Po.SMALL, Po.SPAN, Po.STRONG, Po.STRIKE, Po.SUB, Po.SUP, Po.TABLE, Po.TT, Po.U, Po.UL, Po.VAR]);
+
+function Lc(e) {
+ for (let t = 0; t < e.attrs.length; t++)
+ if ("definitionurl" === e.attrs[t].name) {
+ e.attrs[t].name = "definitionURL";
+ break
+ }
+}
+
+function kc(e) {
+ for (let t = 0; t < e.attrs.length; t++) {
+ const n = Sc.get(e.attrs[t].name);
+ null != n && (e.attrs[t].name = n)
+ }
+}
+
+function vc(e) {
+ for (let t = 0; t < e.attrs.length; t++) {
+ const n = bc.get(e.attrs[t].name);
+ n && (e.attrs[t].prefix = n.prefix, e.attrs[t].name = n.name, e.attrs[t].namespace = n.namespace)
+ }
+}
+
+function Dc(e, t, n, r) {
+ return (!r || r === vo.HTML) && function(e, t, n) {
+ if (t === vo.MATHML && e === Po.ANNOTATION_XML)
+ for (let e = 0; e < n.length; e++)
+ if (n[e].name === Do.ENCODING) {
+ const t = n[e].value.toLowerCase();
+ return t === Cc || t === Ic
+ } return t === vo.SVG && (e === Po.FOREIGN_OBJECT || e === Po.DESC || e === Po.TITLE)
+ }(e, t, n) || (!r || r === vo.MATHML) && function(e, t) {
+ return t === vo.MATHML && (e === Po.MI || e === Po.MO || e === Po.MN || e === Po.MS || e === Po.MTEXT)
+ }(e, t)
+}
+var Rc;
+! function(e) {
+ e[e.INITIAL = 0] = "INITIAL", e[e.BEFORE_HTML = 1] = "BEFORE_HTML", e[e.BEFORE_HEAD = 2] = "BEFORE_HEAD", e[e.IN_HEAD = 3] = "IN_HEAD", e[e.IN_HEAD_NO_SCRIPT = 4] = "IN_HEAD_NO_SCRIPT", e[e.AFTER_HEAD = 5] = "AFTER_HEAD", e[e.IN_BODY = 6] = "IN_BODY", e[e.TEXT = 7] = "TEXT", e[e.IN_TABLE = 8] = "IN_TABLE", e[e.IN_TABLE_TEXT = 9] = "IN_TABLE_TEXT", e[e.IN_CAPTION = 10] = "IN_CAPTION", e[e.IN_COLUMN_GROUP = 11] = "IN_COLUMN_GROUP", e[e.IN_TABLE_BODY = 12] = "IN_TABLE_BODY", e[e.IN_ROW = 13] = "IN_ROW", e[e.IN_CELL = 14] = "IN_CELL", e[e.IN_SELECT = 15] = "IN_SELECT", e[e.IN_SELECT_IN_TABLE = 16] = "IN_SELECT_IN_TABLE", e[e.IN_TEMPLATE = 17] = "IN_TEMPLATE", e[e.AFTER_BODY = 18] = "AFTER_BODY", e[e.IN_FRAMESET = 19] = "IN_FRAMESET", e[e.AFTER_FRAMESET = 20] = "AFTER_FRAMESET", e[e.AFTER_AFTER_BODY = 21] = "AFTER_AFTER_BODY", e[e.AFTER_AFTER_FRAMESET = 22] = "AFTER_AFTER_FRAMESET"
+}(Rc || (Rc = {}));
+const Mc = {
+ startLine: -1,
+ startCol: -1,
+ startOffset: -1,
+ endLine: -1,
+ endCol: -1,
+ endOffset: -1
+ },
+ Pc = new Set([Po.TABLE, Po.TBODY, Po.TFOOT, Po.THEAD, Po.TR]),
+ xc = {
+ scriptingEnabled: !0,
+ sourceCodeLocationInfo: !1,
+ treeAdapter: Ec,
+ onParseError: null
+ };
+class wc {
+ constructor(e, t, n = null, r = null) {
+ this.fragmentContext = n, this.scriptHandler = r, this.currentToken = null, this.stopped = !1, this.insertionMode = Rc.INITIAL, this.originalInsertionMode = Rc.INITIAL, this.headElement = null, this.formElement = null, this.currentNotInHTML = !1, this.tmplInsertionModeStack = [], this.pendingCharacterTokens = [], this.hasNonWhitespacePendingCharacterToken = !1, this.framesetOk = !0, this.skipNextNewLine = !1, this.fosterParentingEnabled = !1, this.options = {
+ ...xc,
+ ...e
+ }, this.treeAdapter = this.options.treeAdapter, this.onParseError = this.options.onParseError, this.onParseError && (this.options.sourceCodeLocationInfo = !0), this.document = null != t ? t : this.treeAdapter.createDocument(), this.tokenizer = new tc(this.options, this), this.activeFormattingElements = new fc(this.treeAdapter), this.fragmentContextID = n ? Fo(this.treeAdapter.getTagName(n)) : Po.UNKNOWN, this._setContextModes(null != n ? n : this.document, this.fragmentContextID), this.openElements = new hc(this.document, this.treeAdapter, this)
+ }
+ static parse(e, t) {
+ const n = new this(t);
+ return n.tokenizer.write(e, !0), n.document
+ }
+ static getFragmentParser(e, t) {
+ const n = {
+ ...xc,
+ ...t
+ };
+ null != e || (e = n.treeAdapter.createElement(Mo.TEMPLATE, vo.HTML, []));
+ const r = n.treeAdapter.createElement("documentmock", vo.HTML, []),
+ i = new this(n, r, e);
+ return i.fragmentContextID === Po.TEMPLATE && i.tmplInsertionModeStack.unshift(Rc.IN_TEMPLATE), i._initTokenizerForFragmentParsing(), i._insertFakeRootElement(), i._resetInsertionMode(), i._findFormInFragmentContext(), i
+ }
+ getFragment() {
+ const e = this.treeAdapter.getFirstChild(this.document),
+ t = this.treeAdapter.createDocumentFragment();
+ return this._adoptNodes(e, t), t
+ }
+ _err(e, t, n) {
+ var r;
+ if (!this.onParseError) return;
+ const i = null !== (r = e.location) && void 0 !== r ? r : Mc,
+ s = {
+ code: t,
+ startLine: i.startLine,
+ startCol: i.startCol,
+ startOffset: i.startOffset,
+ endLine: n ? i.startLine : i.endLine,
+ endCol: n ? i.startCol : i.endCol,
+ endOffset: n ? i.startOffset : i.endOffset
+ };
+ this.onParseError(s)
+ }
+ onItemPush(e, t, n) {
+ var r, i;
+ null === (i = (r = this.treeAdapter).onItemPush) || void 0 === i || i.call(r, e), n && this.openElements.stackTop > 0 && this._setContextModes(e, t)
+ }
+ onItemPop(e, t) {
+ var n, r;
+ if (this.options.sourceCodeLocationInfo && this._setEndLocation(e, this.currentToken), null === (r = (n = this.treeAdapter).onItemPop) || void 0 === r || r.call(n, e, this.openElements.current), t) {
+ let e, t;
+ 0 === this.openElements.stackTop && this.fragmentContext ? (e = this.fragmentContext, t = this.fragmentContextID) : ({
+ current: e,
+ currentTagId: t
+ } = this.openElements), this._setContextModes(e, t)
+ }
+ }
+ _setContextModes(e, t) {
+ const n = e === this.document || this.treeAdapter.getNamespaceURI(e) === vo.HTML;
+ this.currentNotInHTML = !n, this.tokenizer.inForeignNode = !n && !this._isIntegrationPoint(t, e)
+ }
+ _switchToTextParsing(e, t) {
+ this._insertElement(e, vo.HTML), this.tokenizer.state = t, this.originalInsertionMode = this.insertionMode, this.insertionMode = Rc.TEXT
+ }
+ switchToPlaintextParsing() {
+ this.insertionMode = Rc.TEXT, this.originalInsertionMode = Rc.IN_BODY, this.tokenizer.state = jo.PLAINTEXT
+ }
+ _getAdjustedCurrentElement() {
+ return 0 === this.openElements.stackTop && this.fragmentContext ? this.fragmentContext : this.openElements.current
+ }
+ _findFormInFragmentContext() {
+ let e = this.fragmentContext;
+ for (; e;) {
+ if (this.treeAdapter.getTagName(e) === Mo.FORM) {
+ this.formElement = e;
+ break
+ }
+ e = this.treeAdapter.getParentNode(e)
+ }
+ }
+ _initTokenizerForFragmentParsing() {
+ if (this.fragmentContext && this.treeAdapter.getNamespaceURI(this.fragmentContext) === vo.HTML) switch (this.fragmentContextID) {
+ case Po.TITLE:
+ case Po.TEXTAREA:
+ this.tokenizer.state = jo.RCDATA;
+ break;
+ case Po.STYLE:
+ case Po.XMP:
+ case Po.IFRAME:
+ case Po.NOEMBED:
+ case Po.NOFRAMES:
+ case Po.NOSCRIPT:
+ this.tokenizer.state = jo.RAWTEXT;
+ break;
+ case Po.SCRIPT:
+ this.tokenizer.state = jo.SCRIPT_DATA;
+ break;
+ case Po.PLAINTEXT:
+ this.tokenizer.state = jo.PLAINTEXT
+ }
+ }
+ _setDocumentType(e) {
+ const t = e.name || "",
+ n = e.publicId || "",
+ r = e.systemId || "";
+ if (this.treeAdapter.setDocumentType(this.document, t, n, r), e.location) {
+ const t = this.treeAdapter.getChildNodes(this.document).find((e => this.treeAdapter.isDocumentTypeNode(e)));
+ t && this.treeAdapter.setNodeSourceCodeLocation(t, e.location)
+ }
+ }
+ _attachElementToTree(e, t) {
+ if (this.options.sourceCodeLocationInfo) {
+ const n = t && {
+ ...t,
+ startTag: t
+ };
+ this.treeAdapter.setNodeSourceCodeLocation(e, n)
+ }
+ if (this._shouldFosterParentOnInsertion()) this._fosterParentElement(e);
+ else {
+ const t = this.openElements.currentTmplContentOrNode;
+ this.treeAdapter.appendChild(t, e)
+ }
+ }
+ _appendElement(e, t) {
+ const n = this.treeAdapter.createElement(e.tagName, t, e.attrs);
+ this._attachElementToTree(n, e.location)
+ }
+ _insertElement(e, t) {
+ const n = this.treeAdapter.createElement(e.tagName, t, e.attrs);
+ this._attachElementToTree(n, e.location), this.openElements.push(n, e.tagID)
+ }
+ _insertFakeElement(e, t) {
+ const n = this.treeAdapter.createElement(e, vo.HTML, []);
+ this._attachElementToTree(n, null), this.openElements.push(n, t)
+ }
+ _insertTemplate(e) {
+ const t = this.treeAdapter.createElement(e.tagName, vo.HTML, e.attrs),
+ n = this.treeAdapter.createDocumentFragment();
+ this.treeAdapter.setTemplateContent(t, n), this._attachElementToTree(t, e.location), this.openElements.push(t, e.tagID), this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(n, null)
+ }
+ _insertFakeRootElement() {
+ const e = this.treeAdapter.createElement(Mo.HTML, vo.HTML, []);
+ this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(e, null), this.treeAdapter.appendChild(this.openElements.current, e), this.openElements.push(e, Po.HTML)
+ }
+ _appendCommentNode(e, t) {
+ const n = this.treeAdapter.createCommentNode(e.data);
+ this.treeAdapter.appendChild(t, n), this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(n, e.location)
+ }
+ _insertCharacters(e) {
+ let t, n;
+ if (this._shouldFosterParentOnInsertion() ? (({
+ parent: t,
+ beforeElement: n
+ } = this._findFosterParentingLocation()), n ? this.treeAdapter.insertTextBefore(t, e.chars, n) : this.treeAdapter.insertText(t, e.chars)) : (t = this.openElements.currentTmplContentOrNode, this.treeAdapter.insertText(t, e.chars)), !e.location) return;
+ const r = this.treeAdapter.getChildNodes(t),
+ i = n ? r.lastIndexOf(n) : r.length,
+ s = r[i - 1];
+ if (this.treeAdapter.getNodeSourceCodeLocation(s)) {
+ const {
+ endLine: t,
+ endCol: n,
+ endOffset: r
+ } = e.location;
+ this.treeAdapter.updateNodeSourceCodeLocation(s, {
+ endLine: t,
+ endCol: n,
+ endOffset: r
+ })
+ } else this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(s, e.location)
+ }
+ _adoptNodes(e, t) {
+ for (let n = this.treeAdapter.getFirstChild(e); n; n = this.treeAdapter.getFirstChild(e)) this.treeAdapter.detachNode(n), this.treeAdapter.appendChild(t, n)
+ }
+ _setEndLocation(e, t) {
+ if (this.treeAdapter.getNodeSourceCodeLocation(e) && t.location) {
+ const n = t.location,
+ r = this.treeAdapter.getTagName(e),
+ i = t.type === To.END_TAG && r === t.tagName ? {
+ endTag: {
+ ...n
+ },
+ endLine: n.endLine,
+ endCol: n.endCol,
+ endOffset: n.endOffset
+ } : {
+ endLine: n.startLine,
+ endCol: n.startCol,
+ endOffset: n.startOffset
+ };
+ this.treeAdapter.updateNodeSourceCodeLocation(e, i)
+ }
+ }
+ shouldProcessStartTagTokenInForeignContent(e) {
+ if (!this.currentNotInHTML) return !1;
+ let t, n;
+ return 0 === this.openElements.stackTop && this.fragmentContext ? (t = this.fragmentContext, n = this.fragmentContextID) : ({
+ current: t,
+ currentTagId: n
+ } = this.openElements), (e.tagID !== Po.SVG || this.treeAdapter.getTagName(t) !== Mo.ANNOTATION_XML || this.treeAdapter.getNamespaceURI(t) !== vo.MATHML) && (this.tokenizer.inForeignNode || (e.tagID === Po.MGLYPH || e.tagID === Po.MALIGNMARK) && !this._isIntegrationPoint(n, t, vo.HTML))
+ }
+ _processToken(e) {
+ switch (e.type) {
+ case To.CHARACTER:
+ this.onCharacter(e);
+ break;
+ case To.NULL_CHARACTER:
+ this.onNullCharacter(e);
+ break;
+ case To.COMMENT:
+ this.onComment(e);
+ break;
+ case To.DOCTYPE:
+ this.onDoctype(e);
+ break;
+ case To.START_TAG:
+ this._processStartTag(e);
+ break;
+ case To.END_TAG:
+ this.onEndTag(e);
+ break;
+ case To.EOF:
+ this.onEof(e);
+ break;
+ case To.WHITESPACE_CHARACTER:
+ this.onWhitespaceCharacter(e)
+ }
+ }
+ _isIntegrationPoint(e, t, n) {
+ return Dc(e, this.treeAdapter.getNamespaceURI(t), this.treeAdapter.getAttrList(t), n)
+ }
+ _reconstructActiveFormattingElements() {
+ const e = this.activeFormattingElements.entries.length;
+ if (e) {
+ const t = this.activeFormattingElements.entries.findIndex((e => e.type === uc.Marker || this.openElements.contains(e.element)));
+ for (let n = t < 0 ? e - 1 : t - 1; n >= 0; n--) {
+ const e = this.activeFormattingElements.entries[n];
+ this._insertElement(e.token, this.treeAdapter.getNamespaceURI(e.element)), e.element = this.openElements.current
+ }
+ }
+ }
+ _closeTableCell() {
+ this.openElements.generateImpliedEndTags(), this.openElements.popUntilTableCellPopped(), this.activeFormattingElements.clearToLastMarker(), this.insertionMode = Rc.IN_ROW
+ }
+ _closePElement() {
+ this.openElements.generateImpliedEndTagsWithExclusion(Po.P), this.openElements.popUntilTagNamePopped(Po.P)
+ }
+ _resetInsertionMode() {
+ for (let e = this.openElements.stackTop; e >= 0; e--) switch (0 === e && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[e]) {
+ case Po.TR:
+ return void(this.insertionMode = Rc.IN_ROW);
+ case Po.TBODY:
+ case Po.THEAD:
+ case Po.TFOOT:
+ return void(this.insertionMode = Rc.IN_TABLE_BODY);
+ case Po.CAPTION:
+ return void(this.insertionMode = Rc.IN_CAPTION);
+ case Po.COLGROUP:
+ return void(this.insertionMode = Rc.IN_COLUMN_GROUP);
+ case Po.TABLE:
+ return void(this.insertionMode = Rc.IN_TABLE);
+ case Po.BODY:
+ return void(this.insertionMode = Rc.IN_BODY);
+ case Po.FRAMESET:
+ return void(this.insertionMode = Rc.IN_FRAMESET);
+ case Po.SELECT:
+ return void this._resetInsertionModeForSelect(e);
+ case Po.TEMPLATE:
+ return void(this.insertionMode = this.tmplInsertionModeStack[0]);
+ case Po.HTML:
+ return void(this.insertionMode = this.headElement ? Rc.AFTER_HEAD : Rc.BEFORE_HEAD);
+ case Po.TD:
+ case Po.TH:
+ if (e > 0) return void(this.insertionMode = Rc.IN_CELL);
+ break;
+ case Po.HEAD:
+ if (e > 0) return void(this.insertionMode = Rc.IN_HEAD)
+ }
+ this.insertionMode = Rc.IN_BODY
+ }
+ _resetInsertionModeForSelect(e) {
+ if (e > 0)
+ for (let t = e - 1; t > 0; t--) {
+ const e = this.openElements.tagIDs[t];
+ if (e === Po.TEMPLATE) break;
+ if (e === Po.TABLE) return void(this.insertionMode = Rc.IN_SELECT_IN_TABLE)
+ }
+ this.insertionMode = Rc.IN_SELECT
+ }
+ _isElementCausesFosterParenting(e) {
+ return Pc.has(e)
+ }
+ _shouldFosterParentOnInsertion() {
+ return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId)
+ }
+ _findFosterParentingLocation() {
+ for (let e = this.openElements.stackTop; e >= 0; e--) {
+ const t = this.openElements.items[e];
+ switch (this.openElements.tagIDs[e]) {
+ case Po.TEMPLATE:
+ if (this.treeAdapter.getNamespaceURI(t) === vo.HTML) return {
+ parent: this.treeAdapter.getTemplateContent(t),
+ beforeElement: null
+ };
+ break;
+ case Po.TABLE: {
+ const n = this.treeAdapter.getParentNode(t);
+ return n ? {
+ parent: n,
+ beforeElement: t
+ } : {
+ parent: this.openElements.items[e - 1],
+ beforeElement: null
+ }
+ }
+ }
+ }
+ return {
+ parent: this.openElements.items[0],
+ beforeElement: null
+ }
+ }
+ _fosterParentElement(e) {
+ const t = this._findFosterParentingLocation();
+ t.beforeElement ? this.treeAdapter.insertBefore(t.parent, e, t.beforeElement) : this.treeAdapter.appendChild(t.parent, e)
+ }
+ _isSpecialElement(e, t) {
+ const n = this.treeAdapter.getNamespaceURI(e);
+ return Ho[n].has(t)
+ }
+ onCharacter(e) {
+ if (this.skipNextNewLine = !1, this.tokenizer.inForeignNode) ! function(e, t) {
+ e._insertCharacters(t), e.framesetOk = !1
+ }(this, e);
+ else switch (this.insertionMode) {
+ case Rc.INITIAL:
+ Vc(this, e);
+ break;
+ case Rc.BEFORE_HTML:
+ Wc(this, e);
+ break;
+ case Rc.BEFORE_HEAD:
+ Qc(this, e);
+ break;
+ case Rc.IN_HEAD:
+ zc(this, e);
+ break;
+ case Rc.IN_HEAD_NO_SCRIPT:
+ Jc(this, e);
+ break;
+ case Rc.AFTER_HEAD:
+ Zc(this, e);
+ break;
+ case Rc.IN_BODY:
+ case Rc.IN_CAPTION:
+ case Rc.IN_CELL:
+ case Rc.IN_TEMPLATE:
+ nl(this, e);
+ break;
+ case Rc.TEXT:
+ case Rc.IN_SELECT:
+ case Rc.IN_SELECT_IN_TABLE:
+ this._insertCharacters(e);
+ break;
+ case Rc.IN_TABLE:
+ case Rc.IN_TABLE_BODY:
+ case Rc.IN_ROW:
+ ul(this, e);
+ break;
+ case Rc.IN_TABLE_TEXT:
+ ml(this, e);
+ break;
+ case Rc.IN_COLUMN_GROUP:
+ gl(this, e);
+ break;
+ case Rc.AFTER_BODY:
+ kl(this, e);
+ break;
+ case Rc.AFTER_AFTER_BODY:
+ vl(this, e)
+ }
+ }
+ onNullCharacter(e) {
+ if (this.skipNextNewLine = !1, this.tokenizer.inForeignNode) ! function(e, t) {
+ t.chars = "�", e._insertCharacters(t)
+ }(this, e);
+ else switch (this.insertionMode) {
+ case Rc.INITIAL:
+ Vc(this, e);
+ break;
+ case Rc.BEFORE_HTML:
+ Wc(this, e);
+ break;
+ case Rc.BEFORE_HEAD:
+ Qc(this, e);
+ break;
+ case Rc.IN_HEAD:
+ zc(this, e);
+ break;
+ case Rc.IN_HEAD_NO_SCRIPT:
+ Jc(this, e);
+ break;
+ case Rc.AFTER_HEAD:
+ Zc(this, e);
+ break;
+ case Rc.TEXT:
+ this._insertCharacters(e);
+ break;
+ case Rc.IN_TABLE:
+ case Rc.IN_TABLE_BODY:
+ case Rc.IN_ROW:
+ ul(this, e);
+ break;
+ case Rc.IN_COLUMN_GROUP:
+ gl(this, e);
+ break;
+ case Rc.AFTER_BODY:
+ kl(this, e);
+ break;
+ case Rc.AFTER_AFTER_BODY:
+ vl(this, e)
+ }
+ }
+ onComment(e) {
+ if (this.skipNextNewLine = !1, this.currentNotInHTML) Kc(this, e);
+ else switch (this.insertionMode) {
+ case Rc.INITIAL:
+ case Rc.BEFORE_HTML:
+ case Rc.BEFORE_HEAD:
+ case Rc.IN_HEAD:
+ case Rc.IN_HEAD_NO_SCRIPT:
+ case Rc.AFTER_HEAD:
+ case Rc.IN_BODY:
+ case Rc.IN_TABLE:
+ case Rc.IN_CAPTION:
+ case Rc.IN_COLUMN_GROUP:
+ case Rc.IN_TABLE_BODY:
+ case Rc.IN_ROW:
+ case Rc.IN_CELL:
+ case Rc.IN_SELECT:
+ case Rc.IN_SELECT_IN_TABLE:
+ case Rc.IN_TEMPLATE:
+ case Rc.IN_FRAMESET:
+ case Rc.AFTER_FRAMESET:
+ Kc(this, e);
+ break;
+ case Rc.IN_TABLE_TEXT:
+ Tl(this, e);
+ break;
+ case Rc.AFTER_BODY:
+ ! function(e, t) {
+ e._appendCommentNode(t, e.openElements.items[0])
+ }(this, e);
+ break;
+ case Rc.AFTER_AFTER_BODY:
+ case Rc.AFTER_AFTER_FRAMESET:
+ ! function(e, t) {
+ e._appendCommentNode(t, e.document)
+ }(this, e)
+ }
+ }
+ onDoctype(e) {
+ switch (this.skipNextNewLine = !1, this.insertionMode) {
+ case Rc.INITIAL:
+ ! function(e, t) {
+ e._setDocumentType(t);
+ const n = t.forceQuirks ? Ro.QUIRKS : function(e) {
+ if ("html" !== e.name) return Ro.QUIRKS;
+ const {
+ systemId: t
+ } = e;
+ if (t && "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" === t.toLowerCase()) return Ro.QUIRKS;
+ let {
+ publicId: n
+ } = e;
+ if (null !== n) {
+ if (n = n.toLowerCase(), _c.has(n)) return Ro.QUIRKS;
+ let e = null === t ? Tc : mc;
+ if (Nc(n, e)) return Ro.QUIRKS;
+ if (e = null === t ? Ac : gc, Nc(n, e)) return Ro.LIMITED_QUIRKS
+ }
+ return Ro.NO_QUIRKS
+ }(t);
+ (function(e) {
+ return "html" === e.name && null === e.publicId && (null === e.systemId || "about:legacy-compat" === e.systemId)
+ })(t) || e._err(t, Eo.nonConformingDoctype);
+ e.treeAdapter.setDocumentMode(e.document, n), e.insertionMode = Rc.BEFORE_HTML
+ }(this, e);
+ break;
+ case Rc.BEFORE_HEAD:
+ case Rc.IN_HEAD:
+ case Rc.IN_HEAD_NO_SCRIPT:
+ case Rc.AFTER_HEAD:
+ this._err(e, Eo.misplacedDoctype);
+ break;
+ case Rc.IN_TABLE_TEXT:
+ Tl(this, e)
+ }
+ }
+ onStartTag(e) {
+ this.skipNextNewLine = !1, this.currentToken = e, this._processStartTag(e), e.selfClosing && !e.ackSelfClosing && this._err(e, Eo.nonVoidHtmlElementStartTagWithTrailingSolidus)
+ }
+ _processStartTag(e) {
+ this.shouldProcessStartTagTokenInForeignContent(e) ? function(e, t) {
+ if (function(e) {
+ const t = e.tagID;
+ return t === Po.FONT && e.attrs.some((({
+ name: e
+ }) => e === Do.COLOR || e === Do.SIZE || e === Do.FACE)) || yc.has(t)
+ }(t)) Dl(e), e._startTagOutsideForeignContent(t);
+ else {
+ const n = e._getAdjustedCurrentElement(),
+ r = e.treeAdapter.getNamespaceURI(n);
+ r === vo.MATHML ? Lc(t) : r === vo.SVG && (! function(e) {
+ const t = Oc.get(e.tagName);
+ null != t && (e.tagName = t, e.tagID = Fo(e.tagName))
+ }(t), kc(t)), vc(t), t.selfClosing ? e._appendElement(t, r) : e._insertElement(t, r), t.ackSelfClosing = !0
+ }
+ }(this, e) : this._startTagOutsideForeignContent(e)
+ }
+ _startTagOutsideForeignContent(e) {
+ switch (this.insertionMode) {
+ case Rc.INITIAL:
+ Vc(this, e);
+ break;
+ case Rc.BEFORE_HTML:
+ ! function(e, t) {
+ t.tagID === Po.HTML ? (e._insertElement(t, vo.HTML), e.insertionMode = Rc.BEFORE_HEAD) : Wc(e, t)
+ }(this, e);
+ break;
+ case Rc.BEFORE_HEAD:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.HEAD:
+ e._insertElement(t, vo.HTML), e.headElement = e.openElements.current, e.insertionMode = Rc.IN_HEAD;
+ break;
+ default:
+ Qc(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.IN_HEAD:
+ Xc(this, e);
+ break;
+ case Rc.IN_HEAD_NO_SCRIPT:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.BASEFONT:
+ case Po.BGSOUND:
+ case Po.HEAD:
+ case Po.LINK:
+ case Po.META:
+ case Po.NOFRAMES:
+ case Po.STYLE:
+ Xc(e, t);
+ break;
+ case Po.NOSCRIPT:
+ e._err(t, Eo.nestedNoscriptInHead);
+ break;
+ default:
+ Jc(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.AFTER_HEAD:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.BODY:
+ e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = Rc.IN_BODY;
+ break;
+ case Po.FRAMESET:
+ e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_FRAMESET;
+ break;
+ case Po.BASE:
+ case Po.BASEFONT:
+ case Po.BGSOUND:
+ case Po.LINK:
+ case Po.META:
+ case Po.NOFRAMES:
+ case Po.SCRIPT:
+ case Po.STYLE:
+ case Po.TEMPLATE:
+ case Po.TITLE:
+ e._err(t, Eo.abandonedHeadElementChild), e.openElements.push(e.headElement, Po.HEAD), Xc(e, t), e.openElements.remove(e.headElement);
+ break;
+ case Po.HEAD:
+ e._err(t, Eo.misplacedStartTagForHeadElement);
+ break;
+ default:
+ Zc(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.IN_BODY:
+ ol(this, e);
+ break;
+ case Rc.IN_TABLE:
+ pl(this, e);
+ break;
+ case Rc.IN_TABLE_TEXT:
+ Tl(this, e);
+ break;
+ case Rc.IN_CAPTION:
+ ! function(e, t) {
+ const n = t.tagID;
+ _l.has(n) ? e.openElements.hasInTableScope(Po.CAPTION) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.CAPTION), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_TABLE, pl(e, t)) : ol(e, t)
+ }(this, e);
+ break;
+ case Rc.IN_COLUMN_GROUP:
+ Al(this, e);
+ break;
+ case Rc.IN_TABLE_BODY:
+ Nl(this, e);
+ break;
+ case Rc.IN_ROW:
+ Il(this, e);
+ break;
+ case Rc.IN_CELL:
+ ! function(e, t) {
+ const n = t.tagID;
+ _l.has(n) ? (e.openElements.hasInTableScope(Po.TD) || e.openElements.hasInTableScope(Po.TH)) && (e._closeTableCell(), Il(e, t)) : ol(e, t)
+ }(this, e);
+ break;
+ case Rc.IN_SELECT:
+ bl(this, e);
+ break;
+ case Rc.IN_SELECT_IN_TABLE:
+ ! function(e, t) {
+ const n = t.tagID;
+ n === Po.CAPTION || n === Po.TABLE || n === Po.TBODY || n === Po.TFOOT || n === Po.THEAD || n === Po.TR || n === Po.TD || n === Po.TH ? (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), e._processStartTag(t)) : bl(e, t)
+ }(this, e);
+ break;
+ case Rc.IN_TEMPLATE:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.BASE:
+ case Po.BASEFONT:
+ case Po.BGSOUND:
+ case Po.LINK:
+ case Po.META:
+ case Po.NOFRAMES:
+ case Po.SCRIPT:
+ case Po.STYLE:
+ case Po.TEMPLATE:
+ case Po.TITLE:
+ Xc(e, t);
+ break;
+ case Po.CAPTION:
+ case Po.COLGROUP:
+ case Po.TBODY:
+ case Po.TFOOT:
+ case Po.THEAD:
+ e.tmplInsertionModeStack[0] = Rc.IN_TABLE, e.insertionMode = Rc.IN_TABLE, pl(e, t);
+ break;
+ case Po.COL:
+ e.tmplInsertionModeStack[0] = Rc.IN_COLUMN_GROUP, e.insertionMode = Rc.IN_COLUMN_GROUP, Al(e, t);
+ break;
+ case Po.TR:
+ e.tmplInsertionModeStack[0] = Rc.IN_TABLE_BODY, e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t);
+ break;
+ case Po.TD:
+ case Po.TH:
+ e.tmplInsertionModeStack[0] = Rc.IN_ROW, e.insertionMode = Rc.IN_ROW, Il(e, t);
+ break;
+ default:
+ e.tmplInsertionModeStack[0] = Rc.IN_BODY, e.insertionMode = Rc.IN_BODY, ol(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.AFTER_BODY:
+ ! function(e, t) {
+ t.tagID === Po.HTML ? ol(e, t) : kl(e, t)
+ }(this, e);
+ break;
+ case Rc.IN_FRAMESET:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.FRAMESET:
+ e._insertElement(t, vo.HTML);
+ break;
+ case Po.FRAME:
+ e._appendElement(t, vo.HTML), t.ackSelfClosing = !0;
+ break;
+ case Po.NOFRAMES:
+ Xc(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.AFTER_FRAMESET:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.NOFRAMES:
+ Xc(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.AFTER_AFTER_BODY:
+ ! function(e, t) {
+ t.tagID === Po.HTML ? ol(e, t) : vl(e, t)
+ }(this, e);
+ break;
+ case Rc.AFTER_AFTER_FRAMESET:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.NOFRAMES:
+ Xc(e, t)
+ }
+ }(this, e)
+ }
+ }
+ onEndTag(e) {
+ this.skipNextNewLine = !1, this.currentToken = e, this.currentNotInHTML ? function(e, t) {
+ if (t.tagID === Po.P || t.tagID === Po.BR) return Dl(e), void e._endTagOutsideForeignContent(t);
+ for (let n = e.openElements.stackTop; n > 0; n--) {
+ const r = e.openElements.items[n];
+ if (e.treeAdapter.getNamespaceURI(r) === vo.HTML) {
+ e._endTagOutsideForeignContent(t);
+ break
+ }
+ const i = e.treeAdapter.getTagName(r);
+ if (i.toLowerCase() === t.tagName) {
+ t.tagName = i, e.openElements.shortenToLength(n);
+ break
+ }
+ }
+ }(this, e) : this._endTagOutsideForeignContent(e)
+ }
+ _endTagOutsideForeignContent(e) {
+ switch (this.insertionMode) {
+ case Rc.INITIAL:
+ Vc(this, e);
+ break;
+ case Rc.BEFORE_HTML:
+ ! function(e, t) {
+ const n = t.tagID;
+ n !== Po.HTML && n !== Po.HEAD && n !== Po.BODY && n !== Po.BR || Wc(e, t)
+ }(this, e);
+ break;
+ case Rc.BEFORE_HEAD:
+ ! function(e, t) {
+ const n = t.tagID;
+ n === Po.HEAD || n === Po.BODY || n === Po.HTML || n === Po.BR ? Qc(e, t) : e._err(t, Eo.endTagWithoutMatchingOpenElement)
+ }(this, e);
+ break;
+ case Rc.IN_HEAD:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.HEAD:
+ e.openElements.pop(), e.insertionMode = Rc.AFTER_HEAD;
+ break;
+ case Po.BODY:
+ case Po.BR:
+ case Po.HTML:
+ zc(e, t);
+ break;
+ case Po.TEMPLATE:
+ $c(e, t);
+ break;
+ default:
+ e._err(t, Eo.endTagWithoutMatchingOpenElement)
+ }
+ }(this, e);
+ break;
+ case Rc.IN_HEAD_NO_SCRIPT:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.NOSCRIPT:
+ e.openElements.pop(), e.insertionMode = Rc.IN_HEAD;
+ break;
+ case Po.BR:
+ Jc(e, t);
+ break;
+ default:
+ e._err(t, Eo.endTagWithoutMatchingOpenElement)
+ }
+ }(this, e);
+ break;
+ case Rc.AFTER_HEAD:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.BODY:
+ case Po.HTML:
+ case Po.BR:
+ Zc(e, t);
+ break;
+ case Po.TEMPLATE:
+ $c(e, t);
+ break;
+ default:
+ e._err(t, Eo.endTagWithoutMatchingOpenElement)
+ }
+ }(this, e);
+ break;
+ case Rc.IN_BODY:
+ ll(this, e);
+ break;
+ case Rc.TEXT:
+ ! function(e, t) {
+ var n;
+ t.tagID === Po.SCRIPT && (null === (n = e.scriptHandler) || void 0 === n || n.call(e, e.openElements.current));
+ e.openElements.pop(), e.insertionMode = e.originalInsertionMode
+ }(this, e);
+ break;
+ case Rc.IN_TABLE:
+ fl(this, e);
+ break;
+ case Rc.IN_TABLE_TEXT:
+ Tl(this, e);
+ break;
+ case Rc.IN_CAPTION:
+ ! function(e, t) {
+ const n = t.tagID;
+ switch (n) {
+ case Po.CAPTION:
+ case Po.TABLE:
+ e.openElements.hasInTableScope(Po.CAPTION) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.CAPTION), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_TABLE, n === Po.TABLE && fl(e, t));
+ break;
+ case Po.BODY:
+ case Po.COL:
+ case Po.COLGROUP:
+ case Po.HTML:
+ case Po.TBODY:
+ case Po.TD:
+ case Po.TFOOT:
+ case Po.TH:
+ case Po.THEAD:
+ case Po.TR:
+ break;
+ default:
+ ll(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.IN_COLUMN_GROUP:
+ ! function(e, t) {
+ switch (t.tagID) {
+ case Po.COLGROUP:
+ e.openElements.currentTagId === Po.COLGROUP && (e.openElements.pop(), e.insertionMode = Rc.IN_TABLE);
+ break;
+ case Po.TEMPLATE:
+ $c(e, t);
+ break;
+ case Po.COL:
+ break;
+ default:
+ gl(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.IN_TABLE_BODY:
+ Cl(this, e);
+ break;
+ case Rc.IN_ROW:
+ Sl(this, e);
+ break;
+ case Rc.IN_CELL:
+ ! function(e, t) {
+ const n = t.tagID;
+ switch (n) {
+ case Po.TD:
+ case Po.TH:
+ e.openElements.hasInTableScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_ROW);
+ break;
+ case Po.TABLE:
+ case Po.TBODY:
+ case Po.TFOOT:
+ case Po.THEAD:
+ case Po.TR:
+ e.openElements.hasInTableScope(n) && (e._closeTableCell(), Sl(e, t));
+ break;
+ case Po.BODY:
+ case Po.CAPTION:
+ case Po.COL:
+ case Po.COLGROUP:
+ case Po.HTML:
+ break;
+ default:
+ ll(e, t)
+ }
+ }(this, e);
+ break;
+ case Rc.IN_SELECT:
+ Ol(this, e);
+ break;
+ case Rc.IN_SELECT_IN_TABLE:
+ ! function(e, t) {
+ const n = t.tagID;
+ n === Po.CAPTION || n === Po.TABLE || n === Po.TBODY || n === Po.TFOOT || n === Po.THEAD || n === Po.TR || n === Po.TD || n === Po.TH ? e.openElements.hasInTableScope(n) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), e.onEndTag(t)) : Ol(e, t)
+ }(this, e);
+ break;
+ case Rc.IN_TEMPLATE:
+ ! function(e, t) {
+ t.tagID === Po.TEMPLATE && $c(e, t)
+ }(this, e);
+ break;
+ case Rc.AFTER_BODY:
+ Ll(this, e);
+ break;
+ case Rc.IN_FRAMESET:
+ ! function(e, t) {
+ t.tagID !== Po.FRAMESET || e.openElements.isRootHtmlElementCurrent() || (e.openElements.pop(), e.fragmentContext || e.openElements.currentTagId === Po.FRAMESET || (e.insertionMode = Rc.AFTER_FRAMESET))
+ }(this, e);
+ break;
+ case Rc.AFTER_FRAMESET:
+ ! function(e, t) {
+ t.tagID === Po.HTML && (e.insertionMode = Rc.AFTER_AFTER_FRAMESET)
+ }(this, e);
+ break;
+ case Rc.AFTER_AFTER_BODY:
+ vl(this, e)
+ }
+ }
+ onEof(e) {
+ switch (this.insertionMode) {
+ case Rc.INITIAL:
+ Vc(this, e);
+ break;
+ case Rc.BEFORE_HTML:
+ Wc(this, e);
+ break;
+ case Rc.BEFORE_HEAD:
+ Qc(this, e);
+ break;
+ case Rc.IN_HEAD:
+ zc(this, e);
+ break;
+ case Rc.IN_HEAD_NO_SCRIPT:
+ Jc(this, e);
+ break;
+ case Rc.AFTER_HEAD:
+ Zc(this, e);
+ break;
+ case Rc.IN_BODY:
+ case Rc.IN_TABLE:
+ case Rc.IN_CAPTION:
+ case Rc.IN_COLUMN_GROUP:
+ case Rc.IN_TABLE_BODY:
+ case Rc.IN_ROW:
+ case Rc.IN_CELL:
+ case Rc.IN_SELECT:
+ case Rc.IN_SELECT_IN_TABLE:
+ hl(this, e);
+ break;
+ case Rc.TEXT:
+ ! function(e, t) {
+ e._err(t, Eo.eofInElementThatCanContainOnlyText), e.openElements.pop(), e.insertionMode = e.originalInsertionMode, e.onEof(t)
+ }(this, e);
+ break;
+ case Rc.IN_TABLE_TEXT:
+ Tl(this, e);
+ break;
+ case Rc.IN_TEMPLATE:
+ yl(this, e);
+ break;
+ case Rc.AFTER_BODY:
+ case Rc.IN_FRAMESET:
+ case Rc.AFTER_FRAMESET:
+ case Rc.AFTER_AFTER_BODY:
+ case Rc.AFTER_AFTER_FRAMESET:
+ jc(this, e)
+ }
+ }
+ onWhitespaceCharacter(e) {
+ if (this.skipNextNewLine && (this.skipNextNewLine = !1, e.chars.charCodeAt(0) === io.LINE_FEED)) {
+ if (1 === e.chars.length) return;
+ e.chars = e.chars.substr(1)
+ }
+ if (this.tokenizer.inForeignNode) this._insertCharacters(e);
+ else switch (this.insertionMode) {
+ case Rc.IN_HEAD:
+ case Rc.IN_HEAD_NO_SCRIPT:
+ case Rc.AFTER_HEAD:
+ case Rc.TEXT:
+ case Rc.IN_COLUMN_GROUP:
+ case Rc.IN_SELECT:
+ case Rc.IN_SELECT_IN_TABLE:
+ case Rc.IN_FRAMESET:
+ case Rc.AFTER_FRAMESET:
+ this._insertCharacters(e);
+ break;
+ case Rc.IN_BODY:
+ case Rc.IN_CAPTION:
+ case Rc.IN_CELL:
+ case Rc.IN_TEMPLATE:
+ case Rc.AFTER_BODY:
+ case Rc.AFTER_AFTER_BODY:
+ case Rc.AFTER_AFTER_FRAMESET:
+ tl(this, e);
+ break;
+ case Rc.IN_TABLE:
+ case Rc.IN_TABLE_BODY:
+ case Rc.IN_ROW:
+ ul(this, e);
+ break;
+ case Rc.IN_TABLE_TEXT:
+ El(this, e)
+ }
+ }
+}
+
+function Bc(e, t) {
+ let n = e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);
+ return n ? e.openElements.contains(n.element) ? e.openElements.hasInScope(t.tagID) || (n = null) : (e.activeFormattingElements.removeEntry(n), n = null) : cl(e, t), n
+}
+
+function Fc(e, t) {
+ let n = null,
+ r = e.openElements.stackTop;
+ for (; r >= 0; r--) {
+ const i = e.openElements.items[r];
+ if (i === t.element) break;
+ e._isSpecialElement(i, e.openElements.tagIDs[r]) && (n = i)
+ }
+ return n || (e.openElements.shortenToLength(r < 0 ? 0 : r), e.activeFormattingElements.removeEntry(t)), n
+}
+
+function Uc(e, t, n) {
+ let r = t,
+ i = e.openElements.getCommonAncestor(t);
+ for (let s = 0, a = i; a !== n; s++, a = i) {
+ i = e.openElements.getCommonAncestor(a);
+ const n = e.activeFormattingElements.getElementEntry(a),
+ o = n && s >= 3;
+ !n || o ? (o && e.activeFormattingElements.removeEntry(n), e.openElements.remove(a)) : (a = Hc(e, n), r === t && (e.activeFormattingElements.bookmark = n), e.treeAdapter.detachNode(r), e.treeAdapter.appendChild(a, r), r = a)
+ }
+ return r
+}
+
+function Hc(e, t) {
+ const n = e.treeAdapter.getNamespaceURI(t.element),
+ r = e.treeAdapter.createElement(t.token.tagName, n, t.token.attrs);
+ return e.openElements.replace(t.element, r), t.element = r, r
+}
+
+function Gc(e, t, n) {
+ const r = Fo(e.treeAdapter.getTagName(t));
+ if (e._isElementCausesFosterParenting(r)) e._fosterParentElement(n);
+ else {
+ const i = e.treeAdapter.getNamespaceURI(t);
+ r === Po.TEMPLATE && i === vo.HTML && (t = e.treeAdapter.getTemplateContent(t)), e.treeAdapter.appendChild(t, n)
+ }
+}
+
+function Yc(e, t, n) {
+ const r = e.treeAdapter.getNamespaceURI(n.element),
+ {
+ token: i
+ } = n,
+ s = e.treeAdapter.createElement(i.tagName, r, i.attrs);
+ e._adoptNodes(t, s), e.treeAdapter.appendChild(t, s), e.activeFormattingElements.insertElementAfterBookmark(s, i), e.activeFormattingElements.removeEntry(n), e.openElements.remove(n.element), e.openElements.insertAfter(t, s, i.tagID)
+}
+
+function qc(e, t) {
+ for (let n = 0; n < 8; n++) {
+ const n = Bc(e, t);
+ if (!n) break;
+ const r = Fc(e, n);
+ if (!r) break;
+ e.activeFormattingElements.bookmark = n;
+ const i = Uc(e, r, n.element),
+ s = e.openElements.getCommonAncestor(n.element);
+ e.treeAdapter.detachNode(i), s && Gc(e, s, i), Yc(e, r, n)
+ }
+}
+
+function Kc(e, t) {
+ e._appendCommentNode(t, e.openElements.currentTmplContentOrNode)
+}
+
+function jc(e, t) {
+ if (e.stopped = !0, t.location) {
+ const n = e.fragmentContext ? 0 : 2;
+ for (let r = e.openElements.stackTop; r >= n; r--) e._setEndLocation(e.openElements.items[r], t);
+ if (!e.fragmentContext && e.openElements.stackTop >= 0) {
+ const n = e.openElements.items[0],
+ r = e.treeAdapter.getNodeSourceCodeLocation(n);
+ if (r && !r.endTag && (e._setEndLocation(n, t), e.openElements.stackTop >= 1)) {
+ const n = e.openElements.items[1],
+ r = e.treeAdapter.getNodeSourceCodeLocation(n);
+ r && !r.endTag && e._setEndLocation(n, t)
+ }
+ }
+ }
+}
+
+function Vc(e, t) {
+ e._err(t, Eo.missingDoctype, !0), e.treeAdapter.setDocumentMode(e.document, Ro.QUIRKS), e.insertionMode = Rc.BEFORE_HTML, e._processToken(t)
+}
+
+function Wc(e, t) {
+ e._insertFakeRootElement(), e.insertionMode = Rc.BEFORE_HEAD, e._processToken(t)
+}
+
+function Qc(e, t) {
+ e._insertFakeElement(Mo.HEAD, Po.HEAD), e.headElement = e.openElements.current, e.insertionMode = Rc.IN_HEAD, e._processToken(t)
+}
+
+function Xc(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.BASE:
+ case Po.BASEFONT:
+ case Po.BGSOUND:
+ case Po.LINK:
+ case Po.META:
+ e._appendElement(t, vo.HTML), t.ackSelfClosing = !0;
+ break;
+ case Po.TITLE:
+ e._switchToTextParsing(t, jo.RCDATA);
+ break;
+ case Po.NOSCRIPT:
+ e.options.scriptingEnabled ? e._switchToTextParsing(t, jo.RAWTEXT) : (e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_HEAD_NO_SCRIPT);
+ break;
+ case Po.NOFRAMES:
+ case Po.STYLE:
+ e._switchToTextParsing(t, jo.RAWTEXT);
+ break;
+ case Po.SCRIPT:
+ e._switchToTextParsing(t, jo.SCRIPT_DATA);
+ break;
+ case Po.TEMPLATE:
+ e._insertTemplate(t), e.activeFormattingElements.insertMarker(), e.framesetOk = !1, e.insertionMode = Rc.IN_TEMPLATE, e.tmplInsertionModeStack.unshift(Rc.IN_TEMPLATE);
+ break;
+ case Po.HEAD:
+ e._err(t, Eo.misplacedStartTagForHeadElement);
+ break;
+ default:
+ zc(e, t)
+ }
+}
+
+function $c(e, t) {
+ e.openElements.tmplCount > 0 ? (e.openElements.generateImpliedEndTagsThoroughly(), e.openElements.currentTagId !== Po.TEMPLATE && e._err(t, Eo.closingOfElementWithOpenChildElements), e.openElements.popUntilTagNamePopped(Po.TEMPLATE), e.activeFormattingElements.clearToLastMarker(), e.tmplInsertionModeStack.shift(), e._resetInsertionMode()) : e._err(t, Eo.endTagWithoutMatchingOpenElement)
+}
+
+function zc(e, t) {
+ e.openElements.pop(), e.insertionMode = Rc.AFTER_HEAD, e._processToken(t)
+}
+
+function Jc(e, t) {
+ const n = t.type === To.EOF ? Eo.openElementsLeftAfterEof : Eo.disallowedContentInNoscriptInHead;
+ e._err(t, n), e.openElements.pop(), e.insertionMode = Rc.IN_HEAD, e._processToken(t)
+}
+
+function Zc(e, t) {
+ e._insertFakeElement(Mo.BODY, Po.BODY), e.insertionMode = Rc.IN_BODY, el(e, t)
+}
+
+function el(e, t) {
+ switch (t.type) {
+ case To.CHARACTER:
+ nl(e, t);
+ break;
+ case To.WHITESPACE_CHARACTER:
+ tl(e, t);
+ break;
+ case To.COMMENT:
+ Kc(e, t);
+ break;
+ case To.START_TAG:
+ ol(e, t);
+ break;
+ case To.END_TAG:
+ ll(e, t);
+ break;
+ case To.EOF:
+ hl(e, t)
+ }
+}
+
+function tl(e, t) {
+ e._reconstructActiveFormattingElements(), e._insertCharacters(t)
+}
+
+function nl(e, t) {
+ e._reconstructActiveFormattingElements(), e._insertCharacters(t), e.framesetOk = !1
+}
+
+function rl(e, t) {
+ e._reconstructActiveFormattingElements(), e._appendElement(t, vo.HTML), e.framesetOk = !1, t.ackSelfClosing = !0
+}
+
+function il(e) {
+ const t = _o(e, Do.TYPE);
+ return null != t && "hidden" === t.toLowerCase()
+}
+
+function sl(e, t) {
+ e._switchToTextParsing(t, jo.RAWTEXT)
+}
+
+function al(e, t) {
+ e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML)
+}
+
+function ol(e, t) {
+ switch (t.tagID) {
+ case Po.I:
+ case Po.S:
+ case Po.B:
+ case Po.U:
+ case Po.EM:
+ case Po.TT:
+ case Po.BIG:
+ case Po.CODE:
+ case Po.FONT:
+ case Po.SMALL:
+ case Po.STRIKE:
+ case Po.STRONG:
+ ! function(e, t) {
+ e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t)
+ }(e, t);
+ break;
+ case Po.A:
+ ! function(e, t) {
+ const n = e.activeFormattingElements.getElementEntryInScopeWithTagName(Mo.A);
+ n && (qc(e, t), e.openElements.remove(n.element), e.activeFormattingElements.removeEntry(n)), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t)
+ }(e, t);
+ break;
+ case Po.H1:
+ case Po.H2:
+ case Po.H3:
+ case Po.H4:
+ case Po.H5:
+ case Po.H6:
+ ! function(e, t) {
+ e.openElements.hasInButtonScope(Po.P) && e._closePElement(), Go(e.openElements.currentTagId) && e.openElements.pop(), e._insertElement(t, vo.HTML)
+ }(e, t);
+ break;
+ case Po.P:
+ case Po.DL:
+ case Po.OL:
+ case Po.UL:
+ case Po.DIV:
+ case Po.DIR:
+ case Po.NAV:
+ case Po.MAIN:
+ case Po.MENU:
+ case Po.ASIDE:
+ case Po.CENTER:
+ case Po.FIGURE:
+ case Po.FOOTER:
+ case Po.HEADER:
+ case Po.HGROUP:
+ case Po.DIALOG:
+ case Po.DETAILS:
+ case Po.ADDRESS:
+ case Po.ARTICLE:
+ case Po.SECTION:
+ case Po.SUMMARY:
+ case Po.FIELDSET:
+ case Po.BLOCKQUOTE:
+ case Po.FIGCAPTION:
+ ! function(e, t) {
+ e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML)
+ }(e, t);
+ break;
+ case Po.LI:
+ case Po.DD:
+ case Po.DT:
+ ! function(e, t) {
+ e.framesetOk = !1;
+ const n = t.tagID;
+ for (let t = e.openElements.stackTop; t >= 0; t--) {
+ const r = e.openElements.tagIDs[t];
+ if (n === Po.LI && r === Po.LI || (n === Po.DD || n === Po.DT) && (r === Po.DD || r === Po.DT)) {
+ e.openElements.generateImpliedEndTagsWithExclusion(r), e.openElements.popUntilTagNamePopped(r);
+ break
+ }
+ if (r !== Po.ADDRESS && r !== Po.DIV && r !== Po.P && e._isSpecialElement(e.openElements.items[t], r)) break
+ }
+ e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML)
+ }(e, t);
+ break;
+ case Po.BR:
+ case Po.IMG:
+ case Po.WBR:
+ case Po.AREA:
+ case Po.EMBED:
+ case Po.KEYGEN:
+ rl(e, t);
+ break;
+ case Po.HR:
+ ! function(e, t) {
+ e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._appendElement(t, vo.HTML), e.framesetOk = !1, t.ackSelfClosing = !0
+ }(e, t);
+ break;
+ case Po.RB:
+ case Po.RTC:
+ ! function(e, t) {
+ e.openElements.hasInScope(Po.RUBY) && e.openElements.generateImpliedEndTags(), e._insertElement(t, vo.HTML)
+ }(e, t);
+ break;
+ case Po.RT:
+ case Po.RP:
+ ! function(e, t) {
+ e.openElements.hasInScope(Po.RUBY) && e.openElements.generateImpliedEndTagsWithExclusion(Po.RTC), e._insertElement(t, vo.HTML)
+ }(e, t);
+ break;
+ case Po.PRE:
+ case Po.LISTING:
+ ! function(e, t) {
+ e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.skipNextNewLine = !0, e.framesetOk = !1
+ }(e, t);
+ break;
+ case Po.XMP:
+ ! function(e, t) {
+ e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._reconstructActiveFormattingElements(), e.framesetOk = !1, e._switchToTextParsing(t, jo.RAWTEXT)
+ }(e, t);
+ break;
+ case Po.SVG:
+ ! function(e, t) {
+ e._reconstructActiveFormattingElements(), kc(t), vc(t), t.selfClosing ? e._appendElement(t, vo.SVG) : e._insertElement(t, vo.SVG), t.ackSelfClosing = !0
+ }(e, t);
+ break;
+ case Po.HTML:
+ ! function(e, t) {
+ 0 === e.openElements.tmplCount && e.treeAdapter.adoptAttributes(e.openElements.items[0], t.attrs)
+ }(e, t);
+ break;
+ case Po.BASE:
+ case Po.LINK:
+ case Po.META:
+ case Po.STYLE:
+ case Po.TITLE:
+ case Po.SCRIPT:
+ case Po.BGSOUND:
+ case Po.BASEFONT:
+ case Po.TEMPLATE:
+ Xc(e, t);
+ break;
+ case Po.BODY:
+ ! function(e, t) {
+ const n = e.openElements.tryPeekProperlyNestedBodyElement();
+ n && 0 === e.openElements.tmplCount && (e.framesetOk = !1, e.treeAdapter.adoptAttributes(n, t.attrs))
+ }(e, t);
+ break;
+ case Po.FORM:
+ ! function(e, t) {
+ const n = e.openElements.tmplCount > 0;
+ e.formElement && !n || (e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), n || (e.formElement = e.openElements.current))
+ }(e, t);
+ break;
+ case Po.NOBR:
+ ! function(e, t) {
+ e._reconstructActiveFormattingElements(), e.openElements.hasInScope(Po.NOBR) && (qc(e, t), e._reconstructActiveFormattingElements()), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t)
+ }(e, t);
+ break;
+ case Po.MATH:
+ ! function(e, t) {
+ e._reconstructActiveFormattingElements(), Lc(t), vc(t), t.selfClosing ? e._appendElement(t, vo.MATHML) : e._insertElement(t, vo.MATHML), t.ackSelfClosing = !0
+ }(e, t);
+ break;
+ case Po.TABLE:
+ ! function(e, t) {
+ e.treeAdapter.getDocumentMode(e.document) !== Ro.QUIRKS && e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = Rc.IN_TABLE
+ }(e, t);
+ break;
+ case Po.INPUT:
+ ! function(e, t) {
+ e._reconstructActiveFormattingElements(), e._appendElement(t, vo.HTML), il(t) || (e.framesetOk = !1), t.ackSelfClosing = !0
+ }(e, t);
+ break;
+ case Po.PARAM:
+ case Po.TRACK:
+ case Po.SOURCE:
+ ! function(e, t) {
+ e._appendElement(t, vo.HTML), t.ackSelfClosing = !0
+ }(e, t);
+ break;
+ case Po.IMAGE:
+ ! function(e, t) {
+ t.tagName = Mo.IMG, t.tagID = Po.IMG, rl(e, t)
+ }(e, t);
+ break;
+ case Po.BUTTON:
+ ! function(e, t) {
+ e.openElements.hasInScope(Po.BUTTON) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.BUTTON)), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.framesetOk = !1
+ }(e, t);
+ break;
+ case Po.APPLET:
+ case Po.OBJECT:
+ case Po.MARQUEE:
+ ! function(e, t) {
+ e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.insertMarker(), e.framesetOk = !1
+ }(e, t);
+ break;
+ case Po.IFRAME:
+ ! function(e, t) {
+ e.framesetOk = !1, e._switchToTextParsing(t, jo.RAWTEXT)
+ }(e, t);
+ break;
+ case Po.SELECT:
+ ! function(e, t) {
+ e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = e.insertionMode === Rc.IN_TABLE || e.insertionMode === Rc.IN_CAPTION || e.insertionMode === Rc.IN_TABLE_BODY || e.insertionMode === Rc.IN_ROW || e.insertionMode === Rc.IN_CELL ? Rc.IN_SELECT_IN_TABLE : Rc.IN_SELECT
+ }(e, t);
+ break;
+ case Po.OPTION:
+ case Po.OPTGROUP:
+ ! function(e, t) {
+ e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML)
+ }(e, t);
+ break;
+ case Po.NOEMBED:
+ sl(e, t);
+ break;
+ case Po.FRAMESET:
+ ! function(e, t) {
+ const n = e.openElements.tryPeekProperlyNestedBodyElement();
+ e.framesetOk && n && (e.treeAdapter.detachNode(n), e.openElements.popAllUpToHtmlElement(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_FRAMESET)
+ }(e, t);
+ break;
+ case Po.TEXTAREA:
+ ! function(e, t) {
+ e._insertElement(t, vo.HTML), e.skipNextNewLine = !0, e.tokenizer.state = jo.RCDATA, e.originalInsertionMode = e.insertionMode, e.framesetOk = !1, e.insertionMode = Rc.TEXT
+ }(e, t);
+ break;
+ case Po.NOSCRIPT:
+ e.options.scriptingEnabled ? sl(e, t) : al(e, t);
+ break;
+ case Po.PLAINTEXT:
+ ! function(e, t) {
+ e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.tokenizer.state = jo.PLAINTEXT
+ }(e, t);
+ break;
+ case Po.COL:
+ case Po.TH:
+ case Po.TD:
+ case Po.TR:
+ case Po.HEAD:
+ case Po.FRAME:
+ case Po.TBODY:
+ case Po.TFOOT:
+ case Po.THEAD:
+ case Po.CAPTION:
+ case Po.COLGROUP:
+ break;
+ default:
+ al(e, t)
+ }
+}
+
+function cl(e, t) {
+ const n = t.tagName,
+ r = t.tagID;
+ for (let t = e.openElements.stackTop; t > 0; t--) {
+ const i = e.openElements.items[t],
+ s = e.openElements.tagIDs[t];
+ if (r === s && (r !== Po.UNKNOWN || e.treeAdapter.getTagName(i) === n)) {
+ e.openElements.generateImpliedEndTagsWithExclusion(r), e.openElements.stackTop >= t && e.openElements.shortenToLength(t);
+ break
+ }
+ if (e._isSpecialElement(i, s)) break
+ }
+}
+
+function ll(e, t) {
+ switch (t.tagID) {
+ case Po.A:
+ case Po.B:
+ case Po.I:
+ case Po.S:
+ case Po.U:
+ case Po.EM:
+ case Po.TT:
+ case Po.BIG:
+ case Po.CODE:
+ case Po.FONT:
+ case Po.NOBR:
+ case Po.SMALL:
+ case Po.STRIKE:
+ case Po.STRONG:
+ qc(e, t);
+ break;
+ case Po.P:
+ ! function(e) {
+ e.openElements.hasInButtonScope(Po.P) || e._insertFakeElement(Mo.P, Po.P), e._closePElement()
+ }(e);
+ break;
+ case Po.DL:
+ case Po.UL:
+ case Po.OL:
+ case Po.DIR:
+ case Po.DIV:
+ case Po.NAV:
+ case Po.PRE:
+ case Po.MAIN:
+ case Po.MENU:
+ case Po.ASIDE:
+ case Po.BUTTON:
+ case Po.CENTER:
+ case Po.FIGURE:
+ case Po.FOOTER:
+ case Po.HEADER:
+ case Po.HGROUP:
+ case Po.DIALOG:
+ case Po.ADDRESS:
+ case Po.ARTICLE:
+ case Po.DETAILS:
+ case Po.SECTION:
+ case Po.SUMMARY:
+ case Po.LISTING:
+ case Po.FIELDSET:
+ case Po.BLOCKQUOTE:
+ case Po.FIGCAPTION:
+ ! function(e, t) {
+ const n = t.tagID;
+ e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n))
+ }(e, t);
+ break;
+ case Po.LI:
+ ! function(e) {
+ e.openElements.hasInListItemScope(Po.LI) && (e.openElements.generateImpliedEndTagsWithExclusion(Po.LI), e.openElements.popUntilTagNamePopped(Po.LI))
+ }(e);
+ break;
+ case Po.DD:
+ case Po.DT:
+ ! function(e, t) {
+ const n = t.tagID;
+ e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTagsWithExclusion(n), e.openElements.popUntilTagNamePopped(n))
+ }(e, t);
+ break;
+ case Po.H1:
+ case Po.H2:
+ case Po.H3:
+ case Po.H4:
+ case Po.H5:
+ case Po.H6:
+ ! function(e) {
+ e.openElements.hasNumberedHeaderInScope() && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilNumberedHeaderPopped())
+ }(e);
+ break;
+ case Po.BR:
+ ! function(e) {
+ e._reconstructActiveFormattingElements(), e._insertFakeElement(Mo.BR, Po.BR), e.openElements.pop(), e.framesetOk = !1
+ }(e);
+ break;
+ case Po.BODY:
+ ! function(e, t) {
+ if (e.openElements.hasInScope(Po.BODY) && (e.insertionMode = Rc.AFTER_BODY, e.options.sourceCodeLocationInfo)) {
+ const n = e.openElements.tryPeekProperlyNestedBodyElement();
+ n && e._setEndLocation(n, t)
+ }
+ }(e, t);
+ break;
+ case Po.HTML:
+ ! function(e, t) {
+ e.openElements.hasInScope(Po.BODY) && (e.insertionMode = Rc.AFTER_BODY, Ll(e, t))
+ }(e, t);
+ break;
+ case Po.FORM:
+ ! function(e) {
+ const t = e.openElements.tmplCount > 0,
+ {
+ formElement: n
+ } = e;
+ t || (e.formElement = null), (n || t) && e.openElements.hasInScope(Po.FORM) && (e.openElements.generateImpliedEndTags(), t ? e.openElements.popUntilTagNamePopped(Po.FORM) : n && e.openElements.remove(n))
+ }(e);
+ break;
+ case Po.APPLET:
+ case Po.OBJECT:
+ case Po.MARQUEE:
+ ! function(e, t) {
+ const n = t.tagID;
+ e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n), e.activeFormattingElements.clearToLastMarker())
+ }(e, t);
+ break;
+ case Po.TEMPLATE:
+ $c(e, t);
+ break;
+ default:
+ cl(e, t)
+ }
+}
+
+function hl(e, t) {
+ e.tmplInsertionModeStack.length > 0 ? yl(e, t) : jc(e, t)
+}
+
+function ul(e, t) {
+ if (Pc.has(e.openElements.currentTagId)) switch (e.pendingCharacterTokens.length = 0, e.hasNonWhitespacePendingCharacterToken = !1, e.originalInsertionMode = e.insertionMode, e.insertionMode = Rc.IN_TABLE_TEXT, t.type) {
+ case To.CHARACTER:
+ ml(e, t);
+ break;
+ case To.WHITESPACE_CHARACTER:
+ El(e, t)
+ } else dl(e, t)
+}
+
+function pl(e, t) {
+ switch (t.tagID) {
+ case Po.TD:
+ case Po.TH:
+ case Po.TR:
+ ! function(e, t) {
+ e.openElements.clearBackToTableContext(), e._insertFakeElement(Mo.TBODY, Po.TBODY), e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t)
+ }(e, t);
+ break;
+ case Po.STYLE:
+ case Po.SCRIPT:
+ case Po.TEMPLATE:
+ Xc(e, t);
+ break;
+ case Po.COL:
+ ! function(e, t) {
+ e.openElements.clearBackToTableContext(), e._insertFakeElement(Mo.COLGROUP, Po.COLGROUP), e.insertionMode = Rc.IN_COLUMN_GROUP, Al(e, t)
+ }(e, t);
+ break;
+ case Po.FORM:
+ ! function(e, t) {
+ e.formElement || 0 !== e.openElements.tmplCount || (e._insertElement(t, vo.HTML), e.formElement = e.openElements.current, e.openElements.pop())
+ }(e, t);
+ break;
+ case Po.TABLE:
+ ! function(e, t) {
+ e.openElements.hasInTableScope(Po.TABLE) && (e.openElements.popUntilTagNamePopped(Po.TABLE), e._resetInsertionMode(), e._processStartTag(t))
+ }(e, t);
+ break;
+ case Po.TBODY:
+ case Po.TFOOT:
+ case Po.THEAD:
+ ! function(e, t) {
+ e.openElements.clearBackToTableContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_TABLE_BODY
+ }(e, t);
+ break;
+ case Po.INPUT:
+ ! function(e, t) {
+ il(t) ? e._appendElement(t, vo.HTML) : dl(e, t), t.ackSelfClosing = !0
+ }(e, t);
+ break;
+ case Po.CAPTION:
+ ! function(e, t) {
+ e.openElements.clearBackToTableContext(), e.activeFormattingElements.insertMarker(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_CAPTION
+ }(e, t);
+ break;
+ case Po.COLGROUP:
+ ! function(e, t) {
+ e.openElements.clearBackToTableContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_COLUMN_GROUP
+ }(e, t);
+ break;
+ default:
+ dl(e, t)
+ }
+}
+
+function fl(e, t) {
+ switch (t.tagID) {
+ case Po.TABLE:
+ e.openElements.hasInTableScope(Po.TABLE) && (e.openElements.popUntilTagNamePopped(Po.TABLE), e._resetInsertionMode());
+ break;
+ case Po.TEMPLATE:
+ $c(e, t);
+ break;
+ case Po.BODY:
+ case Po.CAPTION:
+ case Po.COL:
+ case Po.COLGROUP:
+ case Po.HTML:
+ case Po.TBODY:
+ case Po.TD:
+ case Po.TFOOT:
+ case Po.TH:
+ case Po.THEAD:
+ case Po.TR:
+ break;
+ default:
+ dl(e, t)
+ }
+}
+
+function dl(e, t) {
+ const n = e.fosterParentingEnabled;
+ e.fosterParentingEnabled = !0, el(e, t), e.fosterParentingEnabled = n
+}
+
+function El(e, t) {
+ e.pendingCharacterTokens.push(t)
+}
+
+function ml(e, t) {
+ e.pendingCharacterTokens.push(t), e.hasNonWhitespacePendingCharacterToken = !0
+}
+
+function Tl(e, t) {
+ let n = 0;
+ if (e.hasNonWhitespacePendingCharacterToken)
+ for (; n < e.pendingCharacterTokens.length; n++) dl(e, e.pendingCharacterTokens[n]);
+ else
+ for (; n < e.pendingCharacterTokens.length; n++) e._insertCharacters(e.pendingCharacterTokens[n]);
+ e.insertionMode = e.originalInsertionMode, e._processToken(t)
+}
+const _l = new Set([Po.CAPTION, Po.COL, Po.COLGROUP, Po.TBODY, Po.TD, Po.TFOOT, Po.TH, Po.THEAD, Po.TR]);
+
+function Al(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.COL:
+ e._appendElement(t, vo.HTML), t.ackSelfClosing = !0;
+ break;
+ case Po.TEMPLATE:
+ Xc(e, t);
+ break;
+ default:
+ gl(e, t)
+ }
+}
+
+function gl(e, t) {
+ e.openElements.currentTagId === Po.COLGROUP && (e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, e._processToken(t))
+}
+
+function Nl(e, t) {
+ switch (t.tagID) {
+ case Po.TR:
+ e.openElements.clearBackToTableBodyContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_ROW;
+ break;
+ case Po.TH:
+ case Po.TD:
+ e.openElements.clearBackToTableBodyContext(), e._insertFakeElement(Mo.TR, Po.TR), e.insertionMode = Rc.IN_ROW, Il(e, t);
+ break;
+ case Po.CAPTION:
+ case Po.COL:
+ case Po.COLGROUP:
+ case Po.TBODY:
+ case Po.TFOOT:
+ case Po.THEAD:
+ e.openElements.hasTableBodyContextInTableScope() && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, pl(e, t));
+ break;
+ default:
+ pl(e, t)
+ }
+}
+
+function Cl(e, t) {
+ const n = t.tagID;
+ switch (t.tagID) {
+ case Po.TBODY:
+ case Po.TFOOT:
+ case Po.THEAD:
+ e.openElements.hasInTableScope(n) && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE);
+ break;
+ case Po.TABLE:
+ e.openElements.hasTableBodyContextInTableScope() && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, fl(e, t));
+ break;
+ case Po.BODY:
+ case Po.CAPTION:
+ case Po.COL:
+ case Po.COLGROUP:
+ case Po.HTML:
+ case Po.TD:
+ case Po.TH:
+ case Po.TR:
+ break;
+ default:
+ fl(e, t)
+ }
+}
+
+function Il(e, t) {
+ switch (t.tagID) {
+ case Po.TH:
+ case Po.TD:
+ e.openElements.clearBackToTableRowContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_CELL, e.activeFormattingElements.insertMarker();
+ break;
+ case Po.CAPTION:
+ case Po.COL:
+ case Po.COLGROUP:
+ case Po.TBODY:
+ case Po.TFOOT:
+ case Po.THEAD:
+ case Po.TR:
+ e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t));
+ break;
+ default:
+ pl(e, t)
+ }
+}
+
+function Sl(e, t) {
+ switch (t.tagID) {
+ case Po.TR:
+ e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY);
+ break;
+ case Po.TABLE:
+ e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Cl(e, t));
+ break;
+ case Po.TBODY:
+ case Po.TFOOT:
+ case Po.THEAD:
+ (e.openElements.hasInTableScope(t.tagID) || e.openElements.hasInTableScope(Po.TR)) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Cl(e, t));
+ break;
+ case Po.BODY:
+ case Po.CAPTION:
+ case Po.COL:
+ case Po.COLGROUP:
+ case Po.HTML:
+ case Po.TD:
+ case Po.TH:
+ break;
+ default:
+ fl(e, t)
+ }
+}
+
+function bl(e, t) {
+ switch (t.tagID) {
+ case Po.HTML:
+ ol(e, t);
+ break;
+ case Po.OPTION:
+ e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e._insertElement(t, vo.HTML);
+ break;
+ case Po.OPTGROUP:
+ e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e.openElements.currentTagId === Po.OPTGROUP && e.openElements.pop(), e._insertElement(t, vo.HTML);
+ break;
+ case Po.INPUT:
+ case Po.KEYGEN:
+ case Po.TEXTAREA:
+ case Po.SELECT:
+ e.openElements.hasInSelectScope(Po.SELECT) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), t.tagID !== Po.SELECT && e._processStartTag(t));
+ break;
+ case Po.SCRIPT:
+ case Po.TEMPLATE:
+ Xc(e, t)
+ }
+}
+
+function Ol(e, t) {
+ switch (t.tagID) {
+ case Po.OPTGROUP:
+ e.openElements.stackTop > 0 && e.openElements.currentTagId === Po.OPTION && e.openElements.tagIDs[e.openElements.stackTop - 1] === Po.OPTGROUP && e.openElements.pop(), e.openElements.currentTagId === Po.OPTGROUP && e.openElements.pop();
+ break;
+ case Po.OPTION:
+ e.openElements.currentTagId === Po.OPTION && e.openElements.pop();
+ break;
+ case Po.SELECT:
+ e.openElements.hasInSelectScope(Po.SELECT) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode());
+ break;
+ case Po.TEMPLATE:
+ $c(e, t)
+ }
+}
+
+function yl(e, t) {
+ e.openElements.tmplCount > 0 ? (e.openElements.popUntilTagNamePopped(Po.TEMPLATE), e.activeFormattingElements.clearToLastMarker(), e.tmplInsertionModeStack.shift(), e._resetInsertionMode(), e.onEof(t)) : jc(e, t)
+}
+
+function Ll(e, t) {
+ var n;
+ if (t.tagID === Po.HTML) {
+ if (e.fragmentContext || (e.insertionMode = Rc.AFTER_AFTER_BODY), e.options.sourceCodeLocationInfo && e.openElements.tagIDs[0] === Po.HTML) {
+ e._setEndLocation(e.openElements.items[0], t);
+ const r = e.openElements.items[1];
+ r && !(null === (n = e.treeAdapter.getNodeSourceCodeLocation(r)) || void 0 === n ? void 0 : n.endTag) && e._setEndLocation(r, t)
+ }
+ } else kl(e, t)
+}
+
+function kl(e, t) {
+ e.insertionMode = Rc.IN_BODY, el(e, t)
+}
+
+function vl(e, t) {
+ e.insertionMode = Rc.IN_BODY, el(e, t)
+}
+
+function Dl(e) {
+ for (; e.treeAdapter.getNamespaceURI(e.openElements.current) !== vo.HTML && !e._isIntegrationPoint(e.openElements.currentTagId, e.openElements.current);) e.openElements.pop()
+}
+var Rl = Ke((function(e, t) {
+ Object.defineProperty(t, "__esModule", {
+ value: !0
+ }), t.escapeText = t.escapeAttribute = t.escapeUTF8 = t.escape = t.encodeXML = t.getCodePoint = t.xmlReplacer = void 0, t.xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
+ var n = new Map([
+ [34, """],
+ [38, "&"],
+ [39, "'"],
+ [60, "<"],
+ [62, ">"]
+ ]);
+
+ function r(e) {
+ for (var r, i = "", s = 0; null !== (r = t.xmlReplacer.exec(e));) {
+ var a = r.index,
+ o = e.charCodeAt(a),
+ c = n.get(o);
+ void 0 !== c ? (i += e.substring(s, a) + c, s = a + 1) : (i += "".concat(e.substring(s, a), "").concat((0, t.getCodePoint)(e, a).toString(16), ";"), s = t.xmlReplacer.lastIndex += Number(55296 == (64512 & o)))
+ }
+ return i + e.substr(s)
+ }
+
+ function i(e, t) {
+ return function(n) {
+ for (var r, i = 0, s = ""; r = e.exec(n);) i !== r.index && (s += n.substring(i, r.index)), s += t.get(r[0].charCodeAt(0)), i = r.index + 1;
+ return s + n.substring(i)
+ }
+ }
+ t.getCodePoint = null != String.prototype.codePointAt ? function(e, t) {
+ return e.codePointAt(t)
+ } : function(e, t) {
+ return 55296 == (64512 & e.charCodeAt(t)) ? 1024 * (e.charCodeAt(t) - 55296) + e.charCodeAt(t + 1) - 56320 + 65536 : e.charCodeAt(t)
+ }, t.encodeXML = r, t.escape = r, t.escapeUTF8 = i(/[&<>'"]/g, n), t.escapeAttribute = i(/["&\u00A0]/g, new Map([
+ [34, """],
+ [38, "&"],
+ [160, " "]
+ ])), t.escapeText = i(/[&<>\u00A0]/g, new Map([
+ [38, "&"],
+ [60, "<"],
+ [62, ">"],
+ [160, " "]
+ ]))
+}));
+qe(Rl);
+var Ml = Rl.escapeText,
+ Pl = Rl.escapeAttribute;
+Rl.escapeUTF8, Rl.escape, Rl.encodeXML, Rl.getCodePoint, Rl.xmlReplacer;
+const xl = new Set([Mo.AREA, Mo.BASE, Mo.BASEFONT, Mo.BGSOUND, Mo.BR, Mo.COL, Mo.EMBED, Mo.FRAME, Mo.HR, Mo.IMG, Mo.INPUT, Mo.KEYGEN, Mo.LINK, Mo.META, Mo.PARAM, Mo.SOURCE, Mo.TRACK, Mo.WBR]);
+const wl = {
+ treeAdapter: Ec,
+ scriptingEnabled: !0
+};
+
+function Bl(e, t) {
+ return Fl(e, {
+ ...wl,
+ ...t
+ })
+}
+
+function Fl(e, t) {
+ return t.treeAdapter.isElementNode(e) ? function(e, t) {
+ const n = t.treeAdapter.getTagName(e);
+ return `<${n}${function(e,{treeAdapter:t}){let n="";for(const r of t.getAttrList(e)){if(n+=" ",r.namespace)switch(r.namespace){case vo.XML:n+=`
+ xml: $ {
+ r.name
+ }
+ `;break;case vo.XMLNS:"xmlns"!==r.name&&(n+="xmlns:"),n+=r.name;break;case vo.XLINK:n+=`
+ xlink: $ {
+ r.name
+ }
+ `;break;default:n+=`
+ $ {
+ r.prefix
+ }: $ {
+ r.name
+ }
+ `}else n+=r.name;n+=` = "${Pl(r.value)}"
+ `}return n}(e,t)}>${function(e,t){return t.treeAdapter.isElementNode(e)&&t.treeAdapter.getNamespaceURI(e)===vo.HTML&&xl.has(t.treeAdapter.getTagName(e))}(e,t)?"":`
+ $ {
+ function(e, t) {
+ let n = "";
+ const r = t.treeAdapter.isElementNode(e) && t.treeAdapter.getTagName(e) === Mo.TEMPLATE && t.treeAdapter.getNamespaceURI(e) === vo.HTML ? t.treeAdapter.getTemplateContent(e) : e,
+ i = t.treeAdapter.getChildNodes(r);
+ if (i)
+ for (const e of i) n += Fl(e, t);
+ return n
+ }(e, t)
+ } < /${n}>`}`}(e,t):t.treeAdapter.isTextNode(e)?function(e,t){const{treeAdapter:n}=t,r=n.getTextNodeContent(e),i=n.getParentNode(e),s=i&&n.isElementNode(i)&&n.getTagName(i);return s&&n.getNamespaceURI(i)===vo.HTML&&(a=s,o=t.scriptingEnabled,Yo.has(a)||o&&a===Mo.NOSCRIPT)?r:Ml(r);var a,o}(e,t):t.treeAdapter.isCommentNode(e)?function(e,{treeAdapter:t}){return`\x3c!--${t.getCommentNodeContent(e)}--\x3e`}(e,t):t.treeAdapter.isDocumentTypeNode(e)?function(e,{treeAdapter:t}){return``}(e,t):""}function Ul(e){return new m(e)}function Hl(e){const t=e.includes('"')?"'":'"';return t+e+t}const Gl={isCommentNode:O,isElementNode:I,isTextNode:b,createDocument(){const e=new N([]);return e["x-mode"]=Ro.NO_QUIRKS,e},createDocumentFragment:()=>new N([]),createElement(e,t,n){const r=Object.create(null),i=Object.create(null),s=Object.create(null);for(let e=0;enew T(e),appendChild(e,t){const n=e.children[e.children.length-1];n&&(n.next=t,t.prev=n),e.children.push(t),t.parent=e},insertBefore(e,t,n){const r=e.children.indexOf(n),{prev:i}=n;i&&(i.next=t,t.prev=i),n.prev=t,t.next=n,e.children.splice(r,0,t),t.parent=e},setTemplateContent(e,t){Gl.appendChild(e,t)},getTemplateContent:e=>e.children[0],setDocumentType(e,t,n,r){const i=function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=` PUBLIC ${Hl(t)}`:n&&(r+=" SYSTEM"),n&&(r+=` ${Hl(n)}`),r}(t,n,r);let s=e.children.find((e=>y(e)&&"!doctype"===e.name));s?s.data=null!=i?i:null:(s=new _("!doctype",i),Gl.appendChild(e,s)),s["x-name"]=null!=t?t:void 0,s["x-publicId"]=null!=n?n:void 0,s["x-systemId"]=null!=r?r:void 0},setDocumentMode(e,t){e["x-mode"]=t},getDocumentMode:e=>e["x-mode"],detachNode(e){if(e.parent){const t=e.parent.children.indexOf(e),{prev:n,next:r}=e;e.prev=null,e.next=null,n&&(n.next=r),r&&(r.prev=n),e.parent.children.splice(t,1),e.parent=null}},insertText(e,t){const n=e.children[e.children.length-1];n&&b(n)?n.data+=t:Gl.appendChild(e,Ul(t))},insertTextBefore(e,t,n){const r=e.children[e.children.indexOf(n)-1];r&&b(r)?r.data+=t:Gl.insertBefore(e,Ul(t),n)},adoptAttributes(e,t){for(let n=0;ne.children[0],getChildNodes:e=>e.children,getParentNode:e=>e.parent,getAttrList:e=>e.attributes,getTagName:e=>e.name,getNamespaceURI:e=>e.namespace,getTextNodeContent:e=>e.data,getCommentNodeContent:e=>e.data,getDocumentTypeNodeName(e){var t;return null!==(t=e["x-name"])&&void 0!==t?t:""},getDocumentTypeNodePublicId(e){var t;return null!==(t=e["x-publicId"])&&void 0!==t?t:""},getDocumentTypeNodeSystemId(e){var t;return null!==(t=e["x-systemId"])&&void 0!==t?t:""},isDocumentTypeNode:e=>y(e)&&"!doctype"===e.name,setNodeSourceCodeLocation(e,t){t&&(e.startIndex=t.startOffset,e.endIndex=t.endOffset),e.sourceCodeLocation=t},getNodeSourceCodeLocation:e=>e.sourceCodeLocation,updateNodeSourceCodeLocation(e,t){null!=t.endOffset&&(e.endIndex=t.endOffset),e.sourceCodeLocation={...e.sourceCodeLocation,...t}}};var Yl=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,s=t.length;i=Kl.Zero&&e<=Kl.Nine}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Num=35]="Num",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(Kl||(Kl={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"}(jl||(jl={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(Vl||(Vl={}));const zl={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])};class Jl{constructor({xmlMode:e=!1,decodeEntities:t=!0},n){this.cbs=n,this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=e,this.decodeEntities=t,this.entityTrie=e?xo:wo}reset(){this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=jl.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===Kl.Amp&&(this.state=jl.BeforeEntity)}stateSpecialStartSequence(e){const t=this.sequenceIndex===this.currentSequence.length;if(t?Xl(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=jl.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===Kl.Gt||Ql(e)){const t=this.index-this.currentSequence.length;if(this.sectionStart=Kl.LowerA&&e<=Kl.LowerZ||e>=Kl.UpperA&&e<=Kl.UpperZ}(e)}startSpecial(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=jl.SpecialStartSequence}stateBeforeTagName(e){if(e===Kl.ExclamationMark)this.state=jl.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===Kl.Questionmark)this.state=jl.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){const t=32|e;this.sectionStart=this.index,this.xmlMode||t!==zl.TitleEnd[2]?this.state=this.xmlMode||t!==zl.ScriptEnd[2]?jl.InTagName:jl.BeforeSpecialS:this.startSpecial(zl.TitleEnd,3)}else e===Kl.Slash?this.state=jl.BeforeClosingTagName:(this.state=jl.Text,this.stateText(e))}stateInTagName(e){Xl(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateBeforeClosingTagName(e){Ql(e)||(e===Kl.Gt?this.state=jl.Text:(this.state=this.isTagStartChar(e)?jl.InClosingTagName:jl.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(e){(e===Kl.Gt||Ql(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.AfterClosingTagName,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(e){e===Kl.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=jl.InSpecialTag,this.sequenceIndex=0):this.state=jl.Text,this.baseState=this.state,this.sectionStart=this.index+1):e===Kl.Slash?this.state=jl.InSelfClosingTag:Ql(e)||(this.state=jl.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(e){e===Kl.Gt?(this.cbs.onselfclosingtag(this.index),this.state=jl.Text,this.baseState=jl.Text,this.sectionStart=this.index+1,this.isSpecial=!1):Ql(e)||(this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateInAttributeName(e){(e===Kl.Eq||Xl(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.AfterAttributeName,this.stateAfterAttributeName(e))}stateAfterAttributeName(e){e===Kl.Eq?this.state=jl.BeforeAttributeValue:e===Kl.Slash||e===Kl.Gt?(this.cbs.onattribend(Vl.NoValue,this.index),this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e)):Ql(e)||(this.cbs.onattribend(Vl.NoValue,this.index),this.state=jl.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(e){e===Kl.DoubleQuote?(this.state=jl.InAttributeValueDq,this.sectionStart=this.index+1):e===Kl.SingleQuote?(this.state=jl.InAttributeValueSq,this.sectionStart=this.index+1):Ql(e)||(this.sectionStart=this.index,this.state=jl.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))}handleInAttributeValue(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===Kl.DoubleQuote?Vl.Double:Vl.Single,this.index),this.state=jl.BeforeAttributeName):this.decodeEntities&&e===Kl.Amp&&(this.baseState=this.state,this.state=jl.BeforeEntity)}stateInAttributeValueDoubleQuotes(e){this.handleInAttributeValue(e,Kl.DoubleQuote)}stateInAttributeValueSingleQuotes(e){this.handleInAttributeValue(e,Kl.SingleQuote)}stateInAttributeValueNoQuotes(e){Ql(e)||e===Kl.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(Vl.Unquoted,this.index),this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===Kl.Amp&&(this.baseState=this.state,this.state=jl.BeforeEntity)}stateBeforeDeclaration(e){e===Kl.OpeningSquareBracket?(this.state=jl.CDATASequence,this.sequenceIndex=0):this.state=e===Kl.Dash?jl.BeforeComment:jl.InDeclaration}stateInDeclaration(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=jl.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeComment(e){e===Kl.Dash?(this.state=jl.InCommentLike,this.currentSequence=zl.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=jl.InDeclaration}stateInSpecialComment(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){const t=32|e;t===zl.ScriptEnd[3]?this.startSpecial(zl.ScriptEnd,4):t===zl.StyleEnd[3]?this.startSpecial(zl.StyleEnd,4):(this.state=jl.InTagName,this.stateInTagName(e))}stateBeforeEntity(e){this.entityExcess=1,this.entityResult=0,e===Kl.Num?this.state=jl.BeforeNumericEntity:e===Kl.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=jl.InNamedEntity,this.stateInNamedEntity(e))}stateInNamedEntity(e){if(this.entityExcess+=1,this.trieIndex=Oo(this.entityTrie,this.trieCurrent,this.trieIndex+1,e),this.trieIndex<0)return this.emitNamedEntity(),void this.index--;this.trieCurrent=this.entityTrie[this.trieIndex];const t=this.trieCurrent&yo.VALUE_LENGTH;if(t){const n=(t>>14)-1;if(this.allowLegacyEntity()||e===Kl.Semi){const e=this.index-this.entityExcess+1;e>this.sectionStart&&this.emitPartial(this.sectionStart,e),this.entityResult=this.trieIndex,this.trieIndex+=n,this.entityExcess=0,this.sectionStart=this.index+1,0===n&&this.emitNamedEntity()}else this.trieIndex+=n}}emitNamedEntity(){if(this.state=this.baseState,0===this.entityResult)return;switch((this.entityTrie[this.entityResult]&yo.VALUE_LENGTH)>>14){case 1:this.emitCodePoint(this.entityTrie[this.entityResult]&~yo.VALUE_LENGTH);break;case 2:this.emitCodePoint(this.entityTrie[this.entityResult+1]);break;case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}}stateBeforeNumericEntity(e){(32|e)===Kl.LowerX?(this.entityExcess++,this.state=jl.InHexEntity):(this.state=jl.InNumericEntity,this.stateInNumericEntity(e))}emitNumericEntity(e){const t=this.index-this.entityExcess-1;t+2+Number(this.state===jl.InHexEntity)!==this.index&&(t>this.sectionStart&&this.emitPartial(this.sectionStart,t),this.sectionStart=this.index+Number(e),this.emitCodePoint(ko(this.entityResult))),this.state=this.baseState}stateInNumericEntity(e){e===Kl.Semi?this.emitNumericEntity(!0):$l(e)?(this.entityResult=10*this.entityResult+(e-Kl.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)}stateInHexEntity(e){e===Kl.Semi?this.emitNumericEntity(!0):$l(e)?(this.entityResult=16*this.entityResult+(e-Kl.Zero),this.entityExcess++):!function(e){return e>=Kl.UpperA&&e<=Kl.UpperF||e>=Kl.LowerA&&e<=Kl.LowerF}(e)?(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--):(this.entityResult=16*this.entityResult+((32|e)-Kl.LowerA+10),this.entityExcess++)}allowLegacyEntity(){return!this.xmlMode&&(this.baseState===jl.Text||this.baseState===jl.InSpecialTag)}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===jl.Text||this.state===jl.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==jl.InAttributeValueDq&&this.state!==jl.InAttributeValueSq&&this.state!==jl.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index0&&s.has(this.stack[this.stack.length-1]);){const e=this.stack.pop();null===(n=(t=this.cbs).onclosetag)||void 0===n||n.call(t,e,!0)}this.isVoidElement(e)||(this.stack.push(e),ah.has(e)?this.foreignContext.push(!0):oh.has(e)&&this.foreignContext.push(!1)),null===(i=(r=this.cbs).onopentagname)||void 0===i||i.call(r,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var t,n;this.startIndex=this.openTagStart,this.attribs&&(null===(n=(t=this.cbs).onopentag)||void 0===n||n.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,t){var n,r,i,s,a,o;this.endIndex=t;let c=this.getSlice(e,t);if(this.lowerCaseTagNames&&(c=c.toLowerCase()),(ah.has(c)||oh.has(c))&&this.foreignContext.pop(),this.isVoidElement(c))this.options.xmlMode||"br"!==c||(null===(r=(n=this.cbs).onopentagname)||void 0===r||r.call(n,"br"),null===(s=(i=this.cbs).onopentag)||void 0===s||s.call(i,"br",{},!0),null===(o=(a=this.cbs).onclosetag)||void 0===o||o.call(a,"br",!1));else{const e=this.stack.lastIndexOf(c);if(-1!==e)if(this.cbs.onclosetag){let t=this.stack.length-e;for(;t--;)this.cbs.onclosetag(this.stack.pop(),0!==t)}else this.stack.length=e;else this.options.xmlMode||"p"!==c||(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1}onselfclosingtag(e){this.endIndex=e,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var t,n;const r=this.tagname;this.endOpenTag(e),this.stack[this.stack.length-1]===r&&(null===(n=(t=this.cbs).onclosetag)||void 0===n||n.call(t,r,!e),this.stack.pop())}onattribname(e,t){this.startIndex=e;const n=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?n.toLowerCase():n}onattribdata(e,t){this.attribvalue+=this.getSlice(e,t)}onattribentity(e){this.attribvalue+=Lo(e)}onattribend(e,t){var n,r;this.endIndex=t,null===(r=(n=this.cbs).onattribute)||void 0===r||r.call(n,this.attribname,this.attribvalue,e===Vl.Double?'"':e===Vl.Single?"'":e===Vl.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){const t=e.search(ch);let n=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(n=n.toLowerCase()),n}ondeclaration(e,t){this.endIndex=t;const n=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){const e=this.getInstructionName(n);this.cbs.onprocessinginstruction(`!${e}`,`!${n}`)}this.startIndex=t+1}onprocessinginstruction(e,t){this.endIndex=t;const n=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){const e=this.getInstructionName(n);this.cbs.onprocessinginstruction(`?${e}`,`?${n}`)}this.startIndex=t+1}oncomment(e,t,n){var r,i,s,a;this.endIndex=t,null===(i=(r=this.cbs).oncomment)||void 0===i||i.call(r,this.getSlice(e,t-n)),null===(a=(s=this.cbs).oncommentend)||void 0===a||a.call(s),this.startIndex=t+1}oncdata(e,t,n){var r,i,s,a,o,c,l,h,u,p;this.endIndex=t;const f=this.getSlice(e,t-n);this.options.xmlMode||this.options.recognizeCDATA?(null===(i=(r=this.cbs).oncdatastart)||void 0===i||i.call(r),null===(a=(s=this.cbs).ontext)||void 0===a||a.call(s,f),null===(c=(o=this.cbs).oncdataend)||void 0===c||c.call(o)):(null===(h=(l=this.cbs).oncomment)||void 0===h||h.call(l,`[CDATA[${f}]]`),null===(p=(u=this.cbs).oncommentend)||void 0===p||p.call(u)),this.startIndex=t+1}onend(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let e=this.stack.length;e>0;this.cbs.onclosetag(this.stack[--e],!0));}null===(t=(e=this.cbs).onend)||void 0===t||t.call(e)}reset(){var e,t,n,r;null===(t=(e=this.cbs).onreset)||void 0===t||t.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,null===(r=(n=this.cbs).onparserinit)||void 0===r||r.call(n,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(e){this.reset(),this.end(e)}getSlice(e,t){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let n=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);for(;t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),n+=this.buffers[0].slice(0,t-this.bufferOffset);return n}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var t,n;this.ended?null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))}end(e){var t,n;this.ended?null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex>> (32 - n));
- // var low = this.low << n;
- // } else {
- // var high = this.low << (n - 32);
- // var low = 0;
- // }
+ // if (n < 32) {
+ // var high = (this.high << n) | (this.low >>> (32 - n));
+ // var low = this.low << n;
+ // } else {
+ // var high = this.low << (n - 32);
+ // var low = 0;
+ // }
- // return X64Word.create(high, low);
+ // return X64Word.create(high, low);
// },
/**
@@ -918,15 +917,15 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* var shifted = x64Word.shiftR(7);
*/
// shiftR: function (n) {
- // if (n < 32) {
- // var low = (this.low >>> n) | (this.high << (32 - n));
- // var high = this.high >>> n;
- // } else {
- // var low = this.high >>> (n - 32);
- // var high = 0;
- // }
+ // if (n < 32) {
+ // var low = (this.low >>> n) | (this.high << (32 - n));
+ // var high = this.high >>> n;
+ // } else {
+ // var low = this.high >>> (n - 32);
+ // var high = 0;
+ // }
- // return X64Word.create(high, low);
+ // return X64Word.create(high, low);
// },
/**
@@ -941,7 +940,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* var rotated = x64Word.rotL(25);
*/
// rotL: function (n) {
- // return this.shiftL(n).or(this.shiftR(64 - n));
+ // return this.shiftL(n).or(this.shiftR(64 - n));
// },
/**
@@ -956,7 +955,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* var rotated = x64Word.rotR(7);
*/
// rotR: function (n) {
- // return this.shiftR(n).or(this.shiftL(64 - n));
+ // return this.shiftR(n).or(this.shiftL(64 - n));
// },
/**
@@ -971,11 +970,11 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* var added = x64Word.add(anotherX64Word);
*/
// add: function (word) {
- // var low = (this.low + word.low) | 0;
- // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
- // var high = (this.high + word.high + carry) | 0;
+ // var low = (this.low + word.low) | 0;
+ // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
+ // var high = (this.high + word.high + carry) | 0;
- // return X64Word.create(high, low);
+ // return X64Word.create(high, low);
// }
});
@@ -1006,7 +1005,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
* ], 10);
*/
- init: function (words, sigBytes) {
+ init: function(words, sigBytes) {
words = this.words = words || [];
if (sigBytes != undefined) {
@@ -1025,7 +1024,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
*
* var x32WordArray = x64WordArray.toX32();
*/
- toX32: function () {
+ toX32: function() {
// Shortcuts
var x64Words = this.words;
var x64WordsLength = x64Words.length;
@@ -1050,7 +1049,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
*
* var clone = x64WordArray.clone();
*/
- clone: function () {
+ clone: function() {
var clone = Base.clone.call(this);
// Clone "words" array
@@ -1075,7 +1074,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function () {
+(function() {
// Check if typed arrays are supported
if (typeof ArrayBuffer != 'function') {
return;
@@ -1090,7 +1089,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
var superInit = WordArray.init;
// Augment WordArray.init to handle typed arrays
- var subInit = WordArray.init = function (typedArray) {
+ var subInit = WordArray.init = function(typedArray) {
// Convert buffers to uint8
if (typedArray instanceof ArrayBuffer) {
typedArray = new Uint8Array(typedArray);
@@ -1140,7 +1139,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -1164,7 +1163,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
*
* var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
*/
- stringify: function (wordArray) {
+ stringify: function(wordArray) {
// Shortcuts
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
@@ -1192,7 +1191,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
*
* var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
*/
- parse: function (utf16Str) {
+ parse: function(utf16Str) {
// Shortcut
var utf16StrLength = utf16Str.length;
@@ -1223,7 +1222,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
*
* var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
*/
- stringify: function (wordArray) {
+ stringify: function(wordArray) {
// Shortcuts
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
@@ -1251,7 +1250,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
*
* var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
*/
- parse: function (utf16Str) {
+ parse: function(utf16Str) {
// Shortcut
var utf16StrLength = utf16Str.length;
@@ -1279,7 +1278,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -1303,7 +1302,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
*
* var base64String = CryptoJS.enc.Base64.stringify(wordArray);
*/
- stringify: function (wordArray) {
+ stringify: function(wordArray) {
// Shortcuts
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
@@ -1315,13 +1314,14 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Convert
var base64Chars = [];
for (var i = 0; i < sigBytes; i += 3) {
- var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
- for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
+ for (var j = 0;
+ (j < 4) && (i + j * 0.75 < sigBytes); j++) {
base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
}
}
@@ -1350,17 +1350,17 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
*
* var wordArray = CryptoJS.enc.Base64.parse(base64String);
*/
- parse: function (base64Str) {
+ parse: function(base64Str) {
// Shortcuts
var base64StrLength = base64Str.length;
var map = this._map;
var reverseMap = this._reverseMap;
if (!reverseMap) {
- reverseMap = this._reverseMap = [];
- for (var j = 0; j < map.length; j++) {
- reverseMap[map.charCodeAt(j)] = j;
- }
+ reverseMap = this._reverseMap = [];
+ for (var j = 0; j < map.length; j++) {
+ reverseMap[map.charCodeAt(j)] = j;
+ }
}
// Ignore padding
@@ -1381,18 +1381,18 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
};
function parseLoop(base64Str, base64StrLength, reverseMap) {
- var words = [];
- var nBytes = 0;
- for (var i = 0; i < base64StrLength; i++) {
- if (i % 4) {
- var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
- var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
- var bitsCombined = bits1 | bits2;
- words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
- nBytes++;
- }
- }
- return WordArray.create(words, nBytes);
+ var words = [];
+ var nBytes = 0;
+ for (var i = 0; i < base64StrLength; i++) {
+ if (i % 4) {
+ var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
+ var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
+ var bitsCombined = bits1 | bits2;
+ words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
+ nBytes++;
+ }
+ }
+ return WordArray.create(words, nBytes);
}
}());
@@ -1408,7 +1408,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function (Math) {
+(function(Math) {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -1420,7 +1420,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
var T = [];
// Compute constants
- (function () {
+ (function() {
for (var i = 0; i < 64; i++) {
T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
}
@@ -1430,14 +1430,14 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* MD5 hash algorithm.
*/
var MD5 = C_algo.MD5 = Hasher.extend({
- _doReset: function () {
+ _doReset: function() {
this._hash = new WordArray.init([
0x67452301, 0xefcdab89,
0x98badcfe, 0x10325476
]);
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
// Swap endian
for (var i = 0; i < 16; i++) {
// Shortcuts
@@ -1445,24 +1445,24 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
var M_offset_i = M[offset_i];
M[offset_i] = (
- (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
- (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
+ (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
+ (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
);
}
// Shortcuts
var H = this._hash.words;
- var M_offset_0 = M[offset + 0];
- var M_offset_1 = M[offset + 1];
- var M_offset_2 = M[offset + 2];
- var M_offset_3 = M[offset + 3];
- var M_offset_4 = M[offset + 4];
- var M_offset_5 = M[offset + 5];
- var M_offset_6 = M[offset + 6];
- var M_offset_7 = M[offset + 7];
- var M_offset_8 = M[offset + 8];
- var M_offset_9 = M[offset + 9];
+ var M_offset_0 = M[offset + 0];
+ var M_offset_1 = M[offset + 1];
+ var M_offset_2 = M[offset + 2];
+ var M_offset_3 = M[offset + 3];
+ var M_offset_4 = M[offset + 4];
+ var M_offset_5 = M[offset + 5];
+ var M_offset_6 = M[offset + 6];
+ var M_offset_7 = M[offset + 7];
+ var M_offset_8 = M[offset + 8];
+ var M_offset_9 = M[offset + 9];
var M_offset_10 = M[offset + 10];
var M_offset_11 = M[offset + 11];
var M_offset_12 = M[offset + 12];
@@ -1477,73 +1477,73 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
var d = H[3];
// Computation
- a = FF(a, b, c, d, M_offset_0, 7, T[0]);
- d = FF(d, a, b, c, M_offset_1, 12, T[1]);
- c = FF(c, d, a, b, M_offset_2, 17, T[2]);
- b = FF(b, c, d, a, M_offset_3, 22, T[3]);
- a = FF(a, b, c, d, M_offset_4, 7, T[4]);
- d = FF(d, a, b, c, M_offset_5, 12, T[5]);
- c = FF(c, d, a, b, M_offset_6, 17, T[6]);
- b = FF(b, c, d, a, M_offset_7, 22, T[7]);
- a = FF(a, b, c, d, M_offset_8, 7, T[8]);
- d = FF(d, a, b, c, M_offset_9, 12, T[9]);
+ a = FF(a, b, c, d, M_offset_0, 7, T[0]);
+ d = FF(d, a, b, c, M_offset_1, 12, T[1]);
+ c = FF(c, d, a, b, M_offset_2, 17, T[2]);
+ b = FF(b, c, d, a, M_offset_3, 22, T[3]);
+ a = FF(a, b, c, d, M_offset_4, 7, T[4]);
+ d = FF(d, a, b, c, M_offset_5, 12, T[5]);
+ c = FF(c, d, a, b, M_offset_6, 17, T[6]);
+ b = FF(b, c, d, a, M_offset_7, 22, T[7]);
+ a = FF(a, b, c, d, M_offset_8, 7, T[8]);
+ d = FF(d, a, b, c, M_offset_9, 12, T[9]);
c = FF(c, d, a, b, M_offset_10, 17, T[10]);
b = FF(b, c, d, a, M_offset_11, 22, T[11]);
- a = FF(a, b, c, d, M_offset_12, 7, T[12]);
+ a = FF(a, b, c, d, M_offset_12, 7, T[12]);
d = FF(d, a, b, c, M_offset_13, 12, T[13]);
c = FF(c, d, a, b, M_offset_14, 17, T[14]);
b = FF(b, c, d, a, M_offset_15, 22, T[15]);
- a = GG(a, b, c, d, M_offset_1, 5, T[16]);
- d = GG(d, a, b, c, M_offset_6, 9, T[17]);
+ a = GG(a, b, c, d, M_offset_1, 5, T[16]);
+ d = GG(d, a, b, c, M_offset_6, 9, T[17]);
c = GG(c, d, a, b, M_offset_11, 14, T[18]);
- b = GG(b, c, d, a, M_offset_0, 20, T[19]);
- a = GG(a, b, c, d, M_offset_5, 5, T[20]);
- d = GG(d, a, b, c, M_offset_10, 9, T[21]);
+ b = GG(b, c, d, a, M_offset_0, 20, T[19]);
+ a = GG(a, b, c, d, M_offset_5, 5, T[20]);
+ d = GG(d, a, b, c, M_offset_10, 9, T[21]);
c = GG(c, d, a, b, M_offset_15, 14, T[22]);
- b = GG(b, c, d, a, M_offset_4, 20, T[23]);
- a = GG(a, b, c, d, M_offset_9, 5, T[24]);
- d = GG(d, a, b, c, M_offset_14, 9, T[25]);
- c = GG(c, d, a, b, M_offset_3, 14, T[26]);
- b = GG(b, c, d, a, M_offset_8, 20, T[27]);
- a = GG(a, b, c, d, M_offset_13, 5, T[28]);
- d = GG(d, a, b, c, M_offset_2, 9, T[29]);
- c = GG(c, d, a, b, M_offset_7, 14, T[30]);
+ b = GG(b, c, d, a, M_offset_4, 20, T[23]);
+ a = GG(a, b, c, d, M_offset_9, 5, T[24]);
+ d = GG(d, a, b, c, M_offset_14, 9, T[25]);
+ c = GG(c, d, a, b, M_offset_3, 14, T[26]);
+ b = GG(b, c, d, a, M_offset_8, 20, T[27]);
+ a = GG(a, b, c, d, M_offset_13, 5, T[28]);
+ d = GG(d, a, b, c, M_offset_2, 9, T[29]);
+ c = GG(c, d, a, b, M_offset_7, 14, T[30]);
b = GG(b, c, d, a, M_offset_12, 20, T[31]);
- a = HH(a, b, c, d, M_offset_5, 4, T[32]);
- d = HH(d, a, b, c, M_offset_8, 11, T[33]);
+ a = HH(a, b, c, d, M_offset_5, 4, T[32]);
+ d = HH(d, a, b, c, M_offset_8, 11, T[33]);
c = HH(c, d, a, b, M_offset_11, 16, T[34]);
b = HH(b, c, d, a, M_offset_14, 23, T[35]);
- a = HH(a, b, c, d, M_offset_1, 4, T[36]);
- d = HH(d, a, b, c, M_offset_4, 11, T[37]);
- c = HH(c, d, a, b, M_offset_7, 16, T[38]);
+ a = HH(a, b, c, d, M_offset_1, 4, T[36]);
+ d = HH(d, a, b, c, M_offset_4, 11, T[37]);
+ c = HH(c, d, a, b, M_offset_7, 16, T[38]);
b = HH(b, c, d, a, M_offset_10, 23, T[39]);
- a = HH(a, b, c, d, M_offset_13, 4, T[40]);
- d = HH(d, a, b, c, M_offset_0, 11, T[41]);
- c = HH(c, d, a, b, M_offset_3, 16, T[42]);
- b = HH(b, c, d, a, M_offset_6, 23, T[43]);
- a = HH(a, b, c, d, M_offset_9, 4, T[44]);
+ a = HH(a, b, c, d, M_offset_13, 4, T[40]);
+ d = HH(d, a, b, c, M_offset_0, 11, T[41]);
+ c = HH(c, d, a, b, M_offset_3, 16, T[42]);
+ b = HH(b, c, d, a, M_offset_6, 23, T[43]);
+ a = HH(a, b, c, d, M_offset_9, 4, T[44]);
d = HH(d, a, b, c, M_offset_12, 11, T[45]);
c = HH(c, d, a, b, M_offset_15, 16, T[46]);
- b = HH(b, c, d, a, M_offset_2, 23, T[47]);
+ b = HH(b, c, d, a, M_offset_2, 23, T[47]);
- a = II(a, b, c, d, M_offset_0, 6, T[48]);
- d = II(d, a, b, c, M_offset_7, 10, T[49]);
+ a = II(a, b, c, d, M_offset_0, 6, T[48]);
+ d = II(d, a, b, c, M_offset_7, 10, T[49]);
c = II(c, d, a, b, M_offset_14, 15, T[50]);
- b = II(b, c, d, a, M_offset_5, 21, T[51]);
- a = II(a, b, c, d, M_offset_12, 6, T[52]);
- d = II(d, a, b, c, M_offset_3, 10, T[53]);
+ b = II(b, c, d, a, M_offset_5, 21, T[51]);
+ a = II(a, b, c, d, M_offset_12, 6, T[52]);
+ d = II(d, a, b, c, M_offset_3, 10, T[53]);
c = II(c, d, a, b, M_offset_10, 15, T[54]);
- b = II(b, c, d, a, M_offset_1, 21, T[55]);
- a = II(a, b, c, d, M_offset_8, 6, T[56]);
+ b = II(b, c, d, a, M_offset_1, 21, T[55]);
+ a = II(a, b, c, d, M_offset_8, 6, T[56]);
d = II(d, a, b, c, M_offset_15, 10, T[57]);
- c = II(c, d, a, b, M_offset_6, 15, T[58]);
+ c = II(c, d, a, b, M_offset_6, 15, T[58]);
b = II(b, c, d, a, M_offset_13, 21, T[59]);
- a = II(a, b, c, d, M_offset_4, 6, T[60]);
+ a = II(a, b, c, d, M_offset_4, 6, T[60]);
d = II(d, a, b, c, M_offset_11, 10, T[61]);
- c = II(c, d, a, b, M_offset_2, 15, T[62]);
- b = II(b, c, d, a, M_offset_9, 21, T[63]);
+ c = II(c, d, a, b, M_offset_2, 15, T[62]);
+ b = II(b, c, d, a, M_offset_9, 21, T[63]);
// Intermediate hash value
H[0] = (H[0] + a) | 0;
@@ -1552,7 +1552,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
H[3] = (H[3] + d) | 0;
},
- _doFinalize: function () {
+ _doFinalize: function() {
// Shortcuts
var data = this._data;
var dataWords = data.words;
@@ -1566,12 +1566,12 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
var nBitsTotalL = nBitsTotal;
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (
- (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |
- (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)
+ (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)
);
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
- (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |
- (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)
+ (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)
);
data.sigBytes = (dataWords.length + 1) * 4;
@@ -1588,15 +1588,15 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Shortcut
var H_i = H[i];
- H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
- (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
+ H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
+ (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
}
// Return final computed hash
return hash;
},
- clone: function () {
+ clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
@@ -1671,7 +1671,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -1686,7 +1686,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* SHA-1 hash algorithm.
*/
var SHA1 = C_algo.SHA1 = Hasher.extend({
- _doReset: function () {
+ _doReset: function() {
this._hash = new WordArray.init([
0x67452301, 0xefcdab89,
0x98badcfe, 0x10325476,
@@ -1694,7 +1694,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
]);
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
// Shortcut
var H = this._hash.words;
@@ -1740,7 +1740,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
H[4] = (H[4] + e) | 0;
},
- _doFinalize: function () {
+ _doFinalize: function() {
// Shortcuts
var data = this._data;
var dataWords = data.words;
@@ -1761,7 +1761,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
return this._hash;
},
- clone: function () {
+ clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
@@ -1813,7 +1813,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function (Math) {
+(function(Math) {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -1826,7 +1826,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
var K = [];
// Compute constants
- (function () {
+ (function() {
function isPrime(n) {
var sqrtN = Math.sqrt(n);
for (var factor = 2; factor <= sqrtN; factor++) {
@@ -1865,11 +1865,11 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* SHA-256 hash algorithm.
*/
var SHA256 = C_algo.SHA256 = Hasher.extend({
- _doReset: function () {
+ _doReset: function() {
this._hash = new WordArray.init(H.slice(0));
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
// Shortcut
var H = this._hash.words;
@@ -1889,23 +1889,23 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
W[i] = M[offset + i] | 0;
} else {
var gamma0x = W[i - 15];
- var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^
- ((gamma0x << 14) | (gamma0x >>> 18)) ^
- (gamma0x >>> 3);
+ var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^
+ ((gamma0x << 14) | (gamma0x >>> 18)) ^
+ (gamma0x >>> 3);
var gamma1x = W[i - 2];
- var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^
- ((gamma1x << 13) | (gamma1x >>> 19)) ^
- (gamma1x >>> 10);
+ var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^
+ ((gamma1x << 13) | (gamma1x >>> 19)) ^
+ (gamma1x >>> 10);
W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
}
- var ch = (e & f) ^ (~e & g);
+ var ch = (e & f) ^ (~e & g);
var maj = (a & b) ^ (a & c) ^ (b & c);
var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));
- var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));
+ var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));
var t1 = h + sigma1 + ch + K[i] + W[i];
var t2 = sigma0 + maj;
@@ -1931,7 +1931,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
H[7] = (H[7] + h) | 0;
},
- _doFinalize: function () {
+ _doFinalize: function() {
// Shortcuts
var data = this._data;
var dataWords = data.words;
@@ -1952,7 +1952,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
return this._hash;
},
- clone: function () {
+ clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
@@ -2005,7 +2005,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -2017,14 +2017,14 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* SHA-224 hash algorithm.
*/
var SHA224 = C_algo.SHA224 = SHA256.extend({
- _doReset: function () {
+ _doReset: function() {
this._hash = new WordArray.init([
0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
]);
},
- _doFinalize: function () {
+ _doFinalize: function() {
var hash = SHA256._doFinalize.call(this);
hash.sigBytes -= 4;
@@ -2074,7 +2074,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -2134,7 +2134,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Reusable objects
var W = [];
- (function () {
+ (function() {
for (var i = 0; i < 80; i++) {
W[i] = X64Word_create();
}
@@ -2144,7 +2144,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* SHA-512 hash algorithm.
*/
var SHA512 = C_algo.SHA512 = Hasher.extend({
- _doReset: function () {
+ _doReset: function() {
this._hash = new X64WordArray.init([
new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),
new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),
@@ -2153,7 +2153,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
]);
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
// Shortcuts
var H = this._hash.words;
@@ -2211,29 +2211,29 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Extend message
if (i < 16) {
- Wih = Wi.high = M[offset + i * 2] | 0;
- Wil = Wi.low = M[offset + i * 2 + 1] | 0;
+ Wih = Wi.high = M[offset + i * 2] | 0;
+ Wil = Wi.low = M[offset + i * 2 + 1] | 0;
} else {
// Gamma0
- var gamma0x = W[i - 15];
+ var gamma0x = W[i - 15];
var gamma0xh = gamma0x.high;
var gamma0xl = gamma0x.low;
- var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);
- var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));
+ var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);
+ var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));
// Gamma1
- var gamma1x = W[i - 2];
+ var gamma1x = W[i - 2];
var gamma1xh = gamma1x.high;
var gamma1xl = gamma1x.low;
- var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);
- var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));
+ var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);
+ var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));
// W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
- var Wi7 = W[i - 7];
+ var Wi7 = W[i - 7];
var Wi7h = Wi7.high;
var Wi7l = Wi7.low;
- var Wi16 = W[i - 16];
+ var Wi16 = W[i - 16];
var Wi16h = Wi16.high;
var Wi16l = Wi16.low;
@@ -2245,21 +2245,21 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);
Wi.high = Wih;
- Wi.low = Wil;
+ Wi.low = Wil;
}
- var chh = (eh & fh) ^ (~eh & gh);
- var chl = (el & fl) ^ (~el & gl);
+ var chh = (eh & fh) ^ (~eh & gh);
+ var chl = (el & fl) ^ (~el & gl);
var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
- var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
- var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
+ var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
+ var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));
var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));
// t1 = h + sigma1 + ch + K[i] + W[i]
- var Ki = K[i];
+ var Ki = K[i];
var Kih = Ki.high;
var Kil = Ki.low;
@@ -2296,25 +2296,25 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
}
// Intermediate hash value
- H0l = H0.low = (H0l + al);
+ H0l = H0.low = (H0l + al);
H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));
- H1l = H1.low = (H1l + bl);
+ H1l = H1.low = (H1l + bl);
H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));
- H2l = H2.low = (H2l + cl);
+ H2l = H2.low = (H2l + cl);
H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));
- H3l = H3.low = (H3l + dl);
+ H3l = H3.low = (H3l + dl);
H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));
- H4l = H4.low = (H4l + el);
+ H4l = H4.low = (H4l + el);
H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));
- H5l = H5.low = (H5l + fl);
+ H5l = H5.low = (H5l + fl);
H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));
- H6l = H6.low = (H6l + gl);
+ H6l = H6.low = (H6l + gl);
H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));
- H7l = H7.low = (H7l + hl);
+ H7l = H7.low = (H7l + hl);
H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));
},
- _doFinalize: function () {
+ _doFinalize: function() {
// Shortcuts
var data = this._data;
var dataWords = data.words;
@@ -2338,14 +2338,14 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
return hash;
},
- clone: function () {
+ clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
return clone;
},
- blockSize: 1024/32
+ blockSize: 1024 / 32
});
/**
@@ -2388,7 +2388,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_x64 = C.x64;
@@ -2401,7 +2401,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
* SHA-384 hash algorithm.
*/
var SHA384 = C_algo.SHA384 = SHA512.extend({
- _doReset: function () {
+ _doReset: function() {
this._hash = new X64WordArray.init([
new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),
new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),
@@ -2410,7 +2410,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
]);
},
- _doFinalize: function () {
+ _doFinalize: function() {
var hash = SHA512._doFinalize.call(this);
hash.sigBytes -= 16;
@@ -2461,7 +2461,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
-(function (Math) {
+(function(Math) {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -2473,13 +2473,14 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Constants tables
var RHO_OFFSETS = [];
- var PI_INDEXES = [];
+ var PI_INDEXES = [];
var ROUND_CONSTANTS = [];
// Compute Constants
- (function () {
+ (function() {
// Compute rho offset constants
- var x = 1, y = 0;
+ var x = 1,
+ y = 0;
for (var t = 0; t < 24; t++) {
RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;
@@ -2527,7 +2528,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Reusable objects for temporary values
var T = [];
- (function () {
+ (function() {
for (var i = 0; i < 25; i++) {
T[i] = X64Word.create();
}
@@ -2549,7 +2550,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
outputLength: 512
}),
- _doReset: function () {
+ _doReset: function() {
var state = this._state = []
for (var i = 0; i < 25; i++) {
state[i] = new X64Word.init();
@@ -2558,7 +2559,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
// Shortcuts
var state = this._state;
var nBlockSizeLanes = this.blockSize / 2;
@@ -2566,23 +2567,23 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Absorb
for (var i = 0; i < nBlockSizeLanes; i++) {
// Shortcuts
- var M2i = M[offset + 2 * i];
+ var M2i = M[offset + 2 * i];
var M2i1 = M[offset + 2 * i + 1];
// Swap endian
M2i = (
- (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |
- (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)
+ (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |
+ (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)
);
M2i1 = (
- (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |
- (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)
+ (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |
+ (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)
);
// Absorb message into state
var lane = state[i];
lane.high ^= M2i1;
- lane.low ^= M2i;
+ lane.low ^= M2i;
}
// Rounds
@@ -2590,7 +2591,8 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Theta
for (var x = 0; x < 5; x++) {
// Mix column lanes
- var tMsw = 0, tLsw = 0;
+ var tMsw = 0,
+ tLsw = 0;
for (var y = 0; y < 5; y++) {
var lane = state[x + 5 * y];
tMsw ^= lane.high;
@@ -2600,7 +2602,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Temporary values
var Tx = T[x];
Tx.high = tMsw;
- Tx.low = tLsw;
+ Tx.low = tLsw;
}
for (var x = 0; x < 5; x++) {
// Shortcuts
@@ -2611,11 +2613,11 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Mix surrounding columns
var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));
- var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));
+ var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));
for (var y = 0; y < 5; y++) {
var lane = state[x + 5 * y];
lane.high ^= tMsw;
- lane.low ^= tLsw;
+ lane.low ^= tLsw;
}
}
@@ -2642,14 +2644,14 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Transpose lanes
var TPiLane = T[PI_INDEXES[laneIndex]];
TPiLane.high = tMsw;
- TPiLane.low = tLsw;
+ TPiLane.low = tLsw;
}
// Rho pi at x = y = 0
var T0 = T[0];
var state0 = state[0];
T0.high = state0.high;
- T0.low = state0.low;
+ T0.low = state0.low;
// Chi
for (var x = 0; x < 5; x++) {
@@ -2663,7 +2665,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Mix rows
lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);
- lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);
+ lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);
}
}
@@ -2671,11 +2673,11 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
var lane = state[0];
var roundConstant = ROUND_CONSTANTS[round];
lane.high ^= roundConstant.high;
- lane.low ^= roundConstant.low;
+ lane.low ^= roundConstant.low;
}
},
- _doFinalize: function () {
+ _doFinalize: function() {
// Shortcuts
var data = this._data;
var dataWords = data.words;
@@ -2706,12 +2708,12 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
// Swap endian
laneMsw = (
- (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |
- (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)
+ (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |
+ (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)
);
laneLsw = (
- (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |
- (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)
+ (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |
+ (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)
);
// Squeeze state to retrieve hash
@@ -2723,7 +2725,7 @@ var CryptoJS = CryptoJS || (function (Math, undefined) {
return new WordArray.init(hashWords, outputLengthBytes);
},
- clone: function () {
+ clone: function() {
var clone = Hasher.clone.call(this);
var state = clone._state = this._state.slice(0);
@@ -2785,7 +2787,7 @@ Redistribution and use in source and binary forms, with or without modification,
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-(function (Math) {
+(function(Math) {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -2795,42 +2797,46 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// Constants table
var _zl = WordArray.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]);
+ 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
+ ]);
var _zr = WordArray.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]);
+ 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
+ ]);
var _sl = WordArray.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 ]);
+ 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
+ ]);
var _sr = WordArray.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 ]);
+ 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
+ ]);
- var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);
- var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);
+ var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);
+ var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);
/**
* RIPEMD160 hash algorithm.
*/
var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
- _doReset: function () {
- this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);
+ _doReset: function() {
+ this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
// Swap endian
for (var i = 0; i < 16; i++) {
@@ -2840,12 +2846,12 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// Swap
M[offset_i] = (
- (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
- (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
+ (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
+ (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
);
}
// Shortcut
- var H = this._hash.words;
+ var H = this._hash.words;
var hl = _hl.words;
var hr = _hr.words;
var zl = _zl.words;
@@ -2865,42 +2871,42 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// Computation
var t;
for (var i = 0; i < 80; i += 1) {
- t = (al + M[offset+zl[i]])|0;
- if (i<16){
- t += f1(bl,cl,dl) + hl[0];
- } else if (i<32) {
- t += f2(bl,cl,dl) + hl[1];
- } else if (i<48) {
- t += f3(bl,cl,dl) + hl[2];
- } else if (i<64) {
- t += f4(bl,cl,dl) + hl[3];
- } else {// if (i<80) {
- t += f5(bl,cl,dl) + hl[4];
+ t = (al + M[offset + zl[i]]) | 0;
+ if (i < 16) {
+ t += f1(bl, cl, dl) + hl[0];
+ } else if (i < 32) {
+ t += f2(bl, cl, dl) + hl[1];
+ } else if (i < 48) {
+ t += f3(bl, cl, dl) + hl[2];
+ } else if (i < 64) {
+ t += f4(bl, cl, dl) + hl[3];
+ } else { // if (i<80) {
+ t += f5(bl, cl, dl) + hl[4];
}
- t = t|0;
- t = rotl(t,sl[i]);
- t = (t+el)|0;
+ t = t | 0;
+ t = rotl(t, sl[i]);
+ t = (t + el) | 0;
al = el;
el = dl;
dl = rotl(cl, 10);
cl = bl;
bl = t;
- t = (ar + M[offset+zr[i]])|0;
- if (i<16){
- t += f5(br,cr,dr) + hr[0];
- } else if (i<32) {
- t += f4(br,cr,dr) + hr[1];
- } else if (i<48) {
- t += f3(br,cr,dr) + hr[2];
- } else if (i<64) {
- t += f2(br,cr,dr) + hr[3];
- } else {// if (i<80) {
- t += f1(br,cr,dr) + hr[4];
+ t = (ar + M[offset + zr[i]]) | 0;
+ if (i < 16) {
+ t += f5(br, cr, dr) + hr[0];
+ } else if (i < 32) {
+ t += f4(br, cr, dr) + hr[1];
+ } else if (i < 48) {
+ t += f3(br, cr, dr) + hr[2];
+ } else if (i < 64) {
+ t += f2(br, cr, dr) + hr[3];
+ } else { // if (i<80) {
+ t += f1(br, cr, dr) + hr[4];
}
- t = t|0;
- t = rotl(t,sr[i]) ;
- t = (t+er)|0;
+ t = t | 0;
+ t = rotl(t, sr[i]);
+ t = (t + er) | 0;
ar = er;
er = dr;
dr = rotl(cr, 10);
@@ -2908,15 +2914,15 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
br = t;
}
// Intermediate hash value
- t = (H[1] + cl + dr)|0;
- H[1] = (H[2] + dl + er)|0;
- H[2] = (H[3] + el + ar)|0;
- H[3] = (H[4] + al + br)|0;
- H[4] = (H[0] + bl + cr)|0;
- H[0] = t;
+ t = (H[1] + cl + dr) | 0;
+ H[1] = (H[2] + dl + er) | 0;
+ H[2] = (H[3] + el + ar) | 0;
+ H[3] = (H[4] + al + br) | 0;
+ H[4] = (H[0] + bl + cr) | 0;
+ H[0] = t;
},
- _doFinalize: function () {
+ _doFinalize: function() {
// Shortcuts
var data = this._data;
var dataWords = data.words;
@@ -2927,8 +2933,8 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// Add padding
dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
- (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
- (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
+ (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
);
data.sigBytes = (dataWords.length + 1) * 4;
@@ -2945,15 +2951,15 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
var H_i = H[i];
// Swap
- H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
- (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
+ H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
+ (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
}
// Return final computed hash
return hash;
},
- clone: function () {
+ clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
@@ -2968,7 +2974,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
}
function f2(x, y, z) {
- return (((x)&(y)) | ((~x)&(z)));
+ return (((x) & (y)) | ((~x) & (z)));
}
function f3(x, y, z) {
@@ -2976,16 +2982,16 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
}
function f4(x, y, z) {
- return (((x) & (z)) | ((y)&(~(z))));
+ return (((x) & (z)) | ((y) & (~(z))));
}
function f5(x, y, z) {
- return ((x) ^ ((y) |(~(z))));
+ return ((x) ^ ((y) | (~(z))));
}
- function rotl(x,n) {
- return (x<>>(32-n));
+ function rotl(x, n) {
+ return (x << n) | (x >>> (32 - n));
}
@@ -3031,7 +3037,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -3054,7 +3060,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
*
* var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
*/
- init: function (hasher, key) {
+ init: function(hasher, key) {
// Init hasher
hasher = this._hasher = new hasher.init();
@@ -3101,7 +3107,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
*
* hmacHasher.reset();
*/
- reset: function () {
+ reset: function() {
// Shortcut
var hasher = this._hasher;
@@ -3122,7 +3128,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* hmacHasher.update('message');
* hmacHasher.update(wordArray);
*/
- update: function (messageUpdate) {
+ update: function(messageUpdate) {
this._hasher.update(messageUpdate);
// Chainable
@@ -3143,7 +3149,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* var hmac = hmacHasher.finalize('message');
* var hmac = hmacHasher.finalize(wordArray);
*/
- finalize: function (messageUpdate) {
+ finalize: function(messageUpdate) {
// Shortcut
var hasher = this._hasher;
@@ -3167,7 +3173,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -3189,7 +3195,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* @property {number} iterations The number of iterations to perform. Default: 1
*/
cfg: Base.extend({
- keySize: 128/32,
+ keySize: 128 / 32,
hasher: SHA1,
iterations: 1
}),
@@ -3205,7 +3211,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
* var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
*/
- init: function (cfg) {
+ init: function(cfg) {
this.cfg = this.cfg.extend(cfg);
},
@@ -3221,7 +3227,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
*
* var key = kdf.compute(password, salt);
*/
- compute: function (password, salt) {
+ compute: function(password, salt) {
// Shortcut
var cfg = this.cfg;
@@ -3288,7 +3294,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });
* var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });
*/
- C.PBKDF2 = function (password, salt, cfg) {
+ C.PBKDF2 = function(password, salt, cfg) {
return PBKDF2.create(cfg).compute(password, salt);
};
}());
@@ -3307,7 +3313,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
/**
* Cipher core components.
*/
-CryptoJS.lib.Cipher || (function (undefined) {
+CryptoJS.lib.Cipher || (function(undefined) {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -3350,7 +3356,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
*/
- createEncryptor: function (key, cfg) {
+ createEncryptor: function(key, cfg) {
return this.create(this._ENC_XFORM_MODE, key, cfg);
},
@@ -3368,7 +3374,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
*/
- createDecryptor: function (key, cfg) {
+ createDecryptor: function(key, cfg) {
return this.create(this._DEC_XFORM_MODE, key, cfg);
},
@@ -3383,7 +3389,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
*/
- init: function (xformMode, key, cfg) {
+ init: function(xformMode, key, cfg) {
// Apply config defaults
this.cfg = this.cfg.extend(cfg);
@@ -3402,7 +3408,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* cipher.reset();
*/
- reset: function () {
+ reset: function() {
// Reset data buffer
BufferedBlockAlgorithm.reset.call(this);
@@ -3422,7 +3428,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* var encrypted = cipher.process('data');
* var encrypted = cipher.process(wordArray);
*/
- process: function (dataUpdate) {
+ process: function(dataUpdate) {
// Append
this._append(dataUpdate);
@@ -3444,7 +3450,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* var encrypted = cipher.finalize('data');
* var encrypted = cipher.finalize(wordArray);
*/
- finalize: function (dataUpdate) {
+ finalize: function(dataUpdate) {
// Final data update
if (dataUpdate) {
this._append(dataUpdate);
@@ -3456,9 +3462,9 @@ CryptoJS.lib.Cipher || (function (undefined) {
return finalProcessedData;
},
- keySize: 128/32,
+ keySize: 128 / 32,
- ivSize: 128/32,
+ ivSize: 128 / 32,
_ENC_XFORM_MODE: 1,
@@ -3477,7 +3483,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
*/
- _createHelper: (function () {
+ _createHelper: (function() {
function selectCipherStrategy(key) {
if (typeof key == 'string') {
return PasswordBasedCipher;
@@ -3486,13 +3492,13 @@ CryptoJS.lib.Cipher || (function (undefined) {
}
}
- return function (cipher) {
+ return function(cipher) {
return {
- encrypt: function (message, key, cfg) {
+ encrypt: function(message, key, cfg) {
return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
},
- decrypt: function (ciphertext, key, cfg) {
+ decrypt: function(ciphertext, key, cfg) {
return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
}
};
@@ -3506,7 +3512,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)
*/
var StreamCipher = C_lib.StreamCipher = Cipher.extend({
- _doFinalize: function () {
+ _doFinalize: function() {
// Process partial blocks
var finalProcessedBlocks = this._process(!!'flush');
@@ -3537,7 +3543,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
*/
- createEncryptor: function (cipher, iv) {
+ createEncryptor: function(cipher, iv) {
return this.Encryptor.create(cipher, iv);
},
@@ -3553,7 +3559,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
*/
- createDecryptor: function (cipher, iv) {
+ createDecryptor: function(cipher, iv) {
return this.Decryptor.create(cipher, iv);
},
@@ -3567,7 +3573,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
*/
- init: function (cipher, iv) {
+ init: function(cipher, iv) {
this._cipher = cipher;
this._iv = iv;
}
@@ -3576,7 +3582,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
/**
* Cipher Block Chaining mode.
*/
- var CBC = C_mode.CBC = (function () {
+ var CBC = C_mode.CBC = (function() {
/**
* Abstract base CBC mode.
*/
@@ -3596,7 +3602,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* mode.processBlock(data.words, offset);
*/
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
// Shortcuts
var cipher = this._cipher;
var blockSize = cipher.blockSize;
@@ -3624,7 +3630,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* mode.processBlock(data.words, offset);
*/
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
// Shortcuts
var cipher = this._cipher;
var blockSize = cipher.blockSize;
@@ -3687,7 +3693,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* CryptoJS.pad.Pkcs7.pad(wordArray, 4);
*/
- pad: function (data, blockSize) {
+ pad: function(data, blockSize) {
// Shortcut
var blockSizeBytes = blockSize * 4;
@@ -3719,7 +3725,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* CryptoJS.pad.Pkcs7.unpad(wordArray);
*/
- unpad: function (data) {
+ unpad: function(data) {
// Get number of padding bytes from last byte
var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
@@ -3745,7 +3751,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
padding: Pkcs7
}),
- reset: function () {
+ reset: function() {
var modeCreator;
// Reset cipher
@@ -3773,11 +3779,11 @@ CryptoJS.lib.Cipher || (function (undefined) {
}
},
- _doProcessBlock: function (words, offset) {
+ _doProcessBlock: function(words, offset) {
this._mode.processBlock(words, offset);
},
- _doFinalize: function () {
+ _doFinalize: function() {
var finalProcessedBlocks;
// Shortcut
@@ -3801,7 +3807,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
return finalProcessedBlocks;
},
- blockSize: 128/32
+ blockSize: 128 / 32
});
/**
@@ -3837,7 +3843,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* formatter: CryptoJS.format.OpenSSL
* });
*/
- init: function (cipherParams) {
+ init: function(cipherParams) {
this.mixIn(cipherParams);
},
@@ -3856,7 +3862,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* var string = cipherParams.toString();
* var string = cipherParams.toString(CryptoJS.format.OpenSSL);
*/
- toString: function (formatter) {
+ toString: function(formatter) {
return (formatter || this.formatter).stringify(this);
}
});
@@ -3883,7 +3889,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
*/
- stringify: function (cipherParams) {
+ stringify: function(cipherParams) {
var wordArray;
// Shortcuts
@@ -3913,7 +3919,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
*/
- parse: function (openSSLStr) {
+ parse: function(openSSLStr) {
var salt;
// Parse base64
@@ -3932,7 +3938,10 @@ CryptoJS.lib.Cipher || (function (undefined) {
ciphertext.sigBytes -= 16;
}
- return CipherParams.create({ ciphertext: ciphertext, salt: salt });
+ return CipherParams.create({
+ ciphertext: ciphertext,
+ salt: salt
+ });
}
};
@@ -3967,7 +3976,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
*/
- encrypt: function (cipher, message, key, cfg) {
+ encrypt: function(cipher, message, key, cfg) {
// Apply config defaults
cfg = this.cfg.extend(cfg);
@@ -4008,7 +4017,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
* var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
*/
- decrypt: function (cipher, ciphertext, key, cfg) {
+ decrypt: function(cipher, ciphertext, key, cfg) {
// Apply config defaults
cfg = this.cfg.extend(cfg);
@@ -4036,7 +4045,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
*
* var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
*/
- _parse: function (ciphertext, format) {
+ _parse: function(ciphertext, format) {
if (typeof ciphertext == 'string') {
return format.parse(ciphertext, this);
} else {
@@ -4071,21 +4080,27 @@ CryptoJS.lib.Cipher || (function (undefined) {
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
*/
- execute: function (password, keySize, ivSize, salt) {
+ execute: function(password, keySize, ivSize, salt) {
// Generate random salt
if (!salt) {
- salt = WordArray.random(64/8);
+ salt = WordArray.random(64 / 8);
}
// Derive key and IV
- var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
+ var key = EvpKDF.create({
+ keySize: keySize + ivSize
+ }).compute(password, salt);
// Separate key and IV
var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
key.sigBytes = keySize * 4;
// Return params
- return CipherParams.create({ key: key, iv: iv, salt: salt });
+ return CipherParams.create({
+ key: key,
+ iv: iv,
+ salt: salt
+ });
}
};
@@ -4120,7 +4135,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
* var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
*/
- encrypt: function (cipher, message, password, cfg) {
+ encrypt: function(cipher, message, password, cfg) {
// Apply config defaults
cfg = this.cfg.extend(cfg);
@@ -4156,7 +4171,7 @@ CryptoJS.lib.Cipher || (function (undefined) {
* var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
* var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
*/
- decrypt: function (cipher, ciphertext, password, cfg) {
+ decrypt: function(cipher, ciphertext, password, cfg) {
// Apply config defaults
cfg = this.cfg.extend(cfg);
@@ -4188,11 +4203,11 @@ CryptoJS.lib.Cipher || (function (undefined) {
/**
* Cipher Feedback block mode.
*/
-CryptoJS.mode.CFB = (function () {
+CryptoJS.mode.CFB = (function() {
var CFB = CryptoJS.lib.BlockCipherMode.extend();
CFB.Encryptor = CFB.extend({
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
// Shortcuts
var cipher = this._cipher;
var blockSize = cipher.blockSize;
@@ -4205,7 +4220,7 @@ CryptoJS.mode.CFB = (function () {
});
CFB.Decryptor = CFB.extend({
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
// Shortcuts
var cipher = this._cipher;
var blockSize = cipher.blockSize;
@@ -4256,11 +4271,11 @@ CryptoJS.mode.CFB = (function () {
/**
* Counter block mode.
*/
-CryptoJS.mode.CTR = (function () {
+CryptoJS.mode.CTR = (function() {
var CTR = CryptoJS.lib.BlockCipherMode.extend();
var Encryptor = CTR.Encryptor = CTR.extend({
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
// Shortcuts
var cipher = this._cipher
var blockSize = cipher.blockSize;
@@ -4302,65 +4317,52 @@ CryptoJS.mode.CTR = (function () {
* derived from CryptoJS.mode.CTR
* Jan Hruby jhruby.web@gmail.com
*/
-CryptoJS.mode.CTRGladman = (function () {
+CryptoJS.mode.CTRGladman = (function() {
var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
- function incWord(word)
- {
- if (((word >> 24) & 0xff) === 0xff) { //overflow
- var b1 = (word >> 16)&0xff;
- var b2 = (word >> 8)&0xff;
- var b3 = word & 0xff;
+ function incWord(word) {
+ if (((word >> 24) & 0xff) === 0xff) { //overflow
+ var b1 = (word >> 16) & 0xff;
+ var b2 = (word >> 8) & 0xff;
+ var b3 = word & 0xff;
- if (b1 === 0xff) // overflow b1
- {
- b1 = 0;
- if (b2 === 0xff)
- {
- b2 = 0;
- if (b3 === 0xff)
- {
- b3 = 0;
- }
- else
- {
- ++b3;
- }
- }
- else
- {
- ++b2;
- }
- }
- else
- {
- ++b1;
- }
+ if (b1 === 0xff) // overflow b1
+ {
+ b1 = 0;
+ if (b2 === 0xff) {
+ b2 = 0;
+ if (b3 === 0xff) {
+ b3 = 0;
+ } else {
+ ++b3;
+ }
+ } else {
+ ++b2;
+ }
+ } else {
+ ++b1;
+ }
- word = 0;
- word += (b1 << 16);
- word += (b2 << 8);
- word += b3;
- }
- else
- {
- word += (0x01 << 24);
- }
- return word;
- }
+ word = 0;
+ word += (b1 << 16);
+ word += (b2 << 8);
+ word += b3;
+ } else {
+ word += (0x01 << 24);
+ }
+ return word;
+ }
- function incCounter(counter)
- {
- if ((counter[0] = incWord(counter[0])) === 0)
- {
- // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8
- counter[1] = incWord(counter[1]);
- }
- return counter;
- }
+ function incCounter(counter) {
+ if ((counter[0] = incWord(counter[0])) === 0) {
+ // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8
+ counter[1] = incWord(counter[1]);
+ }
+ return counter;
+ }
var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
// Shortcuts
var cipher = this._cipher
var blockSize = cipher.blockSize;
@@ -4375,9 +4377,9 @@ CryptoJS.mode.CTRGladman = (function () {
this._iv = undefined;
}
- incCounter(counter);
+ incCounter(counter);
- var keystream = counter.slice(0);
+ var keystream = counter.slice(0);
cipher.encryptBlock(keystream, 0);
// Encrypt
@@ -4403,11 +4405,11 @@ CryptoJS.mode.CTRGladman = (function () {
/**
* Output Feedback block mode.
*/
-CryptoJS.mode.OFB = (function () {
+CryptoJS.mode.OFB = (function() {
var OFB = CryptoJS.lib.BlockCipherMode.extend();
var Encryptor = OFB.Encryptor = OFB.extend({
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
// Shortcuts
var cipher = this._cipher
var blockSize = cipher.blockSize;
@@ -4445,17 +4447,17 @@ CryptoJS.mode.OFB = (function () {
/**
* Electronic Codebook block mode.
*/
-CryptoJS.mode.ECB = (function () {
+CryptoJS.mode.ECB = (function() {
var ECB = CryptoJS.lib.BlockCipherMode.extend();
ECB.Encryptor = ECB.extend({
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
this._cipher.encryptBlock(words, offset);
}
});
ECB.Decryptor = ECB.extend({
- processBlock: function (words, offset) {
+ processBlock: function(words, offset) {
this._cipher.decryptBlock(words, offset);
}
});
@@ -4475,7 +4477,7 @@ CryptoJS.mode.ECB = (function () {
* ANSI X.923 padding strategy.
*/
CryptoJS.pad.AnsiX923 = {
- pad: function (data, blockSize) {
+ pad: function(data, blockSize) {
// Shortcuts
var dataSigBytes = data.sigBytes;
var blockSizeBytes = blockSize * 4;
@@ -4492,7 +4494,7 @@ CryptoJS.pad.AnsiX923 = {
data.sigBytes += nPaddingBytes;
},
- unpad: function (data) {
+ unpad: function(data) {
// Get number of padding bytes from last byte
var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
@@ -4512,7 +4514,7 @@ CryptoJS.pad.AnsiX923 = {
* ISO 10126 padding strategy.
*/
CryptoJS.pad.Iso10126 = {
- pad: function (data, blockSize) {
+ pad: function(data, blockSize) {
// Shortcut
var blockSizeBytes = blockSize * 4;
@@ -4521,10 +4523,10 @@ CryptoJS.pad.Iso10126 = {
// Pad
data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).
- concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
+ concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
},
- unpad: function (data) {
+ unpad: function(data) {
// Get number of padding bytes from last byte
var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
@@ -4542,7 +4544,7 @@ CryptoJS.pad.Iso10126 = {
* ISO/IEC 9797-1 Padding Method 2.
*/
CryptoJS.pad.Iso97971 = {
- pad: function (data, blockSize) {
+ pad: function(data, blockSize) {
// Add 0x80 byte
data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));
@@ -4550,7 +4552,7 @@ CryptoJS.pad.Iso97971 = {
CryptoJS.pad.ZeroPadding.pad(data, blockSize);
},
- unpad: function (data) {
+ unpad: function(data) {
// Remove zero padding
CryptoJS.pad.ZeroPadding.unpad(data);
@@ -4571,7 +4573,7 @@ CryptoJS.pad.Iso97971 = {
* Zero padding strategy.
*/
CryptoJS.pad.ZeroPadding = {
- pad: function (data, blockSize) {
+ pad: function(data, blockSize) {
// Shortcut
var blockSizeBytes = blockSize * 4;
@@ -4580,7 +4582,7 @@ CryptoJS.pad.ZeroPadding = {
data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
},
- unpad: function (data) {
+ unpad: function(data) {
// Shortcut
var dataWords = data.words;
@@ -4605,15 +4607,13 @@ CryptoJS.pad.ZeroPadding = {
* A noop padding strategy.
*/
CryptoJS.pad.NoPadding = {
- pad: function () {
- },
+ pad: function() {},
- unpad: function () {
- }
+ unpad: function() {}
};
-(function (undefined) {
+(function(undefined) {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -4636,7 +4636,7 @@ CryptoJS.pad.NoPadding = {
*
* var hexString = CryptoJS.format.Hex.stringify(cipherParams);
*/
- stringify: function (cipherParams) {
+ stringify: function(cipherParams) {
return cipherParams.ciphertext.toString(Hex);
},
@@ -4653,9 +4653,11 @@ CryptoJS.pad.NoPadding = {
*
* var cipherParams = CryptoJS.format.Hex.parse(hexString);
*/
- parse: function (input) {
+ parse: function(input) {
var ciphertext = Hex.parse(input);
- return CipherParams.create({ ciphertext: ciphertext });
+ return CipherParams.create({
+ ciphertext: ciphertext
+ });
}
};
}());
@@ -4668,7 +4670,7 @@ CryptoJS.pad.NoPadding = {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -4688,7 +4690,7 @@ CryptoJS.pad.NoPadding = {
var INV_SUB_MIX_3 = [];
// Compute lookup tables
- (function () {
+ (function() {
// Compute double table
var d = [];
for (var i = 0; i < 256; i++) {
@@ -4718,14 +4720,14 @@ CryptoJS.pad.NoPadding = {
var t = (d[sx] * 0x101) ^ (sx * 0x1010100);
SUB_MIX_0[x] = (t << 24) | (t >>> 8);
SUB_MIX_1[x] = (t << 16) | (t >>> 16);
- SUB_MIX_2[x] = (t << 8) | (t >>> 24);
+ SUB_MIX_2[x] = (t << 8) | (t >>> 24);
SUB_MIX_3[x] = t;
// Compute inv sub bytes, inv mix columns tables
var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);
INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);
INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);
- INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);
+ INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);
INV_SUB_MIX_3[sx] = t;
// Compute next counter
@@ -4745,7 +4747,7 @@ CryptoJS.pad.NoPadding = {
* AES block cipher algorithm.
*/
var AES = C_algo.AES = BlockCipher.extend({
- _doReset: function () {
+ _doReset: function() {
var t;
// Skip reset of nRounds has been set before and key did not change
@@ -4805,16 +4807,16 @@ CryptoJS.pad.NoPadding = {
invKeySchedule[invKsRow] = t;
} else {
invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^
- INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];
+ INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];
}
}
},
- encryptBlock: function (M, offset) {
+ encryptBlock: function(M, offset) {
this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
},
- decryptBlock: function (M, offset) {
+ decryptBlock: function(M, offset) {
// Swap 2nd and 4th rows
var t = M[offset + 1];
M[offset + 1] = M[offset + 3];
@@ -4828,12 +4830,12 @@ CryptoJS.pad.NoPadding = {
M[offset + 3] = t;
},
- _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
+ _doCryptBlock: function(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
// Shortcut
var nRounds = this._nRounds;
// Get input, add round key
- var s0 = M[offset] ^ keySchedule[0];
+ var s0 = M[offset] ^ keySchedule[0];
var s1 = M[offset + 1] ^ keySchedule[1];
var s2 = M[offset + 2] ^ keySchedule[2];
var s3 = M[offset + 3] ^ keySchedule[3];
@@ -4863,13 +4865,13 @@ CryptoJS.pad.NoPadding = {
var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];
// Set output
- M[offset] = t0;
+ M[offset] = t0;
M[offset + 1] = t1;
M[offset + 2] = t2;
M[offset + 3] = t3;
},
- keySize: 256/32
+ keySize: 256 / 32
});
/**
@@ -4888,7 +4890,7 @@ CryptoJS.pad.NoPadding = {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -4898,21 +4900,21 @@ CryptoJS.pad.NoPadding = {
// Permuted Choice 1 constants
var PC1 = [
- 57, 49, 41, 33, 25, 17, 9, 1,
+ 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
+ 31, 23, 15, 7, 62, 54, 46, 38,
+ 30, 22, 14, 6, 61, 53, 45, 37,
+ 29, 21, 13, 5, 28, 20, 12, 4
];
// Permuted Choice 2 constants
var PC2 = [
- 14, 17, 11, 24, 1, 5,
- 3, 28, 15, 6, 21, 10,
- 23, 19, 12, 4, 26, 8,
- 16, 7, 27, 20, 13, 2,
+ 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,
@@ -4920,11 +4922,10 @@ CryptoJS.pad.NoPadding = {
];
// Cumulative bit shift constants
- var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
+ var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
// SBOXes and round permutation constants
- var SBOX_P = [
- {
+ var SBOX_P = [{
0x0: 0x808200,
0x10000000: 0x8000,
0x20000000: 0x808002,
@@ -5464,7 +5465,7 @@ CryptoJS.pad.NoPadding = {
* DES block cipher algorithm.
*/
var DES = C_algo.DES = BlockCipher.extend({
- _doReset: function () {
+ _doReset: function() {
// Shortcuts
var key = this._key;
var keyWords = key.words;
@@ -5511,25 +5512,25 @@ CryptoJS.pad.NoPadding = {
}
},
- encryptBlock: function (M, offset) {
+ encryptBlock: function(M, offset) {
this._doCryptBlock(M, offset, this._subKeys);
},
- decryptBlock: function (M, offset) {
+ decryptBlock: function(M, offset) {
this._doCryptBlock(M, offset, this._invSubKeys);
},
- _doCryptBlock: function (M, offset, subKeys) {
+ _doCryptBlock: function(M, offset, subKeys) {
// Get input
this._lBlock = M[offset];
this._rBlock = M[offset + 1];
// Initial permutation
- exchangeLR.call(this, 4, 0x0f0f0f0f);
+ exchangeLR.call(this, 4, 0x0f0f0f0f);
exchangeLR.call(this, 16, 0x0000ffff);
- exchangeRL.call(this, 2, 0x33333333);
- exchangeRL.call(this, 8, 0x00ff00ff);
- exchangeLR.call(this, 1, 0x55555555);
+ exchangeRL.call(this, 2, 0x33333333);
+ exchangeRL.call(this, 8, 0x00ff00ff);
+ exchangeLR.call(this, 1, 0x55555555);
// Rounds
for (var round = 0; round < 16; round++) {
@@ -5553,22 +5554,22 @@ CryptoJS.pad.NoPadding = {
this._rBlock = t;
// Final permutation
- exchangeLR.call(this, 1, 0x55555555);
- exchangeRL.call(this, 8, 0x00ff00ff);
- exchangeRL.call(this, 2, 0x33333333);
+ exchangeLR.call(this, 1, 0x55555555);
+ exchangeRL.call(this, 8, 0x00ff00ff);
+ exchangeRL.call(this, 2, 0x33333333);
exchangeLR.call(this, 16, 0x0000ffff);
- exchangeLR.call(this, 4, 0x0f0f0f0f);
+ exchangeLR.call(this, 4, 0x0f0f0f0f);
// Set output
M[offset] = this._lBlock;
M[offset + 1] = this._rBlock;
},
- keySize: 64/32,
+ keySize: 64 / 32,
- ivSize: 64/32,
+ ivSize: 64 / 32,
- blockSize: 64/32
+ blockSize: 64 / 32
});
// Swap bits across the left and right words
@@ -5598,7 +5599,7 @@ CryptoJS.pad.NoPadding = {
* Triple-DES block cipher algorithm.
*/
var TripleDES = C_algo.TripleDES = BlockCipher.extend({
- _doReset: function () {
+ _doReset: function() {
// Shortcuts
var key = this._key;
var keyWords = key.words;
@@ -5618,23 +5619,23 @@ CryptoJS.pad.NoPadding = {
this._des3 = DES.createEncryptor(WordArray.create(key3));
},
- encryptBlock: function (M, offset) {
+ encryptBlock: function(M, offset) {
this._des1.encryptBlock(M, offset);
this._des2.decryptBlock(M, offset);
this._des3.encryptBlock(M, offset);
},
- decryptBlock: function (M, offset) {
+ decryptBlock: function(M, offset) {
this._des3.decryptBlock(M, offset);
this._des2.encryptBlock(M, offset);
this._des1.decryptBlock(M, offset);
},
- keySize: 192/32,
+ keySize: 192 / 32,
- ivSize: 64/32,
+ ivSize: 64 / 32,
- blockSize: 64/32
+ blockSize: 64 / 32
});
/**
@@ -5658,7 +5659,7 @@ CryptoJS.pad.NoPadding = {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -5669,7 +5670,7 @@ CryptoJS.pad.NoPadding = {
* RC4 stream cipher algorithm.
*/
var RC4 = C_algo.RC4 = StreamCipher.extend({
- _doReset: function () {
+ _doReset: function() {
// Shortcuts
var key = this._key;
var keyWords = key.words;
@@ -5698,11 +5699,11 @@ CryptoJS.pad.NoPadding = {
this._i = this._j = 0;
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
M[offset] ^= generateKeystreamWord.call(this);
},
- keySize: 256/32,
+ keySize: 256 / 32,
ivSize: 0
});
@@ -5757,7 +5758,7 @@ CryptoJS.pad.NoPadding = {
drop: 192
}),
- _doReset: function () {
+ _doReset: function() {
RC4._doReset.call(this);
// Drop
@@ -5786,7 +5787,7 @@ CryptoJS.pad.NoPadding = {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -5794,23 +5795,23 @@ CryptoJS.pad.NoPadding = {
var C_algo = C.algo;
// Reusable objects
- var S = [];
+ var S = [];
var C_ = [];
- var G = [];
+ var G = [];
/**
* Rabbit stream cipher algorithm
*/
var Rabbit = C_algo.Rabbit = StreamCipher.extend({
- _doReset: function () {
+ _doReset: function() {
// Shortcuts
var K = this._key.words;
var iv = this.cfg.iv;
// Swap endian
for (var i = 0; i < 4; i++) {
- K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |
- (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);
+ K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |
+ (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);
}
// Generate initial state values
@@ -5853,7 +5854,7 @@ CryptoJS.pad.NoPadding = {
var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
- var i3 = (i2 << 16) | (i0 & 0x0000ffff);
+ var i3 = (i2 << 16) | (i0 & 0x0000ffff);
// Modify counter values
C[0] ^= i0;
@@ -5872,7 +5873,7 @@ CryptoJS.pad.NoPadding = {
}
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
// Shortcut
var X = this._X;
@@ -5887,17 +5888,17 @@ CryptoJS.pad.NoPadding = {
for (var i = 0; i < 4; i++) {
// Swap endian
- S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
- (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
+ S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
+ (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
// Encrypt
M[offset + i] ^= S[i];
}
},
- blockSize: 128/32,
+ blockSize: 128 / 32,
- ivSize: 64/32
+ ivSize: 64 / 32
});
function nextState() {
@@ -5939,13 +5940,13 @@ CryptoJS.pad.NoPadding = {
// Calculate new state values
X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
- X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
+ X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
- X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
+ X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
- X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
+ X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
- X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
+ X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
}
/**
@@ -5968,7 +5969,7 @@ CryptoJS.pad.NoPadding = {
-(function () {
+(function() {
// Shortcuts
var C = CryptoJS;
var C_lib = C.lib;
@@ -5976,9 +5977,9 @@ CryptoJS.pad.NoPadding = {
var C_algo = C.algo;
// Reusable objects
- var S = [];
+ var S = [];
var C_ = [];
- var G = [];
+ var G = [];
/**
* Rabbit stream cipher algorithm.
@@ -5988,7 +5989,7 @@ CryptoJS.pad.NoPadding = {
* but it does affect its compatibility with other implementations.
*/
var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
- _doReset: function () {
+ _doReset: function() {
// Shortcuts
var K = this._key.words;
var iv = this.cfg.iv;
@@ -6033,7 +6034,7 @@ CryptoJS.pad.NoPadding = {
var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
- var i3 = (i2 << 16) | (i0 & 0x0000ffff);
+ var i3 = (i2 << 16) | (i0 & 0x0000ffff);
// Modify counter values
C[0] ^= i0;
@@ -6052,7 +6053,7 @@ CryptoJS.pad.NoPadding = {
}
},
- _doProcessBlock: function (M, offset) {
+ _doProcessBlock: function(M, offset) {
// Shortcut
var X = this._X;
@@ -6067,17 +6068,17 @@ CryptoJS.pad.NoPadding = {
for (var i = 0; i < 4; i++) {
// Swap endian
- S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
- (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
+ S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
+ (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
// Encrypt
M[offset + i] ^= S[i];
}
},
- blockSize: 128/32,
+ blockSize: 128 / 32,
- ivSize: 64/32
+ ivSize: 64 / 32
});
function nextState() {
@@ -6119,13 +6120,13 @@ CryptoJS.pad.NoPadding = {
// Calculate new state values
X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
- X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
+ X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
- X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
+ X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
- X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
+ X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
- X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
+ X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
}
/**
@@ -6137,4 +6138,4 @@ CryptoJS.pad.NoPadding = {
* var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
*/
C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
-}());
+}());
\ No newline at end of file
diff --git a/JS/crypto-js.js b/JS/crypto-js.js
new file mode 100644
index 0000000..0dd3ca8
--- /dev/null
+++ b/JS/crypto-js.js
@@ -0,0 +1,6192 @@
+;
+(function(root, factory) {
+ if (typeof exports === "object") {
+ // CommonJS
+ module.exports = exports = factory();
+ } else if (typeof define === "function" && define.amd) {
+ // AMD
+ define([], factory);
+ } else {
+ // Global (browser)
+ globalThis.CryptoJS = factory();
+ }
+}(this, function() {
+
+ /*globals window, global, require*/
+
+ /**
+ * CryptoJS core components.
+ */
+ var CryptoJS = CryptoJS || (function(Math, undefined) {
+
+ var crypto;
+
+ // Native crypto from window (Browser)
+ if (typeof window !== 'undefined' && window.crypto) {
+ crypto = window.crypto;
+ }
+
+ // Native crypto in web worker (Browser)
+ if (typeof self !== 'undefined' && self.crypto) {
+ crypto = self.crypto;
+ }
+
+ // Native crypto from worker
+ if (typeof globalThis !== 'undefined' && globalThis.crypto) {
+ crypto = globalThis.crypto;
+ }
+
+ // Native (experimental IE 11) crypto from window (Browser)
+ if (!crypto && typeof window !== 'undefined' && window.msCrypto) {
+ crypto = window.msCrypto;
+ }
+
+ // Native crypto from global (NodeJS)
+ if (!crypto && typeof global !== 'undefined' && global.crypto) {
+ crypto = global.crypto;
+ }
+
+ // Native crypto import via require (NodeJS)
+ if (!crypto && typeof require === 'function') {
+ try {
+ crypto = require('crypto');
+ } catch (err) {}
+ }
+
+ /*
+ * Cryptographically secure pseudorandom number generator
+ *
+ * As Math.random() is cryptographically not safe to use
+ */
+ var cryptoSecureRandomInt = function() {
+ if (crypto) {
+ // Use getRandomValues method (Browser)
+ if (typeof crypto.getRandomValues === 'function') {
+ try {
+ return crypto.getRandomValues(new Uint32Array(1))[0];
+ } catch (err) {}
+ }
+
+ // Use randomBytes method (NodeJS)
+ if (typeof crypto.randomBytes === 'function') {
+ try {
+ return crypto.randomBytes(4).readInt32LE();
+ } catch (err) {}
+ }
+ }
+
+ throw new Error('Native crypto module could not be used to get secure random number.');
+ };
+
+ /*
+ * Local polyfill of Object.create
+
+ */
+ var create = Object.create || (function() {
+ function F() {}
+
+ return function(obj) {
+ var subtype;
+
+ F.prototype = obj;
+
+ subtype = new F();
+
+ F.prototype = null;
+
+ return subtype;
+ };
+ }());
+
+ /**
+ * CryptoJS namespace.
+ */
+ var C = {};
+
+ /**
+ * Library namespace.
+ */
+ var C_lib = C.lib = {};
+
+ /**
+ * Base object for prototypal inheritance.
+ */
+ var Base = C_lib.Base = (function() {
+
+
+ return {
+ /**
+ * Creates a new object that inherits from this object.
+ *
+ * @param {Object} overrides Properties to copy into the new object.
+ *
+ * @return {Object} The new object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var MyType = CryptoJS.lib.Base.extend({
+ * field: 'value',
+ *
+ * method: function () {
+ * }
+ * });
+ */
+ extend: function(overrides) {
+ // Spawn
+ var subtype = create(this);
+
+ // Augment
+ if (overrides) {
+ subtype.mixIn(overrides);
+ }
+
+ // Create default initializer
+ if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
+ subtype.init = function() {
+ subtype.$super.init.apply(this, arguments);
+ };
+ }
+
+ // Initializer's prototype is the subtype object
+ subtype.init.prototype = subtype;
+
+ // Reference supertype
+ subtype.$super = this;
+
+ return subtype;
+ },
+
+ /**
+ * Extends this object and runs the init method.
+ * Arguments to create() will be passed to init().
+ *
+ * @return {Object} The new object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var instance = MyType.create();
+ */
+ create: function() {
+ var instance = this.extend();
+ instance.init.apply(instance, arguments);
+
+ return instance;
+ },
+
+ /**
+ * Initializes a newly created object.
+ * Override this method to add some logic when your objects are created.
+ *
+ * @example
+ *
+ * var MyType = CryptoJS.lib.Base.extend({
+ * init: function () {
+ * // ...
+ * }
+ * });
+ */
+ init: function() {},
+
+ /**
+ * Copies properties into this object.
+ *
+ * @param {Object} properties The properties to mix in.
+ *
+ * @example
+ *
+ * MyType.mixIn({
+ * field: 'value'
+ * });
+ */
+ mixIn: function(properties) {
+ for (var propertyName in properties) {
+ if (properties.hasOwnProperty(propertyName)) {
+ this[propertyName] = properties[propertyName];
+ }
+ }
+
+ // IE won't copy toString using the loop above
+ if (properties.hasOwnProperty('toString')) {
+ this.toString = properties.toString;
+ }
+ },
+
+ /**
+ * Creates a copy of this object.
+ *
+ * @return {Object} The clone.
+ *
+ * @example
+ *
+ * var clone = instance.clone();
+ */
+ clone: function() {
+ return this.init.prototype.extend(this);
+ }
+ };
+ }());
+
+ /**
+ * An array of 32-bit words.
+ *
+ * @property {Array} words The array of 32-bit words.
+ * @property {number} sigBytes The number of significant bytes in this word array.
+ */
+ var WordArray = C_lib.WordArray = Base.extend({
+ /**
+ * Initializes a newly created word array.
+ *
+ * @param {Array} words (Optional) An array of 32-bit words.
+ * @param {number} sigBytes (Optional) The number of significant bytes in the words.
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.lib.WordArray.create();
+ * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
+ * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
+ */
+ init: function(words, sigBytes) {
+ words = this.words = words || [];
+
+ if (sigBytes != undefined) {
+ this.sigBytes = sigBytes;
+ } else {
+ this.sigBytes = words.length * 4;
+ }
+ },
+
+ /**
+ * Converts this word array to a string.
+ *
+ * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
+ *
+ * @return {string} The stringified word array.
+ *
+ * @example
+ *
+ * var string = wordArray + '';
+ * var string = wordArray.toString();
+ * var string = wordArray.toString(CryptoJS.enc.Utf8);
+ */
+ toString: function(encoder) {
+ return (encoder || Hex).stringify(this);
+ },
+
+ /**
+ * Concatenates a word array to this word array.
+ *
+ * @param {WordArray} wordArray The word array to append.
+ *
+ * @return {WordArray} This word array.
+ *
+ * @example
+ *
+ * wordArray1.concat(wordArray2);
+ */
+ concat: function(wordArray) {
+ // Shortcuts
+ var thisWords = this.words;
+ var thatWords = wordArray.words;
+ var thisSigBytes = this.sigBytes;
+ var thatSigBytes = wordArray.sigBytes;
+
+ // Clamp excess bits
+ this.clamp();
+
+ // Concat
+ if (thisSigBytes % 4) {
+ // Copy one byte at a time
+ for (var i = 0; i < thatSigBytes; i++) {
+ var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);
+ }
+ } else {
+ // Copy one word at a time
+ for (var j = 0; j < thatSigBytes; j += 4) {
+ thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];
+ }
+ }
+ this.sigBytes += thatSigBytes;
+
+ // Chainable
+ return this;
+ },
+
+ /**
+ * Removes insignificant bits.
+ *
+ * @example
+ *
+ * wordArray.clamp();
+ */
+ clamp: function() {
+ // Shortcuts
+ var words = this.words;
+ var sigBytes = this.sigBytes;
+
+ // Clamp
+ words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);
+ words.length = Math.ceil(sigBytes / 4);
+ },
+
+ /**
+ * Creates a copy of this word array.
+ *
+ * @return {WordArray} The clone.
+ *
+ * @example
+ *
+ * var clone = wordArray.clone();
+ */
+ clone: function() {
+ var clone = Base.clone.call(this);
+ clone.words = this.words.slice(0);
+
+ return clone;
+ },
+
+ /**
+ * Creates a word array filled with random bytes.
+ *
+ * @param {number} nBytes The number of random bytes to generate.
+ *
+ * @return {WordArray} The random word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.lib.WordArray.random(16);
+ */
+ random: function(nBytes) {
+ var words = [];
+
+ for (var i = 0; i < nBytes; i += 4) {
+ words.push(cryptoSecureRandomInt());
+ }
+
+ return new WordArray.init(words, nBytes);
+ }
+ });
+
+ /**
+ * Encoder namespace.
+ */
+ var C_enc = C.enc = {};
+
+ /**
+ * Hex encoding strategy.
+ */
+ var Hex = C_enc.Hex = {
+ /**
+ * Converts a word array to a hex string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The hex string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hexString = CryptoJS.enc.Hex.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+
+ // Convert
+ var hexChars = [];
+ for (var i = 0; i < sigBytes; i++) {
+ var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ hexChars.push((bite >>> 4).toString(16));
+ hexChars.push((bite & 0x0f).toString(16));
+ }
+
+ return hexChars.join('');
+ },
+
+ /**
+ * Converts a hex string to a word array.
+ *
+ * @param {string} hexStr The hex string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Hex.parse(hexString);
+ */
+ parse: function(hexStr) {
+ // Shortcut
+ var hexStrLength = hexStr.length;
+
+ // Convert
+ var words = [];
+ for (var i = 0; i < hexStrLength; i += 2) {
+ words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);
+ }
+
+ return new WordArray.init(words, hexStrLength / 2);
+ }
+ };
+
+ /**
+ * Latin1 encoding strategy.
+ */
+ var Latin1 = C_enc.Latin1 = {
+ /**
+ * Converts a word array to a Latin1 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The Latin1 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+
+ // Convert
+ var latin1Chars = [];
+ for (var i = 0; i < sigBytes; i++) {
+ var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ latin1Chars.push(String.fromCharCode(bite));
+ }
+
+ return latin1Chars.join('');
+ },
+
+ /**
+ * Converts a Latin1 string to a word array.
+ *
+ * @param {string} latin1Str The Latin1 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
+ */
+ parse: function(latin1Str) {
+ // Shortcut
+ var latin1StrLength = latin1Str.length;
+
+ // Convert
+ var words = [];
+ for (var i = 0; i < latin1StrLength; i++) {
+ words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
+ }
+
+ return new WordArray.init(words, latin1StrLength);
+ }
+ };
+
+ /**
+ * UTF-8 encoding strategy.
+ */
+ var Utf8 = C_enc.Utf8 = {
+ /**
+ * Converts a word array to a UTF-8 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-8 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ try {
+ return decodeURIComponent(escape(Latin1.stringify(wordArray)));
+ } catch (e) {
+ throw new Error('Malformed UTF-8 data');
+ }
+ },
+
+ /**
+ * Converts a UTF-8 string to a word array.
+ *
+ * @param {string} utf8Str The UTF-8 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
+ */
+ parse: function(utf8Str) {
+ return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
+ }
+ };
+
+ /**
+ * Abstract buffered block algorithm template.
+ *
+ * The property blockSize must be implemented in a concrete subtype.
+ *
+ * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0
+ */
+ var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
+ /**
+ * Resets this block algorithm's data buffer to its initial state.
+ *
+ * @example
+ *
+ * bufferedBlockAlgorithm.reset();
+ */
+ reset: function() {
+ // Initial values
+ this._data = new WordArray.init();
+ this._nDataBytes = 0;
+ },
+
+ /**
+ * Adds new data to this block algorithm's buffer.
+ *
+ * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
+ *
+ * @example
+ *
+ * bufferedBlockAlgorithm._append('data');
+ * bufferedBlockAlgorithm._append(wordArray);
+ */
+ _append: function(data) {
+ // Convert string to WordArray, else assume WordArray already
+ if (typeof data == 'string') {
+ data = Utf8.parse(data);
+ }
+
+ // Append
+ this._data.concat(data);
+ this._nDataBytes += data.sigBytes;
+ },
+
+ /**
+ * Processes available data blocks.
+ *
+ * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
+ *
+ * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
+ *
+ * @return {WordArray} The processed data.
+ *
+ * @example
+ *
+ * var processedData = bufferedBlockAlgorithm._process();
+ * var processedData = bufferedBlockAlgorithm._process(!!'flush');
+ */
+ _process: function(doFlush) {
+ var processedWords;
+
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+ var dataSigBytes = data.sigBytes;
+ var blockSize = this.blockSize;
+ var blockSizeBytes = blockSize * 4;
+
+ // Count blocks ready
+ var nBlocksReady = dataSigBytes / blockSizeBytes;
+ if (doFlush) {
+ // Round up to include partial blocks
+ nBlocksReady = Math.ceil(nBlocksReady);
+ } else {
+ // Round down to include only full blocks,
+ // less the number of blocks that must remain in the buffer
+ nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
+ }
+
+ // Count words ready
+ var nWordsReady = nBlocksReady * blockSize;
+
+ // Count bytes ready
+ var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);
+
+ // Process blocks
+ if (nWordsReady) {
+ for (var offset = 0; offset < nWordsReady; offset += blockSize) {
+ // Perform concrete-algorithm logic
+ this._doProcessBlock(dataWords, offset);
+ }
+
+ // Remove processed words
+ processedWords = dataWords.splice(0, nWordsReady);
+ data.sigBytes -= nBytesReady;
+ }
+
+ // Return processed words
+ return new WordArray.init(processedWords, nBytesReady);
+ },
+
+ /**
+ * Creates a copy of this object.
+ *
+ * @return {Object} The clone.
+ *
+ * @example
+ *
+ * var clone = bufferedBlockAlgorithm.clone();
+ */
+ clone: function() {
+ var clone = Base.clone.call(this);
+ clone._data = this._data.clone();
+
+ return clone;
+ },
+
+ _minBufferSize: 0
+ });
+
+ /**
+ * Abstract hasher template.
+ *
+ * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)
+ */
+ var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
+ /**
+ * Configuration options.
+ */
+ cfg: Base.extend(),
+
+ /**
+ * Initializes a newly created hasher.
+ *
+ * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
+ *
+ * @example
+ *
+ * var hasher = CryptoJS.algo.SHA256.create();
+ */
+ init: function(cfg) {
+ // Apply config defaults
+ this.cfg = this.cfg.extend(cfg);
+
+ // Set initial values
+ this.reset();
+ },
+
+ /**
+ * Resets this hasher to its initial state.
+ *
+ * @example
+ *
+ * hasher.reset();
+ */
+ reset: function() {
+ // Reset data buffer
+ BufferedBlockAlgorithm.reset.call(this);
+
+ // Perform concrete-hasher logic
+ this._doReset();
+ },
+
+ /**
+ * Updates this hasher with a message.
+ *
+ * @param {WordArray|string} messageUpdate The message to append.
+ *
+ * @return {Hasher} This hasher.
+ *
+ * @example
+ *
+ * hasher.update('message');
+ * hasher.update(wordArray);
+ */
+ update: function(messageUpdate) {
+ // Append
+ this._append(messageUpdate);
+
+ // Update the hash
+ this._process();
+
+ // Chainable
+ return this;
+ },
+
+ /**
+ * Finalizes the hash computation.
+ * Note that the finalize operation is effectively a destructive, read-once operation.
+ *
+ * @param {WordArray|string} messageUpdate (Optional) A final message update.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @example
+ *
+ * var hash = hasher.finalize();
+ * var hash = hasher.finalize('message');
+ * var hash = hasher.finalize(wordArray);
+ */
+ finalize: function(messageUpdate) {
+ // Final message update
+ if (messageUpdate) {
+ this._append(messageUpdate);
+ }
+
+ // Perform concrete-hasher logic
+ var hash = this._doFinalize();
+
+ return hash;
+ },
+
+ blockSize: 512 / 32,
+
+ /**
+ * Creates a shortcut function to a hasher's object interface.
+ *
+ * @param {Hasher} hasher The hasher to create a helper for.
+ *
+ * @return {Function} The shortcut function.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
+ */
+ _createHelper: function(hasher) {
+ return function(message, cfg) {
+ return new hasher.init(cfg).finalize(message);
+ };
+ },
+
+ /**
+ * Creates a shortcut function to the HMAC's object interface.
+ *
+ * @param {Hasher} hasher The hasher to use in this HMAC helper.
+ *
+ * @return {Function} The shortcut function.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
+ */
+ _createHmacHelper: function(hasher) {
+ return function(message, key) {
+ return new C_algo.HMAC.init(hasher, key).finalize(message);
+ };
+ }
+ });
+
+ /**
+ * Algorithm namespace.
+ */
+ var C_algo = C.algo = {};
+
+ return C;
+ }(Math));
+
+
+ (function(undefined) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var X32WordArray = C_lib.WordArray;
+
+ /**
+ * x64 namespace.
+ */
+ var C_x64 = C.x64 = {};
+
+ /**
+ * A 64-bit word.
+ */
+ var X64Word = C_x64.Word = Base.extend({
+ /**
+ * Initializes a newly created 64-bit word.
+ *
+ * @param {number} high The high 32 bits.
+ * @param {number} low The low 32 bits.
+ *
+ * @example
+ *
+ * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);
+ */
+ init: function(high, low) {
+ this.high = high;
+ this.low = low;
+ }
+
+ /**
+ * Bitwise NOTs this word.
+ *
+ * @return {X64Word} A new x64-Word object after negating.
+ *
+ * @example
+ *
+ * var negated = x64Word.not();
+ */
+ // not: function () {
+ // var high = ~this.high;
+ // var low = ~this.low;
+
+ // return X64Word.create(high, low);
+ // },
+
+ /**
+ * Bitwise ANDs this word with the passed word.
+ *
+ * @param {X64Word} word The x64-Word to AND with this word.
+ *
+ * @return {X64Word} A new x64-Word object after ANDing.
+ *
+ * @example
+ *
+ * var anded = x64Word.and(anotherX64Word);
+ */
+ // and: function (word) {
+ // var high = this.high & word.high;
+ // var low = this.low & word.low;
+
+ // return X64Word.create(high, low);
+ // },
+
+ /**
+ * Bitwise ORs this word with the passed word.
+ *
+ * @param {X64Word} word The x64-Word to OR with this word.
+ *
+ * @return {X64Word} A new x64-Word object after ORing.
+ *
+ * @example
+ *
+ * var ored = x64Word.or(anotherX64Word);
+ */
+ // or: function (word) {
+ // var high = this.high | word.high;
+ // var low = this.low | word.low;
+
+ // return X64Word.create(high, low);
+ // },
+
+ /**
+ * Bitwise XORs this word with the passed word.
+ *
+ * @param {X64Word} word The x64-Word to XOR with this word.
+ *
+ * @return {X64Word} A new x64-Word object after XORing.
+ *
+ * @example
+ *
+ * var xored = x64Word.xor(anotherX64Word);
+ */
+ // xor: function (word) {
+ // var high = this.high ^ word.high;
+ // var low = this.low ^ word.low;
+
+ // return X64Word.create(high, low);
+ // },
+
+ /**
+ * Shifts this word n bits to the left.
+ *
+ * @param {number} n The number of bits to shift.
+ *
+ * @return {X64Word} A new x64-Word object after shifting.
+ *
+ * @example
+ *
+ * var shifted = x64Word.shiftL(25);
+ */
+ // shiftL: function (n) {
+ // if (n < 32) {
+ // var high = (this.high << n) | (this.low >>> (32 - n));
+ // var low = this.low << n;
+ // } else {
+ // var high = this.low << (n - 32);
+ // var low = 0;
+ // }
+
+ // return X64Word.create(high, low);
+ // },
+
+ /**
+ * Shifts this word n bits to the right.
+ *
+ * @param {number} n The number of bits to shift.
+ *
+ * @return {X64Word} A new x64-Word object after shifting.
+ *
+ * @example
+ *
+ * var shifted = x64Word.shiftR(7);
+ */
+ // shiftR: function (n) {
+ // if (n < 32) {
+ // var low = (this.low >>> n) | (this.high << (32 - n));
+ // var high = this.high >>> n;
+ // } else {
+ // var low = this.high >>> (n - 32);
+ // var high = 0;
+ // }
+
+ // return X64Word.create(high, low);
+ // },
+
+ /**
+ * Rotates this word n bits to the left.
+ *
+ * @param {number} n The number of bits to rotate.
+ *
+ * @return {X64Word} A new x64-Word object after rotating.
+ *
+ * @example
+ *
+ * var rotated = x64Word.rotL(25);
+ */
+ // rotL: function (n) {
+ // return this.shiftL(n).or(this.shiftR(64 - n));
+ // },
+
+ /**
+ * Rotates this word n bits to the right.
+ *
+ * @param {number} n The number of bits to rotate.
+ *
+ * @return {X64Word} A new x64-Word object after rotating.
+ *
+ * @example
+ *
+ * var rotated = x64Word.rotR(7);
+ */
+ // rotR: function (n) {
+ // return this.shiftR(n).or(this.shiftL(64 - n));
+ // },
+
+ /**
+ * Adds this word with the passed word.
+ *
+ * @param {X64Word} word The x64-Word to add with this word.
+ *
+ * @return {X64Word} A new x64-Word object after adding.
+ *
+ * @example
+ *
+ * var added = x64Word.add(anotherX64Word);
+ */
+ // add: function (word) {
+ // var low = (this.low + word.low) | 0;
+ // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
+ // var high = (this.high + word.high + carry) | 0;
+
+ // return X64Word.create(high, low);
+ // }
+ });
+
+ /**
+ * An array of 64-bit words.
+ *
+ * @property {Array} words The array of CryptoJS.x64.Word objects.
+ * @property {number} sigBytes The number of significant bytes in this word array.
+ */
+ var X64WordArray = C_x64.WordArray = Base.extend({
+ /**
+ * Initializes a newly created word array.
+ *
+ * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
+ * @param {number} sigBytes (Optional) The number of significant bytes in the words.
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.x64.WordArray.create();
+ *
+ * var wordArray = CryptoJS.x64.WordArray.create([
+ * CryptoJS.x64.Word.create(0x00010203, 0x04050607),
+ * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
+ * ]);
+ *
+ * var wordArray = CryptoJS.x64.WordArray.create([
+ * CryptoJS.x64.Word.create(0x00010203, 0x04050607),
+ * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
+ * ], 10);
+ */
+ init: function(words, sigBytes) {
+ words = this.words = words || [];
+
+ if (sigBytes != undefined) {
+ this.sigBytes = sigBytes;
+ } else {
+ this.sigBytes = words.length * 8;
+ }
+ },
+
+ /**
+ * Converts this 64-bit word array to a 32-bit word array.
+ *
+ * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.
+ *
+ * @example
+ *
+ * var x32WordArray = x64WordArray.toX32();
+ */
+ toX32: function() {
+ // Shortcuts
+ var x64Words = this.words;
+ var x64WordsLength = x64Words.length;
+
+ // Convert
+ var x32Words = [];
+ for (var i = 0; i < x64WordsLength; i++) {
+ var x64Word = x64Words[i];
+ x32Words.push(x64Word.high);
+ x32Words.push(x64Word.low);
+ }
+
+ return X32WordArray.create(x32Words, this.sigBytes);
+ },
+
+ /**
+ * Creates a copy of this word array.
+ *
+ * @return {X64WordArray} The clone.
+ *
+ * @example
+ *
+ * var clone = x64WordArray.clone();
+ */
+ clone: function() {
+ var clone = Base.clone.call(this);
+
+ // Clone "words" array
+ var words = clone.words = this.words.slice(0);
+
+ // Clone each X64Word object
+ var wordsLength = words.length;
+ for (var i = 0; i < wordsLength; i++) {
+ words[i] = words[i].clone();
+ }
+
+ return clone;
+ }
+ });
+ }());
+
+
+ (function() {
+ // Check if typed arrays are supported
+ if (typeof ArrayBuffer != 'function') {
+ return;
+ }
+
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+
+ // Reference original init
+ var superInit = WordArray.init;
+
+ // Augment WordArray.init to handle typed arrays
+ var subInit = WordArray.init = function(typedArray) {
+ // Convert buffers to uint8
+ if (typedArray instanceof ArrayBuffer) {
+ typedArray = new Uint8Array(typedArray);
+ }
+
+ // Convert other array views to uint8
+ if (
+ typedArray instanceof Int8Array ||
+ (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) ||
+ typedArray instanceof Int16Array ||
+ typedArray instanceof Uint16Array ||
+ typedArray instanceof Int32Array ||
+ typedArray instanceof Uint32Array ||
+ typedArray instanceof Float32Array ||
+ typedArray instanceof Float64Array
+ ) {
+ typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
+ }
+
+ // Handle Uint8Array
+ if (typedArray instanceof Uint8Array) {
+ // Shortcut
+ var typedArrayByteLength = typedArray.byteLength;
+
+ // Extract bytes
+ var words = [];
+ for (var i = 0; i < typedArrayByteLength; i++) {
+ words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);
+ }
+
+ // Initialize this word array
+ superInit.call(this, words, typedArrayByteLength);
+ } else {
+ // Else call normal init
+ superInit.apply(this, arguments);
+ }
+ };
+
+ subInit.prototype = WordArray;
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_enc = C.enc;
+
+ /**
+ * UTF-16 BE encoding strategy.
+ */
+ var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
+ /**
+ * Converts a word array to a UTF-16 BE string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-16 BE string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+
+ // Convert
+ var utf16Chars = [];
+ for (var i = 0; i < sigBytes; i += 2) {
+ var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;
+ utf16Chars.push(String.fromCharCode(codePoint));
+ }
+
+ return utf16Chars.join('');
+ },
+
+ /**
+ * Converts a UTF-16 BE string to a word array.
+ *
+ * @param {string} utf16Str The UTF-16 BE string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
+ */
+ parse: function(utf16Str) {
+ // Shortcut
+ var utf16StrLength = utf16Str.length;
+
+ // Convert
+ var words = [];
+ for (var i = 0; i < utf16StrLength; i++) {
+ words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);
+ }
+
+ return WordArray.create(words, utf16StrLength * 2);
+ }
+ };
+
+ /**
+ * UTF-16 LE encoding strategy.
+ */
+ C_enc.Utf16LE = {
+ /**
+ * Converts a word array to a UTF-16 LE string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-16 LE string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+
+ // Convert
+ var utf16Chars = [];
+ for (var i = 0; i < sigBytes; i += 2) {
+ var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);
+ utf16Chars.push(String.fromCharCode(codePoint));
+ }
+
+ return utf16Chars.join('');
+ },
+
+ /**
+ * Converts a UTF-16 LE string to a word array.
+ *
+ * @param {string} utf16Str The UTF-16 LE string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
+ */
+ parse: function(utf16Str) {
+ // Shortcut
+ var utf16StrLength = utf16Str.length;
+
+ // Convert
+ var words = [];
+ for (var i = 0; i < utf16StrLength; i++) {
+ words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));
+ }
+
+ return WordArray.create(words, utf16StrLength * 2);
+ }
+ };
+
+ function swapEndian(word) {
+ return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);
+ }
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_enc = C.enc;
+
+ /**
+ * Base64 encoding strategy.
+ */
+ var Base64 = C_enc.Base64 = {
+ /**
+ * Converts a word array to a Base64 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The Base64 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var map = this._map;
+
+ // Clamp excess bits
+ wordArray.clamp();
+
+ // Convert
+ var base64Chars = [];
+ for (var i = 0; i < sigBytes; i += 3) {
+ var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
+ var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
+
+ var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
+
+ for (var j = 0;
+ (j < 4) && (i + j * 0.75 < sigBytes); j++) {
+ base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
+ }
+ }
+
+ // Add padding
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ while (base64Chars.length % 4) {
+ base64Chars.push(paddingChar);
+ }
+ }
+
+ return base64Chars.join('');
+ },
+
+ /**
+ * Converts a Base64 string to a word array.
+ *
+ * @param {string} base64Str The Base64 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Base64.parse(base64String);
+ */
+ parse: function(base64Str) {
+ // Shortcuts
+ var base64StrLength = base64Str.length;
+ var map = this._map;
+ var reverseMap = this._reverseMap;
+
+ if (!reverseMap) {
+ reverseMap = this._reverseMap = [];
+ for (var j = 0; j < map.length; j++) {
+ reverseMap[map.charCodeAt(j)] = j;
+ }
+ }
+
+ // Ignore padding
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ var paddingIndex = base64Str.indexOf(paddingChar);
+ if (paddingIndex !== -1) {
+ base64StrLength = paddingIndex;
+ }
+ }
+
+ // Convert
+ return parseLoop(base64Str, base64StrLength, reverseMap);
+
+ },
+
+ _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
+ };
+
+ function parseLoop(base64Str, base64StrLength, reverseMap) {
+ var words = [];
+ var nBytes = 0;
+ for (var i = 0; i < base64StrLength; i++) {
+ if (i % 4) {
+ var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
+ var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
+ var bitsCombined = bits1 | bits2;
+ words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
+ nBytes++;
+ }
+ }
+ return WordArray.create(words, nBytes);
+ }
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_enc = C.enc;
+
+ /**
+ * Base64url encoding strategy.
+ */
+ var Base64url = C_enc.Base64url = {
+ /**
+ * Converts a word array to a Base64url string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @param {boolean} urlSafe Whether to use url safe
+ *
+ * @return {string} The Base64url string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);
+ */
+ stringify: function(wordArray, urlSafe = true) {
+ // Shortcuts
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var map = urlSafe ? this._safe_map : this._map;
+
+ // Clamp excess bits
+ wordArray.clamp();
+
+ // Convert
+ var base64Chars = [];
+ for (var i = 0; i < sigBytes; i += 3) {
+ var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
+ var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
+ var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
+
+ var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
+
+ for (var j = 0;
+ (j < 4) && (i + j * 0.75 < sigBytes); j++) {
+ base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
+ }
+ }
+
+ // Add padding
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ while (base64Chars.length % 4) {
+ base64Chars.push(paddingChar);
+ }
+ }
+
+ return base64Chars.join('');
+ },
+
+ /**
+ * Converts a Base64url string to a word array.
+ *
+ * @param {string} base64Str The Base64url string.
+ *
+ * @param {boolean} urlSafe Whether to use url safe
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Base64url.parse(base64String);
+ */
+ parse: function(base64Str, urlSafe = true) {
+ // Shortcuts
+ var base64StrLength = base64Str.length;
+ var map = urlSafe ? this._safe_map : this._map;
+ var reverseMap = this._reverseMap;
+
+ if (!reverseMap) {
+ reverseMap = this._reverseMap = [];
+ for (var j = 0; j < map.length; j++) {
+ reverseMap[map.charCodeAt(j)] = j;
+ }
+ }
+
+ // Ignore padding
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ var paddingIndex = base64Str.indexOf(paddingChar);
+ if (paddingIndex !== -1) {
+ base64StrLength = paddingIndex;
+ }
+ }
+
+ // Convert
+ return parseLoop(base64Str, base64StrLength, reverseMap);
+
+ },
+
+ _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
+ _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
+ };
+
+ function parseLoop(base64Str, base64StrLength, reverseMap) {
+ var words = [];
+ var nBytes = 0;
+ for (var i = 0; i < base64StrLength; i++) {
+ if (i % 4) {
+ var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
+ var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
+ var bitsCombined = bits1 | bits2;
+ words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
+ nBytes++;
+ }
+ }
+ return WordArray.create(words, nBytes);
+ }
+ }());
+
+ (function(Math) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+
+ // Constants table
+ var T = [];
+
+ // Compute constants
+ (function() {
+ for (var i = 0; i < 64; i++) {
+ T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
+ }
+ }());
+
+ /**
+ * MD5 hash algorithm.
+ */
+ var MD5 = C_algo.MD5 = Hasher.extend({
+ _doReset: function() {
+ this._hash = new WordArray.init([
+ 0x67452301, 0xefcdab89,
+ 0x98badcfe, 0x10325476
+ ]);
+ },
+
+ _doProcessBlock: function(M, offset) {
+ // Swap endian
+ for (var i = 0; i < 16; i++) {
+ // Shortcuts
+ var offset_i = offset + i;
+ var M_offset_i = M[offset_i];
+
+ M[offset_i] = (
+ (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
+ (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
+ );
+ }
+
+ // Shortcuts
+ var H = this._hash.words;
+
+ var M_offset_0 = M[offset + 0];
+ var M_offset_1 = M[offset + 1];
+ var M_offset_2 = M[offset + 2];
+ var M_offset_3 = M[offset + 3];
+ var M_offset_4 = M[offset + 4];
+ var M_offset_5 = M[offset + 5];
+ var M_offset_6 = M[offset + 6];
+ var M_offset_7 = M[offset + 7];
+ var M_offset_8 = M[offset + 8];
+ var M_offset_9 = M[offset + 9];
+ var M_offset_10 = M[offset + 10];
+ var M_offset_11 = M[offset + 11];
+ var M_offset_12 = M[offset + 12];
+ var M_offset_13 = M[offset + 13];
+ var M_offset_14 = M[offset + 14];
+ var M_offset_15 = M[offset + 15];
+
+ // Working varialbes
+ var a = H[0];
+ var b = H[1];
+ var c = H[2];
+ var d = H[3];
+
+ // Computation
+ a = FF(a, b, c, d, M_offset_0, 7, T[0]);
+ d = FF(d, a, b, c, M_offset_1, 12, T[1]);
+ c = FF(c, d, a, b, M_offset_2, 17, T[2]);
+ b = FF(b, c, d, a, M_offset_3, 22, T[3]);
+ a = FF(a, b, c, d, M_offset_4, 7, T[4]);
+ d = FF(d, a, b, c, M_offset_5, 12, T[5]);
+ c = FF(c, d, a, b, M_offset_6, 17, T[6]);
+ b = FF(b, c, d, a, M_offset_7, 22, T[7]);
+ a = FF(a, b, c, d, M_offset_8, 7, T[8]);
+ d = FF(d, a, b, c, M_offset_9, 12, T[9]);
+ c = FF(c, d, a, b, M_offset_10, 17, T[10]);
+ b = FF(b, c, d, a, M_offset_11, 22, T[11]);
+ a = FF(a, b, c, d, M_offset_12, 7, T[12]);
+ d = FF(d, a, b, c, M_offset_13, 12, T[13]);
+ c = FF(c, d, a, b, M_offset_14, 17, T[14]);
+ b = FF(b, c, d, a, M_offset_15, 22, T[15]);
+
+ a = GG(a, b, c, d, M_offset_1, 5, T[16]);
+ d = GG(d, a, b, c, M_offset_6, 9, T[17]);
+ c = GG(c, d, a, b, M_offset_11, 14, T[18]);
+ b = GG(b, c, d, a, M_offset_0, 20, T[19]);
+ a = GG(a, b, c, d, M_offset_5, 5, T[20]);
+ d = GG(d, a, b, c, M_offset_10, 9, T[21]);
+ c = GG(c, d, a, b, M_offset_15, 14, T[22]);
+ b = GG(b, c, d, a, M_offset_4, 20, T[23]);
+ a = GG(a, b, c, d, M_offset_9, 5, T[24]);
+ d = GG(d, a, b, c, M_offset_14, 9, T[25]);
+ c = GG(c, d, a, b, M_offset_3, 14, T[26]);
+ b = GG(b, c, d, a, M_offset_8, 20, T[27]);
+ a = GG(a, b, c, d, M_offset_13, 5, T[28]);
+ d = GG(d, a, b, c, M_offset_2, 9, T[29]);
+ c = GG(c, d, a, b, M_offset_7, 14, T[30]);
+ b = GG(b, c, d, a, M_offset_12, 20, T[31]);
+
+ a = HH(a, b, c, d, M_offset_5, 4, T[32]);
+ d = HH(d, a, b, c, M_offset_8, 11, T[33]);
+ c = HH(c, d, a, b, M_offset_11, 16, T[34]);
+ b = HH(b, c, d, a, M_offset_14, 23, T[35]);
+ a = HH(a, b, c, d, M_offset_1, 4, T[36]);
+ d = HH(d, a, b, c, M_offset_4, 11, T[37]);
+ c = HH(c, d, a, b, M_offset_7, 16, T[38]);
+ b = HH(b, c, d, a, M_offset_10, 23, T[39]);
+ a = HH(a, b, c, d, M_offset_13, 4, T[40]);
+ d = HH(d, a, b, c, M_offset_0, 11, T[41]);
+ c = HH(c, d, a, b, M_offset_3, 16, T[42]);
+ b = HH(b, c, d, a, M_offset_6, 23, T[43]);
+ a = HH(a, b, c, d, M_offset_9, 4, T[44]);
+ d = HH(d, a, b, c, M_offset_12, 11, T[45]);
+ c = HH(c, d, a, b, M_offset_15, 16, T[46]);
+ b = HH(b, c, d, a, M_offset_2, 23, T[47]);
+
+ a = II(a, b, c, d, M_offset_0, 6, T[48]);
+ d = II(d, a, b, c, M_offset_7, 10, T[49]);
+ c = II(c, d, a, b, M_offset_14, 15, T[50]);
+ b = II(b, c, d, a, M_offset_5, 21, T[51]);
+ a = II(a, b, c, d, M_offset_12, 6, T[52]);
+ d = II(d, a, b, c, M_offset_3, 10, T[53]);
+ c = II(c, d, a, b, M_offset_10, 15, T[54]);
+ b = II(b, c, d, a, M_offset_1, 21, T[55]);
+ a = II(a, b, c, d, M_offset_8, 6, T[56]);
+ d = II(d, a, b, c, M_offset_15, 10, T[57]);
+ c = II(c, d, a, b, M_offset_6, 15, T[58]);
+ b = II(b, c, d, a, M_offset_13, 21, T[59]);
+ a = II(a, b, c, d, M_offset_4, 6, T[60]);
+ d = II(d, a, b, c, M_offset_11, 10, T[61]);
+ c = II(c, d, a, b, M_offset_2, 15, T[62]);
+ b = II(b, c, d, a, M_offset_9, 21, T[63]);
+
+ // Intermediate hash value
+ H[0] = (H[0] + a) | 0;
+ H[1] = (H[1] + b) | 0;
+ H[2] = (H[2] + c) | 0;
+ H[3] = (H[3] + d) | 0;
+ },
+
+ _doFinalize: function() {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+
+ var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
+ var nBitsTotalL = nBitsTotal;
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (
+ (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)
+ );
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
+ (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)
+ );
+
+ data.sigBytes = (dataWords.length + 1) * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Shortcuts
+ var hash = this._hash;
+ var H = hash.words;
+
+ // Swap endian
+ for (var i = 0; i < 4; i++) {
+ // Shortcut
+ var H_i = H[i];
+
+ H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
+ (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
+ }
+
+ // Return final computed hash
+ return hash;
+ },
+
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ }
+ });
+
+ function FF(a, b, c, d, x, s, t) {
+ var n = a + ((b & c) | (~b & d)) + x + t;
+ return ((n << s) | (n >>> (32 - s))) + b;
+ }
+
+ function GG(a, b, c, d, x, s, t) {
+ var n = a + ((b & d) | (c & ~d)) + x + t;
+ return ((n << s) | (n >>> (32 - s))) + b;
+ }
+
+ function HH(a, b, c, d, x, s, t) {
+ var n = a + (b ^ c ^ d) + x + t;
+ return ((n << s) | (n >>> (32 - s))) + b;
+ }
+
+ function II(a, b, c, d, x, s, t) {
+ var n = a + (c ^ (b | ~d)) + x + t;
+ return ((n << s) | (n >>> (32 - s))) + b;
+ }
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.MD5('message');
+ * var hash = CryptoJS.MD5(wordArray);
+ */
+ C.MD5 = Hasher._createHelper(MD5);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacMD5(message, key);
+ */
+ C.HmacMD5 = Hasher._createHmacHelper(MD5);
+ }(Math));
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+
+ // Reusable object
+ var W = [];
+
+ /**
+ * SHA-1 hash algorithm.
+ */
+ var SHA1 = C_algo.SHA1 = Hasher.extend({
+ _doReset: function() {
+ this._hash = new WordArray.init([
+ 0x67452301, 0xefcdab89,
+ 0x98badcfe, 0x10325476,
+ 0xc3d2e1f0
+ ]);
+ },
+
+ _doProcessBlock: function(M, offset) {
+ // Shortcut
+ var H = this._hash.words;
+
+ // Working variables
+ var a = H[0];
+ var b = H[1];
+ var c = H[2];
+ var d = H[3];
+ var e = H[4];
+
+ // Computation
+ for (var i = 0; i < 80; i++) {
+ if (i < 16) {
+ W[i] = M[offset + i] | 0;
+ } else {
+ var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
+ W[i] = (n << 1) | (n >>> 31);
+ }
+
+ var t = ((a << 5) | (a >>> 27)) + e + W[i];
+ if (i < 20) {
+ t += ((b & c) | (~b & d)) + 0x5a827999;
+ } else if (i < 40) {
+ t += (b ^ c ^ d) + 0x6ed9eba1;
+ } else if (i < 60) {
+ t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;
+ } else /* if (i < 80) */ {
+ t += (b ^ c ^ d) - 0x359d3e2a;
+ }
+
+ e = d;
+ d = c;
+ c = (b << 30) | (b >>> 2);
+ b = a;
+ a = t;
+ }
+
+ // Intermediate hash value
+ H[0] = (H[0] + a) | 0;
+ H[1] = (H[1] + b) | 0;
+ H[2] = (H[2] + c) | 0;
+ H[3] = (H[3] + d) | 0;
+ H[4] = (H[4] + e) | 0;
+ },
+
+ _doFinalize: function() {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
+ data.sigBytes = dataWords.length * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Return final computed hash
+ return this._hash;
+ },
+
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ }
+ });
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.SHA1('message');
+ * var hash = CryptoJS.SHA1(wordArray);
+ */
+ C.SHA1 = Hasher._createHelper(SHA1);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacSHA1(message, key);
+ */
+ C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
+ }());
+
+
+ (function(Math) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+
+ // Initialization and round constants tables
+ var H = [];
+ var K = [];
+
+ // Compute constants
+ (function() {
+ function isPrime(n) {
+ var sqrtN = Math.sqrt(n);
+ for (var factor = 2; factor <= sqrtN; factor++) {
+ if (!(n % factor)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function getFractionalBits(n) {
+ return ((n - (n | 0)) * 0x100000000) | 0;
+ }
+
+ var n = 2;
+ var nPrime = 0;
+ while (nPrime < 64) {
+ if (isPrime(n)) {
+ if (nPrime < 8) {
+ H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));
+ }
+ K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));
+
+ nPrime++;
+ }
+
+ n++;
+ }
+ }());
+
+ // Reusable object
+ var W = [];
+
+ /**
+ * SHA-256 hash algorithm.
+ */
+ var SHA256 = C_algo.SHA256 = Hasher.extend({
+ _doReset: function() {
+ this._hash = new WordArray.init(H.slice(0));
+ },
+
+ _doProcessBlock: function(M, offset) {
+ // Shortcut
+ var H = this._hash.words;
+
+ // Working variables
+ var a = H[0];
+ var b = H[1];
+ var c = H[2];
+ var d = H[3];
+ var e = H[4];
+ var f = H[5];
+ var g = H[6];
+ var h = H[7];
+
+ // Computation
+ for (var i = 0; i < 64; i++) {
+ if (i < 16) {
+ W[i] = M[offset + i] | 0;
+ } else {
+ var gamma0x = W[i - 15];
+ var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^
+ ((gamma0x << 14) | (gamma0x >>> 18)) ^
+ (gamma0x >>> 3);
+
+ var gamma1x = W[i - 2];
+ var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^
+ ((gamma1x << 13) | (gamma1x >>> 19)) ^
+ (gamma1x >>> 10);
+
+ W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
+ }
+
+ var ch = (e & f) ^ (~e & g);
+ var maj = (a & b) ^ (a & c) ^ (b & c);
+
+ var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));
+ var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));
+
+ var t1 = h + sigma1 + ch + K[i] + W[i];
+ var t2 = sigma0 + maj;
+
+ h = g;
+ g = f;
+ f = e;
+ e = (d + t1) | 0;
+ d = c;
+ c = b;
+ b = a;
+ a = (t1 + t2) | 0;
+ }
+
+ // Intermediate hash value
+ H[0] = (H[0] + a) | 0;
+ H[1] = (H[1] + b) | 0;
+ H[2] = (H[2] + c) | 0;
+ H[3] = (H[3] + d) | 0;
+ H[4] = (H[4] + e) | 0;
+ H[5] = (H[5] + f) | 0;
+ H[6] = (H[6] + g) | 0;
+ H[7] = (H[7] + h) | 0;
+ },
+
+ _doFinalize: function() {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
+ data.sigBytes = dataWords.length * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Return final computed hash
+ return this._hash;
+ },
+
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ }
+ });
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.SHA256('message');
+ * var hash = CryptoJS.SHA256(wordArray);
+ */
+ C.SHA256 = Hasher._createHelper(SHA256);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacSHA256(message, key);
+ */
+ C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
+ }(Math));
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_algo = C.algo;
+ var SHA256 = C_algo.SHA256;
+
+ /**
+ * SHA-224 hash algorithm.
+ */
+ var SHA224 = C_algo.SHA224 = SHA256.extend({
+ _doReset: function() {
+ this._hash = new WordArray.init([
+ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
+ 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
+ ]);
+ },
+
+ _doFinalize: function() {
+ var hash = SHA256._doFinalize.call(this);
+
+ hash.sigBytes -= 4;
+
+ return hash;
+ }
+ });
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.SHA224('message');
+ * var hash = CryptoJS.SHA224(wordArray);
+ */
+ C.SHA224 = SHA256._createHelper(SHA224);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacSHA224(message, key);
+ */
+ C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Hasher = C_lib.Hasher;
+ var C_x64 = C.x64;
+ var X64Word = C_x64.Word;
+ var X64WordArray = C_x64.WordArray;
+ var C_algo = C.algo;
+
+ function X64Word_create() {
+ return X64Word.create.apply(X64Word, arguments);
+ }
+
+ // Constants
+ var K = [
+ X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),
+ X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),
+ X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),
+ X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),
+ X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),
+ X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),
+ X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),
+ X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),
+ X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),
+ X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),
+ X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),
+ X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),
+ X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),
+ X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),
+ X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),
+ X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),
+ X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),
+ X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),
+ X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),
+ X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),
+ X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),
+ X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),
+ X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),
+ X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),
+ X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),
+ X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),
+ X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),
+ X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),
+ X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),
+ X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),
+ X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),
+ X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),
+ X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),
+ X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),
+ X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),
+ X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),
+ X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),
+ X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),
+ X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),
+ X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)
+ ];
+
+ // Reusable objects
+ var W = [];
+ (function() {
+ for (var i = 0; i < 80; i++) {
+ W[i] = X64Word_create();
+ }
+ }());
+
+ /**
+ * SHA-512 hash algorithm.
+ */
+ var SHA512 = C_algo.SHA512 = Hasher.extend({
+ _doReset: function() {
+ this._hash = new X64WordArray.init([
+ new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),
+ new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),
+ new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),
+ new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)
+ ]);
+ },
+
+ _doProcessBlock: function(M, offset) {
+ // Shortcuts
+ var H = this._hash.words;
+
+ var H0 = H[0];
+ var H1 = H[1];
+ var H2 = H[2];
+ var H3 = H[3];
+ var H4 = H[4];
+ var H5 = H[5];
+ var H6 = H[6];
+ var H7 = H[7];
+
+ var H0h = H0.high;
+ var H0l = H0.low;
+ var H1h = H1.high;
+ var H1l = H1.low;
+ var H2h = H2.high;
+ var H2l = H2.low;
+ var H3h = H3.high;
+ var H3l = H3.low;
+ var H4h = H4.high;
+ var H4l = H4.low;
+ var H5h = H5.high;
+ var H5l = H5.low;
+ var H6h = H6.high;
+ var H6l = H6.low;
+ var H7h = H7.high;
+ var H7l = H7.low;
+
+ // Working variables
+ var ah = H0h;
+ var al = H0l;
+ var bh = H1h;
+ var bl = H1l;
+ var ch = H2h;
+ var cl = H2l;
+ var dh = H3h;
+ var dl = H3l;
+ var eh = H4h;
+ var el = H4l;
+ var fh = H5h;
+ var fl = H5l;
+ var gh = H6h;
+ var gl = H6l;
+ var hh = H7h;
+ var hl = H7l;
+
+ // Rounds
+ for (var i = 0; i < 80; i++) {
+ var Wil;
+ var Wih;
+
+ // Shortcut
+ var Wi = W[i];
+
+ // Extend message
+ if (i < 16) {
+ Wih = Wi.high = M[offset + i * 2] | 0;
+ Wil = Wi.low = M[offset + i * 2 + 1] | 0;
+ } else {
+ // Gamma0
+ var gamma0x = W[i - 15];
+ var gamma0xh = gamma0x.high;
+ var gamma0xl = gamma0x.low;
+ var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);
+ var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));
+
+ // Gamma1
+ var gamma1x = W[i - 2];
+ var gamma1xh = gamma1x.high;
+ var gamma1xl = gamma1x.low;
+ var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);
+ var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));
+
+ // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
+ var Wi7 = W[i - 7];
+ var Wi7h = Wi7.high;
+ var Wi7l = Wi7.low;
+
+ var Wi16 = W[i - 16];
+ var Wi16h = Wi16.high;
+ var Wi16l = Wi16.low;
+
+ Wil = gamma0l + Wi7l;
+ Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);
+ Wil = Wil + gamma1l;
+ Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);
+ Wil = Wil + Wi16l;
+ Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);
+
+ Wi.high = Wih;
+ Wi.low = Wil;
+ }
+
+ var chh = (eh & fh) ^ (~eh & gh);
+ var chl = (el & fl) ^ (~el & gl);
+ var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
+ var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
+
+ var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
+ var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
+ var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));
+ var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));
+
+ // t1 = h + sigma1 + ch + K[i] + W[i]
+ var Ki = K[i];
+ var Kih = Ki.high;
+ var Kil = Ki.low;
+
+ var t1l = hl + sigma1l;
+ var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
+ var t1l = t1l + chl;
+ var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
+ var t1l = t1l + Kil;
+ var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);
+ var t1l = t1l + Wil;
+ var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);
+
+ // t2 = sigma0 + maj
+ var t2l = sigma0l + majl;
+ var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
+
+ // Update working variables
+ hh = gh;
+ hl = gl;
+ gh = fh;
+ gl = fl;
+ fh = eh;
+ fl = el;
+ el = (dl + t1l) | 0;
+ eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
+ dh = ch;
+ dl = cl;
+ ch = bh;
+ cl = bl;
+ bh = ah;
+ bl = al;
+ al = (t1l + t2l) | 0;
+ ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
+ }
+
+ // Intermediate hash value
+ H0l = H0.low = (H0l + al);
+ H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));
+ H1l = H1.low = (H1l + bl);
+ H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));
+ H2l = H2.low = (H2l + cl);
+ H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));
+ H3l = H3.low = (H3l + dl);
+ H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));
+ H4l = H4.low = (H4l + el);
+ H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));
+ H5l = H5.low = (H5l + fl);
+ H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));
+ H6l = H6.low = (H6l + gl);
+ H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));
+ H7l = H7.low = (H7l + hl);
+ H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));
+ },
+
+ _doFinalize: function() {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+ dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);
+ dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;
+ data.sigBytes = dataWords.length * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Convert hash to 32-bit word array before returning
+ var hash = this._hash.toX32();
+
+ // Return final computed hash
+ return hash;
+ },
+
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ },
+
+ blockSize: 1024 / 32
+ });
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.SHA512('message');
+ * var hash = CryptoJS.SHA512(wordArray);
+ */
+ C.SHA512 = Hasher._createHelper(SHA512);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacSHA512(message, key);
+ */
+ C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_x64 = C.x64;
+ var X64Word = C_x64.Word;
+ var X64WordArray = C_x64.WordArray;
+ var C_algo = C.algo;
+ var SHA512 = C_algo.SHA512;
+
+ /**
+ * SHA-384 hash algorithm.
+ */
+ var SHA384 = C_algo.SHA384 = SHA512.extend({
+ _doReset: function() {
+ this._hash = new X64WordArray.init([
+ new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),
+ new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),
+ new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),
+ new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)
+ ]);
+ },
+
+ _doFinalize: function() {
+ var hash = SHA512._doFinalize.call(this);
+
+ hash.sigBytes -= 16;
+
+ return hash;
+ }
+ });
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.SHA384('message');
+ * var hash = CryptoJS.SHA384(wordArray);
+ */
+ C.SHA384 = SHA512._createHelper(SHA384);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacSHA384(message, key);
+ */
+ C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
+ }());
+
+
+ (function(Math) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_x64 = C.x64;
+ var X64Word = C_x64.Word;
+ var C_algo = C.algo;
+
+ // Constants tables
+ var RHO_OFFSETS = [];
+ var PI_INDEXES = [];
+ var ROUND_CONSTANTS = [];
+
+ // Compute Constants
+ (function() {
+ // Compute rho offset constants
+ var x = 1,
+ y = 0;
+ for (var t = 0; t < 24; t++) {
+ RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;
+
+ var newX = y % 5;
+ var newY = (2 * x + 3 * y) % 5;
+ x = newX;
+ y = newY;
+ }
+
+ // Compute pi index constants
+ for (var x = 0; x < 5; x++) {
+ for (var y = 0; y < 5; y++) {
+ PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;
+ }
+ }
+
+ // Compute round constants
+ var LFSR = 0x01;
+ for (var i = 0; i < 24; i++) {
+ var roundConstantMsw = 0;
+ var roundConstantLsw = 0;
+
+ for (var j = 0; j < 7; j++) {
+ if (LFSR & 0x01) {
+ var bitPosition = (1 << j) - 1;
+ if (bitPosition < 32) {
+ roundConstantLsw ^= 1 << bitPosition;
+ } else /* if (bitPosition >= 32) */ {
+ roundConstantMsw ^= 1 << (bitPosition - 32);
+ }
+ }
+
+ // Compute next LFSR
+ if (LFSR & 0x80) {
+ // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1
+ LFSR = (LFSR << 1) ^ 0x71;
+ } else {
+ LFSR <<= 1;
+ }
+ }
+
+ ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
+ }
+ }());
+
+ // Reusable objects for temporary values
+ var T = [];
+ (function() {
+ for (var i = 0; i < 25; i++) {
+ T[i] = X64Word.create();
+ }
+ }());
+
+ /**
+ * SHA-3 hash algorithm.
+ */
+ var SHA3 = C_algo.SHA3 = Hasher.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {number} outputLength
+ * The desired number of bits in the output hash.
+ * Only values permitted are: 224, 256, 384, 512.
+ * Default: 512
+ */
+ cfg: Hasher.cfg.extend({
+ outputLength: 512
+ }),
+
+ _doReset: function() {
+ var state = this._state = []
+ for (var i = 0; i < 25; i++) {
+ state[i] = new X64Word.init();
+ }
+
+ this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
+ },
+
+ _doProcessBlock: function(M, offset) {
+ // Shortcuts
+ var state = this._state;
+ var nBlockSizeLanes = this.blockSize / 2;
+
+ // Absorb
+ for (var i = 0; i < nBlockSizeLanes; i++) {
+ // Shortcuts
+ var M2i = M[offset + 2 * i];
+ var M2i1 = M[offset + 2 * i + 1];
+
+ // Swap endian
+ M2i = (
+ (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |
+ (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)
+ );
+ M2i1 = (
+ (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |
+ (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)
+ );
+
+ // Absorb message into state
+ var lane = state[i];
+ lane.high ^= M2i1;
+ lane.low ^= M2i;
+ }
+
+ // Rounds
+ for (var round = 0; round < 24; round++) {
+ // Theta
+ for (var x = 0; x < 5; x++) {
+ // Mix column lanes
+ var tMsw = 0,
+ tLsw = 0;
+ for (var y = 0; y < 5; y++) {
+ var lane = state[x + 5 * y];
+ tMsw ^= lane.high;
+ tLsw ^= lane.low;
+ }
+
+ // Temporary values
+ var Tx = T[x];
+ Tx.high = tMsw;
+ Tx.low = tLsw;
+ }
+ for (var x = 0; x < 5; x++) {
+ // Shortcuts
+ var Tx4 = T[(x + 4) % 5];
+ var Tx1 = T[(x + 1) % 5];
+ var Tx1Msw = Tx1.high;
+ var Tx1Lsw = Tx1.low;
+
+ // Mix surrounding columns
+ var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));
+ var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));
+ for (var y = 0; y < 5; y++) {
+ var lane = state[x + 5 * y];
+ lane.high ^= tMsw;
+ lane.low ^= tLsw;
+ }
+ }
+
+ // Rho Pi
+ for (var laneIndex = 1; laneIndex < 25; laneIndex++) {
+ var tMsw;
+ var tLsw;
+
+ // Shortcuts
+ var lane = state[laneIndex];
+ var laneMsw = lane.high;
+ var laneLsw = lane.low;
+ var rhoOffset = RHO_OFFSETS[laneIndex];
+
+ // Rotate lanes
+ if (rhoOffset < 32) {
+ tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));
+ tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));
+ } else /* if (rhoOffset >= 32) */ {
+ tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));
+ tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));
+ }
+
+ // Transpose lanes
+ var TPiLane = T[PI_INDEXES[laneIndex]];
+ TPiLane.high = tMsw;
+ TPiLane.low = tLsw;
+ }
+
+ // Rho pi at x = y = 0
+ var T0 = T[0];
+ var state0 = state[0];
+ T0.high = state0.high;
+ T0.low = state0.low;
+
+ // Chi
+ for (var x = 0; x < 5; x++) {
+ for (var y = 0; y < 5; y++) {
+ // Shortcuts
+ var laneIndex = x + 5 * y;
+ var lane = state[laneIndex];
+ var TLane = T[laneIndex];
+ var Tx1Lane = T[((x + 1) % 5) + 5 * y];
+ var Tx2Lane = T[((x + 2) % 5) + 5 * y];
+
+ // Mix rows
+ lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);
+ lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);
+ }
+ }
+
+ // Iota
+ var lane = state[0];
+ var roundConstant = ROUND_CONSTANTS[round];
+ lane.high ^= roundConstant.high;
+ lane.low ^= roundConstant.low;
+ }
+ },
+
+ _doFinalize: function() {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+ var blockSizeBits = this.blockSize * 32;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);
+ dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;
+ data.sigBytes = dataWords.length * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Shortcuts
+ var state = this._state;
+ var outputLengthBytes = this.cfg.outputLength / 8;
+ var outputLengthLanes = outputLengthBytes / 8;
+
+ // Squeeze
+ var hashWords = [];
+ for (var i = 0; i < outputLengthLanes; i++) {
+ // Shortcuts
+ var lane = state[i];
+ var laneMsw = lane.high;
+ var laneLsw = lane.low;
+
+ // Swap endian
+ laneMsw = (
+ (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |
+ (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)
+ );
+ laneLsw = (
+ (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |
+ (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)
+ );
+
+ // Squeeze state to retrieve hash
+ hashWords.push(laneLsw);
+ hashWords.push(laneMsw);
+ }
+
+ // Return final computed hash
+ return new WordArray.init(hashWords, outputLengthBytes);
+ },
+
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+
+ var state = clone._state = this._state.slice(0);
+ for (var i = 0; i < 25; i++) {
+ state[i] = state[i].clone();
+ }
+
+ return clone;
+ }
+ });
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.SHA3('message');
+ * var hash = CryptoJS.SHA3(wordArray);
+ */
+ C.SHA3 = Hasher._createHelper(SHA3);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacSHA3(message, key);
+ */
+ C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
+ }(Math));
+
+
+ /** @preserve
+ (c) 2012 by Cédric Mesnil. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ (function(Math) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+
+ // Constants table
+ var _zl = WordArray.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
+ ]);
+ var _zr = WordArray.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
+ ]);
+ var _sl = WordArray.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
+ ]);
+ var _sr = WordArray.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
+ ]);
+
+ var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);
+ var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);
+
+ /**
+ * RIPEMD160 hash algorithm.
+ */
+ var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
+ _doReset: function() {
+ this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);
+ },
+
+ _doProcessBlock: function(M, offset) {
+
+ // Swap endian
+ for (var i = 0; i < 16; i++) {
+ // Shortcuts
+ var offset_i = offset + i;
+ var M_offset_i = M[offset_i];
+
+ // Swap
+ M[offset_i] = (
+ (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
+ (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
+ );
+ }
+ // Shortcut
+ var H = this._hash.words;
+ var hl = _hl.words;
+ var hr = _hr.words;
+ var zl = _zl.words;
+ var zr = _zr.words;
+ var sl = _sl.words;
+ var sr = _sr.words;
+
+ // Working variables
+ var al, bl, cl, dl, el;
+ var ar, br, cr, dr, er;
+
+ ar = al = H[0];
+ br = bl = H[1];
+ cr = cl = H[2];
+ dr = dl = H[3];
+ er = el = H[4];
+ // Computation
+ var t;
+ for (var i = 0; i < 80; i += 1) {
+ t = (al + M[offset + zl[i]]) | 0;
+ if (i < 16) {
+ t += f1(bl, cl, dl) + hl[0];
+ } else if (i < 32) {
+ t += f2(bl, cl, dl) + hl[1];
+ } else if (i < 48) {
+ t += f3(bl, cl, dl) + hl[2];
+ } else if (i < 64) {
+ t += f4(bl, cl, dl) + hl[3];
+ } else { // if (i<80) {
+ t += f5(bl, cl, dl) + hl[4];
+ }
+ t = t | 0;
+ t = rotl(t, sl[i]);
+ t = (t + el) | 0;
+ al = el;
+ el = dl;
+ dl = rotl(cl, 10);
+ cl = bl;
+ bl = t;
+
+ t = (ar + M[offset + zr[i]]) | 0;
+ if (i < 16) {
+ t += f5(br, cr, dr) + hr[0];
+ } else if (i < 32) {
+ t += f4(br, cr, dr) + hr[1];
+ } else if (i < 48) {
+ t += f3(br, cr, dr) + hr[2];
+ } else if (i < 64) {
+ t += f2(br, cr, dr) + hr[3];
+ } else { // if (i<80) {
+ t += f1(br, cr, dr) + hr[4];
+ }
+ t = t | 0;
+ t = rotl(t, sr[i]);
+ t = (t + er) | 0;
+ ar = er;
+ er = dr;
+ dr = rotl(cr, 10);
+ cr = br;
+ br = t;
+ }
+ // Intermediate hash value
+ t = (H[1] + cl + dr) | 0;
+ H[1] = (H[2] + dl + er) | 0;
+ H[2] = (H[3] + el + ar) | 0;
+ H[3] = (H[4] + al + br) | 0;
+ H[4] = (H[0] + bl + cr) | 0;
+ H[0] = t;
+ },
+
+ _doFinalize: function() {
+ // Shortcuts
+ var data = this._data;
+ var dataWords = data.words;
+
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+
+ // Add padding
+ dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
+ dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
+ (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
+ (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
+ );
+ data.sigBytes = (dataWords.length + 1) * 4;
+
+ // Hash final blocks
+ this._process();
+
+ // Shortcuts
+ var hash = this._hash;
+ var H = hash.words;
+
+ // Swap endian
+ for (var i = 0; i < 5; i++) {
+ // Shortcut
+ var H_i = H[i];
+
+ // Swap
+ H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
+ (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
+ }
+
+ // Return final computed hash
+ return hash;
+ },
+
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+
+ return clone;
+ }
+ });
+
+
+ function f1(x, y, z) {
+ return ((x) ^ (y) ^ (z));
+
+ }
+
+ function f2(x, y, z) {
+ return (((x) & (y)) | ((~x) & (z)));
+ }
+
+ function f3(x, y, z) {
+ return (((x) | (~(y))) ^ (z));
+ }
+
+ function f4(x, y, z) {
+ return (((x) & (z)) | ((y) & (~(z))));
+ }
+
+ function f5(x, y, z) {
+ return ((x) ^ ((y) | (~(z))));
+
+ }
+
+ function rotl(x, n) {
+ return (x << n) | (x >>> (32 - n));
+ }
+
+
+ /**
+ * Shortcut function to the hasher's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hash = CryptoJS.RIPEMD160('message');
+ * var hash = CryptoJS.RIPEMD160(wordArray);
+ */
+ C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
+
+ /**
+ * Shortcut function to the HMAC's object interface.
+ *
+ * @param {WordArray|string} message The message to hash.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hmac = CryptoJS.HmacRIPEMD160(message, key);
+ */
+ C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
+ }(Math));
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var C_enc = C.enc;
+ var Utf8 = C_enc.Utf8;
+ var C_algo = C.algo;
+
+ /**
+ * HMAC algorithm.
+ */
+ var HMAC = C_algo.HMAC = Base.extend({
+ /**
+ * Initializes a newly created HMAC.
+ *
+ * @param {Hasher} hasher The hash algorithm to use.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @example
+ *
+ * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
+ */
+ init: function(hasher, key) {
+ // Init hasher
+ hasher = this._hasher = new hasher.init();
+
+ // Convert string to WordArray, else assume WordArray already
+ if (typeof key == 'string') {
+ key = Utf8.parse(key);
+ }
+
+ // Shortcuts
+ var hasherBlockSize = hasher.blockSize;
+ var hasherBlockSizeBytes = hasherBlockSize * 4;
+
+ // Allow arbitrary length keys
+ if (key.sigBytes > hasherBlockSizeBytes) {
+ key = hasher.finalize(key);
+ }
+
+ // Clamp excess bits
+ key.clamp();
+
+ // Clone key for inner and outer pads
+ var oKey = this._oKey = key.clone();
+ var iKey = this._iKey = key.clone();
+
+ // Shortcuts
+ var oKeyWords = oKey.words;
+ var iKeyWords = iKey.words;
+
+ // XOR keys with pad constants
+ for (var i = 0; i < hasherBlockSize; i++) {
+ oKeyWords[i] ^= 0x5c5c5c5c;
+ iKeyWords[i] ^= 0x36363636;
+ }
+ oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
+
+ // Set initial values
+ this.reset();
+ },
+
+ /**
+ * Resets this HMAC to its initial state.
+ *
+ * @example
+ *
+ * hmacHasher.reset();
+ */
+ reset: function() {
+ // Shortcut
+ var hasher = this._hasher;
+
+ // Reset
+ hasher.reset();
+ hasher.update(this._iKey);
+ },
+
+ /**
+ * Updates this HMAC with a message.
+ *
+ * @param {WordArray|string} messageUpdate The message to append.
+ *
+ * @return {HMAC} This HMAC instance.
+ *
+ * @example
+ *
+ * hmacHasher.update('message');
+ * hmacHasher.update(wordArray);
+ */
+ update: function(messageUpdate) {
+ this._hasher.update(messageUpdate);
+
+ // Chainable
+ return this;
+ },
+
+ /**
+ * Finalizes the HMAC computation.
+ * Note that the finalize operation is effectively a destructive, read-once operation.
+ *
+ * @param {WordArray|string} messageUpdate (Optional) A final message update.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @example
+ *
+ * var hmac = hmacHasher.finalize();
+ * var hmac = hmacHasher.finalize('message');
+ * var hmac = hmacHasher.finalize(wordArray);
+ */
+ finalize: function(messageUpdate) {
+ // Shortcut
+ var hasher = this._hasher;
+
+ // Compute HMAC
+ var innerHash = hasher.finalize(messageUpdate);
+ hasher.reset();
+ var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));
+
+ return hmac;
+ }
+ });
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var WordArray = C_lib.WordArray;
+ var C_algo = C.algo;
+ var SHA1 = C_algo.SHA1;
+ var HMAC = C_algo.HMAC;
+
+ /**
+ * Password-Based Key Derivation Function 2 algorithm.
+ */
+ var PBKDF2 = C_algo.PBKDF2 = Base.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
+ * @property {Hasher} hasher The hasher to use. Default: SHA1
+ * @property {number} iterations The number of iterations to perform. Default: 1
+ */
+ cfg: Base.extend({
+ keySize: 128 / 32,
+ hasher: SHA1,
+ iterations: 1
+ }),
+
+ /**
+ * Initializes a newly created key derivation function.
+ *
+ * @param {Object} cfg (Optional) The configuration options to use for the derivation.
+ *
+ * @example
+ *
+ * var kdf = CryptoJS.algo.PBKDF2.create();
+ * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
+ * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
+ */
+ init: function(cfg) {
+ this.cfg = this.cfg.extend(cfg);
+ },
+
+ /**
+ * Computes the Password-Based Key Derivation Function 2.
+ *
+ * @param {WordArray|string} password The password.
+ * @param {WordArray|string} salt A salt.
+ *
+ * @return {WordArray} The derived key.
+ *
+ * @example
+ *
+ * var key = kdf.compute(password, salt);
+ */
+ compute: function(password, salt) {
+ // Shortcut
+ var cfg = this.cfg;
+
+ // Init HMAC
+ var hmac = HMAC.create(cfg.hasher, password);
+
+ // Initial values
+ var derivedKey = WordArray.create();
+ var blockIndex = WordArray.create([0x00000001]);
+
+ // Shortcuts
+ var derivedKeyWords = derivedKey.words;
+ var blockIndexWords = blockIndex.words;
+ var keySize = cfg.keySize;
+ var iterations = cfg.iterations;
+
+ // Generate key
+ while (derivedKeyWords.length < keySize) {
+ var block = hmac.update(salt).finalize(blockIndex);
+ hmac.reset();
+
+ // Shortcuts
+ var blockWords = block.words;
+ var blockWordsLength = blockWords.length;
+
+ // Iterations
+ var intermediate = block;
+ for (var i = 1; i < iterations; i++) {
+ intermediate = hmac.finalize(intermediate);
+ hmac.reset();
+
+ // Shortcut
+ var intermediateWords = intermediate.words;
+
+ // XOR intermediate with block
+ for (var j = 0; j < blockWordsLength; j++) {
+ blockWords[j] ^= intermediateWords[j];
+ }
+ }
+
+ derivedKey.concat(block);
+ blockIndexWords[0]++;
+ }
+ derivedKey.sigBytes = keySize * 4;
+
+ return derivedKey;
+ }
+ });
+
+ /**
+ * Computes the Password-Based Key Derivation Function 2.
+ *
+ * @param {WordArray|string} password The password.
+ * @param {WordArray|string} salt A salt.
+ * @param {Object} cfg (Optional) The configuration options to use for this computation.
+ *
+ * @return {WordArray} The derived key.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var key = CryptoJS.PBKDF2(password, salt);
+ * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });
+ * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });
+ */
+ C.PBKDF2 = function(password, salt, cfg) {
+ return PBKDF2.create(cfg).compute(password, salt);
+ };
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var WordArray = C_lib.WordArray;
+ var C_algo = C.algo;
+ var MD5 = C_algo.MD5;
+
+ /**
+ * This key derivation function is meant to conform with EVP_BytesToKey.
+ * www.openssl.org/docs/crypto/EVP_BytesToKey.html
+ */
+ var EvpKDF = C_algo.EvpKDF = Base.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
+ * @property {Hasher} hasher The hash algorithm to use. Default: MD5
+ * @property {number} iterations The number of iterations to perform. Default: 1
+ */
+ cfg: Base.extend({
+ keySize: 128 / 32,
+ hasher: MD5,
+ iterations: 1
+ }),
+
+ /**
+ * Initializes a newly created key derivation function.
+ *
+ * @param {Object} cfg (Optional) The configuration options to use for the derivation.
+ *
+ * @example
+ *
+ * var kdf = CryptoJS.algo.EvpKDF.create();
+ * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
+ * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
+ */
+ init: function(cfg) {
+ this.cfg = this.cfg.extend(cfg);
+ },
+
+ /**
+ * Derives a key from a password.
+ *
+ * @param {WordArray|string} password The password.
+ * @param {WordArray|string} salt A salt.
+ *
+ * @return {WordArray} The derived key.
+ *
+ * @example
+ *
+ * var key = kdf.compute(password, salt);
+ */
+ compute: function(password, salt) {
+ var block;
+
+ // Shortcut
+ var cfg = this.cfg;
+
+ // Init hasher
+ var hasher = cfg.hasher.create();
+
+ // Initial values
+ var derivedKey = WordArray.create();
+
+ // Shortcuts
+ var derivedKeyWords = derivedKey.words;
+ var keySize = cfg.keySize;
+ var iterations = cfg.iterations;
+
+ // Generate key
+ while (derivedKeyWords.length < keySize) {
+ if (block) {
+ hasher.update(block);
+ }
+ block = hasher.update(password).finalize(salt);
+ hasher.reset();
+
+ // Iterations
+ for (var i = 1; i < iterations; i++) {
+ block = hasher.finalize(block);
+ hasher.reset();
+ }
+
+ derivedKey.concat(block);
+ }
+ derivedKey.sigBytes = keySize * 4;
+
+ return derivedKey;
+ }
+ });
+
+ /**
+ * Derives a key from a password.
+ *
+ * @param {WordArray|string} password The password.
+ * @param {WordArray|string} salt A salt.
+ * @param {Object} cfg (Optional) The configuration options to use for this computation.
+ *
+ * @return {WordArray} The derived key.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var key = CryptoJS.EvpKDF(password, salt);
+ * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });
+ * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });
+ */
+ C.EvpKDF = function(password, salt, cfg) {
+ return EvpKDF.create(cfg).compute(password, salt);
+ };
+ }());
+
+
+ /**
+ * Cipher core components.
+ */
+ CryptoJS.lib.Cipher || (function(undefined) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var WordArray = C_lib.WordArray;
+ var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
+ var C_enc = C.enc;
+ var Utf8 = C_enc.Utf8;
+ var Base64 = C_enc.Base64;
+ var C_algo = C.algo;
+ var EvpKDF = C_algo.EvpKDF;
+
+ /**
+ * Abstract base cipher template.
+ *
+ * @property {number} keySize This cipher's key size. Default: 4 (128 bits)
+ * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)
+ * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.
+ * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.
+ */
+ var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {WordArray} iv The IV to use for this operation.
+ */
+ cfg: Base.extend(),
+
+ /**
+ * Creates this cipher in encryption mode.
+ *
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {Cipher} A cipher instance.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
+ */
+ createEncryptor: function(key, cfg) {
+ return this.create(this._ENC_XFORM_MODE, key, cfg);
+ },
+
+ /**
+ * Creates this cipher in decryption mode.
+ *
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {Cipher} A cipher instance.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
+ */
+ createDecryptor: function(key, cfg) {
+ return this.create(this._DEC_XFORM_MODE, key, cfg);
+ },
+
+ /**
+ * Initializes a newly created cipher.
+ *
+ * @param {number} xformMode Either the encryption or decryption transormation mode constant.
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @example
+ *
+ * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
+ */
+ init: function(xformMode, key, cfg) {
+ // Apply config defaults
+ this.cfg = this.cfg.extend(cfg);
+
+ // Store transform mode and key
+ this._xformMode = xformMode;
+ this._key = key;
+
+ // Set initial values
+ this.reset();
+ },
+
+ /**
+ * Resets this cipher to its initial state.
+ *
+ * @example
+ *
+ * cipher.reset();
+ */
+ reset: function() {
+ // Reset data buffer
+ BufferedBlockAlgorithm.reset.call(this);
+
+ // Perform concrete-cipher logic
+ this._doReset();
+ },
+
+ /**
+ * Adds data to be encrypted or decrypted.
+ *
+ * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
+ *
+ * @return {WordArray} The data after processing.
+ *
+ * @example
+ *
+ * var encrypted = cipher.process('data');
+ * var encrypted = cipher.process(wordArray);
+ */
+ process: function(dataUpdate) {
+ // Append
+ this._append(dataUpdate);
+
+ // Process available blocks
+ return this._process();
+ },
+
+ /**
+ * Finalizes the encryption or decryption process.
+ * Note that the finalize operation is effectively a destructive, read-once operation.
+ *
+ * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
+ *
+ * @return {WordArray} The data after final processing.
+ *
+ * @example
+ *
+ * var encrypted = cipher.finalize();
+ * var encrypted = cipher.finalize('data');
+ * var encrypted = cipher.finalize(wordArray);
+ */
+ finalize: function(dataUpdate) {
+ // Final data update
+ if (dataUpdate) {
+ this._append(dataUpdate);
+ }
+
+ // Perform concrete-cipher logic
+ var finalProcessedData = this._doFinalize();
+
+ return finalProcessedData;
+ },
+
+ keySize: 128 / 32,
+
+ ivSize: 128 / 32,
+
+ _ENC_XFORM_MODE: 1,
+
+ _DEC_XFORM_MODE: 2,
+
+ /**
+ * Creates shortcut functions to a cipher's object interface.
+ *
+ * @param {Cipher} cipher The cipher to create a helper for.
+ *
+ * @return {Object} An object with encrypt and decrypt shortcut functions.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
+ */
+ _createHelper: (function() {
+ function selectCipherStrategy(key) {
+ if (typeof key == 'string') {
+ return PasswordBasedCipher;
+ } else {
+ return SerializableCipher;
+ }
+ }
+
+ return function(cipher) {
+ return {
+ encrypt: function(message, key, cfg) {
+ return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
+ },
+
+ decrypt: function(ciphertext, key, cfg) {
+ return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
+ }
+ };
+ };
+ }())
+ });
+
+ /**
+ * Abstract base stream cipher template.
+ *
+ * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)
+ */
+ var StreamCipher = C_lib.StreamCipher = Cipher.extend({
+ _doFinalize: function() {
+ // Process partial blocks
+ var finalProcessedBlocks = this._process(!!'flush');
+
+ return finalProcessedBlocks;
+ },
+
+ blockSize: 1
+ });
+
+ /**
+ * Mode namespace.
+ */
+ var C_mode = C.mode = {};
+
+ /**
+ * Abstract base block cipher mode template.
+ */
+ var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
+ /**
+ * Creates this mode for encryption.
+ *
+ * @param {Cipher} cipher A block cipher instance.
+ * @param {Array} iv The IV words.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
+ */
+ createEncryptor: function(cipher, iv) {
+ return this.Encryptor.create(cipher, iv);
+ },
+
+ /**
+ * Creates this mode for decryption.
+ *
+ * @param {Cipher} cipher A block cipher instance.
+ * @param {Array} iv The IV words.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
+ */
+ createDecryptor: function(cipher, iv) {
+ return this.Decryptor.create(cipher, iv);
+ },
+
+ /**
+ * Initializes a newly created mode.
+ *
+ * @param {Cipher} cipher A block cipher instance.
+ * @param {Array} iv The IV words.
+ *
+ * @example
+ *
+ * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
+ */
+ init: function(cipher, iv) {
+ this._cipher = cipher;
+ this._iv = iv;
+ }
+ });
+
+ /**
+ * Cipher Block Chaining mode.
+ */
+ var CBC = C_mode.CBC = (function() {
+ /**
+ * Abstract base CBC mode.
+ */
+ var CBC = BlockCipherMode.extend();
+
+ /**
+ * CBC encryptor.
+ */
+ CBC.Encryptor = CBC.extend({
+ /**
+ * Processes the data block at offset.
+ *
+ * @param {Array} words The data words to operate on.
+ * @param {number} offset The offset where the block starts.
+ *
+ * @example
+ *
+ * mode.processBlock(data.words, offset);
+ */
+ processBlock: function(words, offset) {
+ // Shortcuts
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+
+ // XOR and encrypt
+ xorBlock.call(this, words, offset, blockSize);
+ cipher.encryptBlock(words, offset);
+
+ // Remember this block to use with next block
+ this._prevBlock = words.slice(offset, offset + blockSize);
+ }
+ });
+
+ /**
+ * CBC decryptor.
+ */
+ CBC.Decryptor = CBC.extend({
+ /**
+ * Processes the data block at offset.
+ *
+ * @param {Array} words The data words to operate on.
+ * @param {number} offset The offset where the block starts.
+ *
+ * @example
+ *
+ * mode.processBlock(data.words, offset);
+ */
+ processBlock: function(words, offset) {
+ // Shortcuts
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+
+ // Remember this block to use with next block
+ var thisBlock = words.slice(offset, offset + blockSize);
+
+ // Decrypt and XOR
+ cipher.decryptBlock(words, offset);
+ xorBlock.call(this, words, offset, blockSize);
+
+ // This block becomes the previous block
+ this._prevBlock = thisBlock;
+ }
+ });
+
+ function xorBlock(words, offset, blockSize) {
+ var block;
+
+ // Shortcut
+ var iv = this._iv;
+
+ // Choose mixing block
+ if (iv) {
+ block = iv;
+
+ // Remove IV for subsequent blocks
+ this._iv = undefined;
+ } else {
+ block = this._prevBlock;
+ }
+
+ // XOR blocks
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= block[i];
+ }
+ }
+
+ return CBC;
+ }());
+
+ /**
+ * Padding namespace.
+ */
+ var C_pad = C.pad = {};
+
+ /**
+ * PKCS #5/7 padding strategy.
+ */
+ var Pkcs7 = C_pad.Pkcs7 = {
+ /**
+ * Pads data using the algorithm defined in PKCS #5/7.
+ *
+ * @param {WordArray} data The data to pad.
+ * @param {number} blockSize The multiple that the data should be padded to.
+ *
+ * @static
+ *
+ * @example
+ *
+ * CryptoJS.pad.Pkcs7.pad(wordArray, 4);
+ */
+ pad: function(data, blockSize) {
+ // Shortcut
+ var blockSizeBytes = blockSize * 4;
+
+ // Count padding bytes
+ var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
+
+ // Create padding word
+ var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;
+
+ // Create padding
+ var paddingWords = [];
+ for (var i = 0; i < nPaddingBytes; i += 4) {
+ paddingWords.push(paddingWord);
+ }
+ var padding = WordArray.create(paddingWords, nPaddingBytes);
+
+ // Add padding
+ data.concat(padding);
+ },
+
+ /**
+ * Unpads data that had been padded using the algorithm defined in PKCS #5/7.
+ *
+ * @param {WordArray} data The data to unpad.
+ *
+ * @static
+ *
+ * @example
+ *
+ * CryptoJS.pad.Pkcs7.unpad(wordArray);
+ */
+ unpad: function(data) {
+ // Get number of padding bytes from last byte
+ var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
+
+ // Remove padding
+ data.sigBytes -= nPaddingBytes;
+ }
+ };
+
+ /**
+ * Abstract base block cipher template.
+ *
+ * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)
+ */
+ var BlockCipher = C_lib.BlockCipher = Cipher.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {Mode} mode The block mode to use. Default: CBC
+ * @property {Padding} padding The padding strategy to use. Default: Pkcs7
+ */
+ cfg: Cipher.cfg.extend({
+ mode: CBC,
+ padding: Pkcs7
+ }),
+
+ reset: function() {
+ var modeCreator;
+
+ // Reset cipher
+ Cipher.reset.call(this);
+
+ // Shortcuts
+ var cfg = this.cfg;
+ var iv = cfg.iv;
+ var mode = cfg.mode;
+
+ // Reset block mode
+ if (this._xformMode == this._ENC_XFORM_MODE) {
+ modeCreator = mode.createEncryptor;
+ } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
+ modeCreator = mode.createDecryptor;
+ // Keep at least one block in the buffer for unpadding
+ this._minBufferSize = 1;
+ }
+
+ if (this._mode && this._mode.__creator == modeCreator) {
+ this._mode.init(this, iv && iv.words);
+ } else {
+ this._mode = modeCreator.call(mode, this, iv && iv.words);
+ this._mode.__creator = modeCreator;
+ }
+ },
+
+ _doProcessBlock: function(words, offset) {
+ this._mode.processBlock(words, offset);
+ },
+
+ _doFinalize: function() {
+ var finalProcessedBlocks;
+
+ // Shortcut
+ var padding = this.cfg.padding;
+
+ // Finalize
+ if (this._xformMode == this._ENC_XFORM_MODE) {
+ // Pad data
+ padding.pad(this._data, this.blockSize);
+
+ // Process final blocks
+ finalProcessedBlocks = this._process(!!'flush');
+ } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
+ // Process final blocks
+ finalProcessedBlocks = this._process(!!'flush');
+
+ // Unpad data
+ padding.unpad(finalProcessedBlocks);
+ }
+
+ return finalProcessedBlocks;
+ },
+
+ blockSize: 128 / 32
+ });
+
+ /**
+ * A collection of cipher parameters.
+ *
+ * @property {WordArray} ciphertext The raw ciphertext.
+ * @property {WordArray} key The key to this ciphertext.
+ * @property {WordArray} iv The IV used in the ciphering operation.
+ * @property {WordArray} salt The salt used with a key derivation function.
+ * @property {Cipher} algorithm The cipher algorithm.
+ * @property {Mode} mode The block mode used in the ciphering operation.
+ * @property {Padding} padding The padding scheme used in the ciphering operation.
+ * @property {number} blockSize The block size of the cipher.
+ * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.
+ */
+ var CipherParams = C_lib.CipherParams = Base.extend({
+ /**
+ * Initializes a newly created cipher params object.
+ *
+ * @param {Object} cipherParams An object with any of the possible cipher parameters.
+ *
+ * @example
+ *
+ * var cipherParams = CryptoJS.lib.CipherParams.create({
+ * ciphertext: ciphertextWordArray,
+ * key: keyWordArray,
+ * iv: ivWordArray,
+ * salt: saltWordArray,
+ * algorithm: CryptoJS.algo.AES,
+ * mode: CryptoJS.mode.CBC,
+ * padding: CryptoJS.pad.PKCS7,
+ * blockSize: 4,
+ * formatter: CryptoJS.format.OpenSSL
+ * });
+ */
+ init: function(cipherParams) {
+ this.mixIn(cipherParams);
+ },
+
+ /**
+ * Converts this cipher params object to a string.
+ *
+ * @param {Format} formatter (Optional) The formatting strategy to use.
+ *
+ * @return {string} The stringified cipher params.
+ *
+ * @throws Error If neither the formatter nor the default formatter is set.
+ *
+ * @example
+ *
+ * var string = cipherParams + '';
+ * var string = cipherParams.toString();
+ * var string = cipherParams.toString(CryptoJS.format.OpenSSL);
+ */
+ toString: function(formatter) {
+ return (formatter || this.formatter).stringify(this);
+ }
+ });
+
+ /**
+ * Format namespace.
+ */
+ var C_format = C.format = {};
+
+ /**
+ * OpenSSL formatting strategy.
+ */
+ var OpenSSLFormatter = C_format.OpenSSL = {
+ /**
+ * Converts a cipher params object to an OpenSSL-compatible string.
+ *
+ * @param {CipherParams} cipherParams The cipher params object.
+ *
+ * @return {string} The OpenSSL-compatible string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
+ */
+ stringify: function(cipherParams) {
+ var wordArray;
+
+ // Shortcuts
+ var ciphertext = cipherParams.ciphertext;
+ var salt = cipherParams.salt;
+
+ // Format
+ if (salt) {
+ wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);
+ } else {
+ wordArray = ciphertext;
+ }
+
+ return wordArray.toString(Base64);
+ },
+
+ /**
+ * Converts an OpenSSL-compatible string to a cipher params object.
+ *
+ * @param {string} openSSLStr The OpenSSL-compatible string.
+ *
+ * @return {CipherParams} The cipher params object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
+ */
+ parse: function(openSSLStr) {
+ var salt;
+
+ // Parse base64
+ var ciphertext = Base64.parse(openSSLStr);
+
+ // Shortcut
+ var ciphertextWords = ciphertext.words;
+
+ // Test for salt
+ if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {
+ // Extract salt
+ salt = WordArray.create(ciphertextWords.slice(2, 4));
+
+ // Remove salt from ciphertext
+ ciphertextWords.splice(0, 4);
+ ciphertext.sigBytes -= 16;
+ }
+
+ return CipherParams.create({
+ ciphertext: ciphertext,
+ salt: salt
+ });
+ }
+ };
+
+ /**
+ * A cipher wrapper that returns ciphertext as a serializable cipher params object.
+ */
+ var SerializableCipher = C_lib.SerializableCipher = Base.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
+ */
+ cfg: Base.extend({
+ format: OpenSSLFormatter
+ }),
+
+ /**
+ * Encrypts a message.
+ *
+ * @param {Cipher} cipher The cipher algorithm to use.
+ * @param {WordArray|string} message The message to encrypt.
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {CipherParams} A cipher params object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
+ * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
+ * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
+ */
+ encrypt: function(cipher, message, key, cfg) {
+ // Apply config defaults
+ cfg = this.cfg.extend(cfg);
+
+ // Encrypt
+ var encryptor = cipher.createEncryptor(key, cfg);
+ var ciphertext = encryptor.finalize(message);
+
+ // Shortcut
+ var cipherCfg = encryptor.cfg;
+
+ // Create and return serializable cipher params
+ return CipherParams.create({
+ ciphertext: ciphertext,
+ key: key,
+ iv: cipherCfg.iv,
+ algorithm: cipher,
+ mode: cipherCfg.mode,
+ padding: cipherCfg.padding,
+ blockSize: cipher.blockSize,
+ formatter: cfg.format
+ });
+ },
+
+ /**
+ * Decrypts serialized ciphertext.
+ *
+ * @param {Cipher} cipher The cipher algorithm to use.
+ * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {WordArray} The plaintext.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
+ * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
+ */
+ decrypt: function(cipher, ciphertext, key, cfg) {
+ // Apply config defaults
+ cfg = this.cfg.extend(cfg);
+
+ // Convert string to CipherParams
+ ciphertext = this._parse(ciphertext, cfg.format);
+
+ // Decrypt
+ var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
+
+ return plaintext;
+ },
+
+ /**
+ * Converts serialized ciphertext to CipherParams,
+ * else assumed CipherParams already and returns ciphertext unchanged.
+ *
+ * @param {CipherParams|string} ciphertext The ciphertext.
+ * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
+ *
+ * @return {CipherParams} The unserialized ciphertext.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
+ */
+ _parse: function(ciphertext, format) {
+ if (typeof ciphertext == 'string') {
+ return format.parse(ciphertext, this);
+ } else {
+ return ciphertext;
+ }
+ }
+ });
+
+ /**
+ * Key derivation function namespace.
+ */
+ var C_kdf = C.kdf = {};
+
+ /**
+ * OpenSSL key derivation function.
+ */
+ var OpenSSLKdf = C_kdf.OpenSSL = {
+ /**
+ * Derives a key and IV from a password.
+ *
+ * @param {string} password The password to derive from.
+ * @param {number} keySize The size in words of the key to generate.
+ * @param {number} ivSize The size in words of the IV to generate.
+ * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
+ *
+ * @return {CipherParams} A cipher params object with the key, IV, and salt.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
+ * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
+ */
+ execute: function(password, keySize, ivSize, salt) {
+ // Generate random salt
+ if (!salt) {
+ salt = WordArray.random(64 / 8);
+ }
+
+ // Derive key and IV
+ var key = EvpKDF.create({
+ keySize: keySize + ivSize
+ }).compute(password, salt);
+
+ // Separate key and IV
+ var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
+ key.sigBytes = keySize * 4;
+
+ // Return params
+ return CipherParams.create({
+ key: key,
+ iv: iv,
+ salt: salt
+ });
+ }
+ };
+
+ /**
+ * A serializable cipher wrapper that derives the key from a password,
+ * and returns ciphertext as a serializable cipher params object.
+ */
+ var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
+ */
+ cfg: SerializableCipher.cfg.extend({
+ kdf: OpenSSLKdf
+ }),
+
+ /**
+ * Encrypts a message using a password.
+ *
+ * @param {Cipher} cipher The cipher algorithm to use.
+ * @param {WordArray|string} message The message to encrypt.
+ * @param {string} password The password.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {CipherParams} A cipher params object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
+ * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
+ */
+ encrypt: function(cipher, message, password, cfg) {
+ // Apply config defaults
+ cfg = this.cfg.extend(cfg);
+
+ // Derive key and other params
+ var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);
+
+ // Add IV to config
+ cfg.iv = derivedParams.iv;
+
+ // Encrypt
+ var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
+
+ // Mix in derived params
+ ciphertext.mixIn(derivedParams);
+
+ return ciphertext;
+ },
+
+ /**
+ * Decrypts serialized ciphertext using a password.
+ *
+ * @param {Cipher} cipher The cipher algorithm to use.
+ * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
+ * @param {string} password The password.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {WordArray} The plaintext.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
+ * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
+ */
+ decrypt: function(cipher, ciphertext, password, cfg) {
+ // Apply config defaults
+ cfg = this.cfg.extend(cfg);
+
+ // Convert string to CipherParams
+ ciphertext = this._parse(ciphertext, cfg.format);
+
+ // Derive key and other params
+ var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);
+
+ // Add IV to config
+ cfg.iv = derivedParams.iv;
+
+ // Decrypt
+ var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
+
+ return plaintext;
+ }
+ });
+ }());
+
+
+ /**
+ * Cipher Feedback block mode.
+ */
+ CryptoJS.mode.CFB = (function() {
+ var CFB = CryptoJS.lib.BlockCipherMode.extend();
+
+ CFB.Encryptor = CFB.extend({
+ processBlock: function(words, offset) {
+ // Shortcuts
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+
+ generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
+
+ // Remember this block to use with next block
+ this._prevBlock = words.slice(offset, offset + blockSize);
+ }
+ });
+
+ CFB.Decryptor = CFB.extend({
+ processBlock: function(words, offset) {
+ // Shortcuts
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+
+ // Remember this block to use with next block
+ var thisBlock = words.slice(offset, offset + blockSize);
+
+ generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
+
+ // This block becomes the previous block
+ this._prevBlock = thisBlock;
+ }
+ });
+
+ function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
+ var keystream;
+
+ // Shortcut
+ var iv = this._iv;
+
+ // Generate keystream
+ if (iv) {
+ keystream = iv.slice(0);
+
+ // Remove IV for subsequent blocks
+ this._iv = undefined;
+ } else {
+ keystream = this._prevBlock;
+ }
+ cipher.encryptBlock(keystream, 0);
+
+ // Encrypt
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= keystream[i];
+ }
+ }
+
+ return CFB;
+ }());
+
+
+ /**
+ * Counter block mode.
+ */
+ CryptoJS.mode.CTR = (function() {
+ var CTR = CryptoJS.lib.BlockCipherMode.extend();
+
+ var Encryptor = CTR.Encryptor = CTR.extend({
+ processBlock: function(words, offset) {
+ // Shortcuts
+ var cipher = this._cipher
+ var blockSize = cipher.blockSize;
+ var iv = this._iv;
+ var counter = this._counter;
+
+ // Generate keystream
+ if (iv) {
+ counter = this._counter = iv.slice(0);
+
+ // Remove IV for subsequent blocks
+ this._iv = undefined;
+ }
+ var keystream = counter.slice(0);
+ cipher.encryptBlock(keystream, 0);
+
+ // Increment counter
+ counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0
+
+ // Encrypt
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= keystream[i];
+ }
+ }
+ });
+
+ CTR.Decryptor = Encryptor;
+
+ return CTR;
+ }());
+
+
+ /** @preserve
+ * Counter block mode compatible with Dr Brian Gladman fileenc.c
+ * derived from CryptoJS.mode.CTR
+ * Jan Hruby jhruby.web@gmail.com
+ */
+ CryptoJS.mode.CTRGladman = (function() {
+ var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
+
+ function incWord(word) {
+ if (((word >> 24) & 0xff) === 0xff) { //overflow
+ var b1 = (word >> 16) & 0xff;
+ var b2 = (word >> 8) & 0xff;
+ var b3 = word & 0xff;
+
+ if (b1 === 0xff) // overflow b1
+ {
+ b1 = 0;
+ if (b2 === 0xff) {
+ b2 = 0;
+ if (b3 === 0xff) {
+ b3 = 0;
+ } else {
+ ++b3;
+ }
+ } else {
+ ++b2;
+ }
+ } else {
+ ++b1;
+ }
+
+ word = 0;
+ word += (b1 << 16);
+ word += (b2 << 8);
+ word += b3;
+ } else {
+ word += (0x01 << 24);
+ }
+ return word;
+ }
+
+ function incCounter(counter) {
+ if ((counter[0] = incWord(counter[0])) === 0) {
+ // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8
+ counter[1] = incWord(counter[1]);
+ }
+ return counter;
+ }
+
+ var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
+ processBlock: function(words, offset) {
+ // Shortcuts
+ var cipher = this._cipher
+ var blockSize = cipher.blockSize;
+ var iv = this._iv;
+ var counter = this._counter;
+
+ // Generate keystream
+ if (iv) {
+ counter = this._counter = iv.slice(0);
+
+ // Remove IV for subsequent blocks
+ this._iv = undefined;
+ }
+
+ incCounter(counter);
+
+ var keystream = counter.slice(0);
+ cipher.encryptBlock(keystream, 0);
+
+ // Encrypt
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= keystream[i];
+ }
+ }
+ });
+
+ CTRGladman.Decryptor = Encryptor;
+
+ return CTRGladman;
+ }());
+
+
+
+
+ /**
+ * Output Feedback block mode.
+ */
+ CryptoJS.mode.OFB = (function() {
+ var OFB = CryptoJS.lib.BlockCipherMode.extend();
+
+ var Encryptor = OFB.Encryptor = OFB.extend({
+ processBlock: function(words, offset) {
+ // Shortcuts
+ var cipher = this._cipher
+ var blockSize = cipher.blockSize;
+ var iv = this._iv;
+ var keystream = this._keystream;
+
+ // Generate keystream
+ if (iv) {
+ keystream = this._keystream = iv.slice(0);
+
+ // Remove IV for subsequent blocks
+ this._iv = undefined;
+ }
+ cipher.encryptBlock(keystream, 0);
+
+ // Encrypt
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= keystream[i];
+ }
+ }
+ });
+
+ OFB.Decryptor = Encryptor;
+
+ return OFB;
+ }());
+
+
+ /**
+ * Electronic Codebook block mode.
+ */
+ CryptoJS.mode.ECB = (function() {
+ var ECB = CryptoJS.lib.BlockCipherMode.extend();
+
+ ECB.Encryptor = ECB.extend({
+ processBlock: function(words, offset) {
+ this._cipher.encryptBlock(words, offset);
+ }
+ });
+
+ ECB.Decryptor = ECB.extend({
+ processBlock: function(words, offset) {
+ this._cipher.decryptBlock(words, offset);
+ }
+ });
+
+ return ECB;
+ }());
+
+
+ /**
+ * ANSI X.923 padding strategy.
+ */
+ CryptoJS.pad.AnsiX923 = {
+ pad: function(data, blockSize) {
+ // Shortcuts
+ var dataSigBytes = data.sigBytes;
+ var blockSizeBytes = blockSize * 4;
+
+ // Count padding bytes
+ var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
+
+ // Compute last byte position
+ var lastBytePos = dataSigBytes + nPaddingBytes - 1;
+
+ // Pad
+ data.clamp();
+ data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);
+ data.sigBytes += nPaddingBytes;
+ },
+
+ unpad: function(data) {
+ // Get number of padding bytes from last byte
+ var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
+
+ // Remove padding
+ data.sigBytes -= nPaddingBytes;
+ }
+ };
+
+
+ /**
+ * ISO 10126 padding strategy.
+ */
+ CryptoJS.pad.Iso10126 = {
+ pad: function(data, blockSize) {
+ // Shortcut
+ var blockSizeBytes = blockSize * 4;
+
+ // Count padding bytes
+ var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
+
+ // Pad
+ data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).
+ concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
+ },
+
+ unpad: function(data) {
+ // Get number of padding bytes from last byte
+ var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
+
+ // Remove padding
+ data.sigBytes -= nPaddingBytes;
+ }
+ };
+
+
+ /**
+ * ISO/IEC 9797-1 Padding Method 2.
+ */
+ CryptoJS.pad.Iso97971 = {
+ pad: function(data, blockSize) {
+ // Add 0x80 byte
+ data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));
+
+ // Zero pad the rest
+ CryptoJS.pad.ZeroPadding.pad(data, blockSize);
+ },
+
+ unpad: function(data) {
+ // Remove zero padding
+ CryptoJS.pad.ZeroPadding.unpad(data);
+
+ // Remove one more byte -- the 0x80 byte
+ data.sigBytes--;
+ }
+ };
+
+
+ /**
+ * Zero padding strategy.
+ */
+ CryptoJS.pad.ZeroPadding = {
+ pad: function(data, blockSize) {
+ // Shortcut
+ var blockSizeBytes = blockSize * 4;
+
+ // Pad
+ data.clamp();
+ data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
+ },
+
+ unpad: function(data) {
+ // Shortcut
+ var dataWords = data.words;
+
+ // Unpad
+ var i = data.sigBytes - 1;
+ for (var i = data.sigBytes - 1; i >= 0; i--) {
+ if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
+ data.sigBytes = i + 1;
+ break;
+ }
+ }
+ }
+ };
+
+
+ /**
+ * A noop padding strategy.
+ */
+ CryptoJS.pad.NoPadding = {
+ pad: function() {},
+
+ unpad: function() {}
+ };
+
+
+ (function(undefined) {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var CipherParams = C_lib.CipherParams;
+ var C_enc = C.enc;
+ var Hex = C_enc.Hex;
+ var C_format = C.format;
+
+ var HexFormatter = C_format.Hex = {
+ /**
+ * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
+ *
+ * @param {CipherParams} cipherParams The cipher params object.
+ *
+ * @return {string} The hexadecimally encoded string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hexString = CryptoJS.format.Hex.stringify(cipherParams);
+ */
+ stringify: function(cipherParams) {
+ return cipherParams.ciphertext.toString(Hex);
+ },
+
+ /**
+ * Converts a hexadecimally encoded ciphertext string to a cipher params object.
+ *
+ * @param {string} input The hexadecimally encoded string.
+ *
+ * @return {CipherParams} The cipher params object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var cipherParams = CryptoJS.format.Hex.parse(hexString);
+ */
+ parse: function(input) {
+ var ciphertext = Hex.parse(input);
+ return CipherParams.create({
+ ciphertext: ciphertext
+ });
+ }
+ };
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var BlockCipher = C_lib.BlockCipher;
+ var C_algo = C.algo;
+
+ // Lookup tables
+ var SBOX = [];
+ var INV_SBOX = [];
+ var SUB_MIX_0 = [];
+ var SUB_MIX_1 = [];
+ var SUB_MIX_2 = [];
+ var SUB_MIX_3 = [];
+ var INV_SUB_MIX_0 = [];
+ var INV_SUB_MIX_1 = [];
+ var INV_SUB_MIX_2 = [];
+ var INV_SUB_MIX_3 = [];
+
+ // Compute lookup tables
+ (function() {
+ // Compute double table
+ var d = [];
+ for (var i = 0; i < 256; i++) {
+ if (i < 128) {
+ d[i] = i << 1;
+ } else {
+ d[i] = (i << 1) ^ 0x11b;
+ }
+ }
+
+ // Walk GF(2^8)
+ var x = 0;
+ var xi = 0;
+ for (var i = 0; i < 256; i++) {
+ // Compute sbox
+ var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);
+ sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;
+ SBOX[x] = sx;
+ INV_SBOX[sx] = x;
+
+ // Compute multiplication
+ var x2 = d[x];
+ var x4 = d[x2];
+ var x8 = d[x4];
+
+ // Compute sub bytes, mix columns tables
+ var t = (d[sx] * 0x101) ^ (sx * 0x1010100);
+ SUB_MIX_0[x] = (t << 24) | (t >>> 8);
+ SUB_MIX_1[x] = (t << 16) | (t >>> 16);
+ SUB_MIX_2[x] = (t << 8) | (t >>> 24);
+ SUB_MIX_3[x] = t;
+
+ // Compute inv sub bytes, inv mix columns tables
+ var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);
+ INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);
+ INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);
+ INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);
+ INV_SUB_MIX_3[sx] = t;
+
+ // Compute next counter
+ if (!x) {
+ x = xi = 1;
+ } else {
+ x = x2 ^ d[d[d[x8 ^ x2]]];
+ xi ^= d[d[xi]];
+ }
+ }
+ }());
+
+ // Precomputed Rcon lookup
+ var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
+
+ /**
+ * AES block cipher algorithm.
+ */
+ var AES = C_algo.AES = BlockCipher.extend({
+ _doReset: function() {
+ var t;
+
+ // Skip reset of nRounds has been set before and key did not change
+ if (this._nRounds && this._keyPriorReset === this._key) {
+ return;
+ }
+
+ // Shortcuts
+ var key = this._keyPriorReset = this._key;
+ var keyWords = key.words;
+ var keySize = key.sigBytes / 4;
+
+ // Compute number of rounds
+ var nRounds = this._nRounds = keySize + 6;
+
+ // Compute number of key schedule rows
+ var ksRows = (nRounds + 1) * 4;
+
+ // Compute key schedule
+ var keySchedule = this._keySchedule = [];
+ for (var ksRow = 0; ksRow < ksRows; ksRow++) {
+ if (ksRow < keySize) {
+ keySchedule[ksRow] = keyWords[ksRow];
+ } else {
+ t = keySchedule[ksRow - 1];
+
+ if (!(ksRow % keySize)) {
+ // Rot word
+ t = (t << 8) | (t >>> 24);
+
+ // Sub word
+ t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
+
+ // Mix Rcon
+ t ^= RCON[(ksRow / keySize) | 0] << 24;
+ } else if (keySize > 6 && ksRow % keySize == 4) {
+ // Sub word
+ t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
+ }
+
+ keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
+ }
+ }
+
+ // Compute inv key schedule
+ var invKeySchedule = this._invKeySchedule = [];
+ for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
+ var ksRow = ksRows - invKsRow;
+
+ if (invKsRow % 4) {
+ var t = keySchedule[ksRow];
+ } else {
+ var t = keySchedule[ksRow - 4];
+ }
+
+ if (invKsRow < 4 || ksRow <= 4) {
+ invKeySchedule[invKsRow] = t;
+ } else {
+ invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^
+ INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];
+ }
+ }
+ },
+
+ encryptBlock: function(M, offset) {
+ this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
+ },
+
+ decryptBlock: function(M, offset) {
+ // Swap 2nd and 4th rows
+ var t = M[offset + 1];
+ M[offset + 1] = M[offset + 3];
+ M[offset + 3] = t;
+
+ this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
+
+ // Inv swap 2nd and 4th rows
+ var t = M[offset + 1];
+ M[offset + 1] = M[offset + 3];
+ M[offset + 3] = t;
+ },
+
+ _doCryptBlock: function(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
+ // Shortcut
+ var nRounds = this._nRounds;
+
+ // Get input, add round key
+ var s0 = M[offset] ^ keySchedule[0];
+ var s1 = M[offset + 1] ^ keySchedule[1];
+ var s2 = M[offset + 2] ^ keySchedule[2];
+ var s3 = M[offset + 3] ^ keySchedule[3];
+
+ // Key schedule row counter
+ var ksRow = 4;
+
+ // Rounds
+ for (var round = 1; round < nRounds; round++) {
+ // Shift rows, sub bytes, mix columns, add round key
+ var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];
+ var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];
+ var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];
+ var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];
+
+ // Update state
+ s0 = t0;
+ s1 = t1;
+ s2 = t2;
+ s3 = t3;
+ }
+
+ // Shift rows, sub bytes, add round key
+ var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];
+ var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];
+ var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];
+ var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];
+
+ // Set output
+ M[offset] = t0;
+ M[offset + 1] = t1;
+ M[offset + 2] = t2;
+ M[offset + 3] = t3;
+ },
+
+ keySize: 256 / 32
+ });
+
+ /**
+ * Shortcut functions to the cipher's object interface.
+ *
+ * @example
+ *
+ * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);
+ * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);
+ */
+ C.AES = BlockCipher._createHelper(AES);
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var BlockCipher = C_lib.BlockCipher;
+ var C_algo = C.algo;
+
+ // Permuted Choice 1 constants
+ var PC1 = [
+ 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
+ ];
+
+ // Permuted Choice 2 constants
+ var PC2 = [
+ 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
+ ];
+
+ // Cumulative bit shift constants
+ var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
+
+ // SBOXes and round permutation constants
+ var SBOX_P = [{
+ 0x0: 0x808200,
+ 0x10000000: 0x8000,
+ 0x20000000: 0x808002,
+ 0x30000000: 0x2,
+ 0x40000000: 0x200,
+ 0x50000000: 0x808202,
+ 0x60000000: 0x800202,
+ 0x70000000: 0x800000,
+ 0x80000000: 0x202,
+ 0x90000000: 0x800200,
+ 0xa0000000: 0x8200,
+ 0xb0000000: 0x808000,
+ 0xc0000000: 0x8002,
+ 0xd0000000: 0x800002,
+ 0xe0000000: 0x0,
+ 0xf0000000: 0x8202,
+ 0x8000000: 0x0,
+ 0x18000000: 0x808202,
+ 0x28000000: 0x8202,
+ 0x38000000: 0x8000,
+ 0x48000000: 0x808200,
+ 0x58000000: 0x200,
+ 0x68000000: 0x808002,
+ 0x78000000: 0x2,
+ 0x88000000: 0x800200,
+ 0x98000000: 0x8200,
+ 0xa8000000: 0x808000,
+ 0xb8000000: 0x800202,
+ 0xc8000000: 0x800002,
+ 0xd8000000: 0x8002,
+ 0xe8000000: 0x202,
+ 0xf8000000: 0x800000,
+ 0x1: 0x8000,
+ 0x10000001: 0x2,
+ 0x20000001: 0x808200,
+ 0x30000001: 0x800000,
+ 0x40000001: 0x808002,
+ 0x50000001: 0x8200,
+ 0x60000001: 0x200,
+ 0x70000001: 0x800202,
+ 0x80000001: 0x808202,
+ 0x90000001: 0x808000,
+ 0xa0000001: 0x800002,
+ 0xb0000001: 0x8202,
+ 0xc0000001: 0x202,
+ 0xd0000001: 0x800200,
+ 0xe0000001: 0x8002,
+ 0xf0000001: 0x0,
+ 0x8000001: 0x808202,
+ 0x18000001: 0x808000,
+ 0x28000001: 0x800000,
+ 0x38000001: 0x200,
+ 0x48000001: 0x8000,
+ 0x58000001: 0x800002,
+ 0x68000001: 0x2,
+ 0x78000001: 0x8202,
+ 0x88000001: 0x8002,
+ 0x98000001: 0x800202,
+ 0xa8000001: 0x202,
+ 0xb8000001: 0x808200,
+ 0xc8000001: 0x800200,
+ 0xd8000001: 0x0,
+ 0xe8000001: 0x8200,
+ 0xf8000001: 0x808002
+ },
+ {
+ 0x0: 0x40084010,
+ 0x1000000: 0x4000,
+ 0x2000000: 0x80000,
+ 0x3000000: 0x40080010,
+ 0x4000000: 0x40000010,
+ 0x5000000: 0x40084000,
+ 0x6000000: 0x40004000,
+ 0x7000000: 0x10,
+ 0x8000000: 0x84000,
+ 0x9000000: 0x40004010,
+ 0xa000000: 0x40000000,
+ 0xb000000: 0x84010,
+ 0xc000000: 0x80010,
+ 0xd000000: 0x0,
+ 0xe000000: 0x4010,
+ 0xf000000: 0x40080000,
+ 0x800000: 0x40004000,
+ 0x1800000: 0x84010,
+ 0x2800000: 0x10,
+ 0x3800000: 0x40004010,
+ 0x4800000: 0x40084010,
+ 0x5800000: 0x40000000,
+ 0x6800000: 0x80000,
+ 0x7800000: 0x40080010,
+ 0x8800000: 0x80010,
+ 0x9800000: 0x0,
+ 0xa800000: 0x4000,
+ 0xb800000: 0x40080000,
+ 0xc800000: 0x40000010,
+ 0xd800000: 0x84000,
+ 0xe800000: 0x40084000,
+ 0xf800000: 0x4010,
+ 0x10000000: 0x0,
+ 0x11000000: 0x40080010,
+ 0x12000000: 0x40004010,
+ 0x13000000: 0x40084000,
+ 0x14000000: 0x40080000,
+ 0x15000000: 0x10,
+ 0x16000000: 0x84010,
+ 0x17000000: 0x4000,
+ 0x18000000: 0x4010,
+ 0x19000000: 0x80000,
+ 0x1a000000: 0x80010,
+ 0x1b000000: 0x40000010,
+ 0x1c000000: 0x84000,
+ 0x1d000000: 0x40004000,
+ 0x1e000000: 0x40000000,
+ 0x1f000000: 0x40084010,
+ 0x10800000: 0x84010,
+ 0x11800000: 0x80000,
+ 0x12800000: 0x40080000,
+ 0x13800000: 0x4000,
+ 0x14800000: 0x40004000,
+ 0x15800000: 0x40084010,
+ 0x16800000: 0x10,
+ 0x17800000: 0x40000000,
+ 0x18800000: 0x40084000,
+ 0x19800000: 0x40000010,
+ 0x1a800000: 0x40004010,
+ 0x1b800000: 0x80010,
+ 0x1c800000: 0x0,
+ 0x1d800000: 0x4010,
+ 0x1e800000: 0x40080010,
+ 0x1f800000: 0x84000
+ },
+ {
+ 0x0: 0x104,
+ 0x100000: 0x0,
+ 0x200000: 0x4000100,
+ 0x300000: 0x10104,
+ 0x400000: 0x10004,
+ 0x500000: 0x4000004,
+ 0x600000: 0x4010104,
+ 0x700000: 0x4010000,
+ 0x800000: 0x4000000,
+ 0x900000: 0x4010100,
+ 0xa00000: 0x10100,
+ 0xb00000: 0x4010004,
+ 0xc00000: 0x4000104,
+ 0xd00000: 0x10000,
+ 0xe00000: 0x4,
+ 0xf00000: 0x100,
+ 0x80000: 0x4010100,
+ 0x180000: 0x4010004,
+ 0x280000: 0x0,
+ 0x380000: 0x4000100,
+ 0x480000: 0x4000004,
+ 0x580000: 0x10000,
+ 0x680000: 0x10004,
+ 0x780000: 0x104,
+ 0x880000: 0x4,
+ 0x980000: 0x100,
+ 0xa80000: 0x4010000,
+ 0xb80000: 0x10104,
+ 0xc80000: 0x10100,
+ 0xd80000: 0x4000104,
+ 0xe80000: 0x4010104,
+ 0xf80000: 0x4000000,
+ 0x1000000: 0x4010100,
+ 0x1100000: 0x10004,
+ 0x1200000: 0x10000,
+ 0x1300000: 0x4000100,
+ 0x1400000: 0x100,
+ 0x1500000: 0x4010104,
+ 0x1600000: 0x4000004,
+ 0x1700000: 0x0,
+ 0x1800000: 0x4000104,
+ 0x1900000: 0x4000000,
+ 0x1a00000: 0x4,
+ 0x1b00000: 0x10100,
+ 0x1c00000: 0x4010000,
+ 0x1d00000: 0x104,
+ 0x1e00000: 0x10104,
+ 0x1f00000: 0x4010004,
+ 0x1080000: 0x4000000,
+ 0x1180000: 0x104,
+ 0x1280000: 0x4010100,
+ 0x1380000: 0x0,
+ 0x1480000: 0x10004,
+ 0x1580000: 0x4000100,
+ 0x1680000: 0x100,
+ 0x1780000: 0x4010004,
+ 0x1880000: 0x10000,
+ 0x1980000: 0x4010104,
+ 0x1a80000: 0x10104,
+ 0x1b80000: 0x4000004,
+ 0x1c80000: 0x4000104,
+ 0x1d80000: 0x4010000,
+ 0x1e80000: 0x4,
+ 0x1f80000: 0x10100
+ },
+ {
+ 0x0: 0x80401000,
+ 0x10000: 0x80001040,
+ 0x20000: 0x401040,
+ 0x30000: 0x80400000,
+ 0x40000: 0x0,
+ 0x50000: 0x401000,
+ 0x60000: 0x80000040,
+ 0x70000: 0x400040,
+ 0x80000: 0x80000000,
+ 0x90000: 0x400000,
+ 0xa0000: 0x40,
+ 0xb0000: 0x80001000,
+ 0xc0000: 0x80400040,
+ 0xd0000: 0x1040,
+ 0xe0000: 0x1000,
+ 0xf0000: 0x80401040,
+ 0x8000: 0x80001040,
+ 0x18000: 0x40,
+ 0x28000: 0x80400040,
+ 0x38000: 0x80001000,
+ 0x48000: 0x401000,
+ 0x58000: 0x80401040,
+ 0x68000: 0x0,
+ 0x78000: 0x80400000,
+ 0x88000: 0x1000,
+ 0x98000: 0x80401000,
+ 0xa8000: 0x400000,
+ 0xb8000: 0x1040,
+ 0xc8000: 0x80000000,
+ 0xd8000: 0x400040,
+ 0xe8000: 0x401040,
+ 0xf8000: 0x80000040,
+ 0x100000: 0x400040,
+ 0x110000: 0x401000,
+ 0x120000: 0x80000040,
+ 0x130000: 0x0,
+ 0x140000: 0x1040,
+ 0x150000: 0x80400040,
+ 0x160000: 0x80401000,
+ 0x170000: 0x80001040,
+ 0x180000: 0x80401040,
+ 0x190000: 0x80000000,
+ 0x1a0000: 0x80400000,
+ 0x1b0000: 0x401040,
+ 0x1c0000: 0x80001000,
+ 0x1d0000: 0x400000,
+ 0x1e0000: 0x40,
+ 0x1f0000: 0x1000,
+ 0x108000: 0x80400000,
+ 0x118000: 0x80401040,
+ 0x128000: 0x0,
+ 0x138000: 0x401000,
+ 0x148000: 0x400040,
+ 0x158000: 0x80000000,
+ 0x168000: 0x80001040,
+ 0x178000: 0x40,
+ 0x188000: 0x80000040,
+ 0x198000: 0x1000,
+ 0x1a8000: 0x80001000,
+ 0x1b8000: 0x80400040,
+ 0x1c8000: 0x1040,
+ 0x1d8000: 0x80401000,
+ 0x1e8000: 0x400000,
+ 0x1f8000: 0x401040
+ },
+ {
+ 0x0: 0x80,
+ 0x1000: 0x1040000,
+ 0x2000: 0x40000,
+ 0x3000: 0x20000000,
+ 0x4000: 0x20040080,
+ 0x5000: 0x1000080,
+ 0x6000: 0x21000080,
+ 0x7000: 0x40080,
+ 0x8000: 0x1000000,
+ 0x9000: 0x20040000,
+ 0xa000: 0x20000080,
+ 0xb000: 0x21040080,
+ 0xc000: 0x21040000,
+ 0xd000: 0x0,
+ 0xe000: 0x1040080,
+ 0xf000: 0x21000000,
+ 0x800: 0x1040080,
+ 0x1800: 0x21000080,
+ 0x2800: 0x80,
+ 0x3800: 0x1040000,
+ 0x4800: 0x40000,
+ 0x5800: 0x20040080,
+ 0x6800: 0x21040000,
+ 0x7800: 0x20000000,
+ 0x8800: 0x20040000,
+ 0x9800: 0x0,
+ 0xa800: 0x21040080,
+ 0xb800: 0x1000080,
+ 0xc800: 0x20000080,
+ 0xd800: 0x21000000,
+ 0xe800: 0x1000000,
+ 0xf800: 0x40080,
+ 0x10000: 0x40000,
+ 0x11000: 0x80,
+ 0x12000: 0x20000000,
+ 0x13000: 0x21000080,
+ 0x14000: 0x1000080,
+ 0x15000: 0x21040000,
+ 0x16000: 0x20040080,
+ 0x17000: 0x1000000,
+ 0x18000: 0x21040080,
+ 0x19000: 0x21000000,
+ 0x1a000: 0x1040000,
+ 0x1b000: 0x20040000,
+ 0x1c000: 0x40080,
+ 0x1d000: 0x20000080,
+ 0x1e000: 0x0,
+ 0x1f000: 0x1040080,
+ 0x10800: 0x21000080,
+ 0x11800: 0x1000000,
+ 0x12800: 0x1040000,
+ 0x13800: 0x20040080,
+ 0x14800: 0x20000000,
+ 0x15800: 0x1040080,
+ 0x16800: 0x80,
+ 0x17800: 0x21040000,
+ 0x18800: 0x40080,
+ 0x19800: 0x21040080,
+ 0x1a800: 0x0,
+ 0x1b800: 0x21000000,
+ 0x1c800: 0x1000080,
+ 0x1d800: 0x40000,
+ 0x1e800: 0x20040000,
+ 0x1f800: 0x20000080
+ },
+ {
+ 0x0: 0x10000008,
+ 0x100: 0x2000,
+ 0x200: 0x10200000,
+ 0x300: 0x10202008,
+ 0x400: 0x10002000,
+ 0x500: 0x200000,
+ 0x600: 0x200008,
+ 0x700: 0x10000000,
+ 0x800: 0x0,
+ 0x900: 0x10002008,
+ 0xa00: 0x202000,
+ 0xb00: 0x8,
+ 0xc00: 0x10200008,
+ 0xd00: 0x202008,
+ 0xe00: 0x2008,
+ 0xf00: 0x10202000,
+ 0x80: 0x10200000,
+ 0x180: 0x10202008,
+ 0x280: 0x8,
+ 0x380: 0x200000,
+ 0x480: 0x202008,
+ 0x580: 0x10000008,
+ 0x680: 0x10002000,
+ 0x780: 0x2008,
+ 0x880: 0x200008,
+ 0x980: 0x2000,
+ 0xa80: 0x10002008,
+ 0xb80: 0x10200008,
+ 0xc80: 0x0,
+ 0xd80: 0x10202000,
+ 0xe80: 0x202000,
+ 0xf80: 0x10000000,
+ 0x1000: 0x10002000,
+ 0x1100: 0x10200008,
+ 0x1200: 0x10202008,
+ 0x1300: 0x2008,
+ 0x1400: 0x200000,
+ 0x1500: 0x10000000,
+ 0x1600: 0x10000008,
+ 0x1700: 0x202000,
+ 0x1800: 0x202008,
+ 0x1900: 0x0,
+ 0x1a00: 0x8,
+ 0x1b00: 0x10200000,
+ 0x1c00: 0x2000,
+ 0x1d00: 0x10002008,
+ 0x1e00: 0x10202000,
+ 0x1f00: 0x200008,
+ 0x1080: 0x8,
+ 0x1180: 0x202000,
+ 0x1280: 0x200000,
+ 0x1380: 0x10000008,
+ 0x1480: 0x10002000,
+ 0x1580: 0x2008,
+ 0x1680: 0x10202008,
+ 0x1780: 0x10200000,
+ 0x1880: 0x10202000,
+ 0x1980: 0x10200008,
+ 0x1a80: 0x2000,
+ 0x1b80: 0x202008,
+ 0x1c80: 0x200008,
+ 0x1d80: 0x0,
+ 0x1e80: 0x10000000,
+ 0x1f80: 0x10002008
+ },
+ {
+ 0x0: 0x100000,
+ 0x10: 0x2000401,
+ 0x20: 0x400,
+ 0x30: 0x100401,
+ 0x40: 0x2100401,
+ 0x50: 0x0,
+ 0x60: 0x1,
+ 0x70: 0x2100001,
+ 0x80: 0x2000400,
+ 0x90: 0x100001,
+ 0xa0: 0x2000001,
+ 0xb0: 0x2100400,
+ 0xc0: 0x2100000,
+ 0xd0: 0x401,
+ 0xe0: 0x100400,
+ 0xf0: 0x2000000,
+ 0x8: 0x2100001,
+ 0x18: 0x0,
+ 0x28: 0x2000401,
+ 0x38: 0x2100400,
+ 0x48: 0x100000,
+ 0x58: 0x2000001,
+ 0x68: 0x2000000,
+ 0x78: 0x401,
+ 0x88: 0x100401,
+ 0x98: 0x2000400,
+ 0xa8: 0x2100000,
+ 0xb8: 0x100001,
+ 0xc8: 0x400,
+ 0xd8: 0x2100401,
+ 0xe8: 0x1,
+ 0xf8: 0x100400,
+ 0x100: 0x2000000,
+ 0x110: 0x100000,
+ 0x120: 0x2000401,
+ 0x130: 0x2100001,
+ 0x140: 0x100001,
+ 0x150: 0x2000400,
+ 0x160: 0x2100400,
+ 0x170: 0x100401,
+ 0x180: 0x401,
+ 0x190: 0x2100401,
+ 0x1a0: 0x100400,
+ 0x1b0: 0x1,
+ 0x1c0: 0x0,
+ 0x1d0: 0x2100000,
+ 0x1e0: 0x2000001,
+ 0x1f0: 0x400,
+ 0x108: 0x100400,
+ 0x118: 0x2000401,
+ 0x128: 0x2100001,
+ 0x138: 0x1,
+ 0x148: 0x2000000,
+ 0x158: 0x100000,
+ 0x168: 0x401,
+ 0x178: 0x2100400,
+ 0x188: 0x2000001,
+ 0x198: 0x2100000,
+ 0x1a8: 0x0,
+ 0x1b8: 0x2100401,
+ 0x1c8: 0x100401,
+ 0x1d8: 0x400,
+ 0x1e8: 0x2000400,
+ 0x1f8: 0x100001
+ },
+ {
+ 0x0: 0x8000820,
+ 0x1: 0x20000,
+ 0x2: 0x8000000,
+ 0x3: 0x20,
+ 0x4: 0x20020,
+ 0x5: 0x8020820,
+ 0x6: 0x8020800,
+ 0x7: 0x800,
+ 0x8: 0x8020000,
+ 0x9: 0x8000800,
+ 0xa: 0x20800,
+ 0xb: 0x8020020,
+ 0xc: 0x820,
+ 0xd: 0x0,
+ 0xe: 0x8000020,
+ 0xf: 0x20820,
+ 0x80000000: 0x800,
+ 0x80000001: 0x8020820,
+ 0x80000002: 0x8000820,
+ 0x80000003: 0x8000000,
+ 0x80000004: 0x8020000,
+ 0x80000005: 0x20800,
+ 0x80000006: 0x20820,
+ 0x80000007: 0x20,
+ 0x80000008: 0x8000020,
+ 0x80000009: 0x820,
+ 0x8000000a: 0x20020,
+ 0x8000000b: 0x8020800,
+ 0x8000000c: 0x0,
+ 0x8000000d: 0x8020020,
+ 0x8000000e: 0x8000800,
+ 0x8000000f: 0x20000,
+ 0x10: 0x20820,
+ 0x11: 0x8020800,
+ 0x12: 0x20,
+ 0x13: 0x800,
+ 0x14: 0x8000800,
+ 0x15: 0x8000020,
+ 0x16: 0x8020020,
+ 0x17: 0x20000,
+ 0x18: 0x0,
+ 0x19: 0x20020,
+ 0x1a: 0x8020000,
+ 0x1b: 0x8000820,
+ 0x1c: 0x8020820,
+ 0x1d: 0x20800,
+ 0x1e: 0x820,
+ 0x1f: 0x8000000,
+ 0x80000010: 0x20000,
+ 0x80000011: 0x800,
+ 0x80000012: 0x8020020,
+ 0x80000013: 0x20820,
+ 0x80000014: 0x20,
+ 0x80000015: 0x8020000,
+ 0x80000016: 0x8000000,
+ 0x80000017: 0x8000820,
+ 0x80000018: 0x8020820,
+ 0x80000019: 0x8000020,
+ 0x8000001a: 0x8000800,
+ 0x8000001b: 0x0,
+ 0x8000001c: 0x20800,
+ 0x8000001d: 0x820,
+ 0x8000001e: 0x20020,
+ 0x8000001f: 0x8020800
+ }
+ ];
+
+ // Masks that select the SBOX input
+ var SBOX_MASK = [
+ 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,
+ 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f
+ ];
+
+ /**
+ * DES block cipher algorithm.
+ */
+ var DES = C_algo.DES = BlockCipher.extend({
+ _doReset: function() {
+ // Shortcuts
+ var key = this._key;
+ var keyWords = key.words;
+
+ // Select 56 bits according to PC1
+ var keyBits = [];
+ for (var i = 0; i < 56; i++) {
+ var keyBitPos = PC1[i] - 1;
+ keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;
+ }
+
+ // Assemble 16 subkeys
+ var subKeys = this._subKeys = [];
+ for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
+ // Create subkey
+ var subKey = subKeys[nSubKey] = [];
+
+ // Shortcut
+ var bitShift = BIT_SHIFTS[nSubKey];
+
+ // Select 48 bits according to PC2
+ for (var i = 0; i < 24; i++) {
+ // Select from the left 28 key bits
+ subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);
+
+ // Select from the right 28 key bits
+ subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);
+ }
+
+ // Since each subkey is applied to an expanded 32-bit input,
+ // the subkey can be broken into 8 values scaled to 32-bits,
+ // which allows the key to be used without expansion
+ subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);
+ for (var i = 1; i < 7; i++) {
+ subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);
+ }
+ subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);
+ }
+
+ // Compute inverse subkeys
+ var invSubKeys = this._invSubKeys = [];
+ for (var i = 0; i < 16; i++) {
+ invSubKeys[i] = subKeys[15 - i];
+ }
+ },
+
+ encryptBlock: function(M, offset) {
+ this._doCryptBlock(M, offset, this._subKeys);
+ },
+
+ decryptBlock: function(M, offset) {
+ this._doCryptBlock(M, offset, this._invSubKeys);
+ },
+
+ _doCryptBlock: function(M, offset, subKeys) {
+ // Get input
+ this._lBlock = M[offset];
+ this._rBlock = M[offset + 1];
+
+ // Initial permutation
+ exchangeLR.call(this, 4, 0x0f0f0f0f);
+ exchangeLR.call(this, 16, 0x0000ffff);
+ exchangeRL.call(this, 2, 0x33333333);
+ exchangeRL.call(this, 8, 0x00ff00ff);
+ exchangeLR.call(this, 1, 0x55555555);
+
+ // Rounds
+ for (var round = 0; round < 16; round++) {
+ // Shortcuts
+ var subKey = subKeys[round];
+ var lBlock = this._lBlock;
+ var rBlock = this._rBlock;
+
+ // Feistel function
+ var f = 0;
+ for (var i = 0; i < 8; i++) {
+ f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];
+ }
+ this._lBlock = rBlock;
+ this._rBlock = lBlock ^ f;
+ }
+
+ // Undo swap from last round
+ var t = this._lBlock;
+ this._lBlock = this._rBlock;
+ this._rBlock = t;
+
+ // Final permutation
+ exchangeLR.call(this, 1, 0x55555555);
+ exchangeRL.call(this, 8, 0x00ff00ff);
+ exchangeRL.call(this, 2, 0x33333333);
+ exchangeLR.call(this, 16, 0x0000ffff);
+ exchangeLR.call(this, 4, 0x0f0f0f0f);
+
+ // Set output
+ M[offset] = this._lBlock;
+ M[offset + 1] = this._rBlock;
+ },
+
+ keySize: 64 / 32,
+
+ ivSize: 64 / 32,
+
+ blockSize: 64 / 32
+ });
+
+ // Swap bits across the left and right words
+ function exchangeLR(offset, mask) {
+ var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;
+ this._rBlock ^= t;
+ this._lBlock ^= t << offset;
+ }
+
+ function exchangeRL(offset, mask) {
+ var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;
+ this._lBlock ^= t;
+ this._rBlock ^= t << offset;
+ }
+
+ /**
+ * Shortcut functions to the cipher's object interface.
+ *
+ * @example
+ *
+ * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);
+ * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);
+ */
+ C.DES = BlockCipher._createHelper(DES);
+
+ /**
+ * Triple-DES block cipher algorithm.
+ */
+ var TripleDES = C_algo.TripleDES = BlockCipher.extend({
+ _doReset: function() {
+ // Shortcuts
+ var key = this._key;
+ var keyWords = key.words;
+ // Make sure the key length is valid (64, 128 or >= 192 bit)
+ if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {
+ throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');
+ }
+
+ // Extend the key according to the keying options defined in 3DES standard
+ var key1 = keyWords.slice(0, 2);
+ var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);
+ var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);
+
+ // Create DES instances
+ this._des1 = DES.createEncryptor(WordArray.create(key1));
+ this._des2 = DES.createEncryptor(WordArray.create(key2));
+ this._des3 = DES.createEncryptor(WordArray.create(key3));
+ },
+
+ encryptBlock: function(M, offset) {
+ this._des1.encryptBlock(M, offset);
+ this._des2.decryptBlock(M, offset);
+ this._des3.encryptBlock(M, offset);
+ },
+
+ decryptBlock: function(M, offset) {
+ this._des3.decryptBlock(M, offset);
+ this._des2.encryptBlock(M, offset);
+ this._des1.decryptBlock(M, offset);
+ },
+
+ keySize: 192 / 32,
+
+ ivSize: 64 / 32,
+
+ blockSize: 64 / 32
+ });
+
+ /**
+ * Shortcut functions to the cipher's object interface.
+ *
+ * @example
+ *
+ * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);
+ * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);
+ */
+ C.TripleDES = BlockCipher._createHelper(TripleDES);
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var StreamCipher = C_lib.StreamCipher;
+ var C_algo = C.algo;
+
+ /**
+ * RC4 stream cipher algorithm.
+ */
+ var RC4 = C_algo.RC4 = StreamCipher.extend({
+ _doReset: function() {
+ // Shortcuts
+ var key = this._key;
+ var keyWords = key.words;
+ var keySigBytes = key.sigBytes;
+
+ // Init sbox
+ var S = this._S = [];
+ for (var i = 0; i < 256; i++) {
+ S[i] = i;
+ }
+
+ // Key setup
+ for (var i = 0, j = 0; i < 256; i++) {
+ var keyByteIndex = i % keySigBytes;
+ var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;
+
+ j = (j + S[i] + keyByte) % 256;
+
+ // Swap
+ var t = S[i];
+ S[i] = S[j];
+ S[j] = t;
+ }
+
+ // Counters
+ this._i = this._j = 0;
+ },
+
+ _doProcessBlock: function(M, offset) {
+ M[offset] ^= generateKeystreamWord.call(this);
+ },
+
+ keySize: 256 / 32,
+
+ ivSize: 0
+ });
+
+ function generateKeystreamWord() {
+ // Shortcuts
+ var S = this._S;
+ var i = this._i;
+ var j = this._j;
+
+ // Generate keystream word
+ var keystreamWord = 0;
+ for (var n = 0; n < 4; n++) {
+ i = (i + 1) % 256;
+ j = (j + S[i]) % 256;
+
+ // Swap
+ var t = S[i];
+ S[i] = S[j];
+ S[j] = t;
+
+ keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);
+ }
+
+ // Update counters
+ this._i = i;
+ this._j = j;
+
+ return keystreamWord;
+ }
+
+ /**
+ * Shortcut functions to the cipher's object interface.
+ *
+ * @example
+ *
+ * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
+ * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
+ */
+ C.RC4 = StreamCipher._createHelper(RC4);
+
+ /**
+ * Modified RC4 stream cipher algorithm.
+ */
+ var RC4Drop = C_algo.RC4Drop = RC4.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {number} drop The number of keystream words to drop. Default 192
+ */
+ cfg: RC4.cfg.extend({
+ drop: 192
+ }),
+
+ _doReset: function() {
+ RC4._doReset.call(this);
+
+ // Drop
+ for (var i = this.cfg.drop; i > 0; i--) {
+ generateKeystreamWord.call(this);
+ }
+ }
+ });
+
+ /**
+ * Shortcut functions to the cipher's object interface.
+ *
+ * @example
+ *
+ * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
+ * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
+ */
+ C.RC4Drop = StreamCipher._createHelper(RC4Drop);
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var StreamCipher = C_lib.StreamCipher;
+ var C_algo = C.algo;
+
+ // Reusable objects
+ var S = [];
+ var C_ = [];
+ var G = [];
+
+ /**
+ * Rabbit stream cipher algorithm
+ */
+ var Rabbit = C_algo.Rabbit = StreamCipher.extend({
+ _doReset: function() {
+ // Shortcuts
+ var K = this._key.words;
+ var iv = this.cfg.iv;
+
+ // Swap endian
+ for (var i = 0; i < 4; i++) {
+ K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |
+ (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);
+ }
+
+ // Generate initial state values
+ var X = this._X = [
+ K[0], (K[3] << 16) | (K[2] >>> 16),
+ K[1], (K[0] << 16) | (K[3] >>> 16),
+ K[2], (K[1] << 16) | (K[0] >>> 16),
+ K[3], (K[2] << 16) | (K[1] >>> 16)
+ ];
+
+ // Generate initial counter values
+ var C = this._C = [
+ (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
+ (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
+ (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
+ (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
+ ];
+
+ // Carry bit
+ this._b = 0;
+
+ // Iterate the system four times
+ for (var i = 0; i < 4; i++) {
+ nextState.call(this);
+ }
+
+ // Modify the counters
+ for (var i = 0; i < 8; i++) {
+ C[i] ^= X[(i + 4) & 7];
+ }
+
+ // IV setup
+ if (iv) {
+ // Shortcuts
+ var IV = iv.words;
+ var IV_0 = IV[0];
+ var IV_1 = IV[1];
+
+ // Generate four subvectors
+ var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
+ var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
+ var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
+ var i3 = (i2 << 16) | (i0 & 0x0000ffff);
+
+ // Modify counter values
+ C[0] ^= i0;
+ C[1] ^= i1;
+ C[2] ^= i2;
+ C[3] ^= i3;
+ C[4] ^= i0;
+ C[5] ^= i1;
+ C[6] ^= i2;
+ C[7] ^= i3;
+
+ // Iterate the system four times
+ for (var i = 0; i < 4; i++) {
+ nextState.call(this);
+ }
+ }
+ },
+
+ _doProcessBlock: function(M, offset) {
+ // Shortcut
+ var X = this._X;
+
+ // Iterate the system
+ nextState.call(this);
+
+ // Generate four keystream words
+ S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
+ S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
+ S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
+ S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
+
+ for (var i = 0; i < 4; i++) {
+ // Swap endian
+ S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
+ (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
+
+ // Encrypt
+ M[offset + i] ^= S[i];
+ }
+ },
+
+ blockSize: 128 / 32,
+
+ ivSize: 64 / 32
+ });
+
+ function nextState() {
+ // Shortcuts
+ var X = this._X;
+ var C = this._C;
+
+ // Save old counter values
+ for (var i = 0; i < 8; i++) {
+ C_[i] = C[i];
+ }
+
+ // Calculate new counter values
+ C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
+ C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
+ C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
+ C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
+ C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
+ C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
+ C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
+ C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
+ this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
+
+ // Calculate the g-values
+ for (var i = 0; i < 8; i++) {
+ var gx = X[i] + C[i];
+
+ // Construct high and low argument for squaring
+ var ga = gx & 0xffff;
+ var gb = gx >>> 16;
+
+ // Calculate high and low result of squaring
+ var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
+ var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
+
+ // High XOR low
+ G[i] = gh ^ gl;
+ }
+
+ // Calculate new state values
+ X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
+ X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
+ X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
+ X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
+ X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
+ X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
+ X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
+ X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
+ }
+
+ /**
+ * Shortcut functions to the cipher's object interface.
+ *
+ * @example
+ *
+ * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);
+ * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);
+ */
+ C.Rabbit = StreamCipher._createHelper(Rabbit);
+ }());
+
+
+ (function() {
+ // Shortcuts
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var StreamCipher = C_lib.StreamCipher;
+ var C_algo = C.algo;
+
+ // Reusable objects
+ var S = [];
+ var C_ = [];
+ var G = [];
+
+ /**
+ * Rabbit stream cipher algorithm.
+ *
+ * This is a legacy version that neglected to convert the key to little-endian.
+ * This error doesn't affect the cipher's security,
+ * but it does affect its compatibility with other implementations.
+ */
+ var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
+ _doReset: function() {
+ // Shortcuts
+ var K = this._key.words;
+ var iv = this.cfg.iv;
+
+ // Generate initial state values
+ var X = this._X = [
+ K[0], (K[3] << 16) | (K[2] >>> 16),
+ K[1], (K[0] << 16) | (K[3] >>> 16),
+ K[2], (K[1] << 16) | (K[0] >>> 16),
+ K[3], (K[2] << 16) | (K[1] >>> 16)
+ ];
+
+ // Generate initial counter values
+ var C = this._C = [
+ (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
+ (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
+ (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
+ (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
+ ];
+
+ // Carry bit
+ this._b = 0;
+
+ // Iterate the system four times
+ for (var i = 0; i < 4; i++) {
+ nextState.call(this);
+ }
+
+ // Modify the counters
+ for (var i = 0; i < 8; i++) {
+ C[i] ^= X[(i + 4) & 7];
+ }
+
+ // IV setup
+ if (iv) {
+ // Shortcuts
+ var IV = iv.words;
+ var IV_0 = IV[0];
+ var IV_1 = IV[1];
+
+ // Generate four subvectors
+ var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
+ var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
+ var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
+ var i3 = (i2 << 16) | (i0 & 0x0000ffff);
+
+ // Modify counter values
+ C[0] ^= i0;
+ C[1] ^= i1;
+ C[2] ^= i2;
+ C[3] ^= i3;
+ C[4] ^= i0;
+ C[5] ^= i1;
+ C[6] ^= i2;
+ C[7] ^= i3;
+
+ // Iterate the system four times
+ for (var i = 0; i < 4; i++) {
+ nextState.call(this);
+ }
+ }
+ },
+
+ _doProcessBlock: function(M, offset) {
+ // Shortcut
+ var X = this._X;
+
+ // Iterate the system
+ nextState.call(this);
+
+ // Generate four keystream words
+ S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
+ S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
+ S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
+ S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
+
+ for (var i = 0; i < 4; i++) {
+ // Swap endian
+ S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
+ (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
+
+ // Encrypt
+ M[offset + i] ^= S[i];
+ }
+ },
+
+ blockSize: 128 / 32,
+
+ ivSize: 64 / 32
+ });
+
+ function nextState() {
+ // Shortcuts
+ var X = this._X;
+ var C = this._C;
+
+ // Save old counter values
+ for (var i = 0; i < 8; i++) {
+ C_[i] = C[i];
+ }
+
+ // Calculate new counter values
+ C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
+ C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
+ C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
+ C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
+ C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
+ C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
+ C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
+ C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
+ this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
+
+ // Calculate the g-values
+ for (var i = 0; i < 8; i++) {
+ var gx = X[i] + C[i];
+
+ // Construct high and low argument for squaring
+ var ga = gx & 0xffff;
+ var gb = gx >>> 16;
+
+ // Calculate high and low result of squaring
+ var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
+ var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
+
+ // High XOR low
+ G[i] = gh ^ gl;
+ }
+
+ // Calculate new state values
+ X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
+ X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
+ X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
+ X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
+ X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
+ X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
+ X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
+ X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
+ }
+
+ /**
+ * Shortcut functions to the cipher's object interface.
+ *
+ * @example
+ *
+ * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
+ * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
+ */
+ C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
+ }());
+
+
+ return CryptoJS;
+
+}));
\ No newline at end of file
diff --git a/lib/drpy2.js b/JS/drpy2.js
similarity index 92%
rename from lib/drpy2.js
rename to JS/drpy2.js
index b57347d..47b82c6 100644
--- a/lib/drpy2.js
+++ b/JS/drpy2.js
@@ -5,13 +5,15 @@ import './node-rsa.js';
import './pako.min.js';
// import JSEncrypt from './jsencrypt.js'; // 会导致壳子崩溃的
import 模板 from './模板.js'
-import {gbkTool} from './gbk.js'
+import {
+ gbkTool
+} from './gbk.js'
import './json5.js'
// 下面是尝试对jinja2库进行更换
import './jinja.js'
const _jinja2 = cheerio.jinja2;
-cheerio.jinja2 = function (template, obj) {
+cheerio.jinja2 = function(template, obj) {
try {
return jinja.render(template, obj);
} catch (e) {
@@ -24,9 +26,16 @@ cheerio.jinja2 = function (template, obj) {
// import 模板 from"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js";
// import {gbkTool} from 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/gbk.js'
-let vercode = typeof (pdfl) === 'function' ? 'drpy2.1' : 'drpy2';
-const VERSION = vercode + ' 3.9.51beta5 20241104';
-const UpdateInfo = [
+let vercode = typeof(pdfl) === 'function' ? 'drpy2.1' : 'drpy2';
+const VERSION = vercode + ' 3.9.51beta6 20241126';
+const UpdateInfo = [{
+ date: '20241126',
+ title: 'drpy更新,优化去广告算法',
+ version: '3.9.51beta6 20241126',
+ msg: `
+ 1. 更新龙头大佬提供的去广告算法
+ `
+ },
{
date: '20241104',
title: 'drpy更新,增加新特性',
@@ -179,7 +188,10 @@ NodeRsa
let encryptedWithPublic = NODERSA.encryptRSAWithPublicKey(data, pkcs1_public, {
// PublicFormat: "pkcs1-public-pem",
outputEncoding: "base64",
- options: {environment: "browser", encryptionScheme: 'pkcs1_oaep'},
+ options: {
+ environment: "browser",
+ encryptionScheme: 'pkcs1_oaep'
+ },
});
console.log("公钥加密");
console.log(encryptedWithPublic);
@@ -188,22 +200,33 @@ NodeRsa
let decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic, pkcs1_private, {
// PublicFormat: "pkcs1-private",
// outEncoding: "hex"
- options: {environment: "browser", encryptionScheme: 'pkcs1_oaep'},
+ options: {
+ environment: "browser",
+ encryptionScheme: 'pkcs1_oaep'
+ },
});
console.log("私钥解密");
console.log(decryptedWithPrivate);
-// https://www.btool.cn/rsa-sign
+ // https://www.btool.cn/rsa-sign
let pkcs1_sha256_sign = NODERSA.sign("1", pkcs1_private, {
outputEncoding: "base64",
- options: {environment: "browser", encryptionScheme: 'pkcs1', signingScheme: "pkcs1-sha256"},
+ options: {
+ environment: "browser",
+ encryptionScheme: 'pkcs1',
+ signingScheme: "pkcs1-sha256"
+ },
});
console.log("pkcs1_sha256_sign");
console.log(pkcs1_sha256_sign);
let pkcs1_sha256_sign_verify = NODERSA.verify("1", "Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==", pkcs1_private, {
- options: {environment: "browser", encryptionScheme: 'pkcs1', signingScheme: "pkcs1-sha256"},
+ options: {
+ environment: "browser",
+ encryptionScheme: 'pkcs1',
+ signingScheme: "pkcs1-sha256"
+ },
});
console.log("pkcs1_sha256_sign_verify");
console.log(pkcs1_sha256_sign_verify);
@@ -219,7 +242,8 @@ Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB
`, {
outputEncoding: "base64",
options: {
- environment: "browser", encryptionScheme: {
+ environment: "browser",
+ encryptionScheme: {
scheme: "pkcs1_oaep",
hash: "sha256",
},
@@ -258,15 +282,22 @@ m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA==
-----END RSA PRIVATE KEY-----`, {
// PublicFormat: "pkcs1-private",
// outEncoding: "hex"
- options: {environment: "browser", encryptionScheme: 'pkcs1_oaep'},
+ options: {
+ environment: "browser",
+ encryptionScheme: 'pkcs1_oaep'
+ },
});
console.log('decryptedWithPrivate');
console.log(decryptedWithPrivate);
(() => {
- let key = new NODERSA.NodeRSA({b: 1024});
- key.setOptions({encryptionScheme: 'pkcs1'})
+ let key = new NODERSA.NodeRSA({
+ b: 1024
+ });
+ key.setOptions({
+ encryptionScheme: 'pkcs1'
+ })
let text = `你好drpy node-ras`;
let encrypted = key.encrypt(text, 'base64');
console.log('encrypted: ', encrypted);
@@ -282,7 +313,7 @@ m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA==
* 执行预处理代码
*/
function pre() {
- if (typeof (rule.预处理) === 'string' && rule.预处理 && rule.预处理.trim()) {
+ if (typeof(rule.预处理) === 'string' && rule.预处理 && rule.预处理.trim()) {
let code = rule.预处理.trim();
console.log("执行预处理代码:" + code);
if (code.startsWith('js:')) {
@@ -332,10 +363,10 @@ const RULE_CK = 'cookie'; // 源cookie的key值
// const KEY = typeof(key)!=='undefined'&&key?key:'drpy_' + (rule.title || rule.host); // 源的唯一标识
const CATE_EXCLUDE = '首页|留言|APP|下载|资讯|新闻|动态';
const TAB_EXCLUDE = '猜你|喜欢|下载|剧情|榜|评论';
-const OCR_RETRY = 3;//ocr验证重试次数
+const OCR_RETRY = 3; //ocr验证重试次数
// const OCR_API = 'http://drpy.nokia.press:8028/ocr/drpy/text';//ocr在线识别接口
-const OCR_API = 'https://api.nn.ci/ocr/b64/text';//ocr在线识别接口
-if (typeof (MY_URL) === 'undefined') {
+const OCR_API = 'https://api.nn.ci/ocr/b64/text'; //ocr在线识别接口
+if (typeof(MY_URL) === 'undefined') {
var MY_URL; // 全局注入变量,pd函数需要
}
var HOST;
@@ -354,8 +385,8 @@ var _pd;
const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/;
// 过滤特殊链接,不走urlJoin
const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/;
-const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; // 不自动加eq下标索引
-const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/; // 需要自动urljoin的属性
+const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; // 不自动加eq下标索引
+const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/; // 需要自动urljoin的属性
const SELECT_REGEX = /:eq|:lt|:gt|#/g;
const SELECT_REGEX_A = /:eq|:lt|:gt/g;
@@ -446,11 +477,14 @@ function window_b64() {
es6py扩展
*/
if (typeof atob !== 'function' || typeof btoa !== 'function') {
- var {atob, btoa} = window_b64();
+ var {
+ atob,
+ btoa
+ } = window_b64();
}
if (typeof Object.assign !== 'function') {
- Object.assign = function () {
+ Object.assign = function() {
let target = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let source = arguments[i];
@@ -464,7 +498,7 @@ if (typeof Object.assign !== 'function') {
};
}
if (!String.prototype.includes) {
- String.prototype.includes = function (search, start) {
+ String.prototype.includes = function(search, start) {
if (typeof start !== 'number') {
start = 0;
}
@@ -479,51 +513,51 @@ if (!String.prototype.includes) {
if (!Array.prototype.includes) {
Object.defineProperty(Array.prototype, 'includes', {
- value: function (searchElement, fromIndex) {
+ value: function(searchElement, fromIndex) {
- if (this == null) {//this是空或者未定义,抛出错误
+ if (this == null) { //this是空或者未定义,抛出错误
throw new TypeError('"this" is null or not defined');
}
- var o = Object(this);//将this转变成对象
- var len = o.length >>> 0;//无符号右移0位,获取对象length属性,如果未定义就会变成0
+ var o = Object(this); //将this转变成对象
+ var len = o.length >>> 0; //无符号右移0位,获取对象length属性,如果未定义就会变成0
- if (len === 0) {//length为0直接返回false未找到目标值
+ if (len === 0) { //length为0直接返回false未找到目标值
return false;
}
- var n = fromIndex | 0;//查找起始索引
- var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);//计算正确起始索引,因为有可能是负值
+ var n = fromIndex | 0; //查找起始索引
+ var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); //计算正确起始索引,因为有可能是负值
- while (k < len) {//从起始索引处开始循环
- if (o[k] === searchElement) {//如果某一位置与寻找目标相等,返回true,找到了
+ while (k < len) { //从起始索引处开始循环
+ if (o[k] === searchElement) { //如果某一位置与寻找目标相等,返回true,找到了
return true;
}
k++;
}
- return false;//未找到,返回false
+ return false; //未找到,返回false
},
enumerable: false
});
}
if (typeof String.prototype.startsWith !== 'function') {
- String.prototype.startsWith = function (prefix) {
+ String.prototype.startsWith = function(prefix) {
return this.slice(0, prefix.length) === prefix;
};
}
if (typeof String.prototype.endsWith !== 'function') {
- String.prototype.endsWith = function (suffix) {
+ String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}
Object.defineProperty(Object.prototype, 'myValues', {
- value: function (obj) {
+ value: function(obj) {
if (obj == null) {
throw new TypeError("Cannot convert undefined or null to object");
}
var res = []
for (var k in obj) {
- if (obj.hasOwnProperty(k)) {//需判断是否是本身的属性
+ if (obj.hasOwnProperty(k)) { //需判断是否是本身的属性
res.push(obj[k]);
}
}
@@ -533,13 +567,13 @@ Object.defineProperty(Object.prototype, 'myValues', {
});
if (typeof Object.prototype.values !== 'function') {
Object.defineProperty(Object.prototype, 'values', {
- value: function (obj) {
+ value: function(obj) {
if (obj == null) {
throw new TypeError("Cannot convert undefined or null to object");
}
var res = []
for (var k in obj) {
- if (obj.hasOwnProperty(k)) {//需判断是否是本身的属性
+ if (obj.hasOwnProperty(k)) { //需判断是否是本身的属性
res.push(obj[k]);
}
}
@@ -550,7 +584,7 @@ if (typeof Object.prototype.values !== 'function') {
}
if (typeof Array.prototype.join !== 'function') {
Object.defineProperty(Array.prototype, 'join', {
- value: function (emoji) {
+ value: function(emoji) {
// emoji = emoji||',';
emoji = emoji || '';
let self = this;
@@ -577,7 +611,7 @@ if (typeof Array.prototype.join !== 'function') {
}
if (typeof Array.prototype.toReversed !== 'function') {
Object.defineProperty(Array.prototype, 'toReversed', {
- value: function () {
+ value: function() {
const clonedList = this.slice();
// 倒序新数组
const reversedList = clonedList.reverse();
@@ -596,7 +630,7 @@ Object.defineProperty(String.prototype, 'strip', {
enumerable: false
});
Object.defineProperty(String.prototype, 'rstrip', {
- value: function (chars) {
+ value: function(chars) {
let regex = new RegExp(chars + "$");
return this.replace(regex, "");
},
@@ -627,7 +661,7 @@ function setResult(d) {
}
VODS = [];
// print(d);
- d.forEach(function (it) {
+ d.forEach(function(it) {
let obj = {
vod_id: it.url || '',
vod_name: it.title || '',
@@ -665,7 +699,7 @@ function setResult2(res) {
}
function setHomeResult(res) {
- if (!res || typeof (res) !== 'object') {
+ if (!res || typeof(res) !== 'object') {
return []
}
return setResult(res.list);
@@ -677,7 +711,7 @@ function rc(js) {
var a = CryptoJS.enc.Utf8.parse("625222f9149e961d");
var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");
return {
- De: function (word) {
+ De: function(word) {
word = CryptoJS.enc.Hex.parse(word)
return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, {
iv: t,
@@ -685,7 +719,7 @@ function rc(js) {
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8)
},
- En: function (word) {
+ En: function(word) {
// print(a);
// print(word);
var Encrypted = CryptoJS.AES.encrypt(word, a, {
@@ -706,8 +740,11 @@ function maoss(jxurl, ref, key) {
fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
eval(getCryptoJS());
try {
- var getVideoInfo = function (text) {
- return CryptoJS.AES.decrypt(text, key, {iv: iv, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);
+ var getVideoInfo = function(text) {
+ return CryptoJS.AES.decrypt(text, key, {
+ iv: iv,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8);
};
var token_key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key;
if (ref) {
@@ -766,7 +803,7 @@ function urlencode(str) {
* @returns {string}
*/
function encodeUrl(str) {
- if (typeof (encodeURI) == 'function') {
+ if (typeof(encodeURI) == 'function') {
return encodeURI(str)
} else {
str = (str + '').toString();
@@ -848,7 +885,7 @@ function gzip(str) {
*/
function ungzip(b64Data) {
let strData = atob(b64Data);
- const charData = strData.split('').map(function (x) {
+ const charData = strData.split('').map(function(x) {
return x.charCodeAt(0);
});
const binData = new Uint8Array(charData);
@@ -893,9 +930,9 @@ function getCryptoJS() {
// 封装的RSA加解密类
const RSA = {
- decode: function (data, key, option) {
+ decode: function(data, key, option) {
option = option || {};
- if (typeof (JSEncrypt) === 'function') {
+ if (typeof(JSEncrypt) === 'function') {
let chunkSize = option.chunkSize || 117; // 默认分段长度为117
let privateKey = this.getPrivateKey(key); // 获取私钥
const decryptor = new JSEncrypt(); //创建解密对象实例
@@ -908,9 +945,9 @@ const RSA = {
return false
}
},
- encode: function (data, key, option) {
+ encode: function(data, key, option) {
option = option || {};
- if (typeof (JSEncrypt) === 'function') {
+ if (typeof(JSEncrypt) === 'function') {
let chunkSize = option.chunkSize || 117; // 默认分段长度为117
let publicKey = this.getPublicKey(key); // 获取公钥
const encryptor = new JSEncrypt();
@@ -957,7 +994,7 @@ const RSA = {
* @returns {string|*}
*/
function getProxyUrl() {
- if (typeof (getProxy) === 'function') {//判断壳子里有getProxy函数就执行取返回结果。否则取默认的本地
+ if (typeof(getProxy) === 'function') { //判断壳子里有getProxy函数就执行取返回结果。否则取默认的本地
return getProxy(true)
} else {
return 'http://127.0.0.1:9978/proxy?do=js'
@@ -1036,8 +1073,10 @@ function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) {
* @returns {string}
*/
function fixAdM3u8Ai(m3u8_url, headers) {
- let ts = new Date().getTime();
- let option = headers ? {headers: headers} : {};
+ let ts = (new Date).getTime();
+ let option = headers ? {
+ headers: headers
+ } : {};
function b(s1, s2) {
let i = 0;
@@ -1047,67 +1086,103 @@ function fixAdM3u8Ai(m3u8_url, headers) {
}
i++
}
- return i;
+ return i
}
function reverseString(str) {
- return str.split('').reverse().join('');
+ return str.split("").reverse().join("")
}
-
- //log('播放的地址:' + m3u8_url);
let m3u8 = request(m3u8_url, option);
- //log('m3u8处理前:' + m3u8);
- m3u8 = m3u8.trim().split('\n').map(it => it.startsWith('#') ? it : urljoin(m3u8_url, it)).join('\n');
- //log('m3u8处理后:============:' + m3u8);
- // 获取嵌套m3u8地址
- m3u8 = m3u8.replace(/\n\n/ig, '\n');//删除多余的换行符
- let last_url = m3u8.split('\n').slice(-1)[0];
+ m3u8 = m3u8.trim().split("\n").map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)).join("\n");
+ m3u8 = m3u8.replace(/\n\n/gi, "\n");
+ let last_url = m3u8.split("\n").slice(-1)[0];
if (last_url.length < 5) {
- last_url = m3u8.split('\n').slice(-2)[0];
+ last_url = m3u8.split("\n").slice(-2)[0]
}
-
- if (last_url.includes('.m3u8') && last_url !== m3u8_url) {
+ if (last_url.includes(".m3u8") && last_url !== m3u8_url) {
m3u8_url = urljoin2(m3u8_url, last_url);
- log('嵌套的m3u8_url:' + m3u8_url);
- m3u8 = request(m3u8_url, option);
+ log("嵌套的m3u8_url:" + m3u8_url);
+ m3u8 = request(m3u8_url, option)
}
- //log('----处理有广告的地址----');
- let s = m3u8.trim().split('\n').filter(it => it.trim()).join('\n');
- let ss = s.split('\n')
- //找出第一条播放地址
- //let firststr = ss.find(x => !x.startsWith('#'));
- let firststr = '';
- let maxl = 0;//最大相同字符
+ let s = m3u8.trim().split("\n").filter(it => it.trim()).join("\n");
+ let ss = s.split("\n");
+ if (m3u8_url.indexOf("ffzy") > 0) {
+ let j = 0,
+ k1 = 0,
+ m = 0,
+ n = 0,
+ t = 0;
+ let s2 = "";
+ for (let i = 0; i < ss.length; i++) {
+ let s = ss[i];
+ let s1 = "";
+ if (s.startsWith("#EXTINF")) {
+ s1 = s.slice(8);
+ n++;
+ if (n == 1)
+ k1 = i;
+ if (s2.indexOf(s1) == -1) {
+ s2 = s2 + s1;
+ m++;
+ }
+ t = t + parseFloat(s1);
+ i++;
+ s = ss[i];
+ }
+ if (s.startsWith("#EXT-X-DISCONTINUITY")) {
+ if (n == 5) {
+ log("n:" + n);
+ log("m:" + m);
+ for (let j = k1; j < k1 + n * 2; j++) {
+ log(ss[j]);
+ }
+ log("广告位置:" + k1);
+ log("数据条数:" + n);
+ log("数据种类:" + m);
+ log("广告时间:" + t.toFixed(5));
+ ss.splice(k1, 2 * n + 1);
+ i = i - 2 * n + 1;
+ }
+ t = 0;
+ m = 0;
+ n = 0;
+ s2 = "";
+ }
+ }
+ }
+ let firststr = "";
+ let maxl = 0;
let kk = 0;
- let kkk = 2;
- let secondstr = '';
+ let kkk1 = 1;
+ let kkk2 = 0;
+ let secondstr = "";
for (let i = 0; i < ss.length; i++) {
let s = ss[i];
if (!s.startsWith("#")) {
- if (kk == 0) firststr = s;
- if (kk == 1) maxl = b(firststr, s);
- if (kk > 1) {
- if (maxl > b(firststr, s)) {
- if (secondstr.length < 5) secondstr = s;
- kkk = kkk + 2;
+ if (kk == 0)
+ firststr = s;
+ if (kk > 0) {
+ if (maxl > b(firststr, s) + 1) {
+ if (secondstr.length < 5)
+ secondstr = s;
+ kkk2++
} else {
maxl = b(firststr, s);
- kkk++;
+ kkk1++
}
}
kk++;
- if (kk >= 20) break;
+ if (kk >= 30)
+ break
}
}
- if (kkk > 30) firststr = secondstr;
+ if (kkk2 > kkk1)
+ firststr = secondstr;
let firststrlen = firststr.length;
- //log('字符串长度:' + firststrlen);
- let ml = Math.round(ss.length / 2).toString().length;//取数据的长度的位数
- //log('数据条数的长度:' + ml);
- //找出最后一条播放地址
+ let ml = Math.round(ss.length / 2).toString().length;
let maxc = 0;
- let laststr = ss.toReversed().find((x) => {
- if (!x.startsWith('#')) {
+ let laststr = ss.toReversed().find(x => {
+ if (!x.startsWith("#")) {
let k = b(reverseString(firststr), reverseString(x));
maxl = b(firststr, x);
maxc++;
@@ -1117,29 +1192,28 @@ function fixAdM3u8Ai(m3u8_url, headers) {
}
return false
});
- log('最后一条切片:' + laststr);
- //log('最小相同字符长度:' + maxl);
+ log("最后一条切片:" + laststr);
let ad_urls = [];
for (let i = 0; i < ss.length; i++) {
let s = ss[i];
- if (!s.startsWith('#')) {
+ if (!s.startsWith("#")) {
if (b(firststr, s) < maxl) {
- ad_urls.push(s); // 广告地址加入列表
+ ad_urls.push(s);
ss.splice(i - 1, 2);
- i = i - 2;
+ i = i - 2
} else {
- ss[i] = urljoin(m3u8_url, s);
+ ss[i] = urljoin(m3u8_url, s)
}
} else {
- ss[i] = s.replace(/URI=\"(.*)\"/, 'URI=\"' + urljoin(m3u8_url, '$1') + '\"');
+ ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"')
}
}
- log('处理的m3u8地址:' + m3u8_url);
- log('----广告地址----');
+ log("处理的m3u8地址:" + m3u8_url);
+ log("----广告地址----");
log(ad_urls);
- m3u8 = ss.join('\n');
- //log('处理完成');
- log('处理耗时:' + (new Date().getTime() - ts).toString());
+ m3u8 = ss.join("\n");
+ log("处理耗时:" + ((new Date).getTime() - ts).toString());
+ log(m3u8);
return m3u8
}
@@ -1163,15 +1237,13 @@ function forceOrder(lists, key, option) {
try {
first = first[key];
second = second[key];
- } catch (e) {
- }
+ } catch (e) {}
}
- if (option && typeof (option) === 'function') {
+ if (option && typeof(option) === 'function') {
try {
first = option(first);
second = option(second);
- } catch (e) {
- }
+ } catch (e) {}
}
first += '';
second += '';
@@ -1186,10 +1258,10 @@ function forceOrder(lists, key, option) {
return lists
}
-let VODS = [];// 一级或者搜索需要的数据列表
-let VOD = {};// 二级的单个数据
-let TABS = [];// 二级的自定义线路列表 如: TABS=['道长在线','道长在线2']
-let LISTS = [];// 二级的自定义选集播放列表 如: LISTS=[['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']]
+let VODS = []; // 一级或者搜索需要的数据列表
+let VOD = {}; // 二级的单个数据
+let TABS = []; // 二级的自定义线路列表 如: TABS=['道长在线','道长在线2']
+let LISTS = []; // 二级的自定义选集播放列表 如: LISTS=[['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']]
/**
* 获取链接的query请求转为js的object字典对象
@@ -1268,7 +1340,7 @@ const defaultParser = {
function pdfh2(html, parse) {
let html2 = html;
try {
- if (typeof (html) !== 'string') {
+ if (typeof(html) !== 'string') {
html2 = html.rr(html.ele).toString();
}
} catch (e) {
@@ -1281,8 +1353,7 @@ function pdfh2(html, parse) {
result = result.match(/url\((.*?)\)/)[1];
// 2023/07/28新增 style取内部链接自动去除首尾单双引号
result = result.replace(/^['|"](.*)['|"]$/, "$1");
- } catch (e) {
- }
+ } catch (e) {}
}
return result
}
@@ -1296,7 +1367,7 @@ function pdfh2(html, parse) {
function pdfa2(html, parse) {
let html2 = html;
try {
- if (typeof (html) !== 'string') {
+ if (typeof(html) !== 'string') {
html2 = html.rr(html.ele).toString();
}
} catch (e) {
@@ -1314,7 +1385,7 @@ function pdfa2(html, parse) {
*/
function pd2(html, parse, uri) {
let ret = pdfh2(html, parse);
- if (typeof (uri) === 'undefined' || !uri) {
+ if (typeof(uri) === 'undefined' || !uri) {
uri = '';
}
if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) {
@@ -1340,7 +1411,7 @@ const parseTags = {
if (!parse || !parse.trim()) {
return '';
}
- if (typeof (html) === 'string') {
+ if (typeof(html) === 'string') {
// print('jsonpath:pdfh字符串转dict');
html = JSON.parse(html);
}
@@ -1356,7 +1427,7 @@ const parseTags = {
} else {
ret = ret || ''
}
- if (ret && typeof (ret) !== 'string') {
+ if (ret && typeof(ret) !== 'string') {
ret = ret.toString();
}
if (ret) {
@@ -1369,7 +1440,7 @@ const parseTags = {
if (!parse || !parse.trim()) {
return '';
}
- if (typeof (html) === 'string') {
+ if (typeof(html) === 'string') {
// print('jsonpath:pdfa字符串转dict');
html = JSON.parse(html);
}
@@ -1420,7 +1491,7 @@ const parseTags = {
return defaultParser.pd(html, parse, base_url);
},
},
- getParse(p0) {//非js开头的情况自动获取解析标签
+ getParse(p0) { //非js开头的情况自动获取解析标签
if (p0.startsWith('jsp:')) {
return this.jsp
} else if (p0.startsWith('json:')) {
@@ -1467,12 +1538,10 @@ function dealJson(html) {
if (!((html.startsWith('{') && html.endsWith('}')) || (html.startsWith('[') && html.endsWith(']')))) {
html = '{' + html.match(/.*?\{(.*)\}/m)[1] + '}';
}
- } catch (e) {
- }
+ } catch (e) {}
try {
html = JSON.parse(html);
- } catch (e) {
- }
+ } catch (e) {}
// console.log(typeof(html));
return html;
}
@@ -1483,7 +1552,7 @@ function dealJson(html) {
*/
var OcrApi = {
api: OCR_API,
- classification: function (img) { // img是byte类型,这里不方便搞啊
+ classification: function(img) { // img是byte类型,这里不方便搞啊
let code = '';
try {
// let html = request(this.api,{data:{img:img},headers:{'User-Agent':PC_UA},'method':'POST'},true);
@@ -1492,9 +1561,19 @@ var OcrApi = {
log('通过drpy_ocr验证码接口过验证...');
let html = '';
if (this.api.endsWith('drpy/text')) {
- html = request(this.api, {data: {img: img}, headers: {'User-Agent': PC_UA}, 'method': 'POST'}, true);
+ html = request(this.api, {
+ data: {
+ img: img
+ },
+ headers: {
+ 'User-Agent': PC_UA
+ },
+ 'method': 'POST'
+ }, true);
} else {
- html = post(this.api, {body: img});
+ html = post(this.api, {
+ body: img
+ });
}
code = html || '';
} catch (e) {
@@ -1518,7 +1597,10 @@ function verifyCode(url) {
// let obj = {headers:headers,timeout:timeout};
let yzm_url = `${host}/index.php/verify/index.html`;
console.log(`验证码链接:${yzm_url}`);
- let hhtml = request(yzm_url, {withHeaders: true, toBase64: true}, true);
+ let hhtml = request(yzm_url, {
+ withHeaders: true,
+ toBase64: true
+ }, true);
let json = JSON.parse(hhtml);
if (!cookie) {
// print(json);
@@ -1534,7 +1616,12 @@ function verifyCode(url) {
console.log(`第${cnt + 1}次验证码识别结果:${code}`);
let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`;
console.log(submit_url);
- let html = request(submit_url, {headers: {Cookie: cookie}, 'method': 'POST'});
+ let html = request(submit_url, {
+ headers: {
+ Cookie: cookie
+ },
+ 'method': 'POST'
+ });
// console.log(html);
html = JSON.parse(html);
if (html.msg === 'ok') {
@@ -1597,8 +1684,7 @@ function getHome(url) {
url = tmp[0] + '//' + tmp[1].split('/')[0];
try {
url = decodeURIComponent(url);
- } catch (e) {
- }
+ } catch (e) {}
return url
}
@@ -1649,7 +1735,7 @@ function keysToLowerCase(obj) {
//字符串To对象
function parseQueryString(query) {
const params = {};
- query.split('&').forEach(function (part) {
+ query.split('&').forEach(function(part) {
// 使用正则表达式匹配键和值,直到遇到第一个等号为止
const regex = /^(.*?)=(.*)/;
const match = part.match(regex);
@@ -1695,7 +1781,7 @@ function objectToQueryString(obj) {
*/
function request(url, obj, ocr_flag) {
ocr_flag = ocr_flag || false;
- if (typeof (obj) === 'undefined' || !obj || obj === {}) {
+ if (typeof(obj) === 'undefined' || !obj || obj === {}) {
if (!fetch_params || !fetch_params.headers) {
let headers = {
'User-Agent': MOBILE_UA,
@@ -1718,7 +1804,7 @@ function request(url, obj, ocr_flag) {
if (!keys.includes('user-agent')) {
headers['User-Agent'] = MOBILE_UA;
// fetch_params 里存在ua则优先,否则才默认手机UA
- if (typeof (fetch_params) === 'object' && fetch_params && fetch_params.headers) {
+ if (typeof(fetch_params) === 'object' && fetch_params && fetch_params.headers) {
let fetch_headers = keysToLowerCase(fetch_params.headers);
if (fetch_headers['user-agent']) {
headers['User-Agent'] = fetch_headers['user-agent'];
@@ -1735,7 +1821,7 @@ function request(url, obj, ocr_flag) {
obj.headers["Content-Type"] = 'text/html; charset=' + rule.encoding;
}
}
- if (typeof (obj.body) != 'undefined' && obj.body && typeof (obj.body) === 'string') {
+ if (typeof(obj.body) != 'undefined' && obj.body && typeof(obj.body) === 'string') {
// let data = {};
// obj.body.split('&').forEach(it=>{
// data[it.split('=')[0]] = it.split('=')[1]
@@ -1747,7 +1833,7 @@ function request(url, obj, ocr_flag) {
if (!obj.headers.hasOwnProperty('Content-Type') && !obj.headers.hasOwnProperty('content-type')) { // 手动指定了就不管
obj.headers["Content-Type"] = 'application/x-www-form-urlencoded; charset=' + rule.encoding;
}
- } else if (typeof (obj.body) != 'undefined' && obj.body && typeof (obj.body) === 'object') {
+ } else if (typeof(obj.body) != 'undefined' && obj.body && typeof(obj.body) === 'object') {
obj.data = obj.body;
delete obj.body
}
@@ -1831,18 +1917,18 @@ function reqCookie(url, obj, all_cookie) {
}
fetch = request;
-print = function (data) {
+print = function(data) {
data = data || '';
- if (typeof (data) == 'object' && Object.keys(data).length > 0) {
+ if (typeof(data) == 'object' && Object.keys(data).length > 0) {
try {
data = JSON.stringify(data);
console.log(data);
} catch (e) {
// console.log('print:'+e.message);
- console.log(typeof (data) + ':' + data.length);
+ console.log(typeof(data) + ':' + data.length);
return
}
- } else if (typeof (data) == 'object' && Object.keys(data).length < 1) {
+ } else if (typeof(data) == 'object' && Object.keys(data).length < 1) {
console.log('null object');
} else {
console.log(data);
@@ -1902,7 +1988,9 @@ function getHtml(url) {
obj.headers['Cookie'] = cookie;
log('历史有大写过期的cookie,更新过验证后的cookie');
} else if (!obj.headers) {
- obj.headers = {Cookie: cookie};
+ obj.headers = {
+ Cookie: cookie
+ };
log('历史无headers,更新过验证后的含cookie的headers');
}
}
@@ -2051,7 +2139,7 @@ function homeVodParse(homeVodObj) {
p = rule.一级;
homeVodObj.double = false;
}
- if (!p || typeof (p) !== 'string') {
+ if (!p || typeof(p) !== 'string') {
return '{}'
}
p = p.trim();
@@ -2104,13 +2192,11 @@ function homeVodParse(homeVodObj) {
let img = '';
try {
img = _pd(item2, p3);
- } catch (e) {
- }
+ } catch (e) {}
let desc = '';
try {
desc = _pdfh(item2, p4);
- } catch (e) {
- }
+ } catch (e) {}
let links = [];
for (let _p5 of p5.split('+')) {
let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5);
@@ -2159,13 +2245,11 @@ function homeVodParse(homeVodObj) {
let img = '';
try {
img = _pd(item, p2, MY_URL);
- } catch (e) {
- }
+ } catch (e) {}
let desc = '';
try {
desc = _pdfh(item, p3);
- } catch (e) {
- }
+ } catch (e) {}
let links = [];
for (let _p5 of p4.split('+')) {
let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5);
@@ -2249,7 +2333,7 @@ function homeVodParse(homeVodObj) {
function categoryParse(cateObj) {
fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
let p = cateObj.一级;
- if (!p || typeof (p) !== 'string') {
+ if (!p || typeof(p) !== 'string') {
return '{}'
}
let d = [];
@@ -2274,11 +2358,11 @@ function categoryParse(cateObj) {
// console.log('filter:'+cateObj.filter);
let fl = cateObj.filter ? cateObj.extend : {};
// 自动合并 不同分类对应的默认筛选
- if (rule.filter_def && typeof (rule.filter_def) === 'object') {
+ if (rule.filter_def && typeof(rule.filter_def) === 'object') {
try {
if (Object.keys(rule.filter_def).length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) {
let self_fl_def = rule.filter_def[cateObj.tid];
- if (self_fl_def && typeof (self_fl_def) === 'object') {
+ if (self_fl_def && typeof(self_fl_def) === 'object') {
// 引用传递转值传递,避免污染self变量
let fl_def = JSON.parse(JSON.stringify(self_fl_def));
fl = Object.assign(fl_def, fl);
@@ -2289,7 +2373,10 @@ function categoryParse(cateObj) {
}
}
let new_url;
- new_url = cheerio.jinja2(url, {fl: fl, fyclass: cateObj.tid});
+ new_url = cheerio.jinja2(url, {
+ fl: fl,
+ fyclass: cateObj.tid
+ });
// console.log('jinjia2执行后的new_url类型为:'+typeof(new_url));
url = new_url;
}
@@ -2396,7 +2483,7 @@ function categoryParse(cateObj) {
print(d.slice(0, 2));
}
let pagecount = 0;
- if (rule.pagecount && typeof (rule.pagecount) === 'object' && rule.pagecount.hasOwnProperty(MY_CATE)) {
+ if (rule.pagecount && typeof(rule.pagecount) === 'object' && rule.pagecount.hasOwnProperty(MY_CATE)) {
print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);
pagecount = parseInt(rule.pagecount[MY_CATE]);
}
@@ -2407,7 +2494,10 @@ function categoryParse(cateObj) {
vod_remarks: '不要点,会崩的',
vod_pic: 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg'
}],
- total: 1, pagecount: 1, page: 1, limit: 1
+ total: 1,
+ pagecount: 1,
+ page: 1,
+ limit: 1
};
let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({
'page': parseInt(cateObj.pg),
@@ -2436,7 +2526,7 @@ function searchParse(searchObj) {
return '{}'
}
let p = searchObj.搜索 === '*' && rule.一级 ? rule.一级 : searchObj.搜索;
- if (!p || typeof (p) !== 'string') {
+ if (!p || typeof(p) !== 'string') {
return '{}'
}
p = p.trim();
@@ -2502,7 +2592,9 @@ function searchParse(searchObj) {
// });
// html = post(rurl,{body:new_dict});
let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let postData = {body: params};
+ let postData = {
+ body: params
+ };
Object.assign(_fetch_params, postData);
html = post(rurl, _fetch_params);
} else if (req_method === 'postjson') {
@@ -2516,7 +2608,9 @@ function searchParse(searchObj) {
params = '{}'
}
let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let postData = {body: params};
+ let postData = {
+ body: params
+ };
Object.assign(_fetch_params, postData);
html = post(rurl, _fetch_params);
} else {
@@ -2679,14 +2773,14 @@ function detailParse(detailObj) {
vod.vod_actor = '没有二级,只有一级链接直接嗅探播放';
vod.vod_content = MY_URL;
vod.vod_play_url = '嗅探播放$' + MY_URL.split('@@')[0];
- } else if (typeof (p) === 'string' && p.trim().startsWith('js:')) {
+ } else if (typeof(p) === 'string' && p.trim().startsWith('js:')) {
const TYPE = 'detail';
var input = MY_URL;
var play_url = '';
eval(p.trim().replace('js:', ''));
vod = VOD;
console.log(JSON.stringify(vod));
- } else if (p && typeof (p) === 'object') {
+ } else if (p && typeof(p) === 'object') {
let tt1 = (new Date()).getTime();
if (!html) {
html = getHtml(MY_URL);
@@ -2737,15 +2831,13 @@ function detailParse(detailObj) {
try {
let p1 = p.content.split(';');
vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim();
- } catch (e) {
- }
+ } catch (e) {}
}
if (p.img) {
try {
let p1 = p.img.split(';');
vod.vod_pic = _pd(html, p1[0], MY_URL);
- } catch (e) {
- }
+ } catch (e) {}
}
let vod_play_from = '$$$';
@@ -2755,7 +2847,7 @@ function detailParse(detailObj) {
html = eval(p.重定向.replace('js:', ''));
}
-// console.log(2);
+ // console.log(2);
if (p.tabs) {
if (p.tabs.startsWith('js:')) {
print('开始执行tabs代码:' + p.tabs);
@@ -2796,7 +2888,7 @@ function detailParse(detailObj) {
}
vod.vod_play_from = playFrom.join(vod_play_from);
-// console.log(3);
+ // console.log(3);
let vod_play_url = '$$$';
let vod_tab_list = [];
if (p.lists) {
@@ -2840,7 +2932,7 @@ function detailParse(detailObj) {
let new_vod_list = [];
let tt1 = (new Date()).getTime();
// print('pdfl:'+typeof (pdfl));
- if (typeof (pdfl) === 'function') {
+ if (typeof(pdfl) === 'function') {
new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL);
if (list_url_prefix) {
new_vod_list = new_vod_list.map(it => it.split('$')[0] + '$' + list_url_prefix + it.split('$').slice(1).join('$'));
@@ -2949,7 +3041,7 @@ function vodDeal(vod) {
play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]]);
}
- if (rule.tab_rename && typeof (rule.tab_rename) === 'object' & Object.keys(rule.tab_rename).length > 0) {
+ if (rule.tab_rename && typeof(rule.tab_rename) === 'object' & Object.keys(rule.tab_rename).length > 0) {
tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it);
tab_list = tab_renamed_list;
}
@@ -2984,12 +3076,11 @@ function playParse(playObj) {
if (!/http/.test(MY_URL)) {
try {
MY_URL = base64Decode(MY_URL);
- } catch (e) {
- }
+ } catch (e) {}
}
MY_URL = decodeURIComponent(MY_URL);
- var input = MY_URL;//注入给免嗅js
- var flag = MY_FLAG;//注入播放线路名称给免嗅js
+ var input = MY_URL; //注入给免嗅js
+ var flag = MY_FLAG; //注入播放线路名称给免嗅js
let common_play = {
parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1,
url: input,
@@ -3000,7 +3091,7 @@ function playParse(playObj) {
let lazy_play;
if (!rule.play_parse || !rule.lazy) {
lazy_play = common_play;
- } else if (rule.play_parse && rule.lazy && typeof (rule.lazy) === 'string') {
+ } else if (rule.play_parse && rule.lazy && typeof(rule.lazy) === 'string') {
try {
let lazy_code = rule.lazy.trim();
if (lazy_code.startsWith('js:')) {
@@ -3008,7 +3099,7 @@ function playParse(playObj) {
}
print('开始执行js免嗅=>' + lazy_code);
eval(lazy_code);
- lazy_play = typeof (input) === 'object' ? input : {
+ lazy_play = typeof(input) === 'object' ? input : {
parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1,
jx: tellIsJx(input),
url: input
@@ -3026,7 +3117,7 @@ function playParse(playObj) {
let web_url = lazy_play.url;
for (let pjson of rule.play_json) {
if (pjson.re && (pjson.re === '*' || web_url.match(new RegExp(pjson.re)))) {
- if (pjson.json && typeof (pjson.json) === 'object') {
+ if (pjson.json && typeof(pjson.json) === 'object') {
let base_json = pjson.json;
// print('开始合并:');
// print(base_json);
@@ -3084,13 +3175,13 @@ function proxyParse(proxyObj) {
function isVideoParse(isVideoObj) {
var input = isVideoObj.url;
if (!isVideoObj.t) { // t为假代表默认传的正则字符串
- let re_matcher = new RegExp(isVideoObj.isVideo, 'i'); // /g匹配多个,/i不区分大小写,/m匹配多行
+ let re_matcher = new RegExp(isVideoObj.isVideo, 'i'); // /g匹配多个,/i不区分大小写,/m匹配多行
return re_matcher.test(input);
} else {
// 执行js
try {
eval(isVideoObj.isVideo);
- if (typeof (input) === 'boolean') {
+ if (typeof(input) === 'boolean') {
return input
} else {
return false
@@ -3188,7 +3279,7 @@ function getOriginalJs(js_code) {
* @param arg
*/
function runMain(main_func_code, arg) {
- let mainFunc = function () {
+ let mainFunc = function() {
return ''
};
try {
@@ -3232,7 +3323,9 @@ function init(ext) {
if (is_file) {
ext = ext.split('?')[0];
}
- let js = request(ext, {'method': 'GET'});
+ let js = request(ext, {
+ 'method': 'GET'
+ });
if (js) {
js = getOriginalJs(js);
// eval(js.replace('var rule', 'rule'));
@@ -3272,7 +3365,9 @@ function init(ext) {
if (rule['模板'] === '自动') {
try {
let host_headers = rule['headers'] || {};
- let host_html = getCode(HOST, {headers: host_headers});
+ let host_html = getCode(HOST, {
+ headers: host_headers
+ });
let match_muban = '';
let muban_keys = Object.keys(muban).filter(it => !/默认|短视2|采集1/.test(it));
for (let muban_key of muban_keys) {
@@ -3321,7 +3416,9 @@ function init(ext) {
rule.detailUrl = rule.detailUrl || '';
rule.searchUrl = rule.searchUrl || '';
rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : (rule.homeUrl || rule.host);
- rule.homeUrl = cheerio.jinja2(rule.homeUrl, {rule: rule});
+ rule.homeUrl = cheerio.jinja2(rule.homeUrl, {
+ rule: rule
+ });
rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl;
rule.二级访问前 = rule.二级访问前 || '';
if (rule.url.includes('[') && rule.url.includes(']')) {
@@ -3362,7 +3459,7 @@ function init(ext) {
rule.tab_order = rule.hasOwnProperty('tab_order') ? rule.tab_order : [];
rule.tab_rename = rule.hasOwnProperty('tab_rename') ? rule.tab_rename : {};
- if (rule.headers && typeof (rule.headers) === 'object') {
+ if (rule.headers && typeof(rule.headers) === 'object') {
try {
let header_keys = Object.keys(rule.headers);
for (let k of header_keys) {
@@ -3393,8 +3490,12 @@ function init(ext) {
rule.headers = {}
}
oheaders = deepCopy(rule.headers);
- rule_fetch_params = {'headers': rule.headers, 'timeout': rule.timeout, 'encoding': rule.encoding};
- RKEY = typeof (key) !== 'undefined' && key ? key : 'drpy_' + (rule.title || rule.host);
+ rule_fetch_params = {
+ 'headers': rule.headers,
+ 'timeout': rule.timeout,
+ 'encoding': rule.encoding
+ };
+ RKEY = typeof(key) !== 'undefined' && key ? key : 'drpy_' + (rule.title || rule.host);
pre(); // 预处理
init_test();
} catch (e) {
@@ -3415,7 +3516,7 @@ function home(filter, home_html, class_parse) {
console.log("home");
home_html = home_html || '';
class_parse = class_parse || '';
- if (typeof (rule.filter) === 'string' && rule.filter.trim().length > 0) {
+ if (typeof(rule.filter) === 'string' && rule.filter.trim().length > 0) {
try {
let filter_json = ungzip(rule.filter.trim());
rule.filter = JSON.parse(filter_json);
@@ -3645,7 +3746,7 @@ function matchesAll(str, pattern, flatten) {
function stringUtils() {
Object.defineProperties(String.prototype, {
replaceX: {
- value: function (regex, replacement) {
+ value: function(regex, replacement) {
let matches = matchesAll(this, regex, true);
if (matches && matches.length > 1) {
const hasCaptureGroup = /\$\d/.test(replacement);
@@ -3662,7 +3763,7 @@ function stringUtils() {
writable: true
},
parseX: {
- get: function () {
+ get: function() {
try {
//console.log(typeof this);
return JSON.parse(this);
@@ -3714,7 +3815,7 @@ function cut(text, start, end, method, All) {
return result
}
-function DRPY() {//导出函数
+function DRPY() { //导出函数
return {
runMain: runMain,
getRule: getRule,
diff --git a/JS/drpy2.min.js b/JS/drpy2.min.js
new file mode 100644
index 0000000..464f33c
--- /dev/null
+++ b/JS/drpy2.min.js
@@ -0,0 +1,3108 @@
+import cheerio from "assets://js/lib/cheerio.min.js";
+import "assets://js/lib/crypto-js.js";
+import "./jsencrypt.js";
+import "./node-rsa.js";
+import "./pako.min.js";
+import 模板 from "./模板.js";
+import {
+ gbkTool
+} from "./gbk.js";
+import "./json5.js";
+import "./jinja.js";
+const _jinja2 = cheerio.jinja2;
+cheerio.jinja2 = function(template, obj) {
+ try {
+ return jinja.render(template, obj)
+ } catch (e) {
+ console.log("新的jinja2库渲染失败,换回原始cheerio:" + e.message);
+ return _jinja2(template, obj)
+ }
+};
+let vercode = typeof pdfl === "function" ? "drpy2.1" : "drpy2";
+const VERSION = vercode + " 3.9.51beta6 20241126";
+const UpdateInfo = [{
+ date: "20241126",
+ title: "drpy更新,优化去广告算法",
+ version: "3.9.51beta6 20241126",
+ msg: `
+ 1. 更新龙头大佬提供的去广告算法
+ `
+}, {
+ date: "20241104",
+ title: "drpy更新,增加新特性",
+ version: "3.9.51beta5 20241104",
+ msg: `
+ 1. rule增加 搜索验证标识 属性,可以不定义,默认为 '系统安全验证|请输入验证码'
+ 2. rule增加 searchNoPage 属性,可以不定义,如果定义 1 将关闭该源的搜索翻页功能,超过1页直接返回空
+ `
+}];
+
+function getUpdateInfo() {
+ return UpdateInfo.map(_o => {
+ _o.msg = _o.msg.trim().split("\n").map(_it => _it.trim()).join("\n");
+ return _o
+ })
+}
+
+function init_test() {
+ console.log("init_test_start");
+ console.log("当前版本号:" + VERSION);
+ console.log("本地代理地址:" + getProxyUrl());
+ console.log(RKEY);
+ console.log(JSON.stringify(rule));
+ console.log("init_test_end")
+}
+
+function ocr_demo_test() {
+ let img_base64 = `iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`;
+ OcrApi.api = OCR_API;
+ let code = OcrApi.classification(img_base64);
+ log("测试验证码图片的ocr识别结果为:" + code)
+}
+
+function rsa_demo_test() {
+ let t1 = (new Date).getTime();
+ let pkcs1_public = `
+-----BEGIN RSA PUBLIC KEY-----
+MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
+lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
+-----END RSA PUBLIC KEY-----
+`.trim();
+ let pkcs1_public_pem = `
+MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
+lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
+`.trim();
+ let pkcs8_public = `
+-----BEGIN PUBLIC KEY-----
+MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/
+nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ==
+-----END PUBLIC KEY-----`.trim();
+ let pkcs8_public_pem = `
+MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/
+nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ==
+`.trim();
+ let pkcs1_private = `
+-----BEGIN RSA PRIVATE KEY-----
+MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7
+ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt
+0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ
+AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA
+hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+
+5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS
+EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q==
+-----END RSA PRIVATE KEY-----
+`.trim();
+ let pkcs8_private = `
+-----BEGIN PRIVATE KEY-----
+MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf
+dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v
+YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8
+KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8
+s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl
+AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3
+rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6
+lPxDjezd
+-----END PRIVATE KEY-----
+`.trim();
+ let data = `
+NodeRsa
+这是node-rsa 现在修改集成在drpy里使用`.trim();
+ let encryptedWithPublic = NODERSA.encryptRSAWithPublicKey(data, pkcs1_public, {
+ outputEncoding: "base64",
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1_oaep"
+ }
+ });
+ console.log("公钥加密");
+ console.log(encryptedWithPublic);
+ let decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic, pkcs1_private, {
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1_oaep"
+ }
+ });
+ console.log("私钥解密");
+ console.log(decryptedWithPrivate);
+ let pkcs1_sha256_sign = NODERSA.sign("1", pkcs1_private, {
+ outputEncoding: "base64",
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1",
+ signingScheme: "pkcs1-sha256"
+ }
+ });
+ console.log("pkcs1_sha256_sign");
+ console.log(pkcs1_sha256_sign);
+ let pkcs1_sha256_sign_verify = NODERSA.verify("1", "Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==", pkcs1_private, {
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1",
+ signingScheme: "pkcs1-sha256"
+ }
+ });
+ console.log("pkcs1_sha256_sign_verify");
+ console.log(pkcs1_sha256_sign_verify);
+ let pkcs1_oaep_sha256 = NODERSA.encryptRSAWithPublicKey(data, `-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du
+SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm
+kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8
+PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m
+PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb
+Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB
+-----END RSA PUBLIC KEY-----
+`, {
+ outputEncoding: "base64",
+ options: {
+ environment: "browser",
+ encryptionScheme: {
+ scheme: "pkcs1_oaep",
+ hash: "sha256"
+ }
+ }
+ });
+ console.log("pkcs1_oaep_sha256");
+ console.log(pkcs1_oaep_sha256);
+ decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==", `-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is
+T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S
+xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy
+3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+
+HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA
+ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/
+zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31
+iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l
+QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu
+eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ
+8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9
+l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC
+WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J
+NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0
+o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3
+ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ
+I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i
+tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P
+vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p
+yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC
+8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87
+HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN
+QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51
+MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw
+m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA==
+-----END RSA PRIVATE KEY-----`, {
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1_oaep"
+ }
+ });
+ console.log("decryptedWithPrivate");
+ console.log(decryptedWithPrivate);
+ (() => {
+ let key = new NODERSA.NodeRSA({
+ b: 1024
+ });
+ key.setOptions({
+ encryptionScheme: "pkcs1"
+ });
+ let text = `你好drpy node-ras`;
+ let encrypted = key.encrypt(text, "base64");
+ console.log("encrypted: ", encrypted);
+ const decrypted = key.decrypt(encrypted, "utf8");
+ console.log("decrypted: ", decrypted)
+ })();
+ let t2 = (new Date).getTime();
+ console.log("rsa_demo_test 测试耗时:" + (t2 - t1) + "毫秒")
+}
+
+function pre() {
+ if (typeof rule.预处理 === "string" && rule.预处理 && rule.预处理.trim()) {
+ let code = rule.预处理.trim();
+ console.log("执行预处理代码:" + code);
+ if (code.startsWith("js:")) {
+ code = code.replace("js:", "")
+ }
+ try {
+ eval(code)
+ } catch (e) {
+ console.log(`预处理执行失败:${e.message}`)
+ }
+ }
+}
+let rule = {};
+const MOBILE_UA = "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36";
+const PC_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";
+const UA = "Mozilla/5.0";
+const UC_UA = "Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";
+const IOS_UA = "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";
+const RULE_CK = "cookie";
+const CATE_EXCLUDE = "首页|留言|APP|下载|资讯|新闻|动态";
+const TAB_EXCLUDE = "猜你|喜欢|下载|剧情|榜|评论";
+const OCR_RETRY = 3;
+const OCR_API = "https://api.nn.ci/ocr/b64/text";
+if (typeof MY_URL === "undefined") {
+ var MY_URL
+}
+var HOST;
+var RKEY;
+var fetch;
+var print;
+var log;
+var rule_fetch_params;
+var fetch_params;
+var oheaders;
+var _pdfh;
+var _pdfa;
+var _pd;
+const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/;
+const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/;
+const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/;
+const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/;
+const SELECT_REGEX = /:eq|:lt|:gt|#/g;
+const SELECT_REGEX_A = /:eq|:lt|:gt/g;
+const $js = {
+ toString(func) {
+ let strfun = func.toString();
+ return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/, "js:").replace(/\}$/, "")
+ }
+};
+
+function window_b64() {
+ let b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ let base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
+
+ function btoa(str) {
+ var out, i, len;
+ var c1, c2, c3;
+ len = str.length;
+ i = 0;
+ out = "";
+ while (i < len) {
+ c1 = str.charCodeAt(i++) & 255;
+ if (i == len) {
+ out += b64map.charAt(c1 >> 2);
+ out += b64map.charAt((c1 & 3) << 4);
+ out += "==";
+ break
+ }
+ c2 = str.charCodeAt(i++);
+ if (i == len) {
+ out += b64map.charAt(c1 >> 2);
+ out += b64map.charAt((c1 & 3) << 4 | (c2 & 240) >> 4);
+ out += b64map.charAt((c2 & 15) << 2);
+ out += "=";
+ break
+ }
+ c3 = str.charCodeAt(i++);
+ out += b64map.charAt(c1 >> 2);
+ out += b64map.charAt((c1 & 3) << 4 | (c2 & 240) >> 4);
+ out += b64map.charAt((c2 & 15) << 2 | (c3 & 192) >> 6);
+ out += b64map.charAt(c3 & 63)
+ }
+ return out
+ }
+
+ function atob(str) {
+ var c1, c2, c3, c4;
+ var i, len, out;
+ len = str.length;
+ i = 0;
+ out = "";
+ while (i < len) {
+ do {
+ c1 = base64DecodeChars[str.charCodeAt(i++) & 255]
+ } while (i < len && c1 == -1);
+ if (c1 == -1) break;
+ do {
+ c2 = base64DecodeChars[str.charCodeAt(i++) & 255]
+ } while (i < len && c2 == -1);
+ if (c2 == -1) break;
+ out += String.fromCharCode(c1 << 2 | (c2 & 48) >> 4);
+ do {
+ c3 = str.charCodeAt(i++) & 255;
+ if (c3 == 61) return out;
+ c3 = base64DecodeChars[c3]
+ } while (i < len && c3 == -1);
+ if (c3 == -1) break;
+ out += String.fromCharCode((c2 & 15) << 4 | (c3 & 60) >> 2);
+ do {
+ c4 = str.charCodeAt(i++) & 255;
+ if (c4 == 61) return out;
+ c4 = base64DecodeChars[c4]
+ } while (i < len && c4 == -1);
+ if (c4 == -1) break;
+ out += String.fromCharCode((c3 & 3) << 6 | c4)
+ }
+ return out
+ }
+ return {
+ atob: atob,
+ btoa: btoa
+ }
+}
+if (typeof atob !== "function" || typeof btoa !== "function") {
+ var {
+ atob,
+ btoa
+ } = window_b64()
+}
+if (typeof Object.assign !== "function") {
+ Object.assign = function() {
+ let target = arguments[0];
+ for (let i = 1; i < arguments.length; i++) {
+ let source = arguments[i];
+ for (let key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key]
+ }
+ }
+ }
+ return target
+ }
+}
+if (!String.prototype.includes) {
+ String.prototype.includes = function(search, start) {
+ if (typeof start !== "number") {
+ start = 0
+ }
+ if (start + search.length > this.length) {
+ return false
+ } else {
+ return this.indexOf(search, start) !== -1
+ }
+ }
+}
+if (!Array.prototype.includes) {
+ Object.defineProperty(Array.prototype, "includes", {
+ value: function(searchElement, fromIndex) {
+ if (this == null) {
+ throw new TypeError('"this" is null or not defined')
+ }
+ var o = Object(this);
+ var len = o.length >>> 0;
+ if (len === 0) {
+ return false
+ }
+ var n = fromIndex | 0;
+ var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+ while (k < len) {
+ if (o[k] === searchElement) {
+ return true
+ }
+ k++
+ }
+ return false
+ },
+ enumerable: false
+ })
+}
+if (typeof String.prototype.startsWith !== "function") {
+ String.prototype.startsWith = function(prefix) {
+ return this.slice(0, prefix.length) === prefix
+ }
+}
+if (typeof String.prototype.endsWith !== "function") {
+ String.prototype.endsWith = function(suffix) {
+ return this.indexOf(suffix, this.length - suffix.length) !== -1
+ }
+}
+Object.defineProperty(Object.prototype, "myValues", {
+ value: function(obj) {
+ if (obj == null) {
+ throw new TypeError("Cannot convert undefined or null to object")
+ }
+ var res = [];
+ for (var k in obj) {
+ if (obj.hasOwnProperty(k)) {
+ res.push(obj[k])
+ }
+ }
+ return res
+ },
+ enumerable: false
+});
+if (typeof Object.prototype.values !== "function") {
+ Object.defineProperty(Object.prototype, "values", {
+ value: function(obj) {
+ if (obj == null) {
+ throw new TypeError("Cannot convert undefined or null to object")
+ }
+ var res = [];
+ for (var k in obj) {
+ if (obj.hasOwnProperty(k)) {
+ res.push(obj[k])
+ }
+ }
+ return res
+ },
+ enumerable: false
+ })
+}
+if (typeof Array.prototype.join !== "function") {
+ Object.defineProperty(Array.prototype, "join", {
+ value: function(emoji) {
+ emoji = emoji || "";
+ let self = this;
+ let str = "";
+ let i = 0;
+ if (!Array.isArray(self)) {
+ throw String(self) + "is not Array"
+ }
+ if (self.length === 0) {
+ return ""
+ }
+ if (self.length === 1) {
+ return String(self[0])
+ }
+ i = 1;
+ str = this[0];
+ for (; i < self.length; i++) {
+ str += String(emoji) + String(self[i])
+ }
+ return str
+ },
+ enumerable: false
+ })
+}
+if (typeof Array.prototype.toReversed !== "function") {
+ Object.defineProperty(Array.prototype, "toReversed", {
+ value: function() {
+ const clonedList = this.slice();
+ const reversedList = clonedList.reverse();
+ return reversedList
+ },
+ enumerable: false
+ })
+}
+Object.defineProperty(Array.prototype, "append", {
+ value: Array.prototype.push,
+ enumerable: false
+});
+Object.defineProperty(String.prototype, "strip", {
+ value: String.prototype.trim,
+ enumerable: false
+});
+Object.defineProperty(String.prototype, "rstrip", {
+ value: function(chars) {
+ let regex = new RegExp(chars + "$");
+ return this.replace(regex, "")
+ },
+ enumerable: false
+});
+
+function 是否正版(vipUrl) {
+ let flag = new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv");
+ return flag.test(vipUrl)
+}
+
+function urlDeal(vipUrl) {
+ if (!vipUrl) {
+ return ""
+ }
+ if (!是否正版(vipUrl)) {
+ return vipUrl
+ }
+ if (!/miguvideo/.test(vipUrl)) {
+ vipUrl = vipUrl.split("#")[0].split("?")[0]
+ }
+ return vipUrl
+}
+
+function setResult(d) {
+ if (!Array.isArray(d)) {
+ return []
+ }
+ VODS = [];
+ d.forEach(function(it) {
+ let obj = {
+ vod_id: it.url || "",
+ vod_name: it.title || "",
+ vod_remarks: it.desc || "",
+ vod_content: it.content || "",
+ vod_pic: it.pic_url || it.img || ""
+ };
+ let keys = Object.keys(it);
+ if (keys.includes("tname")) {
+ obj.type_name = it.tname || ""
+ }
+ if (keys.includes("tid")) {
+ obj.type_id = it.tid || ""
+ }
+ if (keys.includes("year")) {
+ obj.vod_year = it.year || ""
+ }
+ if (keys.includes("actor")) {
+ obj.vod_actor = it.actor || ""
+ }
+ if (keys.includes("director")) {
+ obj.vod_director = it.director || ""
+ }
+ if (keys.includes("area")) {
+ obj.vod_area = it.area || ""
+ }
+ VODS.push(obj)
+ });
+ return VODS
+}
+
+function setResult2(res) {
+ VODS = res.list || [];
+ return VODS
+}
+
+function setHomeResult(res) {
+ if (!res || typeof res !== "object") {
+ return []
+ }
+ return setResult(res.list)
+}
+
+function rc(js) {
+ if (js === "maomi_aes.js") {
+ var a = CryptoJS.enc.Utf8.parse("625222f9149e961d");
+ var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");
+ return {
+ De: function(word) {
+ word = CryptoJS.enc.Hex.parse(word);
+ return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, {
+ iv: t,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8)
+ },
+ En: function(word) {
+ var Encrypted = CryptoJS.AES.encrypt(word, a, {
+ iv: t,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+ return Encrypted.ciphertext.toString()
+ }
+ }
+ }
+ return {}
+}
+
+function maoss(jxurl, ref, key) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ eval(getCryptoJS());
+ try {
+ var getVideoInfo = function(text) {
+ return CryptoJS.AES.decrypt(text, key, {
+ iv: iv,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8)
+ };
+ var token_key = key == undefined ? "dvyYRQlnPRCMdQSe" : key;
+ if (ref) {
+ var html = request(jxurl, {
+ headers: {
+ Referer: ref
+ }
+ })
+ } else {
+ var html = request(jxurl)
+ }
+ if (html.indexOf("&btwaf=") != -1) {
+ html = request(jxurl + "&btwaf" + html.match(/&btwaf(.*?)"/)[1], {
+ headers: {
+ Referer: ref
+ }
+ })
+ }
+ var token_iv = html.split('_token = "')[1].split('"')[0];
+ var key = CryptoJS.enc.Utf8.parse(token_key);
+ var iv = CryptoJS.enc.Utf8.parse(token_iv);
+ eval(html.match(/var config = {[\s\S]*?}/)[0] + "");
+ if (!config.url.startsWith("http")) {
+ config.url = CryptoJS.AES.decrypt(config.url, key, {
+ iv: iv,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8)
+ }
+ return config.url
+ } catch (e) {
+ return ""
+ }
+}
+
+function urlencode(str) {
+ str = (str + "").toString();
+ return encodeURIComponent(str).replace(/!/g, "%21").replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/\*/g, "%2A").replace(/%20/g, "+")
+}
+
+function encodeUrl(str) {
+ if (typeof encodeURI == "function") {
+ return encodeURI(str)
+ } else {
+ str = (str + "").toString();
+ return encodeURIComponent(str).replace(/%2F/g, "/").replace(/%3F/g, "?").replace(/%3A/g, ":").replace(/%40/g, "@").replace(/%3D/g, "=").replace(/%3A/g, ":").replace(/%2C/g, ",").replace(/%2B/g, "+").replace(/%24/g, "$")
+ }
+}
+
+function base64Encode(text) {
+ return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text))
+}
+
+function base64Decode(text) {
+ return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))
+}
+
+function md5(text) {
+ return CryptoJS.MD5(text).toString()
+}
+
+function uint8ArrayToBase64(uint8Array) {
+ let binaryString = String.fromCharCode.apply(null, Array.from(uint8Array));
+ return btoa(binaryString)
+}
+
+function Utf8ArrayToStr(array) {
+ var out, i, len, c;
+ var char2, char3;
+ out = "";
+ len = array.length;
+ i = 0;
+ while (i < len) {
+ c = array[i++];
+ switch (c >> 4) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ out += String.fromCharCode(c);
+ break;
+ case 12:
+ case 13:
+ char2 = array[i++];
+ out += String.fromCharCode((c & 31) << 6 | char2 & 63);
+ break;
+ case 14:
+ char2 = array[i++];
+ char3 = array[i++];
+ out += String.fromCharCode((c & 15) << 12 | (char2 & 63) << 6 | (char3 & 63) << 0);
+ break
+ }
+ }
+ return out
+}
+
+function gzip(str) {
+ let arr = pako.gzip(str, {});
+ return uint8ArrayToBase64(arr)
+}
+
+function ungzip(b64Data) {
+ let strData = atob(b64Data);
+ const charData = strData.split("").map(function(x) {
+ return x.charCodeAt(0)
+ });
+ const binData = new Uint8Array(charData);
+ const data = pako.inflate(binData);
+ return Utf8ArrayToStr(data)
+}
+
+function encodeStr(input, encoding) {
+ encoding = encoding || "gbk";
+ if (encoding.startsWith("gb")) {
+ const strTool = gbkTool();
+ input = strTool.encode(input)
+ }
+ return input
+}
+
+function decodeStr(input, encoding) {
+ encoding = encoding || "gbk";
+ if (encoding.startsWith("gb")) {
+ const strTool = gbkTool();
+ input = strTool.decode(input)
+ }
+ return input
+}
+
+function getCryptoJS() {
+ return 'console.log("CryptoJS已装载");'
+}
+const RSA = {
+ decode: function(data, key, option) {
+ option = option || {};
+ if (typeof JSEncrypt === "function") {
+ let chunkSize = option.chunkSize || 117;
+ let privateKey = this.getPrivateKey(key);
+ const decryptor = new JSEncrypt;
+ decryptor.setPrivateKey(privateKey);
+ let uncrypted = "";
+ uncrypted = decryptor.decryptUnicodeLong(data);
+ return uncrypted
+ } else {
+ return false
+ }
+ },
+ encode: function(data, key, option) {
+ option = option || {};
+ if (typeof JSEncrypt === "function") {
+ let chunkSize = option.chunkSize || 117;
+ let publicKey = this.getPublicKey(key);
+ const encryptor = new JSEncrypt;
+ encryptor.setPublicKey(publicKey);
+ let encrypted = "";
+ encrypted = encryptor.encryptUnicodeLong(data);
+ return encrypted
+ } else {
+ return false
+ }
+ },
+ fixKey(key, prefix, endfix) {
+ if (!key.includes(prefix)) {
+ key = prefix + key
+ }
+ if (!key.includes(endfix)) {
+ key += endfix
+ }
+ return key
+ },
+ getPrivateKey(key) {
+ let prefix = "-----BEGIN RSA PRIVATE KEY-----";
+ let endfix = "-----END RSA PRIVATE KEY-----";
+ return this.fixKey(key, prefix, endfix)
+ },
+ getPublicKey(key) {
+ let prefix = "-----BEGIN PUBLIC KEY-----";
+ let endfix = "-----END PUBLIC KEY-----";
+ return this.fixKey(key, prefix, endfix)
+ }
+};
+
+function getProxyUrl() {
+ if (typeof getProxy === "function") {
+ return getProxy(true)
+ } else {
+ return "http://127.0.0.1:9978/proxy?do=js"
+ }
+}
+
+function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) {
+ if (!m3u8_text && !m3u8_url || !m3u8_text && m3u8_url && !m3u8_url.startsWith("http")) {
+ return ""
+ }
+ if (!m3u8_text) {
+ log("m3u8_url:" + m3u8_url);
+ m3u8_text = request(m3u8_url)
+ }
+ log("len(m3u8_text):" + m3u8_text.length);
+ if (!ad_remove) {
+ return m3u8_text
+ }
+ if (ad_remove.startsWith("reg:")) {
+ ad_remove = ad_remove.slice(4)
+ } else if (ad_remove.startsWith("js:")) {
+ ad_remove = ad_remove.slice(3)
+ }
+ let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf("#EXTINF")).trim();
+ let m3u8_body = m3u8_text.slice(m3u8_text.indexOf("#EXTINF"), m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();
+ let m3u8_end = m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();
+ let murls = [];
+ let m3_body_list = m3u8_body.split("\n");
+ let m3_len = m3_body_list.length;
+ let i = 0;
+ while (i < m3_len) {
+ let mi = m3_body_list[i];
+ let mi_1 = m3_body_list[i + 1];
+ if (mi.startsWith("#EXTINF")) {
+ murls.push([mi, mi_1].join("&"));
+ i += 2
+ } else if (mi.startsWith("#EXT-X-DISCONTINUITY")) {
+ let mi_2 = m3_body_list[i + 2];
+ murls.push([mi, mi_1, mi_2].join("&"));
+ i += 3
+ } else {
+ break
+ }
+ }
+ let new_m3u8_body = [];
+ for (let murl of murls) {
+ if (ad_remove && new RegExp(ad_remove).test(murl)) {} else {
+ let murl_list = murl.split("&");
+ if (!murl_list[murl_list.length - 1].startsWith("http") && m3u8_url.startsWith("http")) {
+ murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1])
+ }
+ murl_list.forEach(it => {
+ new_m3u8_body.push(it)
+ })
+ }
+ }
+ new_m3u8_body = new_m3u8_body.join("\n").trim();
+ m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join("\n").trim();
+ return m3u8_text
+}
+
+function fixAdM3u8Ai(m3u8_url, headers) {
+ let ts = (new Date).getTime();
+ let option = headers ? {
+ headers: headers
+ } : {};
+
+ function b(s1, s2) {
+ let i = 0;
+ while (i < s1.length) {
+ if (s1[i] !== s2[i]) {
+ break
+ }
+ i++
+ }
+ return i
+ }
+
+ function reverseString(str) {
+ return str.split("").reverse().join("")
+ }
+ let m3u8 = request(m3u8_url, option);
+ m3u8 = m3u8.trim().split("\n").map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)).join("\n");
+ m3u8 = m3u8.replace(/\n\n/gi, "\n");
+ let last_url = m3u8.split("\n").slice(-1)[0];
+ if (last_url.length < 5) {
+ last_url = m3u8.split("\n").slice(-2)[0]
+ }
+ if (last_url.includes(".m3u8") && last_url !== m3u8_url) {
+ m3u8_url = urljoin2(m3u8_url, last_url);
+ log("嵌套的m3u8_url:" + m3u8_url);
+ m3u8 = request(m3u8_url, option)
+ }
+ let s = m3u8.trim().split("\n").filter(it => it.trim()).join("\n");
+ let ss = s.split("\n");
+ if (m3u8_url.indexOf("ffzy") > 0) {
+ let j = 0,
+ k1 = 0,
+ m = 0,
+ n = 0,
+ t = 0;
+ let s2 = "";
+ for (let i = 0; i < ss.length; i++) {
+ let s = ss[i];
+ let s1 = "";
+ if (s.startsWith("#EXTINF")) {
+ s1 = s.slice(8);
+ n++;
+ if (n == 1) k1 = i;
+ if (s2.indexOf(s1) == -1) {
+ s2 = s2 + s1;
+ m++
+ }
+ t = t + parseFloat(s1);
+ i++;
+ s = ss[i]
+ }
+ if (s.startsWith("#EXT-X-DISCONTINUITY")) {
+ if (n == 5) {
+ log("n:" + n);
+ log("m:" + m);
+ for (let j = k1; j < k1 + n * 2; j++) {
+ log(ss[j])
+ }
+ log("广告位置:" + k1);
+ log("数据条数:" + n);
+ log("数据种类:" + m);
+ log("广告时间:" + t.toFixed(5));
+ ss.splice(k1, 2 * n + 1);
+ i = i - 2 * n + 1
+ }
+ t = 0;
+ m = 0;
+ n = 0;
+ s2 = ""
+ }
+ }
+ }
+ let firststr = "";
+ let maxl = 0;
+ let kk = 0;
+ let kkk1 = 1;
+ let kkk2 = 0;
+ let secondstr = "";
+ for (let i = 0; i < ss.length; i++) {
+ let s = ss[i];
+ if (!s.startsWith("#")) {
+ if (kk == 0) firststr = s;
+ if (kk > 0) {
+ if (maxl > b(firststr, s) + 1) {
+ if (secondstr.length < 5) secondstr = s;
+ kkk2++
+ } else {
+ maxl = b(firststr, s);
+ kkk1++
+ }
+ }
+ kk++;
+ if (kk >= 30) break
+ }
+ }
+ if (kkk2 > kkk1) firststr = secondstr;
+ let firststrlen = firststr.length;
+ let ml = Math.round(ss.length / 2).toString().length;
+ let maxc = 0;
+ let laststr = ss.toReversed().find(x => {
+ if (!x.startsWith("#")) {
+ let k = b(reverseString(firststr), reverseString(x));
+ maxl = b(firststr, x);
+ maxc++;
+ if (firststrlen - maxl <= ml + k || maxc > 10) {
+ return true
+ }
+ }
+ return false
+ });
+ log("最后一条切片:" + laststr);
+ let ad_urls = [];
+ for (let i = 0; i < ss.length; i++) {
+ let s = ss[i];
+ if (!s.startsWith("#")) {
+ if (b(firststr, s) < maxl) {
+ ad_urls.push(s);
+ ss.splice(i - 1, 2);
+ i = i - 2
+ } else {
+ ss[i] = urljoin(m3u8_url, s)
+ }
+ } else {
+ ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"')
+ }
+ }
+ log("处理的m3u8地址:" + m3u8_url);
+ log("----广告地址----");
+ log(ad_urls);
+ m3u8 = ss.join("\n");
+ log("处理耗时:" + ((new Date).getTime() - ts).toString());
+ log(m3u8);
+ return m3u8
+}
+
+function forceOrder(lists, key, option) {
+ let start = Math.floor(lists.length / 2);
+ let end = Math.min(lists.length - 1, start + 1);
+ if (start >= end) {
+ return lists
+ }
+ let first = lists[start];
+ let second = lists[end];
+ if (key) {
+ try {
+ first = first[key];
+ second = second[key]
+ } catch (e) {}
+ }
+ if (option && typeof option === "function") {
+ try {
+ first = option(first);
+ second = option(second)
+ } catch (e) {}
+ }
+ first += "";
+ second += "";
+ if (first.match(/(\d+)/) && second.match(/(\d+)/)) {
+ let num1 = Number(first.match(/(\d+)/)[1]);
+ let num2 = Number(second.match(/(\d+)/)[1]);
+ if (num1 > num2) {
+ lists.reverse()
+ }
+ }
+ return lists
+}
+let VODS = [];
+let VOD = {};
+let TABS = [];
+let LISTS = [];
+
+function getQuery(url) {
+ try {
+ if (url.indexOf("?") > -1) {
+ url = url.slice(url.indexOf("?") + 1)
+ }
+ let arr = url.split("#")[0].split("&");
+ const resObj = {};
+ arr.forEach(item => {
+ let arr1 = item.split("=");
+ let key = arr1[0];
+ let value = arr1.slice(1).join("=");
+ resObj[key] = value
+ });
+ return resObj
+ } catch (err) {
+ log(`getQuery发生错误:${e.message}`);
+ return {}
+ }
+}
+
+function urljoin(fromPath, nowPath) {
+ fromPath = fromPath || "";
+ nowPath = nowPath || "";
+ return joinUrl(fromPath, nowPath)
+}
+var urljoin2 = urljoin;
+const defaultParser = {
+ pdfh: pdfh,
+ pdfa: pdfa,
+ pd: pd
+};
+
+function pdfh2(html, parse) {
+ let html2 = html;
+ try {
+ if (typeof html !== "string") {
+ html2 = html.rr(html.ele).toString()
+ }
+ } catch (e) {
+ print(`html对象转文本发生了错误:${e.message}`)
+ }
+ let result = defaultParser.pdfh(html2, parse);
+ let option = parse.includes("&&") ? parse.split("&&").slice(-1)[0] : parse.split(" ").slice(-1)[0];
+ if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) {
+ try {
+ result = result.match(/url\((.*?)\)/)[1];
+ result = result.replace(/^['|"](.*)['|"]$/, "$1")
+ } catch (e) {}
+ }
+ return result
+}
+
+function pdfa2(html, parse) {
+ let html2 = html;
+ try {
+ if (typeof html !== "string") {
+ html2 = html.rr(html.ele).toString()
+ }
+ } catch (e) {
+ print(`html对象转文本发生了错误:${e.message}`)
+ }
+ return defaultParser.pdfa(html2, parse)
+}
+
+function pd2(html, parse, uri) {
+ let ret = pdfh2(html, parse);
+ if (typeof uri === "undefined" || !uri) {
+ uri = ""
+ }
+ if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) {
+ if (/http/.test(ret)) {
+ ret = ret.slice(ret.indexOf("http"))
+ } else {
+ ret = urljoin(MY_URL, ret)
+ }
+ }
+ return ret
+}
+const parseTags = {
+ jsp: {
+ pdfh: pdfh2,
+ pdfa: pdfa2,
+ pd: pd2
+ },
+ json: {
+ pdfh(html, parse) {
+ if (!parse || !parse.trim()) {
+ return ""
+ }
+ if (typeof html === "string") {
+ html = JSON.parse(html)
+ }
+ parse = parse.trim();
+ if (!parse.startsWith("$.")) {
+ parse = "$." + parse
+ }
+ parse = parse.split("||");
+ for (let ps of parse) {
+ let ret = cheerio.jp(ps, html);
+ if (Array.isArray(ret)) {
+ ret = ret[0] || ""
+ } else {
+ ret = ret || ""
+ }
+ if (ret && typeof ret !== "string") {
+ ret = ret.toString()
+ }
+ if (ret) {
+ return ret
+ }
+ }
+ return ""
+ },
+ pdfa(html, parse) {
+ if (!parse || !parse.trim()) {
+ return ""
+ }
+ if (typeof html === "string") {
+ html = JSON.parse(html)
+ }
+ parse = parse.trim();
+ if (!parse.startsWith("$.")) {
+ parse = "$." + parse
+ }
+ let ret = cheerio.jp(parse, html);
+ if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) {
+ return ret[0] || []
+ }
+ return ret || []
+ },
+ pd(html, parse) {
+ let ret = parseTags.json.pdfh(html, parse);
+ if (ret) {
+ return urljoin(MY_URL, ret)
+ }
+ return ret
+ }
+ },
+ jq: {
+ pdfh(html, parse) {
+ if (!html || !parse || !parse.trim()) {
+ return ""
+ }
+ parse = parse.trim();
+ let result = defaultParser.pdfh(html, parse);
+ return result
+ },
+ pdfa(html, parse) {
+ if (!html || !parse || !parse.trim()) {
+ return []
+ }
+ parse = parse.trim();
+ let result = defaultParser.pdfa(html, parse);
+ print(`pdfa解析${parse}=>${result.length}`);
+ return result
+ },
+ pd(html, parse, base_url) {
+ if (!html || !parse || !parse.trim()) {
+ return ""
+ }
+ parse = parse.trim();
+ base_url = base_url || MY_URL;
+ return defaultParser.pd(html, parse, base_url)
+ }
+ },
+ getParse(p0) {
+ if (p0.startsWith("jsp:")) {
+ return this.jsp
+ } else if (p0.startsWith("json:")) {
+ return this.json
+ } else if (p0.startsWith("jq:")) {
+ return this.jq
+ } else {
+ return this.jq
+ }
+ }
+};
+const stringify = JSON.stringify;
+const jsp = parseTags.jsp;
+const jq = parseTags.jq;
+
+function readFile(filePath) {
+ filePath = filePath || "./uri.min.js";
+ var fd = os.open(filePath);
+ var buffer = new ArrayBuffer(1024);
+ var len = os.read(fd, buffer, 0, 1024);
+ console.log(len);
+ let text = String.fromCharCode.apply(null, new Uint8Array(buffer));
+ console.log(text);
+ return text
+}
+
+function dealJson(html) {
+ try {
+ html = html.trim();
+ if (!(html.startsWith("{") && html.endsWith("}") || html.startsWith("[") && html.endsWith("]"))) {
+ html = "{" + html.match(/.*?\{(.*)\}/m)[1] + "}"
+ }
+ } catch (e) {}
+ try {
+ html = JSON.parse(html)
+ } catch (e) {}
+ return html
+}
+var OcrApi = {
+ api: OCR_API,
+ classification: function(img) {
+ let code = "";
+ try {
+ log("通过drpy_ocr验证码接口过验证...");
+ let html = "";
+ if (this.api.endsWith("drpy/text")) {
+ html = request(this.api, {
+ data: {
+ img: img
+ },
+ headers: {
+ "User-Agent": PC_UA
+ },
+ method: "POST"
+ }, true)
+ } else {
+ html = post(this.api, {
+ body: img
+ })
+ }
+ code = html || ""
+ } catch (e) {
+ log(`OCR识别验证码发生错误:${e.message}`)
+ }
+ return code
+ }
+};
+
+function verifyCode(url) {
+ let cnt = 0;
+ let host = getHome(url);
+ let cookie = "";
+ while (cnt < OCR_RETRY) {
+ try {
+ let yzm_url = `${host}/index.php/verify/index.html`;
+ console.log(`验证码链接:${yzm_url}`);
+ let hhtml = request(yzm_url, {
+ withHeaders: true,
+ toBase64: true
+ }, true);
+ let json = JSON.parse(hhtml);
+ if (!cookie) {
+ let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie");
+ cookie = setCk ? json[setCk].split(";")[0] : ""
+ }
+ console.log("cookie:" + cookie);
+ let img = json.body;
+ let code = OcrApi.classification(img);
+ console.log(`第${cnt+1}次验证码识别结果:${code}`);
+ let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`;
+ console.log(submit_url);
+ let html = request(submit_url, {
+ headers: {
+ Cookie: cookie
+ },
+ method: "POST"
+ });
+ html = JSON.parse(html);
+ if (html.msg === "ok") {
+ console.log(`第${cnt+1}次验证码提交成功`);
+ return cookie
+ } else if (html.msg !== "ok" && cnt + 1 >= OCR_RETRY) {
+ cookie = ""
+ }
+ } catch (e) {
+ console.log(`第${cnt+1}次验证码提交失败:${e.message}`);
+ if (cnt + 1 >= OCR_RETRY) {
+ cookie = ""
+ }
+ }
+ cnt += 1
+ }
+ return cookie
+}
+
+function setItem(k, v) {
+ local.set(RKEY, k, v);
+ console.log(`规则${RKEY}设置${k} => ${v}`)
+}
+
+function getItem(k, v) {
+ return local.get(RKEY, k) || v
+}
+
+function clearItem(k) {
+ local.delete(RKEY, k)
+}
+
+function getHome(url) {
+ if (!url) {
+ return ""
+ }
+ let tmp = url.split("//");
+ url = tmp[0] + "//" + tmp[1].split("/")[0];
+ try {
+ url = decodeURIComponent(url)
+ } catch (e) {}
+ return url
+}
+
+function buildUrl(url, obj) {
+ obj = obj || {};
+ if (url.indexOf("?") < 0) {
+ url += "?"
+ }
+ let param_list = [];
+ let keys = Object.keys(obj);
+ keys.forEach(it => {
+ param_list.push(it + "=" + obj[it])
+ });
+ let prs = param_list.join("&");
+ if (keys.length > 0 && !url.endsWith("?")) {
+ url += "&"
+ }
+ url += prs;
+ return url
+}
+
+function $require(url) {
+ eval(request(url))
+}
+
+function keysToLowerCase(obj) {
+ return Object.keys(obj).reduce((result, key) => {
+ const newKey = key.toLowerCase();
+ result[newKey] = obj[key];
+ return result
+ }, {})
+}
+
+function parseQueryString(query) {
+ const params = {};
+ query.split("&").forEach(function(part) {
+ const regex = /^(.*?)=(.*)/;
+ const match = part.match(regex);
+ if (match) {
+ const key = decodeURIComponent(match[1]);
+ const value = decodeURIComponent(match[2]);
+ params[key] = value
+ }
+ });
+ return params
+}
+
+function encodeIfContainsSpecialChars(value) {
+ const specialChars = ":/?#[]@!$'()*+,;=%";
+ if (specialChars.split("").some(char => value.includes(char))) {
+ return encodeURIComponent(value)
+ }
+ return value
+}
+
+function objectToQueryString(obj) {
+ const encoded = [];
+ for (let key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ encoded.push(encodeURIComponent(key) + "=" + encodeIfContainsSpecialChars(obj[key]))
+ }
+ }
+ return encoded.join("&")
+}
+
+function request(url, obj, ocr_flag) {
+ ocr_flag = ocr_flag || false;
+ if (typeof obj === "undefined" || !obj || obj === {}) {
+ if (!fetch_params || !fetch_params.headers) {
+ let headers = {
+ "User-Agent": MOBILE_UA
+ };
+ if (rule.headers) {
+ Object.assign(headers, rule.headers)
+ }
+ if (!fetch_params) {
+ fetch_params = {}
+ }
+ fetch_params.headers = headers
+ }
+ if (!fetch_params.headers.Referer) {
+ fetch_params.headers.Referer = getHome(url)
+ }
+ obj = fetch_params
+ } else {
+ let headers = obj.headers || {};
+ let keys = Object.keys(headers).map(it => it.toLowerCase());
+ if (!keys.includes("user-agent")) {
+ headers["User-Agent"] = MOBILE_UA;
+ if (typeof fetch_params === "object" && fetch_params && fetch_params.headers) {
+ let fetch_headers = keysToLowerCase(fetch_params.headers);
+ if (fetch_headers["user-agent"]) {
+ headers["User-Agent"] = fetch_headers["user-agent"]
+ }
+ }
+ }
+ if (!keys.includes("referer")) {
+ headers["Referer"] = getHome(url)
+ }
+ obj.headers = headers
+ }
+ if (rule.encoding && rule.encoding !== "utf-8" && !ocr_flag) {
+ if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) {
+ obj.headers["Content-Type"] = "text/html; charset=" + rule.encoding
+ }
+ }
+ if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "string") {
+ if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) {
+ obj.headers["Content-Type"] = "application/x-www-form-urlencoded; charset=" + rule.encoding
+ }
+ } else if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "object") {
+ obj.data = obj.body;
+ delete obj.body
+ }
+ if (!url) {
+ return obj.withHeaders ? "{}" : ""
+ }
+ if (obj.toBase64) {
+ obj.buffer = 2;
+ delete obj.toBase64
+ }
+ if (obj.redirect === false) {
+ obj.redirect = 0
+ }
+ if (obj.headers.hasOwnProperty("Content-Type") || obj.headers.hasOwnProperty("content-type")) {
+ let _contentType = obj.headers["Content-Type"] || obj.headers["content-type"] || "";
+ if (_contentType.includes("application/x-www-form-urlencoded")) {
+ log("custom body is application/x-www-form-urlencoded");
+ if (typeof obj.body == "string") {
+ let temp_obj = parseQueryString(obj.body);
+ console.log(JSON.stringify(temp_obj))
+ }
+ }
+ }
+ console.log(JSON.stringify(obj.headers));
+ console.log("request:" + url + `|method:${obj.method||"GET"}|body:${obj.body||""}`);
+ let res = req(url, obj);
+ let html = res.content || "";
+ if (obj.withHeaders) {
+ let htmlWithHeaders = res.headers;
+ htmlWithHeaders.body = html;
+ return JSON.stringify(htmlWithHeaders)
+ } else {
+ return html
+ }
+}
+
+function post(url, obj) {
+ obj = obj || {};
+ obj.method = "POST";
+ return request(url, obj)
+}
+
+function reqCookie(url, obj, all_cookie) {
+ obj = obj || {};
+ obj.withHeaders = true;
+ all_cookie = all_cookie || false;
+ let html = request(url, obj);
+ let json = JSON.parse(html);
+ let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie");
+ let cookie = setCk ? json[setCk] : "";
+ if (Array.isArray(cookie)) {
+ cookie = cookie.join(";")
+ }
+ if (!all_cookie) {
+ cookie = cookie.split(";")[0]
+ }
+ html = json.body;
+ return {
+ cookie: cookie,
+ html: html
+ }
+}
+fetch = request;
+print = function(data) {
+ data = data || "";
+ if (typeof data == "object" && Object.keys(data).length > 0) {
+ try {
+ data = JSON.stringify(data);
+ console.log(data)
+ } catch (e) {
+ console.log(typeof data + ":" + data.length);
+ return
+ }
+ } else if (typeof data == "object" && Object.keys(data).length < 1) {
+ console.log("null object")
+ } else {
+ console.log(data)
+ }
+};
+log = print;
+
+function checkHtml(html, url, obj) {
+ if (/\?btwaf=/.test(html)) {
+ let btwaf = html.match(/btwaf(.*?)"/)[1];
+ url = url.split("#")[0] + "?btwaf" + btwaf;
+ print("宝塔验证访问链接:" + url);
+ html = request(url, obj)
+ }
+ return html
+}
+
+function getCode(url, obj) {
+ let html = request(url, obj);
+ html = checkHtml(html, url, obj);
+ return html
+}
+
+function getHtml(url) {
+ let obj = {};
+ if (rule.headers) {
+ obj.headers = rule.headers
+ }
+ let cookie = getItem(RULE_CK, "");
+ if (cookie) {
+ if (obj.headers && !Object.keys(obj.headers).map(it => it.toLowerCase()).includes("cookie")) {
+ log("历史无cookie,新增过验证后的cookie");
+ obj.headers["Cookie"] = cookie
+ } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) {
+ obj.headers["Cookie"] = cookie;
+ log("历史有小写过期的cookie,更新过验证后的cookie")
+ } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) {
+ obj.headers["Cookie"] = cookie;
+ log("历史有大写过期的cookie,更新过验证后的cookie")
+ } else if (!obj.headers) {
+ obj.headers = {
+ Cookie: cookie
+ };
+ log("历史无headers,更新过验证后的含cookie的headers")
+ }
+ }
+ let html = getCode(url, obj);
+ return html
+}
+
+function homeParse(homeObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let classes = [];
+ if (homeObj.class_name && homeObj.class_url) {
+ let names = homeObj.class_name.split("&");
+ let urls = homeObj.class_url.split("&");
+ let cnt = Math.min(names.length, urls.length);
+ for (let i = 0; i < cnt; i++) {
+ classes.push({
+ type_id: urls[i],
+ type_name: names[i]
+ })
+ }
+ }
+ if (homeObj.class_parse) {
+ if (homeObj.class_parse.startsWith("js:")) {
+ var input = homeObj.MY_URL;
+ try {
+ eval(homeObj.class_parse.replace("js:", ""));
+ if (Array.isArray(input)) {
+ classes = input
+ }
+ } catch (e) {
+ log(`通过js动态获取分类发生了错误:${e.message}`)
+ }
+ } else {
+ let p = homeObj.class_parse.split(";");
+ let p0 = p[0];
+ let _ps = parseTags.getParse(p0);
+ let is_json = p0.startsWith("json:");
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ MY_URL = rule.url;
+ if (is_json) {
+ try {
+ let cms_cate_url = homeObj.MY_URL.replace("ac=detail", "ac=list");
+ let html = homeObj.home_html || getHtml(cms_cate_url);
+ if (html) {
+ if (cms_cate_url === homeObj.MY_URL) {
+ homeHtmlCache = html
+ }
+ let list = _pdfa(html, p0.replace("json:", ""));
+ if (list && list.length > 0) {
+ classes = list
+ }
+ }
+ } catch (e) {
+ console.log(e.message)
+ }
+ } else if (p.length >= 3 && !is_json) {
+ try {
+ let html = homeObj.home_html || getHtml(homeObj.MY_URL);
+ if (html) {
+ homeHtmlCache = html;
+ let list = _pdfa(html, p0);
+ if (list && list.length > 0) {
+ list.forEach((it, idex) => {
+ try {
+ let name = _pdfh(it, p[1]);
+ if (homeObj.cate_exclude && new RegExp(homeObj.cate_exclude).test(name)) {
+ return
+ }
+ let url = _pd(it, p[2]);
+ if (p.length > 3 && p[3] && !homeObj.home_html) {
+ let exp = new RegExp(p[3]);
+ url = url.match(exp)[1]
+ }
+ classes.push({
+ type_id: url.trim(),
+ type_name: name.trim()
+ })
+ } catch (e) {
+ console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)
+ }
+ })
+ }
+ }
+ } catch (e) {
+ console.log(e.message)
+ }
+ }
+ }
+ }
+ classes = classes.filter(it => !homeObj.cate_exclude || !new RegExp(homeObj.cate_exclude).test(it.type_name));
+ let resp = {
+ class: classes
+ };
+ if (homeObj.filter) {
+ resp.filters = homeObj.filter
+ }
+ console.log(JSON.stringify(resp));
+ return JSON.stringify(resp)
+}
+
+function getPP(p, pn, pp, ppn) {
+ try {
+ let ps = p[pn] === "*" && pp.length > ppn ? pp[ppn] : p[pn];
+ return ps
+ } catch (e) {
+ return ""
+ }
+}
+
+function homeVodParse(homeVodObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let d = [];
+ MY_URL = homeVodObj.homeUrl;
+ console.log(MY_URL);
+ let t1 = (new Date).getTime();
+ let p = homeVodObj.推荐;
+ print("p:" + p);
+ if (p === "*" && rule.一级) {
+ p = rule.一级;
+ homeVodObj.double = false
+ }
+ if (!p || typeof p !== "string") {
+ return "{}"
+ }
+ p = p.trim();
+ let pp = rule.一级 ? rule.一级.split(";") : [];
+ if (p.startsWith("js:")) {
+ const TYPE = "home";
+ var input = MY_URL;
+ HOST = rule.host;
+ eval(p.replace("js:", ""));
+ d = VODS
+ } else {
+ p = p.split(";");
+ if (!homeVodObj.double && p.length < 5) {
+ return "{}"
+ } else if (homeVodObj.double && p.length < 6) {
+ return "{}"
+ }
+ let p0 = getPP(p, 0, pp, 0);
+ let _ps = parseTags.getParse(p0);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p0.startsWith("json:");
+ p0 = p0.replace(/^(jsp:|json:|jq:)/, "");
+ let html = homeHtmlCache || getHtml(MY_URL);
+ homeHtmlCache = undefined;
+ if (is_json) {
+ html = dealJson(html)
+ }
+ try {
+ console.log("double:" + homeVodObj.double);
+ if (homeVodObj.double) {
+ let items = _pdfa(html, p0);
+ let p1 = getPP(p, 1, pp, 0);
+ let p2 = getPP(p, 2, pp, 1);
+ let p3 = getPP(p, 3, pp, 2);
+ let p4 = getPP(p, 4, pp, 3);
+ let p5 = getPP(p, 5, pp, 4);
+ let p6 = getPP(p, 6, pp, 5);
+ for (let item of items) {
+ let items2 = _pdfa(item, p1);
+ for (let item2 of items2) {
+ try {
+ let title = _pdfh(item2, p2);
+ let img = "";
+ try {
+ img = _pd(item2, p3)
+ } catch (e) {}
+ let desc = "";
+ try {
+ desc = _pdfh(item2, p4)
+ } catch (e) {}
+ let links = [];
+ for (let _p5 of p5.split("+")) {
+ let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5);
+ links.push(link)
+ }
+ let content;
+ if (p.length > 6 && p[6]) {
+ content = _pdfh(item2, p6)
+ } else {
+ content = ""
+ }
+ let vid = links.join("$");
+ if (rule.二级 === "*") {
+ vid = vid + "@@" + title + "@@" + img
+ }
+ let vod = {
+ vod_name: title,
+ vod_pic: img,
+ vod_remarks: desc,
+ vod_content: content,
+ vod_id: vid
+ };
+ d.push(vod)
+ } catch (e) {
+ console.log(`首页列表双层定位处理发生错误:${e.message}`)
+ }
+ }
+ }
+ } else {
+ let items = _pdfa(html, p0);
+ let p1 = getPP(p, 1, pp, 1);
+ let p2 = getPP(p, 2, pp, 2);
+ let p3 = getPP(p, 3, pp, 3);
+ let p4 = getPP(p, 4, pp, 4);
+ let p5 = getPP(p, 5, pp, 5);
+ for (let item of items) {
+ try {
+ let title = _pdfh(item, p1);
+ let img = "";
+ try {
+ img = _pd(item, p2, MY_URL)
+ } catch (e) {}
+ let desc = "";
+ try {
+ desc = _pdfh(item, p3)
+ } catch (e) {}
+ let links = [];
+ for (let _p5 of p4.split("+")) {
+ let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5);
+ links.push(link)
+ }
+ let content;
+ if (p.length > 5 && p[5]) {
+ content = _pdfh(item, p5)
+ } else {
+ content = ""
+ }
+ let vid = links.join("$");
+ if (rule.二级 === "*") {
+ vid = vid + "@@" + title + "@@" + img
+ }
+ let vod = {
+ vod_name: title,
+ vod_pic: img,
+ vod_remarks: desc,
+ vod_content: content,
+ vod_id: vid
+ };
+ d.push(vod)
+ } catch (e) {
+ console.log(`首页列表单层定位处理发生错误:${e.message}`)
+ }
+ }
+ }
+ } catch (e) {}
+ }
+ let t2 = (new Date).getTime();
+ console.log("加载首页推荐耗时:" + (t2 - t1) + "毫秒");
+ if (rule.图片替换) {
+ if (rule.图片替换.startsWith("js:")) {
+ d.forEach(it => {
+ try {
+ var input = it.vod_pic;
+ eval(rule.图片替换.trim().replace("js:", ""));
+ it.vod_pic = input
+ } catch (e) {
+ log(`图片:${it.vod_pic}替换错误:${e.message}`)
+ }
+ })
+ } else if (rule.图片替换.includes("=>")) {
+ let replace_from = rule.图片替换.split("=>")[0];
+ let replace_to = rule.图片替换.split("=>")[1];
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic.replace(replace_from, replace_to)
+ }
+ })
+ }
+ }
+ if (rule.图片来源) {
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic + rule.图片来源
+ }
+ })
+ }
+ if (d.length > 0) {
+ print(d.slice(0, 2))
+ }
+ return JSON.stringify({
+ list: d
+ })
+}
+
+function categoryParse(cateObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let p = cateObj.一级;
+ if (!p || typeof p !== "string") {
+ return "{}"
+ }
+ let d = [];
+ let url = cateObj.url.replaceAll("fyclass", cateObj.tid);
+ if (cateObj.pg === 1 && url.includes("[") && url.includes("]")) {
+ url = url.split("[")[1].split("]")[0]
+ } else if (cateObj.pg > 1 && url.includes("[") && url.includes("]")) {
+ url = url.split("[")[0]
+ }
+ if (rule.filter_url) {
+ if (!/fyfilter/.test(url)) {
+ if (!url.endsWith("&") && !rule.filter_url.startsWith("&")) {
+ url += "&"
+ }
+ url += rule.filter_url
+ } else {
+ url = url.replace("fyfilter", rule.filter_url)
+ }
+ url = url.replaceAll("fyclass", cateObj.tid);
+ let fl = cateObj.filter ? cateObj.extend : {};
+ if (rule.filter_def && typeof rule.filter_def === "object") {
+ try {
+ if (Object.keys(rule.filter_def).length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) {
+ let self_fl_def = rule.filter_def[cateObj.tid];
+ if (self_fl_def && typeof self_fl_def === "object") {
+ let fl_def = JSON.parse(JSON.stringify(self_fl_def));
+ fl = Object.assign(fl_def, fl)
+ }
+ }
+ } catch (e) {
+ print(`合并不同分类对应的默认筛选出错:${e.message}`)
+ }
+ }
+ let new_url;
+ new_url = cheerio.jinja2(url, {
+ fl: fl,
+ fyclass: cateObj.tid
+ });
+ url = new_url
+ }
+ if (/fypage/.test(url)) {
+ if (url.includes("(") && url.includes(")")) {
+ let url_rep = url.match(/.*?\((.*)\)/)[1];
+ let cnt_page = url_rep.replaceAll("fypage", cateObj.pg);
+ let cnt_pg = eval(cnt_page);
+ url = url.replaceAll(url_rep, cnt_pg).replaceAll("(", "").replaceAll(")", "")
+ } else {
+ url = url.replaceAll("fypage", cateObj.pg)
+ }
+ }
+ MY_URL = url;
+ console.log(MY_URL);
+ p = p.trim();
+ const MY_CATE = cateObj.tid;
+ if (p.startsWith("js:")) {
+ var MY_FL = cateObj.extend;
+ const TYPE = "cate";
+ var input = MY_URL;
+ const MY_PAGE = cateObj.pg;
+ var desc = "";
+ eval(p.trim().replace("js:", ""));
+ d = VODS
+ } else {
+ p = p.split(";");
+ if (p.length < 5) {
+ return "{}"
+ }
+ let _ps = parseTags.getParse(p[0]);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p[0].startsWith("json:");
+ p[0] = p[0].replace(/^(jsp:|json:|jq:)/, "");
+ try {
+ let html = getHtml(MY_URL);
+ if (html) {
+ if (is_json) {
+ html = dealJson(html)
+ }
+ let list = _pdfa(html, p[0]);
+ list.forEach(it => {
+ let links = p[4].split("+").map(p4 => {
+ return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4)
+ });
+ let link = links.join("$");
+ let vod_id = rule.detailUrl ? MY_CATE + "$" + link : link;
+ let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g, "").trim();
+ let vod_pic = _pd(it, p[2], MY_URL);
+ if (rule.二级 === "*") {
+ vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic
+ }
+ d.push({
+ vod_id: vod_id,
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ vod_remarks: _pdfh(it, p[3]).replace(/\n|\t/g, "").trim()
+ })
+ })
+ }
+ } catch (e) {
+ console.log(e.message)
+ }
+ }
+ if (rule.图片替换) {
+ if (rule.图片替换.startsWith("js:")) {
+ d.forEach(it => {
+ try {
+ var input = it.vod_pic;
+ eval(rule.图片替换.trim().replace("js:", ""));
+ it.vod_pic = input
+ } catch (e) {
+ log(`图片:${it.vod_pic}替换错误:${e.message}`)
+ }
+ })
+ } else if (rule.图片替换.includes("=>")) {
+ let replace_from = rule.图片替换.split("=>")[0];
+ let replace_to = rule.图片替换.split("=>")[1];
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic.replace(replace_from, replace_to)
+ }
+ })
+ }
+ }
+ if (rule.图片来源) {
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic + rule.图片来源
+ }
+ })
+ }
+ if (d.length > 0) {
+ print(d.slice(0, 2))
+ }
+ let pagecount = 0;
+ if (rule.pagecount && typeof rule.pagecount === "object" && rule.pagecount.hasOwnProperty(MY_CATE)) {
+ print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);
+ pagecount = parseInt(rule.pagecount[MY_CATE])
+ }
+ let nodata = {
+ list: [{
+ vod_name: "无数据,防无限请求",
+ vod_id: "no_data",
+ vod_remarks: "不要点,会崩的",
+ vod_pic: "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"
+ }],
+ total: 1,
+ pagecount: 1,
+ page: 1,
+ limit: 1
+ };
+ let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({
+ page: parseInt(cateObj.pg),
+ pagecount: pagecount || 999,
+ limit: 20,
+ total: 999,
+ list: d
+ });
+ return vod
+}
+
+function searchParse(searchObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let d = [];
+ if (!searchObj.searchUrl) {
+ return "{}"
+ }
+ if (rule.searchNoPage && Number(searchObj.pg) > 1) {
+ return "{}"
+ }
+ let p = searchObj.搜索 === "*" && rule.一级 ? rule.一级 : searchObj.搜索;
+ if (!p || typeof p !== "string") {
+ return "{}"
+ }
+ p = p.trim();
+ let pp = rule.一级 ? rule.一级.split(";") : [];
+ let url = searchObj.searchUrl.replaceAll("**", searchObj.wd);
+ if (searchObj.pg === 1 && url.includes("[") && url.includes("]") && !url.includes("#")) {
+ url = url.split("[")[1].split("]")[0]
+ } else if (searchObj.pg > 1 && url.includes("[") && url.includes("]") && !url.includes("#")) {
+ url = url.split("[")[0]
+ }
+ if (/fypage/.test(url)) {
+ if (url.includes("(") && url.includes(")")) {
+ let url_rep = url.match(/.*?\((.*)\)/)[1];
+ let cnt_page = url_rep.replaceAll("fypage", searchObj.pg);
+ let cnt_pg = eval(cnt_page);
+ url = url.replaceAll(url_rep, cnt_pg).replaceAll("(", "").replaceAll(")", "")
+ } else {
+ url = url.replaceAll("fypage", searchObj.pg)
+ }
+ }
+ MY_URL = url;
+ console.log(MY_URL);
+ if (p.startsWith("js:")) {
+ const TYPE = "search";
+ const MY_PAGE = searchObj.pg;
+ const KEY = searchObj.wd;
+ var input = MY_URL;
+ var detailUrl = rule.detailUrl || "";
+ eval(p.trim().replace("js:", ""));
+ d = VODS
+ } else {
+ p = p.split(";");
+ if (p.length < 5) {
+ return "{}"
+ }
+ let p0 = getPP(p, 0, pp, 0);
+ let _ps = parseTags.getParse(p0);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p0.startsWith("json:");
+ p0 = p0.replace(/^(jsp:|json:|jq:)/, "");
+ try {
+ let req_method = MY_URL.split(";").length > 1 ? MY_URL.split(";")[1].toLowerCase() : "get";
+ let html;
+ if (req_method === "post") {
+ let rurls = MY_URL.split(";")[0].split("#");
+ let rurl = rurls[0];
+ let params = rurls.length > 1 ? rurls[1] : "";
+ print(`post=》rurl:${rurl},params:${params}`);
+ let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let postData = {
+ body: params
+ };
+ Object.assign(_fetch_params, postData);
+ html = post(rurl, _fetch_params)
+ } else if (req_method === "postjson") {
+ let rurls = MY_URL.split(";")[0].split("#");
+ let rurl = rurls[0];
+ let params = rurls.length > 1 ? rurls[1] : "";
+ print(`postjson-》rurl:${rurl},params:${params}`);
+ try {
+ params = JSON.parse(params)
+ } catch (e) {
+ params = "{}"
+ }
+ let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let postData = {
+ body: params
+ };
+ Object.assign(_fetch_params, postData);
+ html = post(rurl, _fetch_params)
+ } else {
+ html = getHtml(MY_URL)
+ }
+ if (html) {
+ let search_tag = rule.搜索验证标识 || "系统安全验证|输入验证码";
+ if (new RegExp(search_tag).test(html)) {
+ let cookie = verifyCode(MY_URL);
+ if (cookie) {
+ console.log(`本次成功过验证,cookie:${cookie}`);
+ setItem(RULE_CK, cookie)
+ } else {
+ console.log(`本次自动过搜索验证失败,cookie:${cookie}`)
+ }
+ html = getHtml(MY_URL)
+ }
+ if (!html.includes(searchObj.wd)) {
+ console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");
+ console.log(html)
+ }
+ if (is_json) {
+ html = dealJson(html)
+ }
+ let list = _pdfa(html, p0);
+ let p1 = getPP(p, 1, pp, 1);
+ let p2 = getPP(p, 2, pp, 2);
+ let p3 = getPP(p, 3, pp, 3);
+ let p4 = getPP(p, 4, pp, 4);
+ let p5 = getPP(p, 5, pp, 5);
+ list.forEach(it => {
+ let links = p4.split("+").map(_p4 => {
+ return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4)
+ });
+ let link = links.join("$");
+ let content;
+ if (p.length > 5 && p[5]) {
+ content = _pdfh(it, p5)
+ } else {
+ content = ""
+ }
+ let vod_id = link;
+ let vod_name = _pdfh(it, p1).replace(/\n|\t/g, "").trim();
+ let vod_pic = _pd(it, p2, MY_URL);
+ if (rule.二级 === "*") {
+ vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic
+ }
+ let ob = {
+ vod_id: vod_id,
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ vod_remarks: _pdfh(it, p3).replace(/\n|\t/g, "").trim(),
+ vod_content: content.replace(/\n|\t/g, "").trim()
+ };
+ d.push(ob)
+ })
+ }
+ } catch (e) {
+ print(`搜索发生错误:${e.message}`);
+ return "{}"
+ }
+ }
+ if (rule.图片替换) {
+ if (rule.图片替换.startsWith("js:")) {
+ d.forEach(it => {
+ try {
+ var input = it.vod_pic;
+ eval(rule.图片替换.trim().replace("js:", ""));
+ it.vod_pic = input
+ } catch (e) {
+ log(`图片:${it.vod_pic}替换错误:${e.message}`)
+ }
+ })
+ } else if (rule.图片替换.includes("=>")) {
+ let replace_from = rule.图片替换.split("=>")[0];
+ let replace_to = rule.图片替换.split("=>")[1];
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic.replace(replace_from, replace_to)
+ }
+ })
+ }
+ }
+ if (rule.图片来源) {
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic + rule.图片来源
+ }
+ })
+ }
+ return JSON.stringify({
+ page: parseInt(searchObj.pg),
+ pagecount: 10,
+ limit: 20,
+ total: 100,
+ list: d
+ })
+}
+
+function detailParse(detailObj) {
+ let t1 = (new Date).getTime();
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let orId = detailObj.orId;
+ let vod_name = "片名";
+ let vod_pic = "";
+ let vod_id = orId;
+ if (rule.二级 === "*") {
+ let extra = orId.split("@@");
+ vod_name = extra.length > 1 ? extra[1] : vod_name;
+ vod_pic = extra.length > 2 ? extra[2] : vod_pic
+ }
+ let vod = {
+ vod_id: vod_id,
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ type_name: "类型",
+ vod_year: "年份",
+ vod_area: "地区",
+ vod_remarks: "更新信息",
+ vod_actor: "主演",
+ vod_director: "导演",
+ vod_content: "简介"
+ };
+ let p = detailObj.二级;
+ let url = detailObj.url;
+ let detailUrl = detailObj.detailUrl;
+ let fyclass = detailObj.fyclass;
+ let tab_exclude = detailObj.tab_exclude;
+ let html = detailObj.html || "";
+ MY_URL = url;
+ if (detailObj.二级访问前) {
+ try {
+ print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);
+ eval(detailObj.二级访问前.trim().replace("js:", ""))
+ } catch (e) {
+ print(`二级访问前执行代码出现错误:${e.message}`)
+ }
+ }
+ if (p === "*") {
+ vod.vod_play_from = "在线播放";
+ vod.vod_remarks = detailUrl;
+ vod.vod_actor = "没有二级,只有一级链接直接嗅探播放";
+ vod.vod_content = MY_URL;
+ vod.vod_play_url = "嗅探播放$" + MY_URL.split("@@")[0]
+ } else if (typeof p === "string" && p.trim().startsWith("js:")) {
+ const TYPE = "detail";
+ var input = MY_URL;
+ var play_url = "";
+ eval(p.trim().replace("js:", ""));
+ vod = VOD;
+ console.log(JSON.stringify(vod))
+ } else if (p && typeof p === "object") {
+ let tt1 = (new Date).getTime();
+ if (!html) {
+ html = getHtml(MY_URL)
+ }
+ print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);
+ let _ps;
+ if (p.is_json) {
+ print("二级是json");
+ _ps = parseTags.json;
+ html = dealJson(html)
+ } else if (p.is_jsp) {
+ print("二级是jsp");
+ _ps = parseTags.jsp
+ } else if (p.is_jq) {
+ print("二级是jq");
+ _ps = parseTags.jq
+ } else {
+ print("二级默认jq");
+ _ps = parseTags.jq
+ }
+ let tt2 = (new Date).getTime();
+ print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ if (p.title) {
+ let p1 = p.title.split(";");
+ vod.vod_name = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim();
+ let type_name = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, "").replace(/ /g, "").trim() : "";
+ vod.type_name = type_name || vod.type_name
+ }
+ if (p.desc) {
+ try {
+ let p1 = p.desc.split(";");
+ vod.vod_remarks = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim();
+ vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, "").trim() : "";
+ vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]).replace(/\n|\t/g, "").trim() : "";
+ vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replace(/\n|\t/g, "").trim() : "";
+ vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]).replace(/\n|\t/g, "").trim() : ""
+ } catch (e) {}
+ }
+ if (p.content) {
+ try {
+ let p1 = p.content.split(";");
+ vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim()
+ } catch (e) {}
+ }
+ if (p.img) {
+ try {
+ let p1 = p.img.split(";");
+ vod.vod_pic = _pd(html, p1[0], MY_URL)
+ } catch (e) {}
+ }
+ let vod_play_from = "$$$";
+ let playFrom = [];
+ if (p.重定向 && p.重定向.startsWith("js:")) {
+ print("开始执行重定向代码:" + p.重定向);
+ html = eval(p.重定向.replace("js:", ""))
+ }
+ if (p.tabs) {
+ if (p.tabs.startsWith("js:")) {
+ print("开始执行tabs代码:" + p.tabs);
+ var input = MY_URL;
+ eval(p.tabs.replace("js:", ""));
+ playFrom = TABS
+ } else {
+ let p_tab = p.tabs.split(";")[0];
+ let vHeader = _pdfa(html, p_tab);
+ console.log(vHeader.length);
+ let tab_text = p.tab_text || "body&&Text";
+ let new_map = {};
+ for (let v of vHeader) {
+ let v_title = _pdfh(v, tab_text).trim();
+ if (!v_title) {
+ v_title = "线路空"
+ }
+ console.log(v_title);
+ if (tab_exclude && new RegExp(tab_exclude).test(v_title)) {
+ continue
+ }
+ if (!new_map.hasOwnProperty(v_title)) {
+ new_map[v_title] = 1
+ } else {
+ new_map[v_title] += 1
+ }
+ if (new_map[v_title] > 1) {
+ v_title += Number(new_map[v_title] - 1)
+ }
+ playFrom.push(v_title)
+ }
+ }
+ console.log(JSON.stringify(playFrom))
+ } else {
+ playFrom = ["在线播放"]
+ }
+ vod.vod_play_from = playFrom.join(vod_play_from);
+ let vod_play_url = "$$$";
+ let vod_tab_list = [];
+ if (p.lists) {
+ if (p.lists.startsWith("js:")) {
+ print("开始执行lists代码:" + p.lists);
+ try {
+ var input = MY_URL;
+ var play_url = "";
+ eval(p.lists.replace("js:", ""));
+ for (let i in LISTS) {
+ if (LISTS.hasOwnProperty(i)) {
+ try {
+ LISTS[i] = LISTS[i].map(it => it.split("$").slice(0, 2).join("$"))
+ } catch (e) {
+ print(`格式化LISTS发生错误:${e.message}`)
+ }
+ }
+ }
+ vod_play_url = LISTS.map(it => it.join("#")).join(vod_play_url)
+ } catch (e) {
+ print(`js执行lists: 发生错误:${e.message}`)
+ }
+ } else {
+ let list_text = p.list_text || "body&&Text";
+ let list_url = p.list_url || "a&&href";
+ let list_url_prefix = p.list_url_prefix || "";
+ let is_tab_js = p.tabs.trim().startsWith("js:");
+ for (let i = 0; i < playFrom.length; i++) {
+ let tab_name = playFrom[i];
+ let tab_ext = p.tabs.split(";").length > 1 && !is_tab_js ? p.tabs.split(";")[1] : "";
+ let p1 = p.lists.replaceAll("#idv", tab_name).replaceAll("#id", i);
+ tab_ext = tab_ext.replaceAll("#idv", tab_name).replaceAll("#id", i);
+ let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name;
+ console.log(tabName);
+ let new_vod_list = [];
+ let tt1 = (new Date).getTime();
+ if (typeof pdfl === "function") {
+ new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL);
+ if (list_url_prefix) {
+ new_vod_list = new_vod_list.map(it => it.split("$")[0] + "$" + list_url_prefix + it.split("$").slice(1).join("$"))
+ }
+ } else {
+ let vodList = [];
+ try {
+ vodList = _pdfa(html, p1);
+ console.log("len(vodList):" + vodList.length)
+ } catch (e) {}
+ for (let i = 0; i < vodList.length; i++) {
+ let it = vodList[i];
+ new_vod_list.push(_pdfh(it, list_text).trim() + "$" + list_url_prefix + _pd(it, list_url, MY_URL))
+ }
+ }
+ if (new_vod_list.length > 0) {
+ new_vod_list = forceOrder(new_vod_list, "", x => x.split("$")[0]);
+ console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)
+ }
+ let vlist = new_vod_list.join("#");
+ vod_tab_list.push(vlist)
+ }
+ vod_play_url = vod_tab_list.join(vod_play_url)
+ }
+ }
+ vod.vod_play_url = vod_play_url
+ }
+ if (rule.图片替换 && rule.图片替换.includes("=>")) {
+ let replace_from = rule.图片替换.split("=>")[0];
+ let replace_to = rule.图片替换.split("=>")[1];
+ vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to)
+ }
+ if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith("http")) {
+ vod.vod_pic = vod.vod_pic + rule.图片来源
+ }
+ if (!vod.vod_id || vod_id.includes("$") && vod.vod_id !== vod_id) {
+ vod.vod_id = vod_id
+ }
+ let t2 = (new Date).getTime();
+ console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);
+ try {
+ vod = vodDeal(vod)
+ } catch (e) {
+ console.log(`vodDeal发生错误:${e.message}`)
+ }
+ return JSON.stringify({
+ list: [vod]
+ })
+}
+
+function get_tab_index(vod) {
+ let obj = {};
+ vod.vod_play_from.split("$$$").forEach((it, index) => {
+ obj[it] = index
+ });
+ return obj
+}
+
+function vodDeal(vod) {
+ let vod_play_from = vod.vod_play_from.split("$$$");
+ let vod_play_url = vod.vod_play_url.split("$$$");
+ let tab_removed_list = vod_play_from;
+ let tab_ordered_list = vod_play_from;
+ let tab_renamed_list = vod_play_from;
+ let tab_list = vod_play_from;
+ let play_ordered_list = vod_play_url;
+ if (rule.tab_remove && rule.tab_remove.length > 0 || rule.tab_order && rule.tab_order.length > 0) {
+ let tab_index_dict = get_tab_index(vod);
+ if (rule.tab_remove && rule.tab_remove.length > 0) {
+ tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it));
+ tab_list = tab_removed_list
+ }
+ if (rule.tab_order && rule.tab_order.length > 0) {
+ let tab_order = rule.tab_order;
+ tab_ordered_list = tab_removed_list.sort((a, b) => {
+ return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b))
+ });
+ tab_list = tab_ordered_list
+ }
+ play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]])
+ }
+ if (rule.tab_rename && typeof rule.tab_rename === "object" & Object.keys(rule.tab_rename).length > 0) {
+ tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it);
+ tab_list = tab_renamed_list
+ }
+ vod.vod_play_from = tab_list.join("$$$");
+ vod.vod_play_url = play_ordered_list.join("$$$");
+ return vod
+}
+
+function tellIsJx(url) {
+ try {
+ let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0]) && 是否正版(url);
+ return is_vip ? 1 : 0
+ } catch (e) {
+ return 1
+ }
+}
+
+function playParse(playObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ MY_URL = playObj.url;
+ var MY_FLAG = playObj.flag;
+ if (!/http/.test(MY_URL)) {
+ try {
+ MY_URL = base64Decode(MY_URL)
+ } catch (e) {}
+ }
+ MY_URL = decodeURIComponent(MY_URL);
+ var input = MY_URL;
+ var flag = MY_FLAG;
+ let common_play = {
+ parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1,
+ url: input,
+ flag: flag,
+ jx: tellIsJx(input)
+ };
+ let lazy_play;
+ if (!rule.play_parse || !rule.lazy) {
+ lazy_play = common_play
+ } else if (rule.play_parse && rule.lazy && typeof rule.lazy === "string") {
+ try {
+ let lazy_code = rule.lazy.trim();
+ if (lazy_code.startsWith("js:")) {
+ lazy_code = lazy_code.replace("js:", "").trim()
+ }
+ print("开始执行js免嗅=>" + lazy_code);
+ eval(lazy_code);
+ lazy_play = typeof input === "object" ? input : {
+ parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1,
+ jx: tellIsJx(input),
+ url: input
+ }
+ } catch (e) {
+ print(`js免嗅错误:${e.message}`);
+ lazy_play = common_play
+ }
+ } else {
+ lazy_play = common_play
+ }
+ if (Array.isArray(rule.play_json) && rule.play_json.length > 0) {
+ let web_url = lazy_play.url;
+ for (let pjson of rule.play_json) {
+ if (pjson.re && (pjson.re === "*" || web_url.match(new RegExp(pjson.re)))) {
+ if (pjson.json && typeof pjson.json === "object") {
+ let base_json = pjson.json;
+ lazy_play = Object.assign(lazy_play, base_json);
+ break
+ }
+ }
+ }
+ } else if (rule.play_json && !Array.isArray(rule.play_json)) {
+ let base_json = {
+ jx: 1,
+ parse: 1
+ };
+ lazy_play = Object.assign(lazy_play, base_json)
+ } else if (!rule.play_json) {
+ let base_json = {
+ jx: 0,
+ parse: 1
+ };
+ lazy_play = Object.assign(lazy_play, base_json)
+ }
+ console.log(JSON.stringify(lazy_play));
+ return JSON.stringify(lazy_play)
+}
+
+function proxyParse(proxyObj) {
+ var input = proxyObj.params;
+ if (proxyObj.proxy_rule) {
+ log("准备执行本地代理规则:\n" + proxyObj.proxy_rule);
+ try {
+ eval(proxyObj.proxy_rule);
+ if (input && input !== proxyObj.params && Array.isArray(input) && input.length >= 3) {
+ return input
+ } else {
+ return [404, "text/plain", "Not Found"]
+ }
+ } catch (e) {
+ return [500, "text/plain", "代理规则错误:" + e.message]
+ }
+ } else {
+ return [404, "text/plain", "Not Found"]
+ }
+}
+
+function isVideoParse(isVideoObj) {
+ var input = isVideoObj.url;
+ if (!isVideoObj.t) {
+ let re_matcher = new RegExp(isVideoObj.isVideo, "i");
+ return re_matcher.test(input)
+ } else {
+ try {
+ eval(isVideoObj.isVideo);
+ if (typeof input === "boolean") {
+ return input
+ } else {
+ return false
+ }
+ } catch (e) {
+ log(`执行嗅探规则发生错误:${e.message}`);
+ return false
+ }
+ }
+}
+
+function getOriginalJs(js_code) {
+ let current_match = /var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/;
+ if (current_match.test(js_code)) {
+ return js_code
+ }
+ let rsa_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs=";
+ let decode_content = "";
+
+ function aes_decrypt(data) {
+ let key = CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A");
+ let iv = CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A");
+ let encrypted = CryptoJS.AES.decrypt({
+ ciphertext: CryptoJS.enc.Base64.parse(data)
+ }, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8);
+ return encrypted
+ }
+ let error_log = false;
+
+ function logger(text) {
+ if (error_log) {
+ log(text)
+ }
+ }
+ let decode_funcs = [text => {
+ try {
+ return ungzip(text)
+ } catch (e) {
+ logger("非gzip加密");
+ return ""
+ }
+ }, text => {
+ try {
+ return base64Decode(text)
+ } catch (e) {
+ logger("非b64加密");
+ return ""
+ }
+ }, text => {
+ try {
+ return aes_decrypt(text)
+ } catch (e) {
+ logger("非aes加密");
+ return ""
+ }
+ }, text => {
+ try {
+ return RSA.decode(text, rsa_private_key, null)
+ } catch (e) {
+ logger("非rsa加密");
+ return ""
+ }
+ }];
+ let func_index = 0;
+ while (!current_match.test(decode_content)) {
+ decode_content = decode_funcs[func_index](js_code);
+ func_index++;
+ if (func_index >= decode_funcs.length) {
+ break
+ }
+ }
+ return decode_content
+}
+
+function runMain(main_func_code, arg) {
+ let mainFunc = function() {
+ return ""
+ };
+ try {
+ eval(main_func_code + "\nmainFunc=main;");
+ return mainFunc(arg)
+ } catch (e) {
+ log(`执行main_funct发生了错误:${e.message}`);
+ return ""
+ }
+}
+
+function init(ext) {
+ console.log("init");
+ rule = {};
+ rule_fetch_params = {};
+ fetch_params = null;
+ try {
+ let muban = 模板.getMubans();
+ if (typeof ext == "object") {
+ rule = ext
+ } else if (typeof ext == "string") {
+ let is_file = ext.startsWith("file://");
+ if (ext.startsWith("http") || is_file) {
+ let query = getQuery(ext);
+ if (is_file) {
+ ext = ext.split("?")[0]
+ }
+ let js = request(ext, {
+ method: "GET"
+ });
+ if (js) {
+ js = getOriginalJs(js);
+ eval("(function(){" + js.replace("var rule", "rule") + "})()")
+ }
+ if (query.type === "url" && query.params) {
+ if (is_file && /^http/.test(query.params)) {
+ rule.params = query.params
+ } else {
+ rule.params = urljoin(ext, query.params)
+ }
+ } else if (query.params) {
+ rule.params = query.params
+ }
+ } else {
+ ext = getOriginalJs(ext);
+ eval("(function(){" + ext.replace("var rule", "rule") + "})()")
+ }
+ } else {
+ console.log(`规则加载失败,不支持的规则类型:${typeof ext}`);
+ return
+ }
+ rule.host = (rule.host || "").rstrip("/");
+ HOST = rule.host;
+ if (rule.hostJs) {
+ console.log(`检测到hostJs,准备执行...`);
+ try {
+ eval(rule.hostJs);
+ rule.host = HOST.rstrip("/")
+ } catch (e) {
+ console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`)
+ }
+ }
+ if (rule["模板"] === "自动") {
+ try {
+ let host_headers = rule["headers"] || {};
+ let host_html = getCode(HOST, {
+ headers: host_headers
+ });
+ let match_muban = "";
+ let muban_keys = Object.keys(muban).filter(it => !/默认|短视2|采集1/.test(it));
+ for (let muban_key of muban_keys) {
+ try {
+ let host_data = JSON.parse(home({}, host_html, muban[muban_key].class_parse));
+ if (host_data.class && host_data.class.length > 0) {
+ match_muban = muban_key;
+ console.log(`自动匹配模板:【${muban_key}】`);
+ break
+ }
+ } catch (e) {
+ console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`)
+ }
+ }
+ if (match_muban) {
+ muban["自动"] = muban[match_muban];
+ if (rule["模板修改"] && rule["模板修改"].startsWith("js:")) {
+ eval(rule["模板修改"].replace("js:", "").trim())
+ }
+ } else {
+ delete rule["模板"]
+ }
+ } catch (e) {
+ delete rule["模板"]
+ }
+ }
+ if (rule.模板 && muban.hasOwnProperty(rule.模板)) {
+ print("继承模板:" + rule.模板);
+ rule = Object.assign(muban[rule.模板], rule)
+ }
+ let rule_cate_excludes = (rule.cate_exclude || "").split("|").filter(it => it.trim());
+ let rule_tab_excludes = (rule.tab_exclude || "").split("|").filter(it => it.trim());
+ rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it => it.trim()));
+ rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it => it.trim()));
+ rule.cate_exclude = rule_cate_excludes.join("|");
+ rule.tab_exclude = rule_tab_excludes.join("|");
+ rule.类型 = rule.类型 || "影视";
+ rule.url = rule.url || "";
+ rule.double = rule.double || false;
+ rule.homeUrl = rule.homeUrl || "";
+ rule.detailUrl = rule.detailUrl || "";
+ rule.searchUrl = rule.searchUrl || "";
+ rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : rule.homeUrl || rule.host;
+ rule.homeUrl = cheerio.jinja2(rule.homeUrl, {
+ rule: rule
+ });
+ rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl;
+ rule.二级访问前 = rule.二级访问前 || "";
+ if (rule.url.includes("[") && rule.url.includes("]")) {
+ let u1 = rule.url.split("[")[0];
+ let u2 = rule.url.split("[")[1].split("]")[0];
+ rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.url
+ } else {
+ rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url
+ }
+ if (rule.searchUrl.includes("[") && rule.searchUrl.includes("]") && !rule.searchUrl.includes("#")) {
+ let u1 = rule.searchUrl.split("[")[0];
+ let u2 = rule.searchUrl.split("[")[1].split("]")[0];
+ rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.searchUrl
+ } else {
+ rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl
+ }
+ rule.timeout = rule.timeout || 5e3;
+ rule.encoding = rule.编码 || rule.encoding || "utf-8";
+ rule.search_encoding = rule.搜索编码 || rule.search_encoding || "";
+ rule.图片来源 = rule.图片来源 || "";
+ rule.图片替换 = rule.图片替换 || "";
+ rule.play_json = rule.hasOwnProperty("play_json") ? rule.play_json : [];
+ rule.pagecount = rule.hasOwnProperty("pagecount") ? rule.pagecount : {};
+ rule.proxy_rule = rule.hasOwnProperty("proxy_rule") ? rule.proxy_rule : "";
+ if (!rule.hasOwnProperty("sniffer")) {
+ rule.sniffer = false
+ }
+ rule.sniffer = rule.hasOwnProperty("sniffer") ? rule.sniffer : "";
+ rule.sniffer = !!(rule.sniffer && rule.sniffer !== "0" && rule.sniffer !== "false");
+ rule.isVideo = rule.hasOwnProperty("isVideo") ? rule.isVideo : "";
+ if (rule.sniffer && !rule.isVideo) {
+ rule.isVideo = "http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*"
+ }
+ rule.tab_remove = rule.hasOwnProperty("tab_remove") ? rule.tab_remove : [];
+ rule.tab_order = rule.hasOwnProperty("tab_order") ? rule.tab_order : [];
+ rule.tab_rename = rule.hasOwnProperty("tab_rename") ? rule.tab_rename : {};
+ if (rule.headers && typeof rule.headers === "object") {
+ try {
+ let header_keys = Object.keys(rule.headers);
+ for (let k of header_keys) {
+ if (k.toLowerCase() === "user-agent") {
+ let v = rule.headers[k];
+ console.log(v);
+ if (["MOBILE_UA", "PC_UA", "UC_UA", "IOS_UA", "UA"].includes(v)) {
+ rule.headers[k] = eval(v)
+ }
+ } else if (k.toLowerCase() === "cookie") {
+ let v = rule.headers[k];
+ if (v && v.startsWith("http")) {
+ console.log(v);
+ try {
+ v = fetch(v);
+ console.log(v);
+ rule.headers[k] = v
+ } catch (e) {
+ console.log(`从${v}获取cookie发生错误:${e.message}`)
+ }
+ }
+ }
+ }
+ } catch (e) {
+ console.log(`处理headers发生错误:${e.message}`)
+ }
+ } else {
+ rule.headers = {}
+ }
+ oheaders = deepCopy(rule.headers);
+ rule_fetch_params = {
+ headers: rule.headers,
+ timeout: rule.timeout,
+ encoding: rule.encoding
+ };
+ RKEY = typeof key !== "undefined" && key ? key : "drpy_" + (rule.title || rule.host);
+ pre();
+ init_test()
+ } catch (e) {
+ console.log(`init_test发生错误:${e.message}`)
+ }
+}
+let homeHtmlCache = undefined;
+
+function home(filter, home_html, class_parse) {
+ console.log("home");
+ home_html = home_html || "";
+ class_parse = class_parse || "";
+ if (typeof rule.filter === "string" && rule.filter.trim().length > 0) {
+ try {
+ let filter_json = ungzip(rule.filter.trim());
+ rule.filter = JSON.parse(filter_json)
+ } catch (e) {
+ rule.filter = {}
+ }
+ }
+ let homeObj = {
+ filter: rule.filter || false,
+ MY_URL: rule.homeUrl,
+ class_name: rule.class_name || "",
+ class_url: rule.class_url || "",
+ class_parse: class_parse || rule.class_parse || "",
+ cate_exclude: rule.cate_exclude,
+ home_html: home_html
+ };
+ return homeParse(homeObj)
+}
+
+function homeVod(params) {
+ console.log("homeVod");
+ let homeVodObj = {
+ "推荐": rule.推荐,
+ double: rule.double,
+ homeUrl: rule.homeUrl,
+ detailUrl: rule.detailUrl
+ };
+ return homeVodParse(homeVodObj)
+}
+
+function category(tid, pg, filter, extend) {
+ let cateObj = {
+ url: rule.url,
+ "一级": rule.一级,
+ tid: tid,
+ pg: parseInt(pg),
+ filter: filter,
+ extend: extend
+ };
+ return categoryParse(cateObj)
+}
+
+function detail(vod_url) {
+ let orId = vod_url;
+ let fyclass = "";
+ log("orId:" + orId);
+ if (vod_url.indexOf("$") > -1) {
+ let tmp = vod_url.split("$");
+ fyclass = tmp[0];
+ vod_url = tmp[1]
+ }
+ let detailUrl = vod_url.split("@@")[0];
+ let url;
+ if (!detailUrl.startsWith("http") && !detailUrl.includes("/")) {
+ url = rule.detailUrl.replaceAll("fyid", detailUrl).replaceAll("fyclass", fyclass)
+ } else if (detailUrl.includes("/")) {
+ url = urljoin(rule.homeUrl, detailUrl)
+ } else {
+ url = detailUrl
+ }
+ let detailObj = {
+ orId: orId,
+ url: url,
+ "二级": rule.二级,
+ "二级访问前": rule.二级访问前,
+ detailUrl: detailUrl,
+ fyclass: fyclass,
+ tab_exclude: rule.tab_exclude
+ };
+ return detailParse(detailObj)
+}
+
+function play(flag, id, flags) {
+ let playObj = {
+ url: id,
+ flag: flag,
+ flags: flags
+ };
+ return playParse(playObj)
+}
+
+function search(wd, quick, pg) {
+ if (rule.search_encoding) {
+ if (rule.search_encoding.toLowerCase() !== "utf-8") {
+ wd = encodeStr(wd, rule.search_encoding)
+ }
+ } else if (rule.encoding && rule.encoding.toLowerCase() !== "utf-8") {
+ wd = encodeStr(wd, rule.encoding)
+ }
+ let searchObj = {
+ searchUrl: rule.searchUrl,
+ "搜索": rule.搜索,
+ wd: wd,
+ pg: pg || 1,
+ quick: quick
+ };
+ return searchParse(searchObj)
+}
+
+function proxy(params) {
+ if (rule.proxy_rule && rule.proxy_rule.trim()) {
+ rule.proxy_rule = rule.proxy_rule.trim()
+ }
+ if (rule.proxy_rule.startsWith("js:")) {
+ rule.proxy_rule = rule.proxy_rule.replace("js:", "")
+ }
+ let proxyObj = {
+ params: params,
+ proxy_rule: rule.proxy_rule
+ };
+ return proxyParse(proxyObj)
+}
+
+function sniffer() {
+ let enable_sniffer = rule.sniffer || false;
+ if (enable_sniffer) {
+ log("开始执行辅助嗅探代理规则...")
+ }
+ return enable_sniffer
+}
+
+function isVideo(url) {
+ let t = 0;
+ let is_video;
+ if (rule.isVideo && rule.isVideo.trim()) {
+ is_video = rule.isVideo.trim()
+ }
+ if (is_video.startsWith("js:")) {
+ is_video = is_video.replace("js:", "");
+ t = 1
+ }
+ let isVideoObj = {
+ url: url,
+ isVideo: is_video,
+ t: t
+ };
+ let result = isVideoParse(isVideoObj);
+ if (result) {
+ log("成功执行辅助嗅探规则并检测到视频地址:\n" + rule.isVideo)
+ }
+ return result
+}
+
+function getRule(key) {
+ return key ? rule[key] || "" : rule
+}
+
+function deepCopy(_obj) {
+ return JSON.parse(JSON.stringify(_obj))
+}
+
+function matchesAll(str, pattern, flatten) {
+ if (!pattern.global) {
+ pattern = new RegExp(pattern.source, "g" + (pattern.ignoreCase ? "i" : "") + (pattern.multiline ? "m" : ""))
+ }
+ var matches = [];
+ var match;
+ while ((match = pattern.exec(str)) !== null) {
+ matches.push(match)
+ }
+ return flatten ? matches.flat() : matches
+}
+
+function stringUtils() {
+ Object.defineProperties(String.prototype, {
+ replaceX: {
+ value: function(regex, replacement) {
+ let matches = matchesAll(this, regex, true);
+ if (matches && matches.length > 1) {
+ const hasCaptureGroup = /\$\d/.test(replacement);
+ if (hasCaptureGroup) {
+ return this.replace(regex, m => m.replace(regex, replacement))
+ } else {
+ return this.replace(regex, (m, p1) => m.replace(p1, replacement))
+ }
+ }
+ return this.replace(regex, replacement)
+ },
+ configurable: true,
+ enumerable: false,
+ writable: true
+ },
+ parseX: {
+ get: function() {
+ try {
+ return JSON.parse(this)
+ } catch (e) {
+ console.log(e.message);
+ return this.startsWith("[") ? [] : {}
+ }
+ },
+ configurable: true,
+ enumerable: false
+ }
+ })
+}
+
+function cut(text, start, end, method, All) {
+ let result = "";
+ let c = (t, s, e) => {
+ let result = "";
+ let rs = [];
+ let results = [];
+ try {
+ let lr = new RegExp(String.raw`${s}`.toString());
+ let rr = new RegExp(String.raw`${e}`.toString());
+ const segments = t.split(lr);
+ if (segments.length < 2) return "";
+ let cutSegments = segments.slice(1).map(segment => {
+ let splitSegment = segment.split(rr);
+ return splitSegment.length < 2 ? undefined : splitSegment[0] + e
+ }).filter(f => f);
+ if (All) {
+ return `[${cutSegments.join(",")}]`
+ } else {
+ return cutSegments[0]
+ }
+ } catch (e) {
+ console.log(`Error cutting text:${e.message}`)
+ }
+ return result
+ };
+ result = c(text, start, end);
+ stringUtils();
+ if (method && typeof method === "function") {
+ result = method(result)
+ }
+ return result
+}
+
+function DRPY() {
+ return {
+ runMain: runMain,
+ getRule: getRule,
+ init: init,
+ home: home,
+ homeVod: homeVod,
+ category: category,
+ detail: detail,
+ play: play,
+ search: search,
+ proxy: proxy,
+ sniffer: sniffer,
+ isVideo: isVideo,
+ fixAdM3u8Ai: fixAdM3u8Ai
+ }
+}
+export default {
+ runMain: runMain,
+ getRule: getRule,
+ init: init,
+ home: home,
+ homeVod: homeVod,
+ category: category,
+ detail: detail,
+ play: play,
+ search: search,
+ proxy: proxy,
+ sniffer: sniffer,
+ isVideo: isVideo,
+ fixAdM3u8Ai: fixAdM3u8Ai,
+ DRPY: DRPY
+};
\ No newline at end of file
diff --git a/lib/gbk.js b/JS/gbk.js
similarity index 97%
rename from lib/gbk.js
rename to JS/gbk.js
index 796d53a..c49b20f 100644
--- a/lib/gbk.js
+++ b/JS/gbk.js
@@ -3,63 +3,64 @@
* strTool = gbkTool() strTool.encode(key)
* @returns {{encode: (function(*): *), decode: (function(*): *)}}
*/
-export function gbkTool(){
- var data=function(zipData){
- var re=zipData
- .replace(/#(\d+)\$/g,function(a,b){
- return Array(+b+3).join('#');
+export function gbkTool() {
+ var data = function(zipData) {
+ var re = zipData
+ .replace(/#(\d+)\$/g, function(a, b) {
+ return Array(+b + 3).join('#');
})
- .replace(/#/g,'####')
- .replace(/(\w\w):([\w#]+)(?:,|$)/g,function(a,hd,dt){
- return dt.replace(/../g,function(a){
- if(a!='##'){
- return hd+a;
- }else{
+ .replace(/#/g, '####')
+ .replace(/(\w\w):([\w#]+)(?:,|$)/g, function(a, hd, dt) {
+ return dt.replace(/../g, function(a) {
+ if (a != '##') {
+ return hd + a;
+ } else {
return a;
}
});
});
return re;
}('4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364'),
- U2Ghash={},
- G2Uhash={};
- !function(data){
- var k=0;
- data=data.match(/..../g);
- for(var i=0x81;i<=0xfe;i++){
- for(var j=0x40;j<=0xFE;j++){
- U2Ghash[data[k++]]=('%'+i.toString(16)+'%'+j.toString(16))
+ U2Ghash = {},
+ G2Uhash = {};
+ ! function(data) {
+ var k = 0;
+ data = data.match(/..../g);
+ for (var i = 0x81; i <= 0xfe; i++) {
+ for (var j = 0x40; j <= 0xFE; j++) {
+ U2Ghash[data[k++]] = ('%' + i.toString(16) + '%' + j.toString(16))
.toUpperCase();
}
}
- for(var key in U2Ghash){
- G2Uhash[U2Ghash[key]]=key;
+ for (var key in U2Ghash) {
+ G2Uhash[U2Ghash[key]] = key;
}
}(data);
+
function isAscii(unicode) {
return ((unicode == 0x20AC) || (unicode <= 0x007F && unicode >= 0x0000));
}
- return{
- encode:function(str){
- return str.replace(/./g,function(a){
- var code=a.charCodeAt(0);
- if(isAscii(code)){
+ return {
+ encode: function(str) {
+ return str.replace(/./g, function(a) {
+ var code = a.charCodeAt(0);
+ if (isAscii(code)) {
return encodeURIComponent(a);
- }else{
- var key=code.toString(16);
- if(key.length!=4)key=('000'+key).match(/....$/)[0];
- return U2Ghash[key]||a;
+ } else {
+ var key = code.toString(16);
+ if (key.length != 4) key = ('000' + key).match(/....$/)[0];
+ return U2Ghash[key] || a;
}
});
},
- decode:function(str){
- return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g,function(a){
- if(a in G2Uhash){
- return String.fromCharCode('0x'+G2Uhash[a]);
- }else{
+ decode: function(str) {
+ return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g, function(a) {
+ if (a in G2Uhash) {
+ return String.fromCharCode('0x' + G2Uhash[a]);
+ } else {
return a;
}
- }).replace(/%[\w]{2}/g,function(a){
+ }).replace(/%[\w]{2}/g, function(a) {
return decodeURIComponent(a);
});
diff --git a/drpy_libs/jinja.js b/JS/jinja.js
similarity index 81%
rename from drpy_libs/jinja.js
rename to JS/jinja.js
index cc02357..67928a0 100644
--- a/drpy_libs/jinja.js
+++ b/JS/jinja.js
@@ -20,11 +20,11 @@
*/
/*global require, exports, module, define */
-(function (global, factory) {
+(function(global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {}));
-})(this, (function (jinja) {
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {}));
+})(this, (function(jinja) {
"use strict";
var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g;
var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g;
@@ -77,20 +77,22 @@
this.isSilent = false;
}
- Parser.prototype.push = function (line) {
+ Parser.prototype.push = function(line) {
if (!this.isSilent) {
this.compiled.push(line);
}
};
- Parser.prototype.parse = function (src) {
+ Parser.prototype.parse = function(src) {
this.tokenize(src);
return this.compiled;
};
- Parser.prototype.tokenize = function (src) {
- var lastEnd = 0, parser = this, trimLeading = false;
- matchAll(src, START_TOKEN, function (open, index, src) {
+ Parser.prototype.tokenize = function(src) {
+ var lastEnd = 0,
+ parser = this,
+ trimLeading = false;
+ matchAll(src, START_TOKEN, function(open, index, src) {
//here we match the rest of the src against a regex for this tag
var match = src.slice(index + open.length).match(TAGS[open]);
match = (match ? match[0] : '');
@@ -127,11 +129,11 @@
this.textHandler(text);
};
- Parser.prototype.textHandler = function (text) {
+ Parser.prototype.textHandler = function(text) {
this.push('write(' + JSON.stringify(text) + ');');
};
- Parser.prototype.tokenHandler = function (open, inner) {
+ Parser.prototype.tokenHandler = function(open, inner) {
var type = delimeters[open];
if (type === 'directive') {
this.compileTag(inner);
@@ -140,7 +142,7 @@
//replace || operators with ~
extracted.src = extracted.src.replace(/\|\|/g, '~').split('|');
//put back || operators
- extracted.src = extracted.src.map(function (part) {
+ extracted.src = extracted.src.map(function(part) {
return part.split('~').join('||');
});
var parts = this.injectEnt(extracted, '@');
@@ -153,7 +155,7 @@
}
};
- Parser.prototype.compileTag = function (str) {
+ Parser.prototype.compileTag = function(str) {
var directive = str.split(' ')[0];
var handler = tagHandlers[directive];
if (!handler) {
@@ -162,20 +164,23 @@
handler.call(this, str.slice(directive.length).trim());
};
- Parser.prototype.parseFilter = function (src) {
+ Parser.prototype.parseFilter = function(src) {
src = src.trim();
var match = src.match(/[:(]/);
var i = match ? match.index : -1;
if (i < 0) return JSON.stringify([src]);
var name = src.slice(0, i);
var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1);
- args = this.parseExpr(args, {terms: true});
+ args = this.parseExpr(args, {
+ terms: true
+ });
return '[' + JSON.stringify(name) + ',' + args + ']';
};
- Parser.prototype.extractEnt = function (src, regex, placeholder) {
- var subs = [], isFunc = typeof placeholder == 'function';
- src = src.replace(regex, function (str) {
+ Parser.prototype.extractEnt = function(src, regex, placeholder) {
+ var subs = [],
+ isFunc = typeof placeholder == 'function';
+ src = src.replace(regex, function(str) {
var replacement = isFunc ? placeholder(str) : placeholder;
if (replacement) {
subs.push(str);
@@ -183,15 +188,21 @@
}
return str;
});
- return {src: src, subs: subs};
+ return {
+ src: src,
+ subs: subs
+ };
};
- Parser.prototype.injectEnt = function (extracted, placeholder) {
- var src = extracted.src, subs = extracted.subs, isArr = Array.isArray(src);
+ Parser.prototype.injectEnt = function(extracted, placeholder) {
+ var src = extracted.src,
+ subs = extracted.subs,
+ isArr = Array.isArray(src);
var arr = (isArr) ? src : [src];
- var re = new RegExp('[' + placeholder + ']', 'g'), i = 0;
- arr.forEach(function (src, index) {
- arr[index] = src.replace(re, function () {
+ var re = new RegExp('[' + placeholder + ']', 'g'),
+ i = 0;
+ arr.forEach(function(src, index) {
+ arr[index] = src.replace(re, function() {
return subs[i++];
});
});
@@ -199,7 +210,7 @@
};
//replace complex literals without mistaking subscript notation with array literals
- Parser.prototype.replaceComplex = function (s) {
+ Parser.prototype.replaceComplex = function(s) {
var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, 'v');
parsed.src = parsed.src.replace(NON_PRIMITIVES, '~');
return this.injectEnt(parsed, 'v');
@@ -207,17 +218,17 @@
//parse expression containing literals (including objects/arrays) and variables (including dot and subscript notation)
//valid expressions: `a + 1 > b.c or c == null`, `a and b[1] != c`, `(a < b) or (c < d and e)`, 'a || [1]`
- Parser.prototype.parseExpr = function (src, opts) {
+ Parser.prototype.parseExpr = function(src, opts) {
opts = opts || {};
//extract string literals -> @
var parsed1 = this.extractEnt(src, STRINGS, '@');
//note: this will catch {not: 1} and a.is; could we replace temporarily and then check adjacent chars?
- parsed1.src = parsed1.src.replace(EOPS, function (s, before, op, after) {
+ parsed1.src = parsed1.src.replace(EOPS, function(s, before, op, after) {
return (op in operators) ? before + operators[op] + after : s;
});
//sub out non-string literals (numbers/true/false/null) -> #
// the distinction is necessary because @ can be object identifiers, # cannot
- var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function (s) {
+ var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function(s) {
return (s in constants || NUMBER.test(s)) ? '#' : null;
});
//sub out object/variable identifiers -> i
@@ -229,10 +240,10 @@
var simplified = parsed3.src;
//sub out complex literals (objects/arrays) -> ~
// the distinction is necessary because @ and # can be subscripts but ~ cannot
- while (simplified !== (simplified = this.replaceComplex(simplified))) ;
+ while (simplified !== (simplified = this.replaceComplex(simplified)));
//now @ represents strings, # represents other primitives and ~ represents non-primitives
//replace complex variables (those with dot/subscript accessors) -> v
- while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v'))) ;
+ while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v')));
//empty subscript or complex variables in subscript, are not permitted
simplified = simplified.replace(/[iv]\[v?\]/g, 'x');
//sub in "i" for @ and # and ~ and v (now "i" represents all literals, variables and identifiers)
@@ -242,9 +253,9 @@
//allow 'not' unary operator
simplified = simplified.replace(/!+[i]/g, 'i');
var terms = opts.terms ? simplified.split(',') : [simplified];
- terms.forEach(function (term) {
+ terms.forEach(function(term) {
//simplify logical grouping
- while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i'))) ;
+ while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i')));
if (!term.match(/^i(%i)*/)) {
throw new Error('Invalid expression: ' + src + " " + term);
}
@@ -255,15 +266,16 @@
return this.injectEnt(parsed1, '@');
};
- Parser.prototype.parseVar = function (src) {
+ Parser.prototype.parseVar = function(src) {
var args = Array.prototype.slice.call(arguments);
- var str = args.pop(), index = args.pop();
+ var str = args.pop(),
+ index = args.pop();
//quote bare object identifiers (might be a reserved word like {while: 1})
if (src === 'i' && str.charAt(index + 1) === ':') {
return '"i"';
}
var parts = ['"i"'];
- src.replace(ACCESSOR, function (part) {
+ src.replace(ACCESSOR, function(part) {
if (part === '.i') {
parts.push('"i"');
} else if (part === '[i]') {
@@ -276,15 +288,15 @@
};
//escapes a name to be used as a javascript identifier
- Parser.prototype.escName = function (str) {
- return str.replace(/\W/g, function (s) {
+ Parser.prototype.escName = function(str) {
+ return str.replace(/\W/g, function(s) {
return '$' + s.charCodeAt(0).toString(16);
});
};
- Parser.prototype.parseQuoted = function (str) {
+ Parser.prototype.parseQuoted = function(str) {
if (str.charAt(0) === "'") {
- str = str.slice(1, -1).replace(/\\.|"/, function (s) {
+ str = str.slice(1, -1).replace(/\\.|"/, function(s) {
if (s === "\\'") return "'";
return s.charAt(0) === '\\' ? s : ('\\' + s);
});
@@ -297,48 +309,48 @@
//the context 'this' inside tagHandlers is the parser instance
var tagHandlers = {
- 'if': function (expr) {
+ 'if': function(expr) {
this.push('if (' + this.parseExpr(expr) + ') {');
this.nest.unshift('if');
},
- 'else': function () {
+ 'else': function() {
if (this.nest[0] === 'for') {
this.push('}, function() {');
} else {
this.push('} else {');
}
},
- 'elseif': function (expr) {
+ 'elseif': function(expr) {
this.push('} else if (' + this.parseExpr(expr) + ') {');
},
- 'endif': function () {
+ 'endif': function() {
this.nest.shift();
this.push('}');
},
- 'for': function (str) {
+ 'for': function(str) {
var i = str.indexOf(' in ');
var name = str.slice(0, i).trim();
var expr = str.slice(i + 4).trim();
this.push('each(' + this.parseExpr(expr) + ',' + JSON.stringify(name) + ',function() {');
this.nest.unshift('for');
},
- 'endfor': function () {
+ 'endfor': function() {
this.nest.shift();
this.push('});');
},
- 'raw': function () {
+ 'raw': function() {
this.rawMode = true;
},
- 'endraw': function () {
+ 'endraw': function() {
this.rawMode = false;
},
- 'set': function (stmt) {
+ 'set': function(stmt) {
var i = stmt.indexOf('=');
var name = stmt.slice(0, i).trim();
var expr = stmt.slice(i + 1).trim();
this.push('set(' + JSON.stringify(name) + ',' + this.parseExpr(expr) + ');');
},
- 'block': function (name) {
+ 'block': function(name) {
if (this.isParent) {
++this.parentBlocks;
var blockName = 'block_' + (this.escName(name) || this.parentBlocks);
@@ -351,7 +363,7 @@
}
this.nest.unshift('block');
},
- 'endblock': function () {
+ 'endblock': function() {
this.nest.shift();
if (this.isParent) {
this.push('});');
@@ -360,7 +372,7 @@
this.isSilent = true;
}
},
- 'extends': function (name) {
+ 'extends': function(name) {
name = this.parseQuoted(name);
var parentSrc = this.readTemplateFile(name);
this.isParent = true;
@@ -370,7 +382,7 @@
//silence output until we enter a child block
this.isSilent = true;
},
- 'include': function (name) {
+ 'include': function(name) {
name = this.parseQuoted(name);
var incSrc = this.readTemplateFile(name);
this.isInclude = true;
@@ -385,29 +397,31 @@
tagHandlers.elif = tagHandlers.elseif;
var getRuntime = function runtime(data, opts) {
- var defaults = {autoEscape: 'toJson'};
+ var defaults = {
+ autoEscape: 'toJson'
+ };
var _toString = Object.prototype.toString;
var _hasOwnProperty = Object.prototype.hasOwnProperty;
- var getKeys = Object.keys || function (obj) {
+ var getKeys = Object.keys || function(obj) {
var keys = [];
- for (var n in obj) if (_hasOwnProperty.call(obj, n)) keys.push(n);
+ for (var n in obj)
+ if (_hasOwnProperty.call(obj, n)) keys.push(n);
return keys;
};
- var isArray = Array.isArray || function (obj) {
+ var isArray = Array.isArray || function(obj) {
return _toString.call(obj) === '[object Array]';
};
- var create = Object.create || function (obj) {
- function F() {
- }
+ var create = Object.create || function(obj) {
+ function F() {}
F.prototype = obj;
return new F();
};
- var toString = function (val) {
+ var toString = function(val) {
if (val == null) return '';
return (typeof val.toString == 'function') ? val.toString() : _toString.call(val);
};
- var extend = function (dest, src) {
+ var extend = function(dest, src) {
var keys = getKeys(src);
for (var i = 0, len = keys.length; i < len; i++) {
var key = keys[i];
@@ -416,8 +430,9 @@
return dest;
};
//get a value, lexically, starting in current context; a.b -> get("a","b")
- var get = function () {
- var val, n = arguments[0], c = stack.length;
+ var get = function() {
+ var val, n = arguments[0],
+ c = stack.length;
while (c--) {
val = stack[c][n];
if (typeof val != 'undefined') break;
@@ -429,21 +444,23 @@
}
return (val == null) ? '' : val;
};
- var set = function (n, val) {
+ var set = function(n, val) {
stack[stack.length - 1][n] = val;
};
- var push = function (ctx) {
+ var push = function(ctx) {
stack.push(ctx || {});
};
- var pop = function () {
+ var pop = function() {
stack.pop();
};
- var write = function (str) {
+ var write = function(str) {
output.push(str);
};
- var filter = function (val) {
+ var filter = function(val) {
for (var i = 1, len = arguments.length; i < len; i++) {
- var arr = arguments[i], name = arr[0], filter = filters[name];
+ var arr = arguments[i],
+ name = arr[0],
+ filter = filters[name];
if (filter) {
arr[0] = val;
//now arr looks like [val, arg1, arg2]
@@ -458,47 +475,58 @@
}
output.push(val);
};
- var each = function (obj, loopvar, fn1, fn2) {
+ var each = function(obj, loopvar, fn1, fn2) {
if (obj == null) return;
- var arr = isArray(obj) ? obj : getKeys(obj), len = arr.length;
- var ctx = {loop: {length: len, first: arr[0], last: arr[len - 1]}};
+ var arr = isArray(obj) ? obj : getKeys(obj),
+ len = arr.length;
+ var ctx = {
+ loop: {
+ length: len,
+ first: arr[0],
+ last: arr[len - 1]
+ }
+ };
push(ctx);
for (var i = 0; i < len; i++) {
- extend(ctx.loop, {index: i + 1, index0: i});
+ extend(ctx.loop, {
+ index: i + 1,
+ index0: i
+ });
fn1(ctx[loopvar] = arr[i]);
}
if (len === 0 && fn2) fn2();
pop();
};
- var block = function (fn) {
+ var block = function(fn) {
push();
fn();
pop();
};
- var render = function () {
+ var render = function() {
return output.join('');
};
data = data || {};
opts = extend(defaults, opts || {});
var filters = extend({
- html: function (val) {
+ html: function(val) {
return toString(val)
.split('&').join('&')
.split('<').join('<')
.split('>').join('>')
.split('"').join('"');
},
- safe: function (val) {
+ safe: function(val) {
return val;
},
- toJson: function (val) {
+ toJson: function(val) {
if (typeof val === 'object') {
return JSON.stringify(val);
}
return toString(val);
}
}, opts.filters || {});
- var stack = [create(data || {})], output = [];
+ var stack = [create(data || {})],
+ output = [];
return {
get: get,
set: set,
@@ -514,7 +542,7 @@
var runtime;
- jinja.compile = function (markup, opts) {
+ jinja.compile = function(markup, opts) {
opts = opts || {};
var parser = new Parser();
parser.readTemplateFile = this.readTemplateFile;
@@ -531,17 +559,19 @@
runtime = runtime || (runtime = getRuntime.toString());
fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))');
}
- return {render: fn};
+ return {
+ render: fn
+ };
};
- jinja.render = function (markup, data, opts) {
+ jinja.render = function(markup, data, opts) {
var tmpl = jinja.compile(markup);
return tmpl.render(data, opts);
};
jinja.templateFiles = [];
- jinja.readTemplateFile = function (name) {
+ jinja.readTemplateFile = function(name) {
var templateFiles = this.templateFiles || [];
var templateFile = templateFiles[name];
if (templateFile == null) {
diff --git a/JS/jinja.min.js b/JS/jinja.min.js
new file mode 100644
index 0000000..f702f29
--- /dev/null
+++ b/JS/jinja.min.js
@@ -0,0 +1,504 @@
+(function(global, factory) {
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.jinja = {}))
+})(this, function(jinja) {
+ "use strict";
+ var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g;
+ var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g;
+ var NUMBER = /^[+-]?\d+(\.\d+)?$/;
+ var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g;
+ var IDENTIFIERS = /[$_a-z][$\w]*/gi;
+ var VARIABLES = /i(\.i|\[[@#i]\])*/g;
+ var ACCESSOR = /(\.i|\[[@#i]\])/g;
+ var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g;
+ var EOPS = /(^|[^$\w])(and|or|not|is|isnot)([^$\w]|$)/g;
+ var LEADING_SPACE = /^\s+/;
+ var TRAILING_SPACE = /\s+$/;
+ var START_TOKEN = /\{\{\{|\{\{|\{%|\{#/;
+ var TAGS = {
+ "{{{": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}\}/,
+ "{{": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}/,
+ "{%": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?%\}/,
+ "{#": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?#\}/
+ };
+ var delimeters = {
+ "{%": "directive",
+ "{{": "output",
+ "{#": "comment"
+ };
+ var operators = {
+ and: "&&",
+ or: "||",
+ not: "!",
+ is: "==",
+ isnot: "!="
+ };
+ var constants = {
+ true: true,
+ false: false,
+ null: null
+ };
+
+ function Parser() {
+ this.nest = [];
+ this.compiled = [];
+ this.childBlocks = 0;
+ this.parentBlocks = 0;
+ this.isSilent = false
+ }
+ Parser.prototype.push = function(line) {
+ if (!this.isSilent) {
+ this.compiled.push(line)
+ }
+ };
+ Parser.prototype.parse = function(src) {
+ this.tokenize(src);
+ return this.compiled
+ };
+ Parser.prototype.tokenize = function(src) {
+ var lastEnd = 0,
+ parser = this,
+ trimLeading = false;
+ matchAll(src, START_TOKEN, function(open, index, src) {
+ var match = src.slice(index + open.length).match(TAGS[open]);
+ match = match ? match[0] : "";
+ var simplified = match.replace(STRINGS, "@");
+ if (!match || ~simplified.indexOf(open)) {
+ return index + 1
+ }
+ var inner = match.slice(0, 0 - open.length);
+ if (inner.charAt(0) === "-") var wsCollapseLeft = true;
+ if (inner.slice(-1) === "-") var wsCollapseRight = true;
+ inner = inner.replace(/^-|-$/g, "").trim();
+ if (parser.rawMode && open + inner !== "{%endraw") {
+ return index + 1
+ }
+ var text = src.slice(lastEnd, index);
+ lastEnd = index + open.length + match.length;
+ if (trimLeading) text = trimLeft(text);
+ if (wsCollapseLeft) text = trimRight(text);
+ if (wsCollapseRight) trimLeading = true;
+ if (open === "{{{") {
+ open = "{{";
+ inner += "|safe"
+ }
+ parser.textHandler(text);
+ parser.tokenHandler(open, inner)
+ });
+ var text = src.slice(lastEnd);
+ if (trimLeading) text = trimLeft(text);
+ this.textHandler(text)
+ };
+ Parser.prototype.textHandler = function(text) {
+ this.push("write(" + JSON.stringify(text) + ");")
+ };
+ Parser.prototype.tokenHandler = function(open, inner) {
+ var type = delimeters[open];
+ if (type === "directive") {
+ this.compileTag(inner)
+ } else if (type === "output") {
+ var extracted = this.extractEnt(inner, STRINGS, "@");
+ extracted.src = extracted.src.replace(/\|\|/g, "~").split("|");
+ extracted.src = extracted.src.map(function(part) {
+ return part.split("~").join("||")
+ });
+ var parts = this.injectEnt(extracted, "@");
+ if (parts.length > 1) {
+ var filters = parts.slice(1).map(this.parseFilter.bind(this));
+ this.push("filter(" + this.parseExpr(parts[0]) + "," + filters.join(",") + ");")
+ } else {
+ this.push("filter(" + this.parseExpr(parts[0]) + ");")
+ }
+ }
+ };
+ Parser.prototype.compileTag = function(str) {
+ var directive = str.split(" ")[0];
+ var handler = tagHandlers[directive];
+ if (!handler) {
+ throw new Error("Invalid tag: " + str)
+ }
+ handler.call(this, str.slice(directive.length).trim())
+ };
+ Parser.prototype.parseFilter = function(src) {
+ src = src.trim();
+ var match = src.match(/[:(]/);
+ var i = match ? match.index : -1;
+ if (i < 0) return JSON.stringify([src]);
+ var name = src.slice(0, i);
+ var args = src.charAt(i) === ":" ? src.slice(i + 1) : src.slice(i + 1, -1);
+ args = this.parseExpr(args, {
+ terms: true
+ });
+ return "[" + JSON.stringify(name) + "," + args + "]"
+ };
+ Parser.prototype.extractEnt = function(src, regex, placeholder) {
+ var subs = [],
+ isFunc = typeof placeholder == "function";
+ src = src.replace(regex, function(str) {
+ var replacement = isFunc ? placeholder(str) : placeholder;
+ if (replacement) {
+ subs.push(str);
+ return replacement
+ }
+ return str
+ });
+ return {
+ src: src,
+ subs: subs
+ }
+ };
+ Parser.prototype.injectEnt = function(extracted, placeholder) {
+ var src = extracted.src,
+ subs = extracted.subs,
+ isArr = Array.isArray(src);
+ var arr = isArr ? src : [src];
+ var re = new RegExp("[" + placeholder + "]", "g"),
+ i = 0;
+ arr.forEach(function(src, index) {
+ arr[index] = src.replace(re, function() {
+ return subs[i++]
+ })
+ });
+ return isArr ? arr : arr[0]
+ };
+ Parser.prototype.replaceComplex = function(s) {
+ var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, "v");
+ parsed.src = parsed.src.replace(NON_PRIMITIVES, "~");
+ return this.injectEnt(parsed, "v")
+ };
+ Parser.prototype.parseExpr = function(src, opts) {
+ opts = opts || {};
+ var parsed1 = this.extractEnt(src, STRINGS, "@");
+ parsed1.src = parsed1.src.replace(EOPS, function(s, before, op, after) {
+ return op in operators ? before + operators[op] + after : s
+ });
+ var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function(s) {
+ return s in constants || NUMBER.test(s) ? "#" : null
+ });
+ var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, "i");
+ parsed3.src = parsed3.src.replace(/\s+/g, "");
+ var simplified = parsed3.src;
+ while (simplified !== (simplified = this.replaceComplex(simplified)));
+ while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, "v")));
+ simplified = simplified.replace(/[iv]\[v?\]/g, "x");
+ simplified = simplified.replace(/[@#~v]/g, "i");
+ simplified = simplified.replace(OPERATORS, "%");
+ simplified = simplified.replace(/!+[i]/g, "i");
+ var terms = opts.terms ? simplified.split(",") : [simplified];
+ terms.forEach(function(term) {
+ while (term !== (term = term.replace(/\(i(%i)*\)/g, "i")));
+ if (!term.match(/^i(%i)*/)) {
+ throw new Error("Invalid expression: " + src + " " + term)
+ }
+ });
+ parsed3.src = parsed3.src.replace(VARIABLES, this.parseVar.bind(this));
+ parsed2.src = this.injectEnt(parsed3, "i");
+ parsed1.src = this.injectEnt(parsed2, "#");
+ return this.injectEnt(parsed1, "@")
+ };
+ Parser.prototype.parseVar = function(src) {
+ var args = Array.prototype.slice.call(arguments);
+ var str = args.pop(),
+ index = args.pop();
+ if (src === "i" && str.charAt(index + 1) === ":") {
+ return '"i"'
+ }
+ var parts = ['"i"'];
+ src.replace(ACCESSOR, function(part) {
+ if (part === ".i") {
+ parts.push('"i"')
+ } else if (part === "[i]") {
+ parts.push('get("i")')
+ } else {
+ parts.push(part.slice(1, -1))
+ }
+ });
+ return "get(" + parts.join(",") + ")"
+ };
+ Parser.prototype.escName = function(str) {
+ return str.replace(/\W/g, function(s) {
+ return "$" + s.charCodeAt(0).toString(16)
+ })
+ };
+ Parser.prototype.parseQuoted = function(str) {
+ if (str.charAt(0) === "'") {
+ str = str.slice(1, -1).replace(/\\.|"/, function(s) {
+ if (s === "\\'") return "'";
+ return s.charAt(0) === "\\" ? s : "\\" + s
+ });
+ str = '"' + str + '"'
+ }
+ return JSON.parse(str)
+ };
+ var tagHandlers = {
+ if: function(expr) {
+ this.push("if (" + this.parseExpr(expr) + ") {");
+ this.nest.unshift("if")
+ },
+ else: function() {
+ if (this.nest[0] === "for") {
+ this.push("}, function() {")
+ } else {
+ this.push("} else {")
+ }
+ },
+ elseif: function(expr) {
+ this.push("} else if (" + this.parseExpr(expr) + ") {")
+ },
+ endif: function() {
+ this.nest.shift();
+ this.push("}")
+ },
+ for: function(str) {
+ var i = str.indexOf(" in ");
+ var name = str.slice(0, i).trim();
+ var expr = str.slice(i + 4).trim();
+ this.push("each(" + this.parseExpr(expr) + "," + JSON.stringify(name) + ",function() {");
+ this.nest.unshift("for")
+ },
+ endfor: function() {
+ this.nest.shift();
+ this.push("});")
+ },
+ raw: function() {
+ this.rawMode = true
+ },
+ endraw: function() {
+ this.rawMode = false
+ },
+ set: function(stmt) {
+ var i = stmt.indexOf("=");
+ var name = stmt.slice(0, i).trim();
+ var expr = stmt.slice(i + 1).trim();
+ this.push("set(" + JSON.stringify(name) + "," + this.parseExpr(expr) + ");")
+ },
+ block: function(name) {
+ if (this.isParent) {
+ ++this.parentBlocks;
+ var blockName = "block_" + (this.escName(name) || this.parentBlocks);
+ this.push("block(typeof " + blockName + ' == "function" ? ' + blockName + " : function() {")
+ } else if (this.hasParent) {
+ this.isSilent = false;
+ ++this.childBlocks;
+ blockName = "block_" + (this.escName(name) || this.childBlocks);
+ this.push("function " + blockName + "() {")
+ }
+ this.nest.unshift("block")
+ },
+ endblock: function() {
+ this.nest.shift();
+ if (this.isParent) {
+ this.push("});")
+ } else if (this.hasParent) {
+ this.push("}");
+ this.isSilent = true
+ }
+ },
+ extends: function(name) {
+ name = this.parseQuoted(name);
+ var parentSrc = this.readTemplateFile(name);
+ this.isParent = true;
+ this.tokenize(parentSrc);
+ this.isParent = false;
+ this.hasParent = true;
+ this.isSilent = true
+ },
+ include: function(name) {
+ name = this.parseQuoted(name);
+ var incSrc = this.readTemplateFile(name);
+ this.isInclude = true;
+ this.tokenize(incSrc);
+ this.isInclude = false
+ }
+ };
+ tagHandlers.assign = tagHandlers.set;
+ tagHandlers.elif = tagHandlers.elseif;
+ var getRuntime = function runtime(data, opts) {
+ var defaults = {
+ autoEscape: "toJson"
+ };
+ var _toString = Object.prototype.toString;
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
+ var getKeys = Object.keys || function(obj) {
+ var keys = [];
+ for (var n in obj)
+ if (_hasOwnProperty.call(obj, n)) keys.push(n);
+ return keys
+ };
+ var isArray = Array.isArray || function(obj) {
+ return _toString.call(obj) === "[object Array]"
+ };
+ var create = Object.create || function(obj) {
+ function F() {}
+ F.prototype = obj;
+ return new F
+ };
+ var toString = function(val) {
+ if (val == null) return "";
+ return typeof val.toString == "function" ? val.toString() : _toString.call(val)
+ };
+ var extend = function(dest, src) {
+ var keys = getKeys(src);
+ for (var i = 0, len = keys.length; i < len; i++) {
+ var key = keys[i];
+ dest[key] = src[key]
+ }
+ return dest
+ };
+ var get = function() {
+ var val, n = arguments[0],
+ c = stack.length;
+ while (c--) {
+ val = stack[c][n];
+ if (typeof val != "undefined") break
+ }
+ for (var i = 1, len = arguments.length; i < len; i++) {
+ if (val == null) continue;
+ n = arguments[i];
+ val = _hasOwnProperty.call(val, n) ? val[n] : typeof val._get == "function" ? val[n] = val._get(n) : null
+ }
+ return val == null ? "" : val
+ };
+ var set = function(n, val) {
+ stack[stack.length - 1][n] = val
+ };
+ var push = function(ctx) {
+ stack.push(ctx || {})
+ };
+ var pop = function() {
+ stack.pop()
+ };
+ var write = function(str) {
+ output.push(str)
+ };
+ var filter = function(val) {
+ for (var i = 1, len = arguments.length; i < len; i++) {
+ var arr = arguments[i],
+ name = arr[0],
+ filter = filters[name];
+ if (filter) {
+ arr[0] = val;
+ val = filter.apply(data, arr)
+ } else {
+ throw new Error("Invalid filter: " + name)
+ }
+ }
+ if (opts.autoEscape && name !== opts.autoEscape && name !== "safe") {
+ val = filters[opts.autoEscape].call(data, val)
+ }
+ output.push(val)
+ };
+ var each = function(obj, loopvar, fn1, fn2) {
+ if (obj == null) return;
+ var arr = isArray(obj) ? obj : getKeys(obj),
+ len = arr.length;
+ var ctx = {
+ loop: {
+ length: len,
+ first: arr[0],
+ last: arr[len - 1]
+ }
+ };
+ push(ctx);
+ for (var i = 0; i < len; i++) {
+ extend(ctx.loop, {
+ index: i + 1,
+ index0: i
+ });
+ fn1(ctx[loopvar] = arr[i])
+ }
+ if (len === 0 && fn2) fn2();
+ pop()
+ };
+ var block = function(fn) {
+ push();
+ fn();
+ pop()
+ };
+ var render = function() {
+ return output.join("")
+ };
+ data = data || {};
+ opts = extend(defaults, opts || {});
+ var filters = extend({
+ html: function(val) {
+ return toString(val).split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""")
+ },
+ safe: function(val) {
+ return val
+ },
+ toJson: function(val) {
+ if (typeof val === "object") {
+ return JSON.stringify(val)
+ }
+ return toString(val)
+ }
+ }, opts.filters || {});
+ var stack = [create(data || {})],
+ output = [];
+ return {
+ get: get,
+ set: set,
+ push: push,
+ pop: pop,
+ write: write,
+ filter: filter,
+ each: each,
+ block: block,
+ render: render
+ }
+ };
+ var runtime;
+ jinja.compile = function(markup, opts) {
+ opts = opts || {};
+ var parser = new Parser;
+ parser.readTemplateFile = this.readTemplateFile;
+ var code = [];
+ code.push("function render($) {");
+ code.push("var get = $.get, set = $.set, push = $.push, pop = $.pop, write = $.write, filter = $.filter, each = $.each, block = $.block;");
+ code.push.apply(code, parser.parse(markup));
+ code.push("return $.render();");
+ code.push("}");
+ code = code.join("\n");
+ if (opts.runtime === false) {
+ var fn = new Function("data", "options", "return (" + code + ")(runtime(data, options))")
+ } else {
+ runtime = runtime || (runtime = getRuntime.toString());
+ fn = new Function("data", "options", "return (" + code + ")((" + runtime + ")(data, options))")
+ }
+ return {
+ render: fn
+ }
+ };
+ jinja.render = function(markup, data, opts) {
+ var tmpl = jinja.compile(markup);
+ return tmpl.render(data, opts)
+ };
+ jinja.templateFiles = [];
+ jinja.readTemplateFile = function(name) {
+ var templateFiles = this.templateFiles || [];
+ var templateFile = templateFiles[name];
+ if (templateFile == null) {
+ throw new Error("Template file not found: " + name)
+ }
+ return templateFile
+ };
+
+ function trimLeft(str) {
+ return str.replace(LEADING_SPACE, "")
+ }
+
+ function trimRight(str) {
+ return str.replace(TRAILING_SPACE, "")
+ }
+
+ function matchAll(str, reg, fn) {
+ reg = new RegExp(reg.source, "g" + (reg.ignoreCase ? "i" : "") + (reg.multiline ? "m" : ""));
+ var match;
+ while (match = reg.exec(str)) {
+ var result = fn(match[0], match.index, str);
+ if (typeof result == "number") {
+ reg.lastIndex = result
+ }
+ }
+ }
+});
\ No newline at end of file
diff --git a/JS/jsencrypt.js b/JS/jsencrypt.js
new file mode 100644
index 0000000..8deca5f
--- /dev/null
+++ b/JS/jsencrypt.js
@@ -0,0 +1,360 @@
+/*
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
+ * This devtool is neither made for production nor for readable output files.
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
+ * or disable the default devtool with "devtool: false".
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+ if (typeof exports === 'object' && typeof module === 'object') {
+ // CommonJS
+ module.exports = exports = factory();
+ } else if (typeof define === 'function' && define.amd) {
+ // AMD
+ define([], factory);
+ } else {
+ // Global (browser)
+ globalThis.JSEncrypt = factory();
+ }
+})(this, () => {
+ return /******/ (() => { // webpackBootstrap
+ /******/
+ var __webpack_modules__ = ({
+
+ /***/
+ "./lib/JSEncrypt.js":
+ /*!**************************!*\
+ !*** ./lib/JSEncrypt.js ***!
+ \**************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* binding */ JSEncrypt)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JSEncryptRSAKey */ \"./lib/JSEncryptRSAKey.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nvar _a;\n\n\nvar version = typeof process !== 'undefined'\n ? (_a = process.env) === null || _a === void 0 ? void 0 : \"3.3.2\"\n : undefined;\n/**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\nvar JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n if (options === void 0) { options = {}; }\n options = options || {};\n this.default_key_size = options.default_key_size\n ? parseInt(options.default_key_size, 10)\n : 1024;\n this.default_public_exponent = options.default_public_exponent || \"010001\"; // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false;\n // The private and public key.\n this.key = null;\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\");\n }\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey(key);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey);\n };\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt((0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().encrypt(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().sign(str, digestMethod, digestName));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's verify.\n * @param {string} str the string to verify\n * @param {string} signature the signature encoded in base64 to compare the string to\n * @param {function} digestMethod hash method\n * @return {boolean} whether the data and signature match\n * @public\n */\n JSEncrypt.prototype.verify = function (str, signature, digestMethod) {\n // Return the decrypted 'digest' of the signature.\n try {\n return this.getKey().verify(str, (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(signature), digestMethod);\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object\n * will be created and returned\n * @param {callback} [cb] the callback to be called if we want the key to be generated\n * in an async fashion\n * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object\n * @public\n */\n JSEncrypt.prototype.getKey = function (cb) {\n // Only create new if it does not exist.\n if (!this.key) {\n // Get a new private key.\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey();\n if (cb && {}.toString.call(cb) === \"[object Function]\") {\n this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb);\n return;\n }\n // Generate the key.\n this.key.generate(this.default_key_size, this.default_public_exponent);\n }\n return this.key;\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateKey();\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateBaseKeyB64();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicKey();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicBaseKeyB64();\n };\nvar b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";var base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out=\"\";while(i>2);out+=b64map.charAt((c1&3)<<4);out+=\"==\";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+=\"=\";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out=\"\";while(i>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(i>6)+b64map.charAt(c&63)}if(i+1==h.length){c=parseInt(h.substring(i,i+1),16);ret+=b64map.charAt(c<<2)}else if(i+2==h.length){c=parseInt(h.substring(i,i+2),16);ret+=b64map.charAt(c>>2)+b64map.charAt((c&3)<<4)}while((ret.length&3)>0)ret+=b64pad;return ret}function hexToBytes(hex){for(var bytes=[],c=0;c>>4).toString(16));hex.push((bytes[i]&15).toString(16))}return hex.join(\"\")}function b64tohex(str){for(var i=0,bin=atob(str.replace(/[ \\r\\n]+$/,\"\")),hex=[];i>3};JSEncrypt.prototype.decryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)*2;try{var hexString=b64tohex(string);var decryptedString=\"\";var rexStr=\".{1,\"+maxLength+\"}\";var rex=new RegExp(rexStr,\"g\");var subStrArray=hexString.match(rex);if(subStrArray){subStrArray.forEach(function(entry){decryptedString+=k.decrypt(entry)});return decryptedString}}catch(ex){console.log(\"加密错误:\"+ex.message);return false}};JSEncrypt.prototype.encryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)-11;try{var subStr=\"\",encryptedString=\"\";var subStart=0,subEnd=0;var bitLen=0,tmpPoint=0;for(var i=0,len=string.length;imaxLength){subStr=string.substring(subStart,subEnd);encryptedString+=k.encrypt(subStr);subStart=subEnd;bitLen=bitLen-tmpPoint}else{subEnd=i;tmpPoint=bitLen}}subStr=string.substring(subStart,len);encryptedString+=k.encrypt(subStr);return hex2b64(encryptedString)}catch(ex){console.log(\"解密错误:\"+ex.message);return false}}; JSEncrypt.version = version;\n return JSEncrypt;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncrypt.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/JSEncryptRSAKey.js":
+ /*!********************************!*\
+ !*** ./lib/JSEncryptRSAKey.js ***!
+ \********************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncryptRSAKey\": () => (/* binding */ JSEncryptRSAKey)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/asn1js/hex */ \"./lib/lib/asn1js/hex.js\");\n/* harmony import */ var _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/asn1js/base64 */ \"./lib/lib/asn1js/base64.js\");\n/* harmony import */ var _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/asn1js/asn1 */ \"./lib/lib/asn1js/asn1.js\");\n/* harmony import */ var _lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/jsbn/rsa */ \"./lib/lib/jsbn/rsa.js\");\n/* harmony import */ var _lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/jsrsasign/asn1-1.0 */ \"./lib/lib/jsrsasign/asn1-1.0.js\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\n\n/**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\nvar JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super);\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this;\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key);\n }\n else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key);\n }\n }\n return _this;\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0;\n var public_exponent = 0;\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;\n var der = reHex.test(pem) ? _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__.Hex.decode(pem) : _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__.Base64.unarmor(pem);\n var asn1 = _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__.ASN1.decode(der);\n // Fixes a bug with OpenSSL 1.0+ private keys\n if (asn1.sub.length === 3) {\n asn1 = asn1.sub[2].sub[0];\n }\n if (asn1.sub.length === 9) {\n // Parse the private key.\n modulus = asn1.sub[1].getHexStringValue(); // bigint\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[2].getHexStringValue(); // int\n this.e = parseInt(public_exponent, 16);\n var private_exponent = asn1.sub[3].getHexStringValue(); // bigint\n this.d = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(private_exponent, 16);\n var prime1 = asn1.sub[4].getHexStringValue(); // bigint\n this.p = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime1, 16);\n var prime2 = asn1.sub[5].getHexStringValue(); // bigint\n this.q = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime2, 16);\n var exponent1 = asn1.sub[6].getHexStringValue(); // bigint\n this.dmp1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent1, 16);\n var exponent2 = asn1.sub[7].getHexStringValue(); // bigint\n this.dmq1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent2, 16);\n var coefficient = asn1.sub[8].getHexStringValue(); // bigint\n this.coeff = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(coefficient, 16);\n }\n else if (asn1.sub.length === 2) {\n if (asn1.sub[0].sub) {\n // Parse ASN.1 SubjectPublicKeyInfo type as defined by X.509\n var bit_string = asn1.sub[1];\n var sequence = bit_string.sub[0];\n modulus = sequence.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = sequence.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n else {\n // Parse ASN.1 RSAPublicKey type as defined by PKCS #1\n modulus = asn1.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n }\n else {\n return false;\n }\n return true;\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa key.\n *\n * The translation follow the ASN.1 notation :\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER, -- (inverse of q) mod p\n * }\n * @returns {string} DER Encoded String representing the rsa private key\n * @private\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKey = function () {\n var options = {\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: 0 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.d }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.p }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.q }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmp1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmq1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.coeff }),\n ],\n };\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence(options);\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPrivateBaseKey());\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa public key.\n * The representation follow the ASN.1 notation :\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * @returns {string} DER Encoded String representing the rsa public key\n * @private\n */\n JSEncryptRSAKey.prototype.getPublicBaseKey = function () {\n var first_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERObjectIdentifier({ oid: \"1.2.840.113549.1.1.1\" }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERNull(),\n ],\n });\n var second_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n ],\n });\n var bit_string = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERBitString({\n hex: \"00\" + second_sequence.getEncodedHex(),\n });\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [first_sequence, bit_string],\n });\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPublicBaseKey());\n };\n /**\n * wrap the string in block of width chars. The default value for rsa keys is 64\n * characters.\n * @param {string} str the pem encoded string without header and footer\n * @param {Number} [width=64] - the length the string has to be wrapped at\n * @returns {string}\n * @private\n */\n JSEncryptRSAKey.wordwrap = function (str, width) {\n width = width || 64;\n if (!str) {\n return str;\n }\n var regex = \"(.{1,\" + width + \"})( +|$\\n?)|(.{1,\" + width + \"})\";\n return str.match(RegExp(regex, \"g\")).join(\"\\n\");\n };\n /**\n * Retrieve the pem encoded private key\n * @returns {string} the pem encoded private key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateKey = function () {\n var key = \"-----BEGIN RSA PRIVATE KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + \"\\n\";\n key += \"-----END RSA PRIVATE KEY-----\";\n return key;\n };\n /**\n * Retrieve the pem encoded public key\n * @returns {string} the pem encoded public key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicKey = function () {\n var key = \"-----BEGIN PUBLIC KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + \"\\n\";\n key += \"-----END PUBLIC KEY-----\";\n return key;\n };\n /**\n * Check if the object contains the necessary parameters to populate the rsa modulus\n * and public exponent parameters.\n * @param {Object} [obj={}] - An object that may contain the two public key\n * parameters\n * @returns {boolean} true if the object contains both the modulus and the public exponent\n * properties (n and e)\n * @todo check for types of n and e. N should be a parseable bigInt object, E should\n * be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPublicKeyProperty = function (obj) {\n obj = obj || {};\n return obj.hasOwnProperty(\"n\") && obj.hasOwnProperty(\"e\");\n };\n /**\n * Check if the object contains ALL the parameters of an RSA key.\n * @param {Object} [obj={}] - An object that may contain nine rsa key\n * parameters\n * @returns {boolean} true if the object contains all the parameters needed\n * @todo check for types of the parameters all the parameters but the public exponent\n * should be parseable bigint objects, the public exponent should be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPrivateKeyProperty = function (obj) {\n obj = obj || {};\n return (obj.hasOwnProperty(\"n\") &&\n obj.hasOwnProperty(\"e\") &&\n obj.hasOwnProperty(\"d\") &&\n obj.hasOwnProperty(\"p\") &&\n obj.hasOwnProperty(\"q\") &&\n obj.hasOwnProperty(\"dmp1\") &&\n obj.hasOwnProperty(\"dmq1\") &&\n obj.hasOwnProperty(\"coeff\"));\n };\n /**\n * Parse the properties of obj in the current rsa object. Obj should AT LEAST\n * include the modulus and public exponent (n, e) parameters.\n * @param {Object} obj - the object containing rsa parameters\n * @private\n */\n JSEncryptRSAKey.prototype.parsePropertiesFrom = function (obj) {\n this.n = obj.n;\n this.e = obj.e;\n if (obj.hasOwnProperty(\"d\")) {\n this.d = obj.d;\n this.p = obj.p;\n this.q = obj.q;\n this.dmp1 = obj.dmp1;\n this.dmq1 = obj.dmq1;\n this.coeff = obj.coeff;\n }\n };\n return JSEncryptRSAKey;\n}(_lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__.RSAKey));\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncryptRSAKey.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/index.js":
+ /*!**********************!*\
+ !*** ./lib/index.js ***!
+ \**********************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* reexport safe */ _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JSEncrypt */ \"./lib/JSEncrypt.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/index.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/asn1js/asn1.js":
+ /*!********************************!*\
+ !*** ./lib/lib/asn1js/asn1.js ***!
+ \********************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shortYear ? reTimeS : reTimeL).exec(s);\n if (!m) {\n return \"Unrecognized time: \" + s;\n }\n if (shortYear) {\n // to avoid querying the timer, use the fixed range [1970, 2069]\n // it will conform with ITU X.400 [-10, +40] sliding window until 2030\n m[1] = +m[1];\n m[1] += (+m[1] < 70) ? 2000 : 1900;\n }\n s = m[1] + \"-\" + m[2] + \"-\" + m[3] + \" \" + m[4];\n if (m[5]) {\n s += \":\" + m[5];\n if (m[6]) {\n s += \":\" + m[6];\n if (m[7]) {\n s += \".\" + m[7];\n }\n }\n }\n if (m[8]) {\n s += \" UTC\";\n if (m[8] != \"Z\") {\n s += m[8];\n if (m[9]) {\n s += \":\" + m[9];\n }\n }\n }\n return s;\n };\n Stream.prototype.parseInteger = function (start, end) {\n var v = this.get(start);\n var neg = (v > 127);\n var pad = neg ? 255 : 0;\n var len;\n var s = \"\";\n // skip unuseful bits (not allowed in DER)\n while (v == pad && ++start < end) {\n v = this.get(start);\n }\n len = end - start;\n if (len === 0) {\n return neg ? -1 : 0;\n }\n // show bit length of huge integers\n if (len > 4) {\n s = v;\n len <<= 3;\n while (((+s ^ pad) & 0x80) == 0) {\n s = +s << 1;\n --len;\n }\n s = \"(\" + len + \" bit)\\n\";\n }\n // decode the integer\n if (neg) {\n v = v - 256;\n }\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10(v);\n for (var i = start + 1; i < end; ++i) {\n n.mulAdd(256, this.get(i));\n }\n return s + n.toString();\n };\n Stream.prototype.parseBitString = function (start, end, maxLength) {\n var unusedBit = this.get(start);\n var lenBit = ((end - start - 1) << 3) - unusedBit;\n var intro = \"(\" + lenBit + \" bit)\\n\";\n var s = \"\";\n for (var i = start + 1; i < end; ++i) {\n var b = this.get(i);\n var skip = (i == end - 1) ? unusedBit : 0;\n for (var j = 7; j >= skip; --j) {\n s += (b >> j) & 1 ? \"1\" : \"0\";\n }\n if (s.length > maxLength) {\n return intro + stringCut(s, maxLength);\n }\n }\n return intro + s;\n };\n Stream.prototype.parseOctetString = function (start, end, maxLength) {\n if (this.isASCII(start, end)) {\n return stringCut(this.parseStringISO(start, end), maxLength);\n }\n var len = end - start;\n var s = \"(\" + len + \" byte)\\n\";\n maxLength /= 2; // we work in bytes\n if (len > maxLength) {\n end = start + maxLength;\n }\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n }\n if (len > maxLength) {\n s += ellipsis;\n }\n return s;\n };\n Stream.prototype.parseOID = function (start, end, maxLength) {\n var s = \"\";\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n var bits = 0;\n for (var i = start; i < end; ++i) {\n var v = this.get(i);\n n.mulAdd(128, v & 0x7F);\n bits += 7;\n if (!(v & 0x80)) { // finished\n if (s === \"\") {\n n = n.simplify();\n if (n instanceof _int10__WEBPACK_IMPORTED_MODULE_0__.Int10) {\n n.sub(80);\n s = \"2.\" + n.toString();\n }\n else {\n var m = n < 80 ? n < 40 ? 0 : 1 : 2;\n s = m + \".\" + (n - m * 40);\n }\n }\n else {\n s += \".\" + n.toString();\n }\n if (s.length > maxLength) {\n return stringCut(s, maxLength);\n }\n n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n bits = 0;\n }\n }\n if (bits > 0) {\n s += \".incomplete\";\n }\n return s;\n };\n return Stream;\n}());\n\nvar ASN1 = /** @class */ (function () {\n function ASN1(stream, header, length, tag, sub) {\n if (!(tag instanceof ASN1Tag)) {\n throw new Error(\"Invalid tag value.\");\n }\n this.stream = stream;\n this.header = header;\n this.length = length;\n this.tag = tag;\n this.sub = sub;\n }\n ASN1.prototype.typeName = function () {\n switch (this.tag.tagClass) {\n case 0: // universal\n switch (this.tag.tagNumber) {\n case 0x00:\n return \"EOC\";\n case 0x01:\n return \"BOOLEAN\";\n case 0x02:\n return \"INTEGER\";\n case 0x03:\n return \"BIT_STRING\";\n case 0x04:\n return \"OCTET_STRING\";\n case 0x05:\n return \"NULL\";\n case 0x06:\n return \"OBJECT_IDENTIFIER\";\n case 0x07:\n return \"ObjectDescriptor\";\n case 0x08:\n return \"EXTERNAL\";\n case 0x09:\n return \"REAL\";\n case 0x0A:\n return \"ENUMERATED\";\n case 0x0B:\n return \"EMBEDDED_PDV\";\n case 0x0C:\n return \"UTF8String\";\n case 0x10:\n return \"SEQUENCE\";\n case 0x11:\n return \"SET\";\n case 0x12:\n return \"NumericString\";\n case 0x13:\n return \"PrintableString\"; // ASCII subset\n case 0x14:\n return \"TeletexString\"; // aka T61String\n case 0x15:\n return \"VideotexString\";\n case 0x16:\n return \"IA5String\"; // ASCII\n case 0x17:\n return \"UTCTime\";\n case 0x18:\n return \"GeneralizedTime\";\n case 0x19:\n return \"GraphicString\";\n case 0x1A:\n return \"VisibleString\"; // ASCII subset\n case 0x1B:\n return \"GeneralString\";\n case 0x1C:\n return \"UniversalString\";\n case 0x1E:\n return \"BMPString\";\n }\n return \"Universal_\" + this.tag.tagNumber.toString();\n case 1:\n return \"Application_\" + this.tag.tagNumber.toString();\n case 2:\n return \"[\" + this.tag.tagNumber.toString() + \"]\"; // Context\n case 3:\n return \"Private_\" + this.tag.tagNumber.toString();\n }\n };\n ASN1.prototype.content = function (maxLength) {\n if (this.tag === undefined) {\n return null;\n }\n if (maxLength === undefined) {\n maxLength = Infinity;\n }\n var content = this.posContent();\n var len = Math.abs(this.length);\n if (!this.tag.isUniversal()) {\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n return this.stream.parseOctetString(content, content + len, maxLength);\n }\n switch (this.tag.tagNumber) {\n case 0x01: // BOOLEAN\n return (this.stream.get(content) === 0) ? \"false\" : \"true\";\n case 0x02: // INTEGER\n return this.stream.parseInteger(content, content + len);\n case 0x03: // BIT_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseBitString(content, content + len, maxLength);\n case 0x04: // OCTET_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseOctetString(content, content + len, maxLength);\n // case 0x05: // NULL\n case 0x06: // OBJECT_IDENTIFIER\n return this.stream.parseOID(content, content + len, maxLength);\n // case 0x07: // ObjectDescriptor\n // case 0x08: // EXTERNAL\n // case 0x09: // REAL\n // case 0x0A: // ENUMERATED\n // case 0x0B: // EMBEDDED_PDV\n case 0x10: // SEQUENCE\n case 0x11: // SET\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n else {\n return \"(no elem)\";\n }\n case 0x0C: // UTF8String\n return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);\n case 0x12: // NumericString\n case 0x13: // PrintableString\n case 0x14: // TeletexString\n case 0x15: // VideotexString\n case 0x16: // IA5String\n // case 0x19: // GraphicString\n case 0x1A: // VisibleString\n // case 0x1B: // GeneralString\n // case 0x1C: // UniversalString\n return stringCut(this.stream.parseStringISO(content, content + len), maxLength);\n case 0x1E: // BMPString\n return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);\n case 0x17: // UTCTime\n case 0x18: // GeneralizedTime\n return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17));\n }\n return null;\n };\n ASN1.prototype.toString = function () {\n return this.typeName() + \"@\" + this.stream.pos + \"[header:\" + this.header + \",length:\" + this.length + \",sub:\" + ((this.sub === null) ? \"null\" : this.sub.length) + \"]\";\n };\n ASN1.prototype.toPrettyString = function (indent) {\n if (indent === undefined) {\n indent = \"\";\n }\n var s = indent + this.typeName() + \" @\" + this.stream.pos;\n if (this.length >= 0) {\n s += \"+\";\n }\n s += this.length;\n if (this.tag.tagConstructed) {\n s += \" (constructed)\";\n }\n else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null)) {\n s += \" (encapsulates)\";\n }\n s += \"\\n\";\n if (this.sub !== null) {\n indent += \" \";\n for (var i = 0, max = this.sub.length; i < max; ++i) {\n s += this.sub[i].toPrettyString(indent);\n }\n }\n return s;\n };\n ASN1.prototype.posStart = function () {\n return this.stream.pos;\n };\n ASN1.prototype.posContent = function () {\n return this.stream.pos + this.header;\n };\n ASN1.prototype.posEnd = function () {\n return this.stream.pos + this.header + Math.abs(this.length);\n };\n ASN1.prototype.toHexString = function () {\n return this.stream.hexDump(this.posStart(), this.posEnd(), true);\n };\n ASN1.decodeLength = function (stream) {\n var buf = stream.get();\n var len = buf & 0x7F;\n if (len == buf) {\n return len;\n }\n // no reason to use Int10, as it would be a huge buffer anyways\n if (len > 6) {\n throw new Error(\"Length over 48 bits not supported at position \" + (stream.pos - 1));\n }\n if (len === 0) {\n return null;\n } // undefined\n buf = 0;\n for (var i = 0; i < len; ++i) {\n buf = (buf * 256) + stream.get();\n }\n return buf;\n };\n /**\n * Retrieve the hexadecimal value (as a string) of the current ASN.1 element\n * @returns {string}\n * @public\n */\n ASN1.prototype.getHexStringValue = function () {\n var hexString = this.toHexString();\n var offset = this.header * 2;\n var length = this.length * 2;\n return hexString.substr(offset, length);\n };\n ASN1.decode = function (str) {\n var stream;\n if (!(str instanceof Stream)) {\n stream = new Stream(str, 0);\n }\n else {\n stream = str;\n }\n var streamStart = new Stream(stream);\n var tag = new ASN1Tag(stream);\n var len = ASN1.decodeLength(stream);\n var start = stream.pos;\n var header = start - streamStart.pos;\n var sub = null;\n var getSub = function () {\n var ret = [];\n if (len !== null) {\n // definite length\n var end = start + len;\n while (stream.pos < end) {\n ret[ret.length] = ASN1.decode(stream);\n }\n if (stream.pos != end) {\n throw new Error(\"Content size is not correct for container starting at offset \" + start);\n }\n }\n else {\n // undefined length\n try {\n for (;;) {\n var s = ASN1.decode(stream);\n if (s.tag.isEOC()) {\n break;\n }\n ret[ret.length] = s;\n }\n len = start - stream.pos; // undefined lengths are represented as negative values\n }\n catch (e) {\n throw new Error(\"Exception while decoding undefined length content: \" + e);\n }\n }\n return ret;\n };\n if (tag.tagConstructed) {\n // must have valid content\n sub = getSub();\n }\n else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) {\n // sometimes BitString and OctetString are used to encapsulate ASN.1\n try {\n if (tag.tagNumber == 0x03) {\n if (stream.get() != 0) {\n throw new Error(\"BIT STRINGs with unused bits cannot encapsulate.\");\n }\n }\n sub = getSub();\n for (var i = 0; i < sub.length; ++i) {\n if (sub[i].tag.isEOC()) {\n throw new Error(\"EOC is not supposed to be actual content.\");\n }\n }\n }\n catch (e) {\n // but silently ignore when they don't\n sub = null;\n }\n }\n if (sub === null) {\n if (len === null) {\n throw new Error(\"We can't skip over an invalid tag with undefined length at offset \" + start);\n }\n stream.pos = start + Math.abs(len);\n }\n return new ASN1(streamStart, header, len, tag, sub);\n };\n return ASN1;\n}());\n\nvar ASN1Tag = /** @class */ (function () {\n function ASN1Tag(stream) {\n var buf = stream.get();\n this.tagClass = buf >> 6;\n this.tagConstructed = ((buf & 0x20) !== 0);\n this.tagNumber = buf & 0x1F;\n if (this.tagNumber == 0x1F) { // long tag\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n do {\n buf = stream.get();\n n.mulAdd(128, buf & 0x7F);\n } while (buf & 0x80);\n this.tagNumber = n.simplify();\n }\n }\n ASN1Tag.prototype.isUniversal = function () {\n return this.tagClass === 0x00;\n };\n ASN1Tag.prototype.isEOC = function () {\n return this.tagClass === 0x00 && this.tagNumber === 0x00;\n };\n return ASN1Tag;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/asn1.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/asn1js/base64.js":
+ /*!**********************************!*\
+ !*** ./lib/lib/asn1js/base64.js ***!
+ \**********************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/asn1js/hex.js":
+ /*!*******************************!*\
+ !*** ./lib/lib/asn1js/hex.js ***!
+ \*******************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/asn1js/int10.js":
+ /*!*********************************!*\
+ !*** ./lib/lib/asn1js/int10.js ***!
+ \*********************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/jsbn/base64.js":
+ /*!********************************!*\
+ !*** ./lib/lib/jsbn/base64.js ***!
+ \********************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"b64toBA\": () => (/* binding */ b64toBA),\n/* harmony export */ \"b64tohex\": () => (/* binding */ b64tohex),\n/* harmony export */ \"hex2b64\": () => (/* binding */ hex2b64)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(h) {\n var i;\n var c;\n var ret = \"\";\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16);\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16);\n ret += b64map.charAt(c << 2);\n }\n else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16);\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad;\n }\n return ret;\n}\n// convert a base64 string to hex\nfunction b64tohex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop);\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop << 2);\n }\n return ret;\n}\n// convert a base64 string to a byte/number array\nfunction b64toBA(s) {\n // piggyback on b64tohex for now, optimize later\n var h = b64tohex(s);\n var i;\n var a = [];\n for (i = 0; 2 * i < h.length; ++i) {\n a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);\n }\n return a;\n}\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/base64.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/jsbn/jsbn.js":
+ /*!******************************!*\
+ !*** ./lib/lib/jsbn/jsbn.js ***!
+ \******************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BigInteger\": () => (/* binding */ BigInteger),\n/* harmony export */ \"intAt\": () => (/* binding */ intAt),\n/* harmony export */ \"nbi\": () => (/* binding */ nbi),\n/* harmony export */ \"nbits\": () => (/* binding */ nbits),\n/* harmony export */ \"nbv\": () => (/* binding */ nbv),\n/* harmony export */ \"parseBigInt\": () => (/* binding */ parseBigInt)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n//#region\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n//#endregion\n// (public) Constructor\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c);\n }\n else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256);\n }\n else {\n this.fromString(a, b);\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b);\n }\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n return this.toRadix(b);\n }\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n // BigInteger.prototype.bitLength = bnBitLength;\n // (public) return the number of bits in \"this\"\n BigInteger.prototype.bitLength = function () {\n if (this.t <= 0) {\n return 0;\n }\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));\n };\n // BigInteger.prototype.mod = bnMod;\n // (public) this mod a\n BigInteger.prototype.mod = function (a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r);\n }\n return r;\n };\n // BigInteger.prototype.modPowInt = bnModPowInt;\n // (public) this^e % m, 0 <= e < 2^32\n BigInteger.prototype.modPowInt = function (e, m) {\n var z;\n if (e < 256 || m.isEven()) {\n z = new Classic(m);\n }\n else {\n z = new Montgomery(m);\n }\n return this.exp(e, z);\n };\n // BigInteger.prototype.clone = bnClone;\n // (public)\n BigInteger.prototype.clone = function () {\n var r = nbi();\n this.copyTo(r);\n return r;\n };\n // BigInteger.prototype.intValue = bnIntValue;\n // (public) return value as integer\n BigInteger.prototype.intValue = function () {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV;\n }\n else if (this.t == 0) {\n return -1;\n }\n }\n else if (this.t == 1) {\n return this[0];\n }\n else if (this.t == 0) {\n return 0;\n }\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n };\n // BigInteger.prototype.byteValue = bnByteValue;\n // (public) return value as byte\n BigInteger.prototype.byteValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24;\n };\n // BigInteger.prototype.shortValue = bnShortValue;\n // (public) return value as short (assumes DB>=16)\n BigInteger.prototype.shortValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16;\n };\n // BigInteger.prototype.signum = bnSigNum;\n // (public) 0 if this == 0, 1 if this > 0\n BigInteger.prototype.signum = function () {\n if (this.s < 0) {\n return -1;\n }\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {\n return 0;\n }\n else {\n return 1;\n }\n };\n // BigInteger.prototype.toByteArray = bnToByteArray;\n // (public) convert to bigendian byte array\n BigInteger.prototype.toByteArray = function () {\n var i = this.t;\n var r = [];\n r[0] = this.s;\n var p = this.DB - (i * this.DB) % 8;\n var d;\n var k = 0;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {\n r[k++] = d | (this.s << (this.DB - p));\n }\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p);\n d |= this[--i] >> (p += this.DB - 8);\n }\n else {\n d = (this[i] >> (p -= 8)) & 0xff;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if ((d & 0x80) != 0) {\n d |= -256;\n }\n if (k == 0 && (this.s & 0x80) != (d & 0x80)) {\n ++k;\n }\n if (k > 0 || d != this.s) {\n r[k++] = d;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.equals = function (a) {\n return (this.compareTo(a) == 0);\n };\n // BigInteger.prototype.min = bnMin;\n BigInteger.prototype.min = function (a) {\n return (this.compareTo(a) < 0) ? this : a;\n };\n // BigInteger.prototype.max = bnMax;\n BigInteger.prototype.max = function (a) {\n return (this.compareTo(a) > 0) ? this : a;\n };\n // BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.and = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_and, r);\n return r;\n };\n // BigInteger.prototype.or = bnOr;\n BigInteger.prototype.or = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_or, r);\n return r;\n };\n // BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.xor = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_xor, r);\n return r;\n };\n // BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.andNot = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_andnot, r);\n return r;\n };\n // BigInteger.prototype.not = bnNot;\n // (public) ~this\n BigInteger.prototype.not = function () {\n var r = nbi();\n for (var i = 0; i < this.t; ++i) {\n r[i] = this.DM & ~this[i];\n }\n r.t = this.t;\n r.s = ~this.s;\n return r;\n };\n // BigInteger.prototype.shiftLeft = bnShiftLeft;\n // (public) this << n\n BigInteger.prototype.shiftLeft = function (n) {\n var r = nbi();\n if (n < 0) {\n this.rShiftTo(-n, r);\n }\n else {\n this.lShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.shiftRight = bnShiftRight;\n // (public) this >> n\n BigInteger.prototype.shiftRight = function (n) {\n var r = nbi();\n if (n < 0) {\n this.lShiftTo(-n, r);\n }\n else {\n this.rShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n // (public) returns index of lowest 1-bit (or -1 if none)\n BigInteger.prototype.getLowestSetBit = function () {\n for (var i = 0; i < this.t; ++i) {\n if (this[i] != 0) {\n return i * this.DB + (0,_util__WEBPACK_IMPORTED_MODULE_0__.lbit)(this[i]);\n }\n }\n if (this.s < 0) {\n return this.t * this.DB;\n }\n return -1;\n };\n // BigInteger.prototype.bitCount = bnBitCount;\n // (public) return number of set bits\n BigInteger.prototype.bitCount = function () {\n var r = 0;\n var x = this.s & this.DM;\n for (var i = 0; i < this.t; ++i) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.cbit)(this[i] ^ x);\n }\n return r;\n };\n // BigInteger.prototype.testBit = bnTestBit;\n // (public) true iff nth bit is set\n BigInteger.prototype.testBit = function (n) {\n var j = Math.floor(n / this.DB);\n if (j >= this.t) {\n return (this.s != 0);\n }\n return ((this[j] & (1 << (n % this.DB))) != 0);\n };\n // BigInteger.prototype.setBit = bnSetBit;\n // (public) this | (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n var j = e.t - 1;\n var w;\n var is1 = true;\n var r2 = nbi();\n var t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1) {\n w = (e[j] >> (i - k1)) & km;\n }\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);\n if (j > 0) {\n w |= e[j - 1] >> (this.DB + i - k1);\n }\n }\n n = k;\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0) {\n z.sqrTo(r, r2);\n }\n else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.modInverse = bnModInverse;\n // (public) 1/this % m (HAC 14.61)\n BigInteger.prototype.modInverse = function (m) {\n var ac = m.isEven();\n if ((this.isEven() && ac) || m.signum() == 0) {\n return BigInteger.ZERO;\n }\n var u = m.clone();\n var v = this.clone();\n var a = nbv(1);\n var b = nbv(0);\n var c = nbv(0);\n var d = nbv(1);\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u);\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a);\n b.subTo(m, b);\n }\n a.rShiftTo(1, a);\n }\n else if (!b.isEven()) {\n b.subTo(m, b);\n }\n b.rShiftTo(1, b);\n }\n while (v.isEven()) {\n v.rShiftTo(1, v);\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c);\n d.subTo(m, d);\n }\n c.rShiftTo(1, c);\n }\n else if (!d.isEven()) {\n d.subTo(m, d);\n }\n d.rShiftTo(1, d);\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u);\n if (ac) {\n a.subTo(c, a);\n }\n b.subTo(d, b);\n }\n else {\n v.subTo(u, v);\n if (ac) {\n c.subTo(a, c);\n }\n d.subTo(b, d);\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO;\n }\n if (d.compareTo(m) >= 0) {\n return d.subtract(m);\n }\n if (d.signum() < 0) {\n d.addTo(m, d);\n }\n else {\n return d;\n }\n if (d.signum() < 0) {\n return d.add(m);\n }\n else {\n return d;\n }\n };\n // BigInteger.prototype.pow = bnPow;\n // (public) this^e\n BigInteger.prototype.pow = function (e) {\n return this.exp(e, new NullExp());\n };\n // BigInteger.prototype.gcd = bnGCD;\n // (public) gcd(this,a) (HAC 14.54)\n BigInteger.prototype.gcd = function (a) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n return x;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n }\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n return y;\n };\n // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n // (public) test primality with certainty >= 1-.5^t\n BigInteger.prototype.isProbablePrime = function (t) {\n var i;\n var x = this.abs();\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i) {\n if (x[0] == lowprimes[i]) {\n return true;\n }\n }\n return false;\n }\n if (x.isEven()) {\n return false;\n }\n i = 1;\n while (i < lowprimes.length) {\n var m = lowprimes[i];\n var j = i + 1;\n while (j < lowprimes.length && m < lplim) {\n m *= lowprimes[j++];\n }\n m = x.modInt(m);\n while (i < j) {\n if (m % lowprimes[i++] == 0) {\n return false;\n }\n }\n }\n return x.millerRabin(t);\n };\n //#endregion PUBLIC\n //#region PROTECTED\n // BigInteger.prototype.copyTo = bnpCopyTo;\n // (protected) copy this to r\n BigInteger.prototype.copyTo = function (r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n r.t = this.t;\n r.s = this.s;\n };\n // BigInteger.prototype.fromInt = bnpFromInt;\n // (protected) set from integer value x, -DV <= x < DV\n BigInteger.prototype.fromInt = function (x) {\n this.t = 1;\n this.s = (x < 0) ? -1 : 0;\n if (x > 0) {\n this[0] = x;\n }\n else if (x < -1) {\n this[0] = x + this.DV;\n }\n else {\n this.t = 0;\n }\n };\n // BigInteger.prototype.fromString = bnpFromString;\n // (protected) set from string and radix\n BigInteger.prototype.fromString = function (s, b) {\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 256) {\n k = 8;\n /* byte array */\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n this.fromRadix(s, b);\n return;\n }\n this.t = 0;\n this.s = 0;\n var i = s.length;\n var mi = false;\n var sh = 0;\n while (--i >= 0) {\n var x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\") {\n mi = true;\n }\n continue;\n }\n mi = false;\n if (sh == 0) {\n this[this.t++] = x;\n }\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = (x >> (this.DB - sh));\n }\n else {\n this[this.t - 1] |= x << sh;\n }\n sh += k;\n if (sh >= this.DB) {\n sh -= this.DB;\n }\n }\n if (k == 8 && ((+s[0]) & 0x80) != 0) {\n this.s = -1;\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;\n }\n }\n this.clamp();\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.clamp = bnpClamp;\n // (protected) clamp off excess high words\n BigInteger.prototype.clamp = function () {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n };\n // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n // (protected) r = this << n*DB\n BigInteger.prototype.dlShiftTo = function (n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r.t = this.t + n;\n r.s = this.s;\n };\n // BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n // (protected) r = this >> n*DB\n BigInteger.prototype.drShiftTo = function (n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n };\n // BigInteger.prototype.lShiftTo = bnpLShiftTo;\n // (protected) r = this << n\n BigInteger.prototype.lShiftTo = function (n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB);\n var c = (this.s << bs) & this.DM;\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n };\n // BigInteger.prototype.rShiftTo = bnpRShiftTo;\n // (protected) r = this >> n\n BigInteger.prototype.rShiftTo = function (n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs;\n }\n r.t = this.t - ds;\n r.clamp();\n };\n // BigInteger.prototype.subTo = bnpSubTo;\n // (protected) r = this - a\n BigInteger.prototype.subTo = function (a, r) {\n var i = 0;\n var c = 0;\n var m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c < -1) {\n r[i++] = this.DV + c;\n }\n else if (c > 0) {\n r[i++] = c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyTo = function (a, r) {\n var x = this.abs();\n var y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n r.s = 0;\n r.clamp();\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.squareTo = bnpSquareTo;\n // (protected) r = this^2, r != this (HAC 14.16)\n BigInteger.prototype.squareTo = function (r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n }\n r.s = 0;\n r.clamp();\n };\n // BigInteger.prototype.divRemTo = bnpDivRemTo;\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n BigInteger.prototype.divRemTo = function (m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) {\n return;\n }\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromInt(0);\n }\n if (r != null) {\n this.copyTo(r);\n }\n return;\n }\n if (r == null) {\n r = nbi();\n }\n var y = nbi();\n var ts = this.s;\n var ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) {\n return;\n }\n var yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt;\n var d2 = (1 << this.F1) / yt;\n var e = 1 << this.F2;\n var i = r.t;\n var j = i - ys;\n var t = (q == null) ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q);\n }\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) {\n r.rShiftTo(nsh, r);\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.invDigit = bnpInvDigit;\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n BigInteger.prototype.invDigit = function () {\n if (this.t < 1) {\n return 0;\n }\n var x = this[0];\n if ((x & 1) == 0) {\n return 0;\n }\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y;\n };\n // BigInteger.prototype.isEven = bnpIsEven;\n // (protected) true iff this is even\n BigInteger.prototype.isEven = function () {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;\n };\n // BigInteger.prototype.exp = bnpExp;\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n BigInteger.prototype.exp = function (e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE;\n }\n var r = nbi();\n var r2 = nbi();\n var g = z.convert(this);\n var i = nbits(e) - 1;\n g.copyTo(r);\n while (--i >= 0) {\n z.sqrTo(r, r2);\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r);\n }\n else {\n var t = r;\n r = r2;\n r2 = t;\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.chunkSize = bnpChunkSize;\n // (protected) return x s.t. r^x < DV\n BigInteger.prototype.chunkSize = function (r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r));\n };\n // BigInteger.prototype.toRadix = bnpToRadix;\n // (protected) convert to radix string\n BigInteger.prototype.toRadix = function (b) {\n if (b == null) {\n b = 10;\n }\n if (this.signum() == 0 || b < 2 || b > 36) {\n return \"0\";\n }\n var cs = this.chunkSize(b);\n var a = Math.pow(b, cs);\n var d = nbv(a);\n var y = nbi();\n var z = nbi();\n var r = \"\";\n this.divRemTo(d, y, z);\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d, y, z);\n }\n return z.intValue().toString(b) + r;\n };\n // BigInteger.prototype.fromRadix = bnpFromRadix;\n // (protected) convert from radix string\n BigInteger.prototype.fromRadix = function (s, b) {\n this.fromInt(0);\n if (b == null) {\n b = 10;\n }\n var cs = this.chunkSize(b);\n var d = Math.pow(b, cs);\n var mi = false;\n var j = 0;\n var w = 0;\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\" && this.signum() == 0) {\n mi = true;\n }\n continue;\n }\n w = b * w + x;\n if (++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w, 0);\n j = 0;\n w = 0;\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j));\n this.dAddOffset(w, 0);\n }\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.fromNumber = bnpFromNumber;\n // (protected) alternate constructor\n BigInteger.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n } // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0);\n if (this.bitLength() > a) {\n this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);\n }\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n // (protected) r = this op a (bitwise)\n BigInteger.prototype.bitwiseTo = function (a, op, r) {\n var i;\n var f;\n var m = Math.min(a.t, this.t);\n for (i = 0; i < m; ++i) {\n r[i] = op(this[i], a[i]);\n }\n if (a.t < this.t) {\n f = a.s & this.DM;\n for (i = m; i < this.t; ++i) {\n r[i] = op(this[i], f);\n }\n r.t = this.t;\n }\n else {\n f = this.s & this.DM;\n for (i = m; i < a.t; ++i) {\n r[i] = op(f, a[i]);\n }\n r.t = a.t;\n }\n r.s = op(this.s, a.s);\n r.clamp();\n };\n // BigInteger.prototype.changeBit = bnpChangeBit;\n // (protected) this op (1<>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c > 0) {\n r[i++] = c;\n }\n else if (c < -1) {\n r[i++] = this.DV + c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.dMultiply = bnpDMultiply;\n // (protected) this *= n, this >= 0, 1 < n < DV\n BigInteger.prototype.dMultiply = function (n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n // BigInteger.prototype.dAddOffset = bnpDAddOffset;\n // (protected) this += n << w words, this >= 0\n BigInteger.prototype.dAddOffset = function (n, w) {\n if (n == 0) {\n return;\n }\n while (this.t <= w) {\n this[this.t++] = 0;\n }\n this[w] += n;\n while (this[w] >= this.DV) {\n this[w] -= this.DV;\n if (++w >= this.t) {\n this[this.t++] = 0;\n }\n ++this[w];\n }\n };\n // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyLowerTo = function (a, n, r) {\n var i = Math.min(this.t + a.t, n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while (i > 0) {\n r[--i] = 0;\n }\n for (var j = r.t - this.t; i < j; ++i) {\n r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);\n }\n for (var j = Math.min(a.t, n); i < j; ++i) {\n this.am(0, a[i], r, i, 0, n - i);\n }\n r.clamp();\n };\n // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyUpperTo = function (a, n, r) {\n --n;\n var i = r.t = this.t + a.t - n;\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = Math.max(n - this.t, 0); i < a.t; ++i) {\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);\n }\n r.clamp();\n r.drShiftTo(1, r);\n };\n // BigInteger.prototype.modInt = bnpModInt;\n // (protected) this % n, n < 2^26\n BigInteger.prototype.modInt = function (n) {\n if (n <= 0) {\n return 0;\n }\n var d = this.DV % n;\n var r = (this.s < 0) ? n - 1 : 0;\n if (this.t > 0) {\n if (d == 0) {\n r = this[0] % n;\n }\n else {\n for (var i = this.t - 1; i >= 0; --i) {\n r = (d * r + this[i]) % n;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.millerRabin = bnpMillerRabin;\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n BigInteger.prototype.millerRabin = function (t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if (k <= 0) {\n return false;\n }\n var r = n1.shiftRight(k);\n t = (t + 1) >> 1;\n if (t > lowprimes.length) {\n t = lowprimes.length;\n }\n var a = nbi();\n for (var i = 0; i < t; ++i) {\n // Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\n var y = a.modPow(r, this);\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this);\n if (y.compareTo(BigInteger.ONE) == 0) {\n return false;\n }\n }\n if (y.compareTo(n1) != 0) {\n return false;\n }\n }\n }\n return true;\n };\n // BigInteger.prototype.square = bnSquare;\n // (public) this^2\n BigInteger.prototype.square = function () {\n var r = nbi();\n this.squareTo(r);\n return r;\n };\n //#region ASYNC\n // Public API method\n BigInteger.prototype.gcda = function (a, callback) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n callback(x);\n return;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.\n var gcda1 = function () {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n if (!(x.signum() > 0)) {\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n setTimeout(function () { callback(y); }, 0); // escape\n }\n else {\n setTimeout(gcda1, 0);\n }\n };\n setTimeout(gcda1, 10);\n };\n // (protected) alternate constructor\n BigInteger.prototype.fromNumberAsync = function (a, b, c, callback) {\n if (\"number\" == typeof b) {\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n }\n var bnp_1 = this;\n var bnpfn1_1 = function () {\n bnp_1.dAddOffset(2, 0);\n if (bnp_1.bitLength() > a) {\n bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1);\n }\n if (bnp_1.isProbablePrime(b)) {\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(bnpfn1_1, 0);\n }\n };\n setTimeout(bnpfn1_1, 0);\n }\n }\n else {\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n return BigInteger;\n}());\n\n//#region REDUCERS\n//#region NullExp\nvar NullExp = /** @class */ (function () {\n function NullExp() {\n }\n // NullExp.prototype.convert = nNop;\n NullExp.prototype.convert = function (x) {\n return x;\n };\n // NullExp.prototype.revert = nNop;\n NullExp.prototype.revert = function (x) {\n return x;\n };\n // NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n };\n // NullExp.prototype.sqrTo = nSqrTo;\n NullExp.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n };\n return NullExp;\n}());\n// Modular reduction using \"classic\" algorithm\nvar Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m;\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m);\n }\n else {\n return x;\n }\n };\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x;\n };\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x);\n };\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Classic;\n}());\n//#endregion\n//#region Montgomery\n// Montgomery reduction\nvar Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r);\n }\n return r;\n };\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n };\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Montgomery;\n}());\n//#endregion Montgomery\n//#region Barrett\n// Barrett modular reduction\nvar Barrett = /** @class */ (function () {\n function Barrett(m) {\n this.m = m;\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);\n this.mu = this.r2.divide(m);\n }\n // Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.convert = function (x) {\n if (x.s < 0 || x.t > 2 * this.m.t) {\n return x.mod(this.m);\n }\n else if (x.compareTo(this.m) < 0) {\n return x;\n }\n else {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n };\n // Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.revert = function (x) {\n return x;\n };\n // Barrett.prototype.reduce = barrettReduce;\n // x = x mod m (HAC 14.42)\n Barrett.prototype.reduce = function (x) {\n x.drShiftTo(this.m.t - 1, this.r2);\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1;\n x.clamp();\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n while (x.compareTo(this.r2) < 0) {\n x.dAddOffset(1, this.m.t + 1);\n }\n x.subTo(this.r2, x);\n while (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Barrett.prototype.mulTo = barrettMulTo;\n // r = x*y mod m; x,y != r\n Barrett.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Barrett.prototype.sqrTo = barrettSqrTo;\n // r = x^2 mod m; x != r\n Barrett.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Barrett;\n}());\n//#endregion\n//#endregion REDUCERS\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\nfunction parseBigInt(str, r) {\n return new BigInteger(str, r);\n}\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\nvar inBrowser = typeof navigator !== \"undefined\";\nif (inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n BigInteger.prototype.am = function am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff;\n var xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n };\n dbits = 30;\n}\nelse if (inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n BigInteger.prototype.am = function am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n };\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n BigInteger.prototype.am = function am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff;\n var xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n };\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n// Digit conversions\nvar BI_RC = [];\nvar rr;\nvar vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c == null) ? -1 : c;\n}\n// return bigint initialized to value\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n}\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1;\n var t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/jsbn.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/jsbn/prng4.js":
+ /*!*******************************!*\
+ !*** ./lib/lib/jsbn/prng4.js ***!
+ \*******************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Arcfour\": () => (/* binding */ Arcfour),\n/* harmony export */ \"prng_newstate\": () => (/* binding */ prng_newstate),\n/* harmony export */ \"rng_psize\": () => (/* binding */ rng_psize)\n/* harmony export */ });\n// prng4.js - uses Arcfour as a PRNG\nvar Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = [];\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i;\n var j;\n var t;\n for (i = 0; i < 256; ++i) {\n this.S[i] = i;\n }\n j = 0;\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n };\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n };\n return Arcfour;\n}());\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/prng4.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/jsbn/rng.js":
+ /*!*****************************!*\
+ !*** ./lib/lib/jsbn/rng.js ***!
+ \*****************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SecureRandom\": () => (/* binding */ SecureRandom)\n/* harmony export */ });\n/* harmony import */ var _prng4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prng4 */ \"./lib/lib/jsbn/prng4.js\");\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\nvar rng_state;\nvar rng_pool = null;\nvar rng_pptr;\n// Initialize the pool with junk if needed.\nif (rng_pool == null) {\n rng_pool = [];\n rng_pptr = 0;\n var t = void 0;\n if (typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256);\n window.crypto.getRandomValues(z);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255;\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var count = 0;\n var onMouseMoveListener_1 = function (ev) {\n count = count || 0;\n if (count >= 256 || rng_pptr >= _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n return;\n }\n try {\n var mouseCoordinates = ev.x + ev.y;\n rng_pool[rng_pptr++] = mouseCoordinates & 255;\n count += 1;\n }\n catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n };\n if (typeof window !== 'undefined') {\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n }\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_state = (0,_prng4__WEBPACK_IMPORTED_MODULE_0__.prng_newstate)();\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n var random = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = random & 255;\n }\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\nvar SecureRandom = /** @class */ (function () {\n function SecureRandom() {\n }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte();\n }\n };\n return SecureRandom;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rng.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/jsbn/rsa.js":
+ /*!*****************************!*\
+ !*** ./lib/lib/jsbn/rsa.js ***!
+ \*****************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RSAKey\": () => (/* binding */ RSAKey)\n/* harmony export */ });\n/* harmony import */ var _jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _rng__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng */ \"./lib/lib/jsbn/rng.js\");\n// Depends on jsbn.js and rng.js\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n// convert a (hex) string to a bignum object\n\n\n// function linebrk(s,n) {\n// var ret = \"\";\n// var i = 0;\n// while(i + n < s.length) {\n// ret += s.substring(i,i+n) + \"\\n\";\n// i += n;\n// }\n// return ret + s.substring(i,s.length);\n// }\n// function byte2Hex(b) {\n// if(b < 0x10)\n// return \"0\" + b.toString(16);\n// else\n// return b.toString(16);\n// }\nfunction pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\");\n return null;\n }\n var len = n - s.length - 6;\n var filler = \"\";\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\";\n }\n var m = \"0001\" + filler + \"00\" + s;\n return (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(m, 16);\n}\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s, n) {\n if (n < s.length + 11) { // TODO: fix for utf-8\n console.error(\"Message too long for RSA\");\n return null;\n }\n var ba = [];\n var i = s.length - 1;\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if (c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if ((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var x = [];\n while (n > 2) { // random non-zero pad\n x[0] = 0;\n while (x[0] == 0) {\n rng.nextBytes(x);\n }\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(ba);\n}\n// \"empty\" RSA key constructor\nvar RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n);\n };\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n);\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p);\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n };\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n }\n else {\n console.error(\"Invalid RSA public key\");\n }\n };\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var maxLength = (this.n.bitLength() + 7) >> 3;\n var m = pkcs1pad2(text, maxLength);\n if (m == null) {\n return null;\n }\n var c = this.doPublic(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n var length = h.length;\n // fix zero before result\n for (var i = 0; i < maxLength * 2 - length; i++) {\n h = \"0\" + h;\n }\n return h;\n };\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, D) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.setPrivateEx = RSASetPrivateEx;\n // Set the private key fields N, e, d and CRT params from hex strings\n RSAKey.prototype.setPrivateEx = function (N, E, D, P, Q, DP, DQ, C) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n this.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(P, 16);\n this.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(Q, 16);\n this.dmp1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DP, 16);\n this.dmq1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DQ, 16);\n this.coeff = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(C, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.generate = RSAGenerate;\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generate = function (B, E) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n for (;;) {\n for (;;) {\n this.p = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(B - qs, 1, rng);\n if (this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {\n break;\n }\n }\n for (;;) {\n this.q = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(qs, 1, rng);\n if (this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {\n break;\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p;\n this.p = this.q;\n this.q = t;\n }\n var p1 = this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q);\n this.d = ee.modInverse(phi);\n this.dmp1 = this.d.mod(p1);\n this.dmq1 = this.d.mod(q1);\n this.coeff = this.q.modInverse(this.p);\n break;\n }\n }\n };\n // RSAKey.prototype.decrypt = RSADecrypt;\n // Return the PKCS#1 RSA decryption of \"ctext\".\n // \"ctext\" is an even-length hex string and the output is a plain string.\n RSAKey.prototype.decrypt = function (ctext) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(ctext, 16);\n var m = this.doPrivate(c);\n if (m == null) {\n return null;\n }\n return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);\n };\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generateAsync = function (B, E, callback) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n var rsa = this;\n // These functions have non-descript names because they were originally for(;;) loops.\n // I don't know about cryptography to give them better names than loop1-4.\n var loop1 = function () {\n var loop4 = function () {\n if (rsa.p.compareTo(rsa.q) <= 0) {\n var t = rsa.p;\n rsa.p = rsa.q;\n rsa.q = t;\n }\n var p1 = rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n rsa.n = rsa.p.multiply(rsa.q);\n rsa.d = ee.modInverse(phi);\n rsa.dmp1 = rsa.d.mod(p1);\n rsa.dmq1 = rsa.d.mod(q1);\n rsa.coeff = rsa.q.modInverse(rsa.p);\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(loop1, 0);\n }\n };\n var loop3 = function () {\n rsa.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.q.fromNumberAsync(qs, 1, rng, function () {\n rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.q.isProbablePrime(10)) {\n setTimeout(loop4, 0);\n }\n else {\n setTimeout(loop3, 0);\n }\n });\n });\n };\n var loop2 = function () {\n rsa.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.p.fromNumberAsync(B - qs, 1, rng, function () {\n rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.p.isProbablePrime(10)) {\n setTimeout(loop3, 0);\n }\n else {\n setTimeout(loop2, 0);\n }\n });\n });\n };\n setTimeout(loop2, 0);\n };\n setTimeout(loop1, 0);\n };\n RSAKey.prototype.sign = function (text, digestMethod, digestName) {\n var header = getDigestHeader(digestName);\n var digest = header + digestMethod(text).toString();\n var m = pkcs1pad1(digest, this.n.bitLength() / 4);\n if (m == null) {\n return null;\n }\n var c = this.doPrivate(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n if ((h.length & 1) == 0) {\n return h;\n }\n else {\n return \"0\" + h;\n }\n };\n RSAKey.prototype.verify = function (text, signature, digestMethod) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(signature, 16);\n var m = this.doPublic(c);\n if (m == null) {\n return null;\n }\n var unpadded = m.toString(16).replace(/^1f+00/, \"\");\n var digest = removeDigestHeader(unpadded);\n return digest == digestMethod(text).toString();\n };\n return RSAKey;\n}());\n\n// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\nfunction pkcs1unpad2(d, n) {\n var b = d.toByteArray();\n var i = 0;\n while (i < b.length && b[i] == 0) {\n ++i;\n }\n if (b.length - i != n - 1 || b[i] != 2) {\n return null;\n }\n ++i;\n while (b[i] != 0) {\n if (++i >= b.length) {\n return null;\n }\n }\n var ret = \"\";\n while (++i < b.length) {\n var c = b[i] & 255;\n if (c < 128) { // utf-8 decode\n ret += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63));\n ++i;\n }\n else {\n ret += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63));\n i += 2;\n }\n }\n return ret;\n}\n// https://tools.ietf.org/html/rfc3447#page-43\nvar DIGEST_HEADERS = {\n md2: \"3020300c06082a864886f70d020205000410\",\n md5: \"3020300c06082a864886f70d020505000410\",\n sha1: \"3021300906052b0e03021a05000414\",\n sha224: \"302d300d06096086480165030402040500041c\",\n sha256: \"3031300d060960864801650304020105000420\",\n sha384: \"3041300d060960864801650304020205000430\",\n sha512: \"3051300d060960864801650304020305000440\",\n ripemd160: \"3021300906052b2403020105000414\"\n};\nfunction getDigestHeader(name) {\n return DIGEST_HEADERS[name] || \"\";\n}\nfunction removeDigestHeader(str) {\n for (var name_1 in DIGEST_HEADERS) {\n if (DIGEST_HEADERS.hasOwnProperty(name_1)) {\n var header = DIGEST_HEADERS[name_1];\n var len = header.length;\n if (str.substr(0, len) == header) {\n return str.substr(len);\n }\n }\n }\n return str;\n}\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n// function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n// }\n// public\n// RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rsa.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/jsbn/util.js":
+ /*!******************************!*\
+ !*** ./lib/lib/jsbn/util.js ***!
+ \******************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cbit\": () => (/* binding */ cbit),\n/* harmony export */ \"int2char\": () => (/* binding */ int2char),\n/* harmony export */ \"lbit\": () => (/* binding */ lbit),\n/* harmony export */ \"op_and\": () => (/* binding */ op_and),\n/* harmony export */ \"op_andnot\": () => (/* binding */ op_andnot),\n/* harmony export */ \"op_or\": () => (/* binding */ op_or),\n/* harmony export */ \"op_xor\": () => (/* binding */ op_xor)\n/* harmony export */ });\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n//#region BIT_OPERATIONS\n// (public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\n// (public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) {\n return -1;\n }\n var r = 0;\n if ((x & 0xffff) == 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) == 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) == 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) == 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) == 0) {\n ++r;\n }\n return r;\n}\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n//#endregion BIT_OPERATIONS\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/util.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/jsrsasign/asn1-1.0.js":
+ /*!***************************************!*\
+ !*** ./lib/lib/jsrsasign/asn1-1.0.js ***!
+ \***************************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license MIT License\n */\n/**\n * kjur's class library name space\n * \n * This name space provides following name spaces:\n *
\n * - {@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder
\n * - {@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL
\n * - {@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities
\n *
\n *
\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n * \n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n *
PROVIDING ASN.1 PRIMITIVES
\n * Here are ASN.1 DER primitive classes.\n * \n * - 0x01 {@link KJUR.asn1.DERBoolean}
\n * - 0x02 {@link KJUR.asn1.DERInteger}
\n * - 0x03 {@link KJUR.asn1.DERBitString}
\n * - 0x04 {@link KJUR.asn1.DEROctetString}
\n * - 0x05 {@link KJUR.asn1.DERNull}
\n * - 0x06 {@link KJUR.asn1.DERObjectIdentifier}
\n * - 0x0a {@link KJUR.asn1.DEREnumerated}
\n * - 0x0c {@link KJUR.asn1.DERUTF8String}
\n * - 0x12 {@link KJUR.asn1.DERNumericString}
\n * - 0x13 {@link KJUR.asn1.DERPrintableString}
\n * - 0x14 {@link KJUR.asn1.DERTeletexString}
\n * - 0x16 {@link KJUR.asn1.DERIA5String}
\n * - 0x17 {@link KJUR.asn1.DERUTCTime}
\n * - 0x18 {@link KJUR.asn1.DERGeneralizedTime}
\n * - 0x30 {@link KJUR.asn1.DERSequence}
\n * - 0x31 {@link KJUR.asn1.DERSet}
\n *
\n * OTHER ASN.1 CLASSES
\n * \n * - {@link KJUR.asn1.ASN1Object}
\n * - {@link KJUR.asn1.DERAbstractString}
\n * - {@link KJUR.asn1.DERAbstractTime}
\n * - {@link KJUR.asn1.DERAbstractStructured}
\n * - {@link KJUR.asn1.DERTaggedObject}
\n *
\n * SUB NAME SPACES
\n * \n * - {@link KJUR.asn1.cades} - CAdES long term signature format
\n * - {@link KJUR.asn1.cms} - Cryptographic Message Syntax
\n * - {@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)
\n * - {@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format
\n * - {@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL
\n *
\n * \n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n }\n var biMask = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(hMask, 16);\n var biNeg = biMask.xor(bigIntegerValue).add(_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n h = biNeg.toString(16).replace(/^-/, '');\n }\n return h;\n };\n /**\n * get PEM string from hexadecimal data and header string\n * @name getPEMStringFromHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} dataHex hexadecimal string of PEM body\n * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')\n * @return {String} PEM formatted string of input data\n * @description\n * This method converts a hexadecimal string to a PEM string with\n * a specified header. Its line break will be CRLF(\"\\r\\n\").\n * @example\n * var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');\n * // value of pem will be:\n * -----BEGIN PRIVATE KEY-----\n * YWFh\n * -----END PRIVATE KEY-----\n */\n this.getPEMStringFromHex = function (dataHex, pemHeader) {\n return hextopem(dataHex, pemHeader);\n };\n /**\n * generate ASN1Object specifed by JSON parameters\n * @name newObject\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return {KJUR.asn1.ASN1Object} generated object\n * @since asn1 1.0.3\n * @description\n * generate any ASN1Object specified by JSON param\n * including ASN.1 primitive or structured.\n * Generally 'param' can be described as follows:\n * \n * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n *
\n * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n * \n * - 'bool' - DERBoolean
\n * - 'int' - DERInteger
\n * - 'bitstr' - DERBitString
\n * - 'octstr' - DEROctetString
\n * - 'null' - DERNull
\n * - 'oid' - DERObjectIdentifier
\n * - 'enum' - DEREnumerated
\n * - 'utf8str' - DERUTF8String
\n * - 'numstr' - DERNumericString
\n * - 'prnstr' - DERPrintableString
\n * - 'telstr' - DERTeletexString
\n * - 'ia5str' - DERIA5String
\n * - 'utctime' - DERUTCTime
\n * - 'gentime' - DERGeneralizedTime
\n * - 'seq' - DERSequence
\n * - 'set' - DERSet
\n * - 'tag' - DERTaggedObject
\n *
\n * @example\n * newObject({'prnstr': 'aaa'});\n * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})\n * // ASN.1 Tagged Object\n * newObject({'tag': {'tag': 'a1',\n * 'explicit': true,\n * 'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});\n * // more simple representation of ASN.1 Tagged Object\n * newObject({'tag': ['a1',\n * true,\n * {'seq': [\n * {'int': 3},\n * {'prnstr': 'aaa'}]}\n * ]});\n */\n this.newObject = function (param) {\n var _KJUR = KJUR, _KJUR_asn1 = _KJUR.asn1, _DERBoolean = _KJUR_asn1.DERBoolean, _DERInteger = _KJUR_asn1.DERInteger, _DERBitString = _KJUR_asn1.DERBitString, _DEROctetString = _KJUR_asn1.DEROctetString, _DERNull = _KJUR_asn1.DERNull, _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier, _DEREnumerated = _KJUR_asn1.DEREnumerated, _DERUTF8String = _KJUR_asn1.DERUTF8String, _DERNumericString = _KJUR_asn1.DERNumericString, _DERPrintableString = _KJUR_asn1.DERPrintableString, _DERTeletexString = _KJUR_asn1.DERTeletexString, _DERIA5String = _KJUR_asn1.DERIA5String, _DERUTCTime = _KJUR_asn1.DERUTCTime, _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime, _DERSequence = _KJUR_asn1.DERSequence, _DERSet = _KJUR_asn1.DERSet, _DERTaggedObject = _KJUR_asn1.DERTaggedObject, _newObject = _KJUR_asn1.ASN1Util.newObject;\n var keys = Object.keys(param);\n if (keys.length != 1)\n throw \"key of param shall be only one.\";\n var key = keys[0];\n if (\":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\":\" + key + \":\") == -1)\n throw \"undefined key: \" + key;\n if (key == \"bool\")\n return new _DERBoolean(param[key]);\n if (key == \"int\")\n return new _DERInteger(param[key]);\n if (key == \"bitstr\")\n return new _DERBitString(param[key]);\n if (key == \"octstr\")\n return new _DEROctetString(param[key]);\n if (key == \"null\")\n return new _DERNull(param[key]);\n if (key == \"oid\")\n return new _DERObjectIdentifier(param[key]);\n if (key == \"enum\")\n return new _DEREnumerated(param[key]);\n if (key == \"utf8str\")\n return new _DERUTF8String(param[key]);\n if (key == \"numstr\")\n return new _DERNumericString(param[key]);\n if (key == \"prnstr\")\n return new _DERPrintableString(param[key]);\n if (key == \"telstr\")\n return new _DERTeletexString(param[key]);\n if (key == \"ia5str\")\n return new _DERIA5String(param[key]);\n if (key == \"utctime\")\n return new _DERUTCTime(param[key]);\n if (key == \"gentime\")\n return new _DERGeneralizedTime(param[key]);\n if (key == \"seq\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSequence({ 'array': a });\n }\n if (key == \"set\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSet({ 'array': a });\n }\n if (key == \"tag\") {\n var tagParam = param[key];\n if (Object.prototype.toString.call(tagParam) === '[object Array]' &&\n tagParam.length == 3) {\n var obj = _newObject(tagParam[2]);\n return new _DERTaggedObject({ tag: tagParam[0],\n explicit: tagParam[1],\n obj: obj });\n }\n else {\n var newParam = {};\n if (tagParam.explicit !== undefined)\n newParam.explicit = tagParam.explicit;\n if (tagParam.tag !== undefined)\n newParam.tag = tagParam.tag;\n if (tagParam.obj === undefined)\n throw \"obj shall be specified for 'tag'.\";\n newParam.obj = _newObject(tagParam.obj);\n return new _DERTaggedObject(newParam);\n }\n }\n };\n /**\n * get encoded hexadecimal string of ASN1Object specifed by JSON parameters\n * @name jsonToASN1HEX\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return hexadecimal string of ASN1Object\n * @since asn1 1.0.4\n * @description\n * As for ASN.1 object representation of JSON object,\n * please see {@link newObject}.\n * @example\n * jsonToASN1HEX({'prnstr': 'aaa'});\n */\n this.jsonToASN1HEX = function (param) {\n var asn1Obj = this.newObject(param);\n return asn1Obj.getEncodedHex();\n };\n};\n/**\n * get dot noted oid number string from hexadecimal value of OID\n * @name oidHexToInt\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} hex hexadecimal value of object identifier\n * @return {String} dot noted string of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from hexadecimal string representation of\n * ASN.1 value of object identifier to oid number string.\n * @example\n * KJUR.asn1.ASN1Util.oidHexToInt('550406') → \"2.5.4.6\"\n */\nKJUR.asn1.ASN1Util.oidHexToInt = function (hex) {\n var s = \"\";\n var i01 = parseInt(hex.substr(0, 2), 16);\n var i0 = Math.floor(i01 / 40);\n var i1 = i01 % 40;\n var s = i0 + \".\" + i1;\n var binbuf = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n var value = parseInt(hex.substr(i, 2), 16);\n var bin = (\"00000000\" + value.toString(2)).slice(-8);\n binbuf = binbuf + bin.substr(1, 7);\n if (bin.substr(0, 1) == \"0\") {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(binbuf, 2);\n s = s + \".\" + bi.toString(10);\n binbuf = \"\";\n }\n }\n ;\n return s;\n};\n/**\n * get hexadecimal value of object identifier from dot noted oid value\n * @name oidIntToHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} oidString dot noted string of object identifier\n * @return {String} hexadecimal value of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from object identifier value string.\n * to hexadecimal string representation of it.\n * @example\n * KJUR.asn1.ASN1Util.oidIntToHex(\"2.5.4.6\") → \"550406\"\n */\nKJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n return h;\n};\n// ********************************************************************\n// Abstract ASN.1 Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * base class for ASN.1 DER encoder object\n * @name KJUR.asn1.ASN1Object\n * @class base class for ASN.1 DER encoder object\n * @property {Boolean} isModified flag whether internal data was changed\n * @property {String} hTLV hexadecimal string of ASN.1 TLV\n * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)\n * @property {String} hL hexadecimal string of ASN.1 TLV length(L)\n * @property {String} hV hexadecimal string of ASN.1 TLV value(V)\n * @description\n */\nKJUR.asn1.ASN1Object = function () {\n var isModified = true;\n var hTLV = null;\n var hT = '00';\n var hL = '00';\n var hV = '';\n /**\n * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)\n * @name getLengthHexFromValue\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV length(L)\n */\n this.getLengthHexFromValue = function () {\n if (typeof this.hV == \"undefined\" || this.hV == null) {\n throw \"this.hV is null or undefined.\";\n }\n if (this.hV.length % 2 == 1) {\n throw \"value hex must be even length: n=\" + hV.length + \",v=\" + this.hV;\n }\n var n = this.hV.length / 2;\n var hN = n.toString(16);\n if (hN.length % 2 == 1) {\n hN = \"0\" + hN;\n }\n if (n < 128) {\n return hN;\n }\n else {\n var hNlen = hN.length / 2;\n if (hNlen > 15) {\n throw \"ASN.1 length too long to represent by 8x: n = \" + n.toString(16);\n }\n var head = 128 + hNlen;\n return head.toString(16) + hN;\n }\n };\n /**\n * get hexadecimal string of ASN.1 TLV bytes\n * @name getEncodedHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV\n */\n this.getEncodedHex = function () {\n if (this.hTLV == null || this.isModified) {\n this.hV = this.getFreshValueHex();\n this.hL = this.getLengthHexFromValue();\n this.hTLV = this.hT + this.hL + this.hV;\n this.isModified = false;\n //alert(\"first time: \" + this.hTLV);\n }\n return this.hTLV;\n };\n /**\n * get hexadecimal string of ASN.1 TLV value(V) bytes\n * @name getValueHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes\n */\n this.getValueHex = function () {\n this.getEncodedHex();\n return this.hV;\n };\n this.getFreshValueHex = function () {\n return '';\n };\n};\n// == BEGIN DERAbstractString ================================================\n/**\n * base class for ASN.1 DER string classes\n * @name KJUR.asn1.DERAbstractString\n * @class base class for ASN.1 DER string classes\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @property {String} s internal string of value\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - str - specify initial ASN.1 value(V) by a string
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERAbstractString = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var s = null;\n var hV = null;\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @return {String} string value of this string object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newS value by a string to set\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(this.s);\n };\n /**\n * set value by a hexadecimal string\n * @name setStringHex\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newHexString value by a hexadecimal string to set\n */\n this.setStringHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\") {\n this.setString(params);\n }\n else if (typeof params['str'] != \"undefined\") {\n this.setString(params['str']);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setStringHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);\n// == END DERAbstractString ================================================\n// == BEGIN DERAbstractTime ==================================================\n/**\n * base class for ASN.1 DER Generalized/UTCTime class\n * @name KJUR.asn1.DERAbstractTime\n * @class base class for ASN.1 DER Generalized/UTCTime class\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractTime = function (params) {\n KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);\n var s = null;\n var date = null;\n // --- PRIVATE METHODS --------------------\n this.localDateToUTC = function (d) {\n utc = d.getTime() + (d.getTimezoneOffset() * 60000);\n var utcDate = new Date(utc);\n return utcDate;\n };\n /*\n * format date string by Data object\n * @name formatDate\n * @memberOf KJUR.asn1.AbstractTime;\n * @param {Date} dateObject\n * @param {string} type 'utc' or 'gen'\n * @param {boolean} withMillis flag for with millisections or not\n * @description\n * 'withMillis' flag is supported from asn1 1.0.6.\n */\n this.formatDate = function (dateObject, type, withMillis) {\n var pad = this.zeroPadding;\n var d = this.localDateToUTC(dateObject);\n var year = String(d.getFullYear());\n if (type == 'utc')\n year = year.substr(2, 2);\n var month = pad(String(d.getMonth() + 1), 2);\n var day = pad(String(d.getDate()), 2);\n var hour = pad(String(d.getHours()), 2);\n var min = pad(String(d.getMinutes()), 2);\n var sec = pad(String(d.getSeconds()), 2);\n var s = year + month + day + hour + min + sec;\n if (withMillis === true) {\n var millis = d.getMilliseconds();\n if (millis != 0) {\n var sMillis = pad(String(millis), 3);\n sMillis = sMillis.replace(/[0]+$/, \"\");\n s = s + \".\" + sMillis;\n }\n }\n return s + \"Z\";\n };\n this.zeroPadding = function (s, len) {\n if (s.length >= len)\n return s;\n return new Array(len - s.length + 1).join('0') + s;\n };\n // --- PUBLIC METHODS --------------------\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @return {String} string value of this time object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {String} newS value by a string to set such like \"130430235959Z\"\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(newS);\n };\n /**\n * set value by a Date object\n * @name setByDateValue\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {Integer} year year of date (ex. 2013)\n * @param {Integer} month month of date between 1 and 12 (ex. 12)\n * @param {Integer} day day of month\n * @param {Integer} hour hours of date\n * @param {Integer} min minutes of date\n * @param {Integer} sec seconds of date\n */\n this.setByDateValue = function (year, month, day, hour, min, sec) {\n var dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));\n this.setByDate(dateObject);\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);\n// == END DERAbstractTime ==================================================\n// == BEGIN DERAbstractStructured ============================================\n/**\n * base class for ASN.1 DER structured class\n * @name KJUR.asn1.DERAbstractStructured\n * @class base class for ASN.1 DER structured class\n * @property {Array} asn1Array internal array of ASN1Object\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractStructured = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var asn1Array = null;\n /**\n * set value by array of ASN1Object\n * @name setByASN1ObjectArray\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {array} asn1ObjectArray array of ASN1Object to set\n */\n this.setByASN1ObjectArray = function (asn1ObjectArray) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array = asn1ObjectArray;\n };\n /**\n * append an ASN1Object to internal array\n * @name appendASN1Object\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {ASN1Object} asn1Object to add\n */\n this.appendASN1Object = function (asn1Object) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array.push(asn1Object);\n };\n this.asn1Array = new Array();\n if (typeof params != \"undefined\") {\n if (typeof params['array'] != \"undefined\") {\n this.asn1Array = params['array'];\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);\n// ********************************************************************\n// ASN.1 Object Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * class for ASN.1 DER Boolean\n * @name KJUR.asn1.DERBoolean\n * @class class for ASN.1 DER Boolean\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERBoolean = function () {\n KJUR.asn1.DERBoolean.superclass.constructor.call(this);\n this.hT = \"01\";\n this.hTLV = \"0101ff\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Integer\n * @name KJUR.asn1.DERInteger\n * @class class for ASN.1 DER Integer\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - int - specify initial ASN.1 value(V) by integer value
\n * - bigint - specify initial ASN.1 value(V) by BigInteger object
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERInteger = function (params) {\n KJUR.asn1.DERInteger.superclass.constructor.call(this);\n this.hT = \"02\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DERInteger\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n * @example\n * new KJUR.asn1.DERInteger(123);\n * new KJUR.asn1.DERInteger({'int': 123});\n * new KJUR.asn1.DERInteger({'hex': '1fad'});\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['bigint'] != \"undefined\") {\n this.setByBigInteger(params['bigint']);\n }\n else if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER encoded BitString primitive\n * @name KJUR.asn1.DERBitString\n * @class class for ASN.1 DER encoded BitString primitive\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - bin - specify binary string (ex. '10111')
\n * - array - specify array of boolean (ex. [true,false,true,true])
\n * - hex - specify hexadecimal string of ASN.1 value(V) including unused bits
\n * - obj - specify {@link KJUR.asn1.ASN1Util.newObject}\n * argument for \"BitString encapsulates\" structure.
\n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: 'obj' parameter have been supported since\n * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).
\n * @example\n * // default constructor\n * o = new KJUR.asn1.DERBitString();\n * // initialize with binary string\n * o = new KJUR.asn1.DERBitString({bin: \"1011\"});\n * // initialize with boolean array\n * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});\n * // initialize with hexadecimal string (04 is unused bits)\n * o = new KJUR.asn1.DEROctetString({hex: \"04bac0\"});\n * // initialize with ASN1Util.newObject argument for encapsulated\n * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // BIT STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DERBitString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = \"00\" + o.getEncodedHex();\n }\n KJUR.asn1.DERBitString.superclass.constructor.call(this);\n this.hT = \"03\";\n /**\n * set ASN.1 value(V) by a hexadecimal string including unused bits\n * @name setHexValueIncludingUnusedBits\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} newHexStringIncludingUnusedBits\n */\n this.setHexValueIncludingUnusedBits = function (newHexStringIncludingUnusedBits) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = newHexStringIncludingUnusedBits;\n };\n /**\n * set ASN.1 value(V) by unused bit and hexadecimal string of value\n * @name setUnusedBitsAndHexValue\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {Integer} unusedBits\n * @param {String} hValue\n */\n this.setUnusedBitsAndHexValue = function (unusedBits, hValue) {\n if (unusedBits < 0 || 7 < unusedBits) {\n throw \"unused bits shall be from 0 to 7: u = \" + unusedBits;\n }\n var hUnusedBits = \"0\" + unusedBits;\n this.hTLV = null;\n this.isModified = true;\n this.hV = hUnusedBits + hValue;\n };\n /**\n * set ASN.1 DER BitString by binary string
\n * @name setByBinaryString\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} binaryString binary value string (i.e. '10111')\n * @description\n * Its unused bits will be calculated automatically by length of\n * 'binaryValue'.
\n * NOTE: Trailing zeros '0' will be ignored.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray(\"01011\");\n */\n this.setByBinaryString = function (binaryString) {\n binaryString = binaryString.replace(/0+$/, '');\n var unusedBits = 8 - binaryString.length % 8;\n if (unusedBits == 8)\n unusedBits = 0;\n for (var i = 0; i <= unusedBits; i++) {\n binaryString += '0';\n }\n var h = '';\n for (var i = 0; i < binaryString.length - 1; i += 8) {\n var b = binaryString.substr(i, 8);\n var x = parseInt(b, 2).toString(16);\n if (x.length == 1)\n x = '0' + x;\n h += x;\n }\n this.hTLV = null;\n this.isModified = true;\n this.hV = '0' + unusedBits + h;\n };\n /**\n * set ASN.1 TLV value(V) by an array of boolean
\n * @name setByBooleanArray\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {array} booleanArray array of boolean (ex. [true, false, true])\n * @description\n * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray([false, true, false, true, true]);\n */\n this.setByBooleanArray = function (booleanArray) {\n var s = '';\n for (var i = 0; i < booleanArray.length; i++) {\n if (booleanArray[i] == true) {\n s += '1';\n }\n else {\n s += '0';\n }\n }\n this.setByBinaryString(s);\n };\n /**\n * generate an array of falses with specified length
\n * @name newFalseArray\n * @memberOf KJUR.asn1.DERBitString\n * @function\n * @param {Integer} nLength length of array to generate\n * @return {array} array of boolean falses\n * @description\n * This static method may be useful to initialize boolean array.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.newFalseArray(3) → [false, false, false]\n */\n this.newFalseArray = function (nLength) {\n var a = new Array(nLength);\n for (var i = 0; i < nLength; i++) {\n a[i] = false;\n }\n return a;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\" && params.toLowerCase().match(/^[0-9a-f]+$/)) {\n this.setHexValueIncludingUnusedBits(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setHexValueIncludingUnusedBits(params['hex']);\n }\n else if (typeof params['bin'] != \"undefined\") {\n this.setByBinaryString(params['bin']);\n }\n else if (typeof params['array'] != \"undefined\") {\n this.setByBooleanArray(params['array']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER OctetString
\n * @name KJUR.asn1.DEROctetString\n * @class class for ASN.1 DER OctetString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * This class provides ASN.1 OctetString simple type.
\n * Supported \"params\" attributes are:\n * \n * - str - to set a string as a value
\n * - hex - to set a hexadecimal string as a value
\n * - obj - to set a encapsulated ASN.1 value by JSON object\n * which is defined in {@link KJUR.asn1.ASN1Util.newObject}
\n *
\n * NOTE: A parameter 'obj' have been supported\n * for \"OCTET STRING, encapsulates\" structure.\n * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).\n * @see KJUR.asn1.DERAbstractString - superclass\n * @example\n * // default constructor\n * o = new KJUR.asn1.DEROctetString();\n * // initialize with string\n * o = new KJUR.asn1.DEROctetString({str: \"aaa\"});\n * // initialize with hexadecimal string\n * o = new KJUR.asn1.DEROctetString({hex: \"616161\"});\n * // initialize with ASN1Util.newObject argument\n * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // OCTET STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DEROctetString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = o.getEncodedHex();\n }\n KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);\n this.hT = \"04\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER Null\n * @name KJUR.asn1.DERNull\n * @class class for ASN.1 DER Null\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERNull = function () {\n KJUR.asn1.DERNull.superclass.constructor.call(this);\n this.hT = \"05\";\n this.hTLV = \"0500\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER ObjectIdentifier\n * @name KJUR.asn1.DERObjectIdentifier\n * @class class for ASN.1 DER ObjectIdentifier\n * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERObjectIdentifier = function (params) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);\n this.hT = \"06\";\n /**\n * set value by a hexadecimal string\n * @name setValueHex\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} newHexString hexadecimal value of OID bytes\n */\n this.setValueHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n /**\n * set value by a OID string
\n * @name setValueOidString\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidString OID string (ex. 2.5.4.13)\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueOidString(\"2.5.4.13\");\n */\n this.setValueOidString = function (oidString) {\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = h;\n };\n /**\n * set value by a OID name\n * @name setValueName\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidName OID name (ex. 'serverAuth')\n * @since 1.0.1\n * @description\n * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.\n * Otherwise raise error.\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueName(\"serverAuth\");\n */\n this.setValueName = function (oidName) {\n var oid = KJUR.asn1.x509.OID.name2oid(oidName);\n if (oid !== '') {\n this.setValueOidString(oid);\n }\n else {\n throw \"DERObjectIdentifier oidName undefined: \" + oidName;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (params !== undefined) {\n if (typeof params === \"string\") {\n if (params.match(/^[0-2].[0-9.]+$/)) {\n this.setValueOidString(params);\n }\n else {\n this.setValueName(params);\n }\n }\n else if (params.oid !== undefined) {\n this.setValueOidString(params.oid);\n }\n else if (params.hex !== undefined) {\n this.setValueHex(params.hex);\n }\n else if (params.name !== undefined) {\n this.setValueName(params.name);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Enumerated\n * @name KJUR.asn1.DEREnumerated\n * @class class for ASN.1 DER Enumerated\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - int - specify initial ASN.1 value(V) by integer value
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n *
\n * NOTE: 'params' can be omitted.\n * @example\n * new KJUR.asn1.DEREnumerated(123);\n * new KJUR.asn1.DEREnumerated({int: 123});\n * new KJUR.asn1.DEREnumerated({hex: '1fad'});\n */\nKJUR.asn1.DEREnumerated = function (params) {\n KJUR.asn1.DEREnumerated.superclass.constructor.call(this);\n this.hT = \"0a\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTF8String\n * @name KJUR.asn1.DERUTF8String\n * @class class for ASN.1 DER UTF8String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERUTF8String = function (params) {\n KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);\n this.hT = \"0c\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER NumericString\n * @name KJUR.asn1.DERNumericString\n * @class class for ASN.1 DER NumericString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERNumericString = function (params) {\n KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);\n this.hT = \"12\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER PrintableString\n * @name KJUR.asn1.DERPrintableString\n * @class class for ASN.1 DER PrintableString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERPrintableString = function (params) {\n KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);\n this.hT = \"13\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER TeletexString\n * @name KJUR.asn1.DERTeletexString\n * @class class for ASN.1 DER TeletexString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERTeletexString = function (params) {\n KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);\n this.hT = \"14\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER IA5String\n * @name KJUR.asn1.DERIA5String\n * @class class for ASN.1 DER IA5String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERIA5String = function (params) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);\n this.hT = \"16\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTCTime\n * @name KJUR.asn1.DERUTCTime\n * @class class for ASN.1 DER UTCTime\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n * - date - specify Date object.
\n *
\n * NOTE: 'params' can be omitted.\n * EXAMPLES
\n * @example\n * d1 = new KJUR.asn1.DERUTCTime();\n * d1.setString('130430125959Z');\n *\n * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});\n * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});\n * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');\n */\nKJUR.asn1.DERUTCTime = function (params) {\n KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);\n this.hT = \"17\";\n /**\n * set value by a Date object
\n * @name setByDate\n * @memberOf KJUR.asn1.DERUTCTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * o = new KJUR.asn1.DERUTCTime();\n * o.setByDate(new Date(\"2016/12/31\"));\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (typeof this.date == \"undefined\" && typeof this.s == \"undefined\") {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{12}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER GeneralizedTime\n * @name KJUR.asn1.DERGeneralizedTime\n * @class class for ASN.1 DER GeneralizedTime\n * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})\n * @property {Boolean} withMillis flag to show milliseconds or not\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n * - date - specify Date object.
\n * - millis - specify flag to show milliseconds (from 1.0.6)
\n *
\n * NOTE1: 'params' can be omitted.\n * NOTE2: 'withMillis' property is supported from asn1 1.0.6.\n */\nKJUR.asn1.DERGeneralizedTime = function (params) {\n KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);\n this.hT = \"18\";\n this.withMillis = false;\n /**\n * set value by a Date object\n * @name setByDate\n * @memberOf KJUR.asn1.DERGeneralizedTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * When you specify UTC time, use 'Date.UTC' method like this:
\n * o1 = new DERUTCTime();\n * o1.setByDate(date);\n *\n * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (this.date === undefined && this.s === undefined) {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{14}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n if (params.millis === true) {\n this.withMillis = true;\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER Sequence\n * @name KJUR.asn1.DERSequence\n * @class class for ASN.1 DER Sequence\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - array - specify array of ASN1Object to set elements of content
\n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERSequence = function (params) {\n KJUR.asn1.DERSequence.superclass.constructor.call(this, params);\n this.hT = \"30\";\n this.getFreshValueHex = function () {\n var h = '';\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n h += asn1Obj.getEncodedHex();\n }\n this.hV = h;\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER Set\n * @name KJUR.asn1.DERSet\n * @class class for ASN.1 DER Set\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - array - specify array of ASN1Object to set elements of content
\n * - sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.
\n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: sortflag is supported since 1.0.5.\n */\nKJUR.asn1.DERSet = function (params) {\n KJUR.asn1.DERSet.superclass.constructor.call(this, params);\n this.hT = \"31\";\n this.sortFlag = true; // item shall be sorted only in ASN.1 DER\n this.getFreshValueHex = function () {\n var a = new Array();\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n a.push(asn1Obj.getEncodedHex());\n }\n if (this.sortFlag == true)\n a.sort();\n this.hV = a.join('');\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params.sortflag != \"undefined\" &&\n params.sortflag == false)\n this.sortFlag = false;\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER TaggedObject\n * @name KJUR.asn1.DERTaggedObject\n * @class class for ASN.1 DER TaggedObject\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.\n * For example, if you find '[1]' tag in a ASN.1 dump,\n * 'tagNoHex' will be 'a1'.\n *
\n * As for optional argument 'params' for constructor, you can specify *ANY* of\n * following properties:\n * \n * - explicit - specify true if this is explicit tag otherwise false\n * (default is 'true').
\n * - tag - specify tag (default is 'a0' which means [0])
\n * - obj - specify ASN1Object which is tagged
\n *
\n * @example\n * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});\n * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});\n * hex = d2.getEncodedHex();\n */\nKJUR.asn1.DERTaggedObject = function (params) {\n KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);\n this.hT = \"a0\";\n this.hV = '';\n this.isExplicit = true;\n this.asn1Object = null;\n /**\n * set value by an ASN1Object\n * @name setString\n * @memberOf KJUR.asn1.DERTaggedObject#\n * @function\n * @param {Boolean} isExplicitFlag flag for explicit/implicit tag\n * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag\n * @param {ASN1Object} asn1Object ASN.1 to encapsulate\n */\n this.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {\n this.hT = tagNoHex;\n this.isExplicit = isExplicitFlag;\n this.asn1Object = asn1Object;\n if (this.isExplicit) {\n this.hV = this.asn1Object.getEncodedHex();\n this.hTLV = null;\n this.isModified = true;\n }\n else {\n this.hV = null;\n this.hTLV = asn1Object.getEncodedHex();\n this.hTLV = this.hTLV.replace(/^../, tagNoHex);\n this.isModified = false;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['tag'] != \"undefined\") {\n this.hT = params['tag'];\n }\n if (typeof params['explicit'] != \"undefined\") {\n this.isExplicit = params['explicit'];\n }\n if (typeof params['obj'] != \"undefined\") {\n this.asn1Object = params['obj'];\n this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/asn1-1.0.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./lib/lib/jsrsasign/yahoo.js":
+ /*!************************************!*\
+ !*** ./lib/lib/jsrsasign/yahoo.js ***!
+ \************************************/
+ /***/
+ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"YAHOO\": () => (/* binding */ YAHOO)\n/* harmony export */ });\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nvar YAHOO = {};\nYAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function (subc, superc, overrides) {\n if (!superc || !subc) {\n throw new Error(\"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\");\n }\n var F = function () { };\n F.prototype = superc.prototype;\n subc.prototype = new F();\n subc.prototype.constructor = subc;\n subc.superclass = superc.prototype;\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc;\n }\n if (overrides) {\n var i;\n for (i in overrides) {\n subc.prototype[i] = overrides[i];\n }\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function () { }, ADD = [\"toString\", \"valueOf\"];\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function (r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i], f = s[fname];\n if (typeof f === 'function' && f != Object.prototype[fname]) {\n r[fname] = f;\n }\n }\n };\n }\n }\n catch (ex) { }\n ;\n _IEEnumFix(subc.prototype, overrides);\n }\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/yahoo.js?");
+
+ /***/
+ }),
+
+ /***/
+ "./node_modules/process/browser.js":
+ /*!*****************************************!*\
+ !*** ./node_modules/process/browser.js ***!
+ \*****************************************/
+ /***/
+ ((module) => {
+
+ eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack://JSEncrypt/./node_modules/process/browser.js?");
+
+ /***/
+ })
+
+ /******/
+ });
+ /************************************************************************/
+ /******/ // The module cache
+ /******/
+ var __webpack_module_cache__ = {};
+ /******/
+ /******/ // The require function
+ /******/
+ function __webpack_require__(moduleId) {
+ /******/ // Check if module is in cache
+ /******/
+ var cachedModule = __webpack_module_cache__[moduleId];
+ /******/
+ if (cachedModule !== undefined) {
+ /******/
+ return cachedModule.exports;
+ /******/
+ }
+ /******/ // Create a new module (and put it into the cache)
+ /******/
+ var module = __webpack_module_cache__[moduleId] = {
+ /******/ // no module.id needed
+ /******/ // no module.loaded needed
+ /******/
+ exports: {}
+ /******/
+ };
+ /******/
+ /******/ // Execute the module function
+ /******/
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+ /******/
+ /******/ // Return the exports of the module
+ /******/
+ return module.exports;
+ /******/
+ }
+ /******/
+ /************************************************************************/
+ /******/
+ /* webpack/runtime/define property getters */
+ /******/
+ (() => {
+ /******/ // define getter functions for harmony exports
+ /******/
+ __webpack_require__.d = (exports, definition) => {
+ /******/
+ for (var key in definition) {
+ /******/
+ if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+ /******/
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: definition[key]
+ });
+ /******/
+ }
+ /******/
+ }
+ /******/
+ };
+ /******/
+ })();
+ /******/
+ /******/
+ /* webpack/runtime/hasOwnProperty shorthand */
+ /******/
+ (() => {
+ /******/
+ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+ /******/
+ })();
+ /******/
+ /******/
+ /* webpack/runtime/make namespace object */
+ /******/
+ (() => {
+ /******/ // define __esModule on exports
+ /******/
+ __webpack_require__.r = (exports) => {
+ /******/
+ if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+ /******/
+ Object.defineProperty(exports, Symbol.toStringTag, {
+ value: 'Module'
+ });
+ /******/
+ }
+ /******/
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+ /******/
+ };
+ /******/
+ })();
+ /******/
+ /************************************************************************/
+ /******/
+ /******/ // startup
+ /******/ // Load entry module and return exports
+ /******/ // This entry module can't be inlined because the eval devtool is used.
+ /******/
+ var __webpack_exports__ = __webpack_require__("./lib/index.js");
+ /******/
+ __webpack_exports__ = __webpack_exports__["default"];
+ /******/
+ /******/
+ return __webpack_exports__;
+ /******/
+ })();
+});
\ No newline at end of file
diff --git a/JS/json5.js b/JS/json5.js
new file mode 100644
index 0000000..7949f11
--- /dev/null
+++ b/JS/json5.js
@@ -0,0 +1,1809 @@
+(function(global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.JSON5 = factory());
+}(this, (function() {
+ 'use strict';
+
+ function createCommonjsModule(fn, module) {
+ return module = {
+ exports: {}
+ }, fn(module, module.exports), module.exports;
+ }
+
+ var _global = createCommonjsModule(function(module) {
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math ?
+ window : typeof self != 'undefined' && self.Math == Math ? self
+ // eslint-disable-next-line no-new-func
+ :
+ Function('return this')();
+ if (typeof __g == 'number') {
+ __g = global;
+ } // eslint-disable-line no-undef
+ });
+
+ var _core = createCommonjsModule(function(module) {
+ var core = module.exports = {
+ version: '2.6.5'
+ };
+ if (typeof __e == 'number') {
+ __e = core;
+ } // eslint-disable-line no-undef
+ });
+ var _core_1 = _core.version;
+
+ var _isObject = function(it) {
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+ };
+
+ var _anObject = function(it) {
+ if (!_isObject(it)) {
+ throw TypeError(it + ' is not an object!');
+ }
+ return it;
+ };
+
+ var _fails = function(exec) {
+ try {
+ return !!exec();
+ } catch (e) {
+ return true;
+ }
+ };
+
+ // Thank's IE8 for his funny defineProperty
+ var _descriptors = !_fails(function() {
+ return Object.defineProperty({}, 'a', {
+ get: function() {
+ return 7;
+ }
+ }).a != 7;
+ });
+
+ var document = _global.document;
+ // typeof document.createElement is 'object' in old IE
+ var is = _isObject(document) && _isObject(document.createElement);
+ var _domCreate = function(it) {
+ return is ? document.createElement(it) : {};
+ };
+
+ var _ie8DomDefine = !_descriptors && !_fails(function() {
+ return Object.defineProperty(_domCreate('div'), 'a', {
+ get: function() {
+ return 7;
+ }
+ }).a != 7;
+ });
+
+ // 7.1.1 ToPrimitive(input [, PreferredType])
+
+ // instead of the ES6 spec version, we didn't implement @@toPrimitive case
+ // and the second argument - flag - preferred type is a string
+ var _toPrimitive = function(it, S) {
+ if (!_isObject(it)) {
+ return it;
+ }
+ var fn, val;
+ if (S && typeof(fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) {
+ return val;
+ }
+ if (typeof(fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) {
+ return val;
+ }
+ if (!S && typeof(fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) {
+ return val;
+ }
+ throw TypeError("Can't convert object to primitive value");
+ };
+
+ var dP = Object.defineProperty;
+
+ var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
+ _anObject(O);
+ P = _toPrimitive(P, true);
+ _anObject(Attributes);
+ if (_ie8DomDefine) {
+ try {
+ return dP(O, P, Attributes);
+ } catch (e) {
+ /* empty */ }
+ }
+ if ('get' in Attributes || 'set' in Attributes) {
+ throw TypeError('Accessors not supported!');
+ }
+ if ('value' in Attributes) {
+ O[P] = Attributes.value;
+ }
+ return O;
+ };
+
+ var _objectDp = {
+ f: f
+ };
+
+ var _propertyDesc = function(bitmap, value) {
+ return {
+ enumerable: !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable: !(bitmap & 4),
+ value: value
+ };
+ };
+
+ var _hide = _descriptors ? function(object, key, value) {
+ return _objectDp.f(object, key, _propertyDesc(1, value));
+ } : function(object, key, value) {
+ object[key] = value;
+ return object;
+ };
+
+ var hasOwnProperty = {}.hasOwnProperty;
+ var _has = function(it, key) {
+ return hasOwnProperty.call(it, key);
+ };
+
+ var id = 0;
+ var px = Math.random();
+ var _uid = function(key) {
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+ };
+
+ var _library = false;
+
+ var _shared = createCommonjsModule(function(module) {
+ var SHARED = '__core-js_shared__';
+ var store = _global[SHARED] || (_global[SHARED] = {});
+
+ (module.exports = function(key, value) {
+ return store[key] || (store[key] = value !== undefined ? value : {});
+ })('versions', []).push({
+ version: _core.version,
+ mode: _library ? 'pure' : 'global',
+ copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
+ });
+ });
+
+ var _functionToString = _shared('native-function-to-string', Function.toString);
+
+ var _redefine = createCommonjsModule(function(module) {
+ var SRC = _uid('src');
+
+ var TO_STRING = 'toString';
+ var TPL = ('' + _functionToString).split(TO_STRING);
+
+ _core.inspectSource = function(it) {
+ return _functionToString.call(it);
+ };
+
+ (module.exports = function(O, key, val, safe) {
+ var isFunction = typeof val == 'function';
+ if (isFunction) {
+ _has(val, 'name') || _hide(val, 'name', key);
+ }
+ if (O[key] === val) {
+ return;
+ }
+ if (isFunction) {
+ _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
+ }
+ if (O === _global) {
+ O[key] = val;
+ } else if (!safe) {
+ delete O[key];
+ _hide(O, key, val);
+ } else if (O[key]) {
+ O[key] = val;
+ } else {
+ _hide(O, key, val);
+ }
+ // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+ })(Function.prototype, TO_STRING, function toString() {
+ return typeof this == 'function' && this[SRC] || _functionToString.call(this);
+ });
+ });
+
+ var _aFunction = function(it) {
+ if (typeof it != 'function') {
+ throw TypeError(it + ' is not a function!');
+ }
+ return it;
+ };
+
+ // optional / simple context binding
+
+ var _ctx = function(fn, that, length) {
+ _aFunction(fn);
+ if (that === undefined) {
+ return fn;
+ }
+ switch (length) {
+ case 1:
+ return function(a) {
+ return fn.call(that, a);
+ };
+ case 2:
+ return function(a, b) {
+ return fn.call(that, a, b);
+ };
+ case 3:
+ return function(a, b, c) {
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function( /* ...args */ ) {
+ return fn.apply(that, arguments);
+ };
+ };
+
+ var PROTOTYPE = 'prototype';
+
+ var $export = function(type, name, source) {
+ var IS_FORCED = type & $export.F;
+ var IS_GLOBAL = type & $export.G;
+ var IS_STATIC = type & $export.S;
+ var IS_PROTO = type & $export.P;
+ var IS_BIND = type & $export.B;
+ var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];
+ var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
+ var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
+ var key, own, out, exp;
+ if (IS_GLOBAL) {
+ source = name;
+ }
+ for (key in source) {
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ // export native or passed
+ out = (own ? target : source)[key];
+ // bind timers to global for call from export context
+ exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;
+ // extend global
+ if (target) {
+ _redefine(target, key, out, type & $export.U);
+ }
+ // export
+ if (exports[key] != out) {
+ _hide(exports, key, exp);
+ }
+ if (IS_PROTO && expProto[key] != out) {
+ expProto[key] = out;
+ }
+ }
+ };
+ _global.core = _core;
+ // type bitmap
+ $export.F = 1; // forced
+ $export.G = 2; // global
+ $export.S = 4; // static
+ $export.P = 8; // proto
+ $export.B = 16; // bind
+ $export.W = 32; // wrap
+ $export.U = 64; // safe
+ $export.R = 128; // real proto method for `library`
+ var _export = $export;
+
+ // 7.1.4 ToInteger
+ var ceil = Math.ceil;
+ var floor = Math.floor;
+ var _toInteger = function(it) {
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+ };
+
+ // 7.2.1 RequireObjectCoercible(argument)
+ var _defined = function(it) {
+ if (it == undefined) {
+ throw TypeError("Can't call method on " + it);
+ }
+ return it;
+ };
+
+ // true -> String#at
+ // false -> String#codePointAt
+ var _stringAt = function(TO_STRING) {
+ return function(that, pos) {
+ var s = String(_defined(that));
+ var i = _toInteger(pos);
+ var l = s.length;
+ var a, b;
+ if (i < 0 || i >= l) {
+ return TO_STRING ? '' : undefined;
+ }
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ?
+ TO_STRING ? s.charAt(i) : a :
+ TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+ };
+
+ var $at = _stringAt(false);
+ _export(_export.P, 'String', {
+ // 21.1.3.3 String.prototype.codePointAt(pos)
+ codePointAt: function codePointAt(pos) {
+ return $at(this, pos);
+ }
+ });
+
+ var codePointAt = _core.String.codePointAt;
+
+ var max = Math.max;
+ var min = Math.min;
+ var _toAbsoluteIndex = function(index, length) {
+ index = _toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+ };
+
+ var fromCharCode = String.fromCharCode;
+ var $fromCodePoint = String.fromCodePoint;
+
+ // length should be 1, old FF problem
+ _export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
+ fromCodePoint: function fromCodePoint(x) {
+ var arguments$1 = arguments;
+ // eslint-disable-line no-unused-vars
+ var res = [];
+ var aLen = arguments.length;
+ var i = 0;
+ var code;
+ while (aLen > i) {
+ code = +arguments$1[i++];
+ if (_toAbsoluteIndex(code, 0x10ffff) !== code) {
+ throw RangeError(code + ' is not a valid code point');
+ }
+ res.push(code < 0x10000 ?
+ fromCharCode(code) :
+ fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+ );
+ }
+ return res.join('');
+ }
+ });
+
+ var fromCodePoint = _core.String.fromCodePoint;
+
+ // This is a generated file. Do not edit.
+ var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
+ var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
+ var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;
+
+ var unicode = {
+ Space_Separator: Space_Separator,
+ ID_Start: ID_Start,
+ ID_Continue: ID_Continue
+ };
+
+ var util = {
+ isSpaceSeparator: function isSpaceSeparator(c) {
+ return typeof c === 'string' && unicode.Space_Separator.test(c)
+ },
+
+ isIdStartChar: function isIdStartChar(c) {
+ return typeof c === 'string' && (
+ (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c === '$') || (c === '_') ||
+ unicode.ID_Start.test(c)
+ )
+ },
+
+ isIdContinueChar: function isIdContinueChar(c) {
+ return typeof c === 'string' && (
+ (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c >= '0' && c <= '9') ||
+ (c === '$') || (c === '_') ||
+ (c === '\u200C') || (c === '\u200D') ||
+ unicode.ID_Continue.test(c)
+ )
+ },
+
+ isDigit: function isDigit(c) {
+ return typeof c === 'string' && /[0-9]/.test(c)
+ },
+
+ isHexDigit: function isHexDigit(c) {
+ return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)
+ },
+ };
+
+ var source;
+ var parseState;
+ var stack;
+ var pos;
+ var line;
+ var column;
+ var token;
+ var key;
+ var root;
+
+ var parse = function parse(text, reviver) {
+ source = String(text);
+ parseState = 'start';
+ stack = [];
+ pos = 0;
+ line = 1;
+ column = 0;
+ token = undefined;
+ key = undefined;
+ root = undefined;
+
+ do {
+ token = lex();
+
+ // This code is unreachable.
+ // if (!parseStates[parseState]) {
+ // throw invalidParseState()
+ // }
+
+ parseStates[parseState]();
+ } while (token.type !== 'eof')
+
+ if (typeof reviver === 'function') {
+ return internalize({
+ '': root
+ }, '', reviver)
+ }
+
+ return root
+ };
+
+ function internalize(holder, name, reviver) {
+ var value = holder[name];
+ if (value != null && typeof value === 'object') {
+ if (Array.isArray(value)) {
+ for (var i = 0; i < value.length; i++) {
+ var key = String(i);
+ var replacement = internalize(value, key, reviver);
+ if (replacement === undefined) {
+ delete value[key];
+ } else {
+ Object.defineProperty(value, key, {
+ value: replacement,
+ writable: true,
+ enumerable: true,
+ configurable: true,
+ });
+ }
+ }
+ } else {
+ for (var key$1 in value) {
+ var replacement$1 = internalize(value, key$1, reviver);
+ if (replacement$1 === undefined) {
+ delete value[key$1];
+ } else {
+ Object.defineProperty(value, key$1, {
+ value: replacement$1,
+ writable: true,
+ enumerable: true,
+ configurable: true,
+ });
+ }
+ }
+ }
+ }
+
+ return reviver.call(holder, name, value)
+ }
+
+ var lexState;
+ var buffer;
+ var doubleQuote;
+ var sign;
+ var c;
+
+ function lex() {
+ lexState = 'default';
+ buffer = '';
+ doubleQuote = false;
+ sign = 1;
+
+ for (;;) {
+ c = peek();
+
+ // This code is unreachable.
+ // if (!lexStates[lexState]) {
+ // throw invalidLexState(lexState)
+ // }
+
+ var token = lexStates[lexState]();
+ if (token) {
+ return token
+ }
+ }
+ }
+
+ function peek() {
+ if (source[pos]) {
+ return String.fromCodePoint(source.codePointAt(pos))
+ }
+ }
+
+ function read() {
+ var c = peek();
+
+ if (c === '\n') {
+ line++;
+ column = 0;
+ } else if (c) {
+ column += c.length;
+ } else {
+ column++;
+ }
+
+ if (c) {
+ pos += c.length;
+ }
+
+ return c
+ }
+
+ var lexStates = {
+ default: function default$1() {
+ switch (c) {
+ case '\t':
+ case '\v':
+ case '\f':
+ case ' ':
+ case '\u00A0':
+ case '\uFEFF':
+ case '\n':
+ case '\r':
+ case '\u2028':
+ case '\u2029':
+ read();
+ return
+
+ case '/':
+ read();
+ lexState = 'comment';
+ return
+
+ case undefined:
+ read();
+ return newToken('eof')
+ }
+
+ if (util.isSpaceSeparator(c)) {
+ read();
+ return
+ }
+
+ // This code is unreachable.
+ // if (!lexStates[parseState]) {
+ // throw invalidLexState(parseState)
+ // }
+
+ return lexStates[parseState]()
+ },
+
+ comment: function comment() {
+ switch (c) {
+ case '*':
+ read();
+ lexState = 'multiLineComment';
+ return
+
+ case '/':
+ read();
+ lexState = 'singleLineComment';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ multiLineComment: function multiLineComment() {
+ switch (c) {
+ case '*':
+ read();
+ lexState = 'multiLineCommentAsterisk';
+ return
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ read();
+ },
+
+ multiLineCommentAsterisk: function multiLineCommentAsterisk() {
+ switch (c) {
+ case '*':
+ read();
+ return
+
+ case '/':
+ read();
+ lexState = 'default';
+ return
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ read();
+ lexState = 'multiLineComment';
+ },
+
+ singleLineComment: function singleLineComment() {
+ switch (c) {
+ case '\n':
+ case '\r':
+ case '\u2028':
+ case '\u2029':
+ read();
+ lexState = 'default';
+ return
+
+ case undefined:
+ read();
+ return newToken('eof')
+ }
+
+ read();
+ },
+
+ value: function value() {
+ switch (c) {
+ case '{':
+ case '[':
+ return newToken('punctuator', read())
+
+ case 'n':
+ read();
+ literal('ull');
+ return newToken('null', null)
+
+ case 't':
+ read();
+ literal('rue');
+ return newToken('boolean', true)
+
+ case 'f':
+ read();
+ literal('alse');
+ return newToken('boolean', false)
+
+ case '-':
+ case '+':
+ if (read() === '-') {
+ sign = -1;
+ }
+
+ lexState = 'sign';
+ return
+
+ case '.':
+ buffer = read();
+ lexState = 'decimalPointLeading';
+ return
+
+ case '0':
+ buffer = read();
+ lexState = 'zero';
+ return
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ buffer = read();
+ lexState = 'decimalInteger';
+ return
+
+ case 'I':
+ read();
+ literal('nfinity');
+ return newToken('numeric', Infinity)
+
+ case 'N':
+ read();
+ literal('aN');
+ return newToken('numeric', NaN)
+
+ case '"':
+ case "'":
+ doubleQuote = (read() === '"');
+ buffer = '';
+ lexState = 'string';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ identifierNameStartEscape: function identifierNameStartEscape() {
+ if (c !== 'u') {
+ throw invalidChar(read())
+ }
+
+ read();
+ var u = unicodeEscape();
+ switch (u) {
+ case '$':
+ case '_':
+ break
+
+ default:
+ if (!util.isIdStartChar(u)) {
+ throw invalidIdentifier()
+ }
+
+ break
+ }
+
+ buffer += u;
+ lexState = 'identifierName';
+ },
+
+ identifierName: function identifierName() {
+ switch (c) {
+ case '$':
+ case '_':
+ case '\u200C':
+ case '\u200D':
+ buffer += read();
+ return
+
+ case '\\':
+ read();
+ lexState = 'identifierNameEscape';
+ return
+ }
+
+ if (util.isIdContinueChar(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('identifier', buffer)
+ },
+
+ identifierNameEscape: function identifierNameEscape() {
+ if (c !== 'u') {
+ throw invalidChar(read())
+ }
+
+ read();
+ var u = unicodeEscape();
+ switch (u) {
+ case '$':
+ case '_':
+ case '\u200C':
+ case '\u200D':
+ break
+
+ default:
+ if (!util.isIdContinueChar(u)) {
+ throw invalidIdentifier()
+ }
+
+ break
+ }
+
+ buffer += u;
+ lexState = 'identifierName';
+ },
+
+ sign: function sign$1() {
+ switch (c) {
+ case '.':
+ buffer = read();
+ lexState = 'decimalPointLeading';
+ return
+
+ case '0':
+ buffer = read();
+ lexState = 'zero';
+ return
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ buffer = read();
+ lexState = 'decimalInteger';
+ return
+
+ case 'I':
+ read();
+ literal('nfinity');
+ return newToken('numeric', sign * Infinity)
+
+ case 'N':
+ read();
+ literal('aN');
+ return newToken('numeric', NaN)
+ }
+
+ throw invalidChar(read())
+ },
+
+ zero: function zero() {
+ switch (c) {
+ case '.':
+ buffer += read();
+ lexState = 'decimalPoint';
+ return
+
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+
+ case 'x':
+ case 'X':
+ buffer += read();
+ lexState = 'hexadecimal';
+ return
+ }
+
+ return newToken('numeric', sign * 0)
+ },
+
+ decimalInteger: function decimalInteger() {
+ switch (c) {
+ case '.':
+ buffer += read();
+ lexState = 'decimalPoint';
+ return
+
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalPointLeading: function decimalPointLeading() {
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalFraction';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalPoint: function decimalPoint() {
+ switch (c) {
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalFraction';
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalFraction: function decimalFraction() {
+ switch (c) {
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalExponent: function decimalExponent() {
+ switch (c) {
+ case '+':
+ case '-':
+ buffer += read();
+ lexState = 'decimalExponentSign';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalExponentInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalExponentSign: function decimalExponentSign() {
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalExponentInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalExponentInteger: function decimalExponentInteger() {
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ hexadecimal: function hexadecimal() {
+ if (util.isHexDigit(c)) {
+ buffer += read();
+ lexState = 'hexadecimalInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ hexadecimalInteger: function hexadecimalInteger() {
+ if (util.isHexDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ string: function string() {
+ switch (c) {
+ case '\\':
+ read();
+ buffer += escape();
+ return
+
+ case '"':
+ if (doubleQuote) {
+ read();
+ return newToken('string', buffer)
+ }
+
+ buffer += read();
+ return
+
+ case "'":
+ if (!doubleQuote) {
+ read();
+ return newToken('string', buffer)
+ }
+
+ buffer += read();
+ return
+
+ case '\n':
+ case '\r':
+ throw invalidChar(read())
+
+ case '\u2028':
+ case '\u2029':
+ separatorChar(c);
+ break
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+ },
+
+ start: function start() {
+ switch (c) {
+ case '{':
+ case '[':
+ return newToken('punctuator', read())
+
+ // This code is unreachable since the default lexState handles eof.
+ // case undefined:
+ // return newToken('eof')
+ }
+
+ lexState = 'value';
+ },
+
+ beforePropertyName: function beforePropertyName() {
+ switch (c) {
+ case '$':
+ case '_':
+ buffer = read();
+ lexState = 'identifierName';
+ return
+
+ case '\\':
+ read();
+ lexState = 'identifierNameStartEscape';
+ return
+
+ case '}':
+ return newToken('punctuator', read())
+
+ case '"':
+ case "'":
+ doubleQuote = (read() === '"');
+ lexState = 'string';
+ return
+ }
+
+ if (util.isIdStartChar(c)) {
+ buffer += read();
+ lexState = 'identifierName';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ afterPropertyName: function afterPropertyName() {
+ if (c === ':') {
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ beforePropertyValue: function beforePropertyValue() {
+ lexState = 'value';
+ },
+
+ afterPropertyValue: function afterPropertyValue() {
+ switch (c) {
+ case ',':
+ case '}':
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ beforeArrayValue: function beforeArrayValue() {
+ if (c === ']') {
+ return newToken('punctuator', read())
+ }
+
+ lexState = 'value';
+ },
+
+ afterArrayValue: function afterArrayValue() {
+ switch (c) {
+ case ',':
+ case ']':
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ end: function end() {
+ // This code is unreachable since it's handled by the default lexState.
+ // if (c === undefined) {
+ // read()
+ // return newToken('eof')
+ // }
+
+ throw invalidChar(read())
+ },
+ };
+
+ function newToken(type, value) {
+ return {
+ type: type,
+ value: value,
+ line: line,
+ column: column,
+ }
+ }
+
+ function literal(s) {
+ for (var i = 0, list = s; i < list.length; i += 1) {
+ var c = list[i];
+
+ var p = peek();
+
+ if (p !== c) {
+ throw invalidChar(read())
+ }
+
+ read();
+ }
+ }
+
+ function escape() {
+ var c = peek();
+ switch (c) {
+ case 'b':
+ read();
+ return '\b'
+
+ case 'f':
+ read();
+ return '\f'
+
+ case 'n':
+ read();
+ return '\n'
+
+ case 'r':
+ read();
+ return '\r'
+
+ case 't':
+ read();
+ return '\t'
+
+ case 'v':
+ read();
+ return '\v'
+
+ case '0':
+ read();
+ if (util.isDigit(peek())) {
+ throw invalidChar(read())
+ }
+
+ return '\0'
+
+ case 'x':
+ read();
+ return hexEscape()
+
+ case 'u':
+ read();
+ return unicodeEscape()
+
+ case '\n':
+ case '\u2028':
+ case '\u2029':
+ read();
+ return ''
+
+ case '\r':
+ read();
+ if (peek() === '\n') {
+ read();
+ }
+
+ return ''
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ throw invalidChar(read())
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ return read()
+ }
+
+ function hexEscape() {
+ var buffer = '';
+ var c = peek();
+
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+
+ c = peek();
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+
+ return String.fromCodePoint(parseInt(buffer, 16))
+ }
+
+ function unicodeEscape() {
+ var buffer = '';
+ var count = 4;
+
+ while (count-- > 0) {
+ var c = peek();
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+ }
+
+ return String.fromCodePoint(parseInt(buffer, 16))
+ }
+
+ var parseStates = {
+ start: function start() {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ push();
+ },
+
+ beforePropertyName: function beforePropertyName() {
+ switch (token.type) {
+ case 'identifier':
+ case 'string':
+ key = token.value;
+ parseState = 'afterPropertyName';
+ return
+
+ case 'punctuator':
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.value !== '}') {
+ // throw invalidToken()
+ // }
+
+ pop();
+ return
+
+ case 'eof':
+ throw invalidEOF()
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ afterPropertyName: function afterPropertyName() {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator' || token.value !== ':') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ parseState = 'beforePropertyValue';
+ },
+
+ beforePropertyValue: function beforePropertyValue() {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ push();
+ },
+
+ beforeArrayValue: function beforeArrayValue() {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ if (token.type === 'punctuator' && token.value === ']') {
+ pop();
+ return
+ }
+
+ push();
+ },
+
+ afterPropertyValue: function afterPropertyValue() {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ switch (token.value) {
+ case ',':
+ parseState = 'beforePropertyName';
+ return
+
+ case '}':
+ pop();
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ afterArrayValue: function afterArrayValue() {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ switch (token.value) {
+ case ',':
+ parseState = 'beforeArrayValue';
+ return
+
+ case ']':
+ pop();
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ end: function end() {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'eof') {
+ // throw invalidToken()
+ // }
+ },
+ };
+
+ function push() {
+ var value;
+
+ switch (token.type) {
+ case 'punctuator':
+ switch (token.value) {
+ case '{':
+ value = {};
+ break
+
+ case '[':
+ value = [];
+ break
+ }
+
+ break
+
+ case 'null':
+ case 'boolean':
+ case 'numeric':
+ case 'string':
+ value = token.value;
+ break
+
+ // This code is unreachable.
+ // default:
+ // throw invalidToken()
+ }
+
+ if (root === undefined) {
+ root = value;
+ } else {
+ var parent = stack[stack.length - 1];
+ if (Array.isArray(parent)) {
+ parent.push(value);
+ } else {
+ Object.defineProperty(parent, key, {
+ value: value,
+ writable: true,
+ enumerable: true,
+ configurable: true,
+ });
+ }
+ }
+
+ if (value !== null && typeof value === 'object') {
+ stack.push(value);
+
+ if (Array.isArray(value)) {
+ parseState = 'beforeArrayValue';
+ } else {
+ parseState = 'beforePropertyName';
+ }
+ } else {
+ var current = stack[stack.length - 1];
+ if (current == null) {
+ parseState = 'end';
+ } else if (Array.isArray(current)) {
+ parseState = 'afterArrayValue';
+ } else {
+ parseState = 'afterPropertyValue';
+ }
+ }
+ }
+
+ function pop() {
+ stack.pop();
+
+ var current = stack[stack.length - 1];
+ if (current == null) {
+ parseState = 'end';
+ } else if (Array.isArray(current)) {
+ parseState = 'afterArrayValue';
+ } else {
+ parseState = 'afterPropertyValue';
+ }
+ }
+
+ // This code is unreachable.
+ // function invalidParseState () {
+ // return new Error(`JSON5: invalid parse state '${parseState}'`)
+ // }
+
+ // This code is unreachable.
+ // function invalidLexState (state) {
+ // return new Error(`JSON5: invalid lex state '${state}'`)
+ // }
+
+ function invalidChar(c) {
+ if (c === undefined) {
+ return syntaxError(("JSON5: invalid end of input at " + line + ":" + column))
+ }
+
+ return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column))
+ }
+
+ function invalidEOF() {
+ return syntaxError(("JSON5: invalid end of input at " + line + ":" + column))
+ }
+
+ // This code is unreachable.
+ // function invalidToken () {
+ // if (token.type === 'eof') {
+ // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
+ // }
+
+ // const c = String.fromCodePoint(token.value.codePointAt(0))
+ // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)
+ // }
+
+ function invalidIdentifier() {
+ column -= 5;
+ return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column))
+ }
+
+ function separatorChar(c) {
+ console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping"));
+ }
+
+ function formatChar(c) {
+ var replacements = {
+ "'": "\\'",
+ '"': '\\"',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+ '\v': '\\v',
+ '\0': '\\0',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+ };
+
+ if (replacements[c]) {
+ return replacements[c]
+ }
+
+ if (c < ' ') {
+ var hexString = c.charCodeAt(0).toString(16);
+ return '\\x' + ('00' + hexString).substring(hexString.length)
+ }
+
+ return c
+ }
+
+ function syntaxError(message) {
+ var err = new SyntaxError(message);
+ err.lineNumber = line;
+ err.columnNumber = column;
+ return err
+ }
+
+ var stringify = function stringify(value, replacer, space) {
+ var stack = [];
+ var indent = '';
+ var propertyList;
+ var replacerFunc;
+ var gap = '';
+ var quote;
+
+ if (
+ replacer != null &&
+ typeof replacer === 'object' &&
+ !Array.isArray(replacer)
+ ) {
+ space = replacer.space;
+ quote = replacer.quote;
+ replacer = replacer.replacer;
+ }
+
+ if (typeof replacer === 'function') {
+ replacerFunc = replacer;
+ } else if (Array.isArray(replacer)) {
+ propertyList = [];
+ for (var i = 0, list = replacer; i < list.length; i += 1) {
+ var v = list[i];
+
+ var item = (void 0);
+
+ if (typeof v === 'string') {
+ item = v;
+ } else if (
+ typeof v === 'number' ||
+ v instanceof String ||
+ v instanceof Number
+ ) {
+ item = String(v);
+ }
+
+ if (item !== undefined && propertyList.indexOf(item) < 0) {
+ propertyList.push(item);
+ }
+ }
+ }
+
+ if (space instanceof Number) {
+ space = Number(space);
+ } else if (space instanceof String) {
+ space = String(space);
+ }
+
+ if (typeof space === 'number') {
+ if (space > 0) {
+ space = Math.min(10, Math.floor(space));
+ gap = ' '.substr(0, space);
+ }
+ } else if (typeof space === 'string') {
+ gap = space.substr(0, 10);
+ }
+
+ return serializeProperty('', {
+ '': value
+ })
+
+ function serializeProperty(key, holder) {
+ var value = holder[key];
+ if (value != null) {
+ if (typeof value.toJSON5 === 'function') {
+ value = value.toJSON5(key);
+ } else if (typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+ }
+
+ if (replacerFunc) {
+ value = replacerFunc.call(holder, key, value);
+ }
+
+ if (value instanceof Number) {
+ value = Number(value);
+ } else if (value instanceof String) {
+ value = String(value);
+ } else if (value instanceof Boolean) {
+ value = value.valueOf();
+ }
+
+ switch (value) {
+ case null:
+ return 'null'
+ case true:
+ return 'true'
+ case false:
+ return 'false'
+ }
+
+ if (typeof value === 'string') {
+ return quoteString(value, false)
+ }
+
+ if (typeof value === 'number') {
+ return String(value)
+ }
+
+ if (typeof value === 'object') {
+ return Array.isArray(value) ? serializeArray(value) : serializeObject(value)
+ }
+
+ return undefined
+ }
+
+ function quoteString(value) {
+ var quotes = {
+ "'": 0.1,
+ '"': 0.2,
+ };
+
+ var replacements = {
+ "'": "\\'",
+ '"': '\\"',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+ '\v': '\\v',
+ '\0': '\\0',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+ };
+
+ var product = '';
+
+ for (var i = 0; i < value.length; i++) {
+ var c = value[i];
+ switch (c) {
+ case "'":
+ case '"':
+ quotes[c]++;
+ product += c;
+ continue
+
+ case '\0':
+ if (util.isDigit(value[i + 1])) {
+ product += '\\x00';
+ continue
+ }
+ }
+
+ if (replacements[c]) {
+ product += replacements[c];
+ continue
+ }
+
+ if (c < ' ') {
+ var hexString = c.charCodeAt(0).toString(16);
+ product += '\\x' + ('00' + hexString).substring(hexString.length);
+ continue
+ }
+
+ product += c;
+ }
+
+ var quoteChar = quote || Object.keys(quotes).reduce(function(a, b) {
+ return (quotes[a] < quotes[b]) ? a : b;
+ });
+
+ product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);
+
+ return quoteChar + product + quoteChar
+ }
+
+ function serializeObject(value) {
+ if (stack.indexOf(value) >= 0) {
+ throw TypeError('Converting circular structure to JSON5')
+ }
+
+ stack.push(value);
+
+ var stepback = indent;
+ indent = indent + gap;
+
+ var keys = propertyList || Object.keys(value);
+ var partial = [];
+ for (var i = 0, list = keys; i < list.length; i += 1) {
+ var key = list[i];
+
+ var propertyString = serializeProperty(key, value);
+ if (propertyString !== undefined) {
+ var member = serializeKey(key) + ':';
+ if (gap !== '') {
+ member += ' ';
+ }
+ member += propertyString;
+ partial.push(member);
+ }
+ }
+
+ var final;
+ if (partial.length === 0) {
+ final = '{}';
+ } else {
+ var properties;
+ if (gap === '') {
+ properties = partial.join(',');
+ final = '{' + properties + '}';
+ } else {
+ var separator = ',\n' + indent;
+ properties = partial.join(separator);
+ final = '{\n' + indent + properties + ',\n' + stepback + '}';
+ }
+ }
+
+ stack.pop();
+ indent = stepback;
+ return final
+ }
+
+ function serializeKey(key) {
+ if (key.length === 0) {
+ return quoteString(key, true)
+ }
+
+ var firstChar = String.fromCodePoint(key.codePointAt(0));
+ if (!util.isIdStartChar(firstChar)) {
+ return quoteString(key, true)
+ }
+
+ for (var i = firstChar.length; i < key.length; i++) {
+ if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
+ return quoteString(key, true)
+ }
+ }
+
+ return key
+ }
+
+ function serializeArray(value) {
+ if (stack.indexOf(value) >= 0) {
+ throw TypeError('Converting circular structure to JSON5')
+ }
+
+ stack.push(value);
+
+ var stepback = indent;
+ indent = indent + gap;
+
+ var partial = [];
+ for (var i = 0; i < value.length; i++) {
+ var propertyString = serializeProperty(String(i), value);
+ partial.push((propertyString !== undefined) ? propertyString : 'null');
+ }
+
+ var final;
+ if (partial.length === 0) {
+ final = '[]';
+ } else {
+ if (gap === '') {
+ var properties = partial.join(',');
+ final = '[' + properties + ']';
+ } else {
+ var separator = ',\n' + indent;
+ var properties$1 = partial.join(separator);
+ final = '[\n' + indent + properties$1 + ',\n' + stepback + ']';
+ }
+ }
+
+ stack.pop();
+ indent = stepback;
+ return final
+ }
+ };
+
+ var JSON5 = {
+ parse: parse,
+ stringify: stringify,
+ };
+
+ var lib = JSON5;
+
+ var es5 = lib;
+
+ return es5;
+
+})));
\ No newline at end of file
diff --git a/JS/jsonpathplus.min.js b/JS/jsonpathplus.min.js
new file mode 100644
index 0000000..1feb326
--- /dev/null
+++ b/JS/jsonpathplus.min.js
@@ -0,0 +1,1277 @@
+! function(e, t) {
+ "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).JSONPath = {})
+}(this, function(e) {
+ "use strict";
+
+ function n(e, t, r) {
+ return t = l(t),
+ function(e, t) {
+ {
+ if (t && ("object" == typeof t || "function" == typeof t)) return t;
+ if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined")
+ }
+ return function(e) {
+ if (void 0 !== e) return e;
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
+ }(e)
+ }(e, i() ? Reflect.construct(t, r || [], l(e).constructor) : t.apply(e, r))
+ }
+
+ function o(e, t, r) {
+ if (i()) return Reflect.construct.apply(null, arguments);
+ var n = [null];
+ n.push.apply(n, t);
+ n = new(e.bind.apply(e, n));
+ return r && h(n, r.prototype), n
+ }
+
+ function i() {
+ try {
+ var e = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}))
+ } catch (e) {}
+ return (i = function() {
+ return !!e
+ })()
+ }
+
+ function t(t, e) {
+ var r, n = Object.keys(t);
+ return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(t), e && (r = r.filter(function(e) {
+ return Object.getOwnPropertyDescriptor(t, e).enumerable
+ })), n.push.apply(n, r)), n
+ }
+
+ function r(n) {
+ for (var e = 1; e < arguments.length; e++) {
+ var i = null != arguments[e] ? arguments[e] : {};
+ e % 2 ? t(Object(i), !0).forEach(function(e) {
+ var t, r;
+ t = n, e = i[r = e], (r = a(r)) in t ? Object.defineProperty(t, r, {
+ value: e,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }) : t[r] = e
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(i)) : t(Object(i)).forEach(function(e) {
+ Object.defineProperty(n, e, Object.getOwnPropertyDescriptor(i, e))
+ })
+ }
+ return n
+ }
+
+ function a(e) {
+ e = function(e, t) {
+ if ("object" != typeof e || !e) return e;
+ var r = e[Symbol.toPrimitive];
+ if (void 0 === r) return ("string" === t ? String : Number)(e);
+ if ("object" != typeof(t = r.call(e, t || "default"))) return t;
+ throw new TypeError("@@toPrimitive must return a primitive value.")
+ }(e, "string");
+ return "symbol" == typeof e ? e : e + ""
+ }
+
+ function C(e) {
+ return (C = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
+ return typeof e
+ } : function(e) {
+ return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
+ })(e)
+ }
+
+ function s(e, t) {
+ if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
+ }
+
+ function u(e, t) {
+ for (var r = 0; r < t.length; r++) {
+ var n = t[r];
+ n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, a(n.key), n)
+ }
+ }
+
+ function c(e, t, r) {
+ return t && u(e.prototype, t), r && u(e, r), Object.defineProperty(e, "prototype", {
+ writable: !1
+ }), e
+ }
+
+ function l(e) {
+ return (l = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
+ return e.__proto__ || Object.getPrototypeOf(e)
+ })(e)
+ }
+
+ function h(e, t) {
+ return (h = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
+ return e.__proto__ = t, e
+ })(e, t)
+ }
+
+ function p(e) {
+ var r = "function" == typeof Map ? new Map : void 0;
+ return (p = function(e) {
+ if (null === e || ! function(t) {
+ try {
+ return -1 !== Function.toString.call(t).indexOf("[native code]")
+ } catch (e) {
+ return "function" == typeof t
+ }
+ }(e)) return e;
+ if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function");
+ if (void 0 !== r) {
+ if (r.has(e)) return r.get(e);
+ r.set(e, t)
+ }
+
+ function t() {
+ return o(e, arguments, l(this).constructor)
+ }
+ return t.prototype = Object.create(e.prototype, {
+ constructor: {
+ value: t,
+ enumerable: !1,
+ writable: !0,
+ configurable: !0
+ }
+ }), h(t, e)
+ })(e)
+ }
+
+ function f(e) {
+ return function(e) {
+ if (Array.isArray(e)) return d(e)
+ }(e) || function(e) {
+ if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e)
+ }(e) || O(e) || function() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
+ }()
+ }
+
+ function O(e, t) {
+ if (e) {
+ if ("string" == typeof e) return d(e, t);
+ var r = Object.prototype.toString.call(e).slice(8, -1);
+ return "Object" === r && e.constructor && (r = e.constructor.name), "Map" === r || "Set" === r ? Array.from(e) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? d(e, t) : void 0
+ }
+ }
+
+ function d(e, t) {
+ (null == t || t > e.length) && (t = e.length);
+ for (var r = 0, n = new Array(t); r < t; r++) n[r] = e[r];
+ return n
+ }
+ var y = function() {
+ return c(function e() {
+ s(this, e)
+ }, [{
+ key: "add",
+ value: function(e, t, r) {
+ if ("string" != typeof e)
+ for (var n in e) this.add(n, e[n], t);
+ else(Array.isArray(e) ? e : [e]).forEach(function(e) {
+ this[e] = this[e] || [], t && this[e][r ? "unshift" : "push"](t)
+ }, this)
+ }
+ }, {
+ key: "run",
+ value: function(e, t) {
+ this[e] = this[e] || [], this[e].forEach(function(e) {
+ e.call(t && t.context ? t.context : t, t)
+ })
+ }
+ }])
+ }(),
+ b = function() {
+ return c(function e(t) {
+ s(this, e), this.jsep = t, this.registered = {}
+ }, [{
+ key: "register",
+ value: function() {
+ for (var t = this, e = arguments.length, r = new Array(e), n = 0; n < e; n++) r[n] = arguments[n];
+ r.forEach(function(e) {
+ if ("object" !== C(e) || !e.name || !e.init) throw new Error("Invalid JSEP plugin format");
+ t.registered[e.name] || (e.init(t.jsep), t.registered[e.name] = e)
+ })
+ }
+ }])
+ }(),
+ v = function() {
+ function l(e) {
+ s(this, l), this.expr = e, this.index = 0
+ }
+ return c(l, [{
+ key: "char",
+ get: function() {
+ return this.expr.charAt(this.index)
+ }
+ }, {
+ key: "code",
+ get: function() {
+ return this.expr.charCodeAt(this.index)
+ }
+ }, {
+ key: "throwError",
+ value: function(e) {
+ var t = new Error(e + " at character " + this.index);
+ throw t.index = this.index, t.description = e, t
+ }
+ }, {
+ key: "runHook",
+ value: function(e, t) {
+ if (l.hooks[e]) {
+ var r = {
+ context: this,
+ node: t
+ };
+ return l.hooks.run(e, r), r.node
+ }
+ return t
+ }
+ }, {
+ key: "searchHook",
+ value: function(e) {
+ if (l.hooks[e]) {
+ var t = {
+ context: this
+ };
+ return l.hooks[e].find(function(e) {
+ return e.call(t.context, t), t.node
+ }), t.node
+ }
+ }
+ }, {
+ key: "gobbleSpaces",
+ value: function() {
+ for (var e = this.code; e === l.SPACE_CODE || e === l.TAB_CODE || e === l.LF_CODE || e === l.CR_CODE;) e = this.expr.charCodeAt(++this.index);
+ this.runHook("gobble-spaces")
+ }
+ }, {
+ key: "parse",
+ value: function() {
+ this.runHook("before-all");
+ var e = this.gobbleExpressions(),
+ e = 1 === e.length ? e[0] : {
+ type: l.COMPOUND,
+ body: e
+ };
+ return this.runHook("after-all", e)
+ }
+ }, {
+ key: "gobbleExpressions",
+ value: function(e) {
+ for (var t, r, n = []; this.index < this.expr.length;)
+ if ((t = this.code) === l.SEMCOL_CODE || t === l.COMMA_CODE) this.index++;
+ else if (r = this.gobbleExpression()) n.push(r);
+ else if (this.index < this.expr.length) {
+ if (t === e) break;
+ this.throwError('Unexpected "' + this.char + '"')
+ }
+ return n
+ }
+ }, {
+ key: "gobbleExpression",
+ value: function() {
+ var e = this.searchHook("gobble-expression") || this.gobbleBinaryExpression();
+ return this.gobbleSpaces(), this.runHook("after-expression", e)
+ }
+ }, {
+ key: "gobbleBinaryOp",
+ value: function() {
+ this.gobbleSpaces();
+ for (var e = this.expr.substr(this.index, l.max_binop_len), t = e.length; 0 < t;) {
+ if (l.binary_ops.hasOwnProperty(e) && (!l.isIdentifierStart(this.code) || this.index + e.length < this.expr.length && !l.isIdentifierPart(this.expr.charCodeAt(this.index + e.length)))) return this.index += t, e;
+ e = e.substr(0, --t)
+ }
+ return !1
+ }
+ }, {
+ key: "gobbleBinaryExpression",
+ value: function() {
+ var e, t, r, n, i, o, a, s, u, c = this.gobbleToken();
+ if (!c) return c;
+ if (!(t = this.gobbleBinaryOp())) return c;
+ for (i = {
+ value: t,
+ prec: l.binaryPrecedence(t),
+ right_a: l.right_associative.has(t)
+ }, (o = this.gobbleToken()) || this.throwError("Expected expression after " + t), n = [c, i, o]; t = this.gobbleBinaryOp();) {
+ if (0 === (r = l.binaryPrecedence(t))) {
+ this.index -= t.length;
+ break
+ }
+ i = {
+ value: t,
+ prec: r,
+ right_a: l.right_associative.has(t)
+ }, s = t;
+ for (; 2 < n.length && (u = n[n.length - 2], i.right_a && u.right_a ? r > u.prec : r <= u.prec);) o = n.pop(), t = n.pop().value, c = n.pop(), e = {
+ type: l.BINARY_EXP,
+ operator: t,
+ left: c,
+ right: o
+ }, n.push(e);
+ (e = this.gobbleToken()) || this.throwError("Expected expression after " + s), n.push(i, e)
+ }
+ for (e = n[a = n.length - 1]; 1 < a;) e = {
+ type: l.BINARY_EXP,
+ operator: n[a - 1].value,
+ left: n[a - 2],
+ right: e
+ }, a -= 2;
+ return e
+ }
+ }, {
+ key: "gobbleToken",
+ value: function() {
+ var e, t, r, n;
+ if (this.gobbleSpaces(), n = this.searchHook("gobble-token")) return this.runHook("after-token", n);
+ if (e = this.code, l.isDecimalDigit(e) || e === l.PERIOD_CODE) return this.gobbleNumericLiteral();
+ if (e === l.SQUOTE_CODE || e === l.DQUOTE_CODE) n = this.gobbleStringLiteral();
+ else if (e === l.OBRACK_CODE) n = this.gobbleArray();
+ else {
+ for (r = (t = this.expr.substr(this.index, l.max_unop_len)).length; 0 < r;) {
+ if (l.unary_ops.hasOwnProperty(t) && (!l.isIdentifierStart(this.code) || this.index + t.length < this.expr.length && !l.isIdentifierPart(this.expr.charCodeAt(this.index + t.length)))) {
+ this.index += r;
+ var i = this.gobbleToken();
+ return i || this.throwError("missing unaryOp argument"), this.runHook("after-token", {
+ type: l.UNARY_EXP,
+ operator: t,
+ argument: i,
+ prefix: !0
+ })
+ }
+ t = t.substr(0, --r)
+ }
+ l.isIdentifierStart(e) ? (n = this.gobbleIdentifier(), l.literals.hasOwnProperty(n.name) ? n = {
+ type: l.LITERAL,
+ value: l.literals[n.name],
+ raw: n.name
+ } : n.name === l.this_str && (n = {
+ type: l.THIS_EXP
+ })) : e === l.OPAREN_CODE && (n = this.gobbleGroup())
+ }
+ return n ? (n = this.gobbleTokenProperty(n), this.runHook("after-token", n)) : this.runHook("after-token", !1)
+ }
+ }, {
+ key: "gobbleTokenProperty",
+ value: function(e) {
+ this.gobbleSpaces();
+ for (var t = this.code; t === l.PERIOD_CODE || t === l.OBRACK_CODE || t === l.OPAREN_CODE || t === l.QUMARK_CODE;) {
+ var r = void 0;
+ if (t === l.QUMARK_CODE) {
+ if (this.expr.charCodeAt(this.index + 1) !== l.PERIOD_CODE) break;
+ r = !0, this.index += 2, this.gobbleSpaces(), t = this.code
+ }
+ this.index++, t === l.OBRACK_CODE ? (e = {
+ type: l.MEMBER_EXP,
+ computed: !0,
+ object: e,
+ property: this.gobbleExpression()
+ }, this.gobbleSpaces(), (t = this.code) !== l.CBRACK_CODE && this.throwError("Unclosed ["), this.index++) : t === l.OPAREN_CODE ? e = {
+ type: l.CALL_EXP,
+ arguments: this.gobbleArguments(l.CPAREN_CODE),
+ callee: e
+ } : t !== l.PERIOD_CODE && !r || (r && this.index--, this.gobbleSpaces(), e = {
+ type: l.MEMBER_EXP,
+ computed: !1,
+ object: e,
+ property: this.gobbleIdentifier()
+ }), r && (e.optional = !0), this.gobbleSpaces(), t = this.code
+ }
+ return e
+ }
+ }, {
+ key: "gobbleNumericLiteral",
+ value: function() {
+ for (var e, t = ""; l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++);
+ if (this.code === l.PERIOD_CODE)
+ for (t += this.expr.charAt(this.index++); l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++);
+ if ("e" === (e = this.char) || "E" === e) {
+ for (t += this.expr.charAt(this.index++), "+" !== (e = this.char) && "-" !== e || (t += this.expr.charAt(this.index++)); l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++);
+ l.isDecimalDigit(this.expr.charCodeAt(this.index - 1)) || this.throwError("Expected exponent (" + t + this.char + ")")
+ }
+ return e = this.code, l.isIdentifierStart(e) ? this.throwError("Variable names cannot start with a number (" + t + this.char + ")") : (e === l.PERIOD_CODE || 1 === t.length && t.charCodeAt(0) === l.PERIOD_CODE) && this.throwError("Unexpected period"), {
+ type: l.LITERAL,
+ value: parseFloat(t),
+ raw: t
+ }
+ }
+ }, {
+ key: "gobbleStringLiteral",
+ value: function() {
+ for (var e = "", t = this.index, r = this.expr.charAt(this.index++), n = !1; this.index < this.expr.length;) {
+ var i = this.expr.charAt(this.index++);
+ if (i === r) {
+ n = !0;
+ break
+ }
+ if ("\\" === i) switch (i = this.expr.charAt(this.index++)) {
+ case "n":
+ e += "\n";
+ break;
+ case "r":
+ e += "\r";
+ break;
+ case "t":
+ e += "\t";
+ break;
+ case "b":
+ e += "\b";
+ break;
+ case "f":
+ e += "\f";
+ break;
+ case "v":
+ e += "\v";
+ break;
+ default:
+ e += i
+ } else e += i
+ }
+ return n || this.throwError('Unclosed quote after "' + e + '"'), {
+ type: l.LITERAL,
+ value: e,
+ raw: this.expr.substring(t, this.index)
+ }
+ }
+ }, {
+ key: "gobbleIdentifier",
+ value: function() {
+ var e = this.code,
+ t = this.index;
+ for (l.isIdentifierStart(e) ? this.index++ : this.throwError("Unexpected " + this.char); this.index < this.expr.length && (e = this.code, l.isIdentifierPart(e));) this.index++;
+ return {
+ type: l.IDENTIFIER,
+ name: this.expr.slice(t, this.index)
+ }
+ }
+ }, {
+ key: "gobbleArguments",
+ value: function(e) {
+ for (var t = [], r = !1, n = 0; this.index < this.expr.length;) {
+ this.gobbleSpaces();
+ var i = this.code;
+ if (i === e) {
+ r = !0, this.index++, e === l.CPAREN_CODE && n && n >= t.length && this.throwError("Unexpected token " + String.fromCharCode(e));
+ break
+ }
+ if (i === l.COMMA_CODE) {
+ if (this.index++, ++n !== t.length)
+ if (e === l.CPAREN_CODE) this.throwError("Unexpected token ,");
+ else if (e === l.CBRACK_CODE)
+ for (var o = t.length; o < n; o++) t.push(null)
+ } else t.length !== n && 0 !== n ? this.throwError("Expected comma") : ((i = this.gobbleExpression()) && i.type !== l.COMPOUND || this.throwError("Expected comma"), t.push(i))
+ }
+ return r || this.throwError("Expected " + String.fromCharCode(e)), t
+ }
+ }, {
+ key: "gobbleGroup",
+ value: function() {
+ this.index++;
+ var e = this.gobbleExpressions(l.CPAREN_CODE);
+ if (this.code === l.CPAREN_CODE) return this.index++, 1 === e.length ? e[0] : !!e.length && {
+ type: l.SEQUENCE_EXP,
+ expressions: e
+ };
+ this.throwError("Unclosed (")
+ }
+ }, {
+ key: "gobbleArray",
+ value: function() {
+ return this.index++, {
+ type: l.ARRAY_EXP,
+ elements: this.gobbleArguments(l.CBRACK_CODE)
+ }
+ }
+ }], [{
+ key: "version",
+ get: function() {
+ return "1.3.8"
+ }
+ }, {
+ key: "toString",
+ value: function() {
+ return "JavaScript Expression Parser (JSEP) v" + l.version
+ }
+ }, {
+ key: "addUnaryOp",
+ value: function(e) {
+ return l.max_unop_len = Math.max(e.length, l.max_unop_len), l.unary_ops[e] = 1, l
+ }
+ }, {
+ key: "addBinaryOp",
+ value: function(e, t, r) {
+ return l.max_binop_len = Math.max(e.length, l.max_binop_len), l.binary_ops[e] = t, r ? l.right_associative.add(e) : l.right_associative.delete(e), l
+ }
+ }, {
+ key: "addIdentifierChar",
+ value: function(e) {
+ return l.additional_identifier_chars.add(e), l
+ }
+ }, {
+ key: "addLiteral",
+ value: function(e, t) {
+ return l.literals[e] = t, l
+ }
+ }, {
+ key: "removeUnaryOp",
+ value: function(e) {
+ return delete l.unary_ops[e], e.length === l.max_unop_len && (l.max_unop_len = l.getMaxKeyLen(l.unary_ops)), l
+ }
+ }, {
+ key: "removeAllUnaryOps",
+ value: function() {
+ return l.unary_ops = {}, l.max_unop_len = 0, l
+ }
+ }, {
+ key: "removeIdentifierChar",
+ value: function(e) {
+ return l.additional_identifier_chars.delete(e), l
+ }
+ }, {
+ key: "removeBinaryOp",
+ value: function(e) {
+ return delete l.binary_ops[e], e.length === l.max_binop_len && (l.max_binop_len = l.getMaxKeyLen(l.binary_ops)), l.right_associative.delete(e), l
+ }
+ }, {
+ key: "removeAllBinaryOps",
+ value: function() {
+ return l.binary_ops = {}, l.max_binop_len = 0, l
+ }
+ }, {
+ key: "removeLiteral",
+ value: function(e) {
+ return delete l.literals[e], l
+ }
+ }, {
+ key: "removeAllLiterals",
+ value: function() {
+ return l.literals = {}, l
+ }
+ }, {
+ key: "parse",
+ value: function(e) {
+ return new l(e).parse()
+ }
+ }, {
+ key: "getMaxKeyLen",
+ value: function(e) {
+ return Math.max.apply(Math, [0].concat(f(Object.keys(e).map(function(e) {
+ return e.length
+ }))))
+ }
+ }, {
+ key: "isDecimalDigit",
+ value: function(e) {
+ return 48 <= e && e <= 57
+ }
+ }, {
+ key: "binaryPrecedence",
+ value: function(e) {
+ return l.binary_ops[e] || 0
+ }
+ }, {
+ key: "isIdentifierStart",
+ value: function(e) {
+ return 65 <= e && e <= 90 || 97 <= e && e <= 122 || 128 <= e && !l.binary_ops[String.fromCharCode(e)] || l.additional_identifier_chars.has(String.fromCharCode(e))
+ }
+ }, {
+ key: "isIdentifierPart",
+ value: function(e) {
+ return l.isIdentifierStart(e) || l.isDecimalDigit(e)
+ }
+ }])
+ }(),
+ y = new y;
+ Object.assign(v, {
+ hooks: y,
+ plugins: new b(v),
+ COMPOUND: "Compound",
+ SEQUENCE_EXP: "SequenceExpression",
+ IDENTIFIER: "Identifier",
+ MEMBER_EXP: "MemberExpression",
+ LITERAL: "Literal",
+ THIS_EXP: "ThisExpression",
+ CALL_EXP: "CallExpression",
+ UNARY_EXP: "UnaryExpression",
+ BINARY_EXP: "BinaryExpression",
+ ARRAY_EXP: "ArrayExpression",
+ TAB_CODE: 9,
+ LF_CODE: 10,
+ CR_CODE: 13,
+ SPACE_CODE: 32,
+ PERIOD_CODE: 46,
+ COMMA_CODE: 44,
+ SQUOTE_CODE: 39,
+ DQUOTE_CODE: 34,
+ OPAREN_CODE: 40,
+ CPAREN_CODE: 41,
+ OBRACK_CODE: 91,
+ CBRACK_CODE: 93,
+ QUMARK_CODE: 63,
+ SEMCOL_CODE: 59,
+ COLON_CODE: 58,
+ unary_ops: {
+ "-": 1,
+ "!": 1,
+ "~": 1,
+ "+": 1
+ },
+ binary_ops: {
+ "||": 1,
+ "&&": 2,
+ "|": 3,
+ "^": 4,
+ "&": 5,
+ "==": 6,
+ "!=": 6,
+ "===": 6,
+ "!==": 6,
+ "<": 7,
+ ">": 7,
+ "<=": 7,
+ ">=": 7,
+ "<<": 8,
+ ">>": 8,
+ ">>>": 8,
+ "+": 9,
+ "-": 9,
+ "*": 10,
+ "/": 10,
+ "%": 10
+ },
+ right_associative: new Set,
+ additional_identifier_chars: new Set(["$", "_"]),
+ literals: {
+ true: !0,
+ false: !1,
+ null: null
+ },
+ this_str: "this"
+ }), v.max_unop_len = v.getMaxKeyLen(v.unary_ops), v.max_binop_len = v.getMaxKeyLen(v.binary_ops);
+ var E = function(e) {
+ return new v(e).parse()
+ };
+ Object.getOwnPropertyNames(v).forEach(function(e) {
+ void 0 === E[e] && "prototype" !== e && (E[e] = v[e])
+ }), E.Jsep = v;
+ b = {
+ name: "ternary",
+ init: function(o) {
+ o.hooks.add("after-expression", function(e) {
+ if (e.node && this.code === o.QUMARK_CODE) {
+ this.index++;
+ var t = e.node,
+ r = this.gobbleExpression();
+ if (r || this.throwError("Expected expression"), this.gobbleSpaces(), this.code === o.COLON_CODE) {
+ this.index++;
+ var n = this.gobbleExpression();
+ if (n || this.throwError("Expected expression"), e.node = {
+ type: "ConditionalExpression",
+ test: t,
+ consequent: r,
+ alternate: n
+ }, t.operator && o.binary_ops[t.operator] <= .9) {
+ for (var i = t; i.right.operator && o.binary_ops[i.right.operator] <= .9;) i = i.right;
+ e.node.test = i.right, i.right = e.node, e.node = t
+ }
+ } else this.throwError("Expected :")
+ }
+ })
+ }
+ };
+ E.plugins.register(b);
+ var b = {
+ name: "regex",
+ init: function(s) {
+ s.hooks.add("gobble-token", function(e) {
+ if (47 === this.code) {
+ for (var t = ++this.index, r = !1; this.index < this.expr.length;) {
+ if (47 === this.code && !r) {
+ for (var n = this.expr.slice(t, this.index), i = ""; ++this.index < this.expr.length;) {
+ var o = this.code;
+ if (!(97 <= o && o <= 122 || 65 <= o && o <= 90 || 48 <= o && o <= 57)) break;
+ i += this.char
+ }
+ var a = void 0;
+ try {
+ a = new RegExp(n, i)
+ } catch (e) {
+ this.throwError(e.message)
+ }
+ return e.node = {
+ type: s.LITERAL,
+ value: a,
+ raw: this.expr.slice(t - 1, this.index)
+ }, e.node = this.gobbleTokenProperty(e.node), e.node
+ }
+ this.code === s.OBRACK_CODE ? r = !0 : r && this.code === s.CBRACK_CODE && (r = !1), this.index += 92 === this.code ? 2 : 1
+ }
+ this.throwError("Unclosed Regex")
+ }
+ })
+ }
+ },
+ g = {
+ name: "assignment",
+ assignmentOperators: new Set(["=", "*=", "**=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|="]),
+ updateOperators: [43, 45],
+ assignmentPrecedence: .9,
+ init: function(t) {
+ var n = [t.IDENTIFIER, t.MEMBER_EXP];
+ g.assignmentOperators.forEach(function(e) {
+ return t.addBinaryOp(e, g.assignmentPrecedence, !0)
+ }), t.hooks.add("gobble-token", function(e) {
+ var t = this,
+ r = this.code;
+ g.updateOperators.some(function(e) {
+ return e === r && e === t.expr.charCodeAt(t.index + 1)
+ }) && (this.index += 2, e.node = {
+ type: "UpdateExpression",
+ operator: 43 === r ? "++" : "--",
+ argument: this.gobbleTokenProperty(this.gobbleIdentifier()),
+ prefix: !0
+ }, e.node.argument && n.includes(e.node.argument.type) || this.throwError("Unexpected ".concat(e.node.operator)))
+ }), t.hooks.add("after-token", function(e) {
+ var t, r = this;
+ e.node && (t = this.code, g.updateOperators.some(function(e) {
+ return e === t && e === r.expr.charCodeAt(r.index + 1)
+ }) && (n.includes(e.node.type) || this.throwError("Unexpected ".concat(e.node.operator)), this.index += 2, e.node = {
+ type: "UpdateExpression",
+ operator: 43 === t ? "++" : "--",
+ argument: e.node,
+ prefix: !1
+ }))
+ }), t.hooks.add("after-expression", function(e) {
+ e.node && ! function t(e) {
+ g.assignmentOperators.has(e.operator) ? (e.type = "AssignmentExpression", t(e.left), t(e.right)) : e.operator || Object.values(e).forEach(function(e) {
+ e && "object" === C(e) && t(e)
+ })
+ }(e.node)
+ })
+ }
+ },
+ A = Object.prototype.hasOwnProperty;
+
+ function w(e, t) {
+ return (e = e.slice()).push(t), e
+ }
+
+ function k(e, t) {
+ return (t = t.slice()).unshift(e), t
+ }
+ var x = function() {
+ function r(e) {
+ var t;
+ return s(this, r), (t = n(this, r, ['JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'])).avoidNew = !0, t.value = e, t.name = "NewError", t
+ }
+ return function(e, t) {
+ if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
+ e.prototype = Object.create(t && t.prototype, {
+ constructor: {
+ value: e,
+ writable: !0,
+ configurable: !0
+ }
+ }), Object.defineProperty(e, "prototype", {
+ writable: !1
+ }), t && h(e, t)
+ }(r, p(Error)), c(r)
+ }();
+
+ function F(e, t, r, n, i) {
+ if (!(this instanceof F)) try {
+ return new F(e, t, r, n, i)
+ } catch (e) {
+ if (!e.avoidNew) throw e;
+ return e.value
+ }
+ "string" == typeof e && (i = n, n = r, r = t, t = e, e = null);
+ var o = e && "object" === C(e);
+ if (e = e || {}, this.json = e.json || r, this.path = e.path || t, this.resultType = e.resultType || "value", this.flatten = e.flatten || !1, this.wrap = !A.call(e, "wrap") || e.wrap, this.sandbox = e.sandbox || {}, this.eval = void 0 === e.eval ? "safe" : e.eval, this.ignoreEvalErrors = void 0 !== e.ignoreEvalErrors && e.ignoreEvalErrors, this.parent = e.parent || null, this.parentProperty = e.parentProperty || null, this.callback = e.callback || n || null, this.otherTypeCallback = e.otherTypeCallback || i || function() {
+ throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.")
+ }, !1 !== e.autostart) {
+ var a = {
+ path: o ? e.path : t
+ };
+ o ? "json" in e && (a.json = e.json) : a.json = r;
+ a = this.evaluate(a);
+ if (!a || "object" !== C(a)) throw new x(a);
+ return a
+ }
+ }
+ F.prototype.evaluate = function(e, t, r, n) {
+ var i = this,
+ o = this.parent,
+ a = this.parentProperty,
+ s = this.flatten,
+ u = this.wrap;
+ if (this.currResultType = this.resultType, this.currEval = this.eval, this.currSandbox = this.sandbox, r = r || this.callback, this.currOtherTypeCallback = n || this.otherTypeCallback, t = t || this.json, (e = e || this.path) && "object" === C(e) && !Array.isArray(e)) {
+ if (!e.path && "" !== e.path) throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().');
+ if (!A.call(e, "json")) throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().');
+ t = e.json, s = A.call(e, "flatten") ? e.flatten : s, this.currResultType = A.call(e, "resultType") ? e.resultType : this.currResultType, this.currSandbox = A.call(e, "sandbox") ? e.sandbox : this.currSandbox, u = A.call(e, "wrap") ? e.wrap : u, this.currEval = A.call(e, "eval") ? e.eval : this.currEval, r = A.call(e, "callback") ? e.callback : r, this.currOtherTypeCallback = A.call(e, "otherTypeCallback") ? e.otherTypeCallback : this.currOtherTypeCallback, o = A.call(e, "parent") ? e.parent : o, a = A.call(e, "parentProperty") ? e.parentProperty : a, e = e.path
+ }
+ if (o = o || null, a = a || null, Array.isArray(e) && (e = F.toPathString(e)), (e || "" === e) && t) {
+ e = F.toPathArray(e);
+ "$" === e[0] && 1 < e.length && e.shift(), this._hasParentSelector = null;
+ r = this._trace(e, t, ["$"], o, a, r).filter(function(e) {
+ return e && !e.isParentSelector
+ });
+ return r.length ? u || 1 !== r.length || r[0].hasArrExpr ? r.reduce(function(e, t) {
+ t = i._getPreferredOutput(t);
+ return s && Array.isArray(t) ? e = e.concat(t) : e.push(t), e
+ }, []) : this._getPreferredOutput(r[0]) : u ? [] : void 0
+ }
+ }, F.prototype._getPreferredOutput = function(e) {
+ var t = this.currResultType;
+ switch (t) {
+ case "all":
+ var r = Array.isArray(e.path) ? e.path : F.toPathArray(e.path);
+ return e.pointer = F.toPointer(r), e.path = "string" == typeof e.path ? e.path : F.toPathString(e.path), e;
+ case "value":
+ case "parent":
+ case "parentProperty":
+ return e[t];
+ case "path":
+ return F.toPathString(e[t]);
+ case "pointer":
+ return F.toPointer(e.path);
+ default:
+ throw new TypeError("Unknown result type")
+ }
+ }, F.prototype._handleCallback = function(e, t, r) {
+ var n;
+ t && (n = this._getPreferredOutput(e), e.path = "string" == typeof e.path ? e.path : F.toPathString(e.path), t(n, r, e))
+ }, F.prototype._trace = function(t, n, i, o, a, s, e, r) {
+ var u = this;
+ if (!t.length) return v = {
+ path: i,
+ value: n,
+ parent: o,
+ parentProperty: a,
+ hasArrExpr: e
+ }, this._handleCallback(v, s, "value"), v;
+ var c = t[0],
+ l = t.slice(1),
+ h = [];
+
+ function p(e) {
+ Array.isArray(e) ? e.forEach(function(e) {
+ h.push(e)
+ }) : h.push(e)
+ }
+ if (("string" != typeof c || r) && n && A.call(n, c)) p(this._trace(l, n[c], w(i, c), n, c, s, e));
+ else if ("*" === c) this._walk(n, function(e) {
+ p(u._trace(l, n[e], w(i, e), n, e, s, !0, !0))
+ });
+ else if (".." === c) p(this._trace(l, n, i, o, a, s, e)), this._walk(n, function(e) {
+ "object" === C(n[e]) && p(u._trace(t.slice(), n[e], w(i, e), n, e, s, !0))
+ });
+ else {
+ if ("^" === c) return this._hasParentSelector = !0, {
+ path: i.slice(0, -1),
+ expr: l,
+ isParentSelector: !0
+ };
+ if ("~" === c) return v = {
+ path: w(i, c),
+ value: a,
+ parent: o,
+ parentProperty: null
+ }, this._handleCallback(v, s, "property"), v;
+ if ("$" === c) p(this._trace(l, n, i, null, null, s, e));
+ else if (/^(\x2D?[0-9]*):(\x2D?[0-9]*):?([0-9]*)$/.test(c)) p(this._slice(c, l, n, i, o, a, s));
+ else if (0 === c.indexOf("?(")) {
+ if (!1 === this.currEval) throw new Error("Eval [?(expr)] prevented in JSONPath expression.");
+ var f = c.replace(/^\?\(((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?)\)$/, "$1"),
+ d = /@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])?((?:[\0->@-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)['\[](\??\((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\))(?!(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])\)\])['\]]/g.exec(f);
+ d ? this._walk(n, function(e) {
+ var t = [d[2]],
+ r = d[1] ? n[e][d[1]] : n[e];
+ 0 < u._trace(t, r, i, o, a, s, !0).length && p(u._trace(l, n[e], w(i, e), n, e, s, !0))
+ }) : this._walk(n, function(e) {
+ u._eval(f, n[e], e, i, o, a) && p(u._trace(l, n[e], w(i, e), n, e, s, !0))
+ })
+ } else if ("(" === c[0]) {
+ if (!1 === this.currEval) throw new Error("Eval [(expr)] prevented in JSONPath expression.");
+ p(this._trace(k(this._eval(c, n, i[i.length - 1], i.slice(0, -1), o, a), l), n, i, o, a, s, e))
+ } else if ("@" === c[0]) {
+ var y = !1,
+ b = c.slice(1, -2);
+ switch (b) {
+ case "scalar":
+ n && ["object", "function"].includes(C(n)) || (y = !0);
+ break;
+ case "boolean":
+ case "string":
+ case "undefined":
+ case "function":
+ C(n) === b && (y = !0);
+ break;
+ case "integer":
+ !Number.isFinite(n) || n % 1 || (y = !0);
+ break;
+ case "number":
+ Number.isFinite(n) && (y = !0);
+ break;
+ case "nonFinite":
+ "number" != typeof n || Number.isFinite(n) || (y = !0);
+ break;
+ case "object":
+ n && C(n) === b && (y = !0);
+ break;
+ case "array":
+ Array.isArray(n) && (y = !0);
+ break;
+ case "other":
+ y = this.currOtherTypeCallback(n, i, o, a);
+ break;
+ case "null":
+ null === n && (y = !0);
+ break;
+ default:
+ throw new TypeError("Unknown value type " + b)
+ }
+ if (y) return v = {
+ path: i,
+ value: n,
+ parent: o,
+ parentProperty: a
+ }, this._handleCallback(v, s, "value"), v
+ } else if ("`" === c[0] && n && A.call(n, c.slice(1))) {
+ var v = c.slice(1);
+ p(this._trace(l, n[v], w(i, v), n, v, s, e, !0))
+ } else if (c.includes(",")) {
+ var E = function(e, t) {
+ var r = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
+ if (!r) {
+ if (Array.isArray(e) || (r = O(e)) || t && e && "number" == typeof e.length) {
+ r && (e = r);
+ var n = 0,
+ t = function() {};
+ return {
+ s: t,
+ n: function() {
+ return n >= e.length ? {
+ done: !0
+ } : {
+ done: !1,
+ value: e[n++]
+ }
+ },
+ e: function(e) {
+ throw e
+ },
+ f: t
+ }
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
+ }
+ var i, o = !0,
+ a = !1;
+ return {
+ s: function() {
+ r = r.call(e)
+ },
+ n: function() {
+ var e = r.next();
+ return o = e.done, e
+ },
+ e: function(e) {
+ a = !0, i = e
+ },
+ f: function() {
+ try {
+ o || null == r.return || r.return()
+ } finally {
+ if (a) throw i
+ }
+ }
+ }
+ }(c.split(","));
+ try {
+ for (E.s(); !(g = E.n()).done;) {
+ var g = g.value;
+ p(this._trace(k(g, l), n, i, o, a, s, !0))
+ }
+ } catch (e) {
+ E.e(e)
+ } finally {
+ E.f()
+ }
+ } else !r && n && A.call(n, c) && p(this._trace(l, n[c], w(i, c), n, c, s, e, !0))
+ }
+ if (this._hasParentSelector)
+ for (var x = 0; x < h.length; x++) {
+ var F = h[x];
+ if (F && F.isParentSelector) {
+ var D = this._trace(F.expr, n, F.path, o, a, s, e);
+ if (Array.isArray(D)) {
+ h[x] = D[0];
+ for (var _ = D.length, m = 1; m < _; m++) x++, h.splice(x, 0, D[m])
+ } else h[x] = D
+ }
+ }
+ return h
+ }, F.prototype._walk = function(e, t) {
+ if (Array.isArray(e))
+ for (var r = e.length, n = 0; n < r; n++) t(n);
+ else e && "object" === C(e) && Object.keys(e).forEach(function(e) {
+ t(e)
+ })
+ }, F.prototype._slice = function(e, t, r, n, i, o, a) {
+ if (Array.isArray(r)) {
+ for (var s = r.length, u = e.split(":"), c = u[2] && Number.parseInt(u[2]) || 1, e = u[0] && Number.parseInt(u[0]) || 0, l = u[1] && Number.parseInt(u[1]) || s, e = e < 0 ? Math.max(0, e + s) : Math.min(s, e), l = l < 0 ? Math.max(0, l + s) : Math.min(s, l), h = [], p = e; p < l; p += c) this._trace(k(p, t), r, n, i, o, a, !0).forEach(function(e) {
+ h.push(e)
+ });
+ return h
+ }
+ }, F.prototype._eval = function(t, e, r, n, i, o) {
+ var a = this;
+ this.currSandbox._$_parentProperty = o, this.currSandbox._$_parent = i, this.currSandbox._$_property = r, this.currSandbox._$_root = this.json, this.currSandbox._$_v = e;
+ e = t.includes("@path");
+ e && (this.currSandbox._$_path = F.toPathString(n.concat([r])));
+ var s = this.currEval + "Script:" + t;
+ if (!F.cache[s]) {
+ var u = t.replace(/@parentProperty/g, "_$_parentProperty").replace(/@parent/g, "_$_parent").replace(/@property/g, "_$_property").replace(/@root/g, "_$_root").replace(/@([\t-\r \)\.\[\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF])/g, "_$_v$1");
+ if (e && (u = u.replace(/@path/g, "_$_path")), "safe" === this.currEval || !0 === this.currEval || void 0 === this.currEval) F.cache[s] = new this.safeVm.Script(u);
+ else if ("native" === this.currEval) F.cache[s] = new this.vm.Script(u);
+ else if ("function" == typeof this.currEval && this.currEval.prototype && A.call(this.currEval.prototype, "runInNewContext")) {
+ e = this.currEval;
+ F.cache[s] = new e(u)
+ } else {
+ if ("function" != typeof this.currEval) throw new TypeError('Unknown "eval" property "'.concat(this.currEval, '"'));
+ F.cache[s] = {
+ runInNewContext: function(e) {
+ return a.currEval(u, e)
+ }
+ }
+ }
+ }
+ try {
+ return F.cache[s].runInNewContext(this.currSandbox)
+ } catch (e) {
+ if (this.ignoreEvalErrors) return !1;
+ throw new Error("jsonPath: " + e.message + ": " + t)
+ }
+ }, F.cache = {}, F.toPathString = function(e) {
+ for (var t = e, r = t.length, n = "$", i = 1; i < r; i++) /^(~|\^|@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\(\))$/.test(t[i]) || (n += /^[\*0-9]+$/.test(t[i]) ? "[" + t[i] + "]" : "['" + t[i] + "']");
+ return n
+ }, F.toPointer = function(e) {
+ for (var t = e, r = t.length, n = "", i = 1; i < r; i++) /^(~|\^|@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\(\))$/.test(t[i]) || (n += "/" + t[i].toString().replace(/~/g, "~0").replace(/\//g, "~1"));
+ return n
+ }, F.toPathArray = function(e) {
+ var t = F.cache;
+ if (t[e]) return t[e].concat();
+ var r = [],
+ n = e.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/g, ";$&;").replace(/['\[](\??\((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\))['\]](?!(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])\])/g, function(e, t) {
+ return "[#" + (r.push(t) - 1) + "]"
+ }).replace(/\[["']((?:[\0-&\(-\\\^-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)["']\]/g, function(e, t) {
+ return "['" + t.replace(/\./g, "%@%").replace(/~/g, "%%@@%%") + "']"
+ }).replace(/~/g, ";~;").replace(/["']?\.["']?(?!(?:[\0-Z\\-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*\])|\[["']?/g, ";").replace(/%@%/g, ".").replace(/%%@@%%/g, "~").replace(/(?:;)?(\^+)(?:;)?/g, function(e, t) {
+ return ";" + t.split("").join(";") + ";"
+ }).replace(/;;;|;;/g, ";..;").replace(/;$|'?\]|'$/g, "").split(";").map(function(e) {
+ var t = e.match(/#([0-9]+)/);
+ return t && t[1] ? r[t[1]] : e
+ });
+ return t[e] = n, t[e].concat()
+ };
+ E.plugins.register(b, g);
+ var D = {
+ evalAst: function(e, t) {
+ switch (e.type) {
+ case "BinaryExpression":
+ case "LogicalExpression":
+ return D.evalBinaryExpression(e, t);
+ case "Compound":
+ return D.evalCompound(e, t);
+ case "ConditionalExpression":
+ return D.evalConditionalExpression(e, t);
+ case "Identifier":
+ return D.evalIdentifier(e, t);
+ case "Literal":
+ return D.evalLiteral(e, t);
+ case "MemberExpression":
+ return D.evalMemberExpression(e, t);
+ case "UnaryExpression":
+ return D.evalUnaryExpression(e, t);
+ case "ArrayExpression":
+ return D.evalArrayExpression(e, t);
+ case "CallExpression":
+ return D.evalCallExpression(e, t);
+ case "AssignmentExpression":
+ return D.evalAssignmentExpression(e, t);
+ default:
+ throw SyntaxError("Unexpected expression", e)
+ }
+ },
+ evalBinaryExpression: function(e, t) {
+ return {
+ "||": function(e, t) {
+ return e || t()
+ },
+ "&&": function(e, t) {
+ return e && t()
+ },
+ "|": function(e, t) {
+ return e | t()
+ },
+ "^": function(e, t) {
+ return e ^ t()
+ },
+ "&": function(e, t) {
+ return e & t()
+ },
+ "==": function(e, t) {
+ return e == t()
+ },
+ "!=": function(e, t) {
+ return e != t()
+ },
+ "===": function(e, t) {
+ return e === t()
+ },
+ "!==": function(e, t) {
+ return e !== t()
+ },
+ "<": function(e, t) {
+ return e < t()
+ },
+ ">": function(e, t) {
+ return e > t()
+ },
+ "<=": function(e, t) {
+ return e <= t()
+ },
+ ">=": function(e, t) {
+ return e >= t()
+ },
+ "<<": function(e, t) {
+ return e << t()
+ },
+ ">>": function(e, t) {
+ return e >> t()
+ },
+ ">>>": function(e, t) {
+ return e >>> t()
+ },
+ "+": function(e, t) {
+ return e + t()
+ },
+ "-": function(e, t) {
+ return e - t()
+ },
+ "*": function(e, t) {
+ return e * t()
+ },
+ "/": function(e, t) {
+ return e / t()
+ },
+ "%": function(e, t) {
+ return e % t()
+ }
+ } [e.operator](D.evalAst(e.left, t), function() {
+ return D.evalAst(e.right, t)
+ })
+ },
+ evalCompound: function(e, t) {
+ for (var r = 0; r < e.body.length; r++) {
+ "Identifier" === e.body[r].type && ["var", "let", "const"].includes(e.body[r].name) && e.body[r + 1] && "AssignmentExpression" === e.body[r + 1].type && (r += 1);
+ var n = e.body[r],
+ i = D.evalAst(n, t)
+ }
+ return i
+ },
+ evalConditionalExpression: function(e, t) {
+ return D.evalAst(e.test, t) ? D.evalAst(e.consequent, t) : D.evalAst(e.alternate, t)
+ },
+ evalIdentifier: function(e, t) {
+ if (e.name in t) return t[e.name];
+ throw ReferenceError("".concat(e.name, " is not defined"))
+ },
+ evalLiteral: function(e) {
+ return e.value
+ },
+ evalMemberExpression: function(e, t) {
+ var r = e.computed ? D.evalAst(e.property) : e.property.name,
+ t = D.evalAst(e.object, t),
+ r = t[r];
+ return "function" == typeof r ? r.bind(t) : r
+ },
+ evalUnaryExpression: function(e, t) {
+ return {
+ "-": function(e) {
+ return -D.evalAst(e, t)
+ },
+ "!": function(e) {
+ return !D.evalAst(e, t)
+ },
+ "~": function(e) {
+ return ~D.evalAst(e, t)
+ },
+ "+": function(e) {
+ return +D.evalAst(e, t)
+ }
+ } [e.operator](e.argument)
+ },
+ evalArrayExpression: function(e, t) {
+ return e.elements.map(function(e) {
+ return D.evalAst(e, t)
+ })
+ },
+ evalCallExpression: function(e, t) {
+ var r = e.arguments.map(function(e) {
+ return D.evalAst(e, t)
+ });
+ return D.evalAst(e.callee, t).apply(void 0, f(r))
+ },
+ evalAssignmentExpression: function(e, t) {
+ if ("Identifier" !== e.left.type) throw SyntaxError("Invalid left-hand side in assignment");
+ var r = e.left.name,
+ e = D.evalAst(e.right, t);
+ return t[r] = e, t[r]
+ }
+ },
+ b = function() {
+ return c(function e(t) {
+ s(this, e), this.code = t, this.ast = E(this.code)
+ }, [{
+ key: "runInNewContext",
+ value: function(e) {
+ e = r({}, e);
+ return D.evalAst(this.ast, e)
+ }
+ }])
+ }();
+ F.prototype.vm = {
+ Script: function() {
+ return c(function e(t) {
+ s(this, e), this.code = t
+ }, [{
+ key: "runInNewContext",
+ value: function(n) {
+ var e = this.code,
+ t = Object.keys(n),
+ r = [];
+ ! function(e, t, r) {
+ for (var n = e.length, i = 0; i < n; i++) r(e[i]) && t.push(e.splice(i--, 1)[0])
+ }(t, r, function(e) {
+ return "function" == typeof n[e]
+ });
+ var i = t.map(function(e) {
+ return n[e]
+ }),
+ r = r.reduce(function(e, t) {
+ var r = n[t].toString();
+ return /function/.test(r) || (r = "function " + r), "var " + t + "=" + r + ";" + e
+ }, "");
+ /(["'])use strict\1/.test(e = r + e) || t.includes("arguments") || (e = "var arguments = undefined;" + e);
+ r = (e = e.replace(/;[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*$/, "")).lastIndexOf(";"), e = -1 < r ? e.slice(0, r + 1) + " return " + e.slice(r + 1) : " return " + e;
+ return o(Function, t.concat([e])).apply(void 0, f(i))
+ }
+ }])
+ }()
+ }, F.prototype.safeVm = {
+ Script: b
+ }, e.JSONPath = F, e.SafeScript = b
+});
\ No newline at end of file
diff --git a/JS/node-rsa.js b/JS/node-rsa.js
new file mode 100644
index 0000000..fab092b
--- /dev/null
+++ b/JS/node-rsa.js
@@ -0,0 +1,5858 @@
+/*! For license information please see node-rsa.bundle.js.LICENSE.txt */ ! function(t, e) {
+ "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.NODERSA = e() : t.NODERSA = e()
+}(globalThis, (() => (() => {
+ var t = {
+ 6395: t => {
+ t.exports = {
+ newInvalidAsn1Error: function(t) {
+ var e = new Error;
+ return e.name = "InvalidAsn1Error", e.message = t || "", e
+ }
+ }
+ },
+ 5670: (t, e, r) => {
+ var n = r(6395),
+ i = r(6299),
+ o = r(3319),
+ s = r(1431);
+ for (var a in t.exports = {
+ Reader: o,
+ Writer: s
+ }, i) i.hasOwnProperty(a) && (t.exports[a] = i[a]);
+ for (var f in n) n.hasOwnProperty(f) && (t.exports[f] = n[f])
+ },
+ 3319: (t, e, r) => {
+ var n = r(4529),
+ i = r(4774).Buffer,
+ o = r(6299),
+ s = r(6395).newInvalidAsn1Error;
+
+ function a(t) {
+ if (!t || !i.isBuffer(t)) throw new TypeError("data must be a node Buffer");
+ this._buf = t, this._size = t.length, this._len = 0, this._offset = 0
+ }
+ Object.defineProperty(a.prototype, "length", {
+ enumerable: !0,
+ get: function() {
+ return this._len
+ }
+ }), Object.defineProperty(a.prototype, "offset", {
+ enumerable: !0,
+ get: function() {
+ return this._offset
+ }
+ }), Object.defineProperty(a.prototype, "remain", {
+ get: function() {
+ return this._size - this._offset
+ }
+ }), Object.defineProperty(a.prototype, "buffer", {
+ get: function() {
+ return this._buf.slice(this._offset)
+ }
+ }), a.prototype.readByte = function(t) {
+ if (this._size - this._offset < 1) return null;
+ var e = 255 & this._buf[this._offset];
+ return t || (this._offset += 1), e
+ }, a.prototype.peek = function() {
+ return this.readByte(!0)
+ }, a.prototype.readLength = function(t) {
+ if (void 0 === t && (t = this._offset), t >= this._size) return null;
+ var e = 255 & this._buf[t++];
+ if (null === e) return null;
+ if (128 & ~e) this._len = e;
+ else {
+ if (0 == (e &= 127)) throw s("Indefinite length not supported");
+ if (e > 4) throw s("encoding too long");
+ if (this._size - t < e) return null;
+ this._len = 0;
+ for (var r = 0; r < e; r++) this._len = (this._len << 8) + (255 & this._buf[t++])
+ }
+ return t
+ }, a.prototype.readSequence = function(t) {
+ var e = this.peek();
+ if (null === e) return null;
+ if (void 0 !== t && t !== e) throw s("Expected 0x" + t.toString(16) + ": got 0x" + e.toString(16));
+ var r = this.readLength(this._offset + 1);
+ return null === r ? null : (this._offset = r, e)
+ }, a.prototype.readInt = function() {
+ return this._readTag(o.Integer)
+ }, a.prototype.readBoolean = function() {
+ return 0 !== this._readTag(o.Boolean)
+ }, a.prototype.readEnumeration = function() {
+ return this._readTag(o.Enumeration)
+ }, a.prototype.readString = function(t, e) {
+ t || (t = o.OctetString);
+ var r = this.peek();
+ if (null === r) return null;
+ if (r !== t) throw s("Expected 0x" + t.toString(16) + ": got 0x" + r.toString(16));
+ var n = this.readLength(this._offset + 1);
+ if (null === n) return null;
+ if (this.length > this._size - n) return null;
+ if (this._offset = n, 0 === this.length) return e ? i.alloc(0) : "";
+ var a = this._buf.slice(this._offset, this._offset + this.length);
+ return this._offset += this.length, e ? a : a.toString("utf8")
+ }, a.prototype.readOID = function(t) {
+ t || (t = o.OID);
+ var e = this.readString(t, !0);
+ if (null === e) return null;
+ for (var r = [], n = 0, i = 0; i < e.length; i++) {
+ var s = 255 & e[i];
+ n <<= 7, n += 127 & s, 128 & s || (r.push(n), n = 0)
+ }
+ return n = r.shift(), r.unshift(n % 40), r.unshift(n / 40 | 0), r.join(".")
+ }, a.prototype._readTag = function(t) {
+ n.ok(void 0 !== t);
+ var e = this.peek();
+ if (null === e) return null;
+ if (e !== t) throw s("Expected 0x" + t.toString(16) + ": got 0x" + e.toString(16));
+ var r = this.readLength(this._offset + 1);
+ if (null === r) return null;
+ if (this.length > 4) throw s("Integer too long: " + this.length);
+ if (this.length > this._size - r) return null;
+ this._offset = r;
+ for (var i = this._buf[this._offset], o = 0, a = 0; a < this.length; a++) o <<= 8, o |= 255 & this._buf[this._offset++];
+ return 128 & ~i || 4 === a || (o -= 1 << 8 * a), 0 | o
+ }, t.exports = a
+ },
+ 6299: t => {
+ t.exports = {
+ EOC: 0,
+ Boolean: 1,
+ Integer: 2,
+ BitString: 3,
+ OctetString: 4,
+ Null: 5,
+ OID: 6,
+ ObjectDescriptor: 7,
+ External: 8,
+ Real: 9,
+ Enumeration: 10,
+ PDV: 11,
+ Utf8String: 12,
+ RelativeOID: 13,
+ Sequence: 16,
+ Set: 17,
+ NumericString: 18,
+ PrintableString: 19,
+ T61String: 20,
+ VideotexString: 21,
+ IA5String: 22,
+ UTCTime: 23,
+ GeneralizedTime: 24,
+ GraphicString: 25,
+ VisibleString: 26,
+ GeneralString: 28,
+ UniversalString: 29,
+ CharacterString: 30,
+ BMPString: 31,
+ Constructor: 32,
+ Context: 128
+ }
+ },
+ 1431: (t, e, r) => {
+ var n = r(4529),
+ i = r(4774).Buffer,
+ o = r(6299),
+ s = r(6395).newInvalidAsn1Error,
+ a = {
+ size: 1024,
+ growthFactor: 8
+ };
+
+ function f(t) {
+ var e, r;
+ e = a, r = t || {}, n.ok(e), n.equal(typeof e, "object"), n.ok(r), n.equal(typeof r, "object"), Object.getOwnPropertyNames(e).forEach((function(t) {
+ if (!r[t]) {
+ var n = Object.getOwnPropertyDescriptor(e, t);
+ Object.defineProperty(r, t, n)
+ }
+ })), t = r, this._buf = i.alloc(t.size || 1024), this._size = this._buf.length, this._offset = 0, this._options = t, this._seq = []
+ }
+ Object.defineProperty(f.prototype, "buffer", {
+ get: function() {
+ if (this._seq.length) throw s(this._seq.length + " unended sequence(s)");
+ return this._buf.slice(0, this._offset)
+ }
+ }), f.prototype.writeByte = function(t) {
+ if ("number" != typeof t) throw new TypeError("argument must be a Number");
+ this._ensure(1), this._buf[this._offset++] = t
+ }, f.prototype.writeInt = function(t, e) {
+ if ("number" != typeof t) throw new TypeError("argument must be a Number");
+ "number" != typeof e && (e = o.Integer);
+ for (var r = 4;
+ (!(4286578688 & t) || -8388608 == (4286578688 & t)) && r > 1;) r--, t <<= 8;
+ if (r > 4) throw s("BER ints cannot be > 0xffffffff");
+ for (this._ensure(2 + r), this._buf[this._offset++] = e, this._buf[this._offset++] = r; r-- > 0;) this._buf[this._offset++] = (4278190080 & t) >>> 24, t <<= 8
+ }, f.prototype.writeNull = function() {
+ this.writeByte(o.Null), this.writeByte(0)
+ }, f.prototype.writeEnumeration = function(t, e) {
+ if ("number" != typeof t) throw new TypeError("argument must be a Number");
+ return "number" != typeof e && (e = o.Enumeration), this.writeInt(t, e)
+ }, f.prototype.writeBoolean = function(t, e) {
+ if ("boolean" != typeof t) throw new TypeError("argument must be a Boolean");
+ "number" != typeof e && (e = o.Boolean), this._ensure(3), this._buf[this._offset++] = e, this._buf[this._offset++] = 1, this._buf[this._offset++] = t ? 255 : 0
+ }, f.prototype.writeString = function(t, e) {
+ if ("string" != typeof t) throw new TypeError("argument must be a string (was: " + typeof t + ")");
+ "number" != typeof e && (e = o.OctetString);
+ var r = i.byteLength(t);
+ this.writeByte(e), this.writeLength(r), r && (this._ensure(r), this._buf.write(t, this._offset), this._offset += r)
+ }, f.prototype.writeBuffer = function(t, e) {
+ if ("number" != typeof e) throw new TypeError("tag must be a number");
+ if (!i.isBuffer(t)) throw new TypeError("argument must be a buffer");
+ this.writeByte(e), this.writeLength(t.length), this._ensure(t.length), t.copy(this._buf, this._offset, 0, t.length), this._offset += t.length
+ }, f.prototype.writeStringArray = function(t) {
+ if (!t instanceof Array) throw new TypeError("argument must be an Array[String]");
+ var e = this;
+ t.forEach((function(t) {
+ e.writeString(t)
+ }))
+ }, f.prototype.writeOID = function(t, e) {
+ if ("string" != typeof t) throw new TypeError("argument must be a string");
+ if ("number" != typeof e && (e = o.OID), !/^([0-9]+\.){3,}[0-9]+$/.test(t)) throw new Error("argument is not a valid OID string");
+ var r = t.split("."),
+ n = [];
+ n.push(40 * parseInt(r[0], 10) + parseInt(r[1], 10)), r.slice(2).forEach((function(t) {
+ ! function(t, e) {
+ e < 128 ? t.push(e) : e < 16384 ? (t.push(e >>> 7 | 128), t.push(127 & e)) : e < 2097152 ? (t.push(e >>> 14 | 128), t.push(e >>> 7 & 255 | 128), t.push(127 & e)) : e < 268435456 ? (t.push(e >>> 21 | 128), t.push(e >>> 14 & 255 | 128), t.push(e >>> 7 & 255 | 128), t.push(127 & e)) : (t.push(e >>> 28 & 255 | 128), t.push(e >>> 21 & 255 | 128), t.push(e >>> 14 & 255 | 128), t.push(e >>> 7 & 255 | 128), t.push(127 & e))
+ }(n, parseInt(t, 10))
+ }));
+ var i = this;
+ this._ensure(2 + n.length), this.writeByte(e), this.writeLength(n.length), n.forEach((function(t) {
+ i.writeByte(t)
+ }))
+ }, f.prototype.writeLength = function(t) {
+ if ("number" != typeof t) throw new TypeError("argument must be a Number");
+ if (this._ensure(4), t <= 127) this._buf[this._offset++] = t;
+ else if (t <= 255) this._buf[this._offset++] = 129, this._buf[this._offset++] = t;
+ else if (t <= 65535) this._buf[this._offset++] = 130, this._buf[this._offset++] = t >> 8, this._buf[this._offset++] = t;
+ else {
+ if (!(t <= 16777215)) throw s("Length too long (> 4 bytes)");
+ this._buf[this._offset++] = 131, this._buf[this._offset++] = t >> 16, this._buf[this._offset++] = t >> 8, this._buf[this._offset++] = t
+ }
+ }, f.prototype.startSequence = function(t) {
+ "number" != typeof t && (t = o.Sequence | o.Constructor), this.writeByte(t), this._seq.push(this._offset), this._ensure(3), this._offset += 3
+ }, f.prototype.endSequence = function() {
+ var t = this._seq.pop(),
+ e = t + 3,
+ r = this._offset - e;
+ if (r <= 127) this._shift(e, r, -2), this._buf[t] = r;
+ else if (r <= 255) this._shift(e, r, -1), this._buf[t] = 129, this._buf[t + 1] = r;
+ else if (r <= 65535) this._buf[t] = 130, this._buf[t + 1] = r >> 8, this._buf[t + 2] = r;
+ else {
+ if (!(r <= 16777215)) throw s("Sequence too long");
+ this._shift(e, r, 1), this._buf[t] = 131, this._buf[t + 1] = r >> 16, this._buf[t + 2] = r >> 8, this._buf[t + 3] = r
+ }
+ }, f.prototype._shift = function(t, e, r) {
+ n.ok(void 0 !== t), n.ok(void 0 !== e), n.ok(r), this._buf.copy(this._buf, t + r, t, t + e), this._offset += r
+ }, f.prototype._ensure = function(t) {
+ if (n.ok(t), this._size - this._offset < t) {
+ var e = this._size * this._options.growthFactor;
+ e - this._offset < t && (e += t);
+ var r = i.alloc(e);
+ this._buf.copy(r, 0, 0, this._offset), this._buf = r, this._size = e
+ }
+ }, t.exports = f
+ },
+ 3100: (t, e, r) => {
+ var n = r(5670);
+ t.exports = {
+ Ber: n,
+ BerReader: n.Reader,
+ BerWriter: n.Writer
+ }
+ },
+ 4529: (t, e, r) => {
+ "use strict";
+ var n = r(1514)();
+
+ function i(t, e) {
+ if (t === e) return 0;
+ for (var r = t.length, n = e.length, i = 0, o = Math.min(r, n); i < o; ++i)
+ if (t[i] !== e[i]) {
+ r = t[i], n = e[i];
+ break
+ } return r < n ? -1 : n < r ? 1 : 0
+ }
+
+ function o(t) {
+ return r.g.Buffer && "function" == typeof r.g.Buffer.isBuffer ? r.g.Buffer.isBuffer(t) : !(null == t || !t._isBuffer)
+ }
+ var s = r(4591),
+ a = Object.prototype.hasOwnProperty,
+ f = Array.prototype.slice,
+ u = "foo" === function() {}.name;
+
+ function c(t) {
+ return Object.prototype.toString.call(t)
+ }
+
+ function h(t) {
+ return !o(t) && "function" == typeof r.g.ArrayBuffer && ("function" == typeof ArrayBuffer.isView ? ArrayBuffer.isView(t) : !!t && (t instanceof DataView || !!(t.buffer && t.buffer instanceof ArrayBuffer)))
+ }
+ var p = t.exports = m,
+ l = /\s*function\s+([^\(\s]*)\s*/;
+
+ function y(t) {
+ if (s.isFunction(t)) {
+ if (u) return t.name;
+ var e = t.toString().match(l);
+ return e && e[1]
+ }
+ }
+
+ function g(t, e) {
+ return "string" == typeof t ? t.length < e ? t : t.slice(0, e) : t
+ }
+
+ function d(t) {
+ if (u || !s.isFunction(t)) return s.inspect(t);
+ var e = y(t);
+ return "[Function" + (e ? ": " + e : "") + "]"
+ }
+
+ function v(t, e, r, n, i) {
+ throw new p.AssertionError({
+ message: r,
+ actual: t,
+ expected: e,
+ operator: n,
+ stackStartFunction: i
+ })
+ }
+
+ function m(t, e) {
+ t || v(t, !0, e, "==", p.ok)
+ }
+
+ function S(t, e, r, n) {
+ if (t === e) return !0;
+ if (o(t) && o(e)) return 0 === i(t, e);
+ if (s.isDate(t) && s.isDate(e)) return t.getTime() === e.getTime();
+ if (s.isRegExp(t) && s.isRegExp(e)) return t.source === e.source && t.global === e.global && t.multiline === e.multiline && t.lastIndex === e.lastIndex && t.ignoreCase === e.ignoreCase;
+ if (null !== t && "object" == typeof t || null !== e && "object" == typeof e) {
+ if (h(t) && h(e) && c(t) === c(e) && !(t instanceof Float32Array || t instanceof Float64Array)) return 0 === i(new Uint8Array(t.buffer), new Uint8Array(e.buffer));
+ if (o(t) !== o(e)) return !1;
+ var a = (n = n || {
+ actual: [],
+ expected: []
+ }).actual.indexOf(t);
+ return -1 !== a && a === n.expected.indexOf(e) || (n.actual.push(t), n.expected.push(e), function(t, e, r, n) {
+ if (null == t || null == e) return !1;
+ if (s.isPrimitive(t) || s.isPrimitive(e)) return t === e;
+ if (r && Object.getPrototypeOf(t) !== Object.getPrototypeOf(e)) return !1;
+ var i = _(t),
+ o = _(e);
+ if (i && !o || !i && o) return !1;
+ if (i) return S(t = f.call(t), e = f.call(e), r);
+ var a, u, c = w(t),
+ h = w(e);
+ if (c.length !== h.length) return !1;
+ for (c.sort(), h.sort(), u = c.length - 1; u >= 0; u--)
+ if (c[u] !== h[u]) return !1;
+ for (u = c.length - 1; u >= 0; u--)
+ if (!S(t[a = c[u]], e[a], r, n)) return !1;
+ return !0
+ }(t, e, r, n))
+ }
+ return r ? t === e : t == e
+ }
+
+ function _(t) {
+ return "[object Arguments]" == Object.prototype.toString.call(t)
+ }
+
+ function b(t, e) {
+ if (!t || !e) return !1;
+ if ("[object RegExp]" == Object.prototype.toString.call(e)) return e.test(t);
+ try {
+ if (t instanceof e) return !0
+ } catch (t) {}
+ return !Error.isPrototypeOf(e) && !0 === e.call({}, t)
+ }
+
+ function E(t, e, r, n) {
+ var i;
+ if ("function" != typeof e) throw new TypeError('"block" argument must be a function');
+ "string" == typeof r && (n = r, r = null), i = function(t) {
+ var e;
+ try {
+ t()
+ } catch (t) {
+ e = t
+ }
+ return e
+ }(e), n = (r && r.name ? " (" + r.name + ")." : ".") + (n ? " " + n : "."), t && !i && v(i, r, "Missing expected exception" + n);
+ var o = "string" == typeof n,
+ a = !t && i && !r;
+ if ((!t && s.isError(i) && o && b(i, r) || a) && v(i, r, "Got unwanted exception" + n), t && i && r && !b(i, r) || !t && i) throw i
+ }
+ p.AssertionError = function(t) {
+ this.name = "AssertionError", this.actual = t.actual, this.expected = t.expected, this.operator = t.operator, t.message ? (this.message = t.message, this.generatedMessage = !1) : (this.message = g(d(this.actual), 128) + " " + this.operator + " " + g(d(this.expected), 128), this.generatedMessage = !0);
+ var e = t.stackStartFunction || v;
+ if (Error.captureStackTrace) Error.captureStackTrace(this, e);
+ else {
+ var r = new Error;
+ if (r.stack) {
+ var n = r.stack,
+ i = y(e),
+ o = n.indexOf("\n" + i);
+ if (o >= 0) {
+ var s = n.indexOf("\n", o + 1);
+ n = n.substring(s + 1)
+ }
+ this.stack = n
+ }
+ }
+ }, s.inherits(p.AssertionError, Error), p.fail = v, p.ok = m, p.equal = function(t, e, r) {
+ t != e && v(t, e, r, "==", p.equal)
+ }, p.notEqual = function(t, e, r) {
+ t == e && v(t, e, r, "!=", p.notEqual)
+ }, p.deepEqual = function(t, e, r) {
+ S(t, e, !1) || v(t, e, r, "deepEqual", p.deepEqual)
+ }, p.deepStrictEqual = function(t, e, r) {
+ S(t, e, !0) || v(t, e, r, "deepStrictEqual", p.deepStrictEqual)
+ }, p.notDeepEqual = function(t, e, r) {
+ S(t, e, !1) && v(t, e, r, "notDeepEqual", p.notDeepEqual)
+ }, p.notDeepStrictEqual = function t(e, r, n) {
+ S(e, r, !0) && v(e, r, n, "notDeepStrictEqual", t)
+ }, p.strictEqual = function(t, e, r) {
+ t !== e && v(t, e, r, "===", p.strictEqual)
+ }, p.notStrictEqual = function(t, e, r) {
+ t === e && v(t, e, r, "!==", p.notStrictEqual)
+ }, p.throws = function(t, e, r) {
+ E(!0, t, e, r)
+ }, p.doesNotThrow = function(t, e, r) {
+ E(!1, t, e, r)
+ }, p.ifError = function(t) {
+ if (t) throw t
+ }, p.strict = n((function t(e, r) {
+ e || v(e, !0, r, "==", t)
+ }), p, {
+ equal: p.strictEqual,
+ deepEqual: p.deepStrictEqual,
+ notEqual: p.notStrictEqual,
+ notDeepEqual: p.notDeepStrictEqual
+ }), p.strict.strict = p.strict;
+ var w = Object.keys || function(t) {
+ var e = [];
+ for (var r in t) a.call(t, r) && e.push(r);
+ return e
+ }
+ },
+ 6100: t => {
+ "function" == typeof Object.create ? t.exports = function(t, e) {
+ t.super_ = e, t.prototype = Object.create(e.prototype, {
+ constructor: {
+ value: t,
+ enumerable: !1,
+ writable: !0,
+ configurable: !0
+ }
+ })
+ } : t.exports = function(t, e) {
+ t.super_ = e;
+ var r = function() {};
+ r.prototype = e.prototype, t.prototype = new r, t.prototype.constructor = t
+ }
+ },
+ 3845: t => {
+ t.exports = function(t) {
+ return t && "object" == typeof t && "function" == typeof t.copy && "function" == typeof t.fill && "function" == typeof t.readUInt8
+ }
+ },
+ 4591: (t, e, r) => {
+ var n = r(5606),
+ i = /%[sdj%]/g;
+ e.format = function(t) {
+ if (!v(t)) {
+ for (var e = [], r = 0; r < arguments.length; r++) e.push(a(arguments[r]));
+ return e.join(" ")
+ }
+ r = 1;
+ for (var n = arguments, o = n.length, s = String(t).replace(i, (function(t) {
+ if ("%%" === t) return "%";
+ if (r >= o) return t;
+ switch (t) {
+ case "%s":
+ return String(n[r++]);
+ case "%d":
+ return Number(n[r++]);
+ case "%j":
+ try {
+ return JSON.stringify(n[r++])
+ } catch (t) {
+ return "[Circular]"
+ }
+ default:
+ return t
+ }
+ })), f = n[r]; r < o; f = n[++r]) g(f) || !_(f) ? s += " " + f : s += " " + a(f);
+ return s
+ }, e.deprecate = function(t, i) {
+ if (m(r.g.process)) return function() {
+ return e.deprecate(t, i).apply(this, arguments)
+ };
+ if (!0 === n.noDeprecation) return t;
+ var o = !1;
+ return function() {
+ if (!o) {
+ if (n.throwDeprecation) throw new Error(i);
+ n.traceDeprecation ? console.trace(i) : console.error(i), o = !0
+ }
+ return t.apply(this, arguments)
+ }
+ };
+ var o, s = {};
+
+ function a(t, r) {
+ var n = {
+ seen: [],
+ stylize: u
+ };
+ return arguments.length >= 3 && (n.depth = arguments[2]), arguments.length >= 4 && (n.colors = arguments[3]), y(r) ? n.showHidden = r : r && e._extend(n, r), m(n.showHidden) && (n.showHidden = !1), m(n.depth) && (n.depth = 2), m(n.colors) && (n.colors = !1), m(n.customInspect) && (n.customInspect = !0), n.colors && (n.stylize = f), c(n, t, n.depth)
+ }
+
+ function f(t, e) {
+ var r = a.styles[e];
+ return r ? "[" + a.colors[r][0] + "m" + t + "[" + a.colors[r][1] + "m" : t
+ }
+
+ function u(t, e) {
+ return t
+ }
+
+ function c(t, r, n) {
+ if (t.customInspect && r && w(r.inspect) && r.inspect !== e.inspect && (!r.constructor || r.constructor.prototype !== r)) {
+ var i = r.inspect(n, t);
+ return v(i) || (i = c(t, i, n)), i
+ }
+ var o = function(t, e) {
+ if (m(e)) return t.stylize("undefined", "undefined");
+ if (v(e)) {
+ var r = "'" + JSON.stringify(e).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'";
+ return t.stylize(r, "string")
+ }
+ return d(e) ? t.stylize("" + e, "number") : y(e) ? t.stylize("" + e, "boolean") : g(e) ? t.stylize("null", "null") : void 0
+ }(t, r);
+ if (o) return o;
+ var s = Object.keys(r),
+ a = function(t) {
+ var e = {};
+ return t.forEach((function(t, r) {
+ e[t] = !0
+ })), e
+ }(s);
+ if (t.showHidden && (s = Object.getOwnPropertyNames(r)), E(r) && (s.indexOf("message") >= 0 || s.indexOf("description") >= 0)) return h(r);
+ if (0 === s.length) {
+ if (w(r)) {
+ var f = r.name ? ": " + r.name : "";
+ return t.stylize("[Function" + f + "]", "special")
+ }
+ if (S(r)) return t.stylize(RegExp.prototype.toString.call(r), "regexp");
+ if (b(r)) return t.stylize(Date.prototype.toString.call(r), "date");
+ if (E(r)) return h(r)
+ }
+ var u, _ = "",
+ O = !1,
+ B = ["{", "}"];
+ return l(r) && (O = !0, B = ["[", "]"]), w(r) && (_ = " [Function" + (r.name ? ": " + r.name : "") + "]"), S(r) && (_ = " " + RegExp.prototype.toString.call(r)), b(r) && (_ = " " + Date.prototype.toUTCString.call(r)), E(r) && (_ = " " + h(r)), 0 !== s.length || O && 0 != r.length ? n < 0 ? S(r) ? t.stylize(RegExp.prototype.toString.call(r), "regexp") : t.stylize("[Object]", "special") : (t.seen.push(r), u = O ? function(t, e, r, n, i) {
+ for (var o = [], s = 0, a = e.length; s < a; ++s) x(e, String(s)) ? o.push(p(t, e, r, n, String(s), !0)) : o.push("");
+ return i.forEach((function(i) {
+ i.match(/^\d+$/) || o.push(p(t, e, r, n, i, !0))
+ })), o
+ }(t, r, n, a, s) : s.map((function(e) {
+ return p(t, r, n, a, e, O)
+ })), t.seen.pop(), function(t, e, r) {
+ return t.reduce((function(t, e) {
+ return e.indexOf("\n"), t + e.replace(/\u001b\[\d\d?m/g, "").length + 1
+ }), 0) > 60 ? r[0] + ("" === e ? "" : e + "\n ") + " " + t.join(",\n ") + " " + r[1] : r[0] + e + " " + t.join(", ") + " " + r[1]
+ }(u, _, B)) : B[0] + _ + B[1]
+ }
+
+ function h(t) {
+ return "[" + Error.prototype.toString.call(t) + "]"
+ }
+
+ function p(t, e, r, n, i, o) {
+ var s, a, f;
+ if ((f = Object.getOwnPropertyDescriptor(e, i) || {
+ value: e[i]
+ }).get ? a = f.set ? t.stylize("[Getter/Setter]", "special") : t.stylize("[Getter]", "special") : f.set && (a = t.stylize("[Setter]", "special")), x(n, i) || (s = "[" + i + "]"), a || (t.seen.indexOf(f.value) < 0 ? (a = g(r) ? c(t, f.value, null) : c(t, f.value, r - 1)).indexOf("\n") > -1 && (a = o ? a.split("\n").map((function(t) {
+ return " " + t
+ })).join("\n").substr(2) : "\n" + a.split("\n").map((function(t) {
+ return " " + t
+ })).join("\n")) : a = t.stylize("[Circular]", "special")), m(s)) {
+ if (o && i.match(/^\d+$/)) return a;
+ (s = JSON.stringify("" + i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (s = s.substr(1, s.length - 2), s = t.stylize(s, "name")) : (s = s.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"), s = t.stylize(s, "string"))
+ }
+ return s + ": " + a
+ }
+
+ function l(t) {
+ return Array.isArray(t)
+ }
+
+ function y(t) {
+ return "boolean" == typeof t
+ }
+
+ function g(t) {
+ return null === t
+ }
+
+ function d(t) {
+ return "number" == typeof t
+ }
+
+ function v(t) {
+ return "string" == typeof t
+ }
+
+ function m(t) {
+ return void 0 === t
+ }
+
+ function S(t) {
+ return _(t) && "[object RegExp]" === O(t)
+ }
+
+ function _(t) {
+ return "object" == typeof t && null !== t
+ }
+
+ function b(t) {
+ return _(t) && "[object Date]" === O(t)
+ }
+
+ function E(t) {
+ return _(t) && ("[object Error]" === O(t) || t instanceof Error)
+ }
+
+ function w(t) {
+ return "function" == typeof t
+ }
+
+ function O(t) {
+ return Object.prototype.toString.call(t)
+ }
+
+ function B(t) {
+ return t < 10 ? "0" + t.toString(10) : t.toString(10)
+ }
+ e.debuglog = function(t) {
+ if (m(o) && (o = n.env.NODE_DEBUG || ""), t = t.toUpperCase(), !s[t])
+ if (new RegExp("\\b" + t + "\\b", "i").test(o)) {
+ var r = n.pid;
+ s[t] = function() {
+ var n = e.format.apply(e, arguments);
+ console.error("%s %d: %s", t, r, n)
+ }
+ } else s[t] = function() {};
+ return s[t]
+ }, e.inspect = a, a.colors = {
+ bold: [1, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ white: [37, 39],
+ grey: [90, 39],
+ black: [30, 39],
+ blue: [34, 39],
+ cyan: [36, 39],
+ green: [32, 39],
+ magenta: [35, 39],
+ red: [31, 39],
+ yellow: [33, 39]
+ }, a.styles = {
+ special: "cyan",
+ number: "yellow",
+ boolean: "yellow",
+ undefined: "grey",
+ null: "bold",
+ string: "green",
+ date: "magenta",
+ regexp: "red"
+ }, e.isArray = l, e.isBoolean = y, e.isNull = g, e.isNullOrUndefined = function(t) {
+ return null == t
+ }, e.isNumber = d, e.isString = v, e.isSymbol = function(t) {
+ return "symbol" == typeof t
+ }, e.isUndefined = m, e.isRegExp = S, e.isObject = _, e.isDate = b, e.isError = E, e.isFunction = w, e.isPrimitive = function(t) {
+ return null === t || "boolean" == typeof t || "number" == typeof t || "string" == typeof t || "symbol" == typeof t || void 0 === t
+ }, e.isBuffer = r(3845);
+ var A = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
+
+ function x(t, e) {
+ return Object.prototype.hasOwnProperty.call(t, e)
+ }
+ e.log = function() {
+ var t, r;
+ console.log("%s - %s", (r = [B((t = new Date).getHours()), B(t.getMinutes()), B(t.getSeconds())].join(":"), [t.getDate(), A[t.getMonth()], r].join(" ")), e.format.apply(e, arguments))
+ }, e.inherits = r(6100), e._extend = function(t, e) {
+ if (!e || !_(e)) return t;
+ for (var r = Object.keys(e), n = r.length; n--;) t[r[n]] = e[r[n]];
+ return t
+ }
+ },
+ 7526: (t, e) => {
+ "use strict";
+ e.byteLength = function(t) {
+ var e = a(t),
+ r = e[0],
+ n = e[1];
+ return 3 * (r + n) / 4 - n
+ }, e.toByteArray = function(t) {
+ var e, r, o = a(t),
+ s = o[0],
+ f = o[1],
+ u = new i(function(t, e, r) {
+ return 3 * (e + r) / 4 - r
+ }(0, s, f)),
+ c = 0,
+ h = f > 0 ? s - 4 : s;
+ for (r = 0; r < h; r += 4) e = n[t.charCodeAt(r)] << 18 | n[t.charCodeAt(r + 1)] << 12 | n[t.charCodeAt(r + 2)] << 6 | n[t.charCodeAt(r + 3)], u[c++] = e >> 16 & 255, u[c++] = e >> 8 & 255, u[c++] = 255 & e;
+ return 2 === f && (e = n[t.charCodeAt(r)] << 2 | n[t.charCodeAt(r + 1)] >> 4, u[c++] = 255 & e), 1 === f && (e = n[t.charCodeAt(r)] << 10 | n[t.charCodeAt(r + 1)] << 4 | n[t.charCodeAt(r + 2)] >> 2, u[c++] = e >> 8 & 255, u[c++] = 255 & e), u
+ }, e.fromByteArray = function(t) {
+ for (var e, n = t.length, i = n % 3, o = [], s = 16383, a = 0, u = n - i; a < u; a += s) o.push(f(t, a, a + s > u ? u : a + s));
+ return 1 === i ? (e = t[n - 1], o.push(r[e >> 2] + r[e << 4 & 63] + "==")) : 2 === i && (e = (t[n - 2] << 8) + t[n - 1], o.push(r[e >> 10] + r[e >> 4 & 63] + r[e << 2 & 63] + "=")), o.join("")
+ };
+ for (var r = [], n = [], i = "undefined" != typeof Uint8Array ? Uint8Array : Array, o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0; s < 64; ++s) r[s] = o[s], n[o.charCodeAt(s)] = s;
+
+ function a(t) {
+ var e = t.length;
+ if (e % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4");
+ var r = t.indexOf("=");
+ return -1 === r && (r = e), [r, r === e ? 0 : 4 - r % 4]
+ }
+
+ function f(t, e, n) {
+ for (var i, o, s = [], a = e; a < n; a += 3) i = (t[a] << 16 & 16711680) + (t[a + 1] << 8 & 65280) + (255 & t[a + 2]), s.push(r[(o = i) >> 18 & 63] + r[o >> 12 & 63] + r[o >> 6 & 63] + r[63 & o]);
+ return s.join("")
+ }
+ n["-".charCodeAt(0)] = 62, n["_".charCodeAt(0)] = 63
+ },
+ 8287: (t, e, r) => {
+ "use strict";
+ var n = r(7526),
+ i = r(251);
+ e.Buffer = a, e.SlowBuffer = function(t) {
+ return +t != t && (t = 0), a.alloc(+t)
+ }, e.INSPECT_MAX_BYTES = 50;
+ var o = 2147483647;
+
+ function s(t) {
+ if (t > o) throw new RangeError('The value "' + t + '" is invalid for option "size"');
+ var e = new Uint8Array(t);
+ return e.__proto__ = a.prototype, e
+ }
+
+ function a(t, e, r) {
+ if ("number" == typeof t) {
+ if ("string" == typeof e) throw new TypeError('The "string" argument must be of type string. Received type number');
+ return c(t)
+ }
+ return f(t, e, r)
+ }
+
+ function f(t, e, r) {
+ if ("string" == typeof t) return function(t, e) {
+ if ("string" == typeof e && "" !== e || (e = "utf8"), !a.isEncoding(e)) throw new TypeError("Unknown encoding: " + e);
+ var r = 0 | l(t, e),
+ n = s(r),
+ i = n.write(t, e);
+ return i !== r && (n = n.slice(0, i)), n
+ }(t, e);
+ if (ArrayBuffer.isView(t)) return h(t);
+ if (null == t) throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t);
+ if (H(t, ArrayBuffer) || t && H(t.buffer, ArrayBuffer)) return function(t, e, r) {
+ if (e < 0 || t.byteLength < e) throw new RangeError('"offset" is outside of buffer bounds');
+ if (t.byteLength < e + (r || 0)) throw new RangeError('"length" is outside of buffer bounds');
+ var n;
+ return (n = void 0 === e && void 0 === r ? new Uint8Array(t) : void 0 === r ? new Uint8Array(t, e) : new Uint8Array(t, e, r)).__proto__ = a.prototype, n
+ }(t, e, r);
+ if ("number" == typeof t) throw new TypeError('The "value" argument must not be of type number. Received type number');
+ var n = t.valueOf && t.valueOf();
+ if (null != n && n !== t) return a.from(n, e, r);
+ var i = function(t) {
+ if (a.isBuffer(t)) {
+ var e = 0 | p(t.length),
+ r = s(e);
+ return 0 === r.length || t.copy(r, 0, 0, e), r
+ }
+ return void 0 !== t.length ? "number" != typeof t.length || F(t.length) ? s(0) : h(t) : "Buffer" === t.type && Array.isArray(t.data) ? h(t.data) : void 0
+ }(t);
+ if (i) return i;
+ if ("undefined" != typeof Symbol && null != Symbol.toPrimitive && "function" == typeof t[Symbol.toPrimitive]) return a.from(t[Symbol.toPrimitive]("string"), e, r);
+ throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t)
+ }
+
+ function u(t) {
+ if ("number" != typeof t) throw new TypeError('"size" argument must be of type number');
+ if (t < 0) throw new RangeError('The value "' + t + '" is invalid for option "size"')
+ }
+
+ function c(t) {
+ return u(t), s(t < 0 ? 0 : 0 | p(t))
+ }
+
+ function h(t) {
+ for (var e = t.length < 0 ? 0 : 0 | p(t.length), r = s(e), n = 0; n < e; n += 1) r[n] = 255 & t[n];
+ return r
+ }
+
+ function p(t) {
+ if (t >= o) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + o.toString(16) + " bytes");
+ return 0 | t
+ }
+
+ function l(t, e) {
+ if (a.isBuffer(t)) return t.length;
+ if (ArrayBuffer.isView(t) || H(t, ArrayBuffer)) return t.byteLength;
+ if ("string" != typeof t) throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof t);
+ var r = t.length,
+ n = arguments.length > 2 && !0 === arguments[2];
+ if (!n && 0 === r) return 0;
+ for (var i = !1;;) switch (e) {
+ case "ascii":
+ case "latin1":
+ case "binary":
+ return r;
+ case "utf8":
+ case "utf-8":
+ return U(t).length;
+ case "ucs2":
+ case "ucs-2":
+ case "utf16le":
+ case "utf-16le":
+ return 2 * r;
+ case "hex":
+ return r >>> 1;
+ case "base64":
+ return M(t).length;
+ default:
+ if (i) return n ? -1 : U(t).length;
+ e = ("" + e).toLowerCase(), i = !0
+ }
+ }
+
+ function y(t, e, r) {
+ var n = !1;
+ if ((void 0 === e || e < 0) && (e = 0), e > this.length) return "";
+ if ((void 0 === r || r > this.length) && (r = this.length), r <= 0) return "";
+ if ((r >>>= 0) <= (e >>>= 0)) return "";
+ for (t || (t = "utf8");;) switch (t) {
+ case "hex":
+ return T(this, e, r);
+ case "utf8":
+ case "utf-8":
+ return B(this, e, r);
+ case "ascii":
+ return x(this, e, r);
+ case "latin1":
+ case "binary":
+ return P(this, e, r);
+ case "base64":
+ return O(this, e, r);
+ case "ucs2":
+ case "ucs-2":
+ case "utf16le":
+ case "utf-16le":
+ return I(this, e, r);
+ default:
+ if (n) throw new TypeError("Unknown encoding: " + t);
+ t = (t + "").toLowerCase(), n = !0
+ }
+ }
+
+ function g(t, e, r) {
+ var n = t[e];
+ t[e] = t[r], t[r] = n
+ }
+
+ function d(t, e, r, n, i) {
+ if (0 === t.length) return -1;
+ if ("string" == typeof r ? (n = r, r = 0) : r > 2147483647 ? r = 2147483647 : r < -2147483648 && (r = -2147483648), F(r = +r) && (r = i ? 0 : t.length - 1), r < 0 && (r = t.length + r), r >= t.length) {
+ if (i) return -1;
+ r = t.length - 1
+ } else if (r < 0) {
+ if (!i) return -1;
+ r = 0
+ }
+ if ("string" == typeof e && (e = a.from(e, n)), a.isBuffer(e)) return 0 === e.length ? -1 : v(t, e, r, n, i);
+ if ("number" == typeof e) return e &= 255, "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(t, e, r) : Uint8Array.prototype.lastIndexOf.call(t, e, r) : v(t, [e], r, n, i);
+ throw new TypeError("val must be string, number or Buffer")
+ }
+
+ function v(t, e, r, n, i) {
+ var o, s = 1,
+ a = t.length,
+ f = e.length;
+ if (void 0 !== n && ("ucs2" === (n = String(n).toLowerCase()) || "ucs-2" === n || "utf16le" === n || "utf-16le" === n)) {
+ if (t.length < 2 || e.length < 2) return -1;
+ s = 2, a /= 2, f /= 2, r /= 2
+ }
+
+ function u(t, e) {
+ return 1 === s ? t[e] : t.readUInt16BE(e * s)
+ }
+ if (i) {
+ var c = -1;
+ for (o = r; o < a; o++)
+ if (u(t, o) === u(e, -1 === c ? 0 : o - c)) {
+ if (-1 === c && (c = o), o - c + 1 === f) return c * s
+ } else - 1 !== c && (o -= o - c), c = -1
+ } else
+ for (r + f > a && (r = a - f), o = r; o >= 0; o--) {
+ for (var h = !0, p = 0; p < f; p++)
+ if (u(t, o + p) !== u(e, p)) {
+ h = !1;
+ break
+ } if (h) return o
+ }
+ return -1
+ }
+
+ function m(t, e, r, n) {
+ r = Number(r) || 0;
+ var i = t.length - r;
+ n ? (n = Number(n)) > i && (n = i) : n = i;
+ var o = e.length;
+ n > o / 2 && (n = o / 2);
+ for (var s = 0; s < n; ++s) {
+ var a = parseInt(e.substr(2 * s, 2), 16);
+ if (F(a)) return s;
+ t[r + s] = a
+ }
+ return s
+ }
+
+ function S(t, e, r, n) {
+ return j(U(e, t.length - r), t, r, n)
+ }
+
+ function _(t, e, r, n) {
+ return j(function(t) {
+ for (var e = [], r = 0; r < t.length; ++r) e.push(255 & t.charCodeAt(r));
+ return e
+ }(e), t, r, n)
+ }
+
+ function b(t, e, r, n) {
+ return _(t, e, r, n)
+ }
+
+ function E(t, e, r, n) {
+ return j(M(e), t, r, n)
+ }
+
+ function w(t, e, r, n) {
+ return j(function(t, e) {
+ for (var r, n, i, o = [], s = 0; s < t.length && !((e -= 2) < 0); ++s) n = (r = t.charCodeAt(s)) >> 8, i = r % 256, o.push(i), o.push(n);
+ return o
+ }(e, t.length - r), t, r, n)
+ }
+
+ function O(t, e, r) {
+ return 0 === e && r === t.length ? n.fromByteArray(t) : n.fromByteArray(t.slice(e, r))
+ }
+
+ function B(t, e, r) {
+ r = Math.min(t.length, r);
+ for (var n = [], i = e; i < r;) {
+ var o, s, a, f, u = t[i],
+ c = null,
+ h = u > 239 ? 4 : u > 223 ? 3 : u > 191 ? 2 : 1;
+ if (i + h <= r) switch (h) {
+ case 1:
+ u < 128 && (c = u);
+ break;
+ case 2:
+ 128 == (192 & (o = t[i + 1])) && (f = (31 & u) << 6 | 63 & o) > 127 && (c = f);
+ break;
+ case 3:
+ o = t[i + 1], s = t[i + 2], 128 == (192 & o) && 128 == (192 & s) && (f = (15 & u) << 12 | (63 & o) << 6 | 63 & s) > 2047 && (f < 55296 || f > 57343) && (c = f);
+ break;
+ case 4:
+ o = t[i + 1], s = t[i + 2], a = t[i + 3], 128 == (192 & o) && 128 == (192 & s) && 128 == (192 & a) && (f = (15 & u) << 18 | (63 & o) << 12 | (63 & s) << 6 | 63 & a) > 65535 && f < 1114112 && (c = f)
+ }
+ null === c ? (c = 65533, h = 1) : c > 65535 && (c -= 65536, n.push(c >>> 10 & 1023 | 55296), c = 56320 | 1023 & c), n.push(c), i += h
+ }
+ return function(t) {
+ var e = t.length;
+ if (e <= A) return String.fromCharCode.apply(String, t);
+ for (var r = "", n = 0; n < e;) r += String.fromCharCode.apply(String, t.slice(n, n += A));
+ return r
+ }(n)
+ }
+ e.kMaxLength = o, a.TYPED_ARRAY_SUPPORT = function() {
+ try {
+ var t = new Uint8Array(1);
+ return t.__proto__ = {
+ __proto__: Uint8Array.prototype,
+ foo: function() {
+ return 42
+ }
+ }, 42 === t.foo()
+ } catch (t) {
+ return !1
+ }
+ }(), a.TYPED_ARRAY_SUPPORT || "undefined" == typeof console || "function" != typeof console.error || console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."), Object.defineProperty(a.prototype, "parent", {
+ enumerable: !0,
+ get: function() {
+ if (a.isBuffer(this)) return this.buffer
+ }
+ }), Object.defineProperty(a.prototype, "offset", {
+ enumerable: !0,
+ get: function() {
+ if (a.isBuffer(this)) return this.byteOffset
+ }
+ }), "undefined" != typeof Symbol && null != Symbol.species && a[Symbol.species] === a && Object.defineProperty(a, Symbol.species, {
+ value: null,
+ configurable: !0,
+ enumerable: !1,
+ writable: !1
+ }), a.poolSize = 8192, a.from = function(t, e, r) {
+ return f(t, e, r)
+ }, a.prototype.__proto__ = Uint8Array.prototype, a.__proto__ = Uint8Array, a.alloc = function(t, e, r) {
+ return function(t, e, r) {
+ return u(t), t <= 0 ? s(t) : void 0 !== e ? "string" == typeof r ? s(t).fill(e, r) : s(t).fill(e) : s(t)
+ }(t, e, r)
+ }, a.allocUnsafe = function(t) {
+ return c(t)
+ }, a.allocUnsafeSlow = function(t) {
+ return c(t)
+ }, a.isBuffer = function(t) {
+ return null != t && !0 === t._isBuffer && t !== a.prototype
+ }, a.compare = function(t, e) {
+ if (H(t, Uint8Array) && (t = a.from(t, t.offset, t.byteLength)), H(e, Uint8Array) && (e = a.from(e, e.offset, e.byteLength)), !a.isBuffer(t) || !a.isBuffer(e)) throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
+ if (t === e) return 0;
+ for (var r = t.length, n = e.length, i = 0, o = Math.min(r, n); i < o; ++i)
+ if (t[i] !== e[i]) {
+ r = t[i], n = e[i];
+ break
+ } return r < n ? -1 : n < r ? 1 : 0
+ }, a.isEncoding = function(t) {
+ switch (String(t).toLowerCase()) {
+ case "hex":
+ case "utf8":
+ case "utf-8":
+ case "ascii":
+ case "latin1":
+ case "binary":
+ case "base64":
+ case "ucs2":
+ case "ucs-2":
+ case "utf16le":
+ case "utf-16le":
+ return !0;
+ default:
+ return !1
+ }
+ }, a.concat = function(t, e) {
+ if (!Array.isArray(t)) throw new TypeError('"list" argument must be an Array of Buffers');
+ if (0 === t.length) return a.alloc(0);
+ var r;
+ if (void 0 === e)
+ for (e = 0, r = 0; r < t.length; ++r) e += t[r].length;
+ var n = a.allocUnsafe(e),
+ i = 0;
+ for (r = 0; r < t.length; ++r) {
+ var o = t[r];
+ if (H(o, Uint8Array) && (o = a.from(o)), !a.isBuffer(o)) throw new TypeError('"list" argument must be an Array of Buffers');
+ o.copy(n, i), i += o.length
+ }
+ return n
+ }, a.byteLength = l, a.prototype._isBuffer = !0, a.prototype.swap16 = function() {
+ var t = this.length;
+ if (t % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits");
+ for (var e = 0; e < t; e += 2) g(this, e, e + 1);
+ return this
+ }, a.prototype.swap32 = function() {
+ var t = this.length;
+ if (t % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits");
+ for (var e = 0; e < t; e += 4) g(this, e, e + 3), g(this, e + 1, e + 2);
+ return this
+ }, a.prototype.swap64 = function() {
+ var t = this.length;
+ if (t % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits");
+ for (var e = 0; e < t; e += 8) g(this, e, e + 7), g(this, e + 1, e + 6), g(this, e + 2, e + 5), g(this, e + 3, e + 4);
+ return this
+ }, a.prototype.toString = function() {
+ var t = this.length;
+ return 0 === t ? "" : 0 === arguments.length ? B(this, 0, t) : y.apply(this, arguments)
+ }, a.prototype.toLocaleString = a.prototype.toString, a.prototype.equals = function(t) {
+ if (!a.isBuffer(t)) throw new TypeError("Argument must be a Buffer");
+ return this === t || 0 === a.compare(this, t)
+ }, a.prototype.inspect = function() {
+ var t = "",
+ r = e.INSPECT_MAX_BYTES;
+ return t = this.toString("hex", 0, r).replace(/(.{2})/g, "$1 ").trim(), this.length > r && (t += " ... "), ""
+ }, a.prototype.compare = function(t, e, r, n, i) {
+ if (H(t, Uint8Array) && (t = a.from(t, t.offset, t.byteLength)), !a.isBuffer(t)) throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof t);
+ if (void 0 === e && (e = 0), void 0 === r && (r = t ? t.length : 0), void 0 === n && (n = 0), void 0 === i && (i = this.length), e < 0 || r > t.length || n < 0 || i > this.length) throw new RangeError("out of range index");
+ if (n >= i && e >= r) return 0;
+ if (n >= i) return -1;
+ if (e >= r) return 1;
+ if (this === t) return 0;
+ for (var o = (i >>>= 0) - (n >>>= 0), s = (r >>>= 0) - (e >>>= 0), f = Math.min(o, s), u = this.slice(n, i), c = t.slice(e, r), h = 0; h < f; ++h)
+ if (u[h] !== c[h]) {
+ o = u[h], s = c[h];
+ break
+ } return o < s ? -1 : s < o ? 1 : 0
+ }, a.prototype.includes = function(t, e, r) {
+ return -1 !== this.indexOf(t, e, r)
+ }, a.prototype.indexOf = function(t, e, r) {
+ return d(this, t, e, r, !0)
+ }, a.prototype.lastIndexOf = function(t, e, r) {
+ return d(this, t, e, r, !1)
+ }, a.prototype.write = function(t, e, r, n) {
+ if (void 0 === e) n = "utf8", r = this.length, e = 0;
+ else if (void 0 === r && "string" == typeof e) n = e, r = this.length, e = 0;
+ else {
+ if (!isFinite(e)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
+ e >>>= 0, isFinite(r) ? (r >>>= 0, void 0 === n && (n = "utf8")) : (n = r, r = void 0)
+ }
+ var i = this.length - e;
+ if ((void 0 === r || r > i) && (r = i), t.length > 0 && (r < 0 || e < 0) || e > this.length) throw new RangeError("Attempt to write outside buffer bounds");
+ n || (n = "utf8");
+ for (var o = !1;;) switch (n) {
+ case "hex":
+ return m(this, t, e, r);
+ case "utf8":
+ case "utf-8":
+ return S(this, t, e, r);
+ case "ascii":
+ return _(this, t, e, r);
+ case "latin1":
+ case "binary":
+ return b(this, t, e, r);
+ case "base64":
+ return E(this, t, e, r);
+ case "ucs2":
+ case "ucs-2":
+ case "utf16le":
+ case "utf-16le":
+ return w(this, t, e, r);
+ default:
+ if (o) throw new TypeError("Unknown encoding: " + n);
+ n = ("" + n).toLowerCase(), o = !0
+ }
+ }, a.prototype.toJSON = function() {
+ return {
+ type: "Buffer",
+ data: Array.prototype.slice.call(this._arr || this, 0)
+ }
+ };
+ var A = 4096;
+
+ function x(t, e, r) {
+ var n = "";
+ r = Math.min(t.length, r);
+ for (var i = e; i < r; ++i) n += String.fromCharCode(127 & t[i]);
+ return n
+ }
+
+ function P(t, e, r) {
+ var n = "";
+ r = Math.min(t.length, r);
+ for (var i = e; i < r; ++i) n += String.fromCharCode(t[i]);
+ return n
+ }
+
+ function T(t, e, r) {
+ var n, i = t.length;
+ (!e || e < 0) && (e = 0), (!r || r < 0 || r > i) && (r = i);
+ for (var o = "", s = e; s < r; ++s) o += (n = t[s]) < 16 ? "0" + n.toString(16) : n.toString(16);
+ return o
+ }
+
+ function I(t, e, r) {
+ for (var n = t.slice(e, r), i = "", o = 0; o < n.length; o += 2) i += String.fromCharCode(n[o] + 256 * n[o + 1]);
+ return i
+ }
+
+ function k(t, e, r) {
+ if (t % 1 != 0 || t < 0) throw new RangeError("offset is not uint");
+ if (t + e > r) throw new RangeError("Trying to access beyond buffer length")
+ }
+
+ function D(t, e, r, n, i, o) {
+ if (!a.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance');
+ if (e > i || e < o) throw new RangeError('"value" argument is out of bounds');
+ if (r + n > t.length) throw new RangeError("Index out of range")
+ }
+
+ function R(t, e, r, n, i, o) {
+ if (r + n > t.length) throw new RangeError("Index out of range");
+ if (r < 0) throw new RangeError("Index out of range")
+ }
+
+ function N(t, e, r, n, o) {
+ return e = +e, r >>>= 0, o || R(t, 0, r, 4), i.write(t, e, r, n, 23, 4), r + 4
+ }
+
+ function L(t, e, r, n, o) {
+ return e = +e, r >>>= 0, o || R(t, 0, r, 8), i.write(t, e, r, n, 52, 8), r + 8
+ }
+ a.prototype.slice = function(t, e) {
+ var r = this.length;
+ (t = ~~t) < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r), (e = void 0 === e ? r : ~~e) < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r), e < t && (e = t);
+ var n = this.subarray(t, e);
+ return n.__proto__ = a.prototype, n
+ }, a.prototype.readUIntLE = function(t, e, r) {
+ t >>>= 0, e >>>= 0, r || k(t, e, this.length);
+ for (var n = this[t], i = 1, o = 0; ++o < e && (i *= 256);) n += this[t + o] * i;
+ return n
+ }, a.prototype.readUIntBE = function(t, e, r) {
+ t >>>= 0, e >>>= 0, r || k(t, e, this.length);
+ for (var n = this[t + --e], i = 1; e > 0 && (i *= 256);) n += this[t + --e] * i;
+ return n
+ }, a.prototype.readUInt8 = function(t, e) {
+ return t >>>= 0, e || k(t, 1, this.length), this[t]
+ }, a.prototype.readUInt16LE = function(t, e) {
+ return t >>>= 0, e || k(t, 2, this.length), this[t] | this[t + 1] << 8
+ }, a.prototype.readUInt16BE = function(t, e) {
+ return t >>>= 0, e || k(t, 2, this.length), this[t] << 8 | this[t + 1]
+ }, a.prototype.readUInt32LE = function(t, e) {
+ return t >>>= 0, e || k(t, 4, this.length), (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 16777216 * this[t + 3]
+ }, a.prototype.readUInt32BE = function(t, e) {
+ return t >>>= 0, e || k(t, 4, this.length), 16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3])
+ }, a.prototype.readIntLE = function(t, e, r) {
+ t >>>= 0, e >>>= 0, r || k(t, e, this.length);
+ for (var n = this[t], i = 1, o = 0; ++o < e && (i *= 256);) n += this[t + o] * i;
+ return n >= (i *= 128) && (n -= Math.pow(2, 8 * e)), n
+ }, a.prototype.readIntBE = function(t, e, r) {
+ t >>>= 0, e >>>= 0, r || k(t, e, this.length);
+ for (var n = e, i = 1, o = this[t + --n]; n > 0 && (i *= 256);) o += this[t + --n] * i;
+ return o >= (i *= 128) && (o -= Math.pow(2, 8 * e)), o
+ }, a.prototype.readInt8 = function(t, e) {
+ return t >>>= 0, e || k(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t]
+ }, a.prototype.readInt16LE = function(t, e) {
+ t >>>= 0, e || k(t, 2, this.length);
+ var r = this[t] | this[t + 1] << 8;
+ return 32768 & r ? 4294901760 | r : r
+ }, a.prototype.readInt16BE = function(t, e) {
+ t >>>= 0, e || k(t, 2, this.length);
+ var r = this[t + 1] | this[t] << 8;
+ return 32768 & r ? 4294901760 | r : r
+ }, a.prototype.readInt32LE = function(t, e) {
+ return t >>>= 0, e || k(t, 4, this.length), this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24
+ }, a.prototype.readInt32BE = function(t, e) {
+ return t >>>= 0, e || k(t, 4, this.length), this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]
+ }, a.prototype.readFloatLE = function(t, e) {
+ return t >>>= 0, e || k(t, 4, this.length), i.read(this, t, !0, 23, 4)
+ }, a.prototype.readFloatBE = function(t, e) {
+ return t >>>= 0, e || k(t, 4, this.length), i.read(this, t, !1, 23, 4)
+ }, a.prototype.readDoubleLE = function(t, e) {
+ return t >>>= 0, e || k(t, 8, this.length), i.read(this, t, !0, 52, 8)
+ }, a.prototype.readDoubleBE = function(t, e) {
+ return t >>>= 0, e || k(t, 8, this.length), i.read(this, t, !1, 52, 8)
+ }, a.prototype.writeUIntLE = function(t, e, r, n) {
+ t = +t, e >>>= 0, r >>>= 0, n || D(this, t, e, r, Math.pow(2, 8 * r) - 1, 0);
+ var i = 1,
+ o = 0;
+ for (this[e] = 255 & t; ++o < r && (i *= 256);) this[e + o] = t / i & 255;
+ return e + r
+ }, a.prototype.writeUIntBE = function(t, e, r, n) {
+ t = +t, e >>>= 0, r >>>= 0, n || D(this, t, e, r, Math.pow(2, 8 * r) - 1, 0);
+ var i = r - 1,
+ o = 1;
+ for (this[e + i] = 255 & t; --i >= 0 && (o *= 256);) this[e + i] = t / o & 255;
+ return e + r
+ }, a.prototype.writeUInt8 = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 1, 255, 0), this[e] = 255 & t, e + 1
+ }, a.prototype.writeUInt16LE = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 2, 65535, 0), this[e] = 255 & t, this[e + 1] = t >>> 8, e + 2
+ }, a.prototype.writeUInt16BE = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 2, 65535, 0), this[e] = t >>> 8, this[e + 1] = 255 & t, e + 2
+ }, a.prototype.writeUInt32LE = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 4, 4294967295, 0), this[e + 3] = t >>> 24, this[e + 2] = t >>> 16, this[e + 1] = t >>> 8, this[e] = 255 & t, e + 4
+ }, a.prototype.writeUInt32BE = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 4, 4294967295, 0), this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t, e + 4
+ }, a.prototype.writeIntLE = function(t, e, r, n) {
+ if (t = +t, e >>>= 0, !n) {
+ var i = Math.pow(2, 8 * r - 1);
+ D(this, t, e, r, i - 1, -i)
+ }
+ var o = 0,
+ s = 1,
+ a = 0;
+ for (this[e] = 255 & t; ++o < r && (s *= 256);) t < 0 && 0 === a && 0 !== this[e + o - 1] && (a = 1), this[e + o] = (t / s | 0) - a & 255;
+ return e + r
+ }, a.prototype.writeIntBE = function(t, e, r, n) {
+ if (t = +t, e >>>= 0, !n) {
+ var i = Math.pow(2, 8 * r - 1);
+ D(this, t, e, r, i - 1, -i)
+ }
+ var o = r - 1,
+ s = 1,
+ a = 0;
+ for (this[e + o] = 255 & t; --o >= 0 && (s *= 256);) t < 0 && 0 === a && 0 !== this[e + o + 1] && (a = 1), this[e + o] = (t / s | 0) - a & 255;
+ return e + r
+ }, a.prototype.writeInt8 = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 1, 127, -128), t < 0 && (t = 255 + t + 1), this[e] = 255 & t, e + 1
+ }, a.prototype.writeInt16LE = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 2, 32767, -32768), this[e] = 255 & t, this[e + 1] = t >>> 8, e + 2
+ }, a.prototype.writeInt16BE = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 2, 32767, -32768), this[e] = t >>> 8, this[e + 1] = 255 & t, e + 2
+ }, a.prototype.writeInt32LE = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 4, 2147483647, -2147483648), this[e] = 255 & t, this[e + 1] = t >>> 8, this[e + 2] = t >>> 16, this[e + 3] = t >>> 24, e + 4
+ }, a.prototype.writeInt32BE = function(t, e, r) {
+ return t = +t, e >>>= 0, r || D(this, t, e, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1), this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t, e + 4
+ }, a.prototype.writeFloatLE = function(t, e, r) {
+ return N(this, t, e, !0, r)
+ }, a.prototype.writeFloatBE = function(t, e, r) {
+ return N(this, t, e, !1, r)
+ }, a.prototype.writeDoubleLE = function(t, e, r) {
+ return L(this, t, e, !0, r)
+ }, a.prototype.writeDoubleBE = function(t, e, r) {
+ return L(this, t, e, !1, r)
+ }, a.prototype.copy = function(t, e, r, n) {
+ if (!a.isBuffer(t)) throw new TypeError("argument should be a Buffer");
+ if (r || (r = 0), n || 0 === n || (n = this.length), e >= t.length && (e = t.length), e || (e = 0), n > 0 && n < r && (n = r), n === r) return 0;
+ if (0 === t.length || 0 === this.length) return 0;
+ if (e < 0) throw new RangeError("targetStart out of bounds");
+ if (r < 0 || r >= this.length) throw new RangeError("Index out of range");
+ if (n < 0) throw new RangeError("sourceEnd out of bounds");
+ n > this.length && (n = this.length), t.length - e < n - r && (n = t.length - e + r);
+ var i = n - r;
+ if (this === t && "function" == typeof Uint8Array.prototype.copyWithin) this.copyWithin(e, r, n);
+ else if (this === t && r < e && e < n)
+ for (var o = i - 1; o >= 0; --o) t[o + e] = this[o + r];
+ else Uint8Array.prototype.set.call(t, this.subarray(r, n), e);
+ return i
+ }, a.prototype.fill = function(t, e, r, n) {
+ if ("string" == typeof t) {
+ if ("string" == typeof e ? (n = e, e = 0, r = this.length) : "string" == typeof r && (n = r, r = this.length), void 0 !== n && "string" != typeof n) throw new TypeError("encoding must be a string");
+ if ("string" == typeof n && !a.isEncoding(n)) throw new TypeError("Unknown encoding: " + n);
+ if (1 === t.length) {
+ var i = t.charCodeAt(0);
+ ("utf8" === n && i < 128 || "latin1" === n) && (t = i)
+ }
+ } else "number" == typeof t && (t &= 255);
+ if (e < 0 || this.length < e || this.length < r) throw new RangeError("Out of range index");
+ if (r <= e) return this;
+ var o;
+ if (e >>>= 0, r = void 0 === r ? this.length : r >>> 0, t || (t = 0), "number" == typeof t)
+ for (o = e; o < r; ++o) this[o] = t;
+ else {
+ var s = a.isBuffer(t) ? t : a.from(t, n),
+ f = s.length;
+ if (0 === f) throw new TypeError('The value "' + t + '" is invalid for argument "value"');
+ for (o = 0; o < r - e; ++o) this[o + e] = s[o % f]
+ }
+ return this
+ };
+ var C = /[^+/0-9A-Za-z-_]/g;
+
+ function U(t, e) {
+ var r;
+ e = e || 1 / 0;
+ for (var n = t.length, i = null, o = [], s = 0; s < n; ++s) {
+ if ((r = t.charCodeAt(s)) > 55295 && r < 57344) {
+ if (!i) {
+ if (r > 56319) {
+ (e -= 3) > -1 && o.push(239, 191, 189);
+ continue
+ }
+ if (s + 1 === n) {
+ (e -= 3) > -1 && o.push(239, 191, 189);
+ continue
+ }
+ i = r;
+ continue
+ }
+ if (r < 56320) {
+ (e -= 3) > -1 && o.push(239, 191, 189), i = r;
+ continue
+ }
+ r = 65536 + (i - 55296 << 10 | r - 56320)
+ } else i && (e -= 3) > -1 && o.push(239, 191, 189);
+ if (i = null, r < 128) {
+ if ((e -= 1) < 0) break;
+ o.push(r)
+ } else if (r < 2048) {
+ if ((e -= 2) < 0) break;
+ o.push(r >> 6 | 192, 63 & r | 128)
+ } else if (r < 65536) {
+ if ((e -= 3) < 0) break;
+ o.push(r >> 12 | 224, r >> 6 & 63 | 128, 63 & r | 128)
+ } else {
+ if (!(r < 1114112)) throw new Error("Invalid code point");
+ if ((e -= 4) < 0) break;
+ o.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, 63 & r | 128)
+ }
+ }
+ return o
+ }
+
+ function M(t) {
+ return n.toByteArray(function(t) {
+ if ((t = (t = t.split("=")[0]).trim().replace(C, "")).length < 2) return "";
+ for (; t.length % 4 != 0;) t += "=";
+ return t
+ }(t))
+ }
+
+ function j(t, e, r, n) {
+ for (var i = 0; i < n && !(i + r >= e.length || i >= t.length); ++i) e[i + r] = t[i];
+ return i
+ }
+
+ function H(t, e) {
+ return t instanceof e || null != t && null != t.constructor && null != t.constructor.name && t.constructor.name === e.name
+ }
+
+ function F(t) {
+ return t != t
+ }
+ },
+ 8075: (t, e, r) => {
+ "use strict";
+ var n = r(453),
+ i = r(487),
+ o = i(n("String.prototype.indexOf"));
+ t.exports = function(t, e) {
+ var r = n(t, !!e);
+ return "function" == typeof r && o(t, ".prototype.") > -1 ? i(r) : r
+ }
+ },
+ 487: (t, e, r) => {
+ "use strict";
+ var n = r(6743),
+ i = r(453),
+ o = r(6897),
+ s = r(9675),
+ a = i("%Function.prototype.apply%"),
+ f = i("%Function.prototype.call%"),
+ u = i("%Reflect.apply%", !0) || n.call(f, a),
+ c = r(655),
+ h = i("%Math.max%");
+ t.exports = function(t) {
+ if ("function" != typeof t) throw new s("a function is required");
+ var e = u(n, f, arguments);
+ return o(e, 1 + h(0, t.length - (arguments.length - 1)), !0)
+ };
+ var p = function() {
+ return u(n, a, arguments)
+ };
+ c ? c(t.exports, "apply", {
+ value: p
+ }) : t.exports.apply = p
+ },
+ 955: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() {
+ var t = n,
+ e = t.lib.BlockCipher,
+ r = t.algo,
+ i = [],
+ o = [],
+ s = [],
+ a = [],
+ f = [],
+ u = [],
+ c = [],
+ h = [],
+ p = [],
+ l = [];
+ ! function() {
+ for (var t = [], e = 0; e < 256; e++) t[e] = e < 128 ? e << 1 : e << 1 ^ 283;
+ var r = 0,
+ n = 0;
+ for (e = 0; e < 256; e++) {
+ var y = n ^ n << 1 ^ n << 2 ^ n << 3 ^ n << 4;
+ y = y >>> 8 ^ 255 & y ^ 99, i[r] = y, o[y] = r;
+ var g = t[r],
+ d = t[g],
+ v = t[d],
+ m = 257 * t[y] ^ 16843008 * y;
+ s[r] = m << 24 | m >>> 8, a[r] = m << 16 | m >>> 16, f[r] = m << 8 | m >>> 24, u[r] = m, m = 16843009 * v ^ 65537 * d ^ 257 * g ^ 16843008 * r, c[y] = m << 24 | m >>> 8, h[y] = m << 16 | m >>> 16, p[y] = m << 8 | m >>> 24, l[y] = m, r ? (r = g ^ t[t[t[v ^ g]]], n ^= t[t[n]]) : r = n = 1
+ }
+ }();
+ var y = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
+ g = 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, n = 4 * ((this._nRounds = r + 6) + 1), o = this._keySchedule = [], s = 0; s < n; s++)
+ if (s < r) o[s] = e[s];
+ else {
+ var a = o[s - 1];
+ s % r ? r > 6 && s % r == 4 && (a = i[a >>> 24] << 24 | i[a >>> 16 & 255] << 16 | i[a >>> 8 & 255] << 8 | i[255 & a]) : (a = i[(a = a << 8 | a >>> 24) >>> 24] << 24 | i[a >>> 16 & 255] << 16 | i[a >>> 8 & 255] << 8 | i[255 & a], a ^= y[s / r | 0] << 24), o[s] = o[s - r] ^ a
+ } for (var f = this._invKeySchedule = [], u = 0; u < n; u++) s = n - u, a = u % 4 ? o[s] : o[s - 4], f[u] = u < 4 || s <= 4 ? a : c[i[a >>> 24]] ^ h[i[a >>> 16 & 255]] ^ p[i[a >>> 8 & 255]] ^ l[i[255 & a]]
+ }
+ },
+ encryptBlock: function(t, e) {
+ this._doCryptBlock(t, e, this._keySchedule, s, a, f, u, i)
+ },
+ 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, c, h, p, l, o), r = t[e + 1], t[e + 1] = t[e + 3], t[e + 3] = r
+ },
+ _doCryptBlock: function(t, e, r, n, i, o, s, a) {
+ for (var f = this._nRounds, u = t[e] ^ r[0], c = t[e + 1] ^ r[1], h = t[e + 2] ^ r[2], p = t[e + 3] ^ r[3], l = 4, y = 1; y < f; y++) {
+ var g = n[u >>> 24] ^ i[c >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & p] ^ r[l++],
+ d = n[c >>> 24] ^ i[h >>> 16 & 255] ^ o[p >>> 8 & 255] ^ s[255 & u] ^ r[l++],
+ v = n[h >>> 24] ^ i[p >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & c] ^ r[l++],
+ m = n[p >>> 24] ^ i[u >>> 16 & 255] ^ o[c >>> 8 & 255] ^ s[255 & h] ^ r[l++];
+ u = g, c = d, h = v, p = m
+ }
+ g = (a[u >>> 24] << 24 | a[c >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & p]) ^ r[l++], d = (a[c >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[p >>> 8 & 255] << 8 | a[255 & u]) ^ r[l++], v = (a[h >>> 24] << 24 | a[p >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & c]) ^ r[l++], m = (a[p >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[c >>> 8 & 255] << 8 | a[255 & h]) ^ r[l++], t[e] = g, t[e + 1] = d, t[e + 2] = v, t[e + 3] = m
+ },
+ keySize: 8
+ });
+ t.AES = e._createHelper(g)
+ }(), n.AES)
+ },
+ 7165: function(t, e, r) {
+ var n, i, o, s, a, f, u, c, h, p, l, y, g, d, v, m, S, _, b;
+ t.exports = (n = r(9021), r(9506), void(n.lib.Cipher || (i = n, o = i.lib, s = o.Base, a = o.WordArray, f = o.BufferedBlockAlgorithm, u = i.enc, u.Utf8, c = u.Base64, h = i.algo.EvpKDF, p = o.Cipher = f.extend({
+ cfg: s.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() {
+ f.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() {
+ function t(t) {
+ return "string" == typeof t ? b : S
+ }
+ return function(e) {
+ return {
+ encrypt: function(r, n, i) {
+ return t(n).encrypt(e, r, n, i)
+ },
+ decrypt: function(r, n, i) {
+ return t(n).decrypt(e, r, n, i)
+ }
+ }
+ }
+ }()
+ }), o.StreamCipher = p.extend({
+ _doFinalize: function() {
+ return this._process(!0)
+ },
+ blockSize: 1
+ }), l = i.mode = {}, y = o.BlockCipherMode = s.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
+ }
+ }), g = l.CBC = function() {
+ var t = y.extend();
+
+ function e(t, e, r) {
+ var n = this._iv;
+ if (n) {
+ var i = n;
+ this._iv = void 0
+ } else i = this._prevBlock;
+ for (var o = 0; o < r; o++) t[e + o] ^= i[o]
+ }
+ return t.Encryptor = t.extend({
+ processBlock: function(t, r) {
+ var n = this._cipher,
+ i = n.blockSize;
+ e.call(this, t, r, i), n.encryptBlock(t, r), this._prevBlock = t.slice(r, r + i)
+ }
+ }), t.Decryptor = t.extend({
+ processBlock: function(t, r) {
+ var n = this._cipher,
+ i = n.blockSize,
+ o = t.slice(r, r + i);
+ n.decryptBlock(t, r), e.call(this, t, r, i), this._prevBlock = o
+ }
+ }), t
+ }(), d = (i.pad = {}).Pkcs7 = {
+ pad: function(t, e) {
+ for (var r = 4 * e, n = r - t.sigBytes % r, i = n << 24 | n << 16 | n << 8 | n, o = [], s = 0; s < n; s += 4) o.push(i);
+ var f = a.create(o, n);
+ t.concat(f)
+ },
+ unpad: function(t) {
+ var e = 255 & t.words[t.sigBytes - 1 >>> 2];
+ t.sigBytes -= e
+ }
+ }, o.BlockCipher = p.extend({
+ cfg: p.cfg.extend({
+ mode: g,
+ padding: d
+ }),
+ reset: function() {
+ p.reset.call(this);
+ var t = this.cfg,
+ e = t.iv,
+ r = t.mode;
+ if (this._xformMode == this._ENC_XFORM_MODE) var n = r.createEncryptor;
+ else n = r.createDecryptor, this._minBufferSize = 1;
+ this._mode && this._mode.__creator == n ? this._mode.init(this, e && e.words) : (this._mode = n.call(r, this, e && e.words), this._mode.__creator = n)
+ },
+ _doProcessBlock: function(t, e) {
+ this._mode.processBlock(t, e)
+ },
+ _doFinalize: function() {
+ var t = this.cfg.padding;
+ if (this._xformMode == this._ENC_XFORM_MODE) {
+ t.pad(this._data, this.blockSize);
+ var e = this._process(!0)
+ } else e = this._process(!0), t.unpad(e);
+ return e
+ },
+ blockSize: 4
+ }), v = o.CipherParams = s.extend({
+ init: function(t) {
+ this.mixIn(t)
+ },
+ toString: function(t) {
+ return (t || this.formatter).stringify(this)
+ }
+ }), m = (i.format = {}).OpenSSL = {
+ stringify: function(t) {
+ var e = t.ciphertext,
+ r = t.salt;
+ if (r) var n = a.create([1398893684, 1701076831]).concat(r).concat(e);
+ else n = e;
+ return n.toString(c)
+ },
+ parse: function(t) {
+ var e = c.parse(t),
+ r = e.words;
+ if (1398893684 == r[0] && 1701076831 == r[1]) {
+ var n = a.create(r.slice(2, 4));
+ r.splice(0, 4), e.sigBytes -= 16
+ }
+ return v.create({
+ ciphertext: e,
+ salt: n
+ })
+ }
+ }, S = o.SerializableCipher = s.extend({
+ cfg: s.extend({
+ format: m
+ }),
+ encrypt: function(t, e, r, n) {
+ n = this.cfg.extend(n);
+ var i = t.createEncryptor(r, n),
+ o = i.finalize(e),
+ s = i.cfg;
+ return v.create({
+ ciphertext: o,
+ key: r,
+ iv: s.iv,
+ algorithm: t,
+ mode: s.mode,
+ padding: s.padding,
+ blockSize: t.blockSize,
+ formatter: n.format
+ })
+ },
+ decrypt: function(t, e, r, n) {
+ return n = this.cfg.extend(n), e = this._parse(e, n.format), t.createDecryptor(r, n).finalize(e.ciphertext)
+ },
+ _parse: function(t, e) {
+ return "string" == typeof t ? e.parse(t, this) : t
+ }
+ }), _ = (i.kdf = {}).OpenSSL = {
+ execute: function(t, e, r, n) {
+ n || (n = a.random(8));
+ var i = h.create({
+ keySize: e + r
+ }).compute(t, n),
+ o = a.create(i.words.slice(e), 4 * r);
+ return i.sigBytes = 4 * e, v.create({
+ key: i,
+ iv: o,
+ salt: n
+ })
+ }
+ }, b = o.PasswordBasedCipher = S.extend({
+ cfg: S.cfg.extend({
+ kdf: _
+ }),
+ encrypt: function(t, e, r, n) {
+ var i = (n = this.cfg.extend(n)).kdf.execute(r, t.keySize, t.ivSize);
+ n.iv = i.iv;
+ var o = S.encrypt.call(this, t, e, i.key, n);
+ return o.mixIn(i), o
+ },
+ decrypt: function(t, e, r, n) {
+ n = this.cfg.extend(n), e = this._parse(e, n.format);
+ var i = n.kdf.execute(r, t.keySize, t.ivSize, e.salt);
+ return n.iv = i.iv, S.decrypt.call(this, t, e, i.key, n)
+ }
+ }))))
+ },
+ 9021: function(t, e) {
+ var r;
+ t.exports = (r = r || function(t, e) {
+ var r = Object.create || function() {
+ function t() {}
+ return function(e) {
+ var r;
+ return t.prototype = e, r = new t, t.prototype = null, r
+ }
+ }(),
+ n = {},
+ i = n.lib = {},
+ o = i.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, 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)
+ }
+ },
+ s = i.WordArray = o.extend({
+ init: function(t, e) {
+ t = this.words = t || [], this.sigBytes = null != e ? e : 4 * t.length
+ },
+ toString: function(t) {
+ return (t || f).stringify(this)
+ },
+ concat: function(t) {
+ var e = this.words,
+ r = t.words,
+ n = this.sigBytes,
+ i = t.sigBytes;
+ if (this.clamp(), n % 4)
+ for (var o = 0; o < i; o++) {
+ var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255;
+ e[n + o >>> 2] |= s << 24 - (n + o) % 4 * 8
+ } else
+ for (o = 0; o < i; o += 4) e[n + o >>> 2] = r[o >>> 2];
+ return this.sigBytes += i, this
+ },
+ clamp: function() {
+ var e = this.words,
+ r = this.sigBytes;
+ e[r >>> 2] &= 4294967295 << 32 - r % 4 * 8, e.length = t.ceil(r / 4)
+ },
+ clone: function() {
+ var t = o.clone.call(this);
+ return t.words = this.words.slice(0), t
+ },
+ random: function(e) {
+ for (var r, n = [], i = function(e) {
+ var r = 987654321,
+ n = 4294967295;
+ return function() {
+ var i = ((r = 36969 * (65535 & r) + (r >> 16) & n) << 16) + (e = 18e3 * (65535 & e) + (e >> 16) & n) & n;
+ return i /= 4294967296, (i += .5) * (t.random() > .5 ? 1 : -1)
+ }
+ }, o = 0; o < e; o += 4) {
+ var a = i(4294967296 * (r || t.random()));
+ r = 987654071 * a(), n.push(4294967296 * a() | 0)
+ }
+ return new s.init(n, e)
+ }
+ }),
+ a = n.enc = {},
+ f = a.Hex = {
+ stringify: function(t) {
+ for (var e = t.words, r = t.sigBytes, n = [], i = 0; i < r; i++) {
+ var o = e[i >>> 2] >>> 24 - i % 4 * 8 & 255;
+ n.push((o >>> 4).toString(16)), n.push((15 & o).toString(16))
+ }
+ return n.join("")
+ },
+ parse: function(t) {
+ for (var e = t.length, r = [], n = 0; n < e; n += 2) r[n >>> 3] |= parseInt(t.substr(n, 2), 16) << 24 - n % 8 * 4;
+ return new s.init(r, e / 2)
+ }
+ },
+ u = a.Latin1 = {
+ stringify: function(t) {
+ for (var e = t.words, r = t.sigBytes, n = [], i = 0; i < r; i++) {
+ var o = e[i >>> 2] >>> 24 - i % 4 * 8 & 255;
+ n.push(String.fromCharCode(o))
+ }
+ return n.join("")
+ },
+ parse: function(t) {
+ for (var e = t.length, r = [], n = 0; n < e; n++) r[n >>> 2] |= (255 & t.charCodeAt(n)) << 24 - n % 4 * 8;
+ return new s.init(r, e)
+ }
+ },
+ c = a.Utf8 = {
+ stringify: function(t) {
+ try {
+ return decodeURIComponent(escape(u.stringify(t)))
+ } catch (t) {
+ throw new Error("Malformed UTF-8 data")
+ }
+ },
+ parse: function(t) {
+ return u.parse(unescape(encodeURIComponent(t)))
+ }
+ },
+ h = i.BufferedBlockAlgorithm = o.extend({
+ reset: function() {
+ this._data = new s.init, this._nDataBytes = 0
+ },
+ _append: function(t) {
+ "string" == typeof t && (t = c.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes
+ },
+ _process: function(e) {
+ var r = this._data,
+ n = r.words,
+ i = r.sigBytes,
+ o = this.blockSize,
+ a = i / (4 * o),
+ f = (a = e ? t.ceil(a) : t.max((0 | a) - this._minBufferSize, 0)) * o,
+ u = t.min(4 * f, i);
+ if (f) {
+ for (var c = 0; c < f; c += o) this._doProcessBlock(n, c);
+ var h = n.splice(0, f);
+ r.sigBytes -= u
+ }
+ return new s.init(h, u)
+ },
+ clone: function() {
+ var t = o.clone.call(this);
+ return t._data = this._data.clone(), t
+ },
+ _minBufferSize: 0
+ }),
+ p = (i.Hasher = h.extend({
+ cfg: o.extend(),
+ init: function(t) {
+ this.cfg = this.cfg.extend(t), this.reset()
+ },
+ reset: function() {
+ h.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(t) {
+ return function(e, r) {
+ return new t.init(r).finalize(e)
+ }
+ },
+ _createHmacHelper: function(t) {
+ return function(e, r) {
+ return new p.HMAC.init(t, r).finalize(e)
+ }
+ }
+ }), n.algo = {});
+ return n
+ }(Math), r)
+ },
+ 754: function(t, e, r) {
+ var n, i, o;
+ t.exports = (n = r(9021), o = (i = n).lib.WordArray, i.enc.Base64 = {
+ stringify: function(t) {
+ var e = t.words,
+ r = t.sigBytes,
+ n = this._map;
+ t.clamp();
+ for (var i = [], 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, a = 0; a < 4 && o + .75 * a < r; a++) i.push(n.charAt(s >>> 6 * (3 - a) & 63));
+ var f = n.charAt(64);
+ if (f)
+ for (; i.length % 4;) i.push(f);
+ return i.join("")
+ },
+ parse: function(t) {
+ var e = t.length,
+ r = this._map,
+ n = this._reverseMap;
+ if (!n) {
+ n = this._reverseMap = [];
+ for (var i = 0; i < r.length; i++) n[r.charCodeAt(i)] = i
+ }
+ var s = r.charAt(64);
+ if (s) {
+ var a = t.indexOf(s); - 1 !== a && (e = a)
+ }
+ return function(t, e, r) {
+ for (var n = [], i = 0, s = 0; s < e; s++)
+ if (s % 4) {
+ var a = r[t.charCodeAt(s - 1)] << s % 4 * 2,
+ f = r[t.charCodeAt(s)] >>> 6 - s % 4 * 2;
+ n[i >>> 2] |= (a | f) << 24 - i % 4 * 8, i++
+ } return o.create(n, i)
+ }(t, e, n)
+ },
+ _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
+ }, n.enc.Base64)
+ },
+ 5503: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), function() {
+ var t = n,
+ e = t.lib.WordArray,
+ r = t.enc;
+
+ function i(t) {
+ return t << 8 & 4278255360 | t >>> 8 & 16711935
+ }
+ r.Utf16 = r.Utf16BE = {
+ stringify: function(t) {
+ for (var e = t.words, r = t.sigBytes, n = [], i = 0; i < r; i += 2) {
+ var o = e[i >>> 2] >>> 16 - i % 4 * 8 & 65535;
+ n.push(String.fromCharCode(o))
+ }
+ return n.join("")
+ },
+ parse: function(t) {
+ for (var r = t.length, n = [], i = 0; i < r; i++) n[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16;
+ return e.create(n, 2 * r)
+ }
+ }, r.Utf16LE = {
+ stringify: function(t) {
+ for (var e = t.words, r = t.sigBytes, n = [], o = 0; o < r; o += 2) {
+ var s = i(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535);
+ n.push(String.fromCharCode(s))
+ }
+ return n.join("")
+ },
+ parse: function(t) {
+ for (var r = t.length, n = [], o = 0; o < r; o++) n[o >>> 1] |= i(t.charCodeAt(o) << 16 - o % 2 * 16);
+ return e.create(n, 2 * r)
+ }
+ }
+ }(), n.enc.Utf16)
+ },
+ 9506: function(t, e, r) {
+ var n, i, o, s, a, f, u, c;
+ t.exports = (c = r(9021), r(5471), r(1025), o = (i = (n = c).lib).Base, s = i.WordArray, f = (a = n.algo).MD5, u = a.EvpKDF = o.extend({
+ cfg: o.extend({
+ keySize: 4,
+ hasher: f,
+ iterations: 1
+ }),
+ init: function(t) {
+ this.cfg = this.cfg.extend(t)
+ },
+ compute: function(t, e) {
+ for (var r = this.cfg, n = r.hasher.create(), i = s.create(), o = i.words, a = r.keySize, f = r.iterations; o.length < a;) {
+ u && n.update(u);
+ var u = n.update(t).finalize(e);
+ n.reset();
+ for (var c = 1; c < f; c++) u = n.finalize(u), n.reset();
+ i.concat(u)
+ }
+ return i.sigBytes = 4 * a, i
+ }
+ }), n.EvpKDF = function(t, e, r) {
+ return u.create(r).compute(t, e)
+ }, c.EvpKDF)
+ },
+ 25: function(t, e, r) {
+ var n, i, o, s;
+ t.exports = (s = r(9021), r(7165), i = (n = s).lib.CipherParams, o = n.enc.Hex, n.format.Hex = {
+ stringify: function(t) {
+ return t.ciphertext.toString(o)
+ },
+ parse: function(t) {
+ var e = o.parse(t);
+ return i.create({
+ ciphertext: e
+ })
+ }
+ }, s.format.Hex)
+ },
+ 1025: function(t, e, r) {
+ var n, i, o;
+ t.exports = (i = (n = r(9021)).lib.Base, o = n.enc.Utf8, void(n.algo.HMAC = i.extend({
+ init: function(t, e) {
+ t = this._hasher = new t.init, "string" == typeof e && (e = o.parse(e));
+ var r = t.blockSize,
+ n = 4 * r;
+ e.sigBytes > n && (e = t.finalize(e)), e.clamp();
+ for (var i = this._oKey = e.clone(), s = this._iKey = e.clone(), a = i.words, f = s.words, u = 0; u < r; u++) a[u] ^= 1549556828, f[u] ^= 909522486;
+ i.sigBytes = s.sigBytes = n, 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))
+ }
+ })))
+ },
+ 1396: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(3240), r(6440), r(5503), r(754), r(4636), r(5471), r(3009), r(6308), r(1380), r(9557), r(5953), r(8056), r(1025), r(19), r(9506), r(7165), r(2169), r(6939), r(6372), r(3797), r(8454), r(2073), r(4905), r(482), r(2155), r(8124), r(25), r(955), r(7628), r(7193), r(6298), r(2696), n)
+ },
+ 6440: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), function() {
+ if ("function" == typeof ArrayBuffer) {
+ var t = n.lib.WordArray,
+ e = t.init,
+ r = 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 r = t.byteLength, n = [], i = 0; i < r; i++) n[i >>> 2] |= t[i] << 24 - i % 4 * 8;
+ e.call(this, n, r)
+ } else e.apply(this, arguments)
+ };
+ r.prototype = t
+ }
+ }(), n.lib.WordArray)
+ },
+ 4636: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), function(t) {
+ var e = n,
+ r = e.lib,
+ i = r.WordArray,
+ o = r.Hasher,
+ s = e.algo,
+ a = [];
+ ! function() {
+ for (var e = 0; e < 64; e++) a[e] = 4294967296 * t.abs(t.sin(e + 1)) | 0
+ }();
+ var f = s.MD5 = o.extend({
+ _doReset: function() {
+ this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878])
+ },
+ _doProcessBlock: function(t, e) {
+ for (var r = 0; r < 16; r++) {
+ var n = e + r,
+ i = t[n];
+ t[n] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8)
+ }
+ var o = this._hash.words,
+ s = t[e + 0],
+ f = t[e + 1],
+ l = t[e + 2],
+ y = t[e + 3],
+ g = t[e + 4],
+ d = t[e + 5],
+ v = t[e + 6],
+ m = t[e + 7],
+ S = t[e + 8],
+ _ = t[e + 9],
+ b = t[e + 10],
+ E = t[e + 11],
+ w = t[e + 12],
+ O = t[e + 13],
+ B = t[e + 14],
+ A = t[e + 15],
+ x = o[0],
+ P = o[1],
+ T = o[2],
+ I = o[3];
+ x = u(x, P, T, I, s, 7, a[0]), I = u(I, x, P, T, f, 12, a[1]), T = u(T, I, x, P, l, 17, a[2]), P = u(P, T, I, x, y, 22, a[3]), x = u(x, P, T, I, g, 7, a[4]), I = u(I, x, P, T, d, 12, a[5]), T = u(T, I, x, P, v, 17, a[6]), P = u(P, T, I, x, m, 22, a[7]), x = u(x, P, T, I, S, 7, a[8]), I = u(I, x, P, T, _, 12, a[9]), T = u(T, I, x, P, b, 17, a[10]), P = u(P, T, I, x, E, 22, a[11]), x = u(x, P, T, I, w, 7, a[12]), I = u(I, x, P, T, O, 12, a[13]), T = u(T, I, x, P, B, 17, a[14]), x = c(x, P = u(P, T, I, x, A, 22, a[15]), T, I, f, 5, a[16]), I = c(I, x, P, T, v, 9, a[17]), T = c(T, I, x, P, E, 14, a[18]), P = c(P, T, I, x, s, 20, a[19]), x = c(x, P, T, I, d, 5, a[20]), I = c(I, x, P, T, b, 9, a[21]), T = c(T, I, x, P, A, 14, a[22]), P = c(P, T, I, x, g, 20, a[23]), x = c(x, P, T, I, _, 5, a[24]), I = c(I, x, P, T, B, 9, a[25]), T = c(T, I, x, P, y, 14, a[26]), P = c(P, T, I, x, S, 20, a[27]), x = c(x, P, T, I, O, 5, a[28]), I = c(I, x, P, T, l, 9, a[29]), T = c(T, I, x, P, m, 14, a[30]), x = h(x, P = c(P, T, I, x, w, 20, a[31]), T, I, d, 4, a[32]), I = h(I, x, P, T, S, 11, a[33]), T = h(T, I, x, P, E, 16, a[34]), P = h(P, T, I, x, B, 23, a[35]), x = h(x, P, T, I, f, 4, a[36]), I = h(I, x, P, T, g, 11, a[37]), T = h(T, I, x, P, m, 16, a[38]), P = h(P, T, I, x, b, 23, a[39]), x = h(x, P, T, I, O, 4, a[40]), I = h(I, x, P, T, s, 11, a[41]), T = h(T, I, x, P, y, 16, a[42]), P = h(P, T, I, x, v, 23, a[43]), x = h(x, P, T, I, _, 4, a[44]), I = h(I, x, P, T, w, 11, a[45]), T = h(T, I, x, P, A, 16, a[46]), x = p(x, P = h(P, T, I, x, l, 23, a[47]), T, I, s, 6, a[48]), I = p(I, x, P, T, m, 10, a[49]), T = p(T, I, x, P, B, 15, a[50]), P = p(P, T, I, x, d, 21, a[51]), x = p(x, P, T, I, w, 6, a[52]), I = p(I, x, P, T, y, 10, a[53]), T = p(T, I, x, P, b, 15, a[54]), P = p(P, T, I, x, f, 21, a[55]), x = p(x, P, T, I, S, 6, a[56]), I = p(I, x, P, T, A, 10, a[57]), T = p(T, I, x, P, v, 15, a[58]), P = p(P, T, I, x, O, 21, a[59]), x = p(x, P, T, I, g, 6, a[60]), I = p(I, x, P, T, E, 10, a[61]), T = p(T, I, x, P, l, 15, a[62]), P = p(P, T, I, x, _, 21, a[63]), o[0] = o[0] + x | 0, o[1] = o[1] + P | 0, o[2] = o[2] + T | 0, o[3] = o[3] + I | 0
+ },
+ _doFinalize: function() {
+ var e = this._data,
+ r = e.words,
+ n = 8 * this._nDataBytes,
+ i = 8 * e.sigBytes;
+ r[i >>> 5] |= 128 << 24 - i % 32;
+ var o = t.floor(n / 4294967296),
+ s = n;
+ r[15 + (i + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), r[14 + (i + 64 >>> 9 << 4)] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), e.sigBytes = 4 * (r.length + 1), this._process();
+ for (var a = this._hash, f = a.words, u = 0; u < 4; u++) {
+ var c = f[u];
+ f[u] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8)
+ }
+ return a
+ },
+ clone: function() {
+ var t = o.clone.call(this);
+ return t._hash = this._hash.clone(), t
+ }
+ });
+
+ function u(t, e, r, n, i, o, s) {
+ var a = t + (e & r | ~e & n) + i + s;
+ return (a << o | a >>> 32 - o) + e
+ }
+
+ function c(t, e, r, n, i, o, s) {
+ var a = t + (e & n | r & ~n) + i + s;
+ return (a << o | a >>> 32 - o) + e
+ }
+
+ function h(t, e, r, n, i, o, s) {
+ var a = t + (e ^ r ^ n) + i + s;
+ return (a << o | a >>> 32 - o) + e
+ }
+
+ function p(t, e, r, n, i, o, s) {
+ var a = t + (r ^ (e | ~n)) + i + s;
+ return (a << o | a >>> 32 - o) + e
+ }
+ e.MD5 = o._createHelper(f), e.HmacMD5 = o._createHmacHelper(f)
+ }(Math), n.MD5)
+ },
+ 2169: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(7165), n.mode.CFB = function() {
+ var t = n.lib.BlockCipherMode.extend();
+
+ function e(t, e, r, n) {
+ var i = this._iv;
+ if (i) {
+ var o = i.slice(0);
+ this._iv = void 0
+ } else o = this._prevBlock;
+ n.encryptBlock(o, 0);
+ for (var s = 0; s < r; s++) t[e + s] ^= o[s]
+ }
+ return t.Encryptor = t.extend({
+ processBlock: function(t, r) {
+ var n = this._cipher,
+ i = n.blockSize;
+ e.call(this, t, r, i, n), this._prevBlock = t.slice(r, r + i)
+ }
+ }), t.Decryptor = t.extend({
+ processBlock: function(t, r) {
+ var n = this._cipher,
+ i = n.blockSize,
+ o = t.slice(r, r + i);
+ e.call(this, t, r, i, n), this._prevBlock = o
+ }
+ }), t
+ }(), n.mode.CFB)
+ },
+ 6372: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(7165), n.mode.CTRGladman = function() {
+ var t = n.lib.BlockCipherMode.extend();
+
+ function e(t) {
+ if (255 & ~(t >> 24)) t += 1 << 24;
+ else {
+ var e = t >> 16 & 255,
+ r = t >> 8 & 255,
+ n = 255 & t;
+ 255 === e ? (e = 0, 255 === r ? (r = 0, 255 === n ? n = 0 : ++n) : ++r) : ++e, t = 0, t += e << 16, t += r << 8, t += n
+ }
+ return t
+ }
+ var r = t.Encryptor = t.extend({
+ processBlock: function(t, r) {
+ var n = this._cipher,
+ i = n.blockSize,
+ o = this._iv,
+ s = this._counter;
+ o && (s = this._counter = o.slice(0), this._iv = void 0),
+ function(t) {
+ 0 === (t[0] = e(t[0])) && (t[1] = e(t[1]))
+ }(s);
+ var a = s.slice(0);
+ n.encryptBlock(a, 0);
+ for (var f = 0; f < i; f++) t[r + f] ^= a[f]
+ }
+ });
+ return t.Decryptor = r, t
+ }(), n.mode.CTRGladman)
+ },
+ 6939: function(t, e, r) {
+ var n, i, o;
+ t.exports = (o = r(9021), r(7165), o.mode.CTR = (i = (n = o.lib.BlockCipherMode.extend()).Encryptor = n.extend({
+ processBlock: function(t, e) {
+ var r = this._cipher,
+ n = r.blockSize,
+ i = this._iv,
+ o = this._counter;
+ i && (o = this._counter = i.slice(0), this._iv = void 0);
+ var s = o.slice(0);
+ r.encryptBlock(s, 0), o[n - 1] = o[n - 1] + 1 | 0;
+ for (var a = 0; a < n; a++) t[e + a] ^= s[a]
+ }
+ }), n.Decryptor = i, n), o.mode.CTR)
+ },
+ 8454: function(t, e, r) {
+ var n, i;
+ t.exports = (i = r(9021), r(7165), i.mode.ECB = ((n = i.lib.BlockCipherMode.extend()).Encryptor = n.extend({
+ processBlock: function(t, e) {
+ this._cipher.encryptBlock(t, e)
+ }
+ }), n.Decryptor = n.extend({
+ processBlock: function(t, e) {
+ this._cipher.decryptBlock(t, e)
+ }
+ }), n), i.mode.ECB)
+ },
+ 3797: function(t, e, r) {
+ var n, i, o;
+ t.exports = (o = r(9021), r(7165), o.mode.OFB = (i = (n = o.lib.BlockCipherMode.extend()).Encryptor = n.extend({
+ processBlock: function(t, e) {
+ var r = this._cipher,
+ n = r.blockSize,
+ i = this._iv,
+ o = this._keystream;
+ i && (o = this._keystream = i.slice(0), this._iv = void 0), r.encryptBlock(o, 0);
+ for (var s = 0; s < n; s++) t[e + s] ^= o[s]
+ }
+ }), n.Decryptor = i, n), o.mode.OFB)
+ },
+ 2073: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(7165), n.pad.AnsiX923 = {
+ pad: function(t, e) {
+ var r = t.sigBytes,
+ n = 4 * e,
+ i = n - r % n,
+ o = r + i - 1;
+ t.clamp(), t.words[o >>> 2] |= i << 24 - o % 4 * 8, t.sigBytes += i
+ },
+ unpad: function(t) {
+ var e = 255 & t.words[t.sigBytes - 1 >>> 2];
+ t.sigBytes -= e
+ }
+ }, n.pad.Ansix923)
+ },
+ 4905: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(7165), n.pad.Iso10126 = {
+ pad: function(t, e) {
+ var r = 4 * e,
+ i = r - t.sigBytes % r;
+ t.concat(n.lib.WordArray.random(i - 1)).concat(n.lib.WordArray.create([i << 24], 1))
+ },
+ unpad: function(t) {
+ var e = 255 & t.words[t.sigBytes - 1 >>> 2];
+ t.sigBytes -= e
+ }
+ }, n.pad.Iso10126)
+ },
+ 482: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(7165), n.pad.Iso97971 = {
+ pad: function(t, e) {
+ t.concat(n.lib.WordArray.create([2147483648], 1)), n.pad.ZeroPadding.pad(t, e)
+ },
+ unpad: function(t) {
+ n.pad.ZeroPadding.unpad(t), t.sigBytes--
+ }
+ }, n.pad.Iso97971)
+ },
+ 8124: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(7165), n.pad.NoPadding = {
+ pad: function() {},
+ unpad: function() {}
+ }, n.pad.NoPadding)
+ },
+ 2155: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(7165), n.pad.ZeroPadding = {
+ pad: function(t, e) {
+ var r = 4 * e;
+ t.clamp(), t.sigBytes += r - (t.sigBytes % r || r)
+ },
+ unpad: function(t) {
+ for (var e = t.words, r = t.sigBytes - 1; !(e[r >>> 2] >>> 24 - r % 4 * 8 & 255);) r--;
+ t.sigBytes = r + 1
+ }
+ }, n.pad.ZeroPadding)
+ },
+ 19: function(t, e, r) {
+ var n, i, o, s, a, f, u, c, h;
+ t.exports = (h = r(9021), r(5471), r(1025), o = (i = (n = h).lib).Base, s = i.WordArray, f = (a = n.algo).SHA1, u = a.HMAC, c = a.PBKDF2 = o.extend({
+ cfg: o.extend({
+ keySize: 4,
+ hasher: f,
+ iterations: 1
+ }),
+ init: function(t) {
+ this.cfg = this.cfg.extend(t)
+ },
+ compute: function(t, e) {
+ for (var r = this.cfg, n = u.create(r.hasher, t), i = s.create(), o = s.create([1]), a = i.words, f = o.words, c = r.keySize, h = r.iterations; a.length < c;) {
+ var p = n.update(e).finalize(o);
+ n.reset();
+ for (var l = p.words, y = l.length, g = p, d = 1; d < h; d++) {
+ g = n.finalize(g), n.reset();
+ for (var v = g.words, m = 0; m < y; m++) l[m] ^= v[m]
+ }
+ i.concat(p), f[0]++
+ }
+ return i.sigBytes = 4 * c, i
+ }
+ }), n.PBKDF2 = function(t, e, r) {
+ return c.create(r).compute(t, e)
+ }, h.PBKDF2)
+ },
+ 2696: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() {
+ var t = n,
+ e = t.lib.StreamCipher,
+ r = t.algo,
+ i = [],
+ o = [],
+ s = [],
+ a = r.RabbitLegacy = e.extend({
+ _doReset: function() {
+ 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],
+ 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 i = 0; i < 4; i++) f.call(this);
+ for (i = 0; i < 8; i++) n[i] ^= r[i + 4 & 7];
+ if (e) {
+ var o = e.words,
+ s = o[0],
+ a = o[1],
+ u = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8),
+ c = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8),
+ h = u >>> 16 | 4294901760 & c,
+ p = c << 16 | 65535 & u;
+ for (n[0] ^= u, n[1] ^= h, n[2] ^= c, n[3] ^= p, n[4] ^= u, n[5] ^= h, n[6] ^= c, n[7] ^= p, i = 0; i < 4; i++) f.call(this)
+ }
+ },
+ _doProcessBlock: function(t, e) {
+ var r = this._X;
+ f.call(this), i[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, i[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, i[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, i[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16;
+ for (var n = 0; n < 4; n++) i[n] = 16711935 & (i[n] << 8 | i[n] >>> 24) | 4278255360 & (i[n] << 24 | i[n] >>> 8), t[e + n] ^= i[n]
+ },
+ blockSize: 4,
+ ivSize: 2
+ });
+
+ function f() {
+ for (var t = this._X, e = this._C, r = 0; r < 8; r++) o[r] = e[r];
+ for (e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < o[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < o[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < o[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < o[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < o[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < o[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < o[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < o[7] >>> 0 ? 1 : 0, r = 0; r < 8; r++) {
+ var n = t[r] + e[r],
+ i = 65535 & n,
+ a = n >>> 16,
+ f = ((i * i >>> 17) + i * a >>> 15) + a * a,
+ u = ((4294901760 & n) * n | 0) + ((65535 & n) * n | 0);
+ s[r] = f ^ u
+ }
+ t[0] = s[0] + (s[7] << 16 | s[7] >>> 16) + (s[6] << 16 | s[6] >>> 16) | 0, t[1] = s[1] + (s[0] << 8 | s[0] >>> 24) + s[7] | 0, t[2] = s[2] + (s[1] << 16 | s[1] >>> 16) + (s[0] << 16 | s[0] >>> 16) | 0, t[3] = s[3] + (s[2] << 8 | s[2] >>> 24) + s[1] | 0, t[4] = s[4] + (s[3] << 16 | s[3] >>> 16) + (s[2] << 16 | s[2] >>> 16) | 0, t[5] = s[5] + (s[4] << 8 | s[4] >>> 24) + s[3] | 0, t[6] = s[6] + (s[5] << 16 | s[5] >>> 16) + (s[4] << 16 | s[4] >>> 16) | 0, t[7] = s[7] + (s[6] << 8 | s[6] >>> 24) + s[5] | 0
+ }
+ t.RabbitLegacy = e._createHelper(a)
+ }(), n.RabbitLegacy)
+ },
+ 6298: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() {
+ var t = n,
+ e = t.lib.StreamCipher,
+ r = t.algo,
+ i = [],
+ o = [],
+ s = [],
+ a = r.Rabbit = e.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 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],
+ 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]];
+ for (this._b = 0, r = 0; r < 4; r++) f.call(this);
+ for (r = 0; r < 8; r++) i[r] ^= n[r + 4 & 7];
+ if (e) {
+ var o = e.words,
+ s = o[0],
+ a = o[1],
+ u = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8),
+ c = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8),
+ h = u >>> 16 | 4294901760 & c,
+ p = c << 16 | 65535 & u;
+ for (i[0] ^= u, i[1] ^= h, i[2] ^= c, i[3] ^= p, i[4] ^= u, i[5] ^= h, i[6] ^= c, i[7] ^= p, r = 0; r < 4; r++) f.call(this)
+ }
+ },
+ _doProcessBlock: function(t, e) {
+ var r = this._X;
+ f.call(this), i[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, i[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, i[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, i[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16;
+ for (var n = 0; n < 4; n++) i[n] = 16711935 & (i[n] << 8 | i[n] >>> 24) | 4278255360 & (i[n] << 24 | i[n] >>> 8), t[e + n] ^= i[n]
+ },
+ blockSize: 4,
+ ivSize: 2
+ });
+
+ function f() {
+ for (var t = this._X, e = this._C, r = 0; r < 8; r++) o[r] = e[r];
+ for (e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < o[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < o[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < o[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < o[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < o[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < o[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < o[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < o[7] >>> 0 ? 1 : 0, r = 0; r < 8; r++) {
+ var n = t[r] + e[r],
+ i = 65535 & n,
+ a = n >>> 16,
+ f = ((i * i >>> 17) + i * a >>> 15) + a * a,
+ u = ((4294901760 & n) * n | 0) + ((65535 & n) * n | 0);
+ s[r] = f ^ u
+ }
+ t[0] = s[0] + (s[7] << 16 | s[7] >>> 16) + (s[6] << 16 | s[6] >>> 16) | 0, t[1] = s[1] + (s[0] << 8 | s[0] >>> 24) + s[7] | 0, t[2] = s[2] + (s[1] << 16 | s[1] >>> 16) + (s[0] << 16 | s[0] >>> 16) | 0, t[3] = s[3] + (s[2] << 8 | s[2] >>> 24) + s[1] | 0, t[4] = s[4] + (s[3] << 16 | s[3] >>> 16) + (s[2] << 16 | s[2] >>> 16) | 0, t[5] = s[5] + (s[4] << 8 | s[4] >>> 24) + s[3] | 0, t[6] = s[6] + (s[5] << 16 | s[5] >>> 16) + (s[4] << 16 | s[4] >>> 16) | 0, t[7] = s[7] + (s[6] << 8 | s[6] >>> 24) + s[5] | 0
+ }
+ t.Rabbit = e._createHelper(a)
+ }(), n.Rabbit)
+ },
+ 7193: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() {
+ var t = n,
+ 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, n = this._S = [], i = 0; i < 256; i++) n[i] = i;
+ i = 0;
+ for (var o = 0; i < 256; i++) {
+ var s = i % r,
+ a = e[s >>> 2] >>> 24 - s % 4 * 8 & 255;
+ o = (o + n[i] + a) % 256;
+ var f = n[i];
+ n[i] = n[o], n[o] = f
+ }
+ this._i = this._j = 0
+ },
+ _doProcessBlock: function(t, e) {
+ t[e] ^= o.call(this)
+ },
+ keySize: 8,
+ ivSize: 0
+ });
+
+ function o() {
+ for (var t = this._S, e = this._i, r = this._j, n = 0, i = 0; i < 4; i++) {
+ r = (r + t[e = (e + 1) % 256]) % 256;
+ var o = t[e];
+ t[e] = t[r], t[r] = o, n |= t[(t[e] + t[r]) % 256] << 24 - 8 * i
+ }
+ return this._i = e, this._j = r, n
+ }
+ t.RC4 = e._createHelper(i);
+ var s = r.RC4Drop = i.extend({
+ cfg: i.cfg.extend({
+ drop: 192
+ }),
+ _doReset: function() {
+ i._doReset.call(this);
+ for (var t = this.cfg.drop; t > 0; t--) o.call(this)
+ }
+ });
+ t.RC4Drop = e._createHelper(s)
+ }(), n.RC4)
+ },
+ 8056: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), function(t) {
+ var e = n,
+ r = e.lib,
+ i = r.WordArray,
+ o = r.Hasher,
+ s = e.algo,
+ a = i.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]),
+ f = i.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]),
+ u = i.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]),
+ c = i.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]),
+ h = i.create([0, 1518500249, 1859775393, 2400959708, 2840853838]),
+ p = i.create([1352829926, 1548603684, 1836072691, 2053994217, 0]),
+ l = s.RIPEMD160 = o.extend({
+ _doReset: function() {
+ this._hash = i.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
+ },
+ _doProcessBlock: function(t, e) {
+ for (var r = 0; r < 16; r++) {
+ var n = e + r,
+ i = t[n];
+ t[n] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8)
+ }
+ var o, s, l, _, b, E, w, O, B, A, x, P = this._hash.words,
+ T = h.words,
+ I = p.words,
+ k = a.words,
+ D = f.words,
+ R = u.words,
+ N = c.words;
+ for (E = o = P[0], w = s = P[1], O = l = P[2], B = _ = P[3], A = b = P[4], r = 0; r < 80; r += 1) x = o + t[e + k[r]] | 0, x += r < 16 ? y(s, l, _) + T[0] : r < 32 ? g(s, l, _) + T[1] : r < 48 ? d(s, l, _) + T[2] : r < 64 ? v(s, l, _) + T[3] : m(s, l, _) + T[4], x = (x = S(x |= 0, R[r])) + b | 0, o = b, b = _, _ = S(l, 10), l = s, s = x, x = E + t[e + D[r]] | 0, x += r < 16 ? m(w, O, B) + I[0] : r < 32 ? v(w, O, B) + I[1] : r < 48 ? d(w, O, B) + I[2] : r < 64 ? g(w, O, B) + I[3] : y(w, O, B) + I[4], x = (x = S(x |= 0, N[r])) + A | 0, E = A, A = B, B = S(O, 10), O = w, w = x;
+ x = P[1] + l + B | 0, P[1] = P[2] + _ + A | 0, P[2] = P[3] + b + E | 0, P[3] = P[4] + o + w | 0, P[4] = P[0] + s + O | 0, P[0] = x
+ },
+ _doFinalize: function() {
+ var t = this._data,
+ e = t.words,
+ r = 8 * this._nDataBytes,
+ n = 8 * t.sigBytes;
+ e[n >>> 5] |= 128 << 24 - n % 32, e[14 + (n + 64 >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (e.length + 1), this._process();
+ for (var i = this._hash, o = i.words, s = 0; s < 5; s++) {
+ var a = o[s];
+ o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8)
+ }
+ return i
+ },
+ clone: function() {
+ var t = o.clone.call(this);
+ return t._hash = this._hash.clone(), t
+ }
+ });
+
+ function y(t, e, r) {
+ return t ^ e ^ r
+ }
+
+ function g(t, e, r) {
+ return t & e | ~t & r
+ }
+
+ function d(t, e, r) {
+ return (t | ~e) ^ r
+ }
+
+ function v(t, e, r) {
+ return t & r | e & ~r
+ }
+
+ function m(t, e, r) {
+ return t ^ (e | ~r)
+ }
+
+ function S(t, e) {
+ return t << e | t >>> 32 - e
+ }
+ e.RIPEMD160 = o._createHelper(l), e.HmacRIPEMD160 = o._createHmacHelper(l)
+ }(Math), n.RIPEMD160)
+ },
+ 5471: function(t, e, r) {
+ var n, i, o, s, a, f, u, c;
+ t.exports = (i = (n = c = r(9021)).lib, o = i.WordArray, s = i.Hasher, a = n.algo, f = [], u = a.SHA1 = s.extend({
+ _doReset: function() {
+ this._hash = new o.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
+ },
+ _doProcessBlock: function(t, e) {
+ for (var r = this._hash.words, n = r[0], i = r[1], o = r[2], s = r[3], a = r[4], u = 0; u < 80; u++) {
+ if (u < 16) f[u] = 0 | t[e + u];
+ else {
+ var c = f[u - 3] ^ f[u - 8] ^ f[u - 14] ^ f[u - 16];
+ f[u] = c << 1 | c >>> 31
+ }
+ var h = (n << 5 | n >>> 27) + a + f[u];
+ h += u < 20 ? 1518500249 + (i & o | ~i & s) : u < 40 ? 1859775393 + (i ^ o ^ s) : u < 60 ? (i & o | i & s | o & s) - 1894007588 : (i ^ o ^ s) - 899497514, a = s, s = o, o = i << 30 | i >>> 2, i = n, n = h
+ }
+ r[0] = r[0] + n | 0, r[1] = r[1] + i | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + a | 0
+ },
+ _doFinalize: function() {
+ var t = this._data,
+ e = t.words,
+ r = 8 * this._nDataBytes,
+ n = 8 * t.sigBytes;
+ return e[n >>> 5] |= 128 << 24 - n % 32, e[14 + (n + 64 >>> 9 << 4)] = Math.floor(r / 4294967296), e[15 + (n + 64 >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash
+ },
+ clone: function() {
+ var t = s.clone.call(this);
+ return t._hash = this._hash.clone(), t
+ }
+ }), n.SHA1 = s._createHelper(u), n.HmacSHA1 = s._createHmacHelper(u), c.SHA1)
+ },
+ 6308: function(t, e, r) {
+ var n, i, o, s, a, f;
+ t.exports = (f = r(9021), r(3009), i = (n = f).lib.WordArray, o = n.algo, s = o.SHA256, a = o.SHA224 = s.extend({
+ _doReset: function() {
+ this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428])
+ },
+ _doFinalize: function() {
+ var t = s._doFinalize.call(this);
+ return t.sigBytes -= 4, t
+ }
+ }), n.SHA224 = s._createHelper(a), n.HmacSHA224 = s._createHmacHelper(a), f.SHA224)
+ },
+ 3009: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), function(t) {
+ var e = n,
+ r = e.lib,
+ i = r.WordArray,
+ o = r.Hasher,
+ s = e.algo,
+ a = [],
+ f = [];
+ ! function() {
+ function e(e) {
+ for (var r = t.sqrt(e), n = 2; n <= r; n++)
+ if (!(e % n)) return !1;
+ return !0
+ }
+
+ function r(t) {
+ return 4294967296 * (t - (0 | t)) | 0
+ }
+ for (var n = 2, i = 0; i < 64;) e(n) && (i < 8 && (a[i] = r(t.pow(n, .5))), f[i] = r(t.pow(n, 1 / 3)), i++), n++
+ }();
+ var u = [],
+ c = s.SHA256 = o.extend({
+ _doReset: function() {
+ this._hash = new i.init(a.slice(0))
+ },
+ _doProcessBlock: function(t, e) {
+ for (var r = this._hash.words, n = r[0], i = r[1], o = r[2], s = r[3], a = r[4], c = r[5], h = r[6], p = r[7], l = 0; l < 64; l++) {
+ if (l < 16) u[l] = 0 | t[e + l];
+ else {
+ var y = u[l - 15],
+ g = (y << 25 | y >>> 7) ^ (y << 14 | y >>> 18) ^ y >>> 3,
+ d = u[l - 2],
+ v = (d << 15 | d >>> 17) ^ (d << 13 | d >>> 19) ^ d >>> 10;
+ u[l] = g + u[l - 7] + v + u[l - 16]
+ }
+ var m = n & i ^ n & o ^ i & o,
+ S = (n << 30 | n >>> 2) ^ (n << 19 | n >>> 13) ^ (n << 10 | n >>> 22),
+ _ = p + ((a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25)) + (a & c ^ ~a & h) + f[l] + u[l];
+ p = h, h = c, c = a, a = s + _ | 0, s = o, o = i, i = n, n = _ + (S + m) | 0
+ }
+ r[0] = r[0] + n | 0, r[1] = r[1] + i | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + a | 0, r[5] = r[5] + c | 0, r[6] = r[6] + h | 0, r[7] = r[7] + p | 0
+ },
+ _doFinalize: function() {
+ var e = this._data,
+ r = e.words,
+ n = 8 * this._nDataBytes,
+ i = 8 * e.sigBytes;
+ return r[i >>> 5] |= 128 << 24 - i % 32, r[14 + (i + 64 >>> 9 << 4)] = t.floor(n / 4294967296), r[15 + (i + 64 >>> 9 << 4)] = n, e.sigBytes = 4 * r.length, this._process(), this._hash
+ },
+ clone: function() {
+ var t = o.clone.call(this);
+ return t._hash = this._hash.clone(), t
+ }
+ });
+ e.SHA256 = o._createHelper(c), e.HmacSHA256 = o._createHmacHelper(c)
+ }(Math), n.SHA256)
+ },
+ 5953: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(3240), function(t) {
+ var e = n,
+ r = e.lib,
+ i = r.WordArray,
+ o = r.Hasher,
+ s = e.x64.Word,
+ a = e.algo,
+ f = [],
+ u = [],
+ c = [];
+ ! function() {
+ for (var t = 1, e = 0, r = 0; r < 24; r++) {
+ f[t + 5 * e] = (r + 1) * (r + 2) / 2 % 64;
+ var n = (2 * t + 3 * e) % 5;
+ t = e % 5, e = n
+ }
+ for (t = 0; t < 5; t++)
+ for (e = 0; e < 5; e++) u[t + 5 * e] = e + (2 * t + 3 * e) % 5 * 5;
+ for (var i = 1, o = 0; o < 24; o++) {
+ for (var a = 0, h = 0, p = 0; p < 7; p++) {
+ if (1 & i) {
+ var l = (1 << p) - 1;
+ l < 32 ? h ^= 1 << l : a ^= 1 << l - 32
+ }
+ 128 & i ? i = i << 1 ^ 113 : i <<= 1
+ }
+ c[o] = s.create(a, h)
+ }
+ }();
+ var h = [];
+ ! function() {
+ for (var t = 0; t < 25; t++) h[t] = s.create()
+ }();
+ var p = a.SHA3 = o.extend({
+ cfg: o.cfg.extend({
+ outputLength: 512
+ }),
+ _doReset: function() {
+ for (var t = this._state = [], e = 0; e < 25; e++) t[e] = new s.init;
+ this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32
+ },
+ _doProcessBlock: function(t, e) {
+ for (var r = this._state, n = this.blockSize / 2, i = 0; i < n; i++) {
+ var o = t[e + 2 * i],
+ s = t[e + 2 * i + 1];
+ o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), (P = r[i]).high ^= s, P.low ^= o
+ }
+ for (var a = 0; a < 24; a++) {
+ for (var p = 0; p < 5; p++) {
+ for (var l = 0, y = 0, g = 0; g < 5; g++) l ^= (P = r[p + 5 * g]).high, y ^= P.low;
+ var d = h[p];
+ d.high = l, d.low = y
+ }
+ for (p = 0; p < 5; p++) {
+ var v = h[(p + 4) % 5],
+ m = h[(p + 1) % 5],
+ S = m.high,
+ _ = m.low;
+ for (l = v.high ^ (S << 1 | _ >>> 31), y = v.low ^ (_ << 1 | S >>> 31), g = 0; g < 5; g++)(P = r[p + 5 * g]).high ^= l, P.low ^= y
+ }
+ for (var b = 1; b < 25; b++) {
+ var E = (P = r[b]).high,
+ w = P.low,
+ O = f[b];
+ O < 32 ? (l = E << O | w >>> 32 - O, y = w << O | E >>> 32 - O) : (l = w << O - 32 | E >>> 64 - O, y = E << O - 32 | w >>> 64 - O);
+ var B = h[u[b]];
+ B.high = l, B.low = y
+ }
+ var A = h[0],
+ x = r[0];
+ for (A.high = x.high, A.low = x.low, p = 0; p < 5; p++)
+ for (g = 0; g < 5; g++) {
+ var P = r[b = p + 5 * g],
+ T = h[b],
+ I = h[(p + 1) % 5 + 5 * g],
+ k = h[(p + 2) % 5 + 5 * g];
+ P.high = T.high ^ ~I.high & k.high, P.low = T.low ^ ~I.low & k.low
+ }
+ P = r[0];
+ var D = c[a];
+ P.high ^= D.high, P.low ^= D.low
+ }
+ },
+ _doFinalize: function() {
+ var e = this._data,
+ r = e.words,
+ n = (this._nDataBytes, 8 * e.sigBytes),
+ o = 32 * this.blockSize;
+ r[n >>> 5] |= 1 << 24 - n % 32, r[(t.ceil((n + 1) / o) * o >>> 5) - 1] |= 128, e.sigBytes = 4 * r.length, this._process();
+ for (var s = this._state, a = this.cfg.outputLength / 8, f = a / 8, u = [], c = 0; c < f; c++) {
+ var h = s[c],
+ p = h.high,
+ l = h.low;
+ p = 16711935 & (p << 8 | p >>> 24) | 4278255360 & (p << 24 | p >>> 8), l = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8), u.push(l), u.push(p)
+ }
+ return new i.init(u, a)
+ },
+ clone: function() {
+ for (var t = o.clone.call(this), e = t._state = this._state.slice(0), r = 0; r < 25; r++) e[r] = e[r].clone();
+ return t
+ }
+ });
+ e.SHA3 = o._createHelper(p), e.HmacSHA3 = o._createHmacHelper(p)
+ }(Math), n.SHA3)
+ },
+ 9557: function(t, e, r) {
+ var n, i, o, s, a, f, u, c;
+ t.exports = (c = r(9021), r(3240), r(1380), i = (n = c).x64, o = i.Word, s = i.WordArray, a = n.algo, f = a.SHA512, u = a.SHA384 = f.extend({
+ _doReset: function() {
+ this._hash = new s.init([new o.init(3418070365, 3238371032), new o.init(1654270250, 914150663), new o.init(2438529370, 812702999), new o.init(355462360, 4144912697), new o.init(1731405415, 4290775857), new o.init(2394180231, 1750603025), new o.init(3675008525, 1694076839), new o.init(1203062813, 3204075428)])
+ },
+ _doFinalize: function() {
+ var t = f._doFinalize.call(this);
+ return t.sigBytes -= 16, t
+ }
+ }), n.SHA384 = f._createHelper(u), n.HmacSHA384 = f._createHmacHelper(u), c.SHA384)
+ },
+ 1380: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(3240), function() {
+ var t = n,
+ e = t.lib.Hasher,
+ r = t.x64,
+ i = r.Word,
+ o = r.WordArray,
+ s = t.algo;
+
+ function a() {
+ return i.create.apply(i, arguments)
+ }
+ var f = [a(1116352408, 3609767458), a(1899447441, 602891725), a(3049323471, 3964484399), a(3921009573, 2173295548), a(961987163, 4081628472), a(1508970993, 3053834265), a(2453635748, 2937671579), a(2870763221, 3664609560), a(3624381080, 2734883394), a(310598401, 1164996542), a(607225278, 1323610764), a(1426881987, 3590304994), a(1925078388, 4068182383), a(2162078206, 991336113), a(2614888103, 633803317), a(3248222580, 3479774868), a(3835390401, 2666613458), a(4022224774, 944711139), a(264347078, 2341262773), a(604807628, 2007800933), a(770255983, 1495990901), a(1249150122, 1856431235), a(1555081692, 3175218132), a(1996064986, 2198950837), a(2554220882, 3999719339), a(2821834349, 766784016), a(2952996808, 2566594879), a(3210313671, 3203337956), a(3336571891, 1034457026), a(3584528711, 2466948901), a(113926993, 3758326383), a(338241895, 168717936), a(666307205, 1188179964), a(773529912, 1546045734), a(1294757372, 1522805485), a(1396182291, 2643833823), a(1695183700, 2343527390), a(1986661051, 1014477480), a(2177026350, 1206759142), a(2456956037, 344077627), a(2730485921, 1290863460), a(2820302411, 3158454273), a(3259730800, 3505952657), a(3345764771, 106217008), a(3516065817, 3606008344), a(3600352804, 1432725776), a(4094571909, 1467031594), a(275423344, 851169720), a(430227734, 3100823752), a(506948616, 1363258195), a(659060556, 3750685593), a(883997877, 3785050280), a(958139571, 3318307427), a(1322822218, 3812723403), a(1537002063, 2003034995), a(1747873779, 3602036899), a(1955562222, 1575990012), a(2024104815, 1125592928), a(2227730452, 2716904306), a(2361852424, 442776044), a(2428436474, 593698344), a(2756734187, 3733110249), a(3204031479, 2999351573), a(3329325298, 3815920427), a(3391569614, 3928383900), a(3515267271, 566280711), a(3940187606, 3454069534), a(4118630271, 4000239992), a(116418474, 1914138554), a(174292421, 2731055270), a(289380356, 3203993006), a(460393269, 320620315), a(685471733, 587496836), a(852142971, 1086792851), a(1017036298, 365543100), a(1126000580, 2618297676), a(1288033470, 3409855158), a(1501505948, 4234509866), a(1607167915, 987167468), a(1816402316, 1246189591)],
+ u = [];
+ ! function() {
+ for (var t = 0; t < 80; t++) u[t] = a()
+ }();
+ var c = s.SHA512 = e.extend({
+ _doReset: function() {
+ this._hash = new o.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, n = r[0], i = r[1], o = r[2], s = r[3], a = r[4], c = r[5], h = r[6], p = r[7], l = n.high, y = n.low, g = i.high, d = i.low, v = o.high, m = o.low, S = s.high, _ = s.low, b = a.high, E = a.low, w = c.high, O = c.low, B = h.high, A = h.low, x = p.high, P = p.low, T = l, I = y, k = g, D = d, R = v, N = m, L = S, C = _, U = b, M = E, j = w, H = O, F = B, z = A, G = x, q = P, $ = 0; $ < 80; $++) {
+ var K = u[$];
+ if ($ < 16) var W = K.high = 0 | t[e + 2 * $],
+ V = K.low = 0 | t[e + 2 * $ + 1];
+ else {
+ var Y = u[$ - 15],
+ X = Y.high,
+ Z = Y.low,
+ J = (X >>> 1 | Z << 31) ^ (X >>> 8 | Z << 24) ^ X >>> 7,
+ Q = (Z >>> 1 | X << 31) ^ (Z >>> 8 | X << 24) ^ (Z >>> 7 | X << 25),
+ tt = u[$ - 2],
+ et = tt.high,
+ rt = tt.low,
+ nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ et >>> 6,
+ it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ (rt >>> 6 | et << 26),
+ ot = u[$ - 7],
+ st = ot.high,
+ at = ot.low,
+ ft = u[$ - 16],
+ ut = ft.high,
+ ct = ft.low;
+ W = (W = (W = J + st + ((V = Q + at) >>> 0 < Q >>> 0 ? 1 : 0)) + nt + ((V += it) >>> 0 < it >>> 0 ? 1 : 0)) + ut + ((V += ct) >>> 0 < ct >>> 0 ? 1 : 0), K.high = W, K.low = V
+ }
+ var ht, pt = U & j ^ ~U & F,
+ lt = M & H ^ ~M & z,
+ yt = T & k ^ T & R ^ k & R,
+ gt = I & D ^ I & N ^ D & N,
+ dt = (T >>> 28 | I << 4) ^ (T << 30 | I >>> 2) ^ (T << 25 | I >>> 7),
+ vt = (I >>> 28 | T << 4) ^ (I << 30 | T >>> 2) ^ (I << 25 | T >>> 7),
+ mt = (U >>> 14 | M << 18) ^ (U >>> 18 | M << 14) ^ (U << 23 | M >>> 9),
+ St = (M >>> 14 | U << 18) ^ (M >>> 18 | U << 14) ^ (M << 23 | U >>> 9),
+ _t = f[$],
+ bt = _t.high,
+ Et = _t.low,
+ wt = G + mt + ((ht = q + St) >>> 0 < q >>> 0 ? 1 : 0),
+ Ot = vt + gt;
+ G = F, q = z, F = j, z = H, j = U, H = M, U = L + (wt = (wt = (wt = wt + pt + ((ht += lt) >>> 0 < lt >>> 0 ? 1 : 0)) + bt + ((ht += Et) >>> 0 < Et >>> 0 ? 1 : 0)) + W + ((ht += V) >>> 0 < V >>> 0 ? 1 : 0)) + ((M = C + ht | 0) >>> 0 < C >>> 0 ? 1 : 0) | 0, L = R, C = N, R = k, N = D, k = T, D = I, T = wt + (dt + yt + (Ot >>> 0 < vt >>> 0 ? 1 : 0)) + ((I = ht + Ot | 0) >>> 0 < ht >>> 0 ? 1 : 0) | 0
+ }
+ y = n.low = y + I, n.high = l + T + (y >>> 0 < I >>> 0 ? 1 : 0), d = i.low = d + D, i.high = g + k + (d >>> 0 < D >>> 0 ? 1 : 0), m = o.low = m + N, o.high = v + R + (m >>> 0 < N >>> 0 ? 1 : 0), _ = s.low = _ + C, s.high = S + L + (_ >>> 0 < C >>> 0 ? 1 : 0), E = a.low = E + M, a.high = b + U + (E >>> 0 < M >>> 0 ? 1 : 0), O = c.low = O + H, c.high = w + j + (O >>> 0 < H >>> 0 ? 1 : 0), A = h.low = A + z, h.high = B + F + (A >>> 0 < z >>> 0 ? 1 : 0), P = p.low = P + q, p.high = x + G + (P >>> 0 < q >>> 0 ? 1 : 0)
+ },
+ _doFinalize: function() {
+ var t = this._data,
+ e = t.words,
+ r = 8 * this._nDataBytes,
+ n = 8 * t.sigBytes;
+ return e[n >>> 5] |= 128 << 24 - n % 32, e[30 + (n + 128 >>> 10 << 5)] = Math.floor(r / 4294967296), e[31 + (n + 128 >>> 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)
+ }(), n.SHA512)
+ },
+ 7628: function(t, e, r) {
+ var n;
+ t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() {
+ var t = n,
+ e = t.lib,
+ r = e.WordArray,
+ i = e.BlockCipher,
+ o = t.algo,
+ s = [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],
+ a = [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],
+ u = [{
+ 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
+ }],
+ c = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679],
+ h = o.DES = i.extend({
+ _doReset: function() {
+ for (var t = this._key.words, e = [], r = 0; r < 56; r++) {
+ var n = s[r] - 1;
+ e[r] = t[n >>> 5] >>> 31 - n % 32 & 1
+ }
+ for (var i = this._subKeys = [], o = 0; o < 16; o++) {
+ var u = i[o] = [],
+ c = f[o];
+ for (r = 0; r < 24; r++) u[r / 6 | 0] |= e[(a[r] - 1 + c) % 28] << 31 - r % 6, u[4 + (r / 6 | 0)] |= e[28 + (a[r + 24] - 1 + c) % 28] << 31 - r % 6;
+ for (u[0] = u[0] << 1 | u[0] >>> 31, r = 1; r < 7; r++) u[r] = u[r] >>> 4 * (r - 1) + 3;
+ u[7] = u[7] << 5 | u[7] >>> 27
+ }
+ var h = this._invSubKeys = [];
+ for (r = 0; r < 16; r++) h[r] = i[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), l.call(this, 2, 858993459), l.call(this, 8, 16711935), p.call(this, 1, 1431655765);
+ for (var n = 0; n < 16; n++) {
+ for (var i = r[n], o = this._lBlock, s = this._rBlock, a = 0, f = 0; f < 8; f++) a |= u[f][((s ^ i[f]) & c[f]) >>> 0];
+ this._lBlock = s, this._rBlock = o ^ a
+ }
+ var h = this._lBlock;
+ this._lBlock = this._rBlock, this._rBlock = h, p.call(this, 1, 1431655765), l.call(this, 8, 16711935), l.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 l(t, e) {
+ var r = (this._rBlock >>> t ^ this._lBlock) & e;
+ this._lBlock ^= r, this._rBlock ^= r << t
+ }
+ t.DES = i._createHelper(h);
+ var y = o.TripleDES = i.extend({
+ _doReset: function() {
+ var t = this._key.words;
+ this._des1 = h.createEncryptor(r.create(t.slice(0, 2))), this._des2 = h.createEncryptor(r.create(t.slice(2, 4))), this._des3 = h.createEncryptor(r.create(t.slice(4, 6)))
+ },
+ 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 = i._createHelper(y)
+ }(), n.TripleDES)
+ },
+ 3240: function(t, e, r) {
+ var n, i, o, s, a, f;
+ t.exports = (n = r(9021), o = (i = n).lib, s = o.Base, a = o.WordArray, (f = i.x64 = {}).Word = s.extend({
+ init: function(t, e) {
+ this.high = t, this.low = e
+ }
+ }), f.WordArray = s.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 = [], n = 0; n < e; n++) {
+ var i = t[n];
+ r.push(i.high), r.push(i.low)
+ }
+ return a.create(r, this.sigBytes)
+ },
+ clone: function() {
+ for (var t = s.clone.call(this), e = t.words = this.words.slice(0), r = e.length, n = 0; n < r; n++) e[n] = e[n].clone();
+ return t
+ }
+ }), n)
+ },
+ 41: (t, e, r) => {
+ "use strict";
+ var n = r(655),
+ i = r(8068),
+ o = r(9675),
+ s = r(5795);
+ t.exports = function(t, e, r) {
+ if (!t || "object" != typeof t && "function" != typeof t) throw new o("`obj` must be an object or a function`");
+ if ("string" != typeof e && "symbol" != typeof e) throw new o("`property` must be a string or a symbol`");
+ if (arguments.length > 3 && "boolean" != typeof arguments[3] && null !== arguments[3]) throw new o("`nonEnumerable`, if provided, must be a boolean or null");
+ if (arguments.length > 4 && "boolean" != typeof arguments[4] && null !== arguments[4]) throw new o("`nonWritable`, if provided, must be a boolean or null");
+ if (arguments.length > 5 && "boolean" != typeof arguments[5] && null !== arguments[5]) throw new o("`nonConfigurable`, if provided, must be a boolean or null");
+ if (arguments.length > 6 && "boolean" != typeof arguments[6]) throw new o("`loose`, if provided, must be a boolean");
+ var a = arguments.length > 3 ? arguments[3] : null,
+ f = arguments.length > 4 ? arguments[4] : null,
+ u = arguments.length > 5 ? arguments[5] : null,
+ c = arguments.length > 6 && arguments[6],
+ h = !!s && s(t, e);
+ if (n) n(t, e, {
+ configurable: null === u && h ? h.configurable : !u,
+ enumerable: null === a && h ? h.enumerable : !a,
+ value: r,
+ writable: null === f && h ? h.writable : !f
+ });
+ else {
+ if (!c && (a || f || u)) throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");
+ t[e] = r
+ }
+ }
+ },
+ 655: (t, e, r) => {
+ "use strict";
+ var n = r(453)("%Object.defineProperty%", !0) || !1;
+ if (n) try {
+ n({}, "a", {
+ value: 1
+ })
+ } catch (t) {
+ n = !1
+ }
+ t.exports = n
+ },
+ 1237: t => {
+ "use strict";
+ t.exports = EvalError
+ },
+ 9383: t => {
+ "use strict";
+ t.exports = Error
+ },
+ 9290: t => {
+ "use strict";
+ t.exports = RangeError
+ },
+ 9538: t => {
+ "use strict";
+ t.exports = ReferenceError
+ },
+ 8068: t => {
+ "use strict";
+ t.exports = SyntaxError
+ },
+ 9675: t => {
+ "use strict";
+ t.exports = TypeError
+ },
+ 5345: t => {
+ "use strict";
+ t.exports = URIError
+ },
+ 9353: t => {
+ "use strict";
+ var e = Object.prototype.toString,
+ r = Math.max,
+ n = function(t, e) {
+ for (var r = [], n = 0; n < t.length; n += 1) r[n] = t[n];
+ for (var i = 0; i < e.length; i += 1) r[i + t.length] = e[i];
+ return r
+ };
+ t.exports = function(t) {
+ var i = this;
+ if ("function" != typeof i || "[object Function]" !== e.apply(i)) throw new TypeError("Function.prototype.bind called on incompatible " + i);
+ for (var o, s = function(t, e) {
+ for (var r = [], n = 1, i = 0; n < t.length; n += 1, i += 1) r[i] = t[n];
+ return r
+ }(arguments), a = r(0, i.length - s.length), f = [], u = 0; u < a; u++) f[u] = "$" + u;
+ if (o = Function("binder", "return function (" + function(t, e) {
+ for (var r = "", n = 0; n < t.length; n += 1) r += t[n], n + 1 < t.length && (r += ",");
+ return r
+ }(f) + "){ return binder.apply(this,arguments); }")((function() {
+ if (this instanceof o) {
+ var e = i.apply(this, n(s, arguments));
+ return Object(e) === e ? e : this
+ }
+ return i.apply(t, n(s, arguments))
+ })), i.prototype) {
+ var c = function() {};
+ c.prototype = i.prototype, o.prototype = new c, c.prototype = null
+ }
+ return o
+ }
+ },
+ 6743: (t, e, r) => {
+ "use strict";
+ var n = r(9353);
+ t.exports = Function.prototype.bind || n
+ },
+ 453: (t, e, r) => {
+ "use strict";
+ var n, i = r(9383),
+ o = r(1237),
+ s = r(9290),
+ a = r(9538),
+ f = r(8068),
+ u = r(9675),
+ c = r(5345),
+ h = Function,
+ p = function(t) {
+ try {
+ return h('"use strict"; return (' + t + ").constructor;")()
+ } catch (t) {}
+ },
+ l = Object.getOwnPropertyDescriptor;
+ if (l) try {
+ l({}, "")
+ } catch (t) {
+ l = null
+ }
+ var y = function() {
+ throw new u
+ },
+ g = l ? function() {
+ try {
+ return y
+ } catch (t) {
+ try {
+ return l(arguments, "callee").get
+ } catch (t) {
+ return y
+ }
+ }
+ }() : y,
+ d = r(4039)(),
+ v = r(24)(),
+ m = Object.getPrototypeOf || (v ? function(t) {
+ return t.__proto__
+ } : null),
+ S = {},
+ _ = "undefined" != typeof Uint8Array && m ? m(Uint8Array) : n,
+ b = {
+ __proto__: null,
+ "%AggregateError%": "undefined" == typeof AggregateError ? n : AggregateError,
+ "%Array%": Array,
+ "%ArrayBuffer%": "undefined" == typeof ArrayBuffer ? n : ArrayBuffer,
+ "%ArrayIteratorPrototype%": d && m ? m([][Symbol.iterator]()) : n,
+ "%AsyncFromSyncIteratorPrototype%": n,
+ "%AsyncFunction%": S,
+ "%AsyncGenerator%": S,
+ "%AsyncGeneratorFunction%": S,
+ "%AsyncIteratorPrototype%": S,
+ "%Atomics%": "undefined" == typeof Atomics ? n : Atomics,
+ "%BigInt%": "undefined" == typeof BigInt ? n : BigInt,
+ "%BigInt64Array%": "undefined" == typeof BigInt64Array ? n : BigInt64Array,
+ "%BigUint64Array%": "undefined" == typeof BigUint64Array ? n : BigUint64Array,
+ "%Boolean%": Boolean,
+ "%DataView%": "undefined" == typeof DataView ? n : DataView,
+ "%Date%": Date,
+ "%decodeURI%": decodeURI,
+ "%decodeURIComponent%": decodeURIComponent,
+ "%encodeURI%": encodeURI,
+ "%encodeURIComponent%": encodeURIComponent,
+ "%Error%": i,
+ "%eval%": eval,
+ "%EvalError%": o,
+ "%Float32Array%": "undefined" == typeof Float32Array ? n : Float32Array,
+ "%Float64Array%": "undefined" == typeof Float64Array ? n : Float64Array,
+ "%FinalizationRegistry%": "undefined" == typeof FinalizationRegistry ? n : FinalizationRegistry,
+ "%Function%": h,
+ "%GeneratorFunction%": S,
+ "%Int8Array%": "undefined" == typeof Int8Array ? n : Int8Array,
+ "%Int16Array%": "undefined" == typeof Int16Array ? n : Int16Array,
+ "%Int32Array%": "undefined" == typeof Int32Array ? n : Int32Array,
+ "%isFinite%": isFinite,
+ "%isNaN%": isNaN,
+ "%IteratorPrototype%": d && m ? m(m([][Symbol.iterator]())) : n,
+ "%JSON%": "object" == typeof JSON ? JSON : n,
+ "%Map%": "undefined" == typeof Map ? n : Map,
+ "%MapIteratorPrototype%": "undefined" != typeof Map && d && m ? m((new Map)[Symbol.iterator]()) : n,
+ "%Math%": Math,
+ "%Number%": Number,
+ "%Object%": Object,
+ "%parseFloat%": parseFloat,
+ "%parseInt%": parseInt,
+ "%Promise%": "undefined" == typeof Promise ? n : Promise,
+ "%Proxy%": "undefined" == typeof Proxy ? n : Proxy,
+ "%RangeError%": s,
+ "%ReferenceError%": a,
+ "%Reflect%": "undefined" == typeof Reflect ? n : Reflect,
+ "%RegExp%": RegExp,
+ "%Set%": "undefined" == typeof Set ? n : Set,
+ "%SetIteratorPrototype%": "undefined" != typeof Set && d && m ? m((new Set)[Symbol.iterator]()) : n,
+ "%SharedArrayBuffer%": "undefined" == typeof SharedArrayBuffer ? n : SharedArrayBuffer,
+ "%String%": String,
+ "%StringIteratorPrototype%": d && m ? m("" [Symbol.iterator]()) : n,
+ "%Symbol%": d ? Symbol : n,
+ "%SyntaxError%": f,
+ "%ThrowTypeError%": g,
+ "%TypedArray%": _,
+ "%TypeError%": u,
+ "%Uint8Array%": "undefined" == typeof Uint8Array ? n : Uint8Array,
+ "%Uint8ClampedArray%": "undefined" == typeof Uint8ClampedArray ? n : Uint8ClampedArray,
+ "%Uint16Array%": "undefined" == typeof Uint16Array ? n : Uint16Array,
+ "%Uint32Array%": "undefined" == typeof Uint32Array ? n : Uint32Array,
+ "%URIError%": c,
+ "%WeakMap%": "undefined" == typeof WeakMap ? n : WeakMap,
+ "%WeakRef%": "undefined" == typeof WeakRef ? n : WeakRef,
+ "%WeakSet%": "undefined" == typeof WeakSet ? n : WeakSet
+ };
+ if (m) try {
+ null.error
+ } catch (t) {
+ var E = m(m(t));
+ b["%Error.prototype%"] = E
+ }
+ var w = function t(e) {
+ var r;
+ if ("%AsyncFunction%" === e) r = p("async function () {}");
+ else if ("%GeneratorFunction%" === e) r = p("function* () {}");
+ else if ("%AsyncGeneratorFunction%" === e) r = p("async function* () {}");
+ else if ("%AsyncGenerator%" === e) {
+ var n = t("%AsyncGeneratorFunction%");
+ n && (r = n.prototype)
+ } else if ("%AsyncIteratorPrototype%" === e) {
+ var i = t("%AsyncGenerator%");
+ i && m && (r = m(i.prototype))
+ }
+ return b[e] = r, r
+ },
+ O = {
+ __proto__: null,
+ "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"],
+ "%ArrayPrototype%": ["Array", "prototype"],
+ "%ArrayProto_entries%": ["Array", "prototype", "entries"],
+ "%ArrayProto_forEach%": ["Array", "prototype", "forEach"],
+ "%ArrayProto_keys%": ["Array", "prototype", "keys"],
+ "%ArrayProto_values%": ["Array", "prototype", "values"],
+ "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"],
+ "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"],
+ "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"],
+ "%BooleanPrototype%": ["Boolean", "prototype"],
+ "%DataViewPrototype%": ["DataView", "prototype"],
+ "%DatePrototype%": ["Date", "prototype"],
+ "%ErrorPrototype%": ["Error", "prototype"],
+ "%EvalErrorPrototype%": ["EvalError", "prototype"],
+ "%Float32ArrayPrototype%": ["Float32Array", "prototype"],
+ "%Float64ArrayPrototype%": ["Float64Array", "prototype"],
+ "%FunctionPrototype%": ["Function", "prototype"],
+ "%Generator%": ["GeneratorFunction", "prototype"],
+ "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"],
+ "%Int8ArrayPrototype%": ["Int8Array", "prototype"],
+ "%Int16ArrayPrototype%": ["Int16Array", "prototype"],
+ "%Int32ArrayPrototype%": ["Int32Array", "prototype"],
+ "%JSONParse%": ["JSON", "parse"],
+ "%JSONStringify%": ["JSON", "stringify"],
+ "%MapPrototype%": ["Map", "prototype"],
+ "%NumberPrototype%": ["Number", "prototype"],
+ "%ObjectPrototype%": ["Object", "prototype"],
+ "%ObjProto_toString%": ["Object", "prototype", "toString"],
+ "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"],
+ "%PromisePrototype%": ["Promise", "prototype"],
+ "%PromiseProto_then%": ["Promise", "prototype", "then"],
+ "%Promise_all%": ["Promise", "all"],
+ "%Promise_reject%": ["Promise", "reject"],
+ "%Promise_resolve%": ["Promise", "resolve"],
+ "%RangeErrorPrototype%": ["RangeError", "prototype"],
+ "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"],
+ "%RegExpPrototype%": ["RegExp", "prototype"],
+ "%SetPrototype%": ["Set", "prototype"],
+ "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"],
+ "%StringPrototype%": ["String", "prototype"],
+ "%SymbolPrototype%": ["Symbol", "prototype"],
+ "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"],
+ "%TypedArrayPrototype%": ["TypedArray", "prototype"],
+ "%TypeErrorPrototype%": ["TypeError", "prototype"],
+ "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"],
+ "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"],
+ "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"],
+ "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"],
+ "%URIErrorPrototype%": ["URIError", "prototype"],
+ "%WeakMapPrototype%": ["WeakMap", "prototype"],
+ "%WeakSetPrototype%": ["WeakSet", "prototype"]
+ },
+ B = r(6743),
+ A = r(9957),
+ x = B.call(Function.call, Array.prototype.concat),
+ P = B.call(Function.apply, Array.prototype.splice),
+ T = B.call(Function.call, String.prototype.replace),
+ I = B.call(Function.call, String.prototype.slice),
+ k = B.call(Function.call, RegExp.prototype.exec),
+ D = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,
+ R = /\\(\\)?/g,
+ N = function(t, e) {
+ var r, n = t;
+ if (A(O, n) && (n = "%" + (r = O[n])[0] + "%"), A(b, n)) {
+ var i = b[n];
+ if (i === S && (i = w(n)), void 0 === i && !e) throw new u("intrinsic " + t + " exists, but is not available. Please file an issue!");
+ return {
+ alias: r,
+ name: n,
+ value: i
+ }
+ }
+ throw new f("intrinsic " + t + " does not exist!")
+ };
+ t.exports = function(t, e) {
+ if ("string" != typeof t || 0 === t.length) throw new u("intrinsic name must be a non-empty string");
+ if (arguments.length > 1 && "boolean" != typeof e) throw new u('"allowMissing" argument must be a boolean');
+ if (null === k(/^%?[^%]*%?$/, t)) throw new f("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
+ var r = function(t) {
+ var e = I(t, 0, 1),
+ r = I(t, -1);
+ if ("%" === e && "%" !== r) throw new f("invalid intrinsic syntax, expected closing `%`");
+ if ("%" === r && "%" !== e) throw new f("invalid intrinsic syntax, expected opening `%`");
+ var n = [];
+ return T(t, D, (function(t, e, r, i) {
+ n[n.length] = r ? T(i, R, "$1") : e || t
+ })), n
+ }(t),
+ n = r.length > 0 ? r[0] : "",
+ i = N("%" + n + "%", e),
+ o = i.name,
+ s = i.value,
+ a = !1,
+ c = i.alias;
+ c && (n = c[0], P(r, x([0, 1], c)));
+ for (var h = 1, p = !0; h < r.length; h += 1) {
+ var y = r[h],
+ g = I(y, 0, 1),
+ d = I(y, -1);
+ if (('"' === g || "'" === g || "`" === g || '"' === d || "'" === d || "`" === d) && g !== d) throw new f("property names with quotes must have matching quotes");
+ if ("constructor" !== y && p || (a = !0), A(b, o = "%" + (n += "." + y) + "%")) s = b[o];
+ else if (null != s) {
+ if (!(y in s)) {
+ if (!e) throw new u("base intrinsic for " + t + " exists, but the property is not available.");
+ return
+ }
+ if (l && h + 1 >= r.length) {
+ var v = l(s, y);
+ s = (p = !!v) && "get" in v && !("originalValue" in v.get) ? v.get : s[y]
+ } else p = A(s, y), s = s[y];
+ p && !a && (b[o] = s)
+ }
+ }
+ return s
+ }
+ },
+ 5795: (t, e, r) => {
+ "use strict";
+ var n = r(453)("%Object.getOwnPropertyDescriptor%", !0);
+ if (n) try {
+ n([], "length")
+ } catch (t) {
+ n = null
+ }
+ t.exports = n
+ },
+ 592: (t, e, r) => {
+ "use strict";
+ var n = r(655),
+ i = function() {
+ return !!n
+ };
+ i.hasArrayLengthDefineBug = function() {
+ if (!n) return null;
+ try {
+ return 1 !== n([], "length", {
+ value: 1
+ }).length
+ } catch (t) {
+ return !0
+ }
+ }, t.exports = i
+ },
+ 24: t => {
+ "use strict";
+ var e = {
+ __proto__: null,
+ foo: {}
+ },
+ r = Object;
+ t.exports = function() {
+ return {
+ __proto__: e
+ }.foo === e.foo && !(e instanceof r)
+ }
+ },
+ 4039: (t, e, r) => {
+ "use strict";
+ var n = "undefined" != typeof Symbol && Symbol,
+ i = r(1333);
+ t.exports = function() {
+ return "function" == typeof n && "function" == typeof Symbol && "symbol" == typeof n("foo") && "symbol" == typeof Symbol("bar") && i()
+ }
+ },
+ 1333: t => {
+ "use strict";
+ t.exports = function() {
+ if ("function" != typeof Symbol || "function" != typeof Object.getOwnPropertySymbols) return !1;
+ if ("symbol" == typeof Symbol.iterator) return !0;
+ var t = {},
+ e = Symbol("test"),
+ r = Object(e);
+ if ("string" == typeof e) return !1;
+ if ("[object Symbol]" !== Object.prototype.toString.call(e)) return !1;
+ if ("[object Symbol]" !== Object.prototype.toString.call(r)) return !1;
+ for (e in t[e] = 42, t) return !1;
+ if ("function" == typeof Object.keys && 0 !== Object.keys(t).length) return !1;
+ if ("function" == typeof Object.getOwnPropertyNames && 0 !== Object.getOwnPropertyNames(t).length) return !1;
+ var n = Object.getOwnPropertySymbols(t);
+ if (1 !== n.length || n[0] !== e) return !1;
+ if (!Object.prototype.propertyIsEnumerable.call(t, e)) return !1;
+ if ("function" == typeof Object.getOwnPropertyDescriptor) {
+ var i = Object.getOwnPropertyDescriptor(t, e);
+ if (42 !== i.value || !0 !== i.enumerable) return !1
+ }
+ return !0
+ }
+ },
+ 9957: (t, e, r) => {
+ "use strict";
+ var n = Function.prototype.call,
+ i = Object.prototype.hasOwnProperty,
+ o = r(6743);
+ t.exports = o.call(n, i)
+ },
+ 251: (t, e) => {
+ e.read = function(t, e, r, n, i) {
+ var o, s, a = 8 * i - n - 1,
+ f = (1 << a) - 1,
+ u = f >> 1,
+ c = -7,
+ h = r ? i - 1 : 0,
+ p = r ? -1 : 1,
+ l = t[e + h];
+ for (h += p, o = l & (1 << -c) - 1, l >>= -c, c += a; c > 0; o = 256 * o + t[e + h], h += p, c -= 8);
+ for (s = o & (1 << -c) - 1, o >>= -c, c += n; c > 0; s = 256 * s + t[e + h], h += p, c -= 8);
+ if (0 === o) o = 1 - u;
+ else {
+ if (o === f) return s ? NaN : 1 / 0 * (l ? -1 : 1);
+ s += Math.pow(2, n), o -= u
+ }
+ return (l ? -1 : 1) * s * Math.pow(2, o - n)
+ }, e.write = function(t, e, r, n, i, o) {
+ var s, a, f, u = 8 * o - i - 1,
+ c = (1 << u) - 1,
+ h = c >> 1,
+ p = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0,
+ l = n ? 0 : o - 1,
+ y = n ? 1 : -1,
+ g = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0;
+ for (e = Math.abs(e), isNaN(e) || e === 1 / 0 ? (a = isNaN(e) ? 1 : 0, s = c) : (s = Math.floor(Math.log(e) / Math.LN2), e * (f = Math.pow(2, -s)) < 1 && (s--, f *= 2), (e += s + h >= 1 ? p / f : p * Math.pow(2, 1 - h)) * f >= 2 && (s++, f /= 2), s + h >= c ? (a = 0, s = c) : s + h >= 1 ? (a = (e * f - 1) * Math.pow(2, i), s += h) : (a = e * Math.pow(2, h - 1) * Math.pow(2, i), s = 0)); i >= 8; t[r + l] = 255 & a, l += y, a /= 256, i -= 8);
+ for (s = s << i | a, u += i; u > 0; t[r + l] = 255 & s, l += y, s /= 256, u -= 8);
+ t[r + l - y] |= 128 * g
+ }
+ },
+ 3229: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(7449),
+ o = r(5682),
+ s = (r(3200), r(3100).Ber, r(8226)._),
+ a = r(8226),
+ f = r(1768),
+ u = r(7460);
+ void 0 === i.RSA_NO_PADDING && (i.RSA_NO_PADDING = 3), t.exports = function() {
+ var t = {
+ node10: ["md4", "md5", "ripemd160", "sha1", "sha224", "sha256", "sha384", "sha512"],
+ node: ["md4", "md5", "ripemd160", "sha1", "sha224", "sha256", "sha384", "sha512"],
+ iojs: ["md4", "md5", "ripemd160", "sha1", "sha224", "sha256", "sha384", "sha512"],
+ browser: ["md5", "ripemd160", "sha1", "sha256", "sha512"]
+ },
+ e = "pkcs1_oaep",
+ r = "pkcs1",
+ i = {
+ private: "pkcs1-private-pem",
+ "private-der": "pkcs1-private-der",
+ public: "pkcs8-public-pem",
+ "public-der": "pkcs8-public-der"
+ };
+
+ function c(t, i, f) {
+ if (!(this instanceof c)) return new c(t, i, f);
+ s.isObject(i) && (f = i, i = void 0), this.$options = {
+ signingScheme: r,
+ signingSchemeOptions: {
+ hash: "sha256",
+ saltLength: null
+ },
+ encryptionScheme: e,
+ encryptionSchemeOptions: {
+ hash: "sha1",
+ label: null
+ },
+ environment: a.detectEnvironment(),
+ rsaUtils: this
+ }, this.keyPair = new o.Key, this.$cache = {}, n.isBuffer(t) || s.isString(t) ? this.importKey(t, i) : s.isObject(t) && this.generateKeyPair(t.b, t.e), this.setOptions(f)
+ }
+ return c.prototype.setOptions = function(n) {
+ if ((n = n || {}).environment && (this.$options.environment = n.environment), n.signingScheme) {
+ if (s.isString(n.signingScheme)) {
+ var i = n.signingScheme.toLowerCase().split("-");
+ 1 == i.length ? t.node.indexOf(i[0]) > -1 ? (this.$options.signingSchemeOptions = {
+ hash: i[0]
+ }, this.$options.signingScheme = r) : (this.$options.signingScheme = i[0], this.$options.signingSchemeOptions = {
+ hash: null
+ }) : (this.$options.signingSchemeOptions = {
+ hash: i[1]
+ }, this.$options.signingScheme = i[0])
+ } else s.isObject(n.signingScheme) && (this.$options.signingScheme = n.signingScheme.scheme || r, this.$options.signingSchemeOptions = s.omit(n.signingScheme, "scheme"));
+ if (!f.isSignature(this.$options.signingScheme)) throw Error("Unsupported signing scheme");
+ if (this.$options.signingSchemeOptions.hash && -1 === t[this.$options.environment].indexOf(this.$options.signingSchemeOptions.hash)) throw Error("Unsupported hashing algorithm for " + this.$options.environment + " environment")
+ }
+ if (n.encryptionScheme) {
+ if (s.isString(n.encryptionScheme) ? (this.$options.encryptionScheme = n.encryptionScheme.toLowerCase(), this.$options.encryptionSchemeOptions = {}) : s.isObject(n.encryptionScheme) && (this.$options.encryptionScheme = n.encryptionScheme.scheme || e, this.$options.encryptionSchemeOptions = s.omit(n.encryptionScheme, "scheme")), !f.isEncryption(this.$options.encryptionScheme)) throw Error("Unsupported encryption scheme");
+ if (this.$options.encryptionSchemeOptions.hash && -1 === t[this.$options.environment].indexOf(this.$options.encryptionSchemeOptions.hash)) throw Error("Unsupported hashing algorithm for " + this.$options.environment + " environment")
+ }
+ this.keyPair.setOptions(this.$options)
+ }, c.prototype.generateKeyPair = function(t, e) {
+ if (e = e || 65537, (t = t || 2048) % 8 != 0) throw Error("Key size must be a multiple of 8.");
+ return this.keyPair.generate(t, e.toString(16)), this.$cache = {}, this
+ }, c.prototype.importKey = function(t, e) {
+ if (!t) throw Error("Empty key given");
+ if (e && (e = i[e] || e), !u.detectAndImport(this.keyPair, t, e) && void 0 === e) throw Error("Key format must be specified");
+ return this.$cache = {}, this
+ }, c.prototype.exportKey = function(t) {
+ return t = i[t = t || "private"] || t, this.$cache[t] || (this.$cache[t] = u.detectAndExport(this.keyPair, t)), this.$cache[t]
+ }, c.prototype.isPrivate = function() {
+ return this.keyPair.isPrivate()
+ }, c.prototype.isPublic = function(t) {
+ return this.keyPair.isPublic(t)
+ }, c.prototype.isEmpty = function(t) {
+ return !(this.keyPair.n || this.keyPair.e || this.keyPair.d)
+ }, c.prototype.encrypt = function(t, e, r) {
+ return this.$$encryptKey(!1, t, e, r)
+ }, c.prototype.decrypt = function(t, e) {
+ return this.$$decryptKey(!1, t, e)
+ }, c.prototype.encryptPrivate = function(t, e, r) {
+ return this.$$encryptKey(!0, t, e, r)
+ }, c.prototype.decryptPublic = function(t, e) {
+ return this.$$decryptKey(!0, t, e)
+ }, c.prototype.$$encryptKey = function(t, e, r, n) {
+ try {
+ var i = this.keyPair.encrypt(this.$getDataForEncrypt(e, n), t);
+ return "buffer" != r && r ? i.toString(r) : i
+ } catch (t) {
+ throw Error("Error during encryption. Original error: " + t)
+ }
+ }, c.prototype.$$decryptKey = function(t, e, r) {
+ try {
+ e = s.isString(e) ? n.from(e, "base64") : e;
+ var i = this.keyPair.decrypt(e, t);
+ if (null === i) throw Error("Key decrypt method returns null.");
+ return this.$getDecryptedData(i, r)
+ } catch (t) {
+ throw Error("Error during decryption (probably incorrect key). Original error: " + t)
+ }
+ }, c.prototype.sign = function(t, e, r) {
+ if (!this.isPrivate()) throw Error("This is not private key");
+ var n = this.keyPair.sign(this.$getDataForEncrypt(t, r));
+ return e && "buffer" != e && (n = n.toString(e)), n
+ }, c.prototype.verify = function(t, e, r, n) {
+ if (!this.isPublic()) throw Error("This is not public key");
+ return n = n && "buffer" != n ? n : null, this.keyPair.verify(this.$getDataForEncrypt(t, r), e, n)
+ }, c.prototype.getKeySize = function() {
+ return this.keyPair.keySize
+ }, c.prototype.getMaxMessageSize = function() {
+ return this.keyPair.maxMessageLength
+ }, c.prototype.$getDataForEncrypt = function(t, e) {
+ if (s.isString(t) || s.isNumber(t)) return n.from("" + t, e || "utf8");
+ if (n.isBuffer(t)) return t;
+ if (s.isObject(t)) return n.from(JSON.stringify(t));
+ throw Error("Unexpected data type")
+ }, c.prototype.$getDecryptedData = function(t, e) {
+ return "buffer" == (e = e || "buffer") ? t : "json" == e ? JSON.parse(t.toString()) : t.toString(e)
+ }, c
+ }()
+ },
+ 4538: (t, e, r) => {
+ var n = r(3200);
+ t.exports = {
+ getEngine: function(t, e) {
+ var i = r(7469);
+ return "node" === e.environment && "function" == typeof n.publicEncrypt && "function" == typeof n.privateDecrypt && (i = "function" == typeof n.privateEncrypt && "function" == typeof n.publicDecrypt ? r(2418) : r(1957)), i(t, e)
+ }
+ }
+ },
+ 2418: (t, e, r) => {
+ var n = r(3200),
+ i = r(7449),
+ o = r(1768);
+ t.exports = function(t, e) {
+ var r = o.pkcs1.makeScheme(t, e);
+ return {
+ encrypt: function(t, o) {
+ var s;
+ if (o) return s = i.RSA_PKCS1_PADDING, e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (s = e.encryptionSchemeOptions.padding), n.privateEncrypt({
+ key: e.rsaUtils.exportKey("private"),
+ padding: s
+ }, t);
+ s = i.RSA_PKCS1_OAEP_PADDING, "pkcs1" === e.encryptionScheme && (s = i.RSA_PKCS1_PADDING), e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (s = e.encryptionSchemeOptions.padding);
+ var a = t;
+ return s === i.RSA_NO_PADDING && (a = r.pkcs0pad(t)), n.publicEncrypt({
+ key: e.rsaUtils.exportKey("public"),
+ padding: s
+ }, a)
+ },
+ decrypt: function(t, o) {
+ var s;
+ if (o) return s = i.RSA_PKCS1_PADDING, e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (s = e.encryptionSchemeOptions.padding), n.publicDecrypt({
+ key: e.rsaUtils.exportKey("public"),
+ padding: s
+ }, t);
+ s = i.RSA_PKCS1_OAEP_PADDING, "pkcs1" === e.encryptionScheme && (s = i.RSA_PKCS1_PADDING), e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (s = e.encryptionSchemeOptions.padding);
+ var a = n.privateDecrypt({
+ key: e.rsaUtils.exportKey("private"),
+ padding: s
+ }, t);
+ return s === i.RSA_NO_PADDING ? r.pkcs0unpad(a) : a
+ }
+ }
+ }
+ },
+ 7469: (t, e, r) => {
+ var n = r(1973),
+ i = r(1768);
+ t.exports = function(t, e) {
+ var r = i.pkcs1.makeScheme(t, e);
+ return {
+ encrypt: function(e, i) {
+ var o, s;
+ return i ? (o = new n(r.encPad(e, {
+ type: 1
+ })), s = t.$doPrivate(o)) : (o = new n(t.encryptionScheme.encPad(e)), s = t.$doPublic(o)), s.toBuffer(t.encryptedDataLength)
+ },
+ decrypt: function(e, i) {
+ var o, s = new n(e);
+ return i ? (o = t.$doPublic(s), r.encUnPad(o.toBuffer(t.encryptedDataLength), {
+ type: 1
+ })) : (o = t.$doPrivate(s), t.encryptionScheme.encUnPad(o.toBuffer(t.encryptedDataLength)))
+ }
+ }
+ }
+ },
+ 1957: (t, e, r) => {
+ var n = r(3200),
+ i = r(7449),
+ o = r(1768);
+ t.exports = function(t, e) {
+ var s = r(7469)(t, e),
+ a = o.pkcs1.makeScheme(t, e);
+ return {
+ encrypt: function(t, r) {
+ if (r) return s.encrypt(t, r);
+ var o = i.RSA_PKCS1_OAEP_PADDING;
+ "pkcs1" === e.encryptionScheme && (o = i.RSA_PKCS1_PADDING), e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (o = e.encryptionSchemeOptions.padding);
+ var f = t;
+ return o === i.RSA_NO_PADDING && (f = a.pkcs0pad(t)), n.publicEncrypt({
+ key: e.rsaUtils.exportKey("public"),
+ padding: o
+ }, f)
+ },
+ decrypt: function(t, r) {
+ if (r) return s.decrypt(t, r);
+ var o = i.RSA_PKCS1_OAEP_PADDING;
+ "pkcs1" === e.encryptionScheme && (o = i.RSA_PKCS1_PADDING), e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (o = e.encryptionSchemeOptions.padding);
+ var f = n.privateDecrypt({
+ key: e.rsaUtils.exportKey("private"),
+ padding: o
+ }, t);
+ return o === i.RSA_NO_PADDING ? a.pkcs0unpad(f) : f
+ }
+ }
+ }
+ },
+ 3374: (t, e, r) => {
+ r(8226)._, r(8226), t.exports = {
+ privateExport: function(t, e) {
+ return {
+ n: t.n.toBuffer(),
+ e: t.e,
+ d: t.d.toBuffer(),
+ p: t.p.toBuffer(),
+ q: t.q.toBuffer(),
+ dmp1: t.dmp1.toBuffer(),
+ dmq1: t.dmq1.toBuffer(),
+ coeff: t.coeff.toBuffer()
+ }
+ },
+ privateImport: function(t, e, r) {
+ if (!(e.n && e.e && e.d && e.p && e.q && e.dmp1 && e.dmq1 && e.coeff)) throw Error("Invalid key data");
+ t.setPrivate(e.n, e.e, e.d, e.p, e.q, e.dmp1, e.dmq1, e.coeff)
+ },
+ publicExport: function(t, e) {
+ return {
+ n: t.n.toBuffer(),
+ e: t.e
+ }
+ },
+ publicImport: function(t, e, r) {
+ if (!e.n || !e.e) throw Error("Invalid key data");
+ t.setPublic(e.n, e.e)
+ },
+ autoImport: function(e, r) {
+ return !(!r.n || !r.e || (r.d && r.p && r.q && r.dmp1 && r.dmq1 && r.coeff ? (t.exports.privateImport(e, r), 0) : (t.exports.publicImport(e, r), 0)))
+ }
+ }
+ },
+ 7460: (t, e, r) => {
+ function n(t) {
+ t = t.split("-");
+ for (var e = "private", r = {
+ type: "default"
+ }, n = 1; n < t.length; n++)
+ if (t[n]) switch (t[n]) {
+ case "public":
+ case "private":
+ e = t[n];
+ break;
+ case "pem":
+ case "der":
+ r.type = t[n]
+ }
+ return {
+ scheme: t[0],
+ keyType: e,
+ keyOpt: r
+ }
+ }
+ r(8226)._, t.exports = {
+ pkcs1: r(6566),
+ pkcs8: r(8573),
+ components: r(3374),
+ openssh: r(3194),
+ isPrivateExport: function(e) {
+ return t.exports[e] && "function" == typeof t.exports[e].privateExport
+ },
+ isPrivateImport: function(e) {
+ return t.exports[e] && "function" == typeof t.exports[e].privateImport
+ },
+ isPublicExport: function(e) {
+ return t.exports[e] && "function" == typeof t.exports[e].publicExport
+ },
+ isPublicImport: function(e) {
+ return t.exports[e] && "function" == typeof t.exports[e].publicImport
+ },
+ detectAndImport: function(e, r, i) {
+ if (void 0 === i) {
+ for (var o in t.exports)
+ if ("function" == typeof t.exports[o].autoImport && t.exports[o].autoImport(e, r)) return !0
+ } else if (i) {
+ var s = n(i);
+ if (!t.exports[s.scheme]) throw Error("Unsupported key format");
+ "private" === s.keyType ? t.exports[s.scheme].privateImport(e, r, s.keyOpt) : t.exports[s.scheme].publicImport(e, r, s.keyOpt)
+ }
+ return !1
+ },
+ detectAndExport: function(e, r) {
+ if (r) {
+ var i = n(r);
+ if (t.exports[i.scheme]) {
+ if ("private" === i.keyType) {
+ if (!e.isPrivate()) throw Error("This is not private key");
+ return t.exports[i.scheme].privateExport(e, i.keyOpt)
+ }
+ if (!e.isPublic()) throw Error("This is not public key");
+ return t.exports[i.scheme].publicExport(e, i.keyOpt)
+ }
+ throw Error("Unsupported key format")
+ }
+ }
+ }
+ },
+ 3194: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(8226)._,
+ o = r(8226),
+ s = r(1973);
+ const a = "-----BEGIN OPENSSH PRIVATE KEY-----",
+ f = "-----END OPENSSH PRIVATE KEY-----";
+
+ function u(t) {
+ const e = t.buf.readInt32BE(t.off);
+ t.off += 4;
+ const r = t.buf.slice(t.off, t.off + e);
+ return t.off += e, r
+ }
+
+ function c(t, e) {
+ t.buf.writeInt32BE(e.byteLength, t.off), t.off += 4, t.off += e.copy(t.buf, t.off)
+ }
+ t.exports = {
+ privateExport: function(t, e) {
+ const r = t.n.toBuffer();
+ let i = n.alloc(4);
+ for (i.writeUInt32BE(t.e, 0); 0 === i[0];) i = i.slice(1);
+ const s = t.d.toBuffer(),
+ u = t.coeff.toBuffer(),
+ h = t.p.toBuffer(),
+ p = t.q.toBuffer();
+ let l;
+ l = void 0 !== t.sshcomment ? n.from(t.sshcomment) : n.from([]);
+ const y = 15 + i.byteLength + 4 + r.byteLength,
+ g = 23 + r.byteLength + 4 + i.byteLength + 4 + s.byteLength + 4 + u.byteLength + 4 + h.byteLength + 4 + p.byteLength + 4 + l.byteLength;
+ let d = 43 + y + 4 + g;
+ d += 8 * Math.ceil(g / 8) - g;
+ const v = n.alloc(d),
+ m = {
+ buf: v,
+ off: 0
+ };
+ v.write("openssh-key-v1", "utf8"), v.writeUInt8(0, 14), m.off += 15, c(m, n.from("none")), c(m, n.from("none")), c(m, n.from("")), m.off = m.buf.writeUInt32BE(1, m.off), m.off = m.buf.writeUInt32BE(y, m.off), c(m, n.from("ssh-rsa")), c(m, i), c(m, r), m.off = m.buf.writeUInt32BE(d - 47 - y, m.off), m.off += 8, c(m, n.from("ssh-rsa")), c(m, r), c(m, i), c(m, s), c(m, u), c(m, h), c(m, p), c(m, l);
+ let S = 1;
+ for (; m.off < d;) m.off = m.buf.writeUInt8(S++, m.off);
+ return "der" === e.type ? m.buf : a + "\n" + o.linebrk(v.toString("base64"), 70) + "\n" + f + "\n"
+ },
+ privateImport: function(t, e, r) {
+ var c;
+ if ("der" !== (r = r || {}).type) {
+ if (n.isBuffer(e) && (e = e.toString("utf8")), !i.isString(e)) throw Error("Unsupported key format");
+ var h = o.trimSurroundingText(e, a, f).replace(/\s+|\n\r|\n|\r$/gm, "");
+ c = n.from(h, "base64")
+ } else {
+ if (!n.isBuffer(e)) throw Error("Unsupported key format");
+ c = e
+ }
+ const p = {
+ buf: c,
+ off: 0
+ };
+ if ("openssh-key-v1" !== c.slice(0, 14).toString("ascii")) throw "Invalid file format.";
+ if (p.off += 15, "none" !== u(p).toString("ascii")) throw Error("Unsupported key type");
+ if ("none" !== u(p).toString("ascii")) throw Error("Unsupported key type");
+ if ("" !== u(p).toString("ascii")) throw Error("Unsupported key type");
+ if (p.off += 4, p.off += 4, "ssh-rsa" !== u(p).toString("ascii")) throw Error("Unsupported key type");
+ if (u(p), u(p), p.off += 12, "ssh-rsa" !== u(p).toString("ascii")) throw Error("Unsupported key type");
+ const l = u(p),
+ y = u(p),
+ g = u(p),
+ d = u(p),
+ v = u(p),
+ m = u(p),
+ S = new s(g),
+ _ = new s(m),
+ b = new s(v),
+ E = S.mod(b.subtract(s.ONE)),
+ w = S.mod(_.subtract(s.ONE));
+ t.setPrivate(l, y, g, v, m, E.toBuffer(), w.toBuffer(), d), t.sshcomment = u(p).toString("ascii")
+ },
+ publicExport: function(t, e) {
+ let r = n.alloc(4);
+ for (r.writeUInt32BE(t.e, 0); 0 === r[0];) r = r.slice(1);
+ const i = t.n.toBuffer(),
+ o = n.alloc(r.byteLength + 4 + i.byteLength + 4 + 7 + 4),
+ s = {
+ buf: o,
+ off: 0
+ };
+ c(s, n.from("ssh-rsa")), c(s, r), c(s, i);
+ let a = t.sshcomment || "";
+ return "der" === e.type ? s.buf : "ssh-rsa " + o.toString("base64") + " " + a + "\n"
+ },
+ publicImport: function(t, e, r) {
+ var o;
+ if ("der" !== (r = r || {}).type) {
+ if (n.isBuffer(e) && (e = e.toString("utf8")), !i.isString(e)) throw Error("Unsupported key format");
+ {
+ if ("ssh-rsa " !== e.substring(0, 8)) throw Error("Unsupported key format");
+ let r = e.indexOf(" ", 8); - 1 === r ? r = e.length : t.sshcomment = e.substring(r + 1).replace(/\s+|\n\r|\n|\r$/gm, "");
+ const i = e.substring(8, r).replace(/\s+|\n\r|\n|\r$/gm, "");
+ o = n.from(i, "base64")
+ }
+ } else {
+ if (!n.isBuffer(e)) throw Error("Unsupported key format");
+ o = e
+ }
+ const s = {
+ buf: o,
+ off: 0
+ },
+ a = u(s).toString("ascii");
+ if ("ssh-rsa" !== a) throw Error("Invalid key type: " + a);
+ const f = u(s),
+ c = u(s);
+ t.setPublic(c, f)
+ },
+ autoImport: function(e, r) {
+ return /^[\S\s]*-----BEGIN OPENSSH PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END OPENSSH PRIVATE KEY-----[\S\s]*$/g.test(r) ? (t.exports.privateImport(e, r), !0) : !!/^[\S\s]*ssh-rsa \s*(?=(([A-Za-z0-9+/=]+\s*)+))\1[\S\s]*$/g.test(r) && (t.exports.publicImport(e, r), !0)
+ }
+ }
+ },
+ 6566: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(3100).Ber,
+ o = r(8226)._,
+ s = r(8226);
+ const a = "-----BEGIN RSA PRIVATE KEY-----",
+ f = "-----END RSA PRIVATE KEY-----",
+ u = "-----BEGIN RSA PUBLIC KEY-----",
+ c = "-----END RSA PUBLIC KEY-----";
+ t.exports = {
+ privateExport: function(t, e) {
+ e = e || {};
+ var r = t.n.toBuffer(),
+ n = t.d.toBuffer(),
+ o = t.p.toBuffer(),
+ u = t.q.toBuffer(),
+ c = t.dmp1.toBuffer(),
+ h = t.dmq1.toBuffer(),
+ p = t.coeff.toBuffer(),
+ l = r.length + n.length + o.length + u.length + c.length + h.length + p.length + 512,
+ y = new i.Writer({
+ size: l
+ });
+ return y.startSequence(), y.writeInt(0), y.writeBuffer(r, 2), y.writeInt(t.e), y.writeBuffer(n, 2), y.writeBuffer(o, 2), y.writeBuffer(u, 2), y.writeBuffer(c, 2), y.writeBuffer(h, 2), y.writeBuffer(p, 2), y.endSequence(), "der" === e.type ? y.buffer : a + "\n" + s.linebrk(y.buffer.toString("base64"), 64) + "\n" + f
+ },
+ privateImport: function(t, e, r) {
+ var u;
+ if ("der" !== (r = r || {}).type) {
+ if (n.isBuffer(e) && (e = e.toString("utf8")), !o.isString(e)) throw Error("Unsupported key format");
+ var c = s.trimSurroundingText(e, a, f).replace(/\s+|\n\r|\n|\r$/gm, "");
+ u = n.from(c, "base64")
+ } else {
+ if (!n.isBuffer(e)) throw Error("Unsupported key format");
+ u = e
+ }
+ var h = new i.Reader(u);
+ h.readSequence(), h.readString(2, !0), t.setPrivate(h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0))
+ },
+ publicExport: function(t, e) {
+ e = e || {};
+ var r = t.n.toBuffer(),
+ n = r.length + 512,
+ o = new i.Writer({
+ size: n
+ });
+ return o.startSequence(), o.writeBuffer(r, 2), o.writeInt(t.e), o.endSequence(), "der" === e.type ? o.buffer : u + "\n" + s.linebrk(o.buffer.toString("base64"), 64) + "\n" + c
+ },
+ publicImport: function(t, e, r) {
+ var a;
+ if ("der" !== (r = r || {}).type) {
+ if (n.isBuffer(e) && (e = e.toString("utf8")), o.isString(e)) {
+ var f = s.trimSurroundingText(e, u, c).replace(/\s+|\n\r|\n|\r$/gm, "");
+ a = n.from(f, "base64")
+ }
+ } else {
+ if (!n.isBuffer(e)) throw Error("Unsupported key format");
+ a = e
+ }
+ var h = new i.Reader(a);
+ h.readSequence(), t.setPublic(h.readString(2, !0), h.readString(2, !0))
+ },
+ autoImport: function(e, r) {
+ return /^[\S\s]*-----BEGIN RSA PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PRIVATE KEY-----[\S\s]*$/g.test(r) ? (t.exports.privateImport(e, r), !0) : !!/^[\S\s]*-----BEGIN RSA PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PUBLIC KEY-----[\S\s]*$/g.test(r) && (t.exports.publicImport(e, r), !0)
+ }
+ }
+ },
+ 8573: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(3100).Ber,
+ o = r(8226)._,
+ s = "1.2.840.113549.1.1.1",
+ a = r(8226);
+ const f = "-----BEGIN PRIVATE KEY-----",
+ u = "-----END PRIVATE KEY-----",
+ c = "-----BEGIN PUBLIC KEY-----",
+ h = "-----END PUBLIC KEY-----";
+ t.exports = {
+ privateExport: function(t, e) {
+ e = e || {};
+ var r = t.n.toBuffer(),
+ n = t.d.toBuffer(),
+ o = t.p.toBuffer(),
+ c = t.q.toBuffer(),
+ h = t.dmp1.toBuffer(),
+ p = t.dmq1.toBuffer(),
+ l = t.coeff.toBuffer(),
+ y = r.length + n.length + o.length + c.length + h.length + p.length + l.length + 512,
+ g = new i.Writer({
+ size: y
+ });
+ g.startSequence(), g.writeInt(0), g.writeBuffer(r, 2), g.writeInt(t.e), g.writeBuffer(n, 2), g.writeBuffer(o, 2), g.writeBuffer(c, 2), g.writeBuffer(h, 2), g.writeBuffer(p, 2), g.writeBuffer(l, 2), g.endSequence();
+ var d = new i.Writer({
+ size: y
+ });
+ return d.startSequence(), d.writeInt(0), d.startSequence(), d.writeOID(s), d.writeNull(), d.endSequence(), d.writeBuffer(g.buffer, 4), d.endSequence(), "der" === e.type ? d.buffer : f + "\n" + a.linebrk(d.buffer.toString("base64"), 64) + "\n" + u
+ },
+ privateImport: function(t, e, r) {
+ var c;
+ if ("der" !== (r = r || {}).type) {
+ if (n.isBuffer(e) && (e = e.toString("utf8")), !o.isString(e)) throw Error("Unsupported key format");
+ var h = a.trimSurroundingText(e, f, u).replace("-----END PRIVATE KEY-----", "").replace(/\s+|\n\r|\n|\r$/gm, "");
+ c = n.from(h, "base64")
+ } else {
+ if (!n.isBuffer(e)) throw Error("Unsupported key format");
+ c = e
+ }
+ var p = new i.Reader(c);
+ if (p.readSequence(), p.readInt(0), new i.Reader(p.readString(48, !0)).readOID(6, !0) !== s) throw Error("Invalid Public key format");
+ var l = new i.Reader(p.readString(4, !0));
+ l.readSequence(), l.readString(2, !0), t.setPrivate(l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0))
+ },
+ publicExport: function(t, e) {
+ e = e || {};
+ var r = t.n.toBuffer(),
+ n = r.length + 512,
+ o = new i.Writer({
+ size: n
+ });
+ o.writeByte(0), o.startSequence(), o.writeBuffer(r, 2), o.writeInt(t.e), o.endSequence();
+ var f = new i.Writer({
+ size: n
+ });
+ return f.startSequence(), f.startSequence(), f.writeOID(s), f.writeNull(), f.endSequence(), f.writeBuffer(o.buffer, 3), f.endSequence(), "der" === e.type ? f.buffer : c + "\n" + a.linebrk(f.buffer.toString("base64"), 64) + "\n" + h
+ },
+ publicImport: function(t, e, r) {
+ var f;
+ if ("der" !== (r = r || {}).type) {
+ if (n.isBuffer(e) && (e = e.toString("utf8")), o.isString(e)) {
+ var u = a.trimSurroundingText(e, c, h).replace(/\s+|\n\r|\n|\r$/gm, "");
+ f = n.from(u, "base64")
+ }
+ } else {
+ if (!n.isBuffer(e)) throw Error("Unsupported key format");
+ f = e
+ }
+ var p = new i.Reader(f);
+ if (p.readSequence(), new i.Reader(p.readString(48, !0)).readOID(6, !0) !== s) throw Error("Invalid Public key format");
+ var l = new i.Reader(p.readString(3, !0));
+ l.readByte(), l.readSequence(), t.setPublic(l.readString(2, !0), l.readString(2, !0))
+ },
+ autoImport: function(e, r) {
+ return /^[\S\s]*-----BEGIN PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END PRIVATE KEY-----[\S\s]*$/g.test(r) ? (t.exports.privateImport(e, r), !0) : !!/^[\S\s]*-----BEGIN PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END PUBLIC KEY-----[\S\s]*$/g.test(r) && (t.exports.publicImport(e, r), !0)
+ }
+ }
+ },
+ 1973: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(3200),
+ o = r(8226)._;
+
+ function s(t, e) {
+ null != t && ("number" == typeof t ? this.fromNumber(t, e) : n.isBuffer(t) ? this.fromBuffer(t) : null == e && "string" != typeof t ? this.fromByteArray(t) : this.fromString(t, e))
+ }
+
+ function a() {
+ return new s(null)
+ }
+ s.prototype.am = function(t, e, r, n, i, o) {
+ for (var s = 16383 & e, a = e >> 14; --o >= 0;) {
+ var f = 16383 & this[t],
+ u = this[t++] >> 14,
+ c = a * f + u * s;
+ i = ((f = s * f + ((16383 & c) << 14) + r[n] + i) >> 28) + (c >> 14) + a * u, r[n++] = 268435455 & f
+ }
+ return i
+ }, s.prototype.DB = 28, s.prototype.DM = 268435455, s.prototype.DV = 1 << 28, s.prototype.FV = Math.pow(2, 52), s.prototype.F1 = 24, s.prototype.F2 = 4;
+ var f, u, c = new Array;
+ for (f = "0".charCodeAt(0), u = 0; u <= 9; ++u) c[f++] = u;
+ for (f = "a".charCodeAt(0), u = 10; u < 36; ++u) c[f++] = u;
+ for (f = "A".charCodeAt(0), u = 10; u < 36; ++u) c[f++] = u;
+
+ function h(t) {
+ return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(t)
+ }
+
+ function p(t, e) {
+ var r = c[t.charCodeAt(e)];
+ return null == r ? -1 : r
+ }
+
+ function l(t) {
+ var e = a();
+ return e.fromInt(t), e
+ }
+
+ function y(t) {
+ var e, r = 1;
+ return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r
+ }
+
+ function g(t) {
+ this.m = t
+ }
+
+ function d(t) {
+ this.m = t, this.mp = t.invDigit(), this.mpl = 32767 & this.mp, this.mph = this.mp >> 15, this.um = (1 << t.DB - 15) - 1, this.mt2 = 2 * t.t
+ }
+
+ function v(t, e) {
+ return t & e
+ }
+
+ function m(t, e) {
+ return t | e
+ }
+
+ function S(t, e) {
+ return t ^ e
+ }
+
+ function _(t, e) {
+ return t & ~e
+ }
+
+ function b(t) {
+ if (0 === t) return -1;
+ var e = 0;
+ return 65535 & t || (t >>= 16, e += 16), 255 & t || (t >>= 8, e += 8), 15 & t || (t >>= 4, e += 4), 3 & t || (t >>= 2, e += 2), 1 & t || ++e, e
+ }
+
+ function E(t) {
+ for (var e = 0; 0 != t;) t &= t - 1, ++e;
+ return e
+ }
+
+ function w() {}
+
+ function O(t) {
+ return t
+ }
+
+ function B(t) {
+ this.r2 = a(), this.q3 = a(), s.ONE.dlShiftTo(2 * t.t, this.r2), this.mu = this.r2.divide(t), this.m = t
+ }
+ g.prototype.convert = function(t) {
+ return t.s < 0 || t.compareTo(this.m) >= 0 ? t.mod(this.m) : t
+ }, g.prototype.revert = function(t) {
+ return t
+ }, g.prototype.reduce = function(t) {
+ t.divRemTo(this.m, null, t)
+ }, g.prototype.mulTo = function(t, e, r) {
+ t.multiplyTo(e, r), this.reduce(r)
+ }, g.prototype.sqrTo = function(t, e) {
+ t.squareTo(e), this.reduce(e)
+ }, d.prototype.convert = function(t) {
+ var e = a();
+ return t.abs().dlShiftTo(this.m.t, e), e.divRemTo(this.m, null, e), t.s < 0 && e.compareTo(s.ZERO) > 0 && this.m.subTo(e, e), e
+ }, d.prototype.revert = function(t) {
+ var e = a();
+ return t.copyTo(e), this.reduce(e), e
+ }, d.prototype.reduce = function(t) {
+ for (; t.t <= this.mt2;) t[t.t++] = 0;
+ for (var e = 0; e < this.m.t; ++e) {
+ var r = 32767 & t[e],
+ n = r * this.mpl + ((r * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM;
+ for (t[r = e + this.m.t] += this.m.am(0, n, t, e, 0, this.m.t); t[r] >= t.DV;) t[r] -= t.DV, t[++r]++
+ }
+ t.clamp(), t.drShiftTo(this.m.t, t), t.compareTo(this.m) >= 0 && t.subTo(this.m, t)
+ }, d.prototype.mulTo = function(t, e, r) {
+ t.multiplyTo(e, r), this.reduce(r)
+ }, d.prototype.sqrTo = function(t, e) {
+ t.squareTo(e), this.reduce(e)
+ }, w.prototype.convert = O, w.prototype.revert = O, w.prototype.mulTo = function(t, e, r) {
+ t.multiplyTo(e, r)
+ }, w.prototype.sqrTo = function(t, e) {
+ t.squareTo(e)
+ }, B.prototype.convert = function(t) {
+ if (t.s < 0 || t.t > 2 * this.m.t) return t.mod(this.m);
+ if (t.compareTo(this.m) < 0) return t;
+ var e = a();
+ return t.copyTo(e), this.reduce(e), e
+ }, B.prototype.revert = function(t) {
+ return t
+ }, B.prototype.reduce = function(t) {
+ for (t.drShiftTo(this.m.t - 1, this.r2), t.t > this.m.t + 1 && (t.t = this.m.t + 1, t.clamp()), this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3), this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); t.compareTo(this.r2) < 0;) t.dAddOffset(1, this.m.t + 1);
+ for (t.subTo(this.r2, t); t.compareTo(this.m) >= 0;) t.subTo(this.m, t)
+ }, B.prototype.mulTo = function(t, e, r) {
+ t.multiplyTo(e, r), this.reduce(r)
+ }, B.prototype.sqrTo = function(t, e) {
+ t.squareTo(e), this.reduce(e)
+ };
+ var A = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997],
+ x = (1 << 26) / A[A.length - 1];
+ s.prototype.copyTo = function(t) {
+ for (var e = this.t - 1; e >= 0; --e) t[e] = this[e];
+ t.t = this.t, t.s = this.s
+ }, s.prototype.fromInt = function(t) {
+ this.t = 1, this.s = t < 0 ? -1 : 0, t > 0 ? this[0] = t : t < -1 ? this[0] = t + DV : this.t = 0
+ }, s.prototype.fromString = function(t, e, r) {
+ var n;
+ switch (e) {
+ case 2:
+ n = 1;
+ break;
+ case 4:
+ n = 2;
+ break;
+ case 8:
+ n = 3;
+ break;
+ case 16:
+ n = 4;
+ break;
+ case 32:
+ n = 5;
+ break;
+ case 256:
+ n = 8;
+ break;
+ default:
+ return void this.fromRadix(t, e)
+ }
+ this.t = 0, this.s = 0;
+ for (var i = t.length, o = !1, a = 0; --i >= 0;) {
+ var f = 8 == n ? 255 & t[i] : p(t, i);
+ f < 0 ? "-" == t.charAt(i) && (o = !0) : (o = !1, 0 === a ? this[this.t++] = f : a + n > this.DB ? (this[this.t - 1] |= (f & (1 << this.DB - a) - 1) << a, this[this.t++] = f >> this.DB - a) : this[this.t - 1] |= f << a, (a += n) >= this.DB && (a -= this.DB))
+ }!r && 8 == n && 128 & t[0] && (this.s = -1, a > 0 && (this[this.t - 1] |= (1 << this.DB - a) - 1 << a)), this.clamp(), o && s.ZERO.subTo(this, this)
+ }, s.prototype.fromByteArray = function(t, e) {
+ this.fromString(t, 256, e)
+ }, s.prototype.fromBuffer = function(t) {
+ this.fromString(t, 256, !0)
+ }, s.prototype.clamp = function() {
+ for (var t = this.s & this.DM; this.t > 0 && this[this.t - 1] == t;) --this.t
+ }, s.prototype.dlShiftTo = function(t, e) {
+ var r;
+ for (r = this.t - 1; r >= 0; --r) e[r + t] = this[r];
+ for (r = t - 1; r >= 0; --r) e[r] = 0;
+ e.t = this.t + t, e.s = this.s
+ }, s.prototype.drShiftTo = function(t, e) {
+ for (var r = t; r < this.t; ++r) e[r - t] = this[r];
+ e.t = Math.max(this.t - t, 0), e.s = this.s
+ }, s.prototype.lShiftTo = function(t, e) {
+ var r, n = t % this.DB,
+ i = this.DB - n,
+ o = (1 << i) - 1,
+ s = Math.floor(t / this.DB),
+ a = this.s << n & this.DM;
+ for (r = this.t - 1; r >= 0; --r) e[r + s + 1] = this[r] >> i | a, a = (this[r] & o) << n;
+ for (r = s - 1; r >= 0; --r) e[r] = 0;
+ e[s] = a, e.t = this.t + s + 1, e.s = this.s, e.clamp()
+ }, s.prototype.rShiftTo = function(t, e) {
+ e.s = this.s;
+ var r = Math.floor(t / this.DB);
+ if (r >= this.t) e.t = 0;
+ else {
+ var n = t % this.DB,
+ i = this.DB - n,
+ o = (1 << n) - 1;
+ e[0] = this[r] >> n;
+ for (var s = r + 1; s < this.t; ++s) e[s - r - 1] |= (this[s] & o) << i, e[s - r] = this[s] >> n;
+ n > 0 && (e[this.t - r - 1] |= (this.s & o) << i), e.t = this.t - r, e.clamp()
+ }
+ }, s.prototype.subTo = function(t, e) {
+ for (var r = 0, n = 0, i = Math.min(t.t, this.t); r < i;) n += this[r] - t[r], e[r++] = n & this.DM, n >>= this.DB;
+ if (t.t < this.t) {
+ for (n -= t.s; r < this.t;) n += this[r], e[r++] = n & this.DM, n >>= this.DB;
+ n += this.s
+ } else {
+ for (n += this.s; r < t.t;) n -= t[r], e[r++] = n & this.DM, n >>= this.DB;
+ n -= t.s
+ }
+ e.s = n < 0 ? -1 : 0, n < -1 ? e[r++] = this.DV + n : n > 0 && (e[r++] = n), e.t = r, e.clamp()
+ }, s.prototype.multiplyTo = function(t, e) {
+ var r = this.abs(),
+ n = t.abs(),
+ i = r.t;
+ for (e.t = i + n.t; --i >= 0;) e[i] = 0;
+ for (i = 0; i < n.t; ++i) e[i + r.t] = r.am(0, n[i], e, i, 0, r.t);
+ e.s = 0, e.clamp(), this.s != t.s && s.ZERO.subTo(e, e)
+ }, s.prototype.squareTo = function(t) {
+ for (var e = this.abs(), r = t.t = 2 * e.t; --r >= 0;) t[r] = 0;
+ for (r = 0; r < e.t - 1; ++r) {
+ var n = e.am(r, e[r], t, 2 * r, 0, 1);
+ (t[r + e.t] += e.am(r + 1, 2 * e[r], t, 2 * r + 1, n, e.t - r - 1)) >= e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1)
+ }
+ t.t > 0 && (t[t.t - 1] += e.am(r, e[r], t, 2 * r, 0, 1)), t.s = 0, t.clamp()
+ }, s.prototype.divRemTo = function(t, e, r) {
+ var n = t.abs();
+ if (!(n.t <= 0)) {
+ var i = this.abs();
+ if (i.t < n.t) return null != e && e.fromInt(0), void(null != r && this.copyTo(r));
+ null == r && (r = a());
+ var o = a(),
+ f = this.s,
+ u = t.s,
+ c = this.DB - y(n[n.t - 1]);
+ c > 0 ? (n.lShiftTo(c, o), i.lShiftTo(c, r)) : (n.copyTo(o), i.copyTo(r));
+ var h = o.t,
+ p = o[h - 1];
+ if (0 !== p) {
+ var l = p * (1 << this.F1) + (h > 1 ? o[h - 2] >> this.F2 : 0),
+ g = this.FV / l,
+ d = (1 << this.F1) / l,
+ v = 1 << this.F2,
+ m = r.t,
+ S = m - h,
+ _ = null == e ? a() : e;
+ for (o.dlShiftTo(S, _), r.compareTo(_) >= 0 && (r[r.t++] = 1, r.subTo(_, r)), s.ONE.dlShiftTo(h, _), _.subTo(o, o); o.t < h;) o[o.t++] = 0;
+ for (; --S >= 0;) {
+ var b = r[--m] == p ? this.DM : Math.floor(r[m] * g + (r[m - 1] + v) * d);
+ if ((r[m] += o.am(0, b, r, S, 0, h)) < b)
+ for (o.dlShiftTo(S, _), r.subTo(_, r); r[m] < --b;) r.subTo(_, r)
+ }
+ null != e && (r.drShiftTo(h, e), f != u && s.ZERO.subTo(e, e)), r.t = h, r.clamp(), c > 0 && r.rShiftTo(c, r), f < 0 && s.ZERO.subTo(r, r)
+ }
+ }
+ }, s.prototype.invDigit = function() {
+ if (this.t < 1) return 0;
+ var t = this[0];
+ if (!(1 & t)) return 0;
+ var e = 3 & t;
+ return (e = (e = (e = (e = e * (2 - (15 & t) * e) & 15) * (2 - (255 & t) * e) & 255) * (2 - ((65535 & t) * e & 65535)) & 65535) * (2 - t * e % this.DV) % this.DV) > 0 ? this.DV - e : -e
+ }, s.prototype.isEven = function() {
+ return 0 === (this.t > 0 ? 1 & this[0] : this.s)
+ }, s.prototype.exp = function(t, e) {
+ if (t > 4294967295 || t < 1) return s.ONE;
+ var r = a(),
+ n = a(),
+ i = e.convert(this),
+ o = y(t) - 1;
+ for (i.copyTo(r); --o >= 0;)
+ if (e.sqrTo(r, n), (t & 1 << o) > 0) e.mulTo(n, i, r);
+ else {
+ var f = r;
+ r = n, n = f
+ } return e.revert(r)
+ }, s.prototype.chunkSize = function(t) {
+ return Math.floor(Math.LN2 * this.DB / Math.log(t))
+ }, s.prototype.toRadix = function(t) {
+ if (null == t && (t = 10), 0 === this.signum() || t < 2 || t > 36) return "0";
+ var e = this.chunkSize(t),
+ r = Math.pow(t, e),
+ n = l(r),
+ i = a(),
+ o = a(),
+ s = "";
+ for (this.divRemTo(n, i, o); i.signum() > 0;) s = (r + o.intValue()).toString(t).substr(1) + s, i.divRemTo(n, i, o);
+ return o.intValue().toString(t) + s
+ }, s.prototype.fromRadix = function(t, e) {
+ this.fromInt(0), null == e && (e = 10);
+ for (var r = this.chunkSize(e), n = Math.pow(e, r), i = !1, o = 0, a = 0, f = 0; f < t.length; ++f) {
+ var u = p(t, f);
+ u < 0 ? "-" == t.charAt(f) && 0 === this.signum() && (i = !0) : (a = e * a + u, ++o >= r && (this.dMultiply(n), this.dAddOffset(a, 0), o = 0, a = 0))
+ }
+ o > 0 && (this.dMultiply(Math.pow(e, o)), this.dAddOffset(a, 0)), i && s.ZERO.subTo(this, this)
+ }, s.prototype.fromNumber = function(t, e) {
+ if ("number" == typeof e)
+ if (t < 2) this.fromInt(1);
+ else
+ for (this.fromNumber(t), this.testBit(t - 1) || this.bitwiseTo(s.ONE.shiftLeft(t - 1), m, this), this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(e);) this.dAddOffset(2, 0), this.bitLength() > t && this.subTo(s.ONE.shiftLeft(t - 1), this);
+ else {
+ var r = i.randomBytes(1 + (t >> 3)),
+ n = 7 & t;
+ n > 0 ? r[0] &= (1 << n) - 1 : r[0] = 0, this.fromByteArray(r)
+ }
+ }, s.prototype.bitwiseTo = function(t, e, r) {
+ var n, i, o = Math.min(t.t, this.t);
+ for (n = 0; n < o; ++n) r[n] = e(this[n], t[n]);
+ if (t.t < this.t) {
+ for (i = t.s & this.DM, n = o; n < this.t; ++n) r[n] = e(this[n], i);
+ r.t = this.t
+ } else {
+ for (i = this.s & this.DM, n = o; n < t.t; ++n) r[n] = e(i, t[n]);
+ r.t = t.t
+ }
+ r.s = e(this.s, t.s), r.clamp()
+ }, s.prototype.changeBit = function(t, e) {
+ var r = s.ONE.shiftLeft(t);
+ return this.bitwiseTo(r, e, r), r
+ }, s.prototype.addTo = function(t, e) {
+ for (var r = 0, n = 0, i = Math.min(t.t, this.t); r < i;) n += this[r] + t[r], e[r++] = n & this.DM, n >>= this.DB;
+ if (t.t < this.t) {
+ for (n += t.s; r < this.t;) n += this[r], e[r++] = n & this.DM, n >>= this.DB;
+ n += this.s
+ } else {
+ for (n += this.s; r < t.t;) n += t[r], e[r++] = n & this.DM, n >>= this.DB;
+ n += t.s
+ }
+ e.s = n < 0 ? -1 : 0, n > 0 ? e[r++] = n : n < -1 && (e[r++] = this.DV + n), e.t = r, e.clamp()
+ }, s.prototype.dMultiply = function(t) {
+ this[this.t] = this.am(0, t - 1, this, 0, 0, this.t), ++this.t, this.clamp()
+ }, s.prototype.dAddOffset = function(t, e) {
+ if (0 !== t) {
+ for (; this.t <= e;) this[this.t++] = 0;
+ for (this[e] += t; this[e] >= this.DV;) this[e] -= this.DV, ++e >= this.t && (this[this.t++] = 0), ++this[e]
+ }
+ }, s.prototype.multiplyLowerTo = function(t, e, r) {
+ var n, i = Math.min(this.t + t.t, e);
+ for (r.s = 0, r.t = i; i > 0;) r[--i] = 0;
+ for (n = r.t - this.t; i < n; ++i) r[i + this.t] = this.am(0, t[i], r, i, 0, this.t);
+ for (n = Math.min(t.t, e); i < n; ++i) this.am(0, t[i], r, i, 0, e - i);
+ r.clamp()
+ }, s.prototype.multiplyUpperTo = function(t, e, r) {
+ --e;
+ var n = r.t = this.t + t.t - e;
+ for (r.s = 0; --n >= 0;) r[n] = 0;
+ for (n = Math.max(e - this.t, 0); n < t.t; ++n) r[this.t + n - e] = this.am(e - n, t[n], r, 0, 0, this.t + n - e);
+ r.clamp(), r.drShiftTo(1, r)
+ }, s.prototype.modInt = function(t) {
+ if (t <= 0) return 0;
+ var e = this.DV % t,
+ r = this.s < 0 ? t - 1 : 0;
+ if (this.t > 0)
+ if (0 === e) r = this[0] % t;
+ else
+ for (var n = this.t - 1; n >= 0; --n) r = (e * r + this[n]) % t;
+ return r
+ }, s.prototype.millerRabin = function(t) {
+ var e = this.subtract(s.ONE),
+ r = e.getLowestSetBit();
+ if (r <= 0) return !1;
+ var n = e.shiftRight(r);
+ (t = t + 1 >> 1) > A.length && (t = A.length);
+ for (var i = a(), o = 0; o < t; ++o) {
+ i.fromInt(A[Math.floor(Math.random() * A.length)]);
+ var f = i.modPow(n, this);
+ if (0 != f.compareTo(s.ONE) && 0 != f.compareTo(e)) {
+ for (var u = 1; u++ < r && 0 != f.compareTo(e);)
+ if (0 === (f = f.modPowInt(2, this)).compareTo(s.ONE)) return !1;
+ if (0 != f.compareTo(e)) return !1
+ }
+ }
+ return !0
+ }, s.prototype.toString = function(t) {
+ if (this.s < 0) return "-" + this.negate().toString(t);
+ var e;
+ if (16 == t) e = 4;
+ else if (8 == t) e = 3;
+ else if (2 == t) e = 1;
+ else if (32 == t) e = 5;
+ else {
+ if (4 != t) return this.toRadix(t);
+ e = 2
+ }
+ var r, n = (1 << e) - 1,
+ i = !1,
+ o = "",
+ s = this.t,
+ a = this.DB - s * this.DB % e;
+ if (s-- > 0)
+ for (a < this.DB && (r = this[s] >> a) > 0 && (i = !0, o = h(r)); s >= 0;) a < e ? (r = (this[s] & (1 << a) - 1) << e - a, r |= this[--s] >> (a += this.DB - e)) : (r = this[s] >> (a -= e) & n, a <= 0 && (a += this.DB, --s)), r > 0 && (i = !0), i && (o += h(r));
+ return i ? o : "0"
+ }, s.prototype.negate = function() {
+ var t = a();
+ return s.ZERO.subTo(this, t), t
+ }, s.prototype.abs = function() {
+ return this.s < 0 ? this.negate() : this
+ }, s.prototype.compareTo = function(t) {
+ var e = this.s - t.s;
+ if (0 != e) return e;
+ var r = this.t;
+ if (0 != (e = r - t.t)) return this.s < 0 ? -e : e;
+ for (; --r >= 0;)
+ if (0 != (e = this[r] - t[r])) return e;
+ return 0
+ }, s.prototype.bitLength = function() {
+ return this.t <= 0 ? 0 : this.DB * (this.t - 1) + y(this[this.t - 1] ^ this.s & this.DM)
+ }, s.prototype.mod = function(t) {
+ var e = a();
+ return this.abs().divRemTo(t, null, e), this.s < 0 && e.compareTo(s.ZERO) > 0 && t.subTo(e, e), e
+ }, s.prototype.modPowInt = function(t, e) {
+ var r;
+ return r = t < 256 || e.isEven() ? new g(e) : new d(e), this.exp(t, r)
+ }, s.prototype.clone = function() {
+ var t = a();
+ return this.copyTo(t), t
+ }, s.prototype.intValue = function() {
+ if (this.s < 0) {
+ if (1 == this.t) return this[0] - this.DV;
+ if (0 === this.t) return -1
+ } else {
+ if (1 == this.t) return this[0];
+ if (0 === this.t) return 0
+ }
+ return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0]
+ }, s.prototype.byteValue = function() {
+ return 0 == this.t ? this.s : this[0] << 24 >> 24
+ }, s.prototype.shortValue = function() {
+ return 0 == this.t ? this.s : this[0] << 16 >> 16
+ }, s.prototype.signum = function() {
+ return this.s < 0 ? -1 : this.t <= 0 || 1 == this.t && this[0] <= 0 ? 0 : 1
+ }, s.prototype.toByteArray = function() {
+ var t = this.t,
+ e = new Array;
+ e[0] = this.s;
+ var r, n = this.DB - t * this.DB % 8,
+ i = 0;
+ if (t-- > 0)
+ for (n < this.DB && (r = this[t] >> n) != (this.s & this.DM) >> n && (e[i++] = r | this.s << this.DB - n); t >= 0;) n < 8 ? (r = (this[t] & (1 << n) - 1) << 8 - n, r |= this[--t] >> (n += this.DB - 8)) : (r = this[t] >> (n -= 8) & 255, n <= 0 && (n += this.DB, --t)), 128 & r && (r |= -256), 0 === i && (128 & this.s) != (128 & r) && ++i, (i > 0 || r != this.s) && (e[i++] = r);
+ return e
+ }, s.prototype.toBuffer = function(t) {
+ var e = n.from(this.toByteArray());
+ if (!0 === t && 0 === e[0]) e = e.slice(1);
+ else if (o.isNumber(t)) {
+ if (e.length > t) {
+ for (var r = 0; r < e.length - t; r++)
+ if (0 !== e[r]) return null;
+ return e.slice(e.length - t)
+ }
+ if (e.length < t) {
+ var i = n.alloc(t);
+ return i.fill(0, 0, t - e.length), e.copy(i, t - e.length), i
+ }
+ }
+ return e
+ }, s.prototype.equals = function(t) {
+ return 0 == this.compareTo(t)
+ }, s.prototype.min = function(t) {
+ return this.compareTo(t) < 0 ? this : t
+ }, s.prototype.max = function(t) {
+ return this.compareTo(t) > 0 ? this : t
+ }, s.prototype.and = function(t) {
+ var e = a();
+ return this.bitwiseTo(t, v, e), e
+ }, s.prototype.or = function(t) {
+ var e = a();
+ return this.bitwiseTo(t, m, e), e
+ }, s.prototype.xor = function(t) {
+ var e = a();
+ return this.bitwiseTo(t, S, e), e
+ }, s.prototype.andNot = function(t) {
+ var e = a();
+ return this.bitwiseTo(t, _, e), e
+ }, s.prototype.not = function() {
+ for (var t = a(), e = 0; e < this.t; ++e) t[e] = this.DM & ~this[e];
+ return t.t = this.t, t.s = ~this.s, t
+ }, s.prototype.shiftLeft = function(t) {
+ var e = a();
+ return t < 0 ? this.rShiftTo(-t, e) : this.lShiftTo(t, e), e
+ }, s.prototype.shiftRight = function(t) {
+ var e = a();
+ return t < 0 ? this.lShiftTo(-t, e) : this.rShiftTo(t, e), e
+ }, s.prototype.getLowestSetBit = function() {
+ for (var t = 0; t < this.t; ++t)
+ if (0 != this[t]) return t * this.DB + b(this[t]);
+ return this.s < 0 ? this.t * this.DB : -1
+ }, s.prototype.bitCount = function() {
+ for (var t = 0, e = this.s & this.DM, r = 0; r < this.t; ++r) t += E(this[r] ^ e);
+ return t
+ }, s.prototype.testBit = function(t) {
+ var e = Math.floor(t / this.DB);
+ return e >= this.t ? 0 != this.s : !!(this[e] & 1 << t % this.DB)
+ }, s.prototype.setBit = function(t) {
+ return this.changeBit(t, m)
+ }, s.prototype.clearBit = function(t) {
+ return this.changeBit(t, _)
+ }, s.prototype.flipBit = function(t) {
+ return this.changeBit(t, S)
+ }, s.prototype.add = function(t) {
+ var e = a();
+ return this.addTo(t, e), e
+ }, s.prototype.subtract = function(t) {
+ var e = a();
+ return this.subTo(t, e), e
+ }, s.prototype.multiply = function(t) {
+ var e = a();
+ return this.multiplyTo(t, e), e
+ }, s.prototype.divide = function(t) {
+ var e = a();
+ return this.divRemTo(t, e, null), e
+ }, s.prototype.remainder = function(t) {
+ var e = a();
+ return this.divRemTo(t, null, e), e
+ }, s.prototype.divideAndRemainder = function(t) {
+ var e = a(),
+ r = a();
+ return this.divRemTo(t, e, r), new Array(e, r)
+ }, s.prototype.modPow = function(t, e) {
+ var r, n, i = t.bitLength(),
+ o = l(1);
+ if (i <= 0) return o;
+ r = i < 18 ? 1 : i < 48 ? 3 : i < 144 ? 4 : i < 768 ? 5 : 6, n = i < 8 ? new g(e) : e.isEven() ? new B(e) : new d(e);
+ var s = new Array,
+ f = 3,
+ u = r - 1,
+ c = (1 << r) - 1;
+ if (s[1] = n.convert(this), r > 1) {
+ var h = a();
+ for (n.sqrTo(s[1], h); f <= c;) s[f] = a(), n.mulTo(h, s[f - 2], s[f]), f += 2
+ }
+ var p, v, m = t.t - 1,
+ S = !0,
+ _ = a();
+ for (i = y(t[m]) - 1; m >= 0;) {
+ for (i >= u ? p = t[m] >> i - u & c : (p = (t[m] & (1 << i + 1) - 1) << u - i, m > 0 && (p |= t[m - 1] >> this.DB + i - u)), f = r; !(1 & p);) p >>= 1, --f;
+ if ((i -= f) < 0 && (i += this.DB, --m), S) s[p].copyTo(o), S = !1;
+ else {
+ for (; f > 1;) n.sqrTo(o, _), n.sqrTo(_, o), f -= 2;
+ f > 0 ? n.sqrTo(o, _) : (v = o, o = _, _ = v), n.mulTo(_, s[p], o)
+ }
+ for (; m >= 0 && !(t[m] & 1 << i);) n.sqrTo(o, _), v = o, o = _, _ = v, --i < 0 && (i = this.DB - 1, --m)
+ }
+ return n.revert(o)
+ }, s.prototype.modInverse = function(t) {
+ var e = t.isEven();
+ if (this.isEven() && e || 0 === t.signum()) return s.ZERO;
+ for (var r = t.clone(), n = this.clone(), i = l(1), o = l(0), a = l(0), f = l(1); 0 != r.signum();) {
+ for (; r.isEven();) r.rShiftTo(1, r), e ? (i.isEven() && o.isEven() || (i.addTo(this, i), o.subTo(t, o)), i.rShiftTo(1, i)) : o.isEven() || o.subTo(t, o), o.rShiftTo(1, o);
+ for (; n.isEven();) n.rShiftTo(1, n), e ? (a.isEven() && f.isEven() || (a.addTo(this, a), f.subTo(t, f)), a.rShiftTo(1, a)) : f.isEven() || f.subTo(t, f), f.rShiftTo(1, f);
+ r.compareTo(n) >= 0 ? (r.subTo(n, r), e && i.subTo(a, i), o.subTo(f, o)) : (n.subTo(r, n), e && a.subTo(i, a), f.subTo(o, f))
+ }
+ return 0 != n.compareTo(s.ONE) ? s.ZERO : f.compareTo(t) >= 0 ? f.subtract(t) : f.signum() < 0 ? (f.addTo(t, f), f.signum() < 0 ? f.add(t) : f) : f
+ }, s.prototype.pow = function(t) {
+ return this.exp(t, new w)
+ }, s.prototype.gcd = function(t) {
+ var e = this.s < 0 ? this.negate() : this.clone(),
+ r = t.s < 0 ? t.negate() : t.clone();
+ if (e.compareTo(r) < 0) {
+ var n = e;
+ e = r, r = n
+ }
+ var i = e.getLowestSetBit(),
+ o = r.getLowestSetBit();
+ if (o < 0) return e;
+ for (i < o && (o = i), o > 0 && (e.rShiftTo(o, e), r.rShiftTo(o, r)); e.signum() > 0;)(i = e.getLowestSetBit()) > 0 && e.rShiftTo(i, e), (i = r.getLowestSetBit()) > 0 && r.rShiftTo(i, r), e.compareTo(r) >= 0 ? (e.subTo(r, e), e.rShiftTo(1, e)) : (r.subTo(e, r), r.rShiftTo(1, r));
+ return o > 0 && r.lShiftTo(o, r), r
+ }, s.prototype.isProbablePrime = function(t) {
+ var e, r = this.abs();
+ if (1 == r.t && r[0] <= A[A.length - 1]) {
+ for (e = 0; e < A.length; ++e)
+ if (r[0] == A[e]) return !0;
+ return !1
+ }
+ if (r.isEven()) return !1;
+ for (e = 1; e < A.length;) {
+ for (var n = A[e], i = e + 1; i < A.length && n < x;) n *= A[i++];
+ for (n = r.modInt(n); e < i;)
+ if (n % A[e++] == 0) return !1
+ }
+ return r.millerRabin(t)
+ }, s.int2char = h, s.ZERO = l(0), s.ONE = l(1), s.prototype.square = function() {
+ var t = a();
+ return this.squareTo(t), t
+ }, t.exports = s
+ },
+ 5682: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(8226)._,
+ o = (r(3200), r(1973)),
+ s = r(8226),
+ a = r(1768),
+ f = r(4538);
+ e.BigInteger = o, t.exports.Key = function() {
+ function t() {
+ this.n = null, this.e = 0, this.d = null, this.p = null, this.q = null, this.dmp1 = null, this.dmq1 = null, this.coeff = null
+ }
+ return t.prototype.setOptions = function(t) {
+ var e = a[t.signingScheme],
+ r = a[t.encryptionScheme];
+ e === r ? this.signingScheme = this.encryptionScheme = r.makeScheme(this, t) : (this.encryptionScheme = r.makeScheme(this, t), this.signingScheme = e.makeScheme(this, t)), this.encryptEngine = f.getEngine(this, t)
+ }, t.prototype.generate = function(t, e) {
+ var r = t >> 1;
+ this.e = parseInt(e, 16);
+ for (var n = new o(e, 16);;) {
+ for (; this.p = new o(t - r, 1), 0 !== this.p.subtract(o.ONE).gcd(n).compareTo(o.ONE) || !this.p.isProbablePrime(10););
+ for (; this.q = new o(r, 1), 0 !== this.q.subtract(o.ONE).gcd(n).compareTo(o.ONE) || !this.q.isProbablePrime(10););
+ if (this.p.compareTo(this.q) <= 0) {
+ var i = this.p;
+ this.p = this.q, this.q = i
+ }
+ var s = this.p.subtract(o.ONE),
+ a = this.q.subtract(o.ONE),
+ f = s.multiply(a);
+ if (0 === f.gcd(n).compareTo(o.ONE)) {
+ if (this.n = this.p.multiply(this.q), this.n.bitLength() < t) continue;
+ this.d = n.modInverse(f), this.dmp1 = this.d.mod(s), this.dmq1 = this.d.mod(a), this.coeff = this.q.modInverse(this.p);
+ break
+ }
+ }
+ this.$$recalculateCache()
+ }, t.prototype.setPrivate = function(t, e, r, n, a, f, u, c) {
+ if (!(t && e && r && t.length > 0 && (i.isNumber(e) || e.length > 0) && r.length > 0)) throw Error("Invalid RSA private key");
+ this.n = new o(t), this.e = i.isNumber(e) ? e : s.get32IntFromBuffer(e, 0), this.d = new o(r), n && a && f && u && c && (this.p = new o(n), this.q = new o(a), this.dmp1 = new o(f), this.dmq1 = new o(u), this.coeff = new o(c)), this.$$recalculateCache()
+ }, t.prototype.setPublic = function(t, e) {
+ if (!(t && e && t.length > 0 && (i.isNumber(e) || e.length > 0))) throw Error("Invalid RSA public key");
+ this.n = new o(t), this.e = i.isNumber(e) ? e : s.get32IntFromBuffer(e, 0), this.$$recalculateCache()
+ }, t.prototype.$doPrivate = function(t) {
+ if (this.p || this.q) return t.modPow(this.d, this.n);
+ for (var e = t.mod(this.p).modPow(this.dmp1, this.p), r = t.mod(this.q).modPow(this.dmq1, this.q); e.compareTo(r) < 0;) e = e.add(this.p);
+ return e.subtract(r).multiply(this.coeff).mod(this.p).multiply(this.q).add(r)
+ }, t.prototype.$doPublic = function(t) {
+ return t.modPowInt(this.e, this.n)
+ }, t.prototype.encrypt = function(t, e) {
+ var r = [],
+ i = [],
+ o = t.length,
+ s = Math.ceil(o / this.maxMessageLength) || 1,
+ a = Math.ceil(o / s || 1);
+ if (1 == s) r.push(t);
+ else
+ for (var f = 0; f < s; f++) r.push(t.slice(f * a, (f + 1) * a));
+ for (var u = 0; u < r.length; u++) i.push(this.encryptEngine.encrypt(r[u], e));
+ return n.concat(i)
+ }, t.prototype.decrypt = function(t, e) {
+ if (t.length % this.encryptedDataLength > 0) throw Error("Incorrect data or key");
+ for (var r = [], i = 0, o = 0, s = t.length / this.encryptedDataLength, a = 0; a < s; a++) o = (i = a * this.encryptedDataLength) + this.encryptedDataLength, r.push(this.encryptEngine.decrypt(t.slice(i, Math.min(o, t.length)), e));
+ return n.concat(r)
+ }, t.prototype.sign = function(t) {
+ return this.signingScheme.sign.apply(this.signingScheme, arguments)
+ }, t.prototype.verify = function(t, e, r) {
+ return this.signingScheme.verify.apply(this.signingScheme, arguments)
+ }, t.prototype.isPrivate = function() {
+ return !!(this.n && this.e && this.d)
+ }, t.prototype.isPublic = function(t) {
+ return this.n && this.e && !(t && this.d) || !1
+ }, Object.defineProperty(t.prototype, "keySize", {
+ get: function() {
+ return this.cache.keyBitLength
+ }
+ }), Object.defineProperty(t.prototype, "encryptedDataLength", {
+ get: function() {
+ return this.cache.keyByteLength
+ }
+ }), Object.defineProperty(t.prototype, "maxMessageLength", {
+ get: function() {
+ return this.encryptionScheme.maxMessageLength()
+ }
+ }), t.prototype.$$recalculateCache = function() {
+ this.cache = this.cache || {}, this.cache.keyBitLength = this.n.bitLength(), this.cache.keyByteLength = this.cache.keyBitLength + 6 >> 3
+ }, t
+ }()
+ },
+ 2487: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = (r(1973), r(3200));
+ t.exports = {
+ isEncryption: !0,
+ isSignature: !1
+ }, t.exports.digestLength = {
+ md4: 16,
+ md5: 16,
+ ripemd160: 20,
+ rmd160: 20,
+ sha1: 20,
+ sha224: 28,
+ sha256: 32,
+ sha384: 48,
+ sha512: 64
+ };
+ var o = "sha1";
+ t.exports.eme_oaep_mgf1 = function(e, r, s) {
+ s = s || o;
+ for (var a = t.exports.digestLength[s], f = Math.ceil(r / a), u = n.alloc(a * f), c = n.alloc(4), h = 0; h < f; ++h) {
+ var p = i.createHash(s);
+ p.update(e), c.writeUInt32BE(h, 0), p.update(c), p.digest().copy(u, h * a)
+ }
+ return u.slice(0, r)
+ }, t.exports.makeScheme = function(e, r) {
+ function s(t, e) {
+ this.key = t, this.options = e
+ }
+ return s.prototype.maxMessageLength = function() {
+ return this.key.encryptedDataLength - 2 * t.exports.digestLength[this.options.encryptionSchemeOptions.hash || o] - 2
+ }, s.prototype.encPad = function(e) {
+ var r = this.options.encryptionSchemeOptions.hash || o,
+ s = this.options.encryptionSchemeOptions.mgf || t.exports.eme_oaep_mgf1,
+ a = this.options.encryptionSchemeOptions.label || n.alloc(0),
+ f = this.key.encryptedDataLength,
+ u = t.exports.digestLength[r];
+ if (e.length > f - 2 * u - 2) throw new Error("Message is too long to encode into an encoded message with a length of " + f + " bytes, increaseemLen to fix this error (minimum value for given parameters and options: " + (f - 2 * u - 2) + ")");
+ var c = i.createHash(r);
+ c.update(a), c = c.digest();
+ var h = n.alloc(f - e.length - 2 * u - 1);
+ h.fill(0), h[h.length - 1] = 1;
+ for (var p = n.concat([c, h, e]), l = i.randomBytes(u), y = s(l, p.length, r), g = 0; g < p.length; g++) p[g] ^= y[g];
+ for (y = s(p, u, r), g = 0; g < l.length; g++) l[g] ^= y[g];
+ var d = n.alloc(1 + l.length + p.length);
+ return d[0] = 0, l.copy(d, 1), p.copy(d, 1 + l.length), d
+ }, s.prototype.encUnPad = function(e) {
+ var r = this.options.encryptionSchemeOptions.hash || o,
+ s = this.options.encryptionSchemeOptions.mgf || t.exports.eme_oaep_mgf1,
+ a = this.options.encryptionSchemeOptions.label || n.alloc(0),
+ f = t.exports.digestLength[r];
+ if (e.length < 2 * f + 2) throw new Error("Error decoding message, the supplied message is not long enough to be a valid OAEP encoded message");
+ for (var u = e.slice(1, f + 1), c = e.slice(1 + f), h = s(c, f, r), p = 0; p < u.length; p++) u[p] ^= h[p];
+ for (h = s(u, c.length, r), p = 0; p < c.length; p++) c[p] ^= h[p];
+ var l = i.createHash(r);
+ if (l.update(a), l = l.digest(), c.slice(0, f).toString("hex") != l.toString("hex")) throw new Error("Error decoding message, the lHash calculated from the label provided and the lHash in the encrypted data do not match.");
+ for (p = f; 0 === c[p++] && p < c.length;);
+ if (1 != c[p - 1]) throw new Error("Error decoding message, there is no padding message separator byte");
+ return c.slice(p)
+ }, new s(e, r)
+ }
+ },
+ 8290: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(1973),
+ o = r(3200),
+ s = r(7449),
+ a = {
+ md2: n.from("3020300c06082a864886f70d020205000410", "hex"),
+ md5: n.from("3020300c06082a864886f70d020505000410", "hex"),
+ sha1: n.from("3021300906052b0e03021a05000414", "hex"),
+ sha224: n.from("302d300d06096086480165030402040500041c", "hex"),
+ sha256: n.from("3031300d060960864801650304020105000420", "hex"),
+ sha384: n.from("3041300d060960864801650304020205000430", "hex"),
+ sha512: n.from("3051300d060960864801650304020305000440", "hex"),
+ ripemd160: n.from("3021300906052b2403020105000414", "hex"),
+ rmd160: n.from("3021300906052b2403020105000414", "hex")
+ },
+ f = {
+ ripemd160: "rmd160"
+ },
+ u = "sha256";
+ t.exports = {
+ isEncryption: !0,
+ isSignature: !0
+ }, t.exports.makeScheme = function(t, e) {
+ function r(t, e) {
+ this.key = t, this.options = e
+ }
+ return r.prototype.maxMessageLength = function() {
+ return this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == s.RSA_NO_PADDING ? this.key.encryptedDataLength : this.key.encryptedDataLength - 11
+ }, r.prototype.encPad = function(t, e) {
+ var r;
+ if (e = e || {}, t.length > this.key.maxMessageLength) throw new Error("Message too long for RSA (n=" + this.key.encryptedDataLength + ", l=" + t.length + ")");
+ if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == s.RSA_NO_PADDING) return (r = n.alloc(this.key.maxMessageLength - t.length)).fill(0), n.concat([r, t]);
+ if (1 === e.type) return (r = n.alloc(this.key.encryptedDataLength - t.length - 1)).fill(255, 0, r.length - 1), r[0] = 1, r[r.length - 1] = 0, n.concat([r, t]);
+ (r = n.alloc(this.key.encryptedDataLength - t.length))[0] = 0, r[1] = 2;
+ for (var i = o.randomBytes(r.length - 3), a = 0; a < i.length; a++) {
+ for (var f = i[a]; 0 === f;) f = o.randomBytes(1)[0];
+ r[a + 2] = f
+ }
+ return r[r.length - 1] = 0, n.concat([r, t])
+ }, r.prototype.encUnPad = function(t, e) {
+ e = e || {};
+ var r = 0;
+ if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == s.RSA_NO_PADDING) return "function" == typeof t.lastIndexOf ? t.slice(t.lastIndexOf("\0") + 1, t.length) : t.slice(String.prototype.lastIndexOf.call(t, "\0") + 1, t.length);
+ if (t.length < 4) return null;
+ if (1 === e.type) {
+ if (0 !== t[0] || 1 !== t[1]) return null;
+ for (r = 3; 0 !== t[r];)
+ if (255 != t[r] || ++r >= t.length) return null
+ } else {
+ if (0 !== t[0] || 2 !== t[1]) return null;
+ for (r = 3; 0 !== t[r];)
+ if (++r >= t.length) return null
+ }
+ return t.slice(r + 1, t.length)
+ }, r.prototype.sign = function(t) {
+ var e = this.options.signingSchemeOptions.hash || u;
+ if ("browser" === this.options.environment) {
+ e = f[e] || e;
+ var r = o.createHash(e);
+ r.update(t);
+ var n = this.pkcs1pad(r.digest(), e);
+ return this.key.$doPrivate(new i(n)).toBuffer(this.key.encryptedDataLength)
+ }
+ var s = o.createSign("RSA-" + e.toUpperCase());
+ return s.update(t), s.sign(this.options.rsaUtils.exportKey("private"))
+ }, r.prototype.verify = function(t, e, r) {
+ if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == s.RSA_NO_PADDING) return !1;
+ var a = this.options.signingSchemeOptions.hash || u;
+ if ("browser" === this.options.environment) {
+ a = f[a] || a, r && (e = n.from(e, r));
+ var c = o.createHash(a);
+ c.update(t);
+ var h = this.pkcs1pad(c.digest(), a);
+ return this.key.$doPublic(new i(e)).toBuffer().toString("hex") == h.toString("hex")
+ }
+ var p = o.createVerify("RSA-" + a.toUpperCase());
+ return p.update(t), p.verify(this.options.rsaUtils.exportKey("public"), e, r)
+ }, r.prototype.pkcs0pad = function(t) {
+ var e = n.alloc(this.key.maxMessageLength - t.length);
+ return e.fill(0), n.concat([e, t])
+ }, r.prototype.pkcs0unpad = function(t) {
+ return "function" == typeof t.lastIndexOf ? t.slice(t.lastIndexOf("\0") + 1, t.length) : t.slice(String.prototype.lastIndexOf.call(t, "\0") + 1, t.length)
+ }, r.prototype.pkcs1pad = function(t, e) {
+ var r = a[e];
+ if (!r) throw Error("Unsupported hash algorithm");
+ var i = n.concat([r, t]);
+ if (i.length + 10 > this.key.encryptedDataLength) throw Error("Key is too short for signing algorithm (" + e + ")");
+ var o = n.alloc(this.key.encryptedDataLength - i.length - 1);
+ return o.fill(255, 0, o.length - 1), o[0] = 1, o[o.length - 1] = 0, n.concat([o, i])
+ }, new r(t, e)
+ }
+ },
+ 4414: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(1973),
+ o = r(3200);
+ t.exports = {
+ isEncryption: !1,
+ isSignature: !0
+ };
+ var s = "sha1";
+ t.exports.makeScheme = function(t, e) {
+ var a = r(1768).pkcs1_oaep;
+
+ function f(t, e) {
+ this.key = t, this.options = e
+ }
+ return f.prototype.sign = function(t) {
+ var e = o.createHash(this.options.signingSchemeOptions.hash || s);
+ e.update(t);
+ var r = this.emsa_pss_encode(e.digest(), this.key.keySize - 1);
+ return this.key.$doPrivate(new i(r)).toBuffer(this.key.encryptedDataLength)
+ }, f.prototype.verify = function(t, e, r) {
+ r && (e = n.from(e, r)), e = new i(e);
+ var a = Math.ceil((this.key.keySize - 1) / 8),
+ f = this.key.$doPublic(e).toBuffer(a),
+ u = o.createHash(this.options.signingSchemeOptions.hash || s);
+ return u.update(t), this.emsa_pss_verify(u.digest(), f, this.key.keySize - 1)
+ }, f.prototype.emsa_pss_encode = function(t, e) {
+ var r = this.options.signingSchemeOptions.hash || s,
+ i = this.options.signingSchemeOptions.mgf || a.eme_oaep_mgf1,
+ f = this.options.signingSchemeOptions.saltLength || 20,
+ u = a.digestLength[r],
+ c = Math.ceil(e / 8);
+ if (c < u + f + 2) throw new Error("Output length passed to emBits(" + e + ") is too small for the options specified(" + r + ", " + f + "). To fix this issue increase the value of emBits. (minimum size: " + (8 * u + 8 * f + 9) + ")");
+ var h = o.randomBytes(f),
+ p = n.alloc(8 + u + f);
+ p.fill(0, 0, 8), t.copy(p, 8), h.copy(p, 8 + t.length);
+ var l = o.createHash(r);
+ l.update(p), l = l.digest();
+ var y = n.alloc(c - h.length - u - 2);
+ y.fill(0);
+ var g = n.alloc(y.length + 1 + h.length);
+ y.copy(g), g[y.length] = 1, h.copy(g, y.length + 1);
+ for (var d = i(l, g.length, r), v = n.alloc(g.length), m = 0; m < d.length; m++) v[m] = g[m] ^ d[m];
+ var S = 8 * c - e,
+ _ = 255 ^ 255 >> 8 - S << 8 - S;
+ v[0] = v[0] & _;
+ var b = n.alloc(v.length + l.length + 1);
+ return v.copy(b, 0), l.copy(b, v.length), b[b.length - 1] = 188, b
+ }, f.prototype.emsa_pss_verify = function(t, e, r) {
+ var i = this.options.signingSchemeOptions.hash || s,
+ f = this.options.signingSchemeOptions.mgf || a.eme_oaep_mgf1,
+ u = this.options.signingSchemeOptions.saltLength || 20,
+ c = a.digestLength[i],
+ h = Math.ceil(r / 8);
+ if (h < c + u + 2 || 188 != e[e.length - 1]) return !1;
+ var p = n.alloc(h - c - 1);
+ e.copy(p, 0, 0, h - c - 1);
+ for (var l = 0, y = 0, g = 8 * h - r; y < g; y++) l |= 1 << 7 - y;
+ if (p[0] & l) return !1;
+ var d = e.slice(h - c - 1, h - 1),
+ v = f(d, p.length, i);
+ for (y = 0; y < p.length; y++) p[y] ^= v[y];
+ for (l = 255 ^ 255 >> 8 - (g = 8 * h - r) << 8 - g, p[0] = p[0] & l, y = 0; 0 === p[y] && y < p.length; y++);
+ if (1 != p[y]) return !1;
+ var m = p.slice(p.length - u),
+ S = n.alloc(8 + c + u);
+ S.fill(0, 0, 8), t.copy(S, 8), m.copy(S, 8 + t.length);
+ var _ = o.createHash(i);
+ return _.update(S), _ = _.digest(), d.toString("hex") === _.toString("hex")
+ }, new f(t, e)
+ }
+ },
+ 1768: (t, e, r) => {
+ t.exports = {
+ pkcs1: r(8290),
+ pkcs1_oaep: r(2487),
+ pss: r(4414),
+ isEncryption: function(e) {
+ return t.exports[e] && t.exports[e].isEncryption
+ },
+ isSignature: function(e) {
+ return t.exports[e] && t.exports[e].isSignature
+ }
+ }
+ },
+ 8226: (t, e, r) => {
+ var n = r(5606);
+ r(3200), t.exports.linebrk = function(t, e) {
+ for (var r = "", n = 0; n + e < t.length;) r += t.substring(n, n + e) + "\n", n += e;
+ return r + t.substring(n, t.length)
+ }, t.exports.detectEnvironment = function() {
+ return "browser";
+ "undefined" == typeof window || !window || n && "node" === n.title ? "node" : "browser"
+ }, t.exports.get32IntFromBuffer = function(t, e) {
+ var r;
+ if (e = e || 0, (r = t.length - e) > 0) {
+ if (r >= 4) return t.readUIntBE(e, r);
+ for (var n = 0, i = e + r, o = 0; i > e; i--, o += 2) n += t[i - 1] * Math.pow(16, o);
+ return n
+ }
+ return NaN
+ }, t.exports._ = {
+ isObject: function(t) {
+ var e = typeof t;
+ return !!t && ("object" == e || "function" == e)
+ },
+ isString: function(t) {
+ return "string" == typeof t || t instanceof String
+ },
+ isNumber: function(t) {
+ return "number" == typeof t || !isNaN(parseFloat(t)) && isFinite(t)
+ },
+ omit: function(t, e) {
+ var r = {};
+ for (var n in t) t.hasOwnProperty(n) && n !== e && (r[n] = t[n]);
+ return r
+ }
+ }, t.exports.trimSurroundingText = function(t, e, r) {
+ var n = 0,
+ i = t.length,
+ o = t.indexOf(e);
+ o >= 0 && (n = o + e.length);
+ var s = t.indexOf(r, o);
+ return s >= 0 && (i = s), t.substring(n, i)
+ }
+ },
+ 8875: (t, e, r) => {
+ "use strict";
+ var n;
+ if (!Object.keys) {
+ var i = Object.prototype.hasOwnProperty,
+ o = Object.prototype.toString,
+ s = r(1093),
+ a = Object.prototype.propertyIsEnumerable,
+ f = !a.call({
+ toString: null
+ }, "toString"),
+ u = a.call((function() {}), "prototype"),
+ c = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"],
+ h = function(t) {
+ var e = t.constructor;
+ return e && e.prototype === t
+ },
+ p = {
+ $applicationCache: !0,
+ $console: !0,
+ $external: !0,
+ $frame: !0,
+ $frameElement: !0,
+ $frames: !0,
+ $innerHeight: !0,
+ $innerWidth: !0,
+ $onmozfullscreenchange: !0,
+ $onmozfullscreenerror: !0,
+ $outerHeight: !0,
+ $outerWidth: !0,
+ $pageXOffset: !0,
+ $pageYOffset: !0,
+ $parent: !0,
+ $scrollLeft: !0,
+ $scrollTop: !0,
+ $scrollX: !0,
+ $scrollY: !0,
+ $self: !0,
+ $webkitIndexedDB: !0,
+ $webkitStorageInfo: !0,
+ $window: !0
+ },
+ l = function() {
+ if ("undefined" == typeof window) return !1;
+ for (var t in window) try {
+ if (!p["$" + t] && i.call(window, t) && null !== window[t] && "object" == typeof window[t]) try {
+ h(window[t])
+ } catch (t) {
+ return !0
+ }
+ } catch (t) {
+ return !0
+ }
+ return !1
+ }();
+ n = function(t) {
+ var e = null !== t && "object" == typeof t,
+ r = "[object Function]" === o.call(t),
+ n = s(t),
+ a = e && "[object String]" === o.call(t),
+ p = [];
+ if (!e && !r && !n) throw new TypeError("Object.keys called on a non-object");
+ var y = u && r;
+ if (a && t.length > 0 && !i.call(t, 0))
+ for (var g = 0; g < t.length; ++g) p.push(String(g));
+ if (n && t.length > 0)
+ for (var d = 0; d < t.length; ++d) p.push(String(d));
+ else
+ for (var v in t) y && "prototype" === v || !i.call(t, v) || p.push(String(v));
+ if (f)
+ for (var m = function(t) {
+ if ("undefined" == typeof window || !l) return h(t);
+ try {
+ return h(t)
+ } catch (t) {
+ return !1
+ }
+ }(t), S = 0; S < c.length; ++S) m && "constructor" === c[S] || !i.call(t, c[S]) || p.push(c[S]);
+ return p
+ }
+ }
+ t.exports = n
+ },
+ 1189: (t, e, r) => {
+ "use strict";
+ var n = Array.prototype.slice,
+ i = r(1093),
+ o = Object.keys,
+ s = o ? function(t) {
+ return o(t)
+ } : r(8875),
+ a = Object.keys;
+ s.shim = function() {
+ if (Object.keys) {
+ var t = function() {
+ var t = Object.keys(arguments);
+ return t && t.length === arguments.length
+ }(1, 2);
+ t || (Object.keys = function(t) {
+ return i(t) ? a(n.call(t)) : a(t)
+ })
+ } else Object.keys = s;
+ return Object.keys || s
+ }, t.exports = s
+ },
+ 1093: t => {
+ "use strict";
+ var e = Object.prototype.toString;
+ t.exports = function(t) {
+ var r = e.call(t),
+ n = "[object Arguments]" === r;
+ return n || (n = "[object Array]" !== r && null !== t && "object" == typeof t && "number" == typeof t.length && t.length >= 0 && "[object Function]" === e.call(t.callee)), n
+ }
+ },
+ 8403: (t, e, r) => {
+ "use strict";
+ var n = r(1189),
+ i = r(1333)(),
+ o = r(8075),
+ s = Object,
+ a = o("Array.prototype.push"),
+ f = o("Object.prototype.propertyIsEnumerable"),
+ u = i ? Object.getOwnPropertySymbols : null;
+ t.exports = function(t, e) {
+ if (null == t) throw new TypeError("target must be an object");
+ var r = s(t);
+ if (1 === arguments.length) return r;
+ for (var o = 1; o < arguments.length; ++o) {
+ var c = s(arguments[o]),
+ h = n(c),
+ p = i && (Object.getOwnPropertySymbols || u);
+ if (p)
+ for (var l = p(c), y = 0; y < l.length; ++y) {
+ var g = l[y];
+ f(c, g) && a(h, g)
+ }
+ for (var d = 0; d < h.length; ++d) {
+ var v = h[d];
+ if (f(c, v)) {
+ var m = c[v];
+ r[v] = m
+ }
+ }
+ }
+ return r
+ }
+ },
+ 1514: (t, e, r) => {
+ "use strict";
+ var n = r(8403);
+ t.exports = function() {
+ return Object.assign ? function() {
+ if (!Object.assign) return !1;
+ for (var t = "abcdefghijklmnopqrst", e = t.split(""), r = {}, n = 0; n < e.length; ++n) r[e[n]] = e[n];
+ var i = Object.assign({}, r),
+ o = "";
+ for (var s in i) o += s;
+ return t !== o
+ }() || function() {
+ if (!Object.assign || !Object.preventExtensions) return !1;
+ var t = Object.preventExtensions({
+ 1: 2
+ });
+ try {
+ Object.assign(t, "xy")
+ } catch (e) {
+ return "y" === t[1]
+ }
+ return !1
+ }() ? n : Object.assign : n
+ }
+ },
+ 5606: t => {
+ var e, r, n = t.exports = {};
+
+ function i() {
+ throw new Error("setTimeout has not been defined")
+ }
+
+ function o() {
+ throw new Error("clearTimeout has not been defined")
+ }
+
+ function s(t) {
+ if (e === setTimeout) return setTimeout(t, 0);
+ if ((e === i || !e) && setTimeout) return e = setTimeout, setTimeout(t, 0);
+ try {
+ return e(t, 0)
+ } catch (r) {
+ try {
+ return e.call(null, t, 0)
+ } catch (r) {
+ return e.call(this, t, 0)
+ }
+ }
+ }! function() {
+ try {
+ e = "function" == typeof setTimeout ? setTimeout : i
+ } catch (t) {
+ e = i
+ }
+ try {
+ r = "function" == typeof clearTimeout ? clearTimeout : o
+ } catch (t) {
+ r = o
+ }
+ }();
+ var a, f = [],
+ u = !1,
+ c = -1;
+
+ function h() {
+ u && a && (u = !1, a.length ? f = a.concat(f) : c = -1, f.length && p())
+ }
+
+ function p() {
+ if (!u) {
+ var t = s(h);
+ u = !0;
+ for (var e = f.length; e;) {
+ for (a = f, f = []; ++c < e;) a && a[c].run();
+ c = -1, e = f.length
+ }
+ a = null, u = !1,
+ function(t) {
+ if (r === clearTimeout) return clearTimeout(t);
+ if ((r === o || !r) && clearTimeout) return r = clearTimeout, clearTimeout(t);
+ try {
+ return r(t)
+ } catch (e) {
+ try {
+ return r.call(null, t)
+ } catch (e) {
+ return r.call(this, t)
+ }
+ }
+ }(t)
+ }
+ }
+
+ function l(t, e) {
+ this.fun = t, this.array = e
+ }
+
+ function y() {}
+ n.nextTick = function(t) {
+ var e = new Array(arguments.length - 1);
+ if (arguments.length > 1)
+ for (var r = 1; r < arguments.length; r++) e[r - 1] = arguments[r];
+ f.push(new l(t, e)), 1 !== f.length || u || s(p)
+ }, l.prototype.run = function() {
+ this.fun.apply(null, this.array)
+ }, n.title = "browser", n.browser = !0, n.env = {}, n.argv = [], n.version = "", n.versions = {}, n.on = y, n.addListener = y, n.once = y, n.off = y, n.removeListener = y, n.removeAllListeners = y, n.emit = y, n.prependListener = y, n.prependOnceListener = y, n.listeners = function(t) {
+ return []
+ }, n.binding = function(t) {
+ throw new Error("process.binding is not supported")
+ }, n.cwd = function() {
+ return "/"
+ }, n.chdir = function(t) {
+ throw new Error("process.chdir is not supported")
+ }, n.umask = function() {
+ return 0
+ }
+ },
+ 4774: (t, e, r) => {
+ "use strict";
+ var n, i = r(5606),
+ o = r(8287),
+ s = o.Buffer,
+ a = {};
+ for (n in o) o.hasOwnProperty(n) && "SlowBuffer" !== n && "Buffer" !== n && (a[n] = o[n]);
+ var f = a.Buffer = {};
+ for (n in s) s.hasOwnProperty(n) && "allocUnsafe" !== n && "allocUnsafeSlow" !== n && (f[n] = s[n]);
+ if (a.Buffer.prototype = s.prototype, f.from && f.from !== Uint8Array.from || (f.from = function(t, e, r) {
+ if ("number" == typeof t) throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof t);
+ if (t && void 0 === t.length) throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t);
+ return s(t, e, r)
+ }), f.alloc || (f.alloc = function(t, e, r) {
+ if ("number" != typeof t) throw new TypeError('The "size" argument must be of type number. Received type ' + typeof t);
+ if (t < 0 || t >= 2 * (1 << 30)) throw new RangeError('The value "' + t + '" is invalid for option "size"');
+ var n = s(t);
+ return e && 0 !== e.length ? "string" == typeof r ? n.fill(e, r) : n.fill(e) : n.fill(0), n
+ }), !a.kStringMaxLength) try {
+ a.kStringMaxLength = i.binding("buffer").kStringMaxLength
+ } catch (t) {}
+ a.constants || (a.constants = {
+ MAX_LENGTH: a.kMaxLength
+ }, a.kStringMaxLength && (a.constants.MAX_STRING_LENGTH = a.kStringMaxLength)), t.exports = a
+ },
+ 6897: (t, e, r) => {
+ "use strict";
+ var n = r(453),
+ i = r(41),
+ o = r(592)(),
+ s = r(5795),
+ a = r(9675),
+ f = n("%Math.floor%");
+ t.exports = function(t, e) {
+ if ("function" != typeof t) throw new a("`fn` is not a function");
+ if ("number" != typeof e || e < 0 || e > 4294967295 || f(e) !== e) throw new a("`length` must be a positive 32-bit integer");
+ var r = arguments.length > 2 && !!arguments[2],
+ n = !0,
+ u = !0;
+ if ("length" in t && s) {
+ var c = s(t, "length");
+ c && !c.configurable && (n = !1), c && !c.writable && (u = !1)
+ }
+ return (n || u || !r) && (o ? i(t, "length", e, !0, !0) : i(t, "length", e)), t
+ }
+ },
+ 3200: (t, e, r) => {
+ var n = r(8287).Buffer,
+ i = r(1396),
+ o = {
+ randomBytes: function(t) {
+ for (var e = [], r = 0; r < t; r++) e.push(Math.floor(256 * Math.random()));
+ return n.from(e)
+ },
+ createHash(t) {
+ let e = n.from([]);
+ return {
+ update: function(t) {
+ return e = n.concat([e, t]), this
+ },
+ digest: function() {
+ let r = i[t.toUpperCase()](i.lib.WordArray.create(new Uint8Array(e))).toString();
+ return n.from(r, "hex")
+ }
+ }
+ }
+ };
+ t.exports = o
+ },
+ 7033: (t, e, r) => {
+ var n = r(8287).Buffer;
+ const i = r(3229);
+ let o = {
+ outputEncoding: "",
+ PublicFormat: "pkcs1-public",
+ PrivateFormat: "pkcs1-private",
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1"
+ }
+ };
+ t.exports = {
+ NodeRSA: i,
+ encryptRSAWithPublicKey: function(t, e, r = {}) {
+ return r = Object.assign({}, o, r), new i(e, r.PublicFormat, r.options).encrypt(t, r.outEncoding || "base64")
+ },
+ encryptRSAWithPrivateKey: function(t, e, r = {}) {
+ return r = Object.assign({}, o, r), new i(e, r.PrivateFormat, r.options).encryptPrivate(t, r.outputEncoding || "base64")
+ },
+ decryptRSAWithPublicKey: function(t, e, r = {}) {
+ return r = Object.assign({}, o, r), new i(e, r.PublicEncoding, r.options).decryptPublic(t, r.outEncoding || "utf8")
+ },
+ decryptRSAWithPrivateKey: function(t, e, r = {}) {
+ return r = Object.assign({}, o, r), new i(e, r.PrivateEncoding, r.options).decrypt(t, r.outEncoding || "utf8")
+ },
+ sign: function(t, e, r = {}) {
+ return r = Object.assign({}, o, r), new i(e, r.PrivateEncoding, r.options).sign(t, r.outEncoding || "base64")
+ },
+ verify: function(t, e, r, s = {}) {
+ return "string" == typeof e && e.match(/^([0-9a-fA-F]{2})*$/) ? e = n.from(e, "hex") : "string" == typeof e && (e = n.from(e, "base64")), s = Object.assign({}, o, s), new i(r, s.PublicEncoding, s.options).verify(t, e)
+ }
+ }
+ },
+ 7449: t => {
+ "use strict";
+ t.exports = JSON.parse('{"O_RDONLY":0,"O_WRONLY":1,"O_RDWR":2,"S_IFMT":61440,"S_IFREG":32768,"S_IFDIR":16384,"S_IFCHR":8192,"S_IFBLK":24576,"S_IFIFO":4096,"S_IFLNK":40960,"S_IFSOCK":49152,"O_CREAT":512,"O_EXCL":2048,"O_NOCTTY":131072,"O_TRUNC":1024,"O_APPEND":8,"O_DIRECTORY":1048576,"O_NOFOLLOW":256,"O_SYNC":128,"O_SYMLINK":2097152,"O_NONBLOCK":4,"S_IRWXU":448,"S_IRUSR":256,"S_IWUSR":128,"S_IXUSR":64,"S_IRWXG":56,"S_IRGRP":32,"S_IWGRP":16,"S_IXGRP":8,"S_IRWXO":7,"S_IROTH":4,"S_IWOTH":2,"S_IXOTH":1,"E2BIG":7,"EACCES":13,"EADDRINUSE":48,"EADDRNOTAVAIL":49,"EAFNOSUPPORT":47,"EAGAIN":35,"EALREADY":37,"EBADF":9,"EBADMSG":94,"EBUSY":16,"ECANCELED":89,"ECHILD":10,"ECONNABORTED":53,"ECONNREFUSED":61,"ECONNRESET":54,"EDEADLK":11,"EDESTADDRREQ":39,"EDOM":33,"EDQUOT":69,"EEXIST":17,"EFAULT":14,"EFBIG":27,"EHOSTUNREACH":65,"EIDRM":90,"EILSEQ":92,"EINPROGRESS":36,"EINTR":4,"EINVAL":22,"EIO":5,"EISCONN":56,"EISDIR":21,"ELOOP":62,"EMFILE":24,"EMLINK":31,"EMSGSIZE":40,"EMULTIHOP":95,"ENAMETOOLONG":63,"ENETDOWN":50,"ENETRESET":52,"ENETUNREACH":51,"ENFILE":23,"ENOBUFS":55,"ENODATA":96,"ENODEV":19,"ENOENT":2,"ENOEXEC":8,"ENOLCK":77,"ENOLINK":97,"ENOMEM":12,"ENOMSG":91,"ENOPROTOOPT":42,"ENOSPC":28,"ENOSR":98,"ENOSTR":99,"ENOSYS":78,"ENOTCONN":57,"ENOTDIR":20,"ENOTEMPTY":66,"ENOTSOCK":38,"ENOTSUP":45,"ENOTTY":25,"ENXIO":6,"EOPNOTSUPP":102,"EOVERFLOW":84,"EPERM":1,"EPIPE":32,"EPROTO":100,"EPROTONOSUPPORT":43,"EPROTOTYPE":41,"ERANGE":34,"EROFS":30,"ESPIPE":29,"ESRCH":3,"ESTALE":70,"ETIME":101,"ETIMEDOUT":60,"ETXTBSY":26,"EWOULDBLOCK":35,"EXDEV":18,"SIGHUP":1,"SIGINT":2,"SIGQUIT":3,"SIGILL":4,"SIGTRAP":5,"SIGABRT":6,"SIGIOT":6,"SIGBUS":10,"SIGFPE":8,"SIGKILL":9,"SIGUSR1":30,"SIGSEGV":11,"SIGUSR2":31,"SIGPIPE":13,"SIGALRM":14,"SIGTERM":15,"SIGCHLD":20,"SIGCONT":19,"SIGSTOP":17,"SIGTSTP":18,"SIGTTIN":21,"SIGTTOU":22,"SIGURG":16,"SIGXCPU":24,"SIGXFSZ":25,"SIGVTALRM":26,"SIGPROF":27,"SIGWINCH":28,"SIGIO":23,"SIGSYS":12,"SSL_OP_ALL":2147486719,"SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION":262144,"SSL_OP_CIPHER_SERVER_PREFERENCE":4194304,"SSL_OP_CISCO_ANYCONNECT":32768,"SSL_OP_COOKIE_EXCHANGE":8192,"SSL_OP_CRYPTOPRO_TLSEXT_BUG":2147483648,"SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS":2048,"SSL_OP_EPHEMERAL_RSA":0,"SSL_OP_LEGACY_SERVER_CONNECT":4,"SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER":32,"SSL_OP_MICROSOFT_SESS_ID_BUG":1,"SSL_OP_MSIE_SSLV2_RSA_PADDING":0,"SSL_OP_NETSCAPE_CA_DN_BUG":536870912,"SSL_OP_NETSCAPE_CHALLENGE_BUG":2,"SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG":1073741824,"SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG":8,"SSL_OP_NO_COMPRESSION":131072,"SSL_OP_NO_QUERY_MTU":4096,"SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION":65536,"SSL_OP_NO_SSLv2":16777216,"SSL_OP_NO_SSLv3":33554432,"SSL_OP_NO_TICKET":16384,"SSL_OP_NO_TLSv1":67108864,"SSL_OP_NO_TLSv1_1":268435456,"SSL_OP_NO_TLSv1_2":134217728,"SSL_OP_PKCS1_CHECK_1":0,"SSL_OP_PKCS1_CHECK_2":0,"SSL_OP_SINGLE_DH_USE":1048576,"SSL_OP_SINGLE_ECDH_USE":524288,"SSL_OP_SSLEAY_080_CLIENT_DH_BUG":128,"SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG":0,"SSL_OP_TLS_BLOCK_PADDING_BUG":512,"SSL_OP_TLS_D5_BUG":256,"SSL_OP_TLS_ROLLBACK_BUG":8388608,"ENGINE_METHOD_DSA":2,"ENGINE_METHOD_DH":4,"ENGINE_METHOD_RAND":8,"ENGINE_METHOD_ECDH":16,"ENGINE_METHOD_ECDSA":32,"ENGINE_METHOD_CIPHERS":64,"ENGINE_METHOD_DIGESTS":128,"ENGINE_METHOD_STORE":256,"ENGINE_METHOD_PKEY_METHS":512,"ENGINE_METHOD_PKEY_ASN1_METHS":1024,"ENGINE_METHOD_ALL":65535,"ENGINE_METHOD_NONE":0,"DH_CHECK_P_NOT_SAFE_PRIME":2,"DH_CHECK_P_NOT_PRIME":1,"DH_UNABLE_TO_CHECK_GENERATOR":4,"DH_NOT_SUITABLE_GENERATOR":8,"NPN_ENABLED":1,"RSA_PKCS1_PADDING":1,"RSA_SSLV23_PADDING":2,"RSA_NO_PADDING":3,"RSA_PKCS1_OAEP_PADDING":4,"RSA_X931_PADDING":5,"RSA_PKCS1_PSS_PADDING":6,"POINT_CONVERSION_COMPRESSED":2,"POINT_CONVERSION_UNCOMPRESSED":4,"POINT_CONVERSION_HYBRID":6,"F_OK":0,"R_OK":4,"W_OK":2,"X_OK":1,"UV_UDP_REUSEADDR":4}')
+ }
+ },
+ e = {};
+
+ function r(n) {
+ var i = e[n];
+ if (void 0 !== i) return i.exports;
+ var o = e[n] = {
+ exports: {}
+ };
+ return t[n].call(o.exports, o, o.exports, r), o.exports
+ }
+ return r.g = function() {
+ if ("object" == typeof globalThis) return globalThis;
+ try {
+ return this || new Function("return this")()
+ } catch (t) {
+ if ("object" == typeof window) return window
+ }
+ }(), r(7033)
+})()));
\ No newline at end of file
diff --git a/JS/pako.min.js b/JS/pako.min.js
new file mode 100644
index 0000000..09522f2
--- /dev/null
+++ b/JS/pako.min.js
@@ -0,0 +1,1439 @@
+/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ ! function(t, e) {
+ "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).pako = {})
+}(this, (function(t) {
+ "use strict";
+
+ function e(t) {
+ let e = t.length;
+ for (; --e >= 0;) t[e] = 0
+ }
+ const a = 256,
+ i = 286,
+ n = 30,
+ s = 15,
+ r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]),
+ o = new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]),
+ l = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]),
+ h = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),
+ d = new Array(576);
+ e(d);
+ const _ = new Array(60);
+ e(_);
+ const f = new Array(512);
+ e(f);
+ const c = new Array(256);
+ e(c);
+ const u = new Array(29);
+ e(u);
+ const w = new Array(n);
+
+ function m(t, e, a, i, n) {
+ this.static_tree = t, this.extra_bits = e, this.extra_base = a, this.elems = i, this.max_length = n, this.has_stree = t && t.length
+ }
+ let b, g, p;
+
+ function k(t, e) {
+ this.dyn_tree = t, this.max_code = 0, this.stat_desc = e
+ }
+ e(w);
+ const v = t => t < 256 ? f[t] : f[256 + (t >>> 7)],
+ y = (t, e) => {
+ t.pending_buf[t.pending++] = 255 & e, t.pending_buf[t.pending++] = e >>> 8 & 255
+ },
+ x = (t, e, a) => {
+ t.bi_valid > 16 - a ? (t.bi_buf |= e << t.bi_valid & 65535, y(t, t.bi_buf), t.bi_buf = e >> 16 - t.bi_valid, t.bi_valid += a - 16) : (t.bi_buf |= e << t.bi_valid & 65535, t.bi_valid += a)
+ },
+ z = (t, e, a) => {
+ x(t, a[2 * e], a[2 * e + 1])
+ },
+ A = (t, e) => {
+ let a = 0;
+ do {
+ a |= 1 & t, t >>>= 1, a <<= 1
+ } while (--e > 0);
+ return a >>> 1
+ },
+ E = (t, e, a) => {
+ const i = new Array(16);
+ let n, r, o = 0;
+ for (n = 1; n <= s; n++) o = o + a[n - 1] << 1, i[n] = o;
+ for (r = 0; r <= e; r++) {
+ let e = t[2 * r + 1];
+ 0 !== e && (t[2 * r] = A(i[e]++, e))
+ }
+ },
+ R = t => {
+ let e;
+ for (e = 0; e < i; e++) t.dyn_ltree[2 * e] = 0;
+ for (e = 0; e < n; e++) t.dyn_dtree[2 * e] = 0;
+ for (e = 0; e < 19; e++) t.bl_tree[2 * e] = 0;
+ t.dyn_ltree[512] = 1, t.opt_len = t.static_len = 0, t.sym_next = t.matches = 0
+ },
+ Z = t => {
+ t.bi_valid > 8 ? y(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), t.bi_buf = 0, t.bi_valid = 0
+ },
+ U = (t, e, a, i) => {
+ const n = 2 * e,
+ s = 2 * a;
+ return t[n] < t[s] || t[n] === t[s] && i[e] <= i[a]
+ },
+ S = (t, e, a) => {
+ const i = t.heap[a];
+ let n = a << 1;
+ for (; n <= t.heap_len && (n < t.heap_len && U(e, t.heap[n + 1], t.heap[n], t.depth) && n++, !U(e, i, t.heap[n], t.depth));) t.heap[a] = t.heap[n], a = n, n <<= 1;
+ t.heap[a] = i
+ },
+ D = (t, e, i) => {
+ let n, s, l, h, d = 0;
+ if (0 !== t.sym_next)
+ do {
+ n = 255 & t.pending_buf[t.sym_buf + d++], n += (255 & t.pending_buf[t.sym_buf + d++]) << 8, s = t.pending_buf[t.sym_buf + d++], 0 === n ? z(t, s, e) : (l = c[s], z(t, l + a + 1, e), h = r[l], 0 !== h && (s -= u[l], x(t, s, h)), n--, l = v(n), z(t, l, i), h = o[l], 0 !== h && (n -= w[l], x(t, n, h)))
+ } while (d < t.sym_next);
+ z(t, 256, e)
+ },
+ T = (t, e) => {
+ const a = e.dyn_tree,
+ i = e.stat_desc.static_tree,
+ n = e.stat_desc.has_stree,
+ r = e.stat_desc.elems;
+ let o, l, h, d = -1;
+ for (t.heap_len = 0, t.heap_max = 573, o = 0; o < r; o++) 0 !== a[2 * o] ? (t.heap[++t.heap_len] = d = o, t.depth[o] = 0) : a[2 * o + 1] = 0;
+ for (; t.heap_len < 2;) h = t.heap[++t.heap_len] = d < 2 ? ++d : 0, a[2 * h] = 1, t.depth[h] = 0, t.opt_len--, n && (t.static_len -= i[2 * h + 1]);
+ for (e.max_code = d, o = t.heap_len >> 1; o >= 1; o--) S(t, a, o);
+ h = r;
+ do {
+ o = t.heap[1], t.heap[1] = t.heap[t.heap_len--], S(t, a, 1), l = t.heap[1], t.heap[--t.heap_max] = o, t.heap[--t.heap_max] = l, a[2 * h] = a[2 * o] + a[2 * l], t.depth[h] = (t.depth[o] >= t.depth[l] ? t.depth[o] : t.depth[l]) + 1, a[2 * o + 1] = a[2 * l + 1] = h, t.heap[1] = h++, S(t, a, 1)
+ } while (t.heap_len >= 2);
+ t.heap[--t.heap_max] = t.heap[1], ((t, e) => {
+ const a = e.dyn_tree,
+ i = e.max_code,
+ n = e.stat_desc.static_tree,
+ r = e.stat_desc.has_stree,
+ o = e.stat_desc.extra_bits,
+ l = e.stat_desc.extra_base,
+ h = e.stat_desc.max_length;
+ let d, _, f, c, u, w, m = 0;
+ for (c = 0; c <= s; c++) t.bl_count[c] = 0;
+ for (a[2 * t.heap[t.heap_max] + 1] = 0, d = t.heap_max + 1; d < 573; d++) _ = t.heap[d], c = a[2 * a[2 * _ + 1] + 1] + 1, c > h && (c = h, m++), a[2 * _ + 1] = c, _ > i || (t.bl_count[c]++, u = 0, _ >= l && (u = o[_ - l]), w = a[2 * _], t.opt_len += w * (c + u), r && (t.static_len += w * (n[2 * _ + 1] + u)));
+ if (0 !== m) {
+ do {
+ for (c = h - 1; 0 === t.bl_count[c];) c--;
+ t.bl_count[c]--, t.bl_count[c + 1] += 2, t.bl_count[h]--, m -= 2
+ } while (m > 0);
+ for (c = h; 0 !== c; c--)
+ for (_ = t.bl_count[c]; 0 !== _;) f = t.heap[--d], f > i || (a[2 * f + 1] !== c && (t.opt_len += (c - a[2 * f + 1]) * a[2 * f], a[2 * f + 1] = c), _--)
+ }
+ })(t, e), E(a, d, t.bl_count)
+ },
+ O = (t, e, a) => {
+ let i, n, s = -1,
+ r = e[1],
+ o = 0,
+ l = 7,
+ h = 4;
+ for (0 === r && (l = 138, h = 3), e[2 * (a + 1) + 1] = 65535, i = 0; i <= a; i++) n = r, r = e[2 * (i + 1) + 1], ++o < l && n === r || (o < h ? t.bl_tree[2 * n] += o : 0 !== n ? (n !== s && t.bl_tree[2 * n]++, t.bl_tree[32]++) : o <= 10 ? t.bl_tree[34]++ : t.bl_tree[36]++, o = 0, s = n, 0 === r ? (l = 138, h = 3) : n === r ? (l = 6, h = 3) : (l = 7, h = 4))
+ },
+ I = (t, e, a) => {
+ let i, n, s = -1,
+ r = e[1],
+ o = 0,
+ l = 7,
+ h = 4;
+ for (0 === r && (l = 138, h = 3), i = 0; i <= a; i++)
+ if (n = r, r = e[2 * (i + 1) + 1], !(++o < l && n === r)) {
+ if (o < h)
+ do {
+ z(t, n, t.bl_tree)
+ } while (0 != --o);
+ else 0 !== n ? (n !== s && (z(t, n, t.bl_tree), o--), z(t, 16, t.bl_tree), x(t, o - 3, 2)) : o <= 10 ? (z(t, 17, t.bl_tree), x(t, o - 3, 3)) : (z(t, 18, t.bl_tree), x(t, o - 11, 7));
+ o = 0, s = n, 0 === r ? (l = 138, h = 3) : n === r ? (l = 6, h = 3) : (l = 7, h = 4)
+ }
+ };
+ let F = !1;
+ const L = (t, e, a, i) => {
+ x(t, 0 + (i ? 1 : 0), 3), Z(t), y(t, a), y(t, ~a), a && t.pending_buf.set(t.window.subarray(e, e + a), t.pending), t.pending += a
+ };
+ var N = (t, e, i, n) => {
+ let s, r, o = 0;
+ t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = (t => {
+ let e, i = 4093624447;
+ for (e = 0; e <= 31; e++, i >>>= 1)
+ if (1 & i && 0 !== t.dyn_ltree[2 * e]) return 0;
+ if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return 1;
+ for (e = 32; e < a; e++)
+ if (0 !== t.dyn_ltree[2 * e]) return 1;
+ return 0
+ })(t)), T(t, t.l_desc), T(t, t.d_desc), o = (t => {
+ let e;
+ for (O(t, t.dyn_ltree, t.l_desc.max_code), O(t, t.dyn_dtree, t.d_desc.max_code), T(t, t.bl_desc), e = 18; e >= 3 && 0 === t.bl_tree[2 * h[e] + 1]; e--);
+ return t.opt_len += 3 * (e + 1) + 5 + 5 + 4, e
+ })(t), s = t.opt_len + 3 + 7 >>> 3, r = t.static_len + 3 + 7 >>> 3, r <= s && (s = r)) : s = r = i + 5, i + 4 <= s && -1 !== e ? L(t, e, i, n) : 4 === t.strategy || r === s ? (x(t, 2 + (n ? 1 : 0), 3), D(t, d, _)) : (x(t, 4 + (n ? 1 : 0), 3), ((t, e, a, i) => {
+ let n;
+ for (x(t, e - 257, 5), x(t, a - 1, 5), x(t, i - 4, 4), n = 0; n < i; n++) x(t, t.bl_tree[2 * h[n] + 1], 3);
+ I(t, t.dyn_ltree, e - 1), I(t, t.dyn_dtree, a - 1)
+ })(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, o + 1), D(t, t.dyn_ltree, t.dyn_dtree)), R(t), n && Z(t)
+ },
+ B = {
+ _tr_init: t => {
+ F || ((() => {
+ let t, e, a, h, k;
+ const v = new Array(16);
+ for (a = 0, h = 0; h < 28; h++)
+ for (u[h] = a, t = 0; t < 1 << r[h]; t++) c[a++] = h;
+ for (c[a - 1] = h, k = 0, h = 0; h < 16; h++)
+ for (w[h] = k, t = 0; t < 1 << o[h]; t++) f[k++] = h;
+ for (k >>= 7; h < n; h++)
+ for (w[h] = k << 7, t = 0; t < 1 << o[h] - 7; t++) f[256 + k++] = h;
+ for (e = 0; e <= s; e++) v[e] = 0;
+ for (t = 0; t <= 143;) d[2 * t + 1] = 8, t++, v[8]++;
+ for (; t <= 255;) d[2 * t + 1] = 9, t++, v[9]++;
+ for (; t <= 279;) d[2 * t + 1] = 7, t++, v[7]++;
+ for (; t <= 287;) d[2 * t + 1] = 8, t++, v[8]++;
+ for (E(d, 287, v), t = 0; t < n; t++) _[2 * t + 1] = 5, _[2 * t] = A(t, 5);
+ b = new m(d, r, 257, i, s), g = new m(_, o, 0, n, s), p = new m(new Array(0), l, 0, 19, 7)
+ })(), F = !0), t.l_desc = new k(t.dyn_ltree, b), t.d_desc = new k(t.dyn_dtree, g), t.bl_desc = new k(t.bl_tree, p), t.bi_buf = 0, t.bi_valid = 0, R(t)
+ },
+ _tr_stored_block: L,
+ _tr_flush_block: N,
+ _tr_tally: (t, e, i) => (t.pending_buf[t.sym_buf + t.sym_next++] = e, t.pending_buf[t.sym_buf + t.sym_next++] = e >> 8, t.pending_buf[t.sym_buf + t.sym_next++] = i, 0 === e ? t.dyn_ltree[2 * i]++ : (t.matches++, e--, t.dyn_ltree[2 * (c[i] + a + 1)]++, t.dyn_dtree[2 * v(e)]++), t.sym_next === t.sym_end),
+ _tr_align: t => {
+ x(t, 2, 3), z(t, 256, d), (t => {
+ 16 === t.bi_valid ? (y(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8)
+ })(t)
+ }
+ };
+ var C = (t, e, a, i) => {
+ let n = 65535 & t | 0,
+ s = t >>> 16 & 65535 | 0,
+ r = 0;
+ for (; 0 !== a;) {
+ r = a > 2e3 ? 2e3 : a, a -= r;
+ do {
+ n = n + e[i++] | 0, s = s + n | 0
+ } while (--r);
+ n %= 65521, s %= 65521
+ }
+ return n | s << 16 | 0
+ };
+ const M = new Uint32Array((() => {
+ let t, e = [];
+ for (var a = 0; a < 256; a++) {
+ t = a;
+ for (var i = 0; i < 8; i++) t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1;
+ e[a] = t
+ }
+ return e
+ })());
+ var H = (t, e, a, i) => {
+ const n = M,
+ s = i + a;
+ t ^= -1;
+ for (let a = i; a < s; a++) t = t >>> 8 ^ n[255 & (t ^ e[a])];
+ return -1 ^ t
+ },
+ j = {
+ 2: "need dictionary",
+ 1: "stream end",
+ 0: "",
+ "-1": "file error",
+ "-2": "stream error",
+ "-3": "data error",
+ "-4": "insufficient memory",
+ "-5": "buffer error",
+ "-6": "incompatible version"
+ },
+ K = {
+ Z_NO_FLUSH: 0,
+ Z_PARTIAL_FLUSH: 1,
+ Z_SYNC_FLUSH: 2,
+ Z_FULL_FLUSH: 3,
+ Z_FINISH: 4,
+ Z_BLOCK: 5,
+ Z_TREES: 6,
+ Z_OK: 0,
+ Z_STREAM_END: 1,
+ Z_NEED_DICT: 2,
+ Z_ERRNO: -1,
+ Z_STREAM_ERROR: -2,
+ Z_DATA_ERROR: -3,
+ Z_MEM_ERROR: -4,
+ Z_BUF_ERROR: -5,
+ Z_NO_COMPRESSION: 0,
+ Z_BEST_SPEED: 1,
+ Z_BEST_COMPRESSION: 9,
+ Z_DEFAULT_COMPRESSION: -1,
+ Z_FILTERED: 1,
+ Z_HUFFMAN_ONLY: 2,
+ Z_RLE: 3,
+ Z_FIXED: 4,
+ Z_DEFAULT_STRATEGY: 0,
+ Z_BINARY: 0,
+ Z_TEXT: 1,
+ Z_UNKNOWN: 2,
+ Z_DEFLATED: 8
+ };
+ const {
+ _tr_init: P,
+ _tr_stored_block: Y,
+ _tr_flush_block: G,
+ _tr_tally: X,
+ _tr_align: W
+ } = B, {
+ Z_NO_FLUSH: q,
+ Z_PARTIAL_FLUSH: J,
+ Z_FULL_FLUSH: Q,
+ Z_FINISH: V,
+ Z_BLOCK: $,
+ Z_OK: tt,
+ Z_STREAM_END: et,
+ Z_STREAM_ERROR: at,
+ Z_DATA_ERROR: it,
+ Z_BUF_ERROR: nt,
+ Z_DEFAULT_COMPRESSION: st,
+ Z_FILTERED: rt,
+ Z_HUFFMAN_ONLY: ot,
+ Z_RLE: lt,
+ Z_FIXED: ht,
+ Z_DEFAULT_STRATEGY: dt,
+ Z_UNKNOWN: _t,
+ Z_DEFLATED: ft
+ } = K, ct = 258, ut = 262, wt = 42, mt = 113, bt = 666, gt = (t, e) => (t.msg = j[e], e), pt = t => 2 * t - (t > 4 ? 9 : 0), kt = t => {
+ let e = t.length;
+ for (; --e >= 0;) t[e] = 0
+ }, vt = t => {
+ let e, a, i, n = t.w_size;
+ e = t.hash_size, i = e;
+ do {
+ a = t.head[--i], t.head[i] = a >= n ? a - n : 0
+ } while (--e);
+ e = n, i = e;
+ do {
+ a = t.prev[--i], t.prev[i] = a >= n ? a - n : 0
+ } while (--e)
+ };
+ let yt = (t, e, a) => (e << t.hash_shift ^ a) & t.hash_mask;
+ const xt = t => {
+ const e = t.state;
+ let a = e.pending;
+ a > t.avail_out && (a = t.avail_out), 0 !== a && (t.output.set(e.pending_buf.subarray(e.pending_out, e.pending_out + a), t.next_out), t.next_out += a, e.pending_out += a, t.total_out += a, t.avail_out -= a, e.pending -= a, 0 === e.pending && (e.pending_out = 0))
+ },
+ zt = (t, e) => {
+ G(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, e), t.block_start = t.strstart, xt(t.strm)
+ },
+ At = (t, e) => {
+ t.pending_buf[t.pending++] = e
+ },
+ Et = (t, e) => {
+ t.pending_buf[t.pending++] = e >>> 8 & 255, t.pending_buf[t.pending++] = 255 & e
+ },
+ Rt = (t, e, a, i) => {
+ let n = t.avail_in;
+ return n > i && (n = i), 0 === n ? 0 : (t.avail_in -= n, e.set(t.input.subarray(t.next_in, t.next_in + n), a), 1 === t.state.wrap ? t.adler = C(t.adler, e, n, a) : 2 === t.state.wrap && (t.adler = H(t.adler, e, n, a)), t.next_in += n, t.total_in += n, n)
+ },
+ Zt = (t, e) => {
+ let a, i, n = t.max_chain_length,
+ s = t.strstart,
+ r = t.prev_length,
+ o = t.nice_match;
+ const l = t.strstart > t.w_size - ut ? t.strstart - (t.w_size - ut) : 0,
+ h = t.window,
+ d = t.w_mask,
+ _ = t.prev,
+ f = t.strstart + ct;
+ let c = h[s + r - 1],
+ u = h[s + r];
+ t.prev_length >= t.good_match && (n >>= 2), o > t.lookahead && (o = t.lookahead);
+ do {
+ if (a = e, h[a + r] === u && h[a + r - 1] === c && h[a] === h[s] && h[++a] === h[s + 1]) {
+ s += 2, a++;
+ do {} while (h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && s < f);
+ if (i = ct - (f - s), s = f - ct, i > r) {
+ if (t.match_start = e, r = i, i >= o) break;
+ c = h[s + r - 1], u = h[s + r]
+ }
+ }
+ } while ((e = _[e & d]) > l && 0 != --n);
+ return r <= t.lookahead ? r : t.lookahead
+ },
+ Ut = t => {
+ const e = t.w_size;
+ let a, i, n;
+ do {
+ if (i = t.window_size - t.lookahead - t.strstart, t.strstart >= e + (e - ut) && (t.window.set(t.window.subarray(e, e + e - i), 0), t.match_start -= e, t.strstart -= e, t.block_start -= e, t.insert > t.strstart && (t.insert = t.strstart), vt(t), i += e), 0 === t.strm.avail_in) break;
+ if (a = Rt(t.strm, t.window, t.strstart + t.lookahead, i), t.lookahead += a, t.lookahead + t.insert >= 3)
+ for (n = t.strstart - t.insert, t.ins_h = t.window[n], t.ins_h = yt(t, t.ins_h, t.window[n + 1]); t.insert && (t.ins_h = yt(t, t.ins_h, t.window[n + 3 - 1]), t.prev[n & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = n, n++, t.insert--, !(t.lookahead + t.insert < 3)););
+ } while (t.lookahead < ut && 0 !== t.strm.avail_in)
+ },
+ St = (t, e) => {
+ let a, i, n, s = t.pending_buf_size - 5 > t.w_size ? t.w_size : t.pending_buf_size - 5,
+ r = 0,
+ o = t.strm.avail_in;
+ do {
+ if (a = 65535, n = t.bi_valid + 42 >> 3, t.strm.avail_out < n) break;
+ if (n = t.strm.avail_out - n, i = t.strstart - t.block_start, a > i + t.strm.avail_in && (a = i + t.strm.avail_in), a > n && (a = n), a < s && (0 === a && e !== V || e === q || a !== i + t.strm.avail_in)) break;
+ r = e === V && a === i + t.strm.avail_in ? 1 : 0, Y(t, 0, 0, r), t.pending_buf[t.pending - 4] = a, t.pending_buf[t.pending - 3] = a >> 8, t.pending_buf[t.pending - 2] = ~a, t.pending_buf[t.pending - 1] = ~a >> 8, xt(t.strm), i && (i > a && (i = a), t.strm.output.set(t.window.subarray(t.block_start, t.block_start + i), t.strm.next_out), t.strm.next_out += i, t.strm.avail_out -= i, t.strm.total_out += i, t.block_start += i, a -= i), a && (Rt(t.strm, t.strm.output, t.strm.next_out, a), t.strm.next_out += a, t.strm.avail_out -= a, t.strm.total_out += a)
+ } while (0 === r);
+ return o -= t.strm.avail_in, o && (o >= t.w_size ? (t.matches = 2, t.window.set(t.strm.input.subarray(t.strm.next_in - t.w_size, t.strm.next_in), 0), t.strstart = t.w_size, t.insert = t.strstart) : (t.window_size - t.strstart <= o && (t.strstart -= t.w_size, t.window.set(t.window.subarray(t.w_size, t.w_size + t.strstart), 0), t.matches < 2 && t.matches++, t.insert > t.strstart && (t.insert = t.strstart)), t.window.set(t.strm.input.subarray(t.strm.next_in - o, t.strm.next_in), t.strstart), t.strstart += o, t.insert += o > t.w_size - t.insert ? t.w_size - t.insert : o), t.block_start = t.strstart), t.high_water < t.strstart && (t.high_water = t.strstart), r ? 4 : e !== q && e !== V && 0 === t.strm.avail_in && t.strstart === t.block_start ? 2 : (n = t.window_size - t.strstart, t.strm.avail_in > n && t.block_start >= t.w_size && (t.block_start -= t.w_size, t.strstart -= t.w_size, t.window.set(t.window.subarray(t.w_size, t.w_size + t.strstart), 0), t.matches < 2 && t.matches++, n += t.w_size, t.insert > t.strstart && (t.insert = t.strstart)), n > t.strm.avail_in && (n = t.strm.avail_in), n && (Rt(t.strm, t.window, t.strstart, n), t.strstart += n, t.insert += n > t.w_size - t.insert ? t.w_size - t.insert : n), t.high_water < t.strstart && (t.high_water = t.strstart), n = t.bi_valid + 42 >> 3, n = t.pending_buf_size - n > 65535 ? 65535 : t.pending_buf_size - n, s = n > t.w_size ? t.w_size : n, i = t.strstart - t.block_start, (i >= s || (i || e === V) && e !== q && 0 === t.strm.avail_in && i <= n) && (a = i > n ? n : i, r = e === V && 0 === t.strm.avail_in && a === i ? 1 : 0, Y(t, t.block_start, a, r), t.block_start += a, xt(t.strm)), r ? 3 : 1)
+ },
+ Dt = (t, e) => {
+ let a, i;
+ for (;;) {
+ if (t.lookahead < ut) {
+ if (Ut(t), t.lookahead < ut && e === q) return 1;
+ if (0 === t.lookahead) break
+ }
+ if (a = 0, t.lookahead >= 3 && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 !== a && t.strstart - a <= t.w_size - ut && (t.match_length = Zt(t, a)), t.match_length >= 3)
+ if (i = X(t, t.strstart - t.match_start, t.match_length - 3), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= 3) {
+ t.match_length--;
+ do {
+ t.strstart++, t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart
+ } while (0 != --t.match_length);
+ t.strstart++
+ } else t.strstart += t.match_length, t.match_length = 0, t.ins_h = t.window[t.strstart], t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 1]);
+ else i = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++;
+ if (i && (zt(t, !1), 0 === t.strm.avail_out)) return 1
+ }
+ return t.insert = t.strstart < 2 ? t.strstart : 2, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2
+ },
+ Tt = (t, e) => {
+ let a, i, n;
+ for (;;) {
+ if (t.lookahead < ut) {
+ if (Ut(t), t.lookahead < ut && e === q) return 1;
+ if (0 === t.lookahead) break
+ }
+ if (a = 0, t.lookahead >= 3 && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), t.prev_length = t.match_length, t.prev_match = t.match_start, t.match_length = 2, 0 !== a && t.prev_length < t.max_lazy_match && t.strstart - a <= t.w_size - ut && (t.match_length = Zt(t, a), t.match_length <= 5 && (t.strategy === rt || 3 === t.match_length && t.strstart - t.match_start > 4096) && (t.match_length = 2)), t.prev_length >= 3 && t.match_length <= t.prev_length) {
+ n = t.strstart + t.lookahead - 3, i = X(t, t.strstart - 1 - t.prev_match, t.prev_length - 3), t.lookahead -= t.prev_length - 1, t.prev_length -= 2;
+ do {
+ ++t.strstart <= n && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart)
+ } while (0 != --t.prev_length);
+ if (t.match_available = 0, t.match_length = 2, t.strstart++, i && (zt(t, !1), 0 === t.strm.avail_out)) return 1
+ } else if (t.match_available) {
+ if (i = X(t, 0, t.window[t.strstart - 1]), i && zt(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out) return 1
+ } else t.match_available = 1, t.strstart++, t.lookahead--
+ }
+ return t.match_available && (i = X(t, 0, t.window[t.strstart - 1]), t.match_available = 0), t.insert = t.strstart < 2 ? t.strstart : 2, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2
+ };
+
+ function Ot(t, e, a, i, n) {
+ this.good_length = t, this.max_lazy = e, this.nice_length = a, this.max_chain = i, this.func = n
+ }
+ const It = [new Ot(0, 0, 0, 0, St), new Ot(4, 4, 8, 4, Dt), new Ot(4, 5, 16, 8, Dt), new Ot(4, 6, 32, 32, Dt), new Ot(4, 4, 16, 16, Tt), new Ot(8, 16, 32, 32, Tt), new Ot(8, 16, 128, 128, Tt), new Ot(8, 32, 128, 256, Tt), new Ot(32, 128, 258, 1024, Tt), new Ot(32, 258, 258, 4096, Tt)];
+
+ function Ft() {
+ this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = ft, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new Uint16Array(1146), this.dyn_dtree = new Uint16Array(122), this.bl_tree = new Uint16Array(78), kt(this.dyn_ltree), kt(this.dyn_dtree), kt(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new Uint16Array(16), this.heap = new Uint16Array(573), kt(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new Uint16Array(573), kt(this.depth), this.sym_buf = 0, this.lit_bufsize = 0, this.sym_next = 0, this.sym_end = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0
+ }
+ const Lt = t => {
+ if (!t) return 1;
+ const e = t.state;
+ return !e || e.strm !== t || e.status !== wt && 57 !== e.status && 69 !== e.status && 73 !== e.status && 91 !== e.status && 103 !== e.status && e.status !== mt && e.status !== bt ? 1 : 0
+ },
+ Nt = t => {
+ if (Lt(t)) return gt(t, at);
+ t.total_in = t.total_out = 0, t.data_type = _t;
+ const e = t.state;
+ return e.pending = 0, e.pending_out = 0, e.wrap < 0 && (e.wrap = -e.wrap), e.status = 2 === e.wrap ? 57 : e.wrap ? wt : mt, t.adler = 2 === e.wrap ? 0 : 1, e.last_flush = -2, P(e), tt
+ },
+ Bt = t => {
+ const e = Nt(t);
+ var a;
+ return e === tt && ((a = t.state).window_size = 2 * a.w_size, kt(a.head), a.max_lazy_match = It[a.level].max_lazy, a.good_match = It[a.level].good_length, a.nice_match = It[a.level].nice_length, a.max_chain_length = It[a.level].max_chain, a.strstart = 0, a.block_start = 0, a.lookahead = 0, a.insert = 0, a.match_length = a.prev_length = 2, a.match_available = 0, a.ins_h = 0), e
+ },
+ Ct = (t, e, a, i, n, s) => {
+ if (!t) return at;
+ let r = 1;
+ if (e === st && (e = 6), i < 0 ? (r = 0, i = -i) : i > 15 && (r = 2, i -= 16), n < 1 || n > 9 || a !== ft || i < 8 || i > 15 || e < 0 || e > 9 || s < 0 || s > ht || 8 === i && 1 !== r) return gt(t, at);
+ 8 === i && (i = 9);
+ const o = new Ft;
+ return t.state = o, o.strm = t, o.status = wt, o.wrap = r, o.gzhead = null, o.w_bits = i, o.w_size = 1 << o.w_bits, o.w_mask = o.w_size - 1, o.hash_bits = n + 7, o.hash_size = 1 << o.hash_bits, o.hash_mask = o.hash_size - 1, o.hash_shift = ~~((o.hash_bits + 3 - 1) / 3), o.window = new Uint8Array(2 * o.w_size), o.head = new Uint16Array(o.hash_size), o.prev = new Uint16Array(o.w_size), o.lit_bufsize = 1 << n + 6, o.pending_buf_size = 4 * o.lit_bufsize, o.pending_buf = new Uint8Array(o.pending_buf_size), o.sym_buf = o.lit_bufsize, o.sym_end = 3 * (o.lit_bufsize - 1), o.level = e, o.strategy = s, o.method = a, Bt(t)
+ };
+ var Mt = {
+ deflateInit: (t, e) => Ct(t, e, ft, 15, 8, dt),
+ deflateInit2: Ct,
+ deflateReset: Bt,
+ deflateResetKeep: Nt,
+ deflateSetHeader: (t, e) => Lt(t) || 2 !== t.state.wrap ? at : (t.state.gzhead = e, tt),
+ deflate: (t, e) => {
+ if (Lt(t) || e > $ || e < 0) return t ? gt(t, at) : at;
+ const a = t.state;
+ if (!t.output || 0 !== t.avail_in && !t.input || a.status === bt && e !== V) return gt(t, 0 === t.avail_out ? nt : at);
+ const i = a.last_flush;
+ if (a.last_flush = e, 0 !== a.pending) {
+ if (xt(t), 0 === t.avail_out) return a.last_flush = -1, tt
+ } else if (0 === t.avail_in && pt(e) <= pt(i) && e !== V) return gt(t, nt);
+ if (a.status === bt && 0 !== t.avail_in) return gt(t, nt);
+ if (a.status === wt && 0 === a.wrap && (a.status = mt), a.status === wt) {
+ let e = ft + (a.w_bits - 8 << 4) << 8,
+ i = -1;
+ if (i = a.strategy >= ot || a.level < 2 ? 0 : a.level < 6 ? 1 : 6 === a.level ? 2 : 3, e |= i << 6, 0 !== a.strstart && (e |= 32), e += 31 - e % 31, Et(a, e), 0 !== a.strstart && (Et(a, t.adler >>> 16), Et(a, 65535 & t.adler)), t.adler = 1, a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt
+ }
+ if (57 === a.status)
+ if (t.adler = 0, At(a, 31), At(a, 139), At(a, 8), a.gzhead) At(a, (a.gzhead.text ? 1 : 0) + (a.gzhead.hcrc ? 2 : 0) + (a.gzhead.extra ? 4 : 0) + (a.gzhead.name ? 8 : 0) + (a.gzhead.comment ? 16 : 0)), At(a, 255 & a.gzhead.time), At(a, a.gzhead.time >> 8 & 255), At(a, a.gzhead.time >> 16 & 255), At(a, a.gzhead.time >> 24 & 255), At(a, 9 === a.level ? 2 : a.strategy >= ot || a.level < 2 ? 4 : 0), At(a, 255 & a.gzhead.os), a.gzhead.extra && a.gzhead.extra.length && (At(a, 255 & a.gzhead.extra.length), At(a, a.gzhead.extra.length >> 8 & 255)), a.gzhead.hcrc && (t.adler = H(t.adler, a.pending_buf, a.pending, 0)), a.gzindex = 0, a.status = 69;
+ else if (At(a, 0), At(a, 0), At(a, 0), At(a, 0), At(a, 0), At(a, 9 === a.level ? 2 : a.strategy >= ot || a.level < 2 ? 4 : 0), At(a, 3), a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt;
+ if (69 === a.status) {
+ if (a.gzhead.extra) {
+ let e = a.pending,
+ i = (65535 & a.gzhead.extra.length) - a.gzindex;
+ for (; a.pending + i > a.pending_buf_size;) {
+ let n = a.pending_buf_size - a.pending;
+ if (a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex, a.gzindex + n), a.pending), a.pending = a.pending_buf_size, a.gzhead.hcrc && a.pending > e && (t.adler = H(t.adler, a.pending_buf, a.pending - e, e)), a.gzindex += n, xt(t), 0 !== a.pending) return a.last_flush = -1, tt;
+ e = 0, i -= n
+ }
+ let n = new Uint8Array(a.gzhead.extra);
+ a.pending_buf.set(n.subarray(a.gzindex, a.gzindex + i), a.pending), a.pending += i, a.gzhead.hcrc && a.pending > e && (t.adler = H(t.adler, a.pending_buf, a.pending - e, e)), a.gzindex = 0
+ }
+ a.status = 73
+ }
+ if (73 === a.status) {
+ if (a.gzhead.name) {
+ let e, i = a.pending;
+ do {
+ if (a.pending === a.pending_buf_size) {
+ if (a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), xt(t), 0 !== a.pending) return a.last_flush = -1, tt;
+ i = 0
+ }
+ e = a.gzindex < a.gzhead.name.length ? 255 & a.gzhead.name.charCodeAt(a.gzindex++) : 0, At(a, e)
+ } while (0 !== e);
+ a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), a.gzindex = 0
+ }
+ a.status = 91
+ }
+ if (91 === a.status) {
+ if (a.gzhead.comment) {
+ let e, i = a.pending;
+ do {
+ if (a.pending === a.pending_buf_size) {
+ if (a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), xt(t), 0 !== a.pending) return a.last_flush = -1, tt;
+ i = 0
+ }
+ e = a.gzindex < a.gzhead.comment.length ? 255 & a.gzhead.comment.charCodeAt(a.gzindex++) : 0, At(a, e)
+ } while (0 !== e);
+ a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i))
+ }
+ a.status = 103
+ }
+ if (103 === a.status) {
+ if (a.gzhead.hcrc) {
+ if (a.pending + 2 > a.pending_buf_size && (xt(t), 0 !== a.pending)) return a.last_flush = -1, tt;
+ At(a, 255 & t.adler), At(a, t.adler >> 8 & 255), t.adler = 0
+ }
+ if (a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt
+ }
+ if (0 !== t.avail_in || 0 !== a.lookahead || e !== q && a.status !== bt) {
+ let i = 0 === a.level ? St(a, e) : a.strategy === ot ? ((t, e) => {
+ let a;
+ for (;;) {
+ if (0 === t.lookahead && (Ut(t), 0 === t.lookahead)) {
+ if (e === q) return 1;
+ break
+ }
+ if (t.match_length = 0, a = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++, a && (zt(t, !1), 0 === t.strm.avail_out)) return 1
+ }
+ return t.insert = 0, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2
+ })(a, e) : a.strategy === lt ? ((t, e) => {
+ let a, i, n, s;
+ const r = t.window;
+ for (;;) {
+ if (t.lookahead <= ct) {
+ if (Ut(t), t.lookahead <= ct && e === q) return 1;
+ if (0 === t.lookahead) break
+ }
+ if (t.match_length = 0, t.lookahead >= 3 && t.strstart > 0 && (n = t.strstart - 1, i = r[n], i === r[++n] && i === r[++n] && i === r[++n])) {
+ s = t.strstart + ct;
+ do {} while (i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && n < s);
+ t.match_length = ct - (s - n), t.match_length > t.lookahead && (t.match_length = t.lookahead)
+ }
+ if (t.match_length >= 3 ? (a = X(t, 1, t.match_length - 3), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (a = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++), a && (zt(t, !1), 0 === t.strm.avail_out)) return 1
+ }
+ return t.insert = 0, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2
+ })(a, e) : It[a.level].func(a, e);
+ if (3 !== i && 4 !== i || (a.status = bt), 1 === i || 3 === i) return 0 === t.avail_out && (a.last_flush = -1), tt;
+ if (2 === i && (e === J ? W(a) : e !== $ && (Y(a, 0, 0, !1), e === Q && (kt(a.head), 0 === a.lookahead && (a.strstart = 0, a.block_start = 0, a.insert = 0))), xt(t), 0 === t.avail_out)) return a.last_flush = -1, tt
+ }
+ return e !== V ? tt : a.wrap <= 0 ? et : (2 === a.wrap ? (At(a, 255 & t.adler), At(a, t.adler >> 8 & 255), At(a, t.adler >> 16 & 255), At(a, t.adler >> 24 & 255), At(a, 255 & t.total_in), At(a, t.total_in >> 8 & 255), At(a, t.total_in >> 16 & 255), At(a, t.total_in >> 24 & 255)) : (Et(a, t.adler >>> 16), Et(a, 65535 & t.adler)), xt(t), a.wrap > 0 && (a.wrap = -a.wrap), 0 !== a.pending ? tt : et)
+ },
+ deflateEnd: t => {
+ if (Lt(t)) return at;
+ const e = t.state.status;
+ return t.state = null, e === mt ? gt(t, it) : tt
+ },
+ deflateSetDictionary: (t, e) => {
+ let a = e.length;
+ if (Lt(t)) return at;
+ const i = t.state,
+ n = i.wrap;
+ if (2 === n || 1 === n && i.status !== wt || i.lookahead) return at;
+ if (1 === n && (t.adler = C(t.adler, e, a, 0)), i.wrap = 0, a >= i.w_size) {
+ 0 === n && (kt(i.head), i.strstart = 0, i.block_start = 0, i.insert = 0);
+ let t = new Uint8Array(i.w_size);
+ t.set(e.subarray(a - i.w_size, a), 0), e = t, a = i.w_size
+ }
+ const s = t.avail_in,
+ r = t.next_in,
+ o = t.input;
+ for (t.avail_in = a, t.next_in = 0, t.input = e, Ut(i); i.lookahead >= 3;) {
+ let t = i.strstart,
+ e = i.lookahead - 2;
+ do {
+ i.ins_h = yt(i, i.ins_h, i.window[t + 3 - 1]), i.prev[t & i.w_mask] = i.head[i.ins_h], i.head[i.ins_h] = t, t++
+ } while (--e);
+ i.strstart = t, i.lookahead = 2, Ut(i)
+ }
+ return i.strstart += i.lookahead, i.block_start = i.strstart, i.insert = i.lookahead, i.lookahead = 0, i.match_length = i.prev_length = 2, i.match_available = 0, t.next_in = r, t.input = o, t.avail_in = s, i.wrap = n, tt
+ },
+ deflateInfo: "pako deflate (from Nodeca project)"
+ };
+ const Ht = (t, e) => Object.prototype.hasOwnProperty.call(t, e);
+ var jt = function(t) {
+ const e = Array.prototype.slice.call(arguments, 1);
+ for (; e.length;) {
+ const a = e.shift();
+ if (a) {
+ if ("object" != typeof a) throw new TypeError(a + "must be non-object");
+ for (const e in a) Ht(a, e) && (t[e] = a[e])
+ }
+ }
+ return t
+ },
+ Kt = t => {
+ let e = 0;
+ for (let a = 0, i = t.length; a < i; a++) e += t[a].length;
+ const a = new Uint8Array(e);
+ for (let e = 0, i = 0, n = t.length; e < n; e++) {
+ let n = t[e];
+ a.set(n, i), i += n.length
+ }
+ return a
+ };
+ let Pt = !0;
+ try {
+ String.fromCharCode.apply(null, new Uint8Array(1))
+ } catch (t) {
+ Pt = !1
+ }
+ const Yt = new Uint8Array(256);
+ for (let t = 0; t < 256; t++) Yt[t] = t >= 252 ? 6 : t >= 248 ? 5 : t >= 240 ? 4 : t >= 224 ? 3 : t >= 192 ? 2 : 1;
+ Yt[254] = Yt[254] = 1;
+ var Gt = t => {
+ if ("function" == typeof TextEncoder && TextEncoder.prototype.encode) return (new TextEncoder).encode(t);
+ let e, a, i, n, s, r = t.length,
+ o = 0;
+ for (n = 0; n < r; n++) a = t.charCodeAt(n), 55296 == (64512 & a) && n + 1 < r && (i = t.charCodeAt(n + 1), 56320 == (64512 & i) && (a = 65536 + (a - 55296 << 10) + (i - 56320), n++)), o += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4;
+ for (e = new Uint8Array(o), s = 0, n = 0; s < o; n++) a = t.charCodeAt(n), 55296 == (64512 & a) && n + 1 < r && (i = t.charCodeAt(n + 1), 56320 == (64512 & i) && (a = 65536 + (a - 55296 << 10) + (i - 56320), n++)), a < 128 ? e[s++] = a : a < 2048 ? (e[s++] = 192 | a >>> 6, e[s++] = 128 | 63 & a) : a < 65536 ? (e[s++] = 224 | a >>> 12, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a) : (e[s++] = 240 | a >>> 18, e[s++] = 128 | a >>> 12 & 63, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a);
+ return e
+ },
+ Xt = (t, e) => {
+ const a = e || t.length;
+ if ("function" == typeof TextDecoder && TextDecoder.prototype.decode) return (new TextDecoder).decode(t.subarray(0, e));
+ let i, n;
+ const s = new Array(2 * a);
+ for (n = 0, i = 0; i < a;) {
+ let e = t[i++];
+ if (e < 128) {
+ s[n++] = e;
+ continue
+ }
+ let r = Yt[e];
+ if (r > 4) s[n++] = 65533, i += r - 1;
+ else {
+ for (e &= 2 === r ? 31 : 3 === r ? 15 : 7; r > 1 && i < a;) e = e << 6 | 63 & t[i++], r--;
+ r > 1 ? s[n++] = 65533 : e < 65536 ? s[n++] = e : (e -= 65536, s[n++] = 55296 | e >> 10 & 1023, s[n++] = 56320 | 1023 & e)
+ }
+ }
+ return ((t, e) => {
+ if (e < 65534 && t.subarray && Pt) return String.fromCharCode.apply(null, t.length === e ? t : t.subarray(0, e));
+ let a = "";
+ for (let i = 0; i < e; i++) a += String.fromCharCode(t[i]);
+ return a
+ })(s, n)
+ },
+ Wt = (t, e) => {
+ (e = e || t.length) > t.length && (e = t.length);
+ let a = e - 1;
+ for (; a >= 0 && 128 == (192 & t[a]);) a--;
+ return a < 0 || 0 === a ? e : a + Yt[t[a]] > e ? a : e
+ };
+ var qt = function() {
+ this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0
+ };
+ const Jt = Object.prototype.toString,
+ {
+ Z_NO_FLUSH: Qt,
+ Z_SYNC_FLUSH: Vt,
+ Z_FULL_FLUSH: $t,
+ Z_FINISH: te,
+ Z_OK: ee,
+ Z_STREAM_END: ae,
+ Z_DEFAULT_COMPRESSION: ie,
+ Z_DEFAULT_STRATEGY: ne,
+ Z_DEFLATED: se
+ } = K;
+
+ function re(t) {
+ this.options = jt({
+ level: ie,
+ method: se,
+ chunkSize: 16384,
+ windowBits: 15,
+ memLevel: 8,
+ strategy: ne
+ }, t || {});
+ let e = this.options;
+ e.raw && e.windowBits > 0 ? e.windowBits = -e.windowBits : e.gzip && e.windowBits > 0 && e.windowBits < 16 && (e.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new qt, this.strm.avail_out = 0;
+ let a = Mt.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy);
+ if (a !== ee) throw new Error(j[a]);
+ if (e.header && Mt.deflateSetHeader(this.strm, e.header), e.dictionary) {
+ let t;
+ if (t = "string" == typeof e.dictionary ? Gt(e.dictionary) : "[object ArrayBuffer]" === Jt.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary, a = Mt.deflateSetDictionary(this.strm, t), a !== ee) throw new Error(j[a]);
+ this._dict_set = !0
+ }
+ }
+
+ function oe(t, e) {
+ const a = new re(e);
+ if (a.push(t, !0), a.err) throw a.msg || j[a.err];
+ return a.result
+ }
+ re.prototype.push = function(t, e) {
+ const a = this.strm,
+ i = this.options.chunkSize;
+ let n, s;
+ if (this.ended) return !1;
+ for (s = e === ~~e ? e : !0 === e ? te : Qt, "string" == typeof t ? a.input = Gt(t) : "[object ArrayBuffer]" === Jt.call(t) ? a.input = new Uint8Array(t) : a.input = t, a.next_in = 0, a.avail_in = a.input.length;;)
+ if (0 === a.avail_out && (a.output = new Uint8Array(i), a.next_out = 0, a.avail_out = i), (s === Vt || s === $t) && a.avail_out <= 6) this.onData(a.output.subarray(0, a.next_out)), a.avail_out = 0;
+ else {
+ if (n = Mt.deflate(a, s), n === ae) return a.next_out > 0 && this.onData(a.output.subarray(0, a.next_out)), n = Mt.deflateEnd(this.strm), this.onEnd(n), this.ended = !0, n === ee;
+ if (0 !== a.avail_out) {
+ if (s > 0 && a.next_out > 0) this.onData(a.output.subarray(0, a.next_out)), a.avail_out = 0;
+ else if (0 === a.avail_in) break
+ } else this.onData(a.output)
+ } return !0
+ }, re.prototype.onData = function(t) {
+ this.chunks.push(t)
+ }, re.prototype.onEnd = function(t) {
+ t === ee && (this.result = Kt(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg
+ };
+ var le = {
+ Deflate: re,
+ deflate: oe,
+ deflateRaw: function(t, e) {
+ return (e = e || {}).raw = !0, oe(t, e)
+ },
+ gzip: function(t, e) {
+ return (e = e || {}).gzip = !0, oe(t, e)
+ },
+ constants: K
+ };
+ const he = 16209;
+ var de = function(t, e) {
+ let a, i, n, s, r, o, l, h, d, _, f, c, u, w, m, b, g, p, k, v, y, x, z, A;
+ const E = t.state;
+ a = t.next_in, z = t.input, i = a + (t.avail_in - 5), n = t.next_out, A = t.output, s = n - (e - t.avail_out), r = n + (t.avail_out - 257), o = E.dmax, l = E.wsize, h = E.whave, d = E.wnext, _ = E.window, f = E.hold, c = E.bits, u = E.lencode, w = E.distcode, m = (1 << E.lenbits) - 1, b = (1 << E.distbits) - 1;
+ t: do {
+ c < 15 && (f += z[a++] << c, c += 8, f += z[a++] << c, c += 8), g = u[f & m];
+ e: for (;;) {
+ if (p = g >>> 24, f >>>= p, c -= p, p = g >>> 16 & 255, 0 === p) A[n++] = 65535 & g;
+ else {
+ if (!(16 & p)) {
+ if (0 == (64 & p)) {
+ g = u[(65535 & g) + (f & (1 << p) - 1)];
+ continue e
+ }
+ if (32 & p) {
+ E.mode = 16191;
+ break t
+ }
+ t.msg = "invalid literal/length code", E.mode = he;
+ break t
+ }
+ k = 65535 & g, p &= 15, p && (c < p && (f += z[a++] << c, c += 8), k += f & (1 << p) - 1, f >>>= p, c -= p), c < 15 && (f += z[a++] << c, c += 8, f += z[a++] << c, c += 8), g = w[f & b];
+ a: for (;;) {
+ if (p = g >>> 24, f >>>= p, c -= p, p = g >>> 16 & 255, !(16 & p)) {
+ if (0 == (64 & p)) {
+ g = w[(65535 & g) + (f & (1 << p) - 1)];
+ continue a
+ }
+ t.msg = "invalid distance code", E.mode = he;
+ break t
+ }
+ if (v = 65535 & g, p &= 15, c < p && (f += z[a++] << c, c += 8, c < p && (f += z[a++] << c, c += 8)), v += f & (1 << p) - 1, v > o) {
+ t.msg = "invalid distance too far back", E.mode = he;
+ break t
+ }
+ if (f >>>= p, c -= p, p = n - s, v > p) {
+ if (p = v - p, p > h && E.sane) {
+ t.msg = "invalid distance too far back", E.mode = he;
+ break t
+ }
+ if (y = 0, x = _, 0 === d) {
+ if (y += l - p, p < k) {
+ k -= p;
+ do {
+ A[n++] = _[y++]
+ } while (--p);
+ y = n - v, x = A
+ }
+ } else if (d < p) {
+ if (y += l + d - p, p -= d, p < k) {
+ k -= p;
+ do {
+ A[n++] = _[y++]
+ } while (--p);
+ if (y = 0, d < k) {
+ p = d, k -= p;
+ do {
+ A[n++] = _[y++]
+ } while (--p);
+ y = n - v, x = A
+ }
+ }
+ } else if (y += d - p, p < k) {
+ k -= p;
+ do {
+ A[n++] = _[y++]
+ } while (--p);
+ y = n - v, x = A
+ }
+ for (; k > 2;) A[n++] = x[y++], A[n++] = x[y++], A[n++] = x[y++], k -= 3;
+ k && (A[n++] = x[y++], k > 1 && (A[n++] = x[y++]))
+ } else {
+ y = n - v;
+ do {
+ A[n++] = A[y++], A[n++] = A[y++], A[n++] = A[y++], k -= 3
+ } while (k > 2);
+ k && (A[n++] = A[y++], k > 1 && (A[n++] = A[y++]))
+ }
+ break
+ }
+ }
+ break
+ }
+ } while (a < i && n < r);
+ k = c >> 3, a -= k, c -= k << 3, f &= (1 << c) - 1, t.next_in = a, t.next_out = n, t.avail_in = a < i ? i - a + 5 : 5 - (a - i), t.avail_out = n < r ? r - n + 257 : 257 - (n - r), E.hold = f, E.bits = c
+ };
+ const _e = 15,
+ fe = new Uint16Array([3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]),
+ ce = new Uint8Array([16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78]),
+ ue = new Uint16Array([1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0]),
+ we = new Uint8Array([16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]);
+ var me = (t, e, a, i, n, s, r, o) => {
+ const l = o.bits;
+ let h, d, _, f, c, u, w = 0,
+ m = 0,
+ b = 0,
+ g = 0,
+ p = 0,
+ k = 0,
+ v = 0,
+ y = 0,
+ x = 0,
+ z = 0,
+ A = null;
+ const E = new Uint16Array(16),
+ R = new Uint16Array(16);
+ let Z, U, S, D = null;
+ for (w = 0; w <= _e; w++) E[w] = 0;
+ for (m = 0; m < i; m++) E[e[a + m]]++;
+ for (p = l, g = _e; g >= 1 && 0 === E[g]; g--);
+ if (p > g && (p = g), 0 === g) return n[s++] = 20971520, n[s++] = 20971520, o.bits = 1, 0;
+ for (b = 1; b < g && 0 === E[b]; b++);
+ for (p < b && (p = b), y = 1, w = 1; w <= _e; w++)
+ if (y <<= 1, y -= E[w], y < 0) return -1;
+ if (y > 0 && (0 === t || 1 !== g)) return -1;
+ for (R[1] = 0, w = 1; w < _e; w++) R[w + 1] = R[w] + E[w];
+ for (m = 0; m < i; m++) 0 !== e[a + m] && (r[R[e[a + m]]++] = m);
+ if (0 === t ? (A = D = r, u = 20) : 1 === t ? (A = fe, D = ce, u = 257) : (A = ue, D = we, u = 0), z = 0, m = 0, w = b, c = s, k = p, v = 0, _ = -1, x = 1 << p, f = x - 1, 1 === t && x > 852 || 2 === t && x > 592) return 1;
+ for (;;) {
+ Z = w - v, r[m] + 1 < u ? (U = 0, S = r[m]) : r[m] >= u ? (U = D[r[m] - u], S = A[r[m] - u]) : (U = 96, S = 0), h = 1 << w - v, d = 1 << k, b = d;
+ do {
+ d -= h, n[c + (z >> v) + d] = Z << 24 | U << 16 | S | 0
+ } while (0 !== d);
+ for (h = 1 << w - 1; z & h;) h >>= 1;
+ if (0 !== h ? (z &= h - 1, z += h) : z = 0, m++, 0 == --E[w]) {
+ if (w === g) break;
+ w = e[a + r[m]]
+ }
+ if (w > p && (z & f) !== _) {
+ for (0 === v && (v = p), c += b, k = w - v, y = 1 << k; k + v < g && (y -= E[k + v], !(y <= 0));) k++, y <<= 1;
+ if (x += 1 << k, 1 === t && x > 852 || 2 === t && x > 592) return 1;
+ _ = z & f, n[_] = p << 24 | k << 16 | c - s | 0
+ }
+ }
+ return 0 !== z && (n[c + z] = w - v << 24 | 64 << 16 | 0), o.bits = p, 0
+ };
+ const {
+ Z_FINISH: be,
+ Z_BLOCK: ge,
+ Z_TREES: pe,
+ Z_OK: ke,
+ Z_STREAM_END: ve,
+ Z_NEED_DICT: ye,
+ Z_STREAM_ERROR: xe,
+ Z_DATA_ERROR: ze,
+ Z_MEM_ERROR: Ae,
+ Z_BUF_ERROR: Ee,
+ Z_DEFLATED: Re
+ } = K, Ze = 16180, Ue = 16190, Se = 16191, De = 16192, Te = 16194, Oe = 16199, Ie = 16200, Fe = 16206, Le = 16209, Ne = t => (t >>> 24 & 255) + (t >>> 8 & 65280) + ((65280 & t) << 8) + ((255 & t) << 24);
+
+ function Be() {
+ this.strm = null, this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new Uint16Array(320), this.work = new Uint16Array(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0
+ }
+ const Ce = t => {
+ if (!t) return 1;
+ const e = t.state;
+ return !e || e.strm !== t || e.mode < Ze || e.mode > 16211 ? 1 : 0
+ },
+ Me = t => {
+ if (Ce(t)) return xe;
+ const e = t.state;
+ return t.total_in = t.total_out = e.total = 0, t.msg = "", e.wrap && (t.adler = 1 & e.wrap), e.mode = Ze, e.last = 0, e.havedict = 0, e.flags = -1, e.dmax = 32768, e.head = null, e.hold = 0, e.bits = 0, e.lencode = e.lendyn = new Int32Array(852), e.distcode = e.distdyn = new Int32Array(592), e.sane = 1, e.back = -1, ke
+ },
+ He = t => {
+ if (Ce(t)) return xe;
+ const e = t.state;
+ return e.wsize = 0, e.whave = 0, e.wnext = 0, Me(t)
+ },
+ je = (t, e) => {
+ let a;
+ if (Ce(t)) return xe;
+ const i = t.state;
+ return e < 0 ? (a = 0, e = -e) : (a = 5 + (e >> 4), e < 48 && (e &= 15)), e && (e < 8 || e > 15) ? xe : (null !== i.window && i.wbits !== e && (i.window = null), i.wrap = a, i.wbits = e, He(t))
+ },
+ Ke = (t, e) => {
+ if (!t) return xe;
+ const a = new Be;
+ t.state = a, a.strm = t, a.window = null, a.mode = Ze;
+ const i = je(t, e);
+ return i !== ke && (t.state = null), i
+ };
+ let Pe, Ye, Ge = !0;
+ const Xe = t => {
+ if (Ge) {
+ Pe = new Int32Array(512), Ye = new Int32Array(32);
+ let e = 0;
+ for (; e < 144;) t.lens[e++] = 8;
+ for (; e < 256;) t.lens[e++] = 9;
+ for (; e < 280;) t.lens[e++] = 7;
+ for (; e < 288;) t.lens[e++] = 8;
+ for (me(1, t.lens, 0, 288, Pe, 0, t.work, {
+ bits: 9
+ }), e = 0; e < 32;) t.lens[e++] = 5;
+ me(2, t.lens, 0, 32, Ye, 0, t.work, {
+ bits: 5
+ }), Ge = !1
+ }
+ t.lencode = Pe, t.lenbits = 9, t.distcode = Ye, t.distbits = 5
+ },
+ We = (t, e, a, i) => {
+ let n;
+ const s = t.state;
+ return null === s.window && (s.wsize = 1 << s.wbits, s.wnext = 0, s.whave = 0, s.window = new Uint8Array(s.wsize)), i >= s.wsize ? (s.window.set(e.subarray(a - s.wsize, a), 0), s.wnext = 0, s.whave = s.wsize) : (n = s.wsize - s.wnext, n > i && (n = i), s.window.set(e.subarray(a - i, a - i + n), s.wnext), (i -= n) ? (s.window.set(e.subarray(a - i, a), 0), s.wnext = i, s.whave = s.wsize) : (s.wnext += n, s.wnext === s.wsize && (s.wnext = 0), s.whave < s.wsize && (s.whave += n))), 0
+ };
+ var qe = {
+ inflateReset: He,
+ inflateReset2: je,
+ inflateResetKeep: Me,
+ inflateInit: t => Ke(t, 15),
+ inflateInit2: Ke,
+ inflate: (t, e) => {
+ let a, i, n, s, r, o, l, h, d, _, f, c, u, w, m, b, g, p, k, v, y, x, z = 0;
+ const A = new Uint8Array(4);
+ let E, R;
+ const Z = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+ if (Ce(t) || !t.output || !t.input && 0 !== t.avail_in) return xe;
+ a = t.state, a.mode === Se && (a.mode = De), r = t.next_out, n = t.output, l = t.avail_out, s = t.next_in, i = t.input, o = t.avail_in, h = a.hold, d = a.bits, _ = o, f = l, x = ke;
+ t: for (;;) switch (a.mode) {
+ case Ze:
+ if (0 === a.wrap) {
+ a.mode = De;
+ break
+ }
+ for (; d < 16;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (2 & a.wrap && 35615 === h) {
+ 0 === a.wbits && (a.wbits = 15), a.check = 0, A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0), h = 0, d = 0, a.mode = 16181;
+ break
+ }
+ if (a.head && (a.head.done = !1), !(1 & a.wrap) || (((255 & h) << 8) + (h >> 8)) % 31) {
+ t.msg = "incorrect header check", a.mode = Le;
+ break
+ }
+ if ((15 & h) !== Re) {
+ t.msg = "unknown compression method", a.mode = Le;
+ break
+ }
+ if (h >>>= 4, d -= 4, y = 8 + (15 & h), 0 === a.wbits && (a.wbits = y), y > 15 || y > a.wbits) {
+ t.msg = "invalid window size", a.mode = Le;
+ break
+ }
+ a.dmax = 1 << a.wbits, a.flags = 0, t.adler = a.check = 1, a.mode = 512 & h ? 16189 : Se, h = 0, d = 0;
+ break;
+ case 16181:
+ for (; d < 16;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (a.flags = h, (255 & a.flags) !== Re) {
+ t.msg = "unknown compression method", a.mode = Le;
+ break
+ }
+ if (57344 & a.flags) {
+ t.msg = "unknown header flags set", a.mode = Le;
+ break
+ }
+ a.head && (a.head.text = h >> 8 & 1), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0, a.mode = 16182;
+ case 16182:
+ for (; d < 32;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ a.head && (a.head.time = h), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, A[2] = h >>> 16 & 255, A[3] = h >>> 24 & 255, a.check = H(a.check, A, 4, 0)), h = 0, d = 0, a.mode = 16183;
+ case 16183:
+ for (; d < 16;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ a.head && (a.head.xflags = 255 & h, a.head.os = h >> 8), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0, a.mode = 16184;
+ case 16184:
+ if (1024 & a.flags) {
+ for (; d < 16;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ a.length = h, a.head && (a.head.extra_len = h), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0
+ } else a.head && (a.head.extra = null);
+ a.mode = 16185;
+ case 16185:
+ if (1024 & a.flags && (c = a.length, c > o && (c = o), c && (a.head && (y = a.head.extra_len - a.length, a.head.extra || (a.head.extra = new Uint8Array(a.head.extra_len)), a.head.extra.set(i.subarray(s, s + c), y)), 512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, a.length -= c), a.length)) break t;
+ a.length = 0, a.mode = 16186;
+ case 16186:
+ if (2048 & a.flags) {
+ if (0 === o) break t;
+ c = 0;
+ do {
+ y = i[s + c++], a.head && y && a.length < 65536 && (a.head.name += String.fromCharCode(y))
+ } while (y && c < o);
+ if (512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, y) break t
+ } else a.head && (a.head.name = null);
+ a.length = 0, a.mode = 16187;
+ case 16187:
+ if (4096 & a.flags) {
+ if (0 === o) break t;
+ c = 0;
+ do {
+ y = i[s + c++], a.head && y && a.length < 65536 && (a.head.comment += String.fromCharCode(y))
+ } while (y && c < o);
+ if (512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, y) break t
+ } else a.head && (a.head.comment = null);
+ a.mode = 16188;
+ case 16188:
+ if (512 & a.flags) {
+ for (; d < 16;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (4 & a.wrap && h !== (65535 & a.check)) {
+ t.msg = "header crc mismatch", a.mode = Le;
+ break
+ }
+ h = 0, d = 0
+ }
+ a.head && (a.head.hcrc = a.flags >> 9 & 1, a.head.done = !0), t.adler = a.check = 0, a.mode = Se;
+ break;
+ case 16189:
+ for (; d < 32;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ t.adler = a.check = Ne(h), h = 0, d = 0, a.mode = Ue;
+ case Ue:
+ if (0 === a.havedict) return t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, ye;
+ t.adler = a.check = 1, a.mode = Se;
+ case Se:
+ if (e === ge || e === pe) break t;
+ case De:
+ if (a.last) {
+ h >>>= 7 & d, d -= 7 & d, a.mode = Fe;
+ break
+ }
+ for (; d < 3;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ switch (a.last = 1 & h, h >>>= 1, d -= 1, 3 & h) {
+ case 0:
+ a.mode = 16193;
+ break;
+ case 1:
+ if (Xe(a), a.mode = Oe, e === pe) {
+ h >>>= 2, d -= 2;
+ break t
+ }
+ break;
+ case 2:
+ a.mode = 16196;
+ break;
+ case 3:
+ t.msg = "invalid block type", a.mode = Le
+ }
+ h >>>= 2, d -= 2;
+ break;
+ case 16193:
+ for (h >>>= 7 & d, d -= 7 & d; d < 32;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if ((65535 & h) != (h >>> 16 ^ 65535)) {
+ t.msg = "invalid stored block lengths", a.mode = Le;
+ break
+ }
+ if (a.length = 65535 & h, h = 0, d = 0, a.mode = Te, e === pe) break t;
+ case Te:
+ a.mode = 16195;
+ case 16195:
+ if (c = a.length, c) {
+ if (c > o && (c = o), c > l && (c = l), 0 === c) break t;
+ n.set(i.subarray(s, s + c), r), o -= c, s += c, l -= c, r += c, a.length -= c;
+ break
+ }
+ a.mode = Se;
+ break;
+ case 16196:
+ for (; d < 14;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (a.nlen = 257 + (31 & h), h >>>= 5, d -= 5, a.ndist = 1 + (31 & h), h >>>= 5, d -= 5, a.ncode = 4 + (15 & h), h >>>= 4, d -= 4, a.nlen > 286 || a.ndist > 30) {
+ t.msg = "too many length or distance symbols", a.mode = Le;
+ break
+ }
+ a.have = 0, a.mode = 16197;
+ case 16197:
+ for (; a.have < a.ncode;) {
+ for (; d < 3;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ a.lens[Z[a.have++]] = 7 & h, h >>>= 3, d -= 3
+ }
+ for (; a.have < 19;) a.lens[Z[a.have++]] = 0;
+ if (a.lencode = a.lendyn, a.lenbits = 7, E = {
+ bits: a.lenbits
+ }, x = me(0, a.lens, 0, 19, a.lencode, 0, a.work, E), a.lenbits = E.bits, x) {
+ t.msg = "invalid code lengths set", a.mode = Le;
+ break
+ }
+ a.have = 0, a.mode = 16198;
+ case 16198:
+ for (; a.have < a.nlen + a.ndist;) {
+ for (; z = a.lencode[h & (1 << a.lenbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (g < 16) h >>>= m, d -= m, a.lens[a.have++] = g;
+ else {
+ if (16 === g) {
+ for (R = m + 2; d < R;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (h >>>= m, d -= m, 0 === a.have) {
+ t.msg = "invalid bit length repeat", a.mode = Le;
+ break
+ }
+ y = a.lens[a.have - 1], c = 3 + (3 & h), h >>>= 2, d -= 2
+ } else if (17 === g) {
+ for (R = m + 3; d < R;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ h >>>= m, d -= m, y = 0, c = 3 + (7 & h), h >>>= 3, d -= 3
+ } else {
+ for (R = m + 7; d < R;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ h >>>= m, d -= m, y = 0, c = 11 + (127 & h), h >>>= 7, d -= 7
+ }
+ if (a.have + c > a.nlen + a.ndist) {
+ t.msg = "invalid bit length repeat", a.mode = Le;
+ break
+ }
+ for (; c--;) a.lens[a.have++] = y
+ }
+ }
+ if (a.mode === Le) break;
+ if (0 === a.lens[256]) {
+ t.msg = "invalid code -- missing end-of-block", a.mode = Le;
+ break
+ }
+ if (a.lenbits = 9, E = {
+ bits: a.lenbits
+ }, x = me(1, a.lens, 0, a.nlen, a.lencode, 0, a.work, E), a.lenbits = E.bits, x) {
+ t.msg = "invalid literal/lengths set", a.mode = Le;
+ break
+ }
+ if (a.distbits = 6, a.distcode = a.distdyn, E = {
+ bits: a.distbits
+ }, x = me(2, a.lens, a.nlen, a.ndist, a.distcode, 0, a.work, E), a.distbits = E.bits, x) {
+ t.msg = "invalid distances set", a.mode = Le;
+ break
+ }
+ if (a.mode = Oe, e === pe) break t;
+ case Oe:
+ a.mode = Ie;
+ case Ie:
+ if (o >= 6 && l >= 258) {
+ t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, de(t, f), r = t.next_out, n = t.output, l = t.avail_out, s = t.next_in, i = t.input, o = t.avail_in, h = a.hold, d = a.bits, a.mode === Se && (a.back = -1);
+ break
+ }
+ for (a.back = 0; z = a.lencode[h & (1 << a.lenbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (b && 0 == (240 & b)) {
+ for (p = m, k = b, v = g; z = a.lencode[v + ((h & (1 << p + k) - 1) >> p)], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(p + m <= d);) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ h >>>= p, d -= p, a.back += p
+ }
+ if (h >>>= m, d -= m, a.back += m, a.length = g, 0 === b) {
+ a.mode = 16205;
+ break
+ }
+ if (32 & b) {
+ a.back = -1, a.mode = Se;
+ break
+ }
+ if (64 & b) {
+ t.msg = "invalid literal/length code", a.mode = Le;
+ break
+ }
+ a.extra = 15 & b, a.mode = 16201;
+ case 16201:
+ if (a.extra) {
+ for (R = a.extra; d < R;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ a.length += h & (1 << a.extra) - 1, h >>>= a.extra, d -= a.extra, a.back += a.extra
+ }
+ a.was = a.length, a.mode = 16202;
+ case 16202:
+ for (; z = a.distcode[h & (1 << a.distbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (0 == (240 & b)) {
+ for (p = m, k = b, v = g; z = a.distcode[v + ((h & (1 << p + k) - 1) >> p)], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(p + m <= d);) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ h >>>= p, d -= p, a.back += p
+ }
+ if (h >>>= m, d -= m, a.back += m, 64 & b) {
+ t.msg = "invalid distance code", a.mode = Le;
+ break
+ }
+ a.offset = g, a.extra = 15 & b, a.mode = 16203;
+ case 16203:
+ if (a.extra) {
+ for (R = a.extra; d < R;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ a.offset += h & (1 << a.extra) - 1, h >>>= a.extra, d -= a.extra, a.back += a.extra
+ }
+ if (a.offset > a.dmax) {
+ t.msg = "invalid distance too far back", a.mode = Le;
+ break
+ }
+ a.mode = 16204;
+ case 16204:
+ if (0 === l) break t;
+ if (c = f - l, a.offset > c) {
+ if (c = a.offset - c, c > a.whave && a.sane) {
+ t.msg = "invalid distance too far back", a.mode = Le;
+ break
+ }
+ c > a.wnext ? (c -= a.wnext, u = a.wsize - c) : u = a.wnext - c, c > a.length && (c = a.length), w = a.window
+ } else w = n, u = r - a.offset, c = a.length;
+ c > l && (c = l), l -= c, a.length -= c;
+ do {
+ n[r++] = w[u++]
+ } while (--c);
+ 0 === a.length && (a.mode = Ie);
+ break;
+ case 16205:
+ if (0 === l) break t;
+ n[r++] = a.length, l--, a.mode = Ie;
+ break;
+ case Fe:
+ if (a.wrap) {
+ for (; d < 32;) {
+ if (0 === o) break t;
+ o--, h |= i[s++] << d, d += 8
+ }
+ if (f -= l, t.total_out += f, a.total += f, 4 & a.wrap && f && (t.adler = a.check = a.flags ? H(a.check, n, f, r - f) : C(a.check, n, f, r - f)), f = l, 4 & a.wrap && (a.flags ? h : Ne(h)) !== a.check) {
+ t.msg = "incorrect data check", a.mode = Le;
+ break
+ }
+ h = 0, d = 0
+ }
+ a.mode = 16207;
+ case 16207:
+ if (a.wrap && a.flags) {
+ for (; d < 32;) {
+ if (0 === o) break t;
+ o--, h += i[s++] << d, d += 8
+ }
+ if (4 & a.wrap && h !== (4294967295 & a.total)) {
+ t.msg = "incorrect length check", a.mode = Le;
+ break
+ }
+ h = 0, d = 0
+ }
+ a.mode = 16208;
+ case 16208:
+ x = ve;
+ break t;
+ case Le:
+ x = ze;
+ break t;
+ case 16210:
+ return Ae;
+ default:
+ return xe
+ }
+ return t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, (a.wsize || f !== t.avail_out && a.mode < Le && (a.mode < Fe || e !== be)) && We(t, t.output, t.next_out, f - t.avail_out), _ -= t.avail_in, f -= t.avail_out, t.total_in += _, t.total_out += f, a.total += f, 4 & a.wrap && f && (t.adler = a.check = a.flags ? H(a.check, n, f, t.next_out - f) : C(a.check, n, f, t.next_out - f)), t.data_type = a.bits + (a.last ? 64 : 0) + (a.mode === Se ? 128 : 0) + (a.mode === Oe || a.mode === Te ? 256 : 0), (0 === _ && 0 === f || e === be) && x === ke && (x = Ee), x
+ },
+ inflateEnd: t => {
+ if (Ce(t)) return xe;
+ let e = t.state;
+ return e.window && (e.window = null), t.state = null, ke
+ },
+ inflateGetHeader: (t, e) => {
+ if (Ce(t)) return xe;
+ const a = t.state;
+ return 0 == (2 & a.wrap) ? xe : (a.head = e, e.done = !1, ke)
+ },
+ inflateSetDictionary: (t, e) => {
+ const a = e.length;
+ let i, n, s;
+ return Ce(t) ? xe : (i = t.state, 0 !== i.wrap && i.mode !== Ue ? xe : i.mode === Ue && (n = 1, n = C(n, e, a, 0), n !== i.check) ? ze : (s = We(t, e, a, a), s ? (i.mode = 16210, Ae) : (i.havedict = 1, ke)))
+ },
+ inflateInfo: "pako inflate (from Nodeca project)"
+ };
+ var Je = function() {
+ this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1
+ };
+ const Qe = Object.prototype.toString,
+ {
+ Z_NO_FLUSH: Ve,
+ Z_FINISH: $e,
+ Z_OK: ta,
+ Z_STREAM_END: ea,
+ Z_NEED_DICT: aa,
+ Z_STREAM_ERROR: ia,
+ Z_DATA_ERROR: na,
+ Z_MEM_ERROR: sa
+ } = K;
+
+ function ra(t) {
+ this.options = jt({
+ chunkSize: 65536,
+ windowBits: 15,
+ to: ""
+ }, t || {});
+ const e = this.options;
+ e.raw && e.windowBits >= 0 && e.windowBits < 16 && (e.windowBits = -e.windowBits, 0 === e.windowBits && (e.windowBits = -15)), !(e.windowBits >= 0 && e.windowBits < 16) || t && t.windowBits || (e.windowBits += 32), e.windowBits > 15 && e.windowBits < 48 && 0 == (15 & e.windowBits) && (e.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new qt, this.strm.avail_out = 0;
+ let a = qe.inflateInit2(this.strm, e.windowBits);
+ if (a !== ta) throw new Error(j[a]);
+ if (this.header = new Je, qe.inflateGetHeader(this.strm, this.header), e.dictionary && ("string" == typeof e.dictionary ? e.dictionary = Gt(e.dictionary) : "[object ArrayBuffer]" === Qe.call(e.dictionary) && (e.dictionary = new Uint8Array(e.dictionary)), e.raw && (a = qe.inflateSetDictionary(this.strm, e.dictionary), a !== ta))) throw new Error(j[a])
+ }
+
+ function oa(t, e) {
+ const a = new ra(e);
+ if (a.push(t), a.err) throw a.msg || j[a.err];
+ return a.result
+ }
+ ra.prototype.push = function(t, e) {
+ const a = this.strm,
+ i = this.options.chunkSize,
+ n = this.options.dictionary;
+ let s, r, o;
+ if (this.ended) return !1;
+ for (r = e === ~~e ? e : !0 === e ? $e : Ve, "[object ArrayBuffer]" === Qe.call(t) ? a.input = new Uint8Array(t) : a.input = t, a.next_in = 0, a.avail_in = a.input.length;;) {
+ for (0 === a.avail_out && (a.output = new Uint8Array(i), a.next_out = 0, a.avail_out = i), s = qe.inflate(a, r), s === aa && n && (s = qe.inflateSetDictionary(a, n), s === ta ? s = qe.inflate(a, r) : s === na && (s = aa)); a.avail_in > 0 && s === ea && a.state.wrap > 0 && 0 !== t[a.next_in];) qe.inflateReset(a), s = qe.inflate(a, r);
+ switch (s) {
+ case ia:
+ case na:
+ case aa:
+ case sa:
+ return this.onEnd(s), this.ended = !0, !1
+ }
+ if (o = a.avail_out, a.next_out && (0 === a.avail_out || s === ea))
+ if ("string" === this.options.to) {
+ let t = Wt(a.output, a.next_out),
+ e = a.next_out - t,
+ n = Xt(a.output, t);
+ a.next_out = e, a.avail_out = i - e, e && a.output.set(a.output.subarray(t, t + e), 0), this.onData(n)
+ } else this.onData(a.output.length === a.next_out ? a.output : a.output.subarray(0, a.next_out));
+ if (s !== ta || 0 !== o) {
+ if (s === ea) return s = qe.inflateEnd(this.strm), this.onEnd(s), this.ended = !0, !0;
+ if (0 === a.avail_in) break
+ }
+ }
+ return !0
+ }, ra.prototype.onData = function(t) {
+ this.chunks.push(t)
+ }, ra.prototype.onEnd = function(t) {
+ t === ta && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = Kt(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg
+ };
+ var la = {
+ Inflate: ra,
+ inflate: oa,
+ inflateRaw: function(t, e) {
+ return (e = e || {}).raw = !0, oa(t, e)
+ },
+ ungzip: oa,
+ constants: K
+ };
+ const {
+ Deflate: ha,
+ deflate: da,
+ deflateRaw: _a,
+ gzip: fa
+ } = le, {
+ Inflate: ca,
+ inflate: ua,
+ inflateRaw: wa,
+ ungzip: ma
+ } = la;
+ var ba = ha,
+ ga = da,
+ pa = _a,
+ ka = fa,
+ va = ca,
+ ya = ua,
+ xa = wa,
+ za = ma,
+ Aa = K,
+ Ea = {
+ Deflate: ba,
+ deflate: ga,
+ deflateRaw: pa,
+ gzip: ka,
+ Inflate: va,
+ inflate: ya,
+ inflateRaw: xa,
+ ungzip: za,
+ constants: Aa
+ };
+ t.Deflate = ba, t.Inflate = va, t.constants = Aa, t.default = Ea, t.deflate = ga, t.deflateRaw = pa, t.gzip = ka, t.inflate = ya, t.inflateRaw = xa, t.ungzip = za, Object.defineProperty(t, "__esModule", {
+ value: !0
+ })
+}));
\ No newline at end of file
diff --git a/JS/quark.min.js b/JS/quark.min.js
new file mode 100644
index 0000000..9a165c6
--- /dev/null
+++ b/JS/quark.min.js
@@ -0,0 +1,3057 @@
+import cheerio from "assets://js/lib/cheerio.min.js";
+import "assets://js/lib/crypto-js.js";
+import "./jsencrypt.js";
+import "./node-rsa.js";
+import "./pako.min.js";
+import 模板 from "./模板.js";
+import {
+ gbkTool
+} from "./gbk.js";
+import "./json5.js";
+import "./jinja.js";
+const _jinja2 = cheerio.jinja2;
+cheerio.jinja2 = function(template, obj) {
+ try {
+ return jinja.render(template, obj)
+ } catch (e) {
+ console.log("新的jinja2库渲染失败,换回原始cheerio:" + e.message);
+ return _jinja2(template, obj)
+ }
+};
+let vercode = typeof pdfl === "function" ? "drpy2.1" : "drpy2";
+const VERSION = vercode + " 3.9.51beta5 20241104";
+const UpdateInfo = [{
+ date: "20241104",
+ title: "drpy更新,增加新特性",
+ version: "3.9.51beta5 20241104",
+ msg: `
+ 1. rule增加 搜索验证标识 属性,可以不定义,默认为 '系统安全验证|请输入验证码'
+ 2. rule增加 searchNoPage 属性,可以不定义,如果定义 1 将关闭该源的搜索翻页功能,超过1页直接返回空
+ `
+}];
+
+function getUpdateInfo() {
+ return UpdateInfo.map(_o => {
+ _o.msg = _o.msg.trim().split("\n").map(_it => _it.trim()).join("\n");
+ return _o
+ })
+}
+
+function init_test() {
+ console.log("init_test_start");
+ console.log("当前版本号:" + VERSION);
+ console.log("本地代理地址:" + getProxyUrl());
+ console.log(RKEY);
+ console.log(JSON.stringify(rule));
+ console.log("init_test_end")
+}
+
+function ocr_demo_test() {
+ let img_base64 = `iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`;
+ OcrApi.api = OCR_API;
+ let code = OcrApi.classification(img_base64);
+ log("测试验证码图片的ocr识别结果为:" + code)
+}
+
+function rsa_demo_test() {
+ let t1 = (new Date).getTime();
+ let pkcs1_public = `
+-----BEGIN RSA PUBLIC KEY-----
+MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
+lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
+-----END RSA PUBLIC KEY-----
+`.trim();
+ let pkcs1_public_pem = `
+MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
+lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
+`.trim();
+ let pkcs8_public = `
+-----BEGIN PUBLIC KEY-----
+MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/
+nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ==
+-----END PUBLIC KEY-----`.trim();
+ let pkcs8_public_pem = `
+MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/
+nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ==
+`.trim();
+ let pkcs1_private = `
+-----BEGIN RSA PRIVATE KEY-----
+MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7
+ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt
+0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ
+AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA
+hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+
+5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS
+EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q==
+-----END RSA PRIVATE KEY-----
+`.trim();
+ let pkcs8_private = `
+-----BEGIN PRIVATE KEY-----
+MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf
+dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v
+YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8
+KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8
+s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl
+AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3
+rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6
+lPxDjezd
+-----END PRIVATE KEY-----
+`.trim();
+ let data = `
+NodeRsa
+这是node-rsa 现在修改集成在drpy里使用`.trim();
+ let encryptedWithPublic = NODERSA.encryptRSAWithPublicKey(data, pkcs1_public, {
+ outputEncoding: "base64",
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1_oaep"
+ }
+ });
+ console.log("公钥加密");
+ console.log(encryptedWithPublic);
+ let decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic, pkcs1_private, {
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1_oaep"
+ }
+ });
+ console.log("私钥解密");
+ console.log(decryptedWithPrivate);
+ let pkcs1_sha256_sign = NODERSA.sign("1", pkcs1_private, {
+ outputEncoding: "base64",
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1",
+ signingScheme: "pkcs1-sha256"
+ }
+ });
+ console.log("pkcs1_sha256_sign");
+ console.log(pkcs1_sha256_sign);
+ let pkcs1_sha256_sign_verify = NODERSA.verify("1", "Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==", pkcs1_private, {
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1",
+ signingScheme: "pkcs1-sha256"
+ }
+ });
+ console.log("pkcs1_sha256_sign_verify");
+ console.log(pkcs1_sha256_sign_verify);
+ let pkcs1_oaep_sha256 = NODERSA.encryptRSAWithPublicKey(data, `-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du
+SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm
+kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8
+PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m
+PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb
+Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB
+-----END RSA PUBLIC KEY-----
+`, {
+ outputEncoding: "base64",
+ options: {
+ environment: "browser",
+ encryptionScheme: {
+ scheme: "pkcs1_oaep",
+ hash: "sha256"
+ }
+ }
+ });
+ console.log("pkcs1_oaep_sha256");
+ console.log(pkcs1_oaep_sha256);
+ decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==", `-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is
+T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S
+xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy
+3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+
+HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA
+ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/
+zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31
+iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l
+QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu
+eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ
+8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9
+l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC
+WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J
+NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0
+o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3
+ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ
+I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i
+tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P
+vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p
+yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC
+8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87
+HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN
+QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51
+MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw
+m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA==
+-----END RSA PRIVATE KEY-----`, {
+ options: {
+ environment: "browser",
+ encryptionScheme: "pkcs1_oaep"
+ }
+ });
+ console.log("decryptedWithPrivate");
+ console.log(decryptedWithPrivate);
+ (() => {
+ let key = new NODERSA.NodeRSA({
+ b: 1024
+ });
+ key.setOptions({
+ encryptionScheme: "pkcs1"
+ });
+ let text = `你好drpy node-ras`;
+ let encrypted = key.encrypt(text, "base64");
+ console.log("encrypted: ", encrypted);
+ const decrypted = key.decrypt(encrypted, "utf8");
+ console.log("decrypted: ", decrypted)
+ })();
+ let t2 = (new Date).getTime();
+ console.log("rsa_demo_test 测试耗时:" + (t2 - t1) + "毫秒")
+}
+
+function pre() {
+ if (typeof rule.预处理 === "string" && rule.预处理 && rule.预处理.trim()) {
+ let code = rule.预处理.trim();
+ console.log("执行预处理代码:" + code);
+ if (code.startsWith("js:")) {
+ code = code.replace("js:", "")
+ }
+ try {
+ eval(code)
+ } catch (e) {
+ console.log(`预处理执行失败:${e.message}`)
+ }
+ }
+}
+let rule = {};
+const MOBILE_UA = "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36";
+const PC_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";
+const UA = "Mozilla/5.0";
+const UC_UA = "Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";
+const IOS_UA = "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";
+const RULE_CK = "cookie";
+const CATE_EXCLUDE = "首页|留言|APP|下载|资讯|新闻|动态";
+const TAB_EXCLUDE = "猜你|喜欢|下载|剧情|榜|评论";
+const OCR_RETRY = 3;
+const OCR_API = "https://api.nn.ci/ocr/b64/text";
+if (typeof MY_URL === "undefined") {
+ var MY_URL
+}
+var HOST;
+var RKEY;
+var fetch;
+var print;
+var log;
+var rule_fetch_params;
+var fetch_params;
+var oheaders;
+var _pdfh;
+var _pdfa;
+var _pd;
+const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/;
+const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/;
+const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/;
+const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/;
+const SELECT_REGEX = /:eq|:lt|:gt|#/g;
+const SELECT_REGEX_A = /:eq|:lt|:gt/g;
+const $js = {
+ toString(func) {
+ let strfun = func.toString();
+ return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/, "js:").replace(/\}$/, "")
+ }
+};
+
+function window_b64() {
+ let b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ let base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
+
+ function btoa(str) {
+ var out, i, len;
+ var c1, c2, c3;
+ len = str.length;
+ i = 0;
+ out = "";
+ while (i < len) {
+ c1 = str.charCodeAt(i++) & 255;
+ if (i == len) {
+ out += b64map.charAt(c1 >> 2);
+ out += b64map.charAt((c1 & 3) << 4);
+ out += "==";
+ break
+ }
+ c2 = str.charCodeAt(i++);
+ if (i == len) {
+ out += b64map.charAt(c1 >> 2);
+ out += b64map.charAt((c1 & 3) << 4 | (c2 & 240) >> 4);
+ out += b64map.charAt((c2 & 15) << 2);
+ out += "=";
+ break
+ }
+ c3 = str.charCodeAt(i++);
+ out += b64map.charAt(c1 >> 2);
+ out += b64map.charAt((c1 & 3) << 4 | (c2 & 240) >> 4);
+ out += b64map.charAt((c2 & 15) << 2 | (c3 & 192) >> 6);
+ out += b64map.charAt(c3 & 63)
+ }
+ return out
+ }
+
+ function atob(str) {
+ var c1, c2, c3, c4;
+ var i, len, out;
+ len = str.length;
+ i = 0;
+ out = "";
+ while (i < len) {
+ do {
+ c1 = base64DecodeChars[str.charCodeAt(i++) & 255]
+ } while (i < len && c1 == -1);
+ if (c1 == -1) break;
+ do {
+ c2 = base64DecodeChars[str.charCodeAt(i++) & 255]
+ } while (i < len && c2 == -1);
+ if (c2 == -1) break;
+ out += String.fromCharCode(c1 << 2 | (c2 & 48) >> 4);
+ do {
+ c3 = str.charCodeAt(i++) & 255;
+ if (c3 == 61) return out;
+ c3 = base64DecodeChars[c3]
+ } while (i < len && c3 == -1);
+ if (c3 == -1) break;
+ out += String.fromCharCode((c2 & 15) << 4 | (c3 & 60) >> 2);
+ do {
+ c4 = str.charCodeAt(i++) & 255;
+ if (c4 == 61) return out;
+ c4 = base64DecodeChars[c4]
+ } while (i < len && c4 == -1);
+ if (c4 == -1) break;
+ out += String.fromCharCode((c3 & 3) << 6 | c4)
+ }
+ return out
+ }
+ return {
+ atob: atob,
+ btoa: btoa
+ }
+}
+if (typeof atob !== "function" || typeof btoa !== "function") {
+ var {
+ atob,
+ btoa
+ } = window_b64()
+}
+if (typeof Object.assign !== "function") {
+ Object.assign = function() {
+ let target = arguments[0];
+ for (let i = 1; i < arguments.length; i++) {
+ let source = arguments[i];
+ for (let key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key]
+ }
+ }
+ }
+ return target
+ }
+}
+if (!String.prototype.includes) {
+ String.prototype.includes = function(search, start) {
+ if (typeof start !== "number") {
+ start = 0
+ }
+ if (start + search.length > this.length) {
+ return false
+ } else {
+ return this.indexOf(search, start) !== -1
+ }
+ }
+}
+if (!Array.prototype.includes) {
+ Object.defineProperty(Array.prototype, "includes", {
+ value: function(searchElement, fromIndex) {
+ if (this == null) {
+ throw new TypeError('"this" is null or not defined')
+ }
+ var o = Object(this);
+ var len = o.length >>> 0;
+ if (len === 0) {
+ return false
+ }
+ var n = fromIndex | 0;
+ var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+ while (k < len) {
+ if (o[k] === searchElement) {
+ return true
+ }
+ k++
+ }
+ return false
+ },
+ enumerable: false
+ })
+}
+if (typeof String.prototype.startsWith !== "function") {
+ String.prototype.startsWith = function(prefix) {
+ return this.slice(0, prefix.length) === prefix
+ }
+}
+if (typeof String.prototype.endsWith !== "function") {
+ String.prototype.endsWith = function(suffix) {
+ return this.indexOf(suffix, this.length - suffix.length) !== -1
+ }
+}
+Object.defineProperty(Object.prototype, "myValues", {
+ value: function(obj) {
+ if (obj == null) {
+ throw new TypeError("Cannot convert undefined or null to object")
+ }
+ var res = [];
+ for (var k in obj) {
+ if (obj.hasOwnProperty(k)) {
+ res.push(obj[k])
+ }
+ }
+ return res
+ },
+ enumerable: false
+});
+if (typeof Object.prototype.values !== "function") {
+ Object.defineProperty(Object.prototype, "values", {
+ value: function(obj) {
+ if (obj == null) {
+ throw new TypeError("Cannot convert undefined or null to object")
+ }
+ var res = [];
+ for (var k in obj) {
+ if (obj.hasOwnProperty(k)) {
+ res.push(obj[k])
+ }
+ }
+ return res
+ },
+ enumerable: false
+ })
+}
+if (typeof Array.prototype.join !== "function") {
+ Object.defineProperty(Array.prototype, "join", {
+ value: function(emoji) {
+ emoji = emoji || "";
+ let self = this;
+ let str = "";
+ let i = 0;
+ if (!Array.isArray(self)) {
+ throw String(self) + "is not Array"
+ }
+ if (self.length === 0) {
+ return ""
+ }
+ if (self.length === 1) {
+ return String(self[0])
+ }
+ i = 1;
+ str = this[0];
+ for (; i < self.length; i++) {
+ str += String(emoji) + String(self[i])
+ }
+ return str
+ },
+ enumerable: false
+ })
+}
+if (typeof Array.prototype.toReversed !== "function") {
+ Object.defineProperty(Array.prototype, "toReversed", {
+ value: function() {
+ const clonedList = this.slice();
+ const reversedList = clonedList.reverse();
+ return reversedList
+ },
+ enumerable: false
+ })
+}
+Object.defineProperty(Array.prototype, "append", {
+ value: Array.prototype.push,
+ enumerable: false
+});
+Object.defineProperty(String.prototype, "strip", {
+ value: String.prototype.trim,
+ enumerable: false
+});
+Object.defineProperty(String.prototype, "rstrip", {
+ value: function(chars) {
+ let regex = new RegExp(chars + "$");
+ return this.replace(regex, "")
+ },
+ enumerable: false
+});
+
+function 是否正版(vipUrl) {
+ let flag = new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv");
+ return flag.test(vipUrl)
+}
+
+function urlDeal(vipUrl) {
+ if (!vipUrl) {
+ return ""
+ }
+ if (!是否正版(vipUrl)) {
+ return vipUrl
+ }
+ if (!/miguvideo/.test(vipUrl)) {
+ vipUrl = vipUrl.split("#")[0].split("?")[0]
+ }
+ return vipUrl
+}
+
+function setResult(d) {
+ if (!Array.isArray(d)) {
+ return []
+ }
+ VODS = [];
+ d.forEach(function(it) {
+ let obj = {
+ vod_id: it.url || "",
+ vod_name: it.title || "",
+ vod_remarks: it.desc || "",
+ vod_content: it.content || "",
+ vod_pic: it.pic_url || it.img || ""
+ };
+ let keys = Object.keys(it);
+ if (keys.includes("tname")) {
+ obj.type_name = it.tname || ""
+ }
+ if (keys.includes("tid")) {
+ obj.type_id = it.tid || ""
+ }
+ if (keys.includes("year")) {
+ obj.vod_year = it.year || ""
+ }
+ if (keys.includes("actor")) {
+ obj.vod_actor = it.actor || ""
+ }
+ if (keys.includes("director")) {
+ obj.vod_director = it.director || ""
+ }
+ if (keys.includes("area")) {
+ obj.vod_area = it.area || ""
+ }
+ VODS.push(obj)
+ });
+ return VODS
+}
+
+function setResult2(res) {
+ VODS = res.list || [];
+ return VODS
+}
+
+function setHomeResult(res) {
+ if (!res || typeof res !== "object") {
+ return []
+ }
+ return setResult(res.list)
+}
+
+function rc(js) {
+ if (js === "maomi_aes.js") {
+ var a = CryptoJS.enc.Utf8.parse("625222f9149e961d");
+ var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");
+ return {
+ De: function(word) {
+ word = CryptoJS.enc.Hex.parse(word);
+ return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, {
+ iv: t,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8)
+ },
+ En: function(word) {
+ var Encrypted = CryptoJS.AES.encrypt(word, a, {
+ iv: t,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+ return Encrypted.ciphertext.toString()
+ }
+ }
+ }
+ return {}
+}
+
+function maoss(jxurl, ref, key) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ eval(getCryptoJS());
+ try {
+ var getVideoInfo = function(text) {
+ return CryptoJS.AES.decrypt(text, key, {
+ iv: iv,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8)
+ };
+ var token_key = key == undefined ? "dvyYRQlnPRCMdQSe" : key;
+ if (ref) {
+ var html = request(jxurl, {
+ headers: {
+ Referer: ref
+ }
+ })
+ } else {
+ var html = request(jxurl)
+ }
+ if (html.indexOf("&btwaf=") != -1) {
+ html = request(jxurl + "&btwaf" + html.match(/&btwaf(.*?)"/)[1], {
+ headers: {
+ Referer: ref
+ }
+ })
+ }
+ var token_iv = html.split('_token = "')[1].split('"')[0];
+ var key = CryptoJS.enc.Utf8.parse(token_key);
+ var iv = CryptoJS.enc.Utf8.parse(token_iv);
+ eval(html.match(/var config = {[\s\S]*?}/)[0] + "");
+ if (!config.url.startsWith("http")) {
+ config.url = CryptoJS.AES.decrypt(config.url, key, {
+ iv: iv,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8)
+ }
+ return config.url
+ } catch (e) {
+ return ""
+ }
+}
+
+function urlencode(str) {
+ str = (str + "").toString();
+ return encodeURIComponent(str).replace(/!/g, "%21").replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/\*/g, "%2A").replace(/%20/g, "+")
+}
+
+function encodeUrl(str) {
+ if (typeof encodeURI == "function") {
+ return encodeURI(str)
+ } else {
+ str = (str + "").toString();
+ return encodeURIComponent(str).replace(/%2F/g, "/").replace(/%3F/g, "?").replace(/%3A/g, ":").replace(/%40/g, "@").replace(/%3D/g, "=").replace(/%3A/g, ":").replace(/%2C/g, ",").replace(/%2B/g, "+").replace(/%24/g, "$")
+ }
+}
+
+function base64Encode(text) {
+ return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text))
+}
+
+function base64Decode(text) {
+ return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))
+}
+
+function md5(text) {
+ return CryptoJS.MD5(text).toString()
+}
+
+function uint8ArrayToBase64(uint8Array) {
+ let binaryString = String.fromCharCode.apply(null, Array.from(uint8Array));
+ return btoa(binaryString)
+}
+
+function Utf8ArrayToStr(array) {
+ var out, i, len, c;
+ var char2, char3;
+ out = "";
+ len = array.length;
+ i = 0;
+ while (i < len) {
+ c = array[i++];
+ switch (c >> 4) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ out += String.fromCharCode(c);
+ break;
+ case 12:
+ case 13:
+ char2 = array[i++];
+ out += String.fromCharCode((c & 31) << 6 | char2 & 63);
+ break;
+ case 14:
+ char2 = array[i++];
+ char3 = array[i++];
+ out += String.fromCharCode((c & 15) << 12 | (char2 & 63) << 6 | (char3 & 63) << 0);
+ break
+ }
+ }
+ return out
+}
+
+function gzip(str) {
+ let arr = pako.gzip(str, {});
+ return uint8ArrayToBase64(arr)
+}
+
+function ungzip(b64Data) {
+ let strData = atob(b64Data);
+ const charData = strData.split("").map(function(x) {
+ return x.charCodeAt(0)
+ });
+ const binData = new Uint8Array(charData);
+ const data = pako.inflate(binData);
+ return Utf8ArrayToStr(data)
+}
+
+function encodeStr(input, encoding) {
+ encoding = encoding || "gbk";
+ if (encoding.startsWith("gb")) {
+ const strTool = gbkTool();
+ input = strTool.encode(input)
+ }
+ return input
+}
+
+function decodeStr(input, encoding) {
+ encoding = encoding || "gbk";
+ if (encoding.startsWith("gb")) {
+ const strTool = gbkTool();
+ input = strTool.decode(input)
+ }
+ return input
+}
+
+function getCryptoJS() {
+ return 'console.log("CryptoJS已装载");'
+}
+const RSA = {
+ decode: function(data, key, option) {
+ option = option || {};
+ if (typeof JSEncrypt === "function") {
+ let chunkSize = option.chunkSize || 117;
+ let privateKey = this.getPrivateKey(key);
+ const decryptor = new JSEncrypt;
+ decryptor.setPrivateKey(privateKey);
+ let uncrypted = "";
+ uncrypted = decryptor.decryptUnicodeLong(data);
+ return uncrypted
+ } else {
+ return false
+ }
+ },
+ encode: function(data, key, option) {
+ option = option || {};
+ if (typeof JSEncrypt === "function") {
+ let chunkSize = option.chunkSize || 117;
+ let publicKey = this.getPublicKey(key);
+ const encryptor = new JSEncrypt;
+ encryptor.setPublicKey(publicKey);
+ let encrypted = "";
+ encrypted = encryptor.encryptUnicodeLong(data);
+ return encrypted
+ } else {
+ return false
+ }
+ },
+ fixKey(key, prefix, endfix) {
+ if (!key.includes(prefix)) {
+ key = prefix + key
+ }
+ if (!key.includes(endfix)) {
+ key += endfix
+ }
+ return key
+ },
+ getPrivateKey(key) {
+ let prefix = "-----BEGIN RSA PRIVATE KEY-----";
+ let endfix = "-----END RSA PRIVATE KEY-----";
+ return this.fixKey(key, prefix, endfix)
+ },
+ getPublicKey(key) {
+ let prefix = "-----BEGIN PUBLIC KEY-----";
+ let endfix = "-----END PUBLIC KEY-----";
+ return this.fixKey(key, prefix, endfix)
+ }
+};
+
+function getProxyUrl() {
+ if (typeof getProxy === "function") {
+ return getProxy(true)
+ } else {
+ return "http://127.0.0.1:9978/proxy?do=js"
+ }
+}
+
+function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) {
+ if (!m3u8_text && !m3u8_url || !m3u8_text && m3u8_url && !m3u8_url.startsWith("http")) {
+ return ""
+ }
+ if (!m3u8_text) {
+ log("m3u8_url:" + m3u8_url);
+ m3u8_text = request(m3u8_url)
+ }
+ log("len(m3u8_text):" + m3u8_text.length);
+ if (!ad_remove) {
+ return m3u8_text
+ }
+ if (ad_remove.startsWith("reg:")) {
+ ad_remove = ad_remove.slice(4)
+ } else if (ad_remove.startsWith("js:")) {
+ ad_remove = ad_remove.slice(3)
+ }
+ let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf("#EXTINF")).trim();
+ let m3u8_body = m3u8_text.slice(m3u8_text.indexOf("#EXTINF"), m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();
+ let m3u8_end = m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();
+ let murls = [];
+ let m3_body_list = m3u8_body.split("\n");
+ let m3_len = m3_body_list.length;
+ let i = 0;
+ while (i < m3_len) {
+ let mi = m3_body_list[i];
+ let mi_1 = m3_body_list[i + 1];
+ if (mi.startsWith("#EXTINF")) {
+ murls.push([mi, mi_1].join("&"));
+ i += 2
+ } else if (mi.startsWith("#EXT-X-DISCONTINUITY")) {
+ let mi_2 = m3_body_list[i + 2];
+ murls.push([mi, mi_1, mi_2].join("&"));
+ i += 3
+ } else {
+ break
+ }
+ }
+ let new_m3u8_body = [];
+ for (let murl of murls) {
+ if (ad_remove && new RegExp(ad_remove).test(murl)) {} else {
+ let murl_list = murl.split("&");
+ if (!murl_list[murl_list.length - 1].startsWith("http") && m3u8_url.startsWith("http")) {
+ murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1])
+ }
+ murl_list.forEach(it => {
+ new_m3u8_body.push(it)
+ })
+ }
+ }
+ new_m3u8_body = new_m3u8_body.join("\n").trim();
+ m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join("\n").trim();
+ return m3u8_text
+}
+
+function fixAdM3u8Ai(m3u8_url, headers) {
+ let ts = (new Date).getTime();
+ let option = headers ? {
+ headers: headers
+ } : {};
+
+ function b(s1, s2) {
+ let i = 0;
+ while (i < s1.length) {
+ if (s1[i] !== s2[i]) {
+ break
+ }
+ i++
+ }
+ return i
+ }
+
+ function reverseString(str) {
+ return str.split("").reverse().join("")
+ }
+ let m3u8 = request(m3u8_url, option);
+ m3u8 = m3u8.trim().split("\n").map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)).join("\n");
+ m3u8 = m3u8.replace(/\n\n/gi, "\n");
+ let last_url = m3u8.split("\n").slice(-1)[0];
+ if (last_url.length < 5) {
+ last_url = m3u8.split("\n").slice(-2)[0]
+ }
+ if (last_url.includes(".m3u8") && last_url !== m3u8_url) {
+ m3u8_url = urljoin2(m3u8_url, last_url);
+ log("嵌套的m3u8_url:" + m3u8_url);
+ m3u8 = request(m3u8_url, option)
+ }
+ let s = m3u8.trim().split("\n").filter(it => it.trim()).join("\n");
+ let ss = s.split("\n");
+ let firststr = "";
+ let maxl = 0;
+ let kk = 0;
+ let kkk = 2;
+ let secondstr = "";
+ for (let i = 0; i < ss.length; i++) {
+ let s = ss[i];
+ if (!s.startsWith("#")) {
+ if (kk == 0) firststr = s;
+ if (kk == 1) maxl = b(firststr, s);
+ if (kk > 1) {
+ if (maxl > b(firststr, s)) {
+ if (secondstr.length < 5) secondstr = s;
+ kkk = kkk + 2
+ } else {
+ maxl = b(firststr, s);
+ kkk++
+ }
+ }
+ kk++;
+ if (kk >= 20) break
+ }
+ }
+ if (kkk > 30) firststr = secondstr;
+ let firststrlen = firststr.length;
+ let ml = Math.round(ss.length / 2).toString().length;
+ let maxc = 0;
+ let laststr = ss.toReversed().find(x => {
+ if (!x.startsWith("#")) {
+ let k = b(reverseString(firststr), reverseString(x));
+ maxl = b(firststr, x);
+ maxc++;
+ if (firststrlen - maxl <= ml + k || maxc > 10) {
+ return true
+ }
+ }
+ return false
+ });
+ log("最后一条切片:" + laststr);
+ let ad_urls = [];
+ for (let i = 0; i < ss.length; i++) {
+ let s = ss[i];
+ if (!s.startsWith("#")) {
+ if (b(firststr, s) < maxl) {
+ ad_urls.push(s);
+ ss.splice(i - 1, 2);
+ i = i - 2
+ } else {
+ ss[i] = urljoin(m3u8_url, s)
+ }
+ } else {
+ ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"')
+ }
+ }
+ log("处理的m3u8地址:" + m3u8_url);
+ log("----广告地址----");
+ log(ad_urls);
+ m3u8 = ss.join("\n");
+ log("处理耗时:" + ((new Date).getTime() - ts).toString());
+ return m3u8
+}
+
+function forceOrder(lists, key, option) {
+ let start = Math.floor(lists.length / 2);
+ let end = Math.min(lists.length - 1, start + 1);
+ if (start >= end) {
+ return lists
+ }
+ let first = lists[start];
+ let second = lists[end];
+ if (key) {
+ try {
+ first = first[key];
+ second = second[key]
+ } catch (e) {}
+ }
+ if (option && typeof option === "function") {
+ try {
+ first = option(first);
+ second = option(second)
+ } catch (e) {}
+ }
+ first += "";
+ second += "";
+ if (first.match(/(\d+)/) && second.match(/(\d+)/)) {
+ let num1 = Number(first.match(/(\d+)/)[1]);
+ let num2 = Number(second.match(/(\d+)/)[1]);
+ if (num1 > num2) {
+ lists.reverse()
+ }
+ }
+ return lists
+}
+let VODS = [];
+let VOD = {};
+let TABS = [];
+let LISTS = [];
+
+function getQuery(url) {
+ try {
+ if (url.indexOf("?") > -1) {
+ url = url.slice(url.indexOf("?") + 1)
+ }
+ let arr = url.split("#")[0].split("&");
+ const resObj = {};
+ arr.forEach(item => {
+ let arr1 = item.split("=");
+ let key = arr1[0];
+ let value = arr1.slice(1).join("=");
+ resObj[key] = value
+ });
+ return resObj
+ } catch (err) {
+ log(`getQuery发生错误:${e.message}`);
+ return {}
+ }
+}
+
+function urljoin(fromPath, nowPath) {
+ fromPath = fromPath || "";
+ nowPath = nowPath || "";
+ return joinUrl(fromPath, nowPath)
+}
+var urljoin2 = urljoin;
+const defaultParser = {
+ pdfh: pdfh,
+ pdfa: pdfa,
+ pd: pd
+};
+
+function pdfh2(html, parse) {
+ let html2 = html;
+ try {
+ if (typeof html !== "string") {
+ html2 = html.rr(html.ele).toString()
+ }
+ } catch (e) {
+ print(`html对象转文本发生了错误:${e.message}`)
+ }
+ let result = defaultParser.pdfh(html2, parse);
+ let option = parse.includes("&&") ? parse.split("&&").slice(-1)[0] : parse.split(" ").slice(-1)[0];
+ if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) {
+ try {
+ result = result.match(/url\((.*?)\)/)[1];
+ result = result.replace(/^['|"](.*)['|"]$/, "$1")
+ } catch (e) {}
+ }
+ return result
+}
+
+function pdfa2(html, parse) {
+ let html2 = html;
+ try {
+ if (typeof html !== "string") {
+ html2 = html.rr(html.ele).toString()
+ }
+ } catch (e) {
+ print(`html对象转文本发生了错误:${e.message}`)
+ }
+ return defaultParser.pdfa(html2, parse)
+}
+
+function pd2(html, parse, uri) {
+ let ret = pdfh2(html, parse);
+ if (typeof uri === "undefined" || !uri) {
+ uri = ""
+ }
+ if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) {
+ if (/http/.test(ret)) {
+ ret = ret.slice(ret.indexOf("http"))
+ } else {
+ ret = urljoin(MY_URL, ret)
+ }
+ }
+ return ret
+}
+const parseTags = {
+ jsp: {
+ pdfh: pdfh2,
+ pdfa: pdfa2,
+ pd: pd2
+ },
+ json: {
+ pdfh(html, parse) {
+ if (!parse || !parse.trim()) {
+ return ""
+ }
+ if (typeof html === "string") {
+ html = JSON.parse(html)
+ }
+ parse = parse.trim();
+ if (!parse.startsWith("$.")) {
+ parse = "$." + parse
+ }
+ parse = parse.split("||");
+ for (let ps of parse) {
+ let ret = cheerio.jp(ps, html);
+ if (Array.isArray(ret)) {
+ ret = ret[0] || ""
+ } else {
+ ret = ret || ""
+ }
+ if (ret && typeof ret !== "string") {
+ ret = ret.toString()
+ }
+ if (ret) {
+ return ret
+ }
+ }
+ return ""
+ },
+ pdfa(html, parse) {
+ if (!parse || !parse.trim()) {
+ return ""
+ }
+ if (typeof html === "string") {
+ html = JSON.parse(html)
+ }
+ parse = parse.trim();
+ if (!parse.startsWith("$.")) {
+ parse = "$." + parse
+ }
+ let ret = cheerio.jp(parse, html);
+ if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) {
+ return ret[0] || []
+ }
+ return ret || []
+ },
+ pd(html, parse) {
+ let ret = parseTags.json.pdfh(html, parse);
+ if (ret) {
+ return urljoin(MY_URL, ret)
+ }
+ return ret
+ }
+ },
+ jq: {
+ pdfh(html, parse) {
+ if (!html || !parse || !parse.trim()) {
+ return ""
+ }
+ parse = parse.trim();
+ let result = defaultParser.pdfh(html, parse);
+ return result
+ },
+ pdfa(html, parse) {
+ if (!html || !parse || !parse.trim()) {
+ return []
+ }
+ parse = parse.trim();
+ let result = defaultParser.pdfa(html, parse);
+ print(`pdfa解析${parse}=>${result.length}`);
+ return result
+ },
+ pd(html, parse, base_url) {
+ if (!html || !parse || !parse.trim()) {
+ return ""
+ }
+ parse = parse.trim();
+ base_url = base_url || MY_URL;
+ return defaultParser.pd(html, parse, base_url)
+ }
+ },
+ getParse(p0) {
+ if (p0.startsWith("jsp:")) {
+ return this.jsp
+ } else if (p0.startsWith("json:")) {
+ return this.json
+ } else if (p0.startsWith("jq:")) {
+ return this.jq
+ } else {
+ return this.jq
+ }
+ }
+};
+const stringify = JSON.stringify;
+const jsp = parseTags.jsp;
+const jq = parseTags.jq;
+
+function readFile(filePath) {
+ filePath = filePath || "./uri.min.js";
+ var fd = os.open(filePath);
+ var buffer = new ArrayBuffer(1024);
+ var len = os.read(fd, buffer, 0, 1024);
+ console.log(len);
+ let text = String.fromCharCode.apply(null, new Uint8Array(buffer));
+ console.log(text);
+ return text
+}
+
+function dealJson(html) {
+ try {
+ html = html.trim();
+ if (!(html.startsWith("{") && html.endsWith("}") || html.startsWith("[") && html.endsWith("]"))) {
+ html = "{" + html.match(/.*?\{(.*)\}/m)[1] + "}"
+ }
+ } catch (e) {}
+ try {
+ html = JSON.parse(html)
+ } catch (e) {}
+ return html
+}
+var OcrApi = {
+ api: OCR_API,
+ classification: function(img) {
+ let code = "";
+ try {
+ log("通过drpy_ocr验证码接口过验证...");
+ let html = "";
+ if (this.api.endsWith("drpy/text")) {
+ html = request(this.api, {
+ data: {
+ img: img
+ },
+ headers: {
+ "User-Agent": PC_UA
+ },
+ method: "POST"
+ }, true)
+ } else {
+ html = post(this.api, {
+ body: img
+ })
+ }
+ code = html || ""
+ } catch (e) {
+ log(`OCR识别验证码发生错误:${e.message}`)
+ }
+ return code
+ }
+};
+
+function verifyCode(url) {
+ let cnt = 0;
+ let host = getHome(url);
+ let cookie = "";
+ while (cnt < OCR_RETRY) {
+ try {
+ let yzm_url = `${host}/index.php/verify/index.html`;
+ console.log(`验证码链接:${yzm_url}`);
+ let hhtml = request(yzm_url, {
+ withHeaders: true,
+ toBase64: true
+ }, true);
+ let json = JSON.parse(hhtml);
+ if (!cookie) {
+ let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie");
+ cookie = setCk ? json[setCk].split(";")[0] : ""
+ }
+ console.log("cookie:" + cookie);
+ let img = json.body;
+ let code = OcrApi.classification(img);
+ console.log(`第${cnt+1}次验证码识别结果:${code}`);
+ let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`;
+ console.log(submit_url);
+ let html = request(submit_url, {
+ headers: {
+ Cookie: cookie
+ },
+ method: "POST"
+ });
+ html = JSON.parse(html);
+ if (html.msg === "ok") {
+ console.log(`第${cnt+1}次验证码提交成功`);
+ return cookie
+ } else if (html.msg !== "ok" && cnt + 1 >= OCR_RETRY) {
+ cookie = ""
+ }
+ } catch (e) {
+ console.log(`第${cnt+1}次验证码提交失败:${e.message}`);
+ if (cnt + 1 >= OCR_RETRY) {
+ cookie = ""
+ }
+ }
+ cnt += 1
+ }
+ return cookie
+}
+
+function setItem(k, v) {
+ local.set(RKEY, k, v);
+ console.log(`规则${RKEY}设置${k} => ${v}`)
+}
+
+function getItem(k, v) {
+ return local.get(RKEY, k) || v
+}
+
+function clearItem(k) {
+ local.delete(RKEY, k)
+}
+
+function getHome(url) {
+ if (!url) {
+ return ""
+ }
+ let tmp = url.split("//");
+ url = tmp[0] + "//" + tmp[1].split("/")[0];
+ try {
+ url = decodeURIComponent(url)
+ } catch (e) {}
+ return url
+}
+
+function buildUrl(url, obj) {
+ obj = obj || {};
+ if (url.indexOf("?") < 0) {
+ url += "?"
+ }
+ let param_list = [];
+ let keys = Object.keys(obj);
+ keys.forEach(it => {
+ param_list.push(it + "=" + obj[it])
+ });
+ let prs = param_list.join("&");
+ if (keys.length > 0 && !url.endsWith("?")) {
+ url += "&"
+ }
+ url += prs;
+ return url
+}
+
+function $require(url) {
+ eval(request(url))
+}
+
+function keysToLowerCase(obj) {
+ return Object.keys(obj).reduce((result, key) => {
+ const newKey = key.toLowerCase();
+ result[newKey] = obj[key];
+ return result
+ }, {})
+}
+
+function parseQueryString(query) {
+ const params = {};
+ query.split("&").forEach(function(part) {
+ const regex = /^(.*?)=(.*)/;
+ const match = part.match(regex);
+ if (match) {
+ const key = decodeURIComponent(match[1]);
+ const value = decodeURIComponent(match[2]);
+ params[key] = value
+ }
+ });
+ return params
+}
+
+function encodeIfContainsSpecialChars(value) {
+ const specialChars = ":/?#[]@!$'()*+,;=%";
+ if (specialChars.split("").some(char => value.includes(char))) {
+ return encodeURIComponent(value)
+ }
+ return value
+}
+
+function objectToQueryString(obj) {
+ const encoded = [];
+ for (let key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ encoded.push(encodeURIComponent(key) + "=" + encodeIfContainsSpecialChars(obj[key]))
+ }
+ }
+ return encoded.join("&")
+}
+
+function request(url, obj, ocr_flag) {
+ ocr_flag = ocr_flag || false;
+ if (typeof obj === "undefined" || !obj || obj === {}) {
+ if (!fetch_params || !fetch_params.headers) {
+ let headers = {
+ "User-Agent": MOBILE_UA
+ };
+ if (rule.headers) {
+ Object.assign(headers, rule.headers)
+ }
+ if (!fetch_params) {
+ fetch_params = {}
+ }
+ fetch_params.headers = headers
+ }
+ if (!fetch_params.headers.Referer) {
+ fetch_params.headers.Referer = getHome(url)
+ }
+ obj = fetch_params
+ } else {
+ let headers = obj.headers || {};
+ let keys = Object.keys(headers).map(it => it.toLowerCase());
+ if (!keys.includes("user-agent")) {
+ headers["User-Agent"] = MOBILE_UA;
+ if (typeof fetch_params === "object" && fetch_params && fetch_params.headers) {
+ let fetch_headers = keysToLowerCase(fetch_params.headers);
+ if (fetch_headers["user-agent"]) {
+ headers["User-Agent"] = fetch_headers["user-agent"]
+ }
+ }
+ }
+ if (!keys.includes("referer")) {
+ headers["Referer"] = getHome(url)
+ }
+ obj.headers = headers
+ }
+ if (rule.encoding && rule.encoding !== "utf-8" && !ocr_flag) {
+ if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) {
+ obj.headers["Content-Type"] = "text/html; charset=" + rule.encoding
+ }
+ }
+ if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "string") {
+ if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) {
+ obj.headers["Content-Type"] = "application/x-www-form-urlencoded; charset=" + rule.encoding
+ }
+ } else if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "object") {
+ obj.data = obj.body;
+ delete obj.body
+ }
+ if (!url) {
+ return obj.withHeaders ? "{}" : ""
+ }
+ if (obj.toBase64) {
+ obj.buffer = 2;
+ delete obj.toBase64
+ }
+ if (obj.redirect === false) {
+ obj.redirect = 0
+ }
+ if (obj.headers.hasOwnProperty("Content-Type") || obj.headers.hasOwnProperty("content-type")) {
+ let _contentType = obj.headers["Content-Type"] || obj.headers["content-type"] || "";
+ if (_contentType.includes("application/x-www-form-urlencoded")) {
+ log("custom body is application/x-www-form-urlencoded");
+ if (typeof obj.body == "string") {
+ let temp_obj = parseQueryString(obj.body);
+ console.log(JSON.stringify(temp_obj))
+ }
+ }
+ }
+ console.log(JSON.stringify(obj.headers));
+ console.log("request:" + url + `|method:${obj.method||"GET"}|body:${obj.body||""}`);
+ let res = req(url, obj);
+ let html = res.content || "";
+ if (obj.withHeaders) {
+ let htmlWithHeaders = res.headers;
+ htmlWithHeaders.body = html;
+ return JSON.stringify(htmlWithHeaders)
+ } else {
+ return html
+ }
+}
+
+function post(url, obj) {
+ obj = obj || {};
+ obj.method = "POST";
+ return request(url, obj)
+}
+
+function reqCookie(url, obj, all_cookie) {
+ obj = obj || {};
+ obj.withHeaders = true;
+ all_cookie = all_cookie || false;
+ let html = request(url, obj);
+ let json = JSON.parse(html);
+ let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie");
+ let cookie = setCk ? json[setCk] : "";
+ if (Array.isArray(cookie)) {
+ cookie = cookie.join(";")
+ }
+ if (!all_cookie) {
+ cookie = cookie.split(";")[0]
+ }
+ html = json.body;
+ return {
+ cookie: cookie,
+ html: html
+ }
+}
+fetch = request;
+print = function(data) {
+ data = data || "";
+ if (typeof data == "object" && Object.keys(data).length > 0) {
+ try {
+ data = JSON.stringify(data);
+ console.log(data)
+ } catch (e) {
+ console.log(typeof data + ":" + data.length);
+ return
+ }
+ } else if (typeof data == "object" && Object.keys(data).length < 1) {
+ console.log("null object")
+ } else {
+ console.log(data)
+ }
+};
+log = print;
+
+function checkHtml(html, url, obj) {
+ if (/\?btwaf=/.test(html)) {
+ let btwaf = html.match(/btwaf(.*?)"/)[1];
+ url = url.split("#")[0] + "?btwaf" + btwaf;
+ print("宝塔验证访问链接:" + url);
+ html = request(url, obj)
+ }
+ return html
+}
+
+function getCode(url, obj) {
+ let html = request(url, obj);
+ html = checkHtml(html, url, obj);
+ return html
+}
+
+function getHtml(url) {
+ let obj = {};
+ if (rule.headers) {
+ obj.headers = rule.headers
+ }
+ let cookie = getItem(RULE_CK, "");
+ if (cookie) {
+ if (obj.headers && !Object.keys(obj.headers).map(it => it.toLowerCase()).includes("cookie")) {
+ log("历史无cookie,新增过验证后的cookie");
+ obj.headers["Cookie"] = cookie
+ } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) {
+ obj.headers["Cookie"] = cookie;
+ log("历史有小写过期的cookie,更新过验证后的cookie")
+ } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) {
+ obj.headers["Cookie"] = cookie;
+ log("历史有大写过期的cookie,更新过验证后的cookie")
+ } else if (!obj.headers) {
+ obj.headers = {
+ Cookie: cookie
+ };
+ log("历史无headers,更新过验证后的含cookie的headers")
+ }
+ }
+ let html = getCode(url, obj);
+ return html
+}
+
+function homeParse(homeObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let classes = [];
+ if (homeObj.class_name && homeObj.class_url) {
+ let names = homeObj.class_name.split("&");
+ let urls = homeObj.class_url.split("&");
+ let cnt = Math.min(names.length, urls.length);
+ for (let i = 0; i < cnt; i++) {
+ classes.push({
+ type_id: urls[i],
+ type_name: names[i]
+ })
+ }
+ }
+ if (homeObj.class_parse) {
+ if (homeObj.class_parse.startsWith("js:")) {
+ var input = homeObj.MY_URL;
+ try {
+ eval(homeObj.class_parse.replace("js:", ""));
+ if (Array.isArray(input)) {
+ classes = input
+ }
+ } catch (e) {
+ log(`通过js动态获取分类发生了错误:${e.message}`)
+ }
+ } else {
+ let p = homeObj.class_parse.split(";");
+ let p0 = p[0];
+ let _ps = parseTags.getParse(p0);
+ let is_json = p0.startsWith("json:");
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ MY_URL = rule.url;
+ if (is_json) {
+ try {
+ let cms_cate_url = homeObj.MY_URL.replace("ac=detail", "ac=list");
+ let html = homeObj.home_html || getHtml(cms_cate_url);
+ if (html) {
+ if (cms_cate_url === homeObj.MY_URL) {
+ homeHtmlCache = html
+ }
+ let list = _pdfa(html, p0.replace("json:", ""));
+ if (list && list.length > 0) {
+ classes = list
+ }
+ }
+ } catch (e) {
+ console.log(e.message)
+ }
+ } else if (p.length >= 3 && !is_json) {
+ try {
+ let html = homeObj.home_html || getHtml(homeObj.MY_URL);
+ if (html) {
+ homeHtmlCache = html;
+ let list = _pdfa(html, p0);
+ if (list && list.length > 0) {
+ list.forEach((it, idex) => {
+ try {
+ let name = _pdfh(it, p[1]);
+ if (homeObj.cate_exclude && new RegExp(homeObj.cate_exclude).test(name)) {
+ return
+ }
+ let url = _pd(it, p[2]);
+ if (p.length > 3 && p[3] && !homeObj.home_html) {
+ let exp = new RegExp(p[3]);
+ url = url.match(exp)[1]
+ }
+ classes.push({
+ type_id: url.trim(),
+ type_name: name.trim()
+ })
+ } catch (e) {
+ console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)
+ }
+ })
+ }
+ }
+ } catch (e) {
+ console.log(e.message)
+ }
+ }
+ }
+ }
+ classes = classes.filter(it => !homeObj.cate_exclude || !new RegExp(homeObj.cate_exclude).test(it.type_name));
+ let resp = {
+ class: classes
+ };
+ if (homeObj.filter) {
+ resp.filters = homeObj.filter
+ }
+ console.log(JSON.stringify(resp));
+ return JSON.stringify(resp)
+}
+
+function getPP(p, pn, pp, ppn) {
+ try {
+ let ps = p[pn] === "*" && pp.length > ppn ? pp[ppn] : p[pn];
+ return ps
+ } catch (e) {
+ return ""
+ }
+}
+
+function homeVodParse(homeVodObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let d = [];
+ MY_URL = homeVodObj.homeUrl;
+ console.log(MY_URL);
+ let t1 = (new Date).getTime();
+ let p = homeVodObj.推荐;
+ print("p:" + p);
+ if (p === "*" && rule.一级) {
+ p = rule.一级;
+ homeVodObj.double = false
+ }
+ if (!p || typeof p !== "string") {
+ return "{}"
+ }
+ p = p.trim();
+ let pp = rule.一级 ? rule.一级.split(";") : [];
+ if (p.startsWith("js:")) {
+ const TYPE = "home";
+ var input = MY_URL;
+ HOST = rule.host;
+ eval(p.replace("js:", ""));
+ d = VODS
+ } else {
+ p = p.split(";");
+ if (!homeVodObj.double && p.length < 5) {
+ return "{}"
+ } else if (homeVodObj.double && p.length < 6) {
+ return "{}"
+ }
+ let p0 = getPP(p, 0, pp, 0);
+ let _ps = parseTags.getParse(p0);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p0.startsWith("json:");
+ p0 = p0.replace(/^(jsp:|json:|jq:)/, "");
+ let html = homeHtmlCache || getHtml(MY_URL);
+ homeHtmlCache = undefined;
+ if (is_json) {
+ html = dealJson(html)
+ }
+ try {
+ console.log("double:" + homeVodObj.double);
+ if (homeVodObj.double) {
+ let items = _pdfa(html, p0);
+ let p1 = getPP(p, 1, pp, 0);
+ let p2 = getPP(p, 2, pp, 1);
+ let p3 = getPP(p, 3, pp, 2);
+ let p4 = getPP(p, 4, pp, 3);
+ let p5 = getPP(p, 5, pp, 4);
+ let p6 = getPP(p, 6, pp, 5);
+ for (let item of items) {
+ let items2 = _pdfa(item, p1);
+ for (let item2 of items2) {
+ try {
+ let title = _pdfh(item2, p2);
+ let img = "";
+ try {
+ img = _pd(item2, p3)
+ } catch (e) {}
+ let desc = "";
+ try {
+ desc = _pdfh(item2, p4)
+ } catch (e) {}
+ let links = [];
+ for (let _p5 of p5.split("+")) {
+ let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5);
+ links.push(link)
+ }
+ let content;
+ if (p.length > 6 && p[6]) {
+ content = _pdfh(item2, p6)
+ } else {
+ content = ""
+ }
+ let vid = links.join("$");
+ if (rule.二级 === "*") {
+ vid = vid + "@@" + title + "@@" + img
+ }
+ let vod = {
+ vod_name: title,
+ vod_pic: img,
+ vod_remarks: desc,
+ vod_content: content,
+ vod_id: vid
+ };
+ d.push(vod)
+ } catch (e) {
+ console.log(`首页列表双层定位处理发生错误:${e.message}`)
+ }
+ }
+ }
+ } else {
+ let items = _pdfa(html, p0);
+ let p1 = getPP(p, 1, pp, 1);
+ let p2 = getPP(p, 2, pp, 2);
+ let p3 = getPP(p, 3, pp, 3);
+ let p4 = getPP(p, 4, pp, 4);
+ let p5 = getPP(p, 5, pp, 5);
+ for (let item of items) {
+ try {
+ let title = _pdfh(item, p1);
+ let img = "";
+ try {
+ img = _pd(item, p2, MY_URL)
+ } catch (e) {}
+ let desc = "";
+ try {
+ desc = _pdfh(item, p3)
+ } catch (e) {}
+ let links = [];
+ for (let _p5 of p4.split("+")) {
+ let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5);
+ links.push(link)
+ }
+ let content;
+ if (p.length > 5 && p[5]) {
+ content = _pdfh(item, p5)
+ } else {
+ content = ""
+ }
+ let vid = links.join("$");
+ if (rule.二级 === "*") {
+ vid = vid + "@@" + title + "@@" + img
+ }
+ let vod = {
+ vod_name: title,
+ vod_pic: img,
+ vod_remarks: desc,
+ vod_content: content,
+ vod_id: vid
+ };
+ d.push(vod)
+ } catch (e) {
+ console.log(`首页列表单层定位处理发生错误:${e.message}`)
+ }
+ }
+ }
+ } catch (e) {}
+ }
+ let t2 = (new Date).getTime();
+ console.log("加载首页推荐耗时:" + (t2 - t1) + "毫秒");
+ if (rule.图片替换) {
+ if (rule.图片替换.startsWith("js:")) {
+ d.forEach(it => {
+ try {
+ var input = it.vod_pic;
+ eval(rule.图片替换.trim().replace("js:", ""));
+ it.vod_pic = input
+ } catch (e) {
+ log(`图片:${it.vod_pic}替换错误:${e.message}`)
+ }
+ })
+ } else if (rule.图片替换.includes("=>")) {
+ let replace_from = rule.图片替换.split("=>")[0];
+ let replace_to = rule.图片替换.split("=>")[1];
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic.replace(replace_from, replace_to)
+ }
+ })
+ }
+ }
+ if (rule.图片来源) {
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic + rule.图片来源
+ }
+ })
+ }
+ if (d.length > 0) {
+ print(d.slice(0, 2))
+ }
+ return JSON.stringify({
+ list: d
+ })
+}
+
+function categoryParse(cateObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let p = cateObj.一级;
+ if (!p || typeof p !== "string") {
+ return "{}"
+ }
+ let d = [];
+ let url = cateObj.url.replaceAll("fyclass", cateObj.tid);
+ if (cateObj.pg === 1 && url.includes("[") && url.includes("]")) {
+ url = url.split("[")[1].split("]")[0]
+ } else if (cateObj.pg > 1 && url.includes("[") && url.includes("]")) {
+ url = url.split("[")[0]
+ }
+ if (rule.filter_url) {
+ if (!/fyfilter/.test(url)) {
+ if (!url.endsWith("&") && !rule.filter_url.startsWith("&")) {
+ url += "&"
+ }
+ url += rule.filter_url
+ } else {
+ url = url.replace("fyfilter", rule.filter_url)
+ }
+ url = url.replaceAll("fyclass", cateObj.tid);
+ let fl = cateObj.filter ? cateObj.extend : {};
+ if (rule.filter_def && typeof rule.filter_def === "object") {
+ try {
+ if (Object.keys(rule.filter_def).length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) {
+ let self_fl_def = rule.filter_def[cateObj.tid];
+ if (self_fl_def && typeof self_fl_def === "object") {
+ let fl_def = JSON.parse(JSON.stringify(self_fl_def));
+ fl = Object.assign(fl_def, fl)
+ }
+ }
+ } catch (e) {
+ print(`合并不同分类对应的默认筛选出错:${e.message}`)
+ }
+ }
+ let new_url;
+ new_url = cheerio.jinja2(url, {
+ fl: fl,
+ fyclass: cateObj.tid
+ });
+ url = new_url
+ }
+ if (/fypage/.test(url)) {
+ if (url.includes("(") && url.includes(")")) {
+ let url_rep = url.match(/.*?\((.*)\)/)[1];
+ let cnt_page = url_rep.replaceAll("fypage", cateObj.pg);
+ let cnt_pg = eval(cnt_page);
+ url = url.replaceAll(url_rep, cnt_pg).replaceAll("(", "").replaceAll(")", "")
+ } else {
+ url = url.replaceAll("fypage", cateObj.pg)
+ }
+ }
+ MY_URL = url;
+ console.log(MY_URL);
+ p = p.trim();
+ const MY_CATE = cateObj.tid;
+ if (p.startsWith("js:")) {
+ var MY_FL = cateObj.extend;
+ const TYPE = "cate";
+ var input = MY_URL;
+ const MY_PAGE = cateObj.pg;
+ var desc = "";
+ eval(p.trim().replace("js:", ""));
+ d = VODS
+ } else {
+ p = p.split(";");
+ if (p.length < 5) {
+ return "{}"
+ }
+ let _ps = parseTags.getParse(p[0]);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p[0].startsWith("json:");
+ p[0] = p[0].replace(/^(jsp:|json:|jq:)/, "");
+ try {
+ let html = getHtml(MY_URL);
+ if (html) {
+ if (is_json) {
+ html = dealJson(html)
+ }
+ let list = _pdfa(html, p[0]);
+ list.forEach(it => {
+ let links = p[4].split("+").map(p4 => {
+ return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4)
+ });
+ let link = links.join("$");
+ let vod_id = rule.detailUrl ? MY_CATE + "$" + link : link;
+ let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g, "").trim();
+ let vod_pic = _pd(it, p[2], MY_URL);
+ if (rule.二级 === "*") {
+ vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic
+ }
+ d.push({
+ vod_id: vod_id,
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ vod_remarks: _pdfh(it, p[3]).replace(/\n|\t/g, "").trim()
+ })
+ })
+ }
+ } catch (e) {
+ console.log(e.message)
+ }
+ }
+ if (rule.图片替换) {
+ if (rule.图片替换.startsWith("js:")) {
+ d.forEach(it => {
+ try {
+ var input = it.vod_pic;
+ eval(rule.图片替换.trim().replace("js:", ""));
+ it.vod_pic = input
+ } catch (e) {
+ log(`图片:${it.vod_pic}替换错误:${e.message}`)
+ }
+ })
+ } else if (rule.图片替换.includes("=>")) {
+ let replace_from = rule.图片替换.split("=>")[0];
+ let replace_to = rule.图片替换.split("=>")[1];
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic.replace(replace_from, replace_to)
+ }
+ })
+ }
+ }
+ if (rule.图片来源) {
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic + rule.图片来源
+ }
+ })
+ }
+ if (d.length > 0) {
+ print(d.slice(0, 2))
+ }
+ let pagecount = 0;
+ if (rule.pagecount && typeof rule.pagecount === "object" && rule.pagecount.hasOwnProperty(MY_CATE)) {
+ print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);
+ pagecount = parseInt(rule.pagecount[MY_CATE])
+ }
+ let nodata = {
+ list: [{
+ vod_name: "无数据,防无限请求",
+ vod_id: "no_data",
+ vod_remarks: "不要点,会崩的",
+ vod_pic: "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"
+ }],
+ total: 1,
+ pagecount: 1,
+ page: 1,
+ limit: 1
+ };
+ let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({
+ page: parseInt(cateObj.pg),
+ pagecount: pagecount || 999,
+ limit: 20,
+ total: 999,
+ list: d
+ });
+ return vod
+}
+
+function searchParse(searchObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let d = [];
+ if (!searchObj.searchUrl) {
+ return "{}"
+ }
+ if (rule.searchNoPage && Number(searchObj.pg) > 1) {
+ return "{}"
+ }
+ let p = searchObj.搜索 === "*" && rule.一级 ? rule.一级 : searchObj.搜索;
+ if (!p || typeof p !== "string") {
+ return "{}"
+ }
+ p = p.trim();
+ let pp = rule.一级 ? rule.一级.split(";") : [];
+ let url = searchObj.searchUrl.replaceAll("**", searchObj.wd);
+ if (searchObj.pg === 1 && url.includes("[") && url.includes("]") && !url.includes("#")) {
+ url = url.split("[")[1].split("]")[0]
+ } else if (searchObj.pg > 1 && url.includes("[") && url.includes("]") && !url.includes("#")) {
+ url = url.split("[")[0]
+ }
+ if (/fypage/.test(url)) {
+ if (url.includes("(") && url.includes(")")) {
+ let url_rep = url.match(/.*?\((.*)\)/)[1];
+ let cnt_page = url_rep.replaceAll("fypage", searchObj.pg);
+ let cnt_pg = eval(cnt_page);
+ url = url.replaceAll(url_rep, cnt_pg).replaceAll("(", "").replaceAll(")", "")
+ } else {
+ url = url.replaceAll("fypage", searchObj.pg)
+ }
+ }
+ MY_URL = url;
+ console.log(MY_URL);
+ if (p.startsWith("js:")) {
+ const TYPE = "search";
+ const MY_PAGE = searchObj.pg;
+ const KEY = searchObj.wd;
+ var input = MY_URL;
+ var detailUrl = rule.detailUrl || "";
+ eval(p.trim().replace("js:", ""));
+ d = VODS
+ } else {
+ p = p.split(";");
+ if (p.length < 5) {
+ return "{}"
+ }
+ let p0 = getPP(p, 0, pp, 0);
+ let _ps = parseTags.getParse(p0);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p0.startsWith("json:");
+ p0 = p0.replace(/^(jsp:|json:|jq:)/, "");
+ try {
+ let req_method = MY_URL.split(";").length > 1 ? MY_URL.split(";")[1].toLowerCase() : "get";
+ let html;
+ if (req_method === "post") {
+ let rurls = MY_URL.split(";")[0].split("#");
+ let rurl = rurls[0];
+ let params = rurls.length > 1 ? rurls[1] : "";
+ print(`post=》rurl:${rurl},params:${params}`);
+ let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let postData = {
+ body: params
+ };
+ Object.assign(_fetch_params, postData);
+ html = post(rurl, _fetch_params)
+ } else if (req_method === "postjson") {
+ let rurls = MY_URL.split(";")[0].split("#");
+ let rurl = rurls[0];
+ let params = rurls.length > 1 ? rurls[1] : "";
+ print(`postjson-》rurl:${rurl},params:${params}`);
+ try {
+ params = JSON.parse(params)
+ } catch (e) {
+ params = "{}"
+ }
+ let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let postData = {
+ body: params
+ };
+ Object.assign(_fetch_params, postData);
+ html = post(rurl, _fetch_params)
+ } else {
+ html = getHtml(MY_URL)
+ }
+ if (html) {
+ let search_tag = rule.搜索验证标识 || "系统安全验证|输入验证码";
+ if (new RegExp(search_tag).test(html)) {
+ let cookie = verifyCode(MY_URL);
+ if (cookie) {
+ console.log(`本次成功过验证,cookie:${cookie}`);
+ setItem(RULE_CK, cookie)
+ } else {
+ console.log(`本次自动过搜索验证失败,cookie:${cookie}`)
+ }
+ html = getHtml(MY_URL)
+ }
+ if (!html.includes(searchObj.wd)) {
+ console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");
+ console.log(html)
+ }
+ if (is_json) {
+ html = dealJson(html)
+ }
+ let list = _pdfa(html, p0);
+ let p1 = getPP(p, 1, pp, 1);
+ let p2 = getPP(p, 2, pp, 2);
+ let p3 = getPP(p, 3, pp, 3);
+ let p4 = getPP(p, 4, pp, 4);
+ let p5 = getPP(p, 5, pp, 5);
+ list.forEach(it => {
+ let links = p4.split("+").map(_p4 => {
+ return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4)
+ });
+ let link = links.join("$");
+ let content;
+ if (p.length > 5 && p[5]) {
+ content = _pdfh(it, p5)
+ } else {
+ content = ""
+ }
+ let vod_id = link;
+ let vod_name = _pdfh(it, p1).replace(/\n|\t/g, "").trim();
+ let vod_pic = _pd(it, p2, MY_URL);
+ if (rule.二级 === "*") {
+ vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic
+ }
+ let ob = {
+ vod_id: vod_id,
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ vod_remarks: _pdfh(it, p3).replace(/\n|\t/g, "").trim(),
+ vod_content: content.replace(/\n|\t/g, "").trim()
+ };
+ d.push(ob)
+ })
+ }
+ } catch (e) {
+ print(`搜索发生错误:${e.message}`);
+ return "{}"
+ }
+ }
+ if (rule.图片替换) {
+ if (rule.图片替换.startsWith("js:")) {
+ d.forEach(it => {
+ try {
+ var input = it.vod_pic;
+ eval(rule.图片替换.trim().replace("js:", ""));
+ it.vod_pic = input
+ } catch (e) {
+ log(`图片:${it.vod_pic}替换错误:${e.message}`)
+ }
+ })
+ } else if (rule.图片替换.includes("=>")) {
+ let replace_from = rule.图片替换.split("=>")[0];
+ let replace_to = rule.图片替换.split("=>")[1];
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic.replace(replace_from, replace_to)
+ }
+ })
+ }
+ }
+ if (rule.图片来源) {
+ d.forEach(it => {
+ if (it.vod_pic && it.vod_pic.startsWith("http")) {
+ it.vod_pic = it.vod_pic + rule.图片来源
+ }
+ })
+ }
+ return JSON.stringify({
+ page: parseInt(searchObj.pg),
+ pagecount: 10,
+ limit: 20,
+ total: 100,
+ list: d
+ })
+}
+
+function detailParse(detailObj) {
+ let t1 = (new Date).getTime();
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let orId = detailObj.orId;
+ let vod_name = "片名";
+ let vod_pic = "";
+ let vod_id = orId;
+ if (rule.二级 === "*") {
+ let extra = orId.split("@@");
+ vod_name = extra.length > 1 ? extra[1] : vod_name;
+ vod_pic = extra.length > 2 ? extra[2] : vod_pic
+ }
+ let vod = {
+ vod_id: vod_id,
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ type_name: "类型",
+ vod_year: "年份",
+ vod_area: "地区",
+ vod_remarks: "更新信息",
+ vod_actor: "主演",
+ vod_director: "导演",
+ vod_content: "简介"
+ };
+ let p = detailObj.二级;
+ let url = detailObj.url;
+ let detailUrl = detailObj.detailUrl;
+ let fyclass = detailObj.fyclass;
+ let tab_exclude = detailObj.tab_exclude;
+ let html = detailObj.html || "";
+ MY_URL = url;
+ if (detailObj.二级访问前) {
+ try {
+ print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);
+ eval(detailObj.二级访问前.trim().replace("js:", ""))
+ } catch (e) {
+ print(`二级访问前执行代码出现错误:${e.message}`)
+ }
+ }
+ if (p === "*") {
+ vod.vod_play_from = "夸克云盘";
+ vod.vod_remarks = detailUrl;
+ vod.vod_actor = "没有二级,只有一级链接直接嗅探播放";
+ vod.vod_content = MY_URL;
+ vod.vod_play_url = "嗅探播放$" + MY_URL.split("@@")[0]
+ } else if (typeof p === "string" && p.trim().startsWith("js:")) {
+ const TYPE = "detail";
+ var input = MY_URL;
+ var play_url = "";
+ eval(p.trim().replace("js:", ""));
+ vod = VOD;
+ console.log(JSON.stringify(vod))
+ } else if (p && typeof p === "object") {
+ let tt1 = (new Date).getTime();
+ if (!html) {
+ html = getHtml(MY_URL)
+ }
+ print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);
+ let _ps;
+ if (p.is_json) {
+ print("二级是json");
+ _ps = parseTags.json;
+ html = dealJson(html)
+ } else if (p.is_jsp) {
+ print("二级是jsp");
+ _ps = parseTags.jsp
+ } else if (p.is_jq) {
+ print("二级是jq");
+ _ps = parseTags.jq
+ } else {
+ print("二级默认jq");
+ _ps = parseTags.jq
+ }
+ let tt2 = (new Date).getTime();
+ print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ if (p.title) {
+ let p1 = p.title.split(";");
+ vod.vod_name = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim();
+ let type_name = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, "").replace(/ /g, "").trim() : "";
+ vod.type_name = type_name || vod.type_name
+ }
+ if (p.desc) {
+ try {
+ let p1 = p.desc.split(";");
+ vod.vod_remarks = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim();
+ vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, "").trim() : "";
+ vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]).replace(/\n|\t/g, "").trim() : "";
+ vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replace(/\n|\t/g, "").trim() : "";
+ vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]).replace(/\n|\t/g, "").trim() : ""
+ } catch (e) {}
+ }
+ if (p.content) {
+ try {
+ let p1 = p.content.split(";");
+ vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim()
+ } catch (e) {}
+ }
+ if (p.img) {
+ try {
+ let p1 = p.img.split(";");
+ vod.vod_pic = _pd(html, p1[0], MY_URL)
+ } catch (e) {}
+ }
+ let vod_play_from = "$$$";
+ let playFrom = [];
+ if (p.重定向 && p.重定向.startsWith("js:")) {
+ print("开始执行重定向代码:" + p.重定向);
+ html = eval(p.重定向.replace("js:", ""))
+ }
+ if (p.tabs) {
+ if (p.tabs.startsWith("js:")) {
+ print("开始执行tabs代码:" + p.tabs);
+ var input = MY_URL;
+ eval(p.tabs.replace("js:", ""));
+ playFrom = TABS
+ } else {
+ let p_tab = p.tabs.split(";")[0];
+ let vHeader = _pdfa(html, p_tab);
+ console.log(vHeader.length);
+ let tab_text = p.tab_text || "body&&Text";
+ let new_map = {};
+ for (let v of vHeader) {
+ let v_title = _pdfh(v, tab_text).trim();
+ if (!v_title) {
+ v_title = "线路空"
+ }
+ console.log(v_title);
+ if (tab_exclude && new RegExp(tab_exclude).test(v_title)) {
+ continue
+ }
+ if (!new_map.hasOwnProperty(v_title)) {
+ new_map[v_title] = 1
+ } else {
+ new_map[v_title] += 1
+ }
+ if (new_map[v_title] > 1) {
+ v_title += Number(new_map[v_title] - 1)
+ }
+ playFrom.push(v_title)
+ }
+ }
+ console.log(JSON.stringify(playFrom))
+ } else {
+ playFrom = ["夸克云盘"]
+ }
+ vod.vod_play_from = playFrom.join(vod_play_from);
+ let vod_play_url = "$$$";
+ let vod_tab_list = [];
+ if (p.lists) {
+ if (p.lists.startsWith("js:")) {
+ print("开始执行lists代码:" + p.lists);
+ try {
+ var input = MY_URL;
+ var play_url = "";
+ eval(p.lists.replace("js:", ""));
+ for (let i in LISTS) {
+ if (LISTS.hasOwnProperty(i)) {
+ try {
+ LISTS[i] = LISTS[i].map(it => it.split("$").slice(0, 2).join("$"))
+ } catch (e) {
+ print(`格式化LISTS发生错误:${e.message}`)
+ }
+ }
+ }
+ vod_play_url = LISTS.map(it => it.join("#")).join(vod_play_url)
+ } catch (e) {
+ print(`js执行lists: 发生错误:${e.message}`)
+ }
+ } else {
+ let list_text = p.list_text || "body&&Text";
+ let list_url = p.list_url || "a&&href";
+ let list_url_prefix = p.list_url_prefix || "";
+ let is_tab_js = p.tabs.trim().startsWith("js:");
+ for (let i = 0; i < playFrom.length; i++) {
+ let tab_name = playFrom[i];
+ let tab_ext = p.tabs.split(";").length > 1 && !is_tab_js ? p.tabs.split(";")[1] : "";
+ let p1 = p.lists.replaceAll("#idv", tab_name).replaceAll("#id", i);
+ tab_ext = tab_ext.replaceAll("#idv", tab_name).replaceAll("#id", i);
+ let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name;
+ console.log(tabName);
+ let new_vod_list = [];
+ let tt1 = (new Date).getTime();
+ if (typeof pdfl === "function") {
+ new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL);
+ if (list_url_prefix) {
+ new_vod_list = new_vod_list.map(it => it.split("$")[0] + "$" + list_url_prefix + it.split("$").slice(1).join("$"))
+ }
+ } else {
+ let vodList = [];
+ try {
+ vodList = _pdfa(html, p1);
+ console.log("len(vodList):" + vodList.length)
+ } catch (e) {}
+ for (let i = 0; i < vodList.length; i++) {
+ let it = vodList[i];
+ new_vod_list.push(_pdfh(it, list_text).trim() + "$" + list_url_prefix + _pd(it, list_url, MY_URL))
+ }
+ }
+ if (new_vod_list.length > 0) {
+ new_vod_list = forceOrder(new_vod_list, "", x => x.split("$")[0]);
+ console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)
+ }
+ let vlist = new_vod_list.join("#");
+ vod_tab_list.push(vlist)
+ }
+ vod_play_url = vod_tab_list.join(vod_play_url)
+ }
+ }
+ vod.vod_play_url = vod_play_url
+ }
+ if (rule.图片替换 && rule.图片替换.includes("=>")) {
+ let replace_from = rule.图片替换.split("=>")[0];
+ let replace_to = rule.图片替换.split("=>")[1];
+ vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to)
+ }
+ if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith("http")) {
+ vod.vod_pic = vod.vod_pic + rule.图片来源
+ }
+ if (!vod.vod_id || vod_id.includes("$") && vod.vod_id !== vod_id) {
+ vod.vod_id = vod_id
+ }
+ let t2 = (new Date).getTime();
+ console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);
+ try {
+ vod = vodDeal(vod)
+ } catch (e) {
+ console.log(`vodDeal发生错误:${e.message}`)
+ }
+ return JSON.stringify({
+ list: [vod]
+ })
+}
+
+function get_tab_index(vod) {
+ let obj = {};
+ vod.vod_play_from.split("$$$").forEach((it, index) => {
+ obj[it] = index
+ });
+ return obj
+}
+
+function vodDeal(vod) {
+ let vod_play_from = vod.vod_play_from.split("$$$");
+ let vod_play_url = vod.vod_play_url.split("$$$");
+ let tab_removed_list = vod_play_from;
+ let tab_ordered_list = vod_play_from;
+ let tab_renamed_list = vod_play_from;
+ let tab_list = vod_play_from;
+ let play_ordered_list = vod_play_url;
+ if (rule.tab_remove && rule.tab_remove.length > 0 || rule.tab_order && rule.tab_order.length > 0) {
+ let tab_index_dict = get_tab_index(vod);
+ if (rule.tab_remove && rule.tab_remove.length > 0) {
+ tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it));
+ tab_list = tab_removed_list
+ }
+ if (rule.tab_order && rule.tab_order.length > 0) {
+ let tab_order = rule.tab_order;
+ tab_ordered_list = tab_removed_list.sort((a, b) => {
+ return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b))
+ });
+ tab_list = tab_ordered_list
+ }
+ play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]])
+ }
+ if (rule.tab_rename && typeof rule.tab_rename === "object" & Object.keys(rule.tab_rename).length > 0) {
+ tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it);
+ tab_list = tab_renamed_list
+ }
+ vod.vod_play_from = tab_list.join("$$$");
+ vod.vod_play_url = play_ordered_list.join("$$$");
+ return vod
+}
+
+function tellIsJx(url) {
+ try {
+ let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0]) && 是否正版(url);
+ return is_vip ? 1 : 0
+ } catch (e) {
+ return 1
+ }
+}
+
+function playParse(playObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ MY_URL = playObj.url;
+ var MY_FLAG = playObj.flag;
+ if (!/http/.test(MY_URL)) {
+ try {
+ MY_URL = base64Decode(MY_URL)
+ } catch (e) {}
+ }
+ MY_URL = decodeURIComponent(MY_URL);
+ var input = MY_URL;
+ var flag = MY_FLAG;
+ let common_play = {
+ parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1,
+ url: input,
+ flag: flag,
+ jx: tellIsJx(input)
+ };
+ let lazy_play;
+ if (!rule.play_parse || !rule.lazy) {
+ lazy_play = common_play
+ } else if (rule.play_parse && rule.lazy && typeof rule.lazy === "string") {
+ try {
+ let lazy_code = rule.lazy.trim();
+ if (lazy_code.startsWith("js:")) {
+ lazy_code = lazy_code.replace("js:", "").trim()
+ }
+ print("开始执行js免嗅=>" + lazy_code);
+ eval(lazy_code);
+ lazy_play = typeof input === "object" ? input : {
+ parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1,
+ jx: tellIsJx(input),
+ url: input
+ }
+ } catch (e) {
+ print(`js免嗅错误:${e.message}`);
+ lazy_play = common_play
+ }
+ } else {
+ lazy_play = common_play
+ }
+ if (Array.isArray(rule.play_json) && rule.play_json.length > 0) {
+ let web_url = lazy_play.url;
+ for (let pjson of rule.play_json) {
+ if (pjson.re && (pjson.re === "*" || web_url.match(new RegExp(pjson.re)))) {
+ if (pjson.json && typeof pjson.json === "object") {
+ let base_json = pjson.json;
+ lazy_play = Object.assign(lazy_play, base_json);
+ break
+ }
+ }
+ }
+ } else if (rule.play_json && !Array.isArray(rule.play_json)) {
+ let base_json = {
+ jx: 1,
+ parse: 1
+ };
+ lazy_play = Object.assign(lazy_play, base_json)
+ } else if (!rule.play_json) {
+ let base_json = {
+ jx: 0,
+ parse: 1
+ };
+ lazy_play = Object.assign(lazy_play, base_json)
+ }
+ console.log(JSON.stringify(lazy_play));
+ return JSON.stringify(lazy_play)
+}
+
+function proxyParse(proxyObj) {
+ var input = proxyObj.params;
+ if (proxyObj.proxy_rule) {
+ log("准备执行本地代理规则:\n" + proxyObj.proxy_rule);
+ try {
+ eval(proxyObj.proxy_rule);
+ if (input && input !== proxyObj.params && Array.isArray(input) && input.length >= 3) {
+ return input
+ } else {
+ return [404, "text/plain", "Not Found"]
+ }
+ } catch (e) {
+ return [500, "text/plain", "代理规则错误:" + e.message]
+ }
+ } else {
+ return [404, "text/plain", "Not Found"]
+ }
+}
+
+function isVideoParse(isVideoObj) {
+ var input = isVideoObj.url;
+ if (!isVideoObj.t) {
+ let re_matcher = new RegExp(isVideoObj.isVideo, "i");
+ return re_matcher.test(input)
+ } else {
+ try {
+ eval(isVideoObj.isVideo);
+ if (typeof input === "boolean") {
+ return input
+ } else {
+ return false
+ }
+ } catch (e) {
+ log(`执行嗅探规则发生错误:${e.message}`);
+ return false
+ }
+ }
+}
+
+function getOriginalJs(js_code) {
+ let current_match = /var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/;
+ if (current_match.test(js_code)) {
+ return js_code
+ }
+ let rsa_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs=";
+ let decode_content = "";
+
+ function aes_decrypt(data) {
+ let key = CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A");
+ let iv = CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A");
+ let encrypted = CryptoJS.AES.decrypt({
+ ciphertext: CryptoJS.enc.Base64.parse(data)
+ }, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8);
+ return encrypted
+ }
+ let error_log = false;
+
+ function logger(text) {
+ if (error_log) {
+ log(text)
+ }
+ }
+ let decode_funcs = [text => {
+ try {
+ return ungzip(text)
+ } catch (e) {
+ logger("非gzip加密");
+ return ""
+ }
+ }, text => {
+ try {
+ return base64Decode(text)
+ } catch (e) {
+ logger("非b64加密");
+ return ""
+ }
+ }, text => {
+ try {
+ return aes_decrypt(text)
+ } catch (e) {
+ logger("非aes加密");
+ return ""
+ }
+ }, text => {
+ try {
+ return RSA.decode(text, rsa_private_key, null)
+ } catch (e) {
+ logger("非rsa加密");
+ return ""
+ }
+ }];
+ let func_index = 0;
+ while (!current_match.test(decode_content)) {
+ decode_content = decode_funcs[func_index](js_code);
+ func_index++;
+ if (func_index >= decode_funcs.length) {
+ break
+ }
+ }
+ return decode_content
+}
+
+function runMain(main_func_code, arg) {
+ let mainFunc = function() {
+ return ""
+ };
+ try {
+ eval(main_func_code + "\nmainFunc=main;");
+ return mainFunc(arg)
+ } catch (e) {
+ log(`执行main_funct发生了错误:${e.message}`);
+ return ""
+ }
+}
+
+function init(ext) {
+ console.log("init");
+ rule = {};
+ rule_fetch_params = {};
+ fetch_params = null;
+ try {
+ let muban = 模板.getMubans();
+ if (typeof ext == "object") {
+ rule = ext
+ } else if (typeof ext == "string") {
+ let is_file = ext.startsWith("file://");
+ if (ext.startsWith("http") || is_file) {
+ let query = getQuery(ext);
+ if (is_file) {
+ ext = ext.split("?")[0]
+ }
+ let js = request(ext, {
+ method: "GET"
+ });
+ if (js) {
+ js = getOriginalJs(js);
+ eval("(function(){" + js.replace("var rule", "rule") + "})()")
+ }
+ if (query.type === "url" && query.params) {
+ if (is_file && /^http/.test(query.params)) {
+ rule.params = query.params
+ } else {
+ rule.params = urljoin(ext, query.params)
+ }
+ } else if (query.params) {
+ rule.params = query.params
+ }
+ } else {
+ ext = getOriginalJs(ext);
+ eval("(function(){" + ext.replace("var rule", "rule") + "})()")
+ }
+ } else {
+ console.log(`规则加载失败,不支持的规则类型:${typeof ext}`);
+ return
+ }
+ rule.host = (rule.host || "").rstrip("/");
+ HOST = rule.host;
+ if (rule.hostJs) {
+ console.log(`检测到hostJs,准备执行...`);
+ try {
+ eval(rule.hostJs);
+ rule.host = HOST.rstrip("/")
+ } catch (e) {
+ console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`)
+ }
+ }
+ if (rule["模板"] === "自动") {
+ try {
+ let host_headers = rule["headers"] || {};
+ let host_html = getCode(HOST, {
+ headers: host_headers
+ });
+ let match_muban = "";
+ let muban_keys = Object.keys(muban).filter(it => !/默认|短视2|采集1/.test(it));
+ for (let muban_key of muban_keys) {
+ try {
+ let host_data = JSON.parse(home({}, host_html, muban[muban_key].class_parse));
+ if (host_data.class && host_data.class.length > 0) {
+ match_muban = muban_key;
+ console.log(`自动匹配模板:【${muban_key}】`);
+ break
+ }
+ } catch (e) {
+ console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`)
+ }
+ }
+ if (match_muban) {
+ muban["自动"] = muban[match_muban];
+ if (rule["模板修改"] && rule["模板修改"].startsWith("js:")) {
+ eval(rule["模板修改"].replace("js:", "").trim())
+ }
+ } else {
+ delete rule["模板"]
+ }
+ } catch (e) {
+ delete rule["模板"]
+ }
+ }
+ if (rule.模板 && muban.hasOwnProperty(rule.模板)) {
+ print("继承模板:" + rule.模板);
+ rule = Object.assign(muban[rule.模板], rule)
+ }
+ let rule_cate_excludes = (rule.cate_exclude || "").split("|").filter(it => it.trim());
+ let rule_tab_excludes = (rule.tab_exclude || "").split("|").filter(it => it.trim());
+ rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it => it.trim()));
+ rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it => it.trim()));
+ rule.cate_exclude = rule_cate_excludes.join("|");
+ rule.tab_exclude = rule_tab_excludes.join("|");
+ rule.类型 = rule.类型 || "影视";
+ rule.url = rule.url || "";
+ rule.double = rule.double || false;
+ rule.homeUrl = rule.homeUrl || "";
+ rule.detailUrl = rule.detailUrl || "";
+ rule.searchUrl = rule.searchUrl || "";
+ rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : rule.homeUrl || rule.host;
+ rule.homeUrl = cheerio.jinja2(rule.homeUrl, {
+ rule: rule
+ });
+ rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl;
+ rule.二级访问前 = rule.二级访问前 || "";
+ if (rule.url.includes("[") && rule.url.includes("]")) {
+ let u1 = rule.url.split("[")[0];
+ let u2 = rule.url.split("[")[1].split("]")[0];
+ rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.url
+ } else {
+ rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url
+ }
+ if (rule.searchUrl.includes("[") && rule.searchUrl.includes("]") && !rule.searchUrl.includes("#")) {
+ let u1 = rule.searchUrl.split("[")[0];
+ let u2 = rule.searchUrl.split("[")[1].split("]")[0];
+ rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.searchUrl
+ } else {
+ rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl
+ }
+ rule.timeout = rule.timeout || 5e3;
+ rule.encoding = rule.编码 || rule.encoding || "utf-8";
+ rule.search_encoding = rule.搜索编码 || rule.search_encoding || "";
+ rule.图片来源 = rule.图片来源 || "";
+ rule.图片替换 = rule.图片替换 || "";
+ rule.play_json = rule.hasOwnProperty("play_json") ? rule.play_json : [];
+ rule.pagecount = rule.hasOwnProperty("pagecount") ? rule.pagecount : {};
+ rule.proxy_rule = rule.hasOwnProperty("proxy_rule") ? rule.proxy_rule : "";
+ if (!rule.hasOwnProperty("sniffer")) {
+ rule.sniffer = false
+ }
+ rule.sniffer = rule.hasOwnProperty("sniffer") ? rule.sniffer : "";
+ rule.sniffer = !!(rule.sniffer && rule.sniffer !== "0" && rule.sniffer !== "false");
+ rule.isVideo = rule.hasOwnProperty("isVideo") ? rule.isVideo : "";
+ if (rule.sniffer && !rule.isVideo) {
+ rule.isVideo = "http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*"
+ }
+ rule.tab_remove = rule.hasOwnProperty("tab_remove") ? rule.tab_remove : [];
+ rule.tab_order = rule.hasOwnProperty("tab_order") ? rule.tab_order : [];
+ rule.tab_rename = rule.hasOwnProperty("tab_rename") ? rule.tab_rename : {};
+ if (rule.headers && typeof rule.headers === "object") {
+ try {
+ let header_keys = Object.keys(rule.headers);
+ for (let k of header_keys) {
+ if (k.toLowerCase() === "user-agent") {
+ let v = rule.headers[k];
+ console.log(v);
+ if (["MOBILE_UA", "PC_UA", "UC_UA", "IOS_UA", "UA"].includes(v)) {
+ rule.headers[k] = eval(v)
+ }
+ } else if (k.toLowerCase() === "cookie") {
+ let v = rule.headers[k];
+ if (v && v.startsWith("http")) {
+ console.log(v);
+ try {
+ v = fetch(v);
+ console.log(v);
+ rule.headers[k] = v
+ } catch (e) {
+ console.log(`从${v}获取cookie发生错误:${e.message}`)
+ }
+ }
+ }
+ }
+ } catch (e) {
+ console.log(`处理headers发生错误:${e.message}`)
+ }
+ } else {
+ rule.headers = {}
+ }
+ oheaders = deepCopy(rule.headers);
+ rule_fetch_params = {
+ headers: rule.headers,
+ timeout: rule.timeout,
+ encoding: rule.encoding
+ };
+ RKEY = typeof key !== "undefined" && key ? key : "drpy_" + (rule.title || rule.host);
+ pre();
+ init_test()
+ } catch (e) {
+ console.log(`init_test发生错误:${e.message}`)
+ }
+}
+let homeHtmlCache = undefined;
+
+function home(filter, home_html, class_parse) {
+ console.log("home");
+ home_html = home_html || "";
+ class_parse = class_parse || "";
+ if (typeof rule.filter === "string" && rule.filter.trim().length > 0) {
+ try {
+ let filter_json = ungzip(rule.filter.trim());
+ rule.filter = JSON.parse(filter_json)
+ } catch (e) {
+ rule.filter = {}
+ }
+ }
+ let homeObj = {
+ filter: rule.filter || false,
+ MY_URL: rule.homeUrl,
+ class_name: rule.class_name || "",
+ class_url: rule.class_url || "",
+ class_parse: class_parse || rule.class_parse || "",
+ cate_exclude: rule.cate_exclude,
+ home_html: home_html
+ };
+ return homeParse(homeObj)
+}
+
+function homeVod(params) {
+ console.log("homeVod");
+ let homeVodObj = {
+ "推荐": rule.推荐,
+ double: rule.double,
+ homeUrl: rule.homeUrl,
+ detailUrl: rule.detailUrl
+ };
+ return homeVodParse(homeVodObj)
+}
+
+function category(tid, pg, filter, extend) {
+ let cateObj = {
+ url: rule.url,
+ "一级": rule.一级,
+ tid: tid,
+ pg: parseInt(pg),
+ filter: filter,
+ extend: extend
+ };
+ return categoryParse(cateObj)
+}
+
+function detail(vod_url) {
+ let orId = vod_url;
+ let fyclass = "";
+ log("orId:" + orId);
+ if (vod_url.indexOf("$") > -1) {
+ let tmp = vod_url.split("$");
+ fyclass = tmp[0];
+ vod_url = tmp[1]
+ }
+ let detailUrl = vod_url.split("@@")[0];
+ let url;
+ if (!detailUrl.startsWith("http") && !detailUrl.includes("/")) {
+ url = rule.detailUrl.replaceAll("fyid", detailUrl).replaceAll("fyclass", fyclass)
+ } else if (detailUrl.includes("/")) {
+ url = urljoin(rule.homeUrl, detailUrl)
+ } else {
+ url = detailUrl
+ }
+ let detailObj = {
+ orId: orId,
+ url: url,
+ "二级": rule.二级,
+ "二级访问前": rule.二级访问前,
+ detailUrl: detailUrl,
+ fyclass: fyclass,
+ tab_exclude: rule.tab_exclude
+ };
+ return detailParse(detailObj)
+}
+
+function play(flag, id, flags) {
+ let playObj = {
+ url: id,
+ flag: flag,
+ flags: flags
+ };
+ return playParse(playObj)
+}
+
+function search(wd, quick, pg) {
+ if (rule.search_encoding) {
+ if (rule.search_encoding.toLowerCase() !== "utf-8") {
+ wd = encodeStr(wd, rule.search_encoding)
+ }
+ } else if (rule.encoding && rule.encoding.toLowerCase() !== "utf-8") {
+ wd = encodeStr(wd, rule.encoding)
+ }
+ let searchObj = {
+ searchUrl: rule.searchUrl,
+ "搜索": rule.搜索,
+ wd: wd,
+ pg: pg || 1,
+ quick: quick
+ };
+ return searchParse(searchObj)
+}
+
+function proxy(params) {
+ if (rule.proxy_rule && rule.proxy_rule.trim()) {
+ rule.proxy_rule = rule.proxy_rule.trim()
+ }
+ if (rule.proxy_rule.startsWith("js:")) {
+ rule.proxy_rule = rule.proxy_rule.replace("js:", "")
+ }
+ let proxyObj = {
+ params: params,
+ proxy_rule: rule.proxy_rule
+ };
+ return proxyParse(proxyObj)
+}
+
+function sniffer() {
+ let enable_sniffer = rule.sniffer || false;
+ if (enable_sniffer) {
+ log("开始执行辅助嗅探代理规则...")
+ }
+ return enable_sniffer
+}
+
+function isVideo(url) {
+ let t = 0;
+ let is_video;
+ if (rule.isVideo && rule.isVideo.trim()) {
+ is_video = rule.isVideo.trim()
+ }
+ if (is_video.startsWith("js:")) {
+ is_video = is_video.replace("js:", "");
+ t = 1
+ }
+ let isVideoObj = {
+ url: url,
+ isVideo: is_video,
+ t: t
+ };
+ let result = isVideoParse(isVideoObj);
+ if (result) {
+ log("成功执行辅助嗅探规则并检测到视频地址:\n" + rule.isVideo)
+ }
+ return result
+}
+
+function getRule(key) {
+ return key ? rule[key] || "" : rule
+}
+
+function deepCopy(_obj) {
+ return JSON.parse(JSON.stringify(_obj))
+}
+
+function matchesAll(str, pattern, flatten) {
+ if (!pattern.global) {
+ pattern = new RegExp(pattern.source, "g" + (pattern.ignoreCase ? "i" : "") + (pattern.multiline ? "m" : ""))
+ }
+ var matches = [];
+ var match;
+ while ((match = pattern.exec(str)) !== null) {
+ matches.push(match)
+ }
+ return flatten ? matches.flat() : matches
+}
+
+function stringUtils() {
+ Object.defineProperties(String.prototype, {
+ replaceX: {
+ value: function(regex, replacement) {
+ let matches = matchesAll(this, regex, true);
+ if (matches && matches.length > 1) {
+ const hasCaptureGroup = /\$\d/.test(replacement);
+ if (hasCaptureGroup) {
+ return this.replace(regex, m => m.replace(regex, replacement))
+ } else {
+ return this.replace(regex, (m, p1) => m.replace(p1, replacement))
+ }
+ }
+ return this.replace(regex, replacement)
+ },
+ configurable: true,
+ enumerable: false,
+ writable: true
+ },
+ parseX: {
+ get: function() {
+ try {
+ return JSON.parse(this)
+ } catch (e) {
+ console.log(e.message);
+ return this.startsWith("[") ? [] : {}
+ }
+ },
+ configurable: true,
+ enumerable: false
+ }
+ })
+}
+
+function cut(text, start, end, method, All) {
+ let result = "";
+ let c = (t, s, e) => {
+ let result = "";
+ let rs = [];
+ let results = [];
+ try {
+ let lr = new RegExp(String.raw`${s}`.toString());
+ let rr = new RegExp(String.raw`${e}`.toString());
+ const segments = t.split(lr);
+ if (segments.length < 2) return "";
+ let cutSegments = segments.slice(1).map(segment => {
+ let splitSegment = segment.split(rr);
+ return splitSegment.length < 2 ? undefined : splitSegment[0] + e
+ }).filter(f => f);
+ if (All) {
+ return `[${cutSegments.join(",")}]`
+ } else {
+ return cutSegments[0]
+ }
+ } catch (e) {
+ console.log(`Error cutting text:${e.message}`)
+ }
+ return result
+ };
+ result = c(text, start, end);
+ stringUtils();
+ if (method && typeof method === "function") {
+ result = method(result)
+ }
+ return result
+}
+
+function DRPY() {
+ return {
+ runMain: runMain,
+ getRule: getRule,
+ init: init,
+ home: home,
+ homeVod: homeVod,
+ category: category,
+ detail: detail,
+ play: play,
+ search: search,
+ proxy: proxy,
+ sniffer: sniffer,
+ isVideo: isVideo,
+ fixAdM3u8Ai: fixAdM3u8Ai
+ }
+}
+export default {
+ runMain: runMain,
+ getRule: getRule,
+ init: init,
+ home: home,
+ homeVod: homeVod,
+ category: category,
+ detail: detail,
+ play: play,
+ search: search,
+ proxy: proxy,
+ sniffer: sniffer,
+ isVideo: isVideo,
+ fixAdM3u8Ai: fixAdM3u8Ai,
+ DRPY: DRPY
+};
\ No newline at end of file
diff --git a/libs/uri.min.js b/JS/uri.min.js
similarity index 100%
rename from libs/uri.min.js
rename to JS/uri.min.js
diff --git a/JS/三六零弹幕.js b/JS/三六零弹幕.js
new file mode 100644
index 0000000..40e1a25
--- /dev/null
+++ b/JS/三六零弹幕.js
@@ -0,0 +1,843 @@
+var rule = {
+ title: '360影视[官]',
+ host: 'https://www.360kan.com',
+ homeUrl: 'https://api.web.360kan.com/v1/rank?cat=2&size=9',
+ detailUrl: 'https://api.web.360kan.com/v1/detail?cat=fyclass&id=fyid',
+ searchUrl: 'https://api.so.360kan.com/index?force_v=1&kw=**&from=&pageno=fypage&v_ap=1&tab=all',
+ url: 'https://api.web.360kan.com/v1/fyfilter&size=35&pageno=fypage&callback=',
+ filterable: 1,
+ filter_url: 'filter/list?catid=fyclass&rank={{fl.排序}}&cat={{fl.类型}}&year={{fl.年代}}&area={{fl.地区}}',
+ filter: {
+ "1": [{
+ "key": "类型",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "喜剧",
+ "v": "喜剧"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "犯罪",
+ "v": "犯罪"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "动画",
+ "v": "动画"
+ }, {
+ "n": "文艺",
+ "v": "文艺"
+ }, {
+ "n": "纪录",
+ "v": "纪录"
+ }, {
+ "n": "传记",
+ "v": "传记"
+ }, {
+ "n": "歌舞",
+ "v": "歌舞"
+ }, {
+ "n": "古装",
+ "v": "古装"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "惊悚",
+ "v": "惊悚"
+ }, {
+ "n": "伦理",
+ "v": "伦理"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "地区",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "大陆"
+ }, {
+ "n": "中国香港",
+ "v": "香港"
+ }, {
+ "n": "中国台湾",
+ "v": "台湾"
+ }, {
+ "n": "泰国",
+ "v": "泰国"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "韩国",
+ "v": "韩国"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "法国",
+ "v": "法国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }, {
+ "n": "德国",
+ "v": "德国"
+ }, {
+ "n": "印度",
+ "v": "印度"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "更早",
+ "v": "lt_year"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近热映",
+ "v": "rankhot"
+ }, {
+ "n": "最近上映",
+ "v": "ranklatest"
+ }, {
+ "n": "最受好评",
+ "v": "rankpoint"
+ }]
+ }],
+ "2": [{
+ "key": "类型",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "言情",
+ "v": "言情"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "伦理",
+ "v": "伦理"
+ }, {
+ "n": "喜剧",
+ "v": "喜剧"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "都市",
+ "v": "都市"
+ }, {
+ "n": "偶像",
+ "v": "偶像"
+ }, {
+ "n": "古装",
+ "v": "古装"
+ }, {
+ "n": "军事",
+ "v": "军事"
+ }, {
+ "n": "警匪",
+ "v": "警匪"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "神话",
+ "v": "神话"
+ }, {
+ "n": "谍战",
+ "v": "谍战"
+ }, {
+ "n": "青春",
+ "v": "青春剧"
+ }, {
+ "n": "家庭",
+ "v": "家庭剧"
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "情景",
+ "v": "情景"
+ }, {
+ "n": "武侠",
+ "v": "武侠"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "地区",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "内地"
+ }, {
+ "n": "中国香港",
+ "v": "香港"
+ }, {
+ "n": "中国台湾",
+ "v": "台湾"
+ }, {
+ "n": "泰国",
+ "v": "泰国"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "韩国",
+ "v": "韩国"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }, {
+ "n": "新加坡",
+ "v": "新加坡"
+ }]
+ }, {
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "更早",
+ "v": "lt_year"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近热映",
+ "v": "rankhot"
+ }, {
+ "n": "最近上映",
+ "v": "ranklatest"
+ }, {
+ "n": "最受好评",
+ "v": "rankpoint"
+ }]
+ }],
+ "3": [{
+ "key": "类型",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "脱口秀",
+ "v": "脱口秀"
+ }, {
+ "n": "真人秀",
+ "v": "真人秀"
+ }, {
+ "n": "搞笑",
+ "v": "搞笑"
+ }, {
+ "n": "选秀",
+ "v": "选秀"
+ }, {
+ "n": "八卦",
+ "v": "八卦"
+ }, {
+ "n": "访谈",
+ "v": "访谈"
+ }, {
+ "n": "情感",
+ "v": "情感"
+ }, {
+ "n": "生活",
+ "v": "生活"
+ }, {
+ "n": "晚会",
+ "v": "晚会"
+ }, {
+ "n": "音乐",
+ "v": "音乐"
+ }, {
+ "n": "职场",
+ "v": "职场"
+ }, {
+ "n": "美食",
+ "v": "美食"
+ }, {
+ "n": "时尚",
+ "v": "时尚"
+ }, {
+ "n": "游戏",
+ "v": "游戏"
+ }, {
+ "n": "少儿",
+ "v": "少儿"
+ }, {
+ "n": "体育",
+ "v": "体育"
+ }, {
+ "n": "纪实",
+ "v": "纪实"
+ }, {
+ "n": "科教",
+ "v": "科教"
+ }, {
+ "n": "曲艺",
+ "v": "曲艺"
+ }, {
+ "n": "歌舞",
+ "v": "歌舞"
+ }, {
+ "n": "财经",
+ "v": "财经"
+ }, {
+ "n": "汽车",
+ "v": "汽车"
+ }, {
+ "n": "播报",
+ "v": "播报"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "地区",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "大陆"
+ }, {
+ "n": "中国香港",
+ "v": "香港"
+ }, {
+ "n": "中国台湾",
+ "v": "台湾"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "欧美",
+ "v": "欧美"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近热映",
+ "v": "rankhot"
+ }, {
+ "n": "最近上映",
+ "v": "ranklatest"
+ }]
+ }],
+ "4": [{
+ "key": "类型",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "热血",
+ "v": "热血"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "美少女",
+ "v": "美少女"
+ }, {
+ "n": "魔幻",
+ "v": "魔幻"
+ }, {
+ "n": "经典",
+ "v": "经典"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "少儿",
+ "v": "少儿"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "搞笑",
+ "v": "搞笑"
+ }, {
+ "n": "推理",
+ "v": "推理"
+ }, {
+ "n": "恋爱",
+ "v": "恋爱"
+ }, {
+ "n": "治愈",
+ "v": "治愈"
+ }, {
+ "n": "幻想",
+ "v": "幻想"
+ }, {
+ "n": "校园",
+ "v": "校园"
+ }, {
+ "n": "动物",
+ "v": "动物"
+ }, {
+ "n": "机战",
+ "v": "机战"
+ }, {
+ "n": "亲子",
+ "v": "亲子"
+ }, {
+ "n": "儿歌",
+ "v": "儿歌"
+ }, {
+ "n": "运动",
+ "v": "运动"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "怪物",
+ "v": "怪物"
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "益智",
+ "v": "益智"
+ }, {
+ "n": "青春",
+ "v": "青春"
+ }, {
+ "n": "童话",
+ "v": "童话"
+ }, {
+ "n": "竞技",
+ "v": "竞技"
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "社会",
+ "v": "社会"
+ }, {
+ "n": "友情",
+ "v": "友情"
+ }, {
+ "n": "真人版",
+ "v": "真人版"
+ }, {
+ "n": "电影版",
+ "v": "电影版"
+ }, {
+ "n": "OVA版",
+ "v": "OVA版"
+ }, {
+ "n": "TV版",
+ "v": "TV版"
+ }, {
+ "n": "新番动画",
+ "v": "新番动画"
+ }, {
+ "n": "完结动画",
+ "v": "完结动画"
+ }]
+ }, {
+ "key": "地区",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "大陆"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }]
+ }, {
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "更早",
+ "v": "更早"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近热映",
+ "v": "rankhot"
+ }, {
+ "n": "最近上映",
+ "v": "ranklatest"
+ }]
+ }]
+ },
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000,
+ class_name: '电视剧&电影&综艺&动漫',
+ class_url: '2&1&3&4',
+ limit: 5,
+ multi: 1,
+ searchable: 2,
+ play_parse: true,
+ lazy: $js.toString(() => {
+ try {
+ let api = "" + input.split("?")[0];
+ console.log(api);
+ let response = fetch(api, {
+ method: 'get',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ });
+ let bata = JSON.parse(response);
+ if (bata.url.includes("qq,qiyi,imgo,youku,leshi,bilibili1,m1905")) {
+ input = {
+ parse: 0,
+ url: bata.url,
+ jx: 0,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ } else {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ } catch {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ }),
+ // 疑似t4专用的
+ // lazy:'js:input={parse: 1, playUrl: "", jx: 1, url: input.split("?")[0]}',
+ // 手动调用解析请求json的url,此lazy不方便
+ // lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input',
+ 推荐: 'json:data;title;cover;comment;cat+ent_id;description',
+ 一级: 'json:data.movies;title;cover;pubdate;id;description',
+ 二级: '',
+ 二级: $js.toString(() => {
+ let html = JSON.parse(fetch(input, fetch_params));
+ let data = html.data;
+ let tilte = data.title;
+ let img = data.cdncover;
+ let vod_type = data.moviecategory.join(",");
+ let area = data.area.join(",");
+ let director = data.director.join(",");
+ let actor = data.actor.join(",");
+ let content = data.description;
+ let base_vod = {
+ vod_id: input,
+ vod_name: tilte,
+ type_name: vod_type,
+ vod_actor: actor,
+ vod_director: director,
+ vod_content: content,
+ vod_remarks: area,
+ vod_pic: urljoin2(input, img)
+ };
+ let delta = 50;
+ let vod_play = {};
+ let sites = data.playlink_sites;
+ sites.forEach(function(site) {
+ let playList = "";
+ let vodItems = [];
+ print(data)
+ if (data.allupinfo) {
+ let total = parseInt(data.allupinfo[site]);
+ print(total)
+ for (let j = 1; j < total; j += delta) {
+ let end = Math.min(total, j + delta - 1);
+ print(end)
+ let url2 = buildUrl(input, {
+ start: j,
+ end: end,
+ site: site
+ });
+ let vod_data = JSON.parse(fetch(url2), fetch_params).data;
+ if (vod_data != null) {
+ if (vod_data.allepidetail) {
+ vod_data = vod_data.allepidetail[site];
+ vod_data.forEach(function(item, index) {
+ vodItems.push((item.playlink_num || "") + "$" + urlDeal(item.url || ""))
+ })
+ } else {
+ vod_data = vod_data.defaultepisode;
+ vod_data.forEach(function(item, index) {
+ vodItems.push((item.period || "") + (item.name || "") + "$" + urlDeal(item.url) || "")
+ })
+ }
+ }
+ }
+ } else {
+ let item = data.playlinksdetail[site];
+ vodItems.push((item.sort || "") + "$" + urlDeal(item.default_url || ""))
+ }
+ if (vodItems.length > 0) {
+ playList = vodItems.join("#")
+ }
+ if (playList.length < 1) {
+ return
+ }
+ vod_play[site] = playList
+ });
+ let tabs = Object.keys(vod_play);
+ let playUrls = [];
+ for (let id in tabs) {
+ print("id:" + id);
+ playUrls.push(vod_play[tabs[id]])
+ }
+ if (tabs.length > 0) {
+ let vod_play_from = tabs.join("$$$");
+ let vod_play_url = playUrls.join("$$$");
+ base_vod.vod_play_from = vod_play_from;
+ base_vod.vod_play_url = vod_play_url
+ }
+ VOD = base_vod;
+ }),
+ 搜索: 'json:data.longData.rows;titleTxt||titlealias;cover;cat_name;cat_id+en_id;description',
+}
\ No newline at end of file
diff --git a/JS/优酷弹幕.js b/JS/优酷弹幕.js
new file mode 100644
index 0000000..f335b99
--- /dev/null
+++ b/JS/优酷弹幕.js
@@ -0,0 +1,2299 @@
+var rule = {
+ title: '优酷[官]',
+ host: 'https://www.%79%6f%75%6b%75.com',
+ homeUrl: '',
+ searchUrl: 'https://search.%79%6f%75%6b%75.com/api/search?pg=fypage&keyword=**',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ multi: 1,
+ url: '/category/data?optionRefresh=1&pageNo=fypage¶ms=fyfilter',
+ filter_url: '{{fl}}',
+ filter: {
+ "电视剧": [{
+ "key": "main_area",
+ "name": "全部地区",
+ "value": [{
+ "n": "全部地区",
+ "v": ""
+ }, {
+ "n": "内地剧",
+ "v": "中国内地"
+ }, {
+ "n": "港剧",
+ "v": "中国香港"
+ }, {
+ "n": "台剧",
+ "v": "中国台湾"
+ }, {
+ "n": "韩剧",
+ "v": "韩国"
+ }, {
+ "n": "美剧",
+ "v": "美国"
+ }, {
+ "n": "英剧",
+ "v": "英国"
+ }, {
+ "n": "日剧",
+ "v": "日本"
+ }, {
+ "n": "泰剧",
+ "v": "泰国"
+ }]
+ }, {
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "青春",
+ "v": "青春"
+ }, {
+ "n": "古装",
+ "v": "古装"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "都市",
+ "v": "都市"
+ }, {
+ "n": "喜剧",
+ "v": "喜剧,搞笑"
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "军旅",
+ "v": "军旅"
+ }, {
+ "n": "谍战",
+ "v": "谍战"
+ }, {
+ "n": "偶像",
+ "v": "偶像"
+ }, {
+ "n": "警匪",
+ "v": "警匪"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "穿越",
+ "v": "穿越"
+ }, {
+ "n": "仙侠",
+ "v": "仙侠"
+ }, {
+ "n": "武侠",
+ "v": "武侠"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "罪案",
+ "v": "罪案"
+ }, {
+ "n": "家庭",
+ "v": "家庭"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "年代",
+ "v": "年代"
+ }, {
+ "n": "农村",
+ "v": "农村"
+ }]
+ }, {
+ "key": "year",
+ "name": "全部年份",
+ "value": [{
+ "n": "全部年份",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014-2011",
+ "v": "2011-2014"
+ }, {
+ "n": "更早",
+ "v": "-2010"
+ }]
+ }, {
+ "key": "status",
+ "name": "全部规格",
+ "value": [{
+ "n": "全部规格",
+ "v": ""
+ }, {
+ "n": "全网独播",
+ "v": "1"
+ }, {
+ "n": "优酷自制",
+ "v": "2"
+ }, {
+ "n": "已完结",
+ "v": "3"
+ }, {
+ "n": "即将上线",
+ "v": "4"
+ }, {
+ "n": "短剧",
+ "v": "5"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "付费类型",
+ "value": [{
+ "n": "付费类型",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "VIP",
+ "v": "2"
+ }, {
+ "n": "付费",
+ "v": "1"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "热度最高",
+ "v": "7"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }]
+ }],
+ "电影": [{
+ "key": "main_area",
+ "name": "全部地区",
+ "value": [{
+ "n": "全部地区",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "中国内地"
+ }, {
+ "n": "中国香港",
+ "v": "中国香港"
+ }, {
+ "n": "中国台湾",
+ "v": "中国台湾"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "印度",
+ "v": "印度"
+ }, {
+ "n": "日韩",
+ "v": "韩国,日本"
+ }, {
+ "n": "泰国",
+ "v": "泰国"
+ }, {
+ "n": "欧洲",
+ "v": "欧洲"
+ }]
+ }, {
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "喜剧",
+ "v": "喜剧,搞笑"
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "怪兽",
+ "v": "怪兽"
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "武侠",
+ "v": "武侠"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "警匪",
+ "v": "警匪"
+ }, {
+ "n": "动画",
+ "v": "动画"
+ }, {
+ "n": "惊悚",
+ "v": "惊悚"
+ }, {
+ "n": "犯罪",
+ "v": "犯罪"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "纪录片",
+ "v": "纪录片"
+ }, {
+ "n": "传记",
+ "v": "传记"
+ }, {
+ "n": "歌舞",
+ "v": "歌舞"
+ }, {
+ "n": "短片",
+ "v": "短片"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "source",
+ "name": "全部规格",
+ "value": [{
+ "n": "全部规格",
+ "v": ""
+ }, {
+ "n": "院线",
+ "v": "1"
+ }, {
+ "n": "网络电影",
+ "v": "0"
+ }, {
+ "n": "独播",
+ "v": "2"
+ }, {
+ "n": "高清修复",
+ "v": "3"
+ }, {
+ "n": "1080P",
+ "v": "4"
+ }]
+ }, {
+ "key": "year",
+ "name": "全部年份",
+ "value": [{
+ "n": "全部年份",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014-2010",
+ "v": "2010-2014"
+ }, {
+ "n": "2009-2000",
+ "v": "2000-2009"
+ }, {
+ "n": "90年代",
+ "v": "1990-1999"
+ }, {
+ "n": "80年代",
+ "v": "1980-1989"
+ }, {
+ "n": "70年代",
+ "v": "1970-1979"
+ }, {
+ "n": "更早",
+ "v": "-1969"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "付费类型",
+ "value": [{
+ "n": "付费类型",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "会员",
+ "v": "2"
+ }, {
+ "n": "点播",
+ "v": "1"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "热度最高",
+ "v": "7"
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }]
+ }, {
+ "key": "tag_label_name",
+ "name": "为你推荐",
+ "value": [{
+ "n": "为你推荐",
+ "v": ""
+ }, {
+ "n": "高分必看",
+ "v": "高分必看"
+ }, {
+ "n": "卖座电影",
+ "v": "卖座电影"
+ }, {
+ "n": "小说改编",
+ "v": "小说改编"
+ }, {
+ "n": "铁血硬汉",
+ "v": "铁血硬汉"
+ }, {
+ "n": "视效大片",
+ "v": "视效大片"
+ }, {
+ "n": "漫画改编",
+ "v": "漫画改编"
+ }, {
+ "n": "绝地求生",
+ "v": "绝地求生"
+ }, {
+ "n": "真人真事改编",
+ "v": "真人真事改编"
+ }, {
+ "n": "范伟",
+ "v": "范伟"
+ }, {
+ "n": "火爆枪战",
+ "v": "火爆枪战"
+ }, {
+ "n": "影史经典",
+ "v": "影史经典"
+ }, {
+ "n": "拯救世界",
+ "v": "拯救世界"
+ }, {
+ "n": "万茜",
+ "v": "万茜"
+ }, {
+ "n": "马思纯",
+ "v": "马思纯"
+ }, {
+ "n": "王俊凯",
+ "v": "王俊凯"
+ }, {
+ "n": "豪华阵容",
+ "v": "豪华阵容"
+ }, {
+ "n": "李玉",
+ "v": "李玉"
+ }, {
+ "n": "无厘头喜剧",
+ "v": "无厘头喜剧"
+ }, {
+ "n": "超能力",
+ "v": "超能力"
+ }, {
+ "n": "欢喜搭档",
+ "v": "欢喜搭档"
+ }]
+ }],
+ "综艺": [{
+ "key": "main_area",
+ "name": "全部地区",
+ "value": [{
+ "n": "全部地区",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "中国内地"
+ }, {
+ "n": "中国台湾",
+ "v": "中国台湾"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }]
+ }, {
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "偶像",
+ "v": "偶像"
+ }, {
+ "n": "舞蹈",
+ "v": "舞蹈"
+ }, {
+ "n": "音乐",
+ "v": "音乐"
+ }, {
+ "n": "情感",
+ "v": "情感"
+ }, {
+ "n": "喜剧",
+ "v": "喜剧,搞笑"
+ }, {
+ "n": "体育",
+ "v": "体育"
+ }, {
+ "n": "游戏",
+ "v": "游戏"
+ }, {
+ "n": "相声",
+ "v": "相声"
+ }, {
+ "n": "婚恋",
+ "v": "婚恋"
+ }, {
+ "n": "时尚",
+ "v": "时尚"
+ }, {
+ "n": "晚会",
+ "v": "晚会"
+ }, {
+ "n": "明星访谈",
+ "v": "明星访谈"
+ }, {
+ "n": "亲子",
+ "v": "亲子"
+ }, {
+ "n": "生活",
+ "v": "生活"
+ }, {
+ "n": "文化",
+ "v": "文化"
+ }, {
+ "n": "美食",
+ "v": "美食"
+ }, {
+ "n": "旅游",
+ "v": "旅游"
+ }, {
+ "n": "益智",
+ "v": "益智"
+ }]
+ }, {
+ "key": "year",
+ "name": "全部年份",
+ "value": [{
+ "n": "全部年份",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014-2011",
+ "v": "2011-2014"
+ }, {
+ "n": "更早",
+ "v": "-2010"
+ }]
+ }, {
+ "key": "status",
+ "name": "全部规格",
+ "value": [{
+ "n": "全部规格",
+ "v": ""
+ }, {
+ "n": "优酷自制",
+ "v": "2"
+ }, {
+ "n": "优酷独播",
+ "v": "1"
+ }, {
+ "n": "电视综艺",
+ "v": "6"
+ }, {
+ "n": "已完结",
+ "v": "3"
+ }, {
+ "n": "即将上线",
+ "v": "4"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "付费类型",
+ "value": [{
+ "n": "付费类型",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "VIP",
+ "v": "2"
+ }, {
+ "n": "付费",
+ "v": "1"
+ }]
+ }, {
+ "key": "sort",
+ "name": "热度最高",
+ "value": [{
+ "n": "热度最高",
+ "v": ""
+ }, {
+ "n": "最新更新",
+ "v": "8"
+ }, {
+ "n": "最近开播",
+ "v": "9"
+ }, {
+ "n": "最多评论",
+ "v": "4"
+ }]
+ }, {
+ "key": "tag_label_name",
+ "name": "为你推荐",
+ "value": [{
+ "n": "为你推荐",
+ "v": ""
+ }, {
+ "n": "舞台竞演",
+ "v": "舞台竞演"
+ }, {
+ "n": "刘雨昕",
+ "v": "刘雨昕"
+ }, {
+ "n": "王一博",
+ "v": "王一博"
+ }, {
+ "n": "韩庚",
+ "v": "韩庚"
+ }, {
+ "n": "李承铉",
+ "v": "李承铉"
+ }, {
+ "n": "户外竞技",
+ "v": "户外竞技"
+ }, {
+ "n": "浙江卫视",
+ "v": "浙江卫视"
+ }, {
+ "n": "东方卫视",
+ "v": "东方卫视"
+ }, {
+ "n": "岳云鹏",
+ "v": "岳云鹏"
+ }, {
+ "n": "王迅",
+ "v": "王迅"
+ }, {
+ "n": "杨迪",
+ "v": "杨迪"
+ }, {
+ "n": "杨超越",
+ "v": "杨超越"
+ }, {
+ "n": "黄明昊",
+ "v": "黄明昊"
+ }, {
+ "n": "郭京飞",
+ "v": "郭京飞"
+ }, {
+ "n": "欧阳娜娜",
+ "v": "欧阳娜娜"
+ }, {
+ "n": "德云社",
+ "v": "德云社"
+ }, {
+ "n": "郑恺",
+ "v": "郑恺"
+ }, {
+ "n": "华少",
+ "v": "华少"
+ }, {
+ "n": "郭德纲",
+ "v": "郭德纲"
+ }, {
+ "n": "贾玲",
+ "v": "贾玲"
+ }]
+ }],
+ "动漫": [{
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }]
+ }, {
+ "key": "main_area",
+ "name": "全部地区",
+ "value": [{
+ "n": "全部地区",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "中国内地"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "中国台湾",
+ "v": "中国台湾"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "热血",
+ "v": "热血,战斗"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "玄幻",
+ "v": "玄幻"
+ }, {
+ "n": "古风",
+ "v": "历史,古风"
+ }, {
+ "n": "恋爱",
+ "v": "恋爱"
+ }, {
+ "n": "青春",
+ "v": "青春"
+ }, {
+ "n": "校园",
+ "v": "校园"
+ }, {
+ "n": "运动",
+ "v": "社团,运动"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "魔法",
+ "v": "魔法"
+ }, {
+ "n": "日常",
+ "v": "日常"
+ }, {
+ "n": "治愈",
+ "v": "治愈"
+ }, {
+ "n": "机战",
+ "v": "机战"
+ }, {
+ "n": "推理",
+ "v": "推理"
+ }, {
+ "n": "都市",
+ "v": "都市"
+ }, {
+ "n": "小说改",
+ "v": "小说改编"
+ }, {
+ "n": "游戏改",
+ "v": "游戏改编"
+ }, {
+ "n": "漫画改",
+ "v": "漫画改编"
+ }, {
+ "n": "动态漫",
+ "v": "动态漫画"
+ }, {
+ "n": "特摄",
+ "v": "特摄"
+ }, {
+ "n": "布袋戏",
+ "v": "布袋戏"
+ }]
+ }, {
+ "key": "completed",
+ "name": "连载情况",
+ "value": [{
+ "n": "连载情况",
+ "v": ""
+ }, {
+ "n": "更新中",
+ "v": "0"
+ }, {
+ "n": "已完结",
+ "v": "1"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "付费类型",
+ "value": [{
+ "n": "付费类型",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "会员",
+ "v": "2"
+ }]
+ }, {
+ "key": "year",
+ "name": "全部年份",
+ "value": [{
+ "n": "全部年份",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "00年代",
+ "v": "2000-2010"
+ }, {
+ "n": "更早",
+ "v": "-1999"
+ }]
+ }, {
+ "key": "tag_label_name",
+ "name": "为你推荐",
+ "value": [{
+ "n": "为你推荐",
+ "v": ""
+ }, {
+ "n": "3D动画",
+ "v": "3D动画"
+ }, {
+ "n": "搞笑日常",
+ "v": "搞笑日常"
+ }, {
+ "n": "大男主",
+ "v": "大男主"
+ }, {
+ "n": "高燃",
+ "v": "高燃"
+ }, {
+ "n": "萌系",
+ "v": "萌系"
+ }, {
+ "n": "修真",
+ "v": "修真"
+ }, {
+ "n": "怀旧",
+ "v": "怀旧"
+ }, {
+ "n": "超级英雄",
+ "v": "超级英雄"
+ }, {
+ "n": "水树奈奈",
+ "v": "水树奈奈"
+ }, {
+ "n": "张杰",
+ "v": "张杰"
+ }, {
+ "n": "石田彰",
+ "v": "石田彰"
+ }, {
+ "n": "守护地球",
+ "v": "守护地球"
+ }, {
+ "n": "圆谷",
+ "v": "圆谷"
+ }, {
+ "n": "山新",
+ "v": "山新"
+ }, {
+ "n": "复仇",
+ "v": "复仇"
+ }, {
+ "n": "废柴逆袭",
+ "v": "废柴逆袭"
+ }, {
+ "n": "侦探",
+ "v": "侦探"
+ }, {
+ "n": "无厘头",
+ "v": "无厘头"
+ }, {
+ "n": "青山刚昌",
+ "v": "青山刚昌"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }]
+ }],
+ "少儿": [{
+ "key": "main_area",
+ "name": "全部地区",
+ "value": [{
+ "n": "全部地区",
+ "v": ""
+ }, {
+ "n": "中国",
+ "v": "中国,香港,台湾"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }, {
+ "n": "其他国家",
+ "v": "其他"
+ }]
+ }, {
+ "key": "show_label_type",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "动画",
+ "v": "动画"
+ }, {
+ "n": "儿歌",
+ "v": "儿歌"
+ }, {
+ "n": "玩具",
+ "v": "玩具"
+ }, {
+ "n": "动画电影",
+ "v": "电影"
+ }, {
+ "n": "绘本故事",
+ "v": "绘本故事"
+ }, {
+ "n": "真人",
+ "v": "真人"
+ }, {
+ "n": "少儿综艺",
+ "v": "少儿综艺"
+ }, {
+ "n": "亲子",
+ "v": "亲子"
+ }, {
+ "n": "探索纪实",
+ "v": "探索纪实"
+ }, {
+ "n": "音频",
+ "v": "音频"
+ }]
+ }, {
+ "key": "child_tags",
+ "name": "全部分类",
+ "value": [{
+ "n": "全部分类",
+ "v": ""
+ }, {
+ "n": "益智",
+ "v": "益智"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "幽默",
+ "v": "幽默"
+ }, {
+ "n": "机甲",
+ "v": "机甲"
+ }, {
+ "n": "公主魔法",
+ "v": "公主,魔法"
+ }, {
+ "n": "交通工具",
+ "v": "交通工具"
+ }, {
+ "n": "恐龙",
+ "v": "恐龙"
+ }, {
+ "n": "动物",
+ "v": "动物"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "友情",
+ "v": "友情"
+ }, {
+ "n": "战斗",
+ "v": "战斗"
+ }, {
+ "n": "校园",
+ "v": "校园"
+ }, {
+ "n": "正义",
+ "v": "正义"
+ }, {
+ "n": "热血",
+ "v": "热血"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "童话",
+ "v": "童话"
+ }, {
+ "n": "运动",
+ "v": "运动"
+ }, {
+ "n": "专注力",
+ "v": "专注力"
+ }, {
+ "n": "创造力",
+ "v": "创造力"
+ }, {
+ "n": "想象力",
+ "v": "想象力"
+ }, {
+ "n": "科普",
+ "v": "科普"
+ }, {
+ "n": "情商",
+ "v": "情商"
+ }, {
+ "n": "思维逻辑",
+ "v": "思维逻辑"
+ }, {
+ "n": "兴趣培养",
+ "v": "兴趣培养"
+ }, {
+ "n": "语文",
+ "v": "语文"
+ }, {
+ "n": "英语",
+ "v": "英语"
+ }, {
+ "n": "数学",
+ "v": "数学"
+ }, {
+ "n": "课程辅导",
+ "v": "课程辅导"
+ }]
+ }, {
+ "key": "age",
+ "name": "全部年龄",
+ "value": [{
+ "n": "全部年龄",
+ "v": ""
+ }, {
+ "n": "0-2岁",
+ "v": "0-2"
+ }, {
+ "n": "3-4岁",
+ "v": "3-4"
+ }, {
+ "n": "5-6岁",
+ "v": "5-6"
+ }, {
+ "n": "7岁以上",
+ "v": "7-"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "付费类型",
+ "value": [{
+ "n": "付费类型",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "付费",
+ "v": "1"
+ }, {
+ "n": "VIP",
+ "v": "2"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最多评论",
+ "v": "4"
+ }, {
+ "n": "最多收藏",
+ "v": "5"
+ }]
+ }],
+ "纪录片": [{
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "美食",
+ "v": "美食"
+ }, {
+ "n": "自然",
+ "v": "自然"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "探险",
+ "v": "探险"
+ }, {
+ "n": "军事",
+ "v": "军事"
+ }, {
+ "n": "人物",
+ "v": "人物"
+ }, {
+ "n": "宇宙",
+ "v": "宇宙"
+ }, {
+ "n": "刑侦",
+ "v": "刑侦"
+ }, {
+ "n": "社会",
+ "v": "社会"
+ }, {
+ "n": "科技",
+ "v": "科技"
+ }, {
+ "n": "旅游",
+ "v": "旅游"
+ }]
+ }, {
+ "key": "company",
+ "name": "全部出品",
+ "value": [{
+ "n": "全部出品",
+ "v": ""
+ }, {
+ "n": "BBC",
+ "v": "bbc,british"
+ }, {
+ "n": "央视",
+ "v": "央视,中央电视台,cctv,中国广播电影电视节目交易中心"
+ }, {
+ "n": "国家地理",
+ "v": "国家地理"
+ }, {
+ "n": "Love Nature",
+ "v": "love nature"
+ }, {
+ "n": "LGI",
+ "v": "looking"
+ }, {
+ "n": "A&E",
+ "v": "ae"
+ }, {
+ "n": "OTF",
+ "v": "fence"
+ }]
+ }, {
+ "key": "year",
+ "name": "全部年份",
+ "value": [{
+ "n": "全部年份",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014-2011",
+ "v": "2011-2014"
+ }, {
+ "n": "更早",
+ "v": "-2010"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "付费类型",
+ "value": [{
+ "n": "付费类型",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "会员",
+ "v": "2"
+ }]
+ }, {
+ "key": "sort",
+ "name": "热度最高",
+ "value": [{
+ "n": "热度最高",
+ "v": ""
+ }, {
+ "n": "综合排序",
+ "v": "0"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最多收藏",
+ "v": "5"
+ }]
+ }],
+ "文化": [{
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "谈话",
+ "v": "谈话"
+ }, {
+ "n": "脱口秀",
+ "v": "脱口秀"
+ }, {
+ "n": "访谈",
+ "v": "访谈"
+ }, {
+ "n": "讲座论坛",
+ "v": "讲座论坛"
+ }, {
+ "n": "戏曲曲艺",
+ "v": "戏曲,曲艺"
+ }, {
+ "n": "舞台剧",
+ "v": "舞台剧"
+ }, {
+ "n": "文学",
+ "v": "文学"
+ }, {
+ "n": "国学",
+ "v": "国学"
+ }, {
+ "n": "艺术",
+ "v": "艺术"
+ }, {
+ "n": "培训课程",
+ "v": "培训课程"
+ }, {
+ "n": "有声书",
+ "v": "有声书"
+ }]
+ }, {
+ "key": "people",
+ "name": "文化大咖",
+ "value": [{
+ "n": "文化大咖",
+ "v": ""
+ }, {
+ "n": "窦文涛",
+ "v": "窦文涛"
+ }, {
+ "n": "马未都",
+ "v": "马未都"
+ }, {
+ "n": "白岩松",
+ "v": "白岩松"
+ }, {
+ "n": "梅毅",
+ "v": "梅毅"
+ }, {
+ "n": "陈鲁豫",
+ "v": "陈鲁豫"
+ }, {
+ "n": "樊登",
+ "v": "樊登"
+ }, {
+ "n": "罗振宇",
+ "v": "罗振宇"
+ }, {
+ "n": "蒋方舟",
+ "v": "蒋方舟"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "全部年份",
+ "value": [{
+ "n": "全部年份",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014-2011",
+ "v": "2011-2014"
+ }, {
+ "n": "更早",
+ "v": "-2010"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "付费类型",
+ "value": [{
+ "n": "付费类型",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "会员",
+ "v": "2"
+ }]
+ }, {
+ "key": "sort",
+ "name": "热度最高",
+ "value": [{
+ "n": "热度最高",
+ "v": ""
+ }, {
+ "n": "综合排序",
+ "v": "0"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最多收藏",
+ "v": "5"
+ }]
+ }],
+ "亲子": [{
+ "key": "qinzi_genre",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "孕产",
+ "v": "孕产"
+ }, {
+ "n": "育儿知识",
+ "v": "育儿知识,育儿达人,育儿专家,爸爸育儿,隔代育儿,育儿明星"
+ }, {
+ "n": "好物种草",
+ "v": "母婴用品,测评,母婴用品种草"
+ }, {
+ "n": "美食",
+ "v": "儿童美食,辅食,孕期饮食"
+ }, {
+ "n": "手工DIY",
+ "v": "手工diy"
+ }, {
+ "n": "教育观念",
+ "v": "教育观念"
+ }, {
+ "n": "亲子综艺",
+ "v": "亲子综艺"
+ }, {
+ "n": "亲子互动",
+ "v": "亲子旅游,亲子游戏,亲子阅读,玩具,早教,启蒙"
+ }, {
+ "n": "萌娃",
+ "v": "萌娃"
+ }, {
+ "n": "搞笑",
+ "v": "搞笑"
+ }, {
+ "n": "美妆",
+ "v": "美妆"
+ }]
+ }, {
+ "key": "pregnancy_stage",
+ "name": "全部阶段",
+ "value": [{
+ "n": "全部阶段",
+ "v": ""
+ }, {
+ "n": "备孕",
+ "v": "备孕"
+ }, {
+ "n": "孕早期",
+ "v": "孕早"
+ }, {
+ "n": "孕中期",
+ "v": "孕中"
+ }, {
+ "n": "孕晚期",
+ "v": "孕晚"
+ }]
+ }, {
+ "key": "show_label_baby_age",
+ "name": "全部分龄",
+ "value": [{
+ "n": "全部分龄",
+ "v": ""
+ }, {
+ "n": "0-1岁",
+ "v": "0-1"
+ }, {
+ "n": "1-3岁",
+ "v": "1-3"
+ }, {
+ "n": "3-6岁",
+ "v": "3-6"
+ }, {
+ "n": "6岁+",
+ "v": "6-"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "全部",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "会员免费",
+ "v": "2"
+ }]
+ }, {
+ "key": "sort",
+ "name": "热度最高",
+ "value": [{
+ "n": "热度最高",
+ "v": ""
+ }, {
+ "n": "综合排序",
+ "v": "0"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最多评论",
+ "v": "3"
+ }, {
+ "n": "最多收藏",
+ "v": "5"
+ }]
+ }],
+ "教育": [{
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "公开课",
+ "v": "公开课"
+ }, {
+ "n": "名人名嘴",
+ "v": "名人名嘴"
+ }, {
+ "n": "文化",
+ "v": "文化"
+ }, {
+ "n": "艺术",
+ "v": "艺术"
+ }, {
+ "n": "伦理社会",
+ "v": "伦理社会"
+ }, {
+ "n": "理工",
+ "v": "理工"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "心理学",
+ "v": "心理学"
+ }, {
+ "n": "经济",
+ "v": "经济"
+ }, {
+ "n": "管理学",
+ "v": "管理学"
+ }, {
+ "n": "外语",
+ "v": "外语"
+ }, {
+ "n": "法律",
+ "v": "法律"
+ }, {
+ "n": "计算机",
+ "v": "计算机"
+ }, {
+ "n": "哲学",
+ "v": "哲学"
+ }, {
+ "n": "职业培训",
+ "v": "职业培训"
+ }, {
+ "n": "家庭教育",
+ "v": "家庭教育"
+ }]
+ }, {
+ "key": "company",
+ "name": "全部出品",
+ "value": [{
+ "n": "全部出品",
+ "v": ""
+ }, {
+ "n": "TED",
+ "v": "ted"
+ }, {
+ "n": "耶鲁大学",
+ "v": "耶鲁大学"
+ }, {
+ "n": "哈佛大学",
+ "v": "哈佛大学"
+ }, {
+ "n": "斯坦福大学",
+ "v": "斯坦福大学"
+ }, {
+ "n": "麻省理工学院",
+ "v": "麻省理工学院"
+ }]
+ }, {
+ "key": "pay_type",
+ "name": "全部节目",
+ "value": [{
+ "n": "全部节目",
+ "v": ""
+ }, {
+ "n": "免费",
+ "v": "0"
+ }, {
+ "n": "付费",
+ "v": "1"
+ }, {
+ "n": "VIP",
+ "v": "2"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最多收藏",
+ "v": "5"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }]
+ }],
+ "搞笑": [{
+ "key": "division",
+ "name": "全部专区",
+ "value": [{
+ "n": "全部专区",
+ "v": ""
+ }, {
+ "n": "1080P",
+ "v": "3"
+ }, {
+ "n": "独播",
+ "v": "6"
+ }, {
+ "n": "免费",
+ "v": "5"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }]
+ }],
+ "生活": [{
+ "key": "division",
+ "name": "全部专区",
+ "value": [{
+ "n": "全部专区",
+ "v": ""
+ }, {
+ "n": "1080P",
+ "v": "3"
+ }, {
+ "n": "独播",
+ "v": "6"
+ }, {
+ "n": "VIP",
+ "v": "4"
+ }, {
+ "n": "免费",
+ "v": "5"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }]
+ }],
+ "体育": [{
+ "key": "division",
+ "name": "全部专区",
+ "value": [{
+ "n": "全部专区",
+ "v": ""
+ }, {
+ "n": "1080P",
+ "v": "3"
+ }, {
+ "n": "独播",
+ "v": "6"
+ }, {
+ "n": "VIP",
+ "v": "4"
+ }, {
+ "n": "免费",
+ "v": "5"
+ }]
+ }, {
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "篮球",
+ "v": "篮球"
+ }, {
+ "n": "足球",
+ "v": "足球"
+ }, {
+ "n": "台球",
+ "v": "台球"
+ }, {
+ "n": "CBA",
+ "v": "CBA"
+ }, {
+ "n": "钓鱼",
+ "v": "钓鱼"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }]
+ }],
+ "音乐": [{
+ "key": "division",
+ "name": "全部专区",
+ "value": [{
+ "n": "全部专区",
+ "v": ""
+ }, {
+ "n": "1080P",
+ "v": "3"
+ }, {
+ "n": "独播",
+ "v": "6"
+ }, {
+ "n": "免费",
+ "v": "5"
+ }]
+ }, {
+ "key": "main_area",
+ "name": "全部地区",
+ "value": [{
+ "n": "全部地区",
+ "v": ""
+ }, {
+ "n": "中国",
+ "v": "中国"
+ }, {
+ "n": "中国台湾",
+ "v": "中国台湾"
+ }, {
+ "n": "中国香港",
+ "v": "中国香港"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "music_show_type",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "演唱会",
+ "v": "演唱会"
+ }, {
+ "n": "live现场",
+ "v": "live现场"
+ }, {
+ "n": "颁奖典礼",
+ "v": "颁奖典礼"
+ }, {
+ "n": "舞蹈",
+ "v": "舞蹈"
+ }, {
+ "n": "影视原声",
+ "v": "影视原声"
+ }, {
+ "n": "音乐达人",
+ "v": "音乐达人"
+ }, {
+ "n": "音乐教学",
+ "v": "音乐教学"
+ }, {
+ "n": "音乐纪录片",
+ "v": "音乐纪录片"
+ }, {
+ "n": "音乐mv",
+ "v": "音乐mv"
+ }, {
+ "n": "音乐自制",
+ "v": "音乐自制"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }]
+ }],
+ "游戏": [{
+ "key": "division",
+ "name": "全部专区",
+ "value": [{
+ "n": "全部专区",
+ "v": ""
+ }, {
+ "n": "1080P",
+ "v": "3"
+ }, {
+ "n": "独播",
+ "v": "6"
+ }, {
+ "n": "VIP",
+ "v": "4"
+ }, {
+ "n": "免费",
+ "v": "5"
+ }]
+ }, {
+ "key": "game_brand",
+ "name": "全部节目",
+ "value": [{
+ "n": "全部节目",
+ "v": ""
+ }, {
+ "n": "王者荣耀",
+ "v": "王者荣耀"
+ }, {
+ "n": "和平精英",
+ "v": "和平精英"
+ }, {
+ "n": "绝地求生",
+ "v": "绝地求生"
+ }, {
+ "n": "迷你世界",
+ "v": "迷你世界"
+ }, {
+ "n": "我的世界",
+ "v": "我的世界"
+ }, {
+ "n": "植物大战僵尸",
+ "v": "植物大战僵尸"
+ }, {
+ "n": "方舟生存进化",
+ "v": "方舟生存进化"
+ }, {
+ "n": "第五人格",
+ "v": "第五人格"
+ }, {
+ "n": "猫和老鼠",
+ "v": "猫和老鼠"
+ }, {
+ "n": "香肠派对",
+ "v": "香肠派对"
+ }, {
+ "n": "穿越火线",
+ "v": "穿越火线"
+ }, {
+ "n": "英雄联盟",
+ "v": "英雄联盟"
+ }]
+ }, {
+ "key": "tags",
+ "name": "全部类型",
+ "value": [{
+ "n": "全部类型",
+ "v": ""
+ }, {
+ "n": "资讯",
+ "v": "资讯"
+ }, {
+ "n": "解说",
+ "v": "解说"
+ }, {
+ "n": "主播",
+ "v": "主播"
+ }, {
+ "n": "沙盒",
+ "v": "沙盒"
+ }, {
+ "n": "益智",
+ "v": "益智"
+ }, {
+ "n": "生存",
+ "v": "生存"
+ }, {
+ "n": "电子竞技",
+ "v": "电子竞技"
+ }, {
+ "n": "单机主机",
+ "v": "单机主机"
+ }, {
+ "n": "真人秀",
+ "v": "真人秀"
+ }, {
+ "n": "动画",
+ "v": "动画"
+ }, {
+ "n": "盘点",
+ "v": "盘点"
+ }, {
+ "n": "游戏文化",
+ "v": "游戏文化"
+ }, {
+ "n": "游戏节目",
+ "v": "游戏节目"
+ }, {
+ "n": "评测",
+ "v": "评测"
+ }, {
+ "n": "射击",
+ "v": "射击"
+ }, {
+ "n": "策略",
+ "v": "策略"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "即时战略",
+ "v": "即时战略"
+ }, {
+ "n": "卡牌",
+ "v": "卡牌"
+ }, {
+ "n": "角色扮演",
+ "v": "角色>扮演"
+ }]
+ }, {
+ "key": "sort",
+ "name": "综合排序",
+ "value": [{
+ "n": "综合排序",
+ "v": ""
+ }, {
+ "n": "最多播放",
+ "v": "2"
+ }, {
+ "n": "最好评",
+ "v": "3"
+ }, {
+ "n": "最新上线",
+ "v": "1"
+ }]
+ }]
+ },
+ headers: {
+ 'User-Agent': 'PC_UA',
+ 'Cookie': 'cna=VvNvGX3e0ywCAavVEXlnA2bg; __ysuid=1626676228345Rl1; __ayft=1652434048647; __arycid=dm-1-00; __arcms=dm-1-00; __ayvstp=85; __arpvid=1667204023100cWWdgM-1667204023112; __ayscnt=10; __aypstp=60; isg=BBwcqxvvk3BxkWQGugbLpUSf7TrOlcC_U7GAj_YdfYfvQbzLHqYGT4Hgp6m5TvgX; tfstk=c3JOByYUH20ilVucLOhh0pCtE40lZfGc-PjLHLLfuX7SWNyAiQvkeMBsIw7PWDC..; l=eBQguS-PjdJFGJT-BOfwourza77OSIRA_uPzaNbMiOCPOb1B5UxfW6yHp4T6C3GVhsGJR3rp2umHBeYBqQd-nxvOF8qmSVDmn',
+ 'Referer': 'https://www.youku.com',
+ },
+ timeout: 5000,
+ class_name: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏',
+ class_url: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏',
+ limit: 20,
+ play_parse: true,
+ lazy: $js.toString(() => {
+ try {
+ let api = "" + input.split("?")[0];
+ console.log(api);
+ let response = fetch(api, {
+ method: 'get',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ });
+ let bata = JSON.parse(response);
+ if (bata.url.includes("http")) {
+ input = {
+ parse: 0,
+ url: bata.url,
+ jx: 0,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ } else {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ } catch {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ }),
+ 一级: $js.toString(() => {
+ let d = [];
+ MY_FL.type = MY_CATE;
+ let fl = stringify(MY_FL);
+ fl = encodeUrl(fl);
+ input = input.split("{")[0] + fl;
+ if (MY_PAGE > 1) {
+ let old_session = getItem("yk_session_" + MY_CATE, "{}");
+ if (MY_PAGE === 2) {
+ input = input.replace("optionRefresh=1", "session=" + encodeUrl(old_session))
+ } else {
+ input = input.replace("optionRefresh=1", "session=" + encodeUrl(old_session))
+ }
+ }
+ let html = fetch(input, fetch_params);
+ try {
+ html = JSON.parse(html);
+ let lists = html.data.filterData.listData;
+ let session = html.data.filterData.session;
+ session = stringify(session);
+ if (session !== getItem("yk_session_" + MY_CATE, "{}")) {
+ setItem("yk_session_" + MY_CATE, session)
+ }
+ lists.forEach(function(it) {
+ let vid;
+ if (it.videoLink.includes("id_")) {
+ vid = it.videoLink.split("id_")[1].split(".html")[0]
+ } else {
+ vid = "msearch:"
+ }
+ d.push({
+ title: it.title,
+ img: it.img,
+ desc: it.summary,
+ url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + vid,
+ content: it.subTitle
+ })
+ })
+ } catch (e) {
+ log("一级列表解析发生错误:" + e.message)
+ }
+ setResult(d);
+ }),
+ 二级: $js.toString(() => {
+ var d = [];
+ VOD = {};
+ let html = request(input);
+ let json = JSON.parse(html);
+ if (/keyword/.test(input)) {
+ input = "https://search.youku.com/api/search?appScene=show_episode&showIds=" + json.pageComponentList[0].commonData.showId;
+ json = JSON.parse(fetch(MY_URL, fetch_params))
+ }
+ let video_lists = json.serisesList;
+ var name = json.sourceName;
+ if (/优酷/.test(name) && video_lists.length > 0) {
+ let ourl = "https://v.youku.com/v_show/id_" + video_lists[0].videoId + ".html";
+ let _img = video_lists[0].thumbUrl;
+ let html = fetch(ourl, {
+ headers: {
+ Referer: "https://v.youku.com/",
+ "User-Agent": PC_UA
+ }
+ });
+ let json = /__INITIAL_DATA__/.test(html) ? html.split("window.__INITIAL_DATA__ =")[1].split(";")[0] : "{}";
+ if (json === "{}") {
+ log("触发了优酷人机验证");
+ VOD.vod_remarks = ourl;
+ VOD.vod_pic = _img;
+ VOD.vod_name = video_lists[0].title.replace(/(\d+)/g, "");
+ VOD.vod_content = "触发了优酷人机验证,本次未获取详情,但不影响播放(" + ourl + ")"
+ } else {
+ try {
+ json = JSON.parse(json);
+ let data = json.data.data;
+ let data_extra = data.data.extra;
+ let img = data_extra.showImgV;
+ let model = json.data.model;
+ let m = model.detail.data.nodes[0].nodes[0].nodes[0].data;
+ let _type = m.showGenre;
+ let _desc = m.updateInfo || m.subtitle;
+ let JJ = m.desc;
+ let _title = m.introTitle;
+ VOD.vod_pic = img;
+ VOD.vod_name = _title;
+ VOD.vod_type = _type;
+ VOD.vod_remarks = _desc;
+ VOD.vod_content = JJ
+ } catch (e) {
+ log("海报渲染发生错误:" + e.message);
+ print(json);
+ VOD.vod_remarks = name
+ }
+ }
+ }
+ if (!/优酷/.test(name)) {
+ VOD.vod_content = "非自家播放源,暂无视频简介及海报";
+ VOD.vod_remarks = name
+ }
+
+ function adhead(url) {
+ return urlencode(url)
+ }
+
+ play_url = play_url.replace("&play_url=", "&type=json&play_url=");
+ video_lists.forEach(function(it) {
+ let url = "https://v.youku.com/v_show/id_" + it.videoId + ".html";
+ if (it.thumbUrl) {
+ d.push({
+ desc: it.showVideoStage ? it.showVideoStage.replace("期", "集") : it.displayName,
+ pic_url: it.thumbUrl,
+ title: it.title,
+ url: play_url + adhead(url)
+ })
+ } else if (name !== "优酷") {
+ d.push({
+ title: it.displayName ? it.displayName : it.title,
+ url: play_url + adhead(it.url)
+ })
+ }
+ });
+ VOD.vod_play_from = name;
+ VOD.vod_play_url = d.map(function(it) {
+ return it.title + "$" + it.url
+ })
+ .join("#");
+ }),
+
+ 搜索: $js.toString(() => {
+ var d = [];
+ let html = request(input);
+ let json = JSON.parse(html);
+ json.pageComponentList.forEach(function(it) {
+ if (it.hasOwnProperty("commonData")) {
+ it = it.commonData;
+ d.push({
+ title: it.titleDTO.displayName,
+ img: it.posterDTO.vThumbUrl,
+ desc: it.stripeBottom,
+ content: it.updateNotice + " " + it.feature,
+ url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + it.showId + "&appCaller=h5"
+ })
+ }
+ });
+ setResult(d)
+ }),
+}
\ No newline at end of file
diff --git a/JS/剧圈圈.js b/JS/剧圈圈.js
new file mode 100644
index 0000000..94036de
--- /dev/null
+++ b/JS/剧圈圈.js
@@ -0,0 +1,12 @@
+Object.assign(muban.mxpro.二级, {
+ tab_text: 'div--small&&Text',
+});
+var rule = {
+ 模板: 'mxpro',
+ title: '剧圈圈',
+ host: 'https://www.jqqzx.cc/',
+ url: '/vodshow/id/fyclass/page/fypage.html',
+ searchUrl: '/vodsearch**/page/fypage.html',
+ class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;.*/(.*?)\.html',
+ cate_exclude: '今日更新|热榜',
+}
\ No newline at end of file
diff --git a/JS/动漫岛.js b/JS/动漫岛.js
new file mode 100644
index 0000000..1ffcc71
--- /dev/null
+++ b/JS/动漫岛.js
@@ -0,0 +1,1100 @@
+var rule = {
+ title: '动漫岛',
+ // host:'http://www.dmd85.com',
+ // host:'http://www.88dmw.com',
+ host: 'http://www.dmand5.com',
+ // url:'/vod-list-id-fyclass-pg-fypage-order--by-{by}-class-{class}-year-{year}-letter--area--lang-.html',
+ url: '/vod-list-id-fyclass-pg-fypage-order-fyfilter-area--lang-.html',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '-by-{{fl.by}}-class-{{fl.class}}-year-{{fl.year}}-letter-{{fl.letter}}',
+ filter: {
+ "1": [{
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "1"
+ }, {
+ "n": "热血",
+ "v": "2"
+ }, {
+ "n": "奇幻",
+ "v": "3"
+ }, {
+ "n": "恋爱",
+ "v": "4"
+ }, {
+ "n": "校园",
+ "v": "5"
+ }, {
+ "n": "后宫",
+ "v": "6"
+ }, {
+ "n": "搞笑",
+ "v": "7"
+ }, {
+ "n": "青春",
+ "v": "8"
+ }, {
+ "n": "百合",
+ "v": "9"
+ }, {
+ "n": "科幻",
+ "v": "14"
+ }, {
+ "n": "推理",
+ "v": "13"
+ }, {
+ "n": "魔法",
+ "v": "12"
+ }, {
+ "n": "神魔",
+ "v": "11"
+ }, {
+ "n": "治愈",
+ "v": "10"
+ }, {
+ "n": "竞技",
+ "v": "59"
+ }, {
+ "n": "悬疑",
+ "v": "60"
+ }, {
+ "n": "战争",
+ "v": "62"
+ }, {
+ "n": "萝莉",
+ "v": "63"
+ }, {
+ "n": "魔幻",
+ "v": "64"
+ }, {
+ "n": "战斗",
+ "v": "65"
+ }, {
+ "n": "歌舞",
+ "v": "98"
+ }, {
+ "n": "历史",
+ "v": "99"
+ }, {
+ "n": "励志",
+ "v": "108"
+ }, {
+ "n": "偶像",
+ "v": "118"
+ }, {
+ "n": "职场",
+ "v": "121"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000",
+ "v": "2000"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "更新",
+ "v": "time"
+ }, {
+ "n": "得分",
+ "v": "score"
+ }, {
+ "n": "总排行",
+ "v": "hits"
+ }]
+ }],
+ "3": [{
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "36"
+ }, {
+ "n": "热血",
+ "v": "37"
+ }, {
+ "n": "奇幻",
+ "v": "38"
+ }, {
+ "n": "恋爱",
+ "v": "39"
+ }, {
+ "n": "恋爱",
+ "v": "40"
+ }, {
+ "n": "恋爱",
+ "v": "40"
+ }, {
+ "n": "搞笑",
+ "v": "42"
+ }, {
+ "n": "治愈",
+ "v": "43"
+ }, {
+ "n": "神魔",
+ "v": "44"
+ }, {
+ "n": "魔法",
+ "v": "45"
+ }, {
+ "n": "百合",
+ "v": "46"
+ }, {
+ "n": "推理",
+ "v": "47"
+ }, {
+ "n": "科幻",
+ "v": "48"
+ }, {
+ "n": "竞技",
+ "v": "49"
+ }, {
+ "n": "悬疑",
+ "v": "66"
+ }, {
+ "n": "战争",
+ "v": "68"
+ }, {
+ "n": "萝莉",
+ "v": "69"
+ }, {
+ "n": "魔幻",
+ "v": "70"
+ }, {
+ "n": "战斗",
+ "v": "71"
+ }, {
+ "n": "青春",
+ "v": "72"
+ }, {
+ "n": "历史",
+ "v": "100"
+ }, {
+ "n": "歌舞",
+ "v": "101"
+ }, {
+ "n": "恐怖",
+ "v": "104"
+ }, {
+ "n": "职场",
+ "v": "107"
+ }, {
+ "n": "励志",
+ "v": "109"
+ }, {
+ "n": "偶像",
+ "v": "119"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000",
+ "v": "2000"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "更新",
+ "v": "time"
+ }, {
+ "n": "得分",
+ "v": "score"
+ }, {
+ "n": "总排行",
+ "v": "hits"
+ }]
+ }],
+ "4": [{
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "50"
+ }, {
+ "n": "热血",
+ "v": "51"
+ }, {
+ "n": "武侠",
+ "v": "52"
+ }, {
+ "n": "奇幻",
+ "v": "53"
+ }, {
+ "n": "玄幻",
+ "v": "54"
+ }, {
+ "n": "竞技",
+ "v": "55"
+ }, {
+ "n": "魔幻",
+ "v": "56"
+ }, {
+ "n": "科幻",
+ "v": "57"
+ }, {
+ "n": "恋爱",
+ "v": "58"
+ }, {
+ "n": "历史",
+ "v": "73"
+ }, {
+ "n": "战斗",
+ "v": "74"
+ }, {
+ "n": "搞笑",
+ "v": "75"
+ }, {
+ "n": "神魔",
+ "v": "76"
+ }, {
+ "n": "战争",
+ "v": "97"
+ }, {
+ "n": "古风",
+ "v": "111"
+ }, {
+ "n": "少女",
+ "v": "112"
+ }, {
+ "n": "萝莉",
+ "v": "113"
+ }, {
+ "n": "治愈",
+ "v": "114"
+ }, {
+ "n": "日常",
+ "v": "115"
+ }, {
+ "n": "歌舞",
+ "v": "116"
+ }, {
+ "n": "偶像",
+ "v": "120"
+ }, {
+ "n": "职场",
+ "v": "123"
+ }, {
+ "n": "仙侠",
+ "v": "125"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000",
+ "v": "2000"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "更新",
+ "v": "time"
+ }, {
+ "n": "得分",
+ "v": "score"
+ }, {
+ "n": "总排行",
+ "v": "hits"
+ }]
+ }],
+ "16": [{
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "77"
+ }, {
+ "n": "热血",
+ "v": "78"
+ }, {
+ "n": "奇幻",
+ "v": "79"
+ }, {
+ "n": "恋爱",
+ "v": "80"
+ }, {
+ "n": "校园",
+ "v": "81"
+ }, {
+ "n": "后宫",
+ "v": "82"
+ }, {
+ "n": "搞笑",
+ "v": "83"
+ }, {
+ "n": "青春",
+ "v": "84"
+ }, {
+ "n": "百合",
+ "v": "85"
+ }, {
+ "n": "治愈",
+ "v": "86"
+ }, {
+ "n": "神魔",
+ "v": "87"
+ }, {
+ "n": "魔法",
+ "v": "88"
+ }, {
+ "n": "推理",
+ "v": "89"
+ }, {
+ "n": "科幻",
+ "v": "90"
+ }, {
+ "n": "竞技",
+ "v": "91"
+ }, {
+ "n": "悬疑",
+ "v": "92"
+ }, {
+ "n": "战争",
+ "v": "93"
+ }, {
+ "n": "萝莉",
+ "v": "94"
+ }, {
+ "n": "魔幻",
+ "v": "95"
+ }, {
+ "n": "战斗",
+ "v": "96"
+ }, {
+ "n": "历史",
+ "v": "102"
+ }, {
+ "n": "歌舞",
+ "v": "103"
+ }, {
+ "n": "恐怖",
+ "v": "105"
+ }, {
+ "n": "职场",
+ "v": "106"
+ }, {
+ "n": "励志",
+ "v": "110"
+ }, {
+ "n": "偶像",
+ "v": "117"
+ }, {
+ "n": "职场",
+ "v": "124"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000",
+ "v": "2000"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "更新",
+ "v": "time"
+ }, {
+ "n": "得分",
+ "v": "score"
+ }, {
+ "n": "总排行",
+ "v": "hits"
+ }]
+ }]
+ },
+ searchUrl: '/search-pg-fypage-wd-**.html',
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ headers: {
+ 'User-Agent': 'PC_UA',
+ },
+ class_parse: '.secNacUl li;a&&Text;a&&href;.*/(\\d+)-1.html',
+ play_parse: true,
+ lazy: '',
+ limit: 6,
+ 推荐: '.c1_l_wap_contact li;*;img&&src;.time:eq(0)&&Text;*',
+ 一级: '.list3_cn_box .cn_box2;a&&title;.list_pic&&src;.list_20 li:eq(1) span&&Text;a&&href',
+ 二级: {
+ "title": "h1&&Text;.o_r_contact&&li:eq(0)&&Text",
+ "img": ".o_big_img_bg_b img&&src",
+ "desc": ".o_r_contact&&li:eq(6)&&Text;.o_r_contact&&li:eq(5)&&Text;.o_r_contact&&li:eq(3)&&Text;.o_r_contact&&li:eq(2)&&Text;.o_r_contact&&li:eq(1)&&Text",
+ "content": ".des_box&&Text",
+ "tabs": ".from-tabs&&label",
+ "lists": ".mn_list_li_movie:eq(#id) li"
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/JS/动漫巴士.js b/JS/动漫巴士.js
new file mode 100644
index 0000000..db8ae7b
--- /dev/null
+++ b/JS/动漫巴士.js
@@ -0,0 +1,64 @@
+var rule = {
+ author: '小可乐/240526/第一版',
+ title: '动漫巴士[漫]',
+ host: 'http://dm84.site',
+ hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":MOBILE_UA}});let src= jsp.pdfh(html,"ul&&a:eq(0)&&href");print(src);HOST=src',
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ 编码: 'utf-8',
+ timeout: 5000,
+
+ homeUrl: '/',
+ url: '/show-fyclass--fyfilter-fypage.html',
+ filter_url: '{{fl.by}}-{{fl.class}}--{{fl.year}}',
+ detailUrl: '',
+ searchUrl: '/s-**---------fypage.html',
+ searchable: 1,
+ quickSearch: 1,
+ filterable: 1,
+
+ class_name: '国产动漫&日本动漫&欧美动漫&电影',
+ class_url: '1&2&3&4',
+ filter_def: {},
+
+ proxy_rule: '',
+ sniffer: 0,
+ isVideo: '',
+ play_parse: true,
+ parse_url: '',
+ lazy: `js:
+let html = request(input);
+let kurl = pdfh(html,'body&&iframe').match(/src="(.*?)"/)[1];
+input= kurl
+`,
+
+ limit: 9,
+ double: false,
+ 推荐: '*',
+ //列表;标题;图片;描述;链接;详情(可不写)
+ 一级: '.v_list li;a&&title;a&&data-bg;.desc&&Text;a&&href',
+ 二级: {
+ //名称;类型
+ "title": "h1&&Text;meta[name*=class]&&content",
+ //图片
+ "img": "img&&src",
+ //主要描述;年份;地区;演员;导演
+ "desc": "meta[name*=update_date]&&content;meta[name*=release_date]&&content;meta[name*=area]&&content;meta[name*=actor]&&content;meta[name*=director]&&content",
+ //简介
+ "content": "p:eq(-2)&&Text",
+ //线路数组
+ "tabs": ".tab_control&&li",
+ //线路标题
+ "tab_text": "body&&Text",
+ //播放数组 选集列表
+ "lists": ".play_list:eq(#id)&&a",
+ //选集标题
+ "list_text": "body&&Text",
+ //选集链接
+ "list_url": "a&&href"
+ },
+ 搜索: '*',
+
+ filter: 'H4sIAAAAAAAAA+2WbUsqQRTH3+/HmNe+0LWn21eJXlgIRU+Q3UBEsLTaCrYtSm9cb2RQ2YOVFUFa9mWcGf0Wjc6cMxPFstDlcgXf7e/39+zo2XPUlEUiZHTMSpGZeJKMksnZWCJBQmQ+NhcXyKt1erQteDk2+1OIsRSZF5quldvZckcLIOmQsqcb9LmurALImPOL5QsqUwAZd3O6TgFmF2+tpy3IJGB2vmvUScDzKmfNxjGcJwHrspVWKQN1EiBrZV55w1WZArynd8Svd+GeEvCzb5VZZoW9XPF97ICp0uPpEDY5GY8t6h6zwlO78Biwx3bYHlCue2n4qPZR00e0j5je1t42fVj7sOEjP9CLS8OPaD9i+mHth00/pP2Q6Qe1H/zYr4mk0S13j9Z2PnVLN1HA0rR4Kdy5Wauxu32VTE0vJfSzvs1RZ10licmFxXjnWGs8ZBH7r+3E+l778AImQkKQnfDbJeq59OYKMgl6Dqv0rYAT2AU877hEf1fgPAlBdoIVa+LdQZ2EIDvBVq95HjMJmN3XWc6BTAK+l8MG9SBTgHUrHsvkoU4CZm6Ze/A8Fei6be5Usa4LmD2U2n9O+MElxMj9re2prY3+z1vr92vlW+e3mT7b9+UW9ee5l+Z54F/Ms/ib0nwt6v8sHfj2POeLdPMc6iQE+eb3nWenyrJrcJ6E/jz3zjxb6XeqCRqqbAwAAA=='
+}
\ No newline at end of file
diff --git a/JS/动画片大全.js b/JS/动画片大全.js
new file mode 100644
index 0000000..696e162
--- /dev/null
+++ b/JS/动画片大全.js
@@ -0,0 +1,28 @@
+var rule = {
+ title: '动画片大全',
+ host: 'https://www.dhpdq2.com/',
+ url: 'https://www.dhpdq2.com/katong/fyclass-fypage/',
+ searchUrl: '/vodsearch/**----------fypage---/',
+ class_parse: '.c_class li;a&&Text;a&&href;.*/(.*?)/',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ play_parse: true,
+ lazy: '',
+ limit: 6,
+ 推荐: '.stui-vodlist;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
+ double: true,
+ 一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
+ 二级: {
+ title: 'h1&&Text;.detail_list&&ul:eq(1)&&li&&a:eq(2)&&Text',
+ img: '.vodlist_thumb&&data-original',
+ desc: '.playinfo&&p:eq(0)&&Text;.playinfo&&p:eq(1)&&Text;.playinfo&&p:eq(2)&&Text;.playinfo&&p:eq(3)&&Text',
+ content: '.content:eq(1)',
+ tabs: '.relatesdh .title h3',
+ lists: '.relatesdh:eq(#id) li',
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/JS/去看吧.js b/JS/去看吧.js
new file mode 100644
index 0000000..81f9121
--- /dev/null
+++ b/JS/去看吧.js
@@ -0,0 +1,1127 @@
+muban.vfed.二级.title = 'h1&&Text;.fed-col-md3--span:eq(0)&&Text';
+muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text';
+var rule = {
+ title: '去看吧',
+ 模板: 'vfed',
+ host: 'https://www.k9dm.com',
+ // url: '/index.php/vod/show/id/fyclass/page/fypage.html',
+ url: '/index.php/vod/show/id/fyclassfyfilter.html',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '{{fl.area}}{{fl.by}}{{fl.class}}/page/fypage{{fl.year}}',
+ filter: {
+ "33": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "催泪",
+ "v": "/class/催泪"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "猎奇",
+ "v": "/class/猎奇"
+ }, {
+ "n": "励志",
+ "v": "/class/励志"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "机战",
+ "v": "/class/机战"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "运动",
+ "v": "/class/运动"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "伪娘",
+ "v": "/class/伪娘"
+ }, {
+ "n": "美少女",
+ "v": "/class/美少女"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "亲子",
+ "v": "/class/亲子"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }, {
+ "n": "1999",
+ "v": "/year/1999"
+ }, {
+ "n": "1998",
+ "v": "/year/1998"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "21": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "催泪",
+ "v": "/class/催泪"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "猎奇",
+ "v": "/class/猎奇"
+ }, {
+ "n": "励志",
+ "v": "/class/励志"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "机战",
+ "v": "/class/机战"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "运动",
+ "v": "/class/运动"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "伪娘",
+ "v": "/class/伪娘"
+ }, {
+ "n": "美少女",
+ "v": "/class/美少女"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "亲子",
+ "v": "/class/亲子"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "大陆",
+ "v": "/area/大陆"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "泰国",
+ "v": "/area/泰国"
+ }, {
+ "n": "新加坡",
+ "v": "/area/新加坡"
+ }, {
+ "n": "马来西亚",
+ "v": "/area/马来西亚"
+ }, {
+ "n": "印度",
+ "v": "/area/印度"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "法国",
+ "v": "/area/法国"
+ }, {
+ "n": "加拿大",
+ "v": "/area/加拿大"
+ }, {
+ "n": "西班牙",
+ "v": "/area/西班牙"
+ }, {
+ "n": "俄罗斯",
+ "v": "/area/俄罗斯"
+ }, {
+ "n": "其它",
+ "v": "/area/其它"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }, {
+ "n": "1999",
+ "v": "/year/1999"
+ }, {
+ "n": "1998",
+ "v": "/year/1998"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "50": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "催泪",
+ "v": "/class/催泪"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "猎奇",
+ "v": "/class/猎奇"
+ }, {
+ "n": "励志",
+ "v": "/class/励志"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "机战",
+ "v": "/class/机战"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "运动",
+ "v": "/class/运动"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "伪娘",
+ "v": "/class/伪娘"
+ }, {
+ "n": "美少女",
+ "v": "/class/美少女"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "亲子",
+ "v": "/class/亲子"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "大陆",
+ "v": "/area/大陆"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "泰国",
+ "v": "/area/泰国"
+ }, {
+ "n": "新加坡",
+ "v": "/area/新加坡"
+ }, {
+ "n": "马来西亚",
+ "v": "/area/马来西亚"
+ }, {
+ "n": "印度",
+ "v": "/area/印度"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "法国",
+ "v": "/area/法国"
+ }, {
+ "n": "加拿大",
+ "v": "/area/加拿大"
+ }, {
+ "n": "西班牙",
+ "v": "/area/西班牙"
+ }, {
+ "n": "俄罗斯",
+ "v": "/area/俄罗斯"
+ }, {
+ "n": "其它",
+ "v": "/area/其它"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }, {
+ "n": "1999",
+ "v": "/year/1999"
+ }, {
+ "n": "1998",
+ "v": "/year/1998"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "24": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "催泪",
+ "v": "/class/催泪"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "猎奇",
+ "v": "/class/猎奇"
+ }, {
+ "n": "励志",
+ "v": "/class/励志"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "机战",
+ "v": "/class/机战"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "运动",
+ "v": "/class/运动"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "伪娘",
+ "v": "/class/伪娘"
+ }, {
+ "n": "美少女",
+ "v": "/class/美少女"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "亲子",
+ "v": "/class/亲子"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "大陆",
+ "v": "/area/大陆"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "泰国",
+ "v": "/area/泰国"
+ }, {
+ "n": "新加坡",
+ "v": "/area/新加坡"
+ }, {
+ "n": "马来西亚",
+ "v": "/area/马来西亚"
+ }, {
+ "n": "印度",
+ "v": "/area/印度"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "法国",
+ "v": "/area/法国"
+ }, {
+ "n": "加拿大",
+ "v": "/area/加拿大"
+ }, {
+ "n": "西班牙",
+ "v": "/area/西班牙"
+ }, {
+ "n": "俄罗斯",
+ "v": "/area/俄罗斯"
+ }, {
+ "n": "其它",
+ "v": "/area/其它"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }, {
+ "n": "1999",
+ "v": "/year/1999"
+ }, {
+ "n": "1998",
+ "v": "/year/1998"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "22": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "催泪",
+ "v": "/class/催泪"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "猎奇",
+ "v": "/class/猎奇"
+ }, {
+ "n": "励志",
+ "v": "/class/励志"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "机战",
+ "v": "/class/机战"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "运动",
+ "v": "/class/运动"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "伪娘",
+ "v": "/class/伪娘"
+ }, {
+ "n": "美少女",
+ "v": "/class/美少女"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "亲子",
+ "v": "/class/亲子"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "欧美",
+ "v": "/area/欧美"
+ }, {
+ "n": "其他",
+ "v": "/area/其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }, {
+ "n": "1999",
+ "v": "/year/1999"
+ }, {
+ "n": "1998",
+ "v": "/year/1998"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }]
+ },
+ class_parse: '.fed-pops-list:eq(0)&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html',
+}
\ No newline at end of file
diff --git a/JS/奇米动漫.js b/JS/奇米动漫.js
new file mode 100644
index 0000000..9e4e97b
--- /dev/null
+++ b/JS/奇米动漫.js
@@ -0,0 +1,1164 @@
+var rule = {
+ title: '奇米动漫',
+ host: 'http://www.qimiqimi.net',
+ url: '/show/fyclassfyfilter.html',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '{{fl.area}}{{fl.by}}{{fl.class}}{{fl.letter}}/page/fypage{{fl.year}}',
+ filter: {
+ "xinfan": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "神魔",
+ "v": "/class/神魔"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }, {
+ "n": "悬疑",
+ "v": "/class/悬疑"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "战争",
+ "v": "/class/战争"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "魔幻",
+ "v": "/class/魔幻"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "日常",
+ "v": "/class/日常"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "/area/日本/"
+ }, {
+ "n": "大陆",
+ "v": "/area/中国/"
+ }, {
+ "n": "欧美",
+ "v": "/area/欧美/"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国/"
+ }, {
+ "n": "港台",
+ "v": "/area/港台/"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "字母",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "riman": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "神魔",
+ "v": "/class/神魔"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }, {
+ "n": "悬疑",
+ "v": "/class/悬疑"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "战争",
+ "v": "/class/战争"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "魔幻",
+ "v": "/class/魔幻"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "日常",
+ "v": "/class/日常"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "/area/日本/"
+ }, {
+ "n": "大陆",
+ "v": "/area/中国/"
+ }, {
+ "n": "欧美",
+ "v": "/area/欧美/"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国/"
+ }, {
+ "n": "港台",
+ "v": "/area/港台/"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "字母",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "guoman": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "神魔",
+ "v": "/class/神魔"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }, {
+ "n": "悬疑",
+ "v": "/class/悬疑"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "战争",
+ "v": "/class/战争"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "魔幻",
+ "v": "/class/魔幻"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "日常",
+ "v": "/class/日常"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "/area/日本/"
+ }, {
+ "n": "大陆",
+ "v": "/area/中国/"
+ }, {
+ "n": "欧美",
+ "v": "/area/欧美/"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国/"
+ }, {
+ "n": "港台",
+ "v": "/area/港台/"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "字母",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "jcdm": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "神魔",
+ "v": "/class/神魔"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }, {
+ "n": "悬疑",
+ "v": "/class/悬疑"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "战争",
+ "v": "/class/战争"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "魔幻",
+ "v": "/class/魔幻"
+ }, {
+ "n": "战斗",
+ "v": "/class/战斗"
+ }, {
+ "n": "日常",
+ "v": "/class/日常"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "/area/日本/"
+ }, {
+ "n": "大陆",
+ "v": "/area/中国/"
+ }, {
+ "n": "欧美",
+ "v": "/area/欧美/"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国/"
+ }, {
+ "n": "港台",
+ "v": "/area/港台/"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2007",
+ "v": "/year/2007"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }, {
+ "n": "2003",
+ "v": "/year/2003"
+ }, {
+ "n": "2002",
+ "v": "/year/2002"
+ }, {
+ "n": "2001",
+ "v": "/year/2001"
+ }, {
+ "n": "2000",
+ "v": "/year/2000"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "字母",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }]
+ },
+ searchable: 2, //是否启用全局搜索,
+ headers: { //网站的请求头,完整支持所有的,常带ua和cookies
+ 'User-Agent': 'PC_UA',
+ },
+ class_parse: '#nav li;a&&Text;a&&href;.*/(\\w+).html',
+ cate_exclude: '番组专题|最近更新',
+ play_parse: true,
+ lazy: `js:
+ var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
+ var url = html.url;
+ if (html.encrypt == '1') {
+ url = unescape(url)
+ } else if (html.encrypt == '2') {
+ url = unescape(base64Decode(url))
+ }
+ if (/\\.m3u8|\\.mp4/.test(url)) {
+ input = {
+ jx: 0,
+ url: url,
+ parse: 0
+ }
+ } else {
+ input
+ }
+ `,
+ limit: 6,
+ 推荐: '*;*;*;.text&&Text;*',
+ 一级: '.img-list li;a&&title;img&&src;i&&Text;a&&href',
+ 二级: {
+ "title": "h1&&Text;dl.fn-left:eq(3)&&Text",
+ "img": ".detail-pic&&img&&src",
+ "desc": "dl.fn-left:eq(2)&&Text;;;.nyzhuy--dt&&Text;.fn-right:eq(0)--dt&&Text",
+ "content": ".tjuqing&&Text",
+ "tabs": ".down-title h2",
+ "lists": ".video_list:eq(#id) a"
+ },
+ searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
+ detailUrl: '/detail/fyid.html', //非必填,二级详情拼接链接
+ 搜索: 'json:list;name;pic;;id',
+}
\ No newline at end of file
diff --git a/JS/好看动漫.js b/JS/好看动漫.js
new file mode 100644
index 0000000..d152a76
--- /dev/null
+++ b/JS/好看动漫.js
@@ -0,0 +1,29 @@
+var rule = {
+ title: '好看动漫',
+ host: 'https://www.youjiula.com/',
+ url: 'https://www.youjiula.com/youjiu/fyclass-fypage.html',
+ searchUrl: 'https://www.youjiula.com/search.php?page=fypage&searchword=**&searchtype=',
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
+ headers: {
+ 'User-Agent': 'UC_UA', // "Cookie": ""
+ }, // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
+ class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
+ play_parse: true,
+ lazy: '',
+ limit: 6,
+ 推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
+ double: true, // 推荐内容是否双层定位
+ 一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
+ 二级: {
+ "title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
+ "img": ".stui-content__thumb .lazyload&&data-original",
+ "desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
+ "content": "#desc&&Text",
+ "tabs": ".stui-pannel-box h3",
+ "lists": ".stui-content__playlist:eq(#id) li"
+ },
+ 搜索: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
+
+}
\ No newline at end of file
diff --git a/JS/异世界.js b/JS/异世界.js
new file mode 100644
index 0000000..bf556ee
--- /dev/null
+++ b/JS/异世界.js
@@ -0,0 +1,278 @@
+var rule = {
+ title: '异世界动漫',
+ host: 'https://www.dmmiku.com/',
+ homeUrl: '/index.php/vod/show/id/22.html',
+ // url:'/index.php/vod/show/class/fyclass/id/20/page/fypage.html',
+ url: '/index.php/vod/show/fyclassfyfilter.html',
+ filterable: 1,
+ filter_url: '{{fl.type}}/id/20/page/fypage{{fl.year}}',
+ filter: {
+ "area/日本": [{
+ "key": "type",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "OVA",
+ "v": "/class/OVA"
+ }, {
+ "n": "剧场版",
+ "v": "/class/剧场版"
+ }, {
+ "n": "无修",
+ "v": "/class/BD无修"
+ }, {
+ "n": "萝莉",
+ "v": "/class/萝莉"
+ }, {
+ "n": "学園",
+ "v": "/class/学園"
+ }, {
+ "n": "后宫",
+ "v": "/class/后宫"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "神魔",
+ "v": "/class/神魔"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "治愈",
+ "v": "/class/治愈"
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "百合",
+ "v": "/class/百合"
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "魔法",
+ "v": "/class/魔法"
+ }, {
+ "n": "机战",
+ "v": "/class/机战"
+ }, {
+ "n": "战争",
+ "v": "/class/战争"
+ }, {
+ "n": "犯罪",
+ "v": "/class/犯罪"
+ }, {
+ "n": "悬疑",
+ "v": "/class/悬疑"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }, {
+ "n": "运动",
+ "v": "/class/运动"
+ }, {
+ "n": "耽美",
+ "v": "/class/耽美"
+ }, {
+ "n": "其他",
+ "v": "/class/其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }]
+ }],
+ "area/中國": [{
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }]
+ }]
+ },
+ searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
+ searchable: 2,
+ quickSearch: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000, //网站的全局请求超时,默认是3000毫秒
+ class_name: '日漫&国漫',
+ class_url: 'area/日本&area/中國',
+ play_parse: true,
+ lazy: `js:
+ var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
+ var url = html.url;
+ var from = html.from;
+ if (html.encrypt == '1') {
+ url = unescape(url)
+ } else if (html.encrypt == '2') {
+ url = unescape(base64Decode(url))
+ }
+ if (/m3u8|mp4/.test(url)) {
+ input = url
+ } else {
+ var MacPlayerConfig={};
+ eval(fetch(HOST + "/static/js/playerconfig.js").replace('var Mac','Mac'));
+ var jx = MacPlayerConfig.player_list[from].parse;
+ if (jx == '') {
+ jx = MacPlayerConfig.parse
+ };
+ if (jx.startsWith("/")) {
+ jx = "https:" + jx;
+ }
+ input={
+ jx:0,
+ url:jx+url,
+ parse:1,
+ header: JSON.stringify({
+ 'referer': HOST
+ })
+ }
+ }
+ `,
+ limit: 6,
+ // 图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
+ 推荐: '*',
+ 一级: '.vodlist_wi&&li;.lazyload&&title;.lazyload&&data-original;.pic_text&&Text;a&&href',
+ 二级: {
+ "title": "h2&&Text;li.data--span:eq(0)&&Text",
+ "img": ".lazyload&&data-original",
+ "desc": "li.data--span:eq(1)&&Text;;;li.data--span:eq(2)&&Text;li.data--span:eq(3)&&Text",
+ "content": ".full_text&&span&&Text",
+ "tabs": `js:
+ TABS = [];
+ let tabs = pdfa(html, '#NumTab&&a');
+ tabs.forEach((it) => {
+ TABS.push(pdfh(it, 'a&&alt'))
+ });
+ `,
+ // "lists": ".content_playlist:not(.list_scroll):eq(#id) a"
+ "lists": "div.playlist_full:eq(#id) li"
+ },
+ 搜索: 'li.searchlist_item;*;*;*;*',
+}
\ No newline at end of file
diff --git a/JS/思古影视.js b/JS/思古影视.js
new file mode 100644
index 0000000..81a5794
--- /dev/null
+++ b/JS/思古影视.js
@@ -0,0 +1,44 @@
+var rule = {
+ 类型: '影视',
+ title: '思古影视',
+ host: 'https://siguyy.cn',
+ url: '/show/fyclass--------fypage---/',
+ searchUrl: 'https://siguyy.cn/search/-------------/?wd=**',
+ searchable: 2,
+ quickSearch: 0,
+ timeout: 5000,
+ play_parse: true,
+ filterable: 0,
+ class_name: '电影&电视剧&综艺&动漫',
+ class_url: '1&2&3&4',
+ lazy: `js:
+ if(/\\.(m3u8|mp4)/.test(input)){
+ input = {parse:0,url:input}
+ }else{
+ if(rule.parse_url.startsWith('json:')){
+ let purl = rule.parse_url.replace('json:','')+input;
+ let html = request(purl);
+ input = {parse:0,url:JSON.parse(html).url}
+ }else{
+ input= rule.parse_url+input;
+ }
+ `,
+ headers: {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
+ },
+ 推荐: '*',
+ 一级: '.container .flex.desktop-hover-effect;span&&Text;img&&data-original;p.truncate&&Text;a&&href',
+ 二级: {
+ title: '.p-3.mobile&&Text',
+ img: 'img&&data-original',
+ desc: '.text-sm.py-1&&Text',
+ content: '.text-secondary&&Text',
+ tabs: '.flex.flex-row.gap-1.items-center',
+ lists: '.flex.flex-column.overflow-auto.no-scrollbar&&li',
+ tab_text: 'body&&Text',
+ list_text: 'a&&Text',
+ list_url: 'a&&href',
+ },
+ double: false,
+ 搜索: '.col-lg-6.col-md-12.mt-2.mb-2.cursor-pointer;.topic-details-title-sub.text-secondary&&Text;img&&data-original;.topic-details-title&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JS/怡萱动漫.js b/JS/怡萱动漫.js
new file mode 100644
index 0000000..d33b0fb
--- /dev/null
+++ b/JS/怡萱动漫.js
@@ -0,0 +1,773 @@
+// 发布页 https://acgfans.org/pub.html
+var rule = {
+ title: '怡萱动漫',
+ // host:'https://www.yxdmlove.com',
+ host: 'https://acgfans.org/pub.html',
+ hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,"p:eq(0)&&a&&Text");print(src);HOST=src', //网页域名根动态抓取js代码。通过HOST=赋值
+ // url:'/category.html?channel=17&zhonglei=fyclass&orderby=pubdate&totalresult=2999&pageno=fypage',
+ url: '/category.html?channel=17&zhonglei=fyclassfyfilter&pageno=fypage',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '&{{fl.by or "orderby=pubdate"}}&{{fl.year}}&{{fl.area}}&{{fl.sta}}&{{fl.class}}',
+ filter: {
+ "TV": [{
+ "key": "sta",
+ "name": "进度",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "连载中",
+ "v": "status=连载中"
+ }, {
+ "n": "已完结",
+ "v": "status=已完结"
+ }, {
+ "n": "未播放",
+ "v": "status=未播放"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "area=日本"
+ }, {
+ "n": "中国",
+ "v": "area=中国"
+ }, {
+ "n": "欧美",
+ "v": "area=欧美"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "year=2025"
+ }, {
+ "n": "2024",
+ "v": "year=2024"
+ }, {
+ "n": "2023",
+ "v": "year=2023"
+ }, {
+ "n": "2022",
+ "v": "year=2022"
+ }, {
+ "n": "2021",
+ "v": "year=2021"
+ }, {
+ "n": "2020",
+ "v": "year=2020"
+ }, {
+ "n": "2019",
+ "v": "year=2019"
+ }, {
+ "n": "2018",
+ "v": "year=2018"
+ }, {
+ "n": "2017",
+ "v": "year=2017"
+ }, {
+ "n": "2016",
+ "v": "year=2016"
+ }, {
+ "n": "2015",
+ "v": "year=2015"
+ }, {
+ "n": "2014",
+ "v": "year=2014"
+ }, {
+ "n": "2013",
+ "v": "year=2013"
+ }, {
+ "n": "2012",
+ "v": "year=2012"
+ }, {
+ "n": "2011",
+ "v": "year=2011"
+ }, {
+ "n": "2010",
+ "v": "year=2010"
+ }, {
+ "n": "更早",
+ "v": "year=2010前"
+ }]
+ }, {
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "jqlx=冒险"
+ }, {
+ "n": "热血",
+ "v": "jqlx=热血"
+ }, {
+ "n": "爱情",
+ "v": "jqlx=爱情"
+ }, {
+ "n": "搞笑",
+ "v": "jqlx=搞笑"
+ }, {
+ "n": "后宫",
+ "v": "jqlx=后宫"
+ }, {
+ "n": "校园",
+ "v": "jqlx=校园"
+ }, {
+ "n": "机战",
+ "v": "jqlx=机战"
+ }, {
+ "n": "幻想",
+ "v": "jqlx=幻想"
+ }, {
+ "n": "科幻",
+ "v": "jqlx=科幻"
+ }, {
+ "n": "竞技",
+ "v": "jqlx=竞技"
+ }, {
+ "n": "百合",
+ "v": "jqlx=百合"
+ }, {
+ "n": "耽美",
+ "v": "jqlx=耽美"
+ }, {
+ "n": "悬疑",
+ "v": "jqlx=悬疑"
+ }, {
+ "n": "剧情",
+ "v": "jqlx=剧情"
+ }, {
+ "n": "战争",
+ "v": "jqlx=战争"
+ }, {
+ "n": "恐怖",
+ "v": "jqlx=恐怖"
+ }, {
+ "n": "运动",
+ "v": "jqlx=运动"
+ }, {
+ "n": "动作",
+ "v": "jqlx=动作"
+ }, {
+ "n": "童话",
+ "v": "jqlx=童话"
+ }, {
+ "n": "历史",
+ "v": "jqlx=历史"
+ }, {
+ "n": "真人",
+ "v": "jqlx=真人"
+ }, {
+ "n": "女性向",
+ "v": "jqlx=女性向"
+ }, {
+ "n": "泡面番",
+ "v": "jqlx=泡面番"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "orderby=pubdate"
+ }, {
+ "n": "热度",
+ "v": "orderby=click"
+ }]
+ }],
+ "剧场版": [{
+ "key": "sta",
+ "name": "进度",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "连载中",
+ "v": "status=连载中"
+ }, {
+ "n": "已完结",
+ "v": "status=已完结"
+ }, {
+ "n": "未播放",
+ "v": "status=未播放"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "area=日本"
+ }, {
+ "n": "中国",
+ "v": "area=中国"
+ }, {
+ "n": "欧美",
+ "v": "area=欧美"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "year=2025"
+ }, {
+ "n": "2024",
+ "v": "year=2024"
+ }, {
+ "n": "2023",
+ "v": "year=2023"
+ }, {
+ "n": "2022",
+ "v": "year=2022"
+ }, {
+ "n": "2021",
+ "v": "year=2021"
+ }, {
+ "n": "2020",
+ "v": "year=2020"
+ }, {
+ "n": "2019",
+ "v": "year=2019"
+ }, {
+ "n": "2018",
+ "v": "year=2018"
+ }, {
+ "n": "2017",
+ "v": "year=2017"
+ }, {
+ "n": "2016",
+ "v": "year=2016"
+ }, {
+ "n": "2015",
+ "v": "year=2015"
+ }, {
+ "n": "2014",
+ "v": "year=2014"
+ }, {
+ "n": "2013",
+ "v": "year=2013"
+ }, {
+ "n": "2012",
+ "v": "year=2012"
+ }, {
+ "n": "2011",
+ "v": "year=2011"
+ }, {
+ "n": "2010",
+ "v": "year=2010"
+ }, {
+ "n": "更早",
+ "v": "year=2010前"
+ }]
+ }, {
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "jqlx=冒险"
+ }, {
+ "n": "热血",
+ "v": "jqlx=热血"
+ }, {
+ "n": "爱情",
+ "v": "jqlx=爱情"
+ }, {
+ "n": "搞笑",
+ "v": "jqlx=搞笑"
+ }, {
+ "n": "后宫",
+ "v": "jqlx=后宫"
+ }, {
+ "n": "校园",
+ "v": "jqlx=校园"
+ }, {
+ "n": "机战",
+ "v": "jqlx=机战"
+ }, {
+ "n": "幻想",
+ "v": "jqlx=幻想"
+ }, {
+ "n": "科幻",
+ "v": "jqlx=科幻"
+ }, {
+ "n": "竞技",
+ "v": "jqlx=竞技"
+ }, {
+ "n": "百合",
+ "v": "jqlx=百合"
+ }, {
+ "n": "耽美",
+ "v": "jqlx=耽美"
+ }, {
+ "n": "悬疑",
+ "v": "jqlx=悬疑"
+ }, {
+ "n": "剧情",
+ "v": "jqlx=剧情"
+ }, {
+ "n": "战争",
+ "v": "jqlx=战争"
+ }, {
+ "n": "恐怖",
+ "v": "jqlx=恐怖"
+ }, {
+ "n": "运动",
+ "v": "jqlx=运动"
+ }, {
+ "n": "动作",
+ "v": "jqlx=动作"
+ }, {
+ "n": "童话",
+ "v": "jqlx=童话"
+ }, {
+ "n": "历史",
+ "v": "jqlx=历史"
+ }, {
+ "n": "真人",
+ "v": "jqlx=真人"
+ }, {
+ "n": "女性向",
+ "v": "jqlx=女性向"
+ }, {
+ "n": "泡面番",
+ "v": "jqlx=泡面番"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "orderby=pubdate"
+ }, {
+ "n": "热度",
+ "v": "orderby=click"
+ }]
+ }],
+ "OVA": [{
+ "key": "sta",
+ "name": "进度",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "连载中",
+ "v": "status=连载中"
+ }, {
+ "n": "已完结",
+ "v": "status=已完结"
+ }, {
+ "n": "未播放",
+ "v": "status=未播放"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "area=日本"
+ }, {
+ "n": "中国",
+ "v": "area=中国"
+ }, {
+ "n": "欧美",
+ "v": "area=欧美"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "year=2025"
+ }, {
+ "n": "2024",
+ "v": "year=2024"
+ }, {
+ "n": "2023",
+ "v": "year=2023"
+ }, {
+ "n": "2022",
+ "v": "year=2022"
+ }, {
+ "n": "2021",
+ "v": "year=2021"
+ }, {
+ "n": "2020",
+ "v": "year=2020"
+ }, {
+ "n": "2019",
+ "v": "year=2019"
+ }, {
+ "n": "2018",
+ "v": "year=2018"
+ }, {
+ "n": "2017",
+ "v": "year=2017"
+ }, {
+ "n": "2016",
+ "v": "year=2016"
+ }, {
+ "n": "2015",
+ "v": "year=2015"
+ }, {
+ "n": "2014",
+ "v": "year=2014"
+ }, {
+ "n": "2013",
+ "v": "year=2013"
+ }, {
+ "n": "2012",
+ "v": "year=2012"
+ }, {
+ "n": "2011",
+ "v": "year=2011"
+ }, {
+ "n": "2010",
+ "v": "year=2010"
+ }, {
+ "n": "更早",
+ "v": "year=2010前"
+ }]
+ }, {
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "jqlx=冒险"
+ }, {
+ "n": "热血",
+ "v": "jqlx=热血"
+ }, {
+ "n": "爱情",
+ "v": "jqlx=爱情"
+ }, {
+ "n": "搞笑",
+ "v": "jqlx=搞笑"
+ }, {
+ "n": "后宫",
+ "v": "jqlx=后宫"
+ }, {
+ "n": "校园",
+ "v": "jqlx=校园"
+ }, {
+ "n": "机战",
+ "v": "jqlx=机战"
+ }, {
+ "n": "幻想",
+ "v": "jqlx=幻想"
+ }, {
+ "n": "科幻",
+ "v": "jqlx=科幻"
+ }, {
+ "n": "竞技",
+ "v": "jqlx=竞技"
+ }, {
+ "n": "百合",
+ "v": "jqlx=百合"
+ }, {
+ "n": "耽美",
+ "v": "jqlx=耽美"
+ }, {
+ "n": "悬疑",
+ "v": "jqlx=悬疑"
+ }, {
+ "n": "剧情",
+ "v": "jqlx=剧情"
+ }, {
+ "n": "战争",
+ "v": "jqlx=战争"
+ }, {
+ "n": "恐怖",
+ "v": "jqlx=恐怖"
+ }, {
+ "n": "运动",
+ "v": "jqlx=运动"
+ }, {
+ "n": "动作",
+ "v": "jqlx=动作"
+ }, {
+ "n": "童话",
+ "v": "jqlx=童话"
+ }, {
+ "n": "历史",
+ "v": "jqlx=历史"
+ }, {
+ "n": "真人",
+ "v": "jqlx=真人"
+ }, {
+ "n": "女性向",
+ "v": "jqlx=女性向"
+ }, {
+ "n": "泡面番",
+ "v": "jqlx=泡面番"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "orderby=pubdate"
+ }, {
+ "n": "热度",
+ "v": "orderby=click"
+ }]
+ }],
+ "其他": [{
+ "key": "sta",
+ "name": "进度",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "连载中",
+ "v": "status=连载中"
+ }, {
+ "n": "已完结",
+ "v": "status=已完结"
+ }, {
+ "n": "未播放",
+ "v": "status=未播放"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "日本",
+ "v": "area=日本"
+ }, {
+ "n": "中国",
+ "v": "area=中国"
+ }, {
+ "n": "欧美",
+ "v": "area=欧美"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "year=2025"
+ }, {
+ "n": "2024",
+ "v": "year=2024"
+ }, {
+ "n": "2023",
+ "v": "year=2023"
+ }, {
+ "n": "2022",
+ "v": "year=2022"
+ }, {
+ "n": "2021",
+ "v": "year=2021"
+ }, {
+ "n": "2020",
+ "v": "year=2020"
+ }, {
+ "n": "2019",
+ "v": "year=2019"
+ }, {
+ "n": "2018",
+ "v": "year=2018"
+ }, {
+ "n": "2017",
+ "v": "year=2017"
+ }, {
+ "n": "2016",
+ "v": "year=2016"
+ }, {
+ "n": "2015",
+ "v": "year=2015"
+ }, {
+ "n": "2014",
+ "v": "year=2014"
+ }, {
+ "n": "2013",
+ "v": "year=2013"
+ }, {
+ "n": "2012",
+ "v": "year=2012"
+ }, {
+ "n": "2011",
+ "v": "year=2011"
+ }, {
+ "n": "2010",
+ "v": "year=2010"
+ }, {
+ "n": "更早",
+ "v": "year=2010前"
+ }]
+ }, {
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "冒险",
+ "v": "jqlx=冒险"
+ }, {
+ "n": "热血",
+ "v": "jqlx=热血"
+ }, {
+ "n": "爱情",
+ "v": "jqlx=爱情"
+ }, {
+ "n": "搞笑",
+ "v": "jqlx=搞笑"
+ }, {
+ "n": "后宫",
+ "v": "jqlx=后宫"
+ }, {
+ "n": "校园",
+ "v": "jqlx=校园"
+ }, {
+ "n": "机战",
+ "v": "jqlx=机战"
+ }, {
+ "n": "幻想",
+ "v": "jqlx=幻想"
+ }, {
+ "n": "科幻",
+ "v": "jqlx=科幻"
+ }, {
+ "n": "竞技",
+ "v": "jqlx=竞技"
+ }, {
+ "n": "百合",
+ "v": "jqlx=百合"
+ }, {
+ "n": "耽美",
+ "v": "jqlx=耽美"
+ }, {
+ "n": "悬疑",
+ "v": "jqlx=悬疑"
+ }, {
+ "n": "剧情",
+ "v": "jqlx=剧情"
+ }, {
+ "n": "战争",
+ "v": "jqlx=战争"
+ }, {
+ "n": "恐怖",
+ "v": "jqlx=恐怖"
+ }, {
+ "n": "运动",
+ "v": "jqlx=运动"
+ }, {
+ "n": "动作",
+ "v": "jqlx=动作"
+ }, {
+ "n": "童话",
+ "v": "jqlx=童话"
+ }, {
+ "n": "历史",
+ "v": "jqlx=历史"
+ }, {
+ "n": "真人",
+ "v": "jqlx=真人"
+ }, {
+ "n": "女性向",
+ "v": "jqlx=女性向"
+ }, {
+ "n": "泡面番",
+ "v": "jqlx=泡面番"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "orderby=pubdate"
+ }, {
+ "n": "热度",
+ "v": "orderby=click"
+ }]
+ }]
+ },
+ // filter_def:{
+ // TV:{by:'orderby=pubdate'},
+ // 剧场版:{by:'orderby=pubdate'},
+ // OVA:{by:'orderby=pubdate'},
+ // 其他:{by:'orderby=pubdate'}
+ // },
+ searchUrl: '/search.html?keyword=**&PageNo=fypage',
+ searchable: 2, //是否启用全局搜索,
+ headers: { //网站的请求头,完整支持所有的,常带ua和cookies
+ 'User-Agent': 'PC_UA',
+ },
+ class_name: 'TV&剧场版&OVA&其他',
+ class_url: 'TV&剧场版&OVA&其他',
+ play_parse: true,
+ lazy: '',
+ limit: 6,
+ // 推荐:'.dhnew.adj li;*;*;*;*',
+ 推荐: '.dhnew.adj li;a&&title;img&&src;p:eq(-1)&&Text;a&&href',
+ // 一级:'.dhnew li;a&&title;img&&src;p:eq(-1)&&Text;a&&href',
+ 一级: `js:
+ let d = [];
+ pdfh = jsp.pdfh;pdfa = jsp.pdfa;pd = jsp.pd;
+ let html = '';
+ let totalresult = getItem("totalresult_" + MY_CATE, '')
+ if (totalresult == '') {
+ html = request(input);
+ totalresult = pdfh(html, ".pageinfo&&strong&&Text");
+ setItem("totalresult_" + MY_CATE, totalresult)
+ }
+ input += '&totalresult=' + getItem("totalresult_" + MY_CATE, '');
+ html = request(input);
+ let list = pdfa(html, ".dhnew&&li");
+ list.forEach(it => {
+ d.push({
+ title: pdfh(it, "a&&title"),
+ desc: pdfh(it, "p:eq(-1)&&Text"),
+ pic_url: pd(it, "img&&src"),
+ url: pd(it, "a&&href")
+ })
+ });
+ setResult(d)
+ `,
+ 二级: {
+ "title": "h1&&Text;.dhxx p:eq(4)&&Text",
+ "img": ".anime-img&&img&&src",
+ "desc": ".info1-left li:eq(1)&&Text;.dhxx p:eq(3)&&Text;.dhxx p:eq(2)&&Text;.info1-left li:eq(0)&&Text;.info1-left li:eq(2)&&Text",
+ "content": ".info2--strong&&Text",
+ "tabs": ".ol-select li",
+ "lists": ".ol-content:eq(#id) li"
+ },
+ // 搜索:'*;*;*;p:eq(3)&&Text;*',
+ 搜索: '.dhnew li;a&&title;img&&src;p:eq(3)&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JS/机器人.js b/JS/机器人.js
new file mode 100644
index 0000000..93c486f
--- /dev/null
+++ b/JS/机器人.js
@@ -0,0 +1,198 @@
+var rule = {
+ title: '爱看机器人[虫]',
+ // host:'https://v.ikanbot.com',
+ host: 'https://v.aikanbot.com',
+ url: '/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
+ //https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
+ // searchUrl:'/search?q=**&p=fypage',
+ searchUrl: '/search?q=**&p=fypage[/search?q=**]',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter_url: '{{fl.tag}}',
+ 图片来源: '@Referer=https://v.ikanbot.com/@User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
+ filter: {
+ "movie": [{
+ "key": "tag",
+ "name": "标签",
+ "value": [{
+ "n": "热门",
+ "v": "热门"
+ }, {
+ "n": "最新",
+ "v": "最新"
+ }, {
+ "n": "经典",
+ "v": "经典"
+ }, {
+ "n": "豆瓣高分",
+ "v": "豆瓣高分"
+ }, {
+ "n": "冷门佳片",
+ "v": "冷门佳片"
+ }, {
+ "n": "华语",
+ "v": "华语"
+ }, {
+ "n": "欧美",
+ "v": "欧美"
+ }, {
+ "n": "韩国",
+ "v": "韩国"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "喜剧",
+ "v": "喜剧"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "治愈",
+ "v": "治愈"
+ }, {
+ "n": "豆瓣top250",
+ "v": "豆瓣top250"
+ }]
+ }],
+ "tv": [{
+ "key": "tag",
+ "name": "标签",
+ "value": [{
+ "n": "热门",
+ "v": "热门"
+ }, {
+ "n": "美剧",
+ "v": "美剧"
+ }, {
+ "n": "英剧",
+ "v": "英剧"
+ }, {
+ "n": "韩剧",
+ "v": "韩剧"
+ }, {
+ "n": "日剧",
+ "v": "日剧"
+ }, {
+ "n": "国产剧",
+ "v": "国产剧"
+ }, {
+ "n": "港剧",
+ "v": "港剧"
+ }, {
+ "n": "日本动画",
+ "v": "日本动画"
+ }, {
+ "n": "综艺",
+ "v": "综艺"
+ }, {
+ "n": "纪录片",
+ "v": "纪录片"
+ }]
+ }]
+ },
+ filter_def: {
+ movie: {
+ tag: '热门'
+ },
+ tv: {
+ tag: '国产剧'
+ },
+ },
+ filter获取方法: `
+ let value = [];
+ $('ul').eq(2).find('li').each(function() {
+ // console.log($(this).text());
+ let n = $(this).text().trim();
+ value.push({
+ 'n': n, 'v': n
+ });
+ });
+ // 电影执行:
+ let data = {'movie': [{'key': 'tag', 'name': '标签', 'value': value}]};
+ console.log(JSON.stringify(data));
+
+ //剧集执行:
+ let data = {'tv': [{'key': 'tag', 'name': '标签', 'value': value}]};
+ console.log(JSON.stringify(data));
+ `,
+ headers: {
+ 'User-Agent': 'PC_UA',
+ },
+ class_name: '电影&剧集',
+ class_url: 'movie&tv',
+ play_parse: true,
+ double: true,
+ tab_remove: ['wjm3u8', 'ikm3u8', 'sdm3u8', 'M3U8', 'jinyingm3u8', 'fsm3u8', 'ukm3u8'], //移除某个线路及相关的选集
+ tab_order: ['bfzym3u8', '1080zyk', 'kuaikan', 'lzm3u8', 'ffm3u8', 'snm3u8', 'qhm3u8', 'gsm3u8', 'zuidam3u8', 'bjm3u8', 'wolong', 'xlm3u8', 'yhm3u8'], //线路顺序,按里面的顺序优先,没写的依次排后面
+ tab_rename: {
+ 'bfzym3u8': '暴风',
+ '1080zyk': '优质',
+ 'kuaikan': '快看',
+ 'lzm3u8': '量子',
+ 'ffm3u8': '非凡',
+ 'snm3u8': '索尼',
+ 'qhm3u8': '奇虎',
+ 'haiwaikan': '海外看',
+ 'gsm3u8': '光速',
+ 'zuidam3u8': '最大',
+ 'bjm3u8': '八戒',
+ 'wolong': '卧龙',
+ 'xlm3u8': '新浪',
+ 'yhm3u8': '樱花',
+ 'tkm3u8': '天空',
+ 'jsm3u8': '极速',
+ 'wjm3u8': '无尽',
+ 'sdm3u8': '闪电',
+ 'kcm3u8': '快车',
+ 'jinyingm3u8': '金鹰',
+ 'fsm3u8': '飞速',
+ 'tpm3u8': '淘片',
+ 'lem3u8': '鱼乐',
+ 'dbm3u8': '百度',
+ 'tomm3u8': '番茄',
+ 'ukm3u8': 'U酷',
+ 'ikm3u8': '爱坤',
+ 'hnzym3u8': '红牛资源',
+ 'hnm3u8': '红牛',
+ '68zy_m3u8': '68',
+ 'kdm3u8': '酷点',
+ 'bdxm3u8': '北斗星',
+ 'hhm3u8': '豪华',
+ 'kbm3u8': '快播'
+ }, //线路名替换如:lzm3u8替换为量子资源
+ 推荐: '.v-list;div.item;*;*;*;*', //这里可以为空,这样点播不会有内容
+ // 一级:'.v-list&&div.item;p&&Text;img&&src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
+ 一级: '.v-list&&div.item;p&&Text;img&&data-src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
+ // 二级:二级,
+ 二级: 'js:eval(unescape(base64Decode("anM6CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIGZ1bmN0aW9uIGdldFRva2VuKGh0bWwxKSB7CiAgICAgICAgICAgIGxldCBjdXJyZW50SWQgPSBwZGZoKGh0bWwxLCAnI2N1cnJlbnRfaWQmJnZhbHVlJyk7CiAgICAgICAgICAgIGxldCBlVG9rZW4gPSBwZGZoKGh0bWwxLCAnI2VfdG9rZW4mJnZhbHVlJyk7CiAgICAgICAgICAgIGlmICghY3VycmVudElkIHx8ICFlVG9rZW4pIHJldHVybiAnJzsKICAgICAgICAgICAgbGV0IGlkTGVuZ3RoID0gY3VycmVudElkLmxlbmd0aDsKICAgICAgICAgICAgbGV0IHN1YklkID0gY3VycmVudElkLnN1YnN0cmluZyhpZExlbmd0aCAtIDQsIGlkTGVuZ3RoKTsKICAgICAgICAgICAgbGV0IGtleXMgPSBbXTsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJJZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgbGV0IGN1ckludCA9IHBhcnNlSW50KHN1YklkW2ldKTsKICAgICAgICAgICAgICAgIGxldCBzcGxpdFBvcyA9IGN1ckludCAlIDMgKyAxOwogICAgICAgICAgICAgICAga2V5c1tpXSA9IGVUb2tlbi5zdWJzdHJpbmcoc3BsaXRQb3MsIHNwbGl0UG9zICsgOCk7CiAgICAgICAgICAgICAgICBlVG9rZW4gPSBlVG9rZW4uc3Vic3RyaW5nKHNwbGl0UG9zICsgOCwgZVRva2VuLmxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGtleXMuam9pbignJyk7CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFZPRD17fTsKICAgICAgICAgICAgbGV0IGh0bWwxID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgICAgIFZPRC52b2RfaWQgPSBwZGZoKGh0bWwxLCAnI2N1cnJlbnRfaWQmJnZhbHVlJyk7CiAgICAgICAgICAgIFZPRC52b2RfbmFtZSA9IHBkZmgoaHRtbDEsICdoMiYmVGV4dCcpOwogICAgICAgICAgICBWT0Qudm9kX3BpYyA9IHBkZmgoaHRtbDEsICcuaXRlbS1yb290JiZpbWcmJmRhdGEtc3JjJyk7CiAgICAgICAgICAgIFZPRC52b2RfYWN0b3IgPSBwZGZoKGh0bWwxLCAnLm1ldGE6ZXEoNCkmJlRleHQnKTsKICAgICAgICAgICAgVk9ELnZvZF9hcmVhID0gcGRmaChodG1sMSwgJy5tZXRhOmVxKDMpJiZUZXh0Jyk7CiAgICAgICAgICAgIFZPRC52b2RfeWVhciA9IHBkZmgoaHRtbDEsICcubWV0YTplcSgyKSYmVGV4dCcpOwogICAgICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSAnJzsKICAgICAgICAgICAgVk9ELnZvZF9kaXJlY3RvciA9ICcnOwogICAgICAgICAgICBWT0Qudm9kX2NvbnRlbnQgPSBwZGZoKGh0bWwxLCAnI2xpbmUtdGlwcyYmVGV4dCcpOwogICAgICAgICAgICAvLyBsb2coVk9EKTsKICAgICAgICAgICAgdmFyIHZfdGtzID0gZ2V0VG9rZW4oaHRtbDEpOwogICAgICAgICAgICBsb2coJ3ZfdGtzID09PT4gJyArIHZfdGtzKTsKICAgICAgICAgICAgaW5wdXQgPSBIT1NUICsgJy9hcGkvZ2V0UmVzTj92aWRlb0lkPScgKyBpbnB1dC5zcGxpdCgnLycpLnBvcCgpICsgJyZtdHlwZT0yJnRva2VuPScrdl90a3M7CiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwgewogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzonTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMScsCiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBNWV9VUkwsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBwcmludChodG1sKTsKICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgIGxldCBlcGlzb2RlcyA9IGh0bWwuZGF0YS5saXN0OwogICAgICAgICAgICBsZXQgcGxheU1hcCA9IHt9OwogICAgICAgICAgICBpZiAodHlwZW9mIHBsYXlfdXJsID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgdmFyIHBsYXlfdXJsID0gJycKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgbWFwID0ge30KICAgICAgICAgICAgbGV0IGFyciA9IFtdCiAgICAgICAgICAgIGxldCBuYW1lID0gewogICAgICAgICAgICAgICAgJ2JmenltM3U4JzogJ+aatOmjjicsCiAgICAgICAgICAgICAgICAnMTA4MHp5ayc6ICfkvJjotKgnLAogICAgICAgICAgICAgICAgJ2t1YWlrYW4nOiAn5b+r55yLJywKICAgICAgICAgICAgICAgICdsem0zdTgnOiAn6YeP5a2QJywKICAgICAgICAgICAgICAgICdmZm0zdTgnOiAn6Z2e5YehJywKICAgICAgICAgICAgICAgICdoYWl3YWlrYW4nOiAn5rW35aSW55yLJywKICAgICAgICAgICAgICAgICdnc20zdTgnOiAn5YWJ6YCfJywKICAgICAgICAgICAgICAgICd6dWlkYW0zdTgnOiAn5pyA5aSnJywKICAgICAgICAgICAgICAgICdiam0zdTgnOiAn5YWr5oiSJywKICAgICAgICAgICAgICAgICdzbm0zdTgnOiAn57Si5bC8JywKICAgICAgICAgICAgICAgICd3b2xvbmcnOiAn5Y2n6b6ZJywKICAgICAgICAgICAgICAgICd4bG0zdTgnOiAn5paw5rWqJywKICAgICAgICAgICAgICAgICd5aG0zdTgnOiAn5qix6IqxJywKICAgICAgICAgICAgICAgICd0a20zdTgnOiAn5aSp56m6JywKICAgICAgICAgICAgICAgICdqc20zdTgnOiAn5p6B6YCfJywKICAgICAgICAgICAgICAgICd3am0zdTgnOiAn5peg5bC9JywKICAgICAgICAgICAgICAgICdzZG0zdTgnOiAn6Zeq55S1JywKICAgICAgICAgICAgICAgICdrY20zdTgnOiAn5b+r6L2mJywKICAgICAgICAgICAgICAgICdqaW55aW5nbTN1OCc6ICfph5HpubAnLAogICAgICAgICAgICAgICAgJ2ZzbTN1OCc6ICfpo57pgJ8nLAogICAgICAgICAgICAgICAgJ3RwbTN1OCc6ICfmt5jniYcnLAogICAgICAgICAgICAgICAgJ2xlbTN1OCc6ICfpsbzkuZAnLAogICAgICAgICAgICAgICAgJ2RibTN1OCc6ICfnmb7luqYnLAogICAgICAgICAgICAgICAgJ3RvbW0zdTgnOiAn55Wq6IyEJywKICAgICAgICAgICAgICAgICd1a20zdTgnOiAnVemFtycsCiAgICAgICAgICAgICAgICAnaWttM3U4JzogJ+eIseWdpCcsCiAgICAgICAgICAgICAgICAnaG56eW0zdTgnOiAn57qi54mb6LWE5rqQJywKICAgICAgICAgICAgICAgICdobm0zdTgnOiAn57qi54mbJywKICAgICAgICAgICAgICAgICc2OHp5X20zdTgnOiAnNjgnLAogICAgICAgICAgICAgICAgJ2tkbTN1OCc6ICfphbfngrknLAogICAgICAgICAgICAgICAgJ2JkeG0zdTgnOiAn5YyX5paX5pifJywKICAgICAgICAgICAgICAgICdxaG0zdTgnOiAn5aWH6JmOJywKICAgICAgICAgICAgICAgICdoaG0zdTgnOiAn6LGq5Y2OJwogICAgICAgICAgICB9OwogICAgICAgICAgICBlcGlzb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGVwKSB7CiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoZXBbJ3Jlc0RhdGEnXSk7CiAgICAgICAgICAgICAgICBkYXRhLm1hcCh2YWwgPT4gewogICAgICAgICAgICAgICAgICAgIGlmKCFtYXBbdmFsLmZsYWddKXsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwW3ZhbC5mbGFnXSA9IFt2YWwudXJsLnJlcGxhY2VBbGwoJyMjJywnIycpXQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFt2YWwuZmxhZ10ucHVzaCh2YWwudXJsLnJlcGxhY2VBbGwoJyMjJywnIycpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWFwKSB7CiAgICAgICAgICAgICAgICBpZiAoJ2JmenltM3U4JyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCcxMDgwenlrJyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdrdWFpa2FuJyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdsem0zdTgnID09IGtleSkgewogICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZzogbmFtZVtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1hcFtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiA0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2ZmbTN1OCcgPT0ga2V5KSB7CiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiBuYW1lW2tleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbWFwW2tleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IDUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnc25tM3U4JyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogNgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdxaG0zdTgnID09IGtleSkgewogICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZzogbmFtZVtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1hcFtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiA3CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiAobmFtZVtrZXldKSA/IG5hbWVba2V5XSA6IGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogOAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXJyLnNvcnQoKGEsIGIpID0+IGEuc29ydCAtIGIuc29ydCk7CiAgICAgICAgICAgIGxldCBwbGF5RnJvbSA9IFtdOwogICAgICAgICAgICBsZXQgcGxheUxpc3QgPSBbXTsKICAgICAgICAgICAgYXJyLm1hcCh2YWwgPT4gewogICAgICAgICAgICAgICAgaWYgKCEvdW5kZWZpbmVkLy50ZXN0KHZhbC5mbGFnKSkgewogICAgICAgICAgICAgICAgICAgIHBsYXlGcm9tLnB1c2godmFsLmZsYWcpOwogICAgICAgICAgICAgICAgICAgIHBsYXlMaXN0LnB1c2godmFsLnVybCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIGxldCB2b2RfcGxheV9mcm9tID0gcGxheUZyb20uam9pbignJCQkJyk7CiAgICAgICAgICAgIGxldCB2b2RfcGxheV91cmwgPSBwbGF5TGlzdC5qb2luKCckJCQnKTsKICAgICAgICAgICAgVk9EWyd2b2RfcGxheV9mcm9tJ10gPSB2b2RfcGxheV9mcm9tOwogICAgICAgICAgICBWT0RbJ3ZvZF9wbGF5X3VybCddID0gdm9kX3BsYXlfdXJsOwogICAgICAgICAgICAvLyBsb2coVk9EKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGxvZygn6I635Y+W5LqM57qn6K+m5oOF6aG15Y+R55Sf6ZSZ6K+vOicgKyBlLm1lc3NhZ2UpCiAgICAgICAgfQ==")))',
+ // 搜索:'#search-result&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href',//第三个是描述,一般显示更新或者完结
+ 搜索: '.col-md-8&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href', //第三个是描述,一般显示更新或者完结
+ lazy: `
+ if(/\\.m3u8$/.test(input)){
+ input = {
+ parse:0,
+ url:getProxyUrl()+'&url='+input,
+ jx:0
+ }
+ }
+ `,
+ proxy_rule: `js:
+ let url = input.url;
+ let m3u8 = fixAdM3u8Ai(url);
+ input = [200,'application/vnd.apple.mpegurl',m3u8]
+ `
+}
\ No newline at end of file
diff --git a/drpy_libs/模板.js b/JS/模板.js
similarity index 87%
rename from drpy_libs/模板.js
rename to JS/模板.js
index f63e1b7..6da4cc5 100644
--- a/drpy_libs/模板.js
+++ b/JS/模板.js
@@ -1,5 +1,5 @@
if (typeof Object.assign !== 'function') {
- Object.assign = function () {
+ Object.assign = function() {
let target = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let source = arguments[i];
@@ -31,7 +31,7 @@ let common_lazy = `js:
url: url,
};
} else {
- input;
+ input = url && url.startsWith('http') && tellIsJx(url) ? {parse:0,jx:1,url:url}:input;
}`;
// 默认嗅探播放
@@ -90,10 +90,10 @@ function getMubans() {
host: '', // homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
- headers: {//网站的请求头,完整支持所有的,常带ua和cookies
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
+ headers: { //网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(0):lt(10);a&&Text;a&&href;/(\\d+)',
@@ -113,14 +113,15 @@ function getMubans() {
tab_text: 'div--small&&Text',
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
- }, mxone5: {
+ },
+ mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?)\.html',
play_parse: true,
lazy: common_lazy,
@@ -138,15 +139,16 @@ function getMubans() {
tab_text: 'div--small&&Text',
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
- }, 首图: {
+ },
+ 首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
- headers: {//网站的请求头,完整支持所有的,常带ua和cookies
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
+ headers: { //网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
@@ -166,14 +168,15 @@ function getMubans() {
lists: '.myui-content__list:eq(#id) li',
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
- }, 首图2: {
+ },
+ 首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA', // "Cookie": ""
},
@@ -196,7 +199,8 @@ function getMubans() {
lists: '.stui-content__playlist:eq(#id) li',
},
搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
- }, 默认: {
+ },
+ 默认: {
title: '',
host: '',
url: '',
@@ -230,14 +234,15 @@ function getMubans() {
list_url: 'a&&href',
},
搜索: '列表;标题;图片;描述;链接;详情',
- }, vfed: {
+ },
+ vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
@@ -257,7 +262,8 @@ function getMubans() {
lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
- }, 海螺3: {
+ },
+ 海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
@@ -284,10 +290,11 @@ function getMubans() {
lists: '.hl-plays-list:eq(#id)&&li',
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
- }, 海螺2: {
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
+ },
+ 海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
@@ -312,18 +319,19 @@ function getMubans() {
lists: '.play_list_box:eq(#id)&&li',
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
- }, 短视: {
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
+ },
+ 短视: {
title: '',
host: '', // homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
- headers: {//网站的请求头,完整支持所有的,常带ua和cookies
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
+ headers: { //网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
@@ -343,7 +351,8 @@ function getMubans() {
lists: '.player:eq(#id) li',
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
- }, 短视2: {
+ },
+ 短视2: {
title: '',
host: '',
class_name: '电影&电视剧&综艺&动漫',
@@ -351,9 +360,11 @@ function getMubans() {
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
- headers: {'User-Agent': 'MOBILE_UA'},
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
url: '/index.php/api/vod#type=fyclass&page=fypage',
- filterable: 0,//是否启用分类筛选,
+ filterable: 0, //是否启用分类筛选,
filter_url: '',
filter: {},
filter_def: {},
@@ -373,7 +384,8 @@ function getMubans() {
lists: '.anthology-list-box:eq(#id) li',
},
搜索: 'json:list;name;pic;;id',
- }, 采集1: {
+ },
+ 采集1: {
title: '',
host: '',
homeTid: '13',
@@ -381,16 +393,18 @@ function getMubans() {
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
- headers: {'User-Agent': 'MOBILE_UA'},
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
// class_url: '1&2&3&4',
// class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
class_parse: 'json:class;',
limit: 20,
multi: 1,
- searchable: 2,//是否启用全局搜索,
- quickSearch: 1,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 1, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
play_parse: true,
parse_url: '',
lazy: cj_lazy,
@@ -409,4 +423,7 @@ function getMubans() {
var mubanDict = getMubans();
var muban = getMubans();
-export default {muban, getMubans};
\ No newline at end of file
+export default {
+ muban,
+ getMubans
+};
\ No newline at end of file
diff --git a/JS/樱花动漫.js b/JS/樱花动漫.js
new file mode 100644
index 0000000..b90099a
--- /dev/null
+++ b/JS/樱花动漫.js
@@ -0,0 +1,8 @@
+var rule = {
+ 模板: '首图',
+ title: '樱花动漫[漫]',
+ host: 'https://katedm.com/',
+ url: '/list/fyclass-fypage.html',
+ searchUrl: '/search/**----------fypage---.html',
+ 搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-tag&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JS/爱奇艺弹幕.js b/JS/爱奇艺弹幕.js
new file mode 100644
index 0000000..3f3c5ab
--- /dev/null
+++ b/JS/爱奇艺弹幕.js
@@ -0,0 +1,1392 @@
+var rule = {
+ title: '奇珍异兽[官]',
+ host: 'https://www.iqiyi.com',
+ homeUrl: '',
+ // detailUrl:'https://pcw-api.iqiyi.com/albums/album/avlistinfo?aid=fyid&size=2000&page=1',
+ detailUrl: 'https://pcw-api.iqiyi.com/video/video/videoinfowithuser/fyid?agent_type=1&authcookie=&subkey=fyid&subscribe=1',
+ searchUrl: 'https://search.video.iqiyi.com/o?if=html5&key=**&pageNum=fypage&pos=1&pageSize=24&site=iqiyi',
+ searchable: 2,
+ multi: 1,
+ filterable: 1,
+ filter: {
+ '1': [{
+ 'key': 'mode',
+ 'name': '综合排序',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '热播榜',
+ 'v': 11
+ }, {
+ 'n': '好评榜',
+ 'v': 8
+ }, {
+ 'n': '新上线',
+ 'v': 4
+ }]
+ }, {
+ 'key': 'year',
+ 'name': '全部年份',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ "n": "2025",
+ "v": 2025
+ }, {
+ "n": "2024",
+ "v": 2024
+ }, {
+ 'n': '2023',
+ 'v': 2023
+ }, {
+ 'n': '2022',
+ 'v': 2022
+ }, {
+ 'n': '2021',
+ 'v': 2021
+ }, {
+ 'n': '2020',
+ 'v': 2020
+ }, {
+ 'n': '2019',
+ 'v': 2019
+ }, {
+ 'n': '2018',
+ 'v': 2018
+ }, {
+ 'n': '2017',
+ 'v': 2017
+ }, {
+ 'n': '2016-2011',
+ 'v': '2011_2016'
+ }, {
+ 'n': '2010-2000',
+ 'v': '2000_2010'
+ }, {
+ 'n': '90年代',
+ 'v': '1990_1999'
+ }, {
+ 'n': '80年代',
+ 'v': '1980_1989'
+ }, {
+ 'n': '更早',
+ 'v': '1964_1979'
+ }]
+ }, {
+ 'key': 'is_purchase',
+ 'name': '全部资费',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '免费',
+ 'v': 0
+ }, {
+ 'n': '会员',
+ 'v': 1
+ }, {
+ 'n': '付费',
+ 'v': 2
+ }]
+ }, {
+ 'key': 'three_category_id',
+ 'name': '地区',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '华语',
+ 'v': 1
+ }, {
+ 'n': '香港地区',
+ 'v': 28997
+ }, {
+ 'n': '美国',
+ 'v': 2
+ }, {
+ 'n': '欧洲',
+ 'v': 3
+ }, {
+ 'n': '韩国',
+ 'v': 4
+ }, {
+ 'n': '日本',
+ 'v': 308
+ }, {
+ 'n': '泰国',
+ 'v': 1115
+ }, {
+ 'n': '印度',
+ 'v': 28999
+ }, {
+ 'n': '其它',
+ 'v': 5
+ }]
+ }, {
+ 'key': '18001',
+ 'name': '类型',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '喜剧',
+ 'v': 8
+ }, {
+ 'n': '爱情',
+ 'v': 6
+ }, {
+ 'n': '动作',
+ 'v': 11
+ }, {
+ 'n': '枪战',
+ 'v': 131
+ }, {
+ 'n': '犯罪',
+ 'v': 291
+ }, {
+ 'n': '惊悚',
+ 'v': 128
+ }, {
+ 'n': '恐怖',
+ 'v': 10
+ }, {
+ 'n': '悬疑',
+ 'v': 289
+ }, {
+ 'n': '动画',
+ 'v': 12
+ }, {
+ 'n': '家庭',
+ 'v': 27356
+ }, {
+ 'n': '奇幻',
+ 'v': 1284
+ }, {
+ 'n': '魔幻',
+ 'v': 129
+ }, {
+ 'n': '科幻',
+ 'v': 9
+ }, {
+ 'n': '战争',
+ 'v': 7
+ }, {
+ 'n': '青春',
+ 'v': 130
+ }]
+ }, {
+ 'key': '27396',
+ 'name': '规格',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '巨制',
+ 'v': 27397
+ }, {
+ 'n': '院线',
+ 'v': 27815
+ }, {
+ 'n': '独播',
+ 'v': 30149
+ }, {
+ 'n': '网络电影',
+ 'v': 27401
+ }]
+ }],
+ '2': [{
+ 'key': 'mode',
+ 'name': '综合排序',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '热播榜',
+ 'v': 11
+ }, {
+ 'n': '好评榜',
+ 'v': 8
+ }, {
+ 'n': '新上线',
+ 'v': 4
+ }]
+ }, {
+ 'key': 'year',
+ 'name': '全部年份',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '2023',
+ 'v': 2023
+ }, {
+ 'n': '2022',
+ 'v': 2022
+ }, {
+ 'n': '2021',
+ 'v': 2021
+ }, {
+ 'n': '2020',
+ 'v': 2020
+ }, {
+ 'n': '2019',
+ 'v': 2019
+ }, {
+ 'n': '2018',
+ 'v': 2018
+ }, {
+ 'n': '2017',
+ 'v': 2017
+ }, {
+ 'n': '2016-2011',
+ 'v': '2011_2016'
+ }, {
+ 'n': '2010-2000',
+ 'v': '2000_2010'
+ }, {
+ 'n': '90年代',
+ 'v': '1990_1999'
+ }, {
+ 'n': '80年代',
+ 'v': '1980_1989'
+ }, {
+ 'n': '更早',
+ 'v': '1964_1979'
+ }]
+ }, {
+ 'key': 'is_purchase',
+ 'name': '全部资费',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '免费',
+ 'v': 0
+ }, {
+ 'n': '会员',
+ 'v': 1
+ }, {
+ 'n': '付费',
+ 'v': 2
+ }]
+ }, {
+ 'key': 'three_category_id',
+ 'name': '地区',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '内地',
+ 'v': 15
+ }, {
+ 'n': '港剧',
+ 'v': 16
+ }, {
+ 'n': '韩剧',
+ 'v': 17
+ }, {
+ 'n': '美剧',
+ 'v': 18
+ }, {
+ 'n': '日剧',
+ 'v': 309
+ }, {
+ 'n': '泰剧',
+ 'v': 1114
+ }, {
+ 'n': '台湾地区',
+ 'v': 1117
+ }, {
+ 'n': '英剧',
+ 'v': 28916
+ }, {
+ 'n': '其它',
+ 'v': 19
+ }]
+ }, {
+ 'key': '18003',
+ 'name': '类型',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '自制',
+ 'v': 11992
+ }, {
+ 'n': '古装',
+ 'v': 24
+ }, {
+ 'n': '言情',
+ 'v': 20
+ }, {
+ 'n': '武侠',
+ 'v': 23
+ }, {
+ 'n': '偶像',
+ 'v': 30
+ }, {
+ 'n': '家庭',
+ 'v': 1654
+ }, {
+ 'n': '青春',
+ 'v': 1653
+ }, {
+ 'n': '都市',
+ 'v': 24064
+ }, {
+ 'n': '喜剧',
+ 'v': 135
+ }, {
+ 'n': '战争',
+ 'v': 27916
+ }, {
+ 'n': '军旅',
+ 'v': 1655
+ }, {
+ 'n': '谍战',
+ 'v': 290
+ }, {
+ 'n': '悬疑',
+ 'v': 32
+ }, {
+ 'n': '罪案',
+ 'v': 149
+ }, {
+ 'n': '穿越',
+ 'v': 148
+ }, {
+ 'n': '宫廷',
+ 'v': 139
+ }, {
+ 'n': '历史',
+ 'v': 21
+ }, {
+ 'n': '神话',
+ 'v': 145
+ }, {
+ 'n': '科幻',
+ 'v': 34
+ }, {
+ 'n': '年代',
+ 'v': 27
+ }, {
+ 'n': '农村',
+ 'v': 29
+ }, {
+ 'n': '商战',
+ 'v': 140
+ }, {
+ 'n': '剧情',
+ 'v': 24063
+ }, {
+ 'n': '奇幻',
+ 'v': 27881
+ }, {
+ 'n': '网剧',
+ 'v': 24065
+ }, {
+ 'n': '竖短片',
+ 'v': 32839
+ }]
+ }],
+ '3': [{
+ 'key': 'mode',
+ 'name': '综合排序',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '热播榜',
+ 'v': 11
+ }, {
+ 'n': '好评榜',
+ 'v': 8
+ }, {
+ 'n': '新上线',
+ 'v': 4
+ }]
+ }, {
+ 'key': 'year',
+ 'name': '全部年份',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '2023',
+ 'v': 2023
+ }, {
+ 'n': '2022',
+ 'v': 2022
+ }, {
+ 'n': '2021',
+ 'v': 2021
+ }, {
+ 'n': '2020',
+ 'v': 2020
+ }, {
+ 'n': '2019',
+ 'v': 2019
+ }, {
+ 'n': '2018',
+ 'v': 2018
+ }, {
+ 'n': '2017',
+ 'v': 2017
+ }, {
+ 'n': '2016-2011',
+ 'v': '2011_2016'
+ }, {
+ 'n': '2010-2000',
+ 'v': '2000_2010'
+ }, {
+ 'n': '90年代',
+ 'v': '1990_1999'
+ }, {
+ 'n': '80年代',
+ 'v': '1980_1989'
+ }, {
+ 'n': '更早',
+ 'v': '1964_1979'
+ }]
+ }, {
+ 'key': 'is_purchase',
+ 'name': '全部资费',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '免费',
+ 'v': 0
+ }, {
+ 'n': '会员',
+ 'v': 1
+ }, {
+ 'n': '付费',
+ 'v': 2
+ }]
+ }, {
+ 'key': 'three_category_id',
+ 'name': '地区',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '国内',
+ 'v': 20323
+ }, {
+ 'n': '国外',
+ 'v': 20324
+ }]
+ }, {
+ 'key': '18004',
+ 'name': '类型',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '人文',
+ 'v': 70
+ }, {
+ 'n': '美食',
+ 'v': 33908
+ }, {
+ 'n': '医疗',
+ 'v': 33924
+ }, {
+ 'n': '自然',
+ 'v': 33933
+ }, {
+ 'n': '萌宠',
+ 'v': 33945
+ }, {
+ 'n': '财经',
+ 'v': 33953
+ }, {
+ 'n': '罪案',
+ 'v': 33960
+ }, {
+ 'n': '竞技',
+ 'v': 33967
+ }, {
+ 'n': '灾难',
+ 'v': 33974
+ }, {
+ 'n': '军事',
+ 'v': 72
+ }, {
+ 'n': '历史',
+ 'v': 74
+ }, {
+ 'n': '探险',
+ 'v': 73
+ }, {
+ 'n': '社会',
+ 'v': 71
+ }, {
+ 'n': '科技',
+ 'v': 28119
+ }, {
+ 'n': '旅游',
+ 'v': 310
+ }]
+ }, {
+ 'key': '28467',
+ 'name': '出品方',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': 'BBC',
+ 'v': 28468
+ }, {
+ 'n': '美国历史频道',
+ 'v': 28470
+ }, {
+ 'n': '探索频道',
+ 'v': 28471
+ }, {
+ 'n': '央视记录',
+ 'v': 28472
+ }, {
+ 'n': '北京纪实频道',
+ 'v': 28473
+ }, {
+ 'n': '上海纪实频道',
+ 'v': 28474
+ }, {
+ 'n': '朗思文化',
+ 'v': 28476
+ }, {
+ 'n': 'CNEX',
+ 'v': 28477
+ }, {
+ 'n': '五星传奇',
+ 'v': 28478
+ }, {
+ 'n': 'IMG',
+ 'v': 28479
+ }, {
+ 'n': 'NHK',
+ 'v': 28480
+ }, {
+ 'n': '爱奇艺出品',
+ 'v': 31283
+ }, {
+ 'n': 'Netflix',
+ 'v': 31286
+ }]
+ }, {
+ 'key': '29076',
+ 'name': '片种',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '纪录电影',
+ 'v': 29077
+ }, {
+ 'n': '系列纪录片',
+ 'v': 29078
+ }, {
+ 'n': '网络纪录片',
+ 'v': 29082
+ }, {
+ 'n': '纪实栏目',
+ 'v': 29083
+ }]
+ }, {
+ 'key': '31294',
+ 'name': '时长',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '微纪录',
+ 'v': 29079
+ }, {
+ 'n': '长纪录',
+ 'v': 29080
+ }, {
+ 'n': '短纪录',
+ 'v': 29081
+ }]
+ }],
+ '4': [{
+ 'key': 'mode',
+ 'name': '综合排序',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '热播榜',
+ 'v': 11
+ }, {
+ 'n': '好评榜',
+ 'v': 8
+ }, {
+ 'n': '新上线',
+ 'v': 4
+ }]
+ }, {
+ 'key': 'year',
+ 'name': '全部年份',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '2023',
+ 'v': 2023
+ }, {
+ 'n': '2022',
+ 'v': 2022
+ }, {
+ 'n': '2021',
+ 'v': 2021
+ }, {
+ 'n': '2020',
+ 'v': 2020
+ }, {
+ 'n': '2019',
+ 'v': 2019
+ }, {
+ 'n': '2018',
+ 'v': 2018
+ }, {
+ 'n': '2017',
+ 'v': 2017
+ }, {
+ 'n': '2016-2011',
+ 'v': '2011_2016'
+ }, {
+ 'n': '2010-2000',
+ 'v': '2000_2010'
+ }, {
+ 'n': '90年代',
+ 'v': '1990_1999'
+ }, {
+ 'n': '80年代',
+ 'v': '1980_1989'
+ }, {
+ 'n': '更早',
+ 'v': '1964_1979'
+ }]
+ }, {
+ 'key': 'is_purchase',
+ 'name': '全部资费',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '免费',
+ 'v': 0
+ }, {
+ 'n': '会员',
+ 'v': 1
+ }, {
+ 'n': '付费',
+ 'v': 2
+ }]
+ }, {
+ 'key': 'three_category_id',
+ 'name': '地区',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '中国大陆',
+ 'v': 37
+ }, {
+ 'n': '日本',
+ 'v': 38
+ }, {
+ 'n': '韩国',
+ 'v': 1106
+ }, {
+ 'n': '欧美',
+ 'v': 30218
+ }, {
+ 'n': '其它',
+ 'v': 40
+ }]
+ }, {
+ 'key': '30219',
+ 'name': '版本',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '动画',
+ 'v': 30220
+ }, {
+ 'n': '特摄',
+ 'v': 30223
+ }, {
+ 'n': '布袋戏',
+ 'v': 30224
+ }, {
+ 'n': '特别篇',
+ 'v': 32782
+ }, {
+ 'n': '动态漫画',
+ 'v': 32783
+ }, {
+ 'n': '动画电影',
+ 'v': 32784
+ }, {
+ 'n': '竖版视频',
+ 'v': 32785
+ }, {
+ 'n': '轻动画',
+ 'v': 33482
+ }, {
+ 'n': '短剧',
+ 'v': 33483
+ }]
+ }, {
+ 'key': '30225',
+ 'name': '风格',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '搞笑',
+ 'v': 30230
+ }, {
+ 'n': '热血',
+ 'v': 30232
+ }, {
+ 'n': '催泪',
+ 'v': 30233
+ }, {
+ 'n': '治愈',
+ 'v': 30234
+ }, {
+ 'n': '励志',
+ 'v': 30237
+ }, {
+ 'n': '机战',
+ 'v': 30241
+ }, {
+ 'n': '恋爱',
+ 'v': 30243
+ }, {
+ 'n': '科幻',
+ 'v': 30245
+ }, {
+ 'n': '奇幻',
+ 'v': 30247
+ }, {
+ 'n': '推理',
+ 'v': 30248
+ }, {
+ 'n': '校园',
+ 'v': 30249
+ }, {
+ 'n': '日常',
+ 'v': 30252
+ }, {
+ 'n': '历史',
+ 'v': 30254
+ }, {
+ 'n': '美食',
+ 'v': 30255
+ }, {
+ 'n': '职场',
+ 'v': 30256
+ }, {
+ 'n': '偶像',
+ 'v': 30258
+ }, {
+ 'n': '泡面',
+ 'v': 30265
+ }, {
+ 'n': '冒险',
+ 'v': 30267
+ }, {
+ 'n': '竞技',
+ 'v': 30268
+ }, {
+ 'n': '合家欢',
+ 'v': 30270
+ }, {
+ 'n': '武侠',
+ 'v': 32792
+ }, {
+ 'n': '玄幻',
+ 'v': 32793
+ }]
+ }, {
+ 'key': '32795',
+ 'name': '新类型',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '轻小说改编',
+ 'v': 32796
+ }, {
+ 'n': '漫画改编',
+ 'v': 32797
+ }, {
+ 'n': '游戏改编',
+ 'v': 32798
+ }, {
+ 'n': '原创',
+ 'v': 32799
+ }]
+ }],
+ '6': [{
+ 'key': 'mode',
+ 'name': '综合排序',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '热播榜',
+ 'v': 11
+ }, {
+ 'n': '好评榜',
+ 'v': 8
+ }, {
+ 'n': '新上线',
+ 'v': 4
+ }]
+ }, {
+ 'key': 'year',
+ 'name': '全部年份',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '2023',
+ 'v': 2023
+ }, {
+ 'n': '2022',
+ 'v': 2022
+ }, {
+ 'n': '2021',
+ 'v': 2021
+ }, {
+ 'n': '2020',
+ 'v': 2020
+ }, {
+ 'n': '2019',
+ 'v': 2019
+ }, {
+ 'n': '2018',
+ 'v': 2018
+ }, {
+ 'n': '2017',
+ 'v': 2017
+ }, {
+ 'n': '2016-2011',
+ 'v': '2011_2016'
+ }, {
+ 'n': '2010-2000',
+ 'v': '2000_2010'
+ }, {
+ 'n': '90年代',
+ 'v': '1990_1999'
+ }, {
+ 'n': '80年代',
+ 'v': '1980_1989'
+ }, {
+ 'n': '更早',
+ 'v': '1964_1979'
+ }]
+ }, {
+ 'key': 'is_purchase',
+ 'name': '全部资费',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '免费',
+ 'v': 0
+ }, {
+ 'n': '会员',
+ 'v': 1
+ }, {
+ 'n': '付费',
+ 'v': 2
+ }]
+ }, {
+ 'key': 'three_category_id',
+ 'name': '地区',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '内地',
+ 'v': 151
+ }, {
+ 'n': '港台',
+ 'v': 152
+ }, {
+ 'n': '韩国',
+ 'v': 33306
+ }, {
+ 'n': '欧美',
+ 'v': 154
+ }, {
+ 'n': '其它',
+ 'v': 1113
+ }]
+ }, {
+ 'key': '18014',
+ 'name': '类型',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '播报',
+ 'v': 155
+ }, {
+ 'n': '访谈',
+ 'v': 156
+ }, {
+ 'n': '游戏',
+ 'v': 158
+ }, {
+ 'n': '晚会',
+ 'v': 292
+ }, {
+ 'n': '曲艺',
+ 'v': 293
+ }, {
+ 'n': '脱口秀',
+ 'v': 2118
+ }, {
+ 'n': '真人秀',
+ 'v': 2224
+ }, {
+ 'n': '竞技',
+ 'v': 30278
+ }, {
+ 'n': '爱奇艺出品',
+ 'v': 30279
+ }, {
+ 'n': '竞演',
+ 'v': 33860
+ }]
+ }, {
+ 'key': '33162',
+ 'name': '题材',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '音乐',
+ 'v': 33163
+ }, {
+ 'n': '舞蹈',
+ 'v': 33172
+ }, {
+ 'n': '文化',
+ 'v': 33173
+ }, {
+ 'n': '美食',
+ 'v': 33182
+ }, {
+ 'n': '伦理',
+ 'v': 33184
+ }, {
+ 'n': '相亲',
+ 'v': 33193
+ }, {
+ 'n': '纪实',
+ 'v': 33195
+ }, {
+ 'n': '生活',
+ 'v': 33196
+ }, {
+ 'n': '亲子',
+ 'v': 33197
+ }, {
+ 'n': '少儿',
+ 'v': 33198
+ }, {
+ 'n': '财经',
+ 'v': 33199
+ }, {
+ 'n': '健康',
+ 'v': 33200
+ }, {
+ 'n': '时尚',
+ 'v': 33203
+ }, {
+ 'n': '旅游',
+ 'v': 33205
+ }, {
+ 'n': '教育',
+ 'v': 33206
+ }, {
+ 'n': '其它',
+ 'v': 33220
+ }, {
+ 'n': '爱情',
+ 'v': 33316
+ }, {
+ 'n': '搞笑',
+ 'v': 33317
+ }, {
+ 'n': '益智',
+ 'v': 33318
+ }, {
+ 'n': '职场',
+ 'v': 33319
+ }, {
+ 'n': '语言',
+ 'v': 33530
+ }, {
+ 'n': '辩论',
+ 'v': 33531
+ }, {
+ 'n': '演讲',
+ 'v': 33843
+ }]
+ }],
+ '5': [{
+ 'key': 'mode',
+ 'name': '综合排序',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '热播榜',
+ 'v': 11
+ }, {
+ 'n': '好评榜',
+ 'v': 8
+ }, {
+ 'n': '新上线',
+ 'v': 4
+ }]
+ }, {
+ 'key': 'year',
+ 'name': '全部年份',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '2023',
+ 'v': 2023
+ }, {
+ 'n': '2022',
+ 'v': 2022
+ }, {
+ 'n': '2021',
+ 'v': 2021
+ }, {
+ 'n': '2020',
+ 'v': 2020
+ }, {
+ 'n': '2019',
+ 'v': 2019
+ }, {
+ 'n': '2018',
+ 'v': 2018
+ }, {
+ 'n': '2017',
+ 'v': 2017
+ }, {
+ 'n': '2016-2011',
+ 'v': '2011_2016'
+ }, {
+ 'n': '2010-2000',
+ 'v': '2000_2010'
+ }, {
+ 'n': '90年代',
+ 'v': '1990_1999'
+ }, {
+ 'n': '80年代',
+ 'v': '1980_1989'
+ }, {
+ 'n': '更早',
+ 'v': '1964_1979'
+ }]
+ }, {
+ 'key': 'is_purchase',
+ 'name': '全部资费',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '免费',
+ 'v': 0
+ }, {
+ 'n': '会员',
+ 'v': 1
+ }, {
+ 'n': '付费',
+ 'v': 2
+ }]
+ }, {
+ 'key': 'three_category_id',
+ 'name': '地区',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '内地',
+ 'v': 221
+ }, {
+ 'n': '港台',
+ 'v': 220
+ }, {
+ 'n': '欧美',
+ 'v': 219
+ }, {
+ 'n': '日韩',
+ 'v': 218
+ }, {
+ 'n': '拉美',
+ 'v': 217
+ }, {
+ 'n': '亚洲地区',
+ 'v': 216
+ }, {
+ 'n': '非洲',
+ 'v': 215
+ }]
+ }, {
+ 'key': '18009',
+ 'name': '语种',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '普通话',
+ 'v': 91
+ }, {
+ 'n': '粤语',
+ 'v': 92
+ }, {
+ 'n': '闽南语',
+ 'v': 93
+ }, {
+ 'n': '英语',
+ 'v': 94
+ }, {
+ 'n': '日语',
+ 'v': 95
+ }, {
+ 'n': '韩语',
+ 'v': 96
+ }, {
+ 'n': '其它',
+ 'v': 97
+ }]
+ }, {
+ 'key': '23554',
+ 'name': '音乐类型',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '单曲MV',
+ 'v': 23556
+ }, {
+ 'n': '单曲现场',
+ 'v': 23557
+ }, {
+ 'n': '演唱会',
+ 'v': 23558
+ }, {
+ 'n': '新闻',
+ 'v': 23559
+ }, {
+ 'n': '访谈',
+ 'v': 23560
+ }, {
+ 'n': '音乐记录',
+ 'v': 23561
+ }, {
+ 'n': '音乐周边',
+ 'v': 23562
+ }, {
+ 'n': '音乐节目',
+ 'v': 23563
+ }, {
+ 'n': '影视原声',
+ 'v': 23564
+ }, {
+ 'n': '音乐短片',
+ 'v': 23565
+ }, {
+ 'n': '其他',
+ 'v': 23566
+ }]
+ }],
+ '16': [{
+ 'key': 'mode',
+ 'name': '综合排序',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '热播榜',
+ 'v': 11
+ }, {
+ 'n': '好评榜',
+ 'v': 8
+ }, {
+ 'n': '新上线',
+ 'v': 4
+ }]
+ }, {
+ 'key': 'year',
+ 'name': '全部年份',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '2023',
+ 'v': 2023
+ }, {
+ 'n': '2022',
+ 'v': 2022
+ }, {
+ 'n': '2021',
+ 'v': 2021
+ }, {
+ 'n': '2020',
+ 'v': 2020
+ }, {
+ 'n': '2019',
+ 'v': 2019
+ }, {
+ 'n': '2018',
+ 'v': 2018
+ }, {
+ 'n': '2017',
+ 'v': 2017
+ }, {
+ 'n': '2016-2011',
+ 'v': '2011_2016'
+ }, {
+ 'n': '2010-2000',
+ 'v': '2000_2010'
+ }, {
+ 'n': '90年代',
+ 'v': '1990_1999'
+ }, {
+ 'n': '80年代',
+ 'v': '1980_1989'
+ }, {
+ 'n': '更早',
+ 'v': '1964_1979'
+ }]
+ }, {
+ 'key': 'is_purchase',
+ 'name': '全部资费',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '免费',
+ 'v': 0
+ }, {
+ 'n': '会员',
+ 'v': 1
+ }, {
+ 'n': '付费',
+ 'v': 2
+ }]
+ }, {
+ 'key': '18061',
+ 'name': '类型',
+ 'value': [{
+ 'n': '全部',
+ 'v': ''
+ }, {
+ 'n': '喜剧',
+ 'v': 1296
+ }, {
+ 'n': '爱情',
+ 'v': 1297
+ }, {
+ 'n': '动作',
+ 'v': 1298
+ }, {
+ 'n': '奇幻',
+ 'v': 1299
+ }, {
+ 'n': '惊悚',
+ 'v': 1300
+ }, {
+ 'n': '悬疑',
+ 'v': 1301
+ }, {
+ 'n': '青春',
+ 'v': 1302
+ }]
+ }]
+ },
+ // url:'https://pcw-api.iqiyi.com/search/recommend/list?channel_id=fyclass&data_type=1&is_purchase=&mode=24&page_id=fypage&ret_num=48&three_category_id=',
+ url: 'https://pcw-api.iqiyi.com/search/recommend/list?channel_id=fyclass&data_type=1&page_id=fypage&ret_num=48',
+ filter_url: 'is_purchase={{fl.is_purchase}}&mode={{fl.mode}}&three_category_id={{fl.three_category_id}}&market_release_date_level={{fl.year}}',
+ // url:'https://pcw-api.iqiyi.com/search/video/videolists?channel_id=fyclass&pageNum=fypage&pageSize=24&data_type=1&site=iqiyi',
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000,
+ class_name: '电影&电视剧&纪录片&动漫&综艺&音乐&网络电影',
+ class_url: '1&2&3&4&6&5&16',
+ limit: 20,
+ play_parse: true,
+ lazy: $js.toString(() => {
+ try {
+ let api = "" + input.split("?")[0];
+ console.log(api);
+ let response = fetch(api, {
+ method: 'get',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ });
+ let bata = JSON.parse(response);
+ if (bata.url.includes("qiyi")) {
+ input = {
+ parse: 0,
+ url: bata.url,
+ jx: 0,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ } else {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ } catch {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ }),
+ // play_parse:true,
+ // 手动调用解析请求json的url,此lazy不方便
+ // lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input',
+ // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
+ // 一级:'json:.data.list;.name;.imageUrl;.latestOrder;.albumId',
+ 推荐: '',
+ // 推荐:'js:let d=[];fetch_params.headers["user-agent"]=PC_UA;pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;let html=fetch(HOST,fetch_params);let lists=pdfa(html,".qy-mod-li");lists.forEach(function(it){try{let title=pdfh(it,"p.sub&&title");let desc=pdfh(it,".qy-mod-label&&Text");let pic_url=pd(it,"img&&src");d.push({title:title,desc:desc,img:pic_url})}catch(e){}});res=setResult(d);',
+ 一级: 'js:let d=[];if(MY_CATE==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(MY_CATE==="5"){input=input.replace("data_type=1","data_type=2")}let html=request(input);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=MY_CATE+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);',
+ // 一级:'js:let d=[];if(MY_CATE==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(MY_CATE==="5"){input=input.replace("data_type=1","data_type=2")}let html=fetch(input,fetch_params);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=MY_CATE+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);',
+ // 一级:'json:.data.list;.name;.imageUrl;.playUrl;.latestOrder',
+ // 二级:{is_json:1,"title":"data.title;data.moviecategory[0]+data.moviecategory[1]","img":"data.cdncover","desc":"data.area[0];data.director[0]","content":"data.description","tabs":"data.playlink_sites;data.playlinksdetail.#idv.quality","lists":"data.playlinksdetail.#idv.default_url"},
+ // 二级:{is_json:1,"title":"data.name+data.subtitle;data.latestOrder","img":"data.imageUrl","desc":"data.categories;data.areas","content":"data.description","tabs":"data.name","lists":"data.playlinksdetail.#idv.default_url"},
+ 二级: '',
+ 二级: 'js:let d=[];let html=request(input);let json=JSON.parse(html).data;VOD={vod_id:"",vod_url:input,vod_name:"",type_name:"",vod_actor:"",vod_year:"",vod_director:"",vod_area:"",vod_content:"",vod_remarks:"",vod_pic:""};VOD.vod_name=json.name;try{if(json.latestOrder){VOD.vod_remarks="类型: "+(json.categories[0].name||"")+"\\t"+(json.categories[1].name||"")+"\\t"+(json.categories[2].name||"")+"\\t"+"评分:"+(json.score||"")+"\\n更新至:第"+json.latestOrder+"集(期)/共"+json.videoCount+"集(期)"}else{VOD.vod_remarks="类型: "+(json.categories[0].name||"")+"\\t"+(json.categories[1].name||"")+"\\t"+(json.categories[2].name||"")+"\\t"+"评分:"+(json.score||"")+json.period}}catch(e){VOD.vod_remarks=json.subtitle}VOD.vod_area=(json.focus||"")+"\\n资费:"+(json.payMark===1?"VIP":"免费")+"\\n地区:"+(json.areas||"");let vsize="579_772";try{vsize=json.imageSize[12]}catch(e){}VOD.vod_pic=json.imageUrl.replace(".jpg","_"+vsize+".jpg?caplist=jpg,webp");VOD.type_name=json.categories.map(function(it){return it.name}).join(",");if(json.people.main_charactor){let vod_actors=[];json.people.main_charactor.forEach(function(it){vod_actors.push(it.name)});VOD.vod_actor=vod_actors.join(",")}VOD.vod_content=json.description;let playlists=[];if(json.channelId===1||json.channelId===5){playlists=[{playUrl:json.playUrl,imageUrl:json.imageUrl,shortTitle:json.shortTitle,focus:json.focus,period:json.period}]}else{if(json.channelId===6){let qs=json.period.split("-")[0];let listUrl="https://pcw-api.iqiyi.com/album/source/svlistinfo?cid=6&sourceid="+json.albumId+"&timelist="+qs;let playData=JSON.parse(request(listUrl)).data[qs];playData.forEach(function(it){playlists.push({playUrl:it.playUrl,imageUrl:it.imageUrl,shortTitle:it.shortTitle,focus:it.focus,period:it.period})})}else{let listUrl="https://pcw-api.iqiyi.com/albums/album/avlistinfo?aid="+json.albumId+"&size=200&page=1";let data=JSON.parse(request(listUrl)).data;let total=data.total;playlists=data.epsodelist;if(total>200){for(let i=2;i200){for(let i=2;i {
+ // let d = [];
+ // let data = JSON.parse(request(input))
+ // data.forEach(item => {
+ // item.datas.forEach(it => {
+ // let id = `http://114.132.55.23/bl/mb/api.php/provide/vod/?ac=videolist&wd=${it.title}&`;
+ // d.push({
+ // url: id,
+ // title: it.title,
+ // img: it.pic,
+ // desc: it.acr,
+ // })
+ // });
+ // });
+ // setResult(d)
+ // }),
+ 一级: $js.toString(() => {
+ let d = [];
+
+ function Encrypt(plainText) {
+ let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT");
+ let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj");
+ // 将文本加密为 AES/CBC/PKCS5Padding 格式
+ let encrypted = CryptoJS.AES.encrypt(plainText, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+
+ // 获取加密结果并转为 Hex 格式
+ let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex);
+ return encryptedHex.toUpperCase(); // 返回大写 Hex 格式
+ }
+
+ function Decrypt(word, key, iv) {
+ let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
+
+ // 使用AES/CBC/PKCS5Padding模式进行解密
+ let decrypt = CryptoJS.AES.decrypt({
+ ciphertext: encryptedHexStr
+ }, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC, // 使用CBC模式
+ padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充
+ });
+
+ // 将解密后的数据转换为原始文本
+ let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
+
+ // 返回解密后的文本
+ return decryptedStr;
+ }
+
+ function getbody3(key, t) {
+ var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ+IOJyHnHflCj5w/7ESK7FgywMvrgjxbx0GklEFLI4+JshgySe633OIRstuktwdiCy3CT+fLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz/uurUif2OK4=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature)
+ var signature2 = md5(signature).toUpperCase(); //log(signature2)
+ var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ%2BIOJyHnHflCj5w%2F7ESK7FgywMvrgjxbx0GklEFLI4%2BJshgySe633OIRstuktwdiCy3CT%2BfLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz%2FuurUif2OK4%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1';
+ return body
+ }
+ const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA==";
+
+ function gethtml(u, body, headers) {
+ var hd = fetch(u, {
+ headers: headers,
+ body: body,
+ method: 'POST',
+ rejectCoding: true
+ });
+ var banner = JSON.parse(hd).data;
+ var response_key = banner.response_key; //log()
+ var keys = banner.keys; //log(keys)
+ var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey));
+ var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key);
+ var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv);
+ var html = Decrypt(response_key, key, iv);
+ return html
+ }
+
+ function hqsub(MY_CATE) {
+ var subs = ["5", "12", "30", "22", ""]
+ var tids = ["1", "2", "4", "3", "64"]
+ let index = tids.indexOf(MY_CATE);
+ if (index !== -1) {
+ return subs[index];
+ }
+ return ""; // 或者根据需要返回其他值
+ }
+ var headers = {
+ 'Cache-Control': 'no-cache',
+ 'Version': '2406025',
+ 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f',
+ 'Ver': '1.9.2',
+ 'Referer': 'https://api.8utdtcq.com',
+ 'X-Customer-Client-Ip': '127.0.0.1',
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Host': 'api.8utdtcq.com',
+ 'Connection': 'Keep-Alive',
+ //'Accept-Encoding': 'gzip',
+ 'User-Agent': 'okhttp/3.12.0'
+ }
+ var tid = MY_CATE;
+ var sub = hqsub(MY_CATE)
+ var timestamp = new Date().getTime() / 1000;
+ var t = timestamp.toString().split('.')[0];
+ var request_key = JSON.stringify({
+ "area": (MY_FL.area || 0).toString(),
+ "sub": (MY_FL.sub || sub).toString(),
+ "year": (MY_FL.year || 0).toString(),
+ "pageSize": "30",
+ "sort": (MY_FL.sort || "d_id").toString(),
+ "page": MY_PAGE,
+ "tid": tid
+ });
+ var request_key2 = Encrypt(request_key);
+ var body = getbody3(request_key2, t)
+ var html2 = gethtml("https://api.8utdtcq.com/App/IndexList/indexList", body, headers)
+ //console.log("tttttlieb=="+html2)
+ var list = JSON.parse(html2).list; //log(list)
+ list.forEach(data => {
+ d.push({
+ title: data.vod_name,
+ desc: data.vod_continu == 0 ? '电影' : '更新至' + data.vod_continu + '集',
+ year: data.vod_scroe,
+ img: data.vod_pic,
+ url: `${data.vod_id}/${data.vod_continu}`,
+ })
+ })
+ setResult(d)
+ }),
+ 二级: $js.toString(() => {
+ // var d = [];
+ function Encrypt(plainText) {
+ let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT");
+ let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj");
+ // 将文本加密为 AES/CBC/PKCS5Padding 格式
+ let encrypted = CryptoJS.AES.encrypt(plainText, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+
+ // 获取加密结果并转为 Hex 格式
+ let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex);
+ return encryptedHex.toUpperCase(); // 返回大写 Hex 格式
+ }
+
+ function Decrypt(word, key, iv) {
+ let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
+
+ // 使用AES/CBC/PKCS5Padding模式进行解密
+ let decrypt = CryptoJS.AES.decrypt({
+ ciphertext: encryptedHexStr
+ }, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC, // 使用CBC模式
+ padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充
+ });
+
+ // 将解密后的数据转换为原始文本
+ let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
+
+ // 返回解密后的文本
+ return decryptedStr;
+ }
+
+ function getbody2(key, t) {
+ var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=Qmxi5ciWXbQzkr7o+SUNiUuQxQEf8/AVyUWY4T/BGhcXBIUz4nOyHBGf9A4KbM0iKF3yp9M7WAY0rrs5PzdTAOB45plcS2zZ0wUibcXuGJ29VVGRWKGwE9zu2vLwhfgjTaaDpXo4rby+7GxXTktzJmxvneOUdYeHi+PZsThlvPI=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature)
+ var signature2 = md5(signature); //log(signature2)
+ var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=Qmxi5ciWXbQzkr7o%2BSUNiUuQxQEf8%2FAVyUWY4T%2FBGhcXBIUz4nOyHBGf9A4KbM0iKF3yp9M7WAY0rrs5PzdTAOB45plcS2zZ0wUibcXuGJ29VVGRWKGwE9zu2vLwhfgjTaaDpXo4rby%2B7GxXTktzJmxvneOUdYeHi%2BPZsThlvPI%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1'; //log(body)
+ return body
+ }
+ const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA==";
+
+ function gethtml(u, body, headers) {
+ var hd = fetch(u, {
+ headers: headers,
+ body: body,
+ method: 'POST',
+ rejectCoding: true
+ });
+ var banner = JSON.parse(hd).data;
+ var response_key = banner.response_key; //log()
+ var keys = banner.keys; //log(keys)
+ var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey));
+ var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key);
+ var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv);
+ var html = Decrypt(response_key, key, iv);
+ return html
+ }
+ const headers = {
+ 'Cache-Control': 'no-cache',
+ 'Version': '2406025',
+ 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f',
+ 'Ver': '1.9.2',
+ 'Referer': 'https://api.8utdtcq.com',
+ 'X-Customer-Client-Ip': '127.0.0.1',
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Host': 'api.8utdtcq.com',
+ 'Connection': 'Keep-Alive',
+ //'Accept-Encoding': 'gzip',
+ 'User-Agent': 'okhttp/3.12.0'
+ }
+ // var MY_URL = MY_URL.split("##")[1]; //log(MY_URL)
+ input = input.replace('https://api.8utdtcq.com/', '');
+ //console.log("input----===="+input)
+
+ // var vod_continu = input.split("/")[1]; //log(vod_id)
+ var vod_id = input.split("/")[0];
+ //console.log("vod----===="+vod_id)
+ var timestamp = new Date().getTime() / 1000;
+ var t = timestamp.toString().split('.')[0];
+ var request_key = JSON.stringify({
+ "token_id": "393668",
+ "vod_id": vod_id,
+ "mobile_time": t,
+ "token": "1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79"
+ });
+ var request_key2 = Encrypt(request_key);
+ var body = getbody2(request_key2, t)
+ var html = gethtml("https://api.8utdtcq.com/App/IndexPlay/playInfo", body, headers)
+ var data2 = JSON.parse(html).vodInfo; //console.log("hwudwudg-===="+JSON.stringify(data2))
+ var request_key3 = JSON.stringify({
+ "vurl_cloud_id": "2",
+ "vod_d_id": vod_id
+ }); //log(request_key3)
+ var request_key4 = Encrypt(request_key3); //log(request_key4)
+ var body2 = getbody2(request_key4, t)
+
+ var html3 = gethtml("https://api.8utdtcq.com/App/Resource/Vurl/show", body2, headers); //log(html3)
+
+ var list = JSON.parse(html3).list;
+ let nnnmm = [];
+ list.forEach(item => {
+ // 获取play对象的所有值
+ const playParams = Object.values(item.play);
+ let lastParam = null;
+
+ // 从数组的最后一个元素开始,向前查找,直到找到一个非空的param值
+ for (let i = playParams.length - 1; i >= 0; i--) {
+ if (playParams[i].param) {
+ lastParam = playParams[i].param;
+ break;
+ }
+ }
+
+ // 使用正则表达式匹配vurl_id
+ const vurlIdMatch = lastParam.match(/vurl_id=(\d+)/);
+ const resolution = lastParam.match(/resolution=(\d+)/);
+ // 如果匹配成功,将title和vurl_id组合后push到result数组
+ if (vurlIdMatch) {
+ nnnmm.push(`${item.title}$${vod_id}/${vurlIdMatch[1]}?${resolution[1]}`);
+ }
+ });
+ VOD = {
+ title: data2.vod_name,
+ type: data2.videoTag.toString(),
+ desc: data2.vod_use_content,
+ vod_actor: data2.vod_actor,
+ vod_area: data2.vod_area,
+ vod_director: data2.vod_director,
+ img: data2.vod_pic,
+ vod_play_from: '瓜子HD',
+ vod_play_url: nnnmm.join('#')
+ }
+ }),
+ 搜索: $js.toString(() => {
+ let d = [];
+
+ function Encrypt(plainText) {
+ let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT");
+ let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj");
+ // 将文本加密为 AES/CBC/PKCS5Padding 格式
+ let encrypted = CryptoJS.AES.encrypt(plainText, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+
+ // 获取加密结果并转为 Hex 格式
+ let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex);
+ return encryptedHex.toUpperCase(); // 返回大写 Hex 格式
+ }
+
+ function Decrypt(word, key, iv) {
+ let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
+
+ // 使用AES/CBC/PKCS5Padding模式进行解密
+ let decrypt = CryptoJS.AES.decrypt({
+ ciphertext: encryptedHexStr
+ }, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC, // 使用CBC模式
+ padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充
+ });
+
+ // 将解密后的数据转换为原始文本
+ let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
+
+ // 返回解密后的文本
+ return decryptedStr;
+ }
+
+ function getbody3(key, t) {
+ var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ+IOJyHnHflCj5w/7ESK7FgywMvrgjxbx0GklEFLI4+JshgySe633OIRstuktwdiCy3CT+fLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz/uurUif2OK4=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature)
+ var signature2 = md5(signature); //log(signature2)
+ var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ%2BIOJyHnHflCj5w%2F7ESK7FgywMvrgjxbx0GklEFLI4%2BJshgySe633OIRstuktwdiCy3CT%2BfLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz%2FuurUif2OK4%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1';
+ return body
+ }
+ const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA==";
+
+ function gethtml(u, body, headers) {
+ var hd = fetch(u, {
+ headers: headers,
+ body: body,
+ method: 'POST',
+ rejectCoding: true
+ });
+ var banner = JSON.parse(hd).data;
+ var response_key = banner.response_key; //log()
+ //console.log("response_key=="+response_key)
+ var keys = banner.keys; //log(keys)
+ var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey));
+ //console.log("rsaxxxx=="+JSON.stringify(bodykeyiv))
+ var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key);
+ var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv);
+ var html = Decrypt(response_key, key, iv);
+ //console.log("nskjsnwkjdnejd===qqxxxq="+JSON.stringify(html))
+ return html
+ }
+ var timestamp = new Date().getTime() / 1000;
+ var t = timestamp.toString().split('.')[0];
+ var url = input.split("#")[0]; //url
+ var request_key11 = input.split("#")[1]
+
+ var request_key = JSON.stringify({
+ "keywords": request_key11,
+ "order_val": "1"
+ })
+ //console.log("nskjsnwkjdnejd===qqxxxq=tttt"+request_key)
+ var request_key2 = Encrypt(request_key);
+ var body = getbody3(request_key2, t)
+ var headers = {
+ 'Cache-Control': 'no-cache',
+ 'Version': '2406025',
+ 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f',
+ 'Ver': '1.9.2',
+ 'Referer': 'https://api.8utdtcq.com',
+ 'X-Customer-Client-Ip': '127.0.0.1',
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Host': 'api.8utdtcq.com',
+ 'Connection': 'Keep-Alive',
+ 'User-Agent': 'okhttp/3.12.0'
+ }
+ var html = gethtml(url, body, headers)
+ //console.log("nskjsnwkjdnejd===="+html)
+
+ var list = JSON.parse(html).list; //log(list)
+ //console.log("nskjsnwkjdnejd===qqqqq="+list)
+ list.forEach(data => {
+ d.push({
+ title: data.vod_name,
+ desc: data.vod_continu == 0 ? '电影' : '更新至' + data.vod_continu + '集',
+ content: data.vod_addtime,
+ img: data.vod_pic,
+ url: `${data.vod_id}/${data.vod_continu}`,
+ })
+ })
+ setResult(d)
+ }),
+}
\ No newline at end of file
diff --git a/JS/看了么.js b/JS/看了么.js
new file mode 100644
index 0000000..f365203
--- /dev/null
+++ b/JS/看了么.js
@@ -0,0 +1,890 @@
+var rule = {
+ title: '看了么',
+ host: 'https://www.ksksl.com',
+ // url:'/show/fyclass/page/fypage.html',
+ url: '/show/fyclassfyfilter.html',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '{{fl.area}}{{fl.by or "/by/time"}}{{fl.class}}/page/fypage{{fl.year}}',
+ filter: {
+ "dy": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "中国大陆",
+ "v": "/area/中国大陆"
+ }, {
+ "n": "中国香港",
+ "v": "/area/中国香港"
+ }, {
+ "n": "中国台湾",
+ "v": "/area/中国台湾"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "法国",
+ "v": "/area/法国"
+ }]
+ }, {
+ "key": "class",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "喜剧",
+ "v": "/class/喜剧"
+ }, {
+ "n": "爱情",
+ "v": "/class/爱情"
+ }, {
+ "n": "恐怖",
+ "v": "/class/恐怖"
+ }, {
+ "n": "动作",
+ "v": "/class/动作"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "剧情",
+ "v": "/class/剧情"
+ }, {
+ "n": "警匪",
+ "v": "/class/警匪"
+ }, {
+ "n": "犯罪",
+ "v": "/class/犯罪"
+ }, {
+ "n": "动画",
+ "v": "/class/动画"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "武侠",
+ "v": "/class/武侠"
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "枪战",
+ "v": "/class/枪战"
+ }, {
+ "n": "恐怖",
+ "v": "/class/恐怖"
+ }, {
+ "n": "悬疑",
+ "v": "/class/悬疑"
+ }, {
+ "n": "惊悚",
+ "v": "/class/惊悚"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "文艺",
+ "v": "/class/文艺"
+ }, {
+ "n": "古装",
+ "v": "/class/古装"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "运动",
+ "v": "/class/运动"
+ }, {
+ "n": "农村",
+ "v": "/class/农村"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "tv": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "中国大陆",
+ "v": "/area/中国大陆"
+ }, {
+ "n": "中国香港",
+ "v": "/area/中国香港"
+ }, {
+ "n": "中国台湾",
+ "v": "/area/中国台湾"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "法国",
+ "v": "/area/法国"
+ }]
+ }, {
+ "key": "class",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "古装",
+ "v": "/class/古装"
+ }, {
+ "n": "言情",
+ "v": "/class/言情"
+ }, {
+ "n": "武侠",
+ "v": "/class/武侠"
+ }, {
+ "n": "偶像",
+ "v": "/class/美国"
+ }, {
+ "n": "家庭",
+ "v": "/class/家庭"
+ }, {
+ "n": "喜剧",
+ "v": "/class/喜剧"
+ }, {
+ "n": "战争",
+ "v": "/class/战争"
+ }, {
+ "n": "军旅",
+ "v": "/class/军旅"
+ }, {
+ "n": "谍战",
+ "v": "/class/谍战"
+ }, {
+ "n": "悬疑",
+ "v": "/class/悬疑"
+ }, {
+ "n": "罪案",
+ "v": "/class/罪案"
+ }, {
+ "n": "穿越",
+ "v": "/class/穿越"
+ }, {
+ "n": "宫廷",
+ "v": "/class/宫廷"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "神话",
+ "v": "/class/神话"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "年代",
+ "v": "/class/年代"
+ }, {
+ "n": "农村",
+ "v": "/class/农村"
+ }, {
+ "n": "商战",
+ "v": "/class/商战"
+ }, {
+ "n": "剧情",
+ "v": "/class/剧情"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "网剧",
+ "v": "/class/网剧"
+ }, {
+ "n": "都市",
+ "v": "/class/都市"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "zy": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "中国大陆",
+ "v": "/area/中国大陆"
+ }, {
+ "n": "中国香港",
+ "v": "/area/中国香港"
+ }, {
+ "n": "中国台湾",
+ "v": "/area/中国台湾"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "法国",
+ "v": "/area/法国"
+ }]
+ }, {
+ "key": "class",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "表演",
+ "v": "/class/表演"
+ }, {
+ "n": "播报",
+ "v": "/class/播报"
+ }, {
+ "n": "访谈",
+ "v": "/class/访谈"
+ }, {
+ "n": "体验",
+ "v": "/class/体验"
+ }, {
+ "n": "养成",
+ "v": "/class/养成"
+ }, {
+ "n": "游戏",
+ "v": "/class/游戏"
+ }, {
+ "n": "亲子",
+ "v": "/class/亲子"
+ }, {
+ "n": "美食",
+ "v": "/class/美食"
+ }, {
+ "n": "情感",
+ "v": "/class/情感"
+ }, {
+ "n": "选秀",
+ "v": "/class/选秀"
+ }, {
+ "n": "益智",
+ "v": "/class/益智"
+ }, {
+ "n": "晚会",
+ "v": "/class/晚会"
+ }, {
+ "n": "音乐",
+ "v": "/class/音乐"
+ }, {
+ "n": "文化",
+ "v": "/class/文化"
+ }, {
+ "n": "喜剧",
+ "v": "/class/喜剧"
+ }, {
+ "n": "曲艺",
+ "v": "/class/曲艺"
+ }, {
+ "n": "职场",
+ "v": "/class/职场"
+ }, {
+ "n": "脱口秀",
+ "v": "/class/脱口秀"
+ }, {
+ "n": "文艺",
+ "v": "/class/文艺"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }, {
+ "n": "潮流文化",
+ "v": "/class/潮流文化"
+ }, {
+ "n": "体育",
+ "v": "/class/体育"
+ }, {
+ "n": "资讯",
+ "v": "/class/资讯"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "dm": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "中国大陆",
+ "v": "/area/中国大陆"
+ }, {
+ "n": "中国香港",
+ "v": "/area/中国香港"
+ }, {
+ "n": "中国台湾",
+ "v": "/area/中国台湾"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "法国",
+ "v": "/area/法国"
+ }]
+ }, {
+ "key": "class",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "热门",
+ "v": "/class/热门"
+ }, {
+ "n": "搞笑",
+ "v": "/class/搞笑"
+ }, {
+ "n": "番剧",
+ "v": "/class/番剧"
+ }, {
+ "n": "国创",
+ "v": "/class/国创"
+ }, {
+ "n": "大电影",
+ "v": "/class/大电影"
+ }, {
+ "n": "热血",
+ "v": "/class/热血"
+ }, {
+ "n": "催泪",
+ "v": "/class/催泪"
+ }, {
+ "n": "励志",
+ "v": "/class/励志"
+ }, {
+ "n": "机战",
+ "v": "/class/机战"
+ }, {
+ "n": "格斗",
+ "v": "/class/格斗"
+ }, {
+ "n": "恋爱",
+ "v": "/class/恋爱"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "魔幻",
+ "v": "/class/魔幻"
+ }, {
+ "n": "推理",
+ "v": "/class/推理"
+ }, {
+ "n": "校园",
+ "v": "/class/校园"
+ }, {
+ "n": "日常",
+ "v": "/class/日常"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "美食",
+ "v": "/class/美食"
+ }, {
+ "n": "武侠",
+ "v": "/class/武侠"
+ }, {
+ "n": "玄幻",
+ "v": "/class/玄幻"
+ }, {
+ "n": "竞技",
+ "v": "/class/竞技"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "jl": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "中国大陆",
+ "v": "/area/中国大陆"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "国外",
+ "v": "/area/国外"
+ }, {
+ "n": "其他",
+ "v": "/area/其他"
+ }]
+ }, {
+ "key": "class",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "社会",
+ "v": "/class/社会"
+ }, {
+ "n": "动物",
+ "v": "/class/动物"
+ }, {
+ "n": "文化",
+ "v": "/class/文化"
+ }, {
+ "n": "自然",
+ "v": "/class/自然"
+ }, {
+ "n": "人文",
+ "v": "/class/人文"
+ }, {
+ "n": "军事",
+ "v": "/class/军事"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "记录",
+ "v": "/class/记录"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }]
+ },
+ // searchUrl:'/ch.html?wd=**',
+ searchUrl: '/ch/page/fypage/wd/**.html',
+ searchable: 2,
+ headers: {
+ 'User-Agent': 'UC_UA'
+ },
+ timeout: 5000,
+ // class_name: '电影&电视剧&动漫&综艺&纪录片',//静态分类名称拼接
+ // class_url: 'dy&tv&dm&zy&jl',//静态分类标识拼接
+ class_parse: '.vi-nav.swiper-wrapper&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html',
+ play_parse: true,
+ lazy: `js:
+ var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
+ var url = html.url;
+ if (html.encrypt == '1') {
+ url = unescape(url)
+ } else if (html.encrypt == '2') {
+ url = unescape(base64Decode(url))
+ }
+ if (/\\.m3u8|\\.mp4/.test(url)) {
+ input = {
+ jx: 0,
+ url: url,
+ parse: 0
+ }
+ } else {
+ input
+ }
+ `,
+ limit: 5,
+ 推荐: '.dx-top;li;a&&title;a&&data-original;.vod_remarks&&Text;a&&href',
+ double: true, // 推荐内容是否双层定位
+ 一级: 'ul.dx-list li;a&&title;a&&data-original;.vod_remarks&&Text;a&&href',
+ 二级: {
+ "title": "h1--span&&Text;",
+ "img": ".picHover&&img&&src",
+ "desc": ";;;.video-info-item:eq(0)&&Text;.item-tags&&Text",
+ "content": ".vod_content&&Text",
+ "tabs": ".play-title h2",
+ "lists": ".play_li.fn-clear:eq(#id) a"
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/JS/短剧合集.js b/JS/短剧合集.js
new file mode 100644
index 0000000..474a896
--- /dev/null
+++ b/JS/短剧合集.js
@@ -0,0 +1,29 @@
+var rule = {
+ 类型: '影视',//影视|听书|漫画|小说
+ title: '爱看短剧[盘]',
+ host: 'https://ys.110t.cn/',
+ homeUrl: '/api/ajax.php?act=recommend',
+ homeUrl: '/api/ajax.php?act=Daily',
+ url: '/api/ajax.php?act=fyclass',
+ searchUrl: '/api/ajax.php?act=search&name=**',
+ searchable: 1,
+ quickSearch: 0,
+ filterable: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ hikerListCol: "text_1",
+ hikerClassListCol: "text_1",
+ timeout: 5000,
+ class_name: '全部',
+ class_url: 'yingshilist',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ input = "push://" + input;
+ }),
+ double: false,
+ 推荐: '*',
+ 一级: 'json:data;name;;addtime;url',
+ 二级: '*',
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/JS/碟调影视.js b/JS/碟调影视.js
new file mode 100644
index 0000000..659b001
--- /dev/null
+++ b/JS/碟调影视.js
@@ -0,0 +1,32 @@
+var rule = {
+ title: '碟调影视',
+ host: 'http://www.618648.com',
+ // homeUrl:'/',
+ url: '/die-tiao/fyclass-fypage.html',
+ searchUrl: '/diediaoch/page/fypage/wd/**.html',
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ filterable: 0, //是否启用分类筛选,
+ headers: { //网站的请求头,完整支持所有的,常带ua和cookies
+ 'User-Agent': 'MOBILE_UA',
+ // "Cookie": "searchneed=ok"
+ },
+ //class_parse:'.stui-header__menu li.hidden-xs;a&&Text;a&&href;.*/(.*?).html',
+ class_name: '电影&电视剧&综艺&动漫',
+ class_url: '1&2&3&4',
+ play_parse: true,
+ lazy: '',
+ limit: 8,
+ 推荐: '.stui-vodlist.clearfix;.stui-vodlist__box;a&&title;a&&data-original;.pic-text&&Text;a&&href',
+ double: true, // 推荐内容是否双层定位
+ 一级: '.stui-vodlist.clearfix li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
+ 二级: {
+ "title": "h1.title&&Text;.stui-content__detail p:eq(2)&&Text",
+ "img": ".lazyload&&data-original",
+ "desc": ".video-info-items:eq(-2)&&Text;.video-info-items:eq(-1)&&Text;.video-info-items:eq(-2)&&Text;.stui-content__detail p:eq(7)&&Text;.stui-content__detail p:eq(6)&&Text",
+ "content": ".stui-content__detail p:eq(9)&&Text",
+ "tabs": ".nav.nav-tabs li",
+ "lists": ".tab-pane.fade:eq(#id)&&ul&&li"
+ },
+ 搜索: '.stui-vodlist.clearfix li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JS/磁力熊.js b/JS/磁力熊.js
new file mode 100644
index 0000000..ba22280
--- /dev/null
+++ b/JS/磁力熊.js
@@ -0,0 +1,101 @@
+var rule = {
+ title:'磁力熊[磁]',
+ host:'https://www.cilixiong.com',
+ homeUrl:'/top250/index.html',
+ // url: '/fyclass/index_(fypage-1).html',
+ url: '/fyclassfyfilter-(fypage-1).html',
+ filter_url:'-{{fl.class or "0"}}-{{fl.area or "0"}}',
+ filter:{
+ "1":[{"key":"class","name":"类型","value":[{"n":"全部","v":"0"},{"n":"剧情","v":"1"},{"n":"喜剧","v":"2"},{"n":"惊悚","v":"3"},{"n":"动作","v":"4"},{"n":"爱情","v":"5"},{"n":"犯罪","v":"6"},{"n":"恐怖","v":"7"},{"n":"冒险","v":"8"},{"n":"悬疑","v":"9"},{"n":"科幻","v":"10"},{"n":"家庭","v":"11"},{"n":"奇幻","v":"12"},{"n":"动画","v":"13"},{"n":"战争","v":"14"},{"n":"历史","v":"15"},{"n":"传记","v":"16"},{"n":"音乐","v":"17"},{"n":"歌舞","v":"18"},{"n":"运动","v":"19"},{"n":"西部","v":"20"},{"n":"灾难","v":"21"},{"n":"古装","v":"22"},{"n":"情色","v":"23"},{"n":"同性","v":"24"},{"n":"儿童","v":"25"},{"n":"纪录片","v":"26"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"0"},{"n":"大陆","v":"1"},{"n":"香港","v":"2"},{"n":"台湾","v":"3"},{"n":"美国","v":"4"},{"n":"日本","v":"5"},{"n":"韩国","v":"6"},{"n":"英国","v":"7"},{"n":"法国","v":"8"},{"n":"德国","v":"9"},{"n":"印度","v":"10"},{"n":"泰国","v":"11"},{"n":"丹麦","v":"12"},{"n":"瑞典","v":"13"},{"n":"巴西","v":"14"},{"n":"加拿大","v":"15"},{"n":"俄罗斯","v":"16"},{"n":"意大利","v":"17"},{"n":"比利时","v":"18"},{"n":"爱尔兰","v":"19"},{"n":"西班牙","v":"20"},{"n":"澳大利亚","v":"21"},{"n":"波兰","v":"22"},{"n":"土耳其","v":"23"},{"n":"越南","v":"24"}]}],
+ "2":[{"key":"class","name":"类型","value":[{"n":"全部","v":"0"},{"n":"剧情","v":"1"},{"n":"喜剧","v":"2"},{"n":"惊悚","v":"3"},{"n":"动作","v":"4"},{"n":"爱情","v":"5"},{"n":"犯罪","v":"6"},{"n":"恐怖","v":"7"},{"n":"冒险","v":"8"},{"n":"悬疑","v":"9"},{"n":"科幻","v":"10"},{"n":"家庭","v":"11"},{"n":"奇幻","v":"12"},{"n":"动画","v":"13"},{"n":"战争","v":"14"},{"n":"历史","v":"15"},{"n":"传记","v":"16"},{"n":"音乐","v":"17"},{"n":"歌舞","v":"18"},{"n":"运动","v":"19"},{"n":"西部","v":"20"},{"n":"灾难","v":"21"},{"n":"古装","v":"22"},{"n":"情色","v":"23"},{"n":"同性","v":"24"},{"n":"儿童","v":"25"},{"n":"纪录片","v":"26"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"0"},{"n":"大陆","v":"1"},{"n":"香港","v":"2"},{"n":"台湾","v":"3"},{"n":"美国","v":"4"},{"n":"日本","v":"5"},{"n":"韩国","v":"6"},{"n":"英国","v":"7"},{"n":"法国","v":"8"},{"n":"德国","v":"9"},{"n":"印度","v":"10"},{"n":"泰国","v":"11"},{"n":"丹麦","v":"12"},{"n":"瑞典","v":"13"},{"n":"巴西","v":"14"},{"n":"加拿大","v":"15"},{"n":"俄罗斯","v":"16"},{"n":"意大利","v":"17"},{"n":"比利时","v":"18"},{"n":"爱尔兰","v":"19"},{"n":"西班牙","v":"20"},{"n":"澳大利亚","v":"21"},{"n":"波兰","v":"22"},{"n":"土耳其","v":"23"},{"n":"越南","v":"24"}]}]
+ },
+ searchUrl: '/e/search/index.php#classid=1,2&show=title&tempid=1&keyboard=**;post',
+ searchable:2,
+ quickSearch:0,
+ filterable:1,
+ headers:{
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout:5000,
+ class_name:'电影&剧集&豆瓣电影Top250&IMDB Top250&高分悬疑片&高分喜剧片&高分传记片&高分爱情片&高分犯罪片&高分恐怖片&高分冒险片&高分武侠片&高分奇幻片&高分历史片&高分战争片&高分歌舞片&高分灾难片&高分情色片&高分西部片&高分音乐片&高分科幻片&高分动作片&高分动画片&高分纪录片&冷门佳片',
+ class_url:'1&2&/top250/&/s/imdbtop250/&/s/suspense/&/s/comedy/&/s/biopic/&/s/romance/&/s/crime/&/s/horror/&/s/adventure/&/s/martial/&/s/fantasy/&/s/history/&/s/war/&/s/musical/&/s/disaster/&/s/erotic/&/s/west/&/s/music/&/s/sci-fi/&s/action/&/s/animation/&/s/documentary/&/s/unpopular/',
+ play_parse:true,
+ lazy:'',
+ limit:6,
+ 推荐: `js:
+ pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
+ var d = [];
+ var html = request(input);
+ var list = pdfa(html, 'body&&.col');
+ list.forEach(it => {
+ d.push({
+ title: pdfh(it, 'h2&&Text'),
+ desc: pdfh(it, '.me-auto&&Text') + '分 / ' + pdfh(it, '.small&&Text'),
+ // pic_url: pd(it, '.card-img&&style'), // 只有 影视TV&爱佬版 有图片
+ pic_url: /!'/.test(pd(it, '.card-img&&style'))?pd(it, '.card-img&&style'):pd(it, '.card-img&&style').replaceAll("'",""), // 兼容 影视TV&爱佬版 以外的其它壳子
+ url: pd(it, 'a&&href')
+ });
+ })
+ setResult(d);
+ `,
+ 一级: `js:
+ pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
+ var d = [];
+ if (MY_CATE !== '1' && MY_CATE !== '2') {
+ let turl = (MY_PAGE === 1)? 'index' : 'index_'+ MY_PAGE;
+ input = HOST + MY_CATE + turl + '.html';
+ }
+ var html = request(input);
+ var list = pdfa(html, 'body&&.col');
+ list.forEach(it => {
+ d.push({
+ title: pdfh(it, 'h2&&Text'),
+ desc: pdfh(it, '.me-auto&&Text') + '分 / ' + pdfh(it, '.small&&Text'),
+ // pic_url: pdfh(it, '.card-img&&style'), // 只有 影视TV&爱佬版 有图片
+ pic_url: /!'/.test(pd(it, '.card-img&&style'))?pd(it, '.card-img&&style'):pd(it, '.card-img&&style').replaceAll("'",""), // 兼容 影视TV&爱佬版 以外的其它壳子
+ url: pd(it, 'a&&href')
+ });
+ })
+ setResult(d);
+ `,
+ 二级:{
+ title:'h1&&Text;p.mb-2:eq(4)&&Text',
+ desc:'p.mb-2:eq(1)&&Text;;;p.mb-2:eq(7)&&Text;p.mb-2:eq(5)&&Text',
+ img:'.rounded-2&&src',
+ content:'.mv_card_box&&Text',
+ // tabs:'js:TABS = ["道长磁力"]',
+ // lists:'.mv_down:eq(#id)&&.border-bottom',
+ // list_text:'a&&Text',
+ // list_url:'a&&href',
+
+ tabs:'js:TABS = ["道长磁力","道长在线预览"]',
+ lists:`js:
+ log(TABS);
+ pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
+ LISTS = [];
+ var dd=[];
+ TABS.forEach(function(tab) {
+ if (/道长磁力/.test(tab)) {
+ var d = pdfa(html, '.mv_down&&.border-bottom');
+ d = d.map(function(it) {
+ var title = pdfh(it, 'a&&Text');
+ log('title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
+ var burl = pd(it, 'a&&href');
+ log('burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
+ return title + '$' + burl
+ });
+ LISTS.push(d)
+ } else if (/道长在线预览/.test(tab)) {
+ var d = pd(html, 'iframe&&src');
+ if (d) {
+ d=['第一集在线播放预览$' + d]
+ } else {
+ d=['没有预览不要点$http://www.sharenice.net/douyin/23852']
+ }
+ LISTS.push(d)
+ }
+ });
+ `,
+ },
+ 搜索:'.col;h2&&Text;.card-img&&style;.me-auto&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JS/米兔弹幕.js b/JS/米兔弹幕.js
new file mode 100644
index 0000000..31d476a
--- /dev/null
+++ b/JS/米兔弹幕.js
@@ -0,0 +1,224 @@
+globalThis.h_ost = 'http://mitu.jiajiayoutian.top/';
+var key = CryptoJS.enc.Base64.parse("ZDAzMmMxMjg3NmJjNjg0OA==");
+var iv = CryptoJS.enc.Base64.parse("ZDAzMmMxMjg3NmJjNjg0OA==");
+globalThis.AES_Decrypt = function(word) {
+ try {
+ var decrypt = CryptoJS.AES.decrypt(word, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7,
+ });
+ const decryptedText = decrypt.toString(CryptoJS.enc.Utf8);
+ if (!decryptedText) {
+ throw new Error("解密后的内容为空");
+ }
+ return decryptedText;
+ } catch (e) {
+ console.error("解密失败:", e);
+ return null;
+ }
+};
+globalThis.AES_Encrypt = function(word) {
+ var encrypted = CryptoJS.AES.encrypt(word, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+ return encrypted.toString();
+};
+
+globalThis.vod1 = function(t, pg) {
+ let html1 = request(h_ost + 'api.php/getappapi.index/typeFilterVodList', {
+ body: {
+ area: '全部',
+ year: '全部',
+ type_id: t,
+ page: pg,
+ sort: '最新',
+ lang: '全部',
+ class: '全部'
+ },
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ 'method': 'POST'
+ }, true);
+ let html = JSON.parse(html1);
+ return (AES_Decrypt(html.data));
+}
+globalThis.vodids = function(ids) {
+ let html1 = fetch(h_ost + 'api.php/getappapi.index/vodDetail', {
+ method: 'POST',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ body: {
+ vod_id: ids,
+ }
+ });
+ let html = JSON.parse(html1);
+ const rdata = JSON.parse(AES_Decrypt(html.data));
+ console.log(rdata);
+ const data = {
+ vod_id: ids,
+ vod_name: rdata.vod.vod_name,
+ vod_remarks: rdata.vod.vod_remarks,
+ vod_actor: rdata.vod.vod_actor,
+ vod_director: rdata.vod.vod_director,
+ vod_content: rdata.vod.vod_content,
+ vod_play_from: '',
+ vod_play_url: ''
+ };
+
+ rdata.vod_play_list.forEach((value) => {
+ data.vod_play_from += value.player_info.show + '$$$';
+ value.urls.forEach((v) => {
+ data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#';
+ });
+ data.vod_play_url += '$$$';
+ });
+ return data;
+}
+//搜索
+globalThis.ssvod = function(wd) {
+ var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', {
+ method: 'POST',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ body: {
+ keywords: wd,
+ typepage_id: 1,
+ }
+ });
+ let html = JSON.parse(html1);
+ return AES_Decrypt(html.data);
+}
+//解析
+globalThis.jxx = function(id, url, name, juji) {
+ try {
+ if (id.includes('xmflv')) {
+ return {
+ parse: 1,
+ url: id + url,
+ jx: 0,
+ danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
+ };
+ }
+ //log(id);
+ if (url.includes('m3u8')) {
+ return {
+ parse: 0,
+ url: url,
+ jx: 1,
+ danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
+ };
+ }
+ if (id.includes('http')) {
+ let purl = JSON.parse(request(id + url)).url;
+ return {
+ parse: 0,
+ url: purl,
+ jx: 0,
+ danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
+ };
+ }
+ let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', {
+ method: 'POST',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ body: {
+ parse_api: id,
+ url: AES_Encrypt(url),
+ }
+ });
+ let html = AES_Decrypt(JSON.parse(html1).data);
+ console.log(html1);
+ let decry = html.replace(/\n/g, '').replace(/\\/g, '');
+ let matches = decry.match(/"url":"([^"]+)"/);
+ if (!matches || matches[1] === null) {
+ matches = decry.match(/"url": "([^"]+)"/);
+ }
+ return {
+ parse: 0,
+ url: matches[1],
+ jx: 0,
+ danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
+ };
+ } catch {
+ return {
+ parse: 0,
+ url: '解析失败',
+ jx: 0
+ };
+ }
+}
+
+var rule = {
+ title: '米兔[资]',
+ host: '',
+ detailUrl: 'fyid',
+ searchUrl: '**',
+ url: 'fyclass',
+ searchable: 2,
+ quickSearch: 1,
+ filterable: 0,
+ class_name: '电影&电视剧&综艺&动漫',
+ class_url: '1&2&3&4',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ const parts = input.split('~');
+ input = jxx(parts[0], parts[1], parts[2], parts[3]);
+ }),
+ 推荐: $js.toString(() => {
+ let data = vod1(0, 0);
+ let bata = JSON.parse(data).recommend_list;
+ bata.forEach(it => {
+ d.push({
+ url: it.vod_id,
+ title: it.vod_name,
+ img: it.vod_pic,
+ desc: it.vod_remarks
+ });
+ });
+ setResult(d);
+ }),
+ 一级: $js.toString(() => {
+ let data = vod1(input, MY_PAGE);
+ let bata = JSON.parse(data).recommend_list;
+ bata.forEach(it => {
+ d.push({
+ url: it.vod_id,
+ title: it.vod_name,
+ img: it.vod_pic,
+ desc: it.vod_remarks
+ });
+ });
+ setResult(d);
+ }),
+ 二级: $js.toString(() => {
+ console.log("调试信息2" + input);
+ let data = vodids(input);
+ //console.log(data);
+ VOD = data;
+ }),
+ 搜索: $js.toString(() => {
+ let data = ssvod(input);
+ let bata = JSON.parse(data).search_list;
+ bata.forEach(it => {
+ d.push({
+ url: it.vod_id,
+ title: it.vod_name,
+ img: it.vod_pic,
+ desc: it.vod_remarks
+ });
+ });
+ // console.log(data);
+ setResult(d);
+ }),
+}
\ No newline at end of file
diff --git a/JS/素白白.js b/JS/素白白.js
new file mode 100644
index 0000000..56b25c7
--- /dev/null
+++ b/JS/素白白.js
@@ -0,0 +1,743 @@
+// 地址发布页 https://subaibai.vip/
+// 搜索数字验证
+var rule = {
+ title: '素白白',
+ // host:'https://www.subaibaiys.com',
+ host: 'https://subaibai.vip',
+ hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,".go:eq(0)&&a&&href");print(src);HOST=src', //网页域名根动态抓取js代码。通过HOST=赋值
+ // url:'/fyclass/page/fypage',
+ url: '/fyclassfyfilter',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '{{fl.area}}{{fl.year}}{{fl.class}}{{fl.cateId}}/page/fypage',
+ filter: {
+ "movie_bt": [{
+ "key": "cateId",
+ "name": "分类",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "v": "/movie_bt_series/dongmanju",
+ "n": "动漫剧"
+ }, {
+ "v": "/movie_bt_series/dongmandy",
+ "n": "动漫电影"
+ }, {
+ "v": "/movie_bt_series/yindudy",
+ "n": "印度电影"
+ }, {
+ "v": "/movie_bt_series/guochanju",
+ "n": "国产剧"
+ }, {
+ "v": "/movie_bt_series/guochandy",
+ "n": "国产电影"
+ }, {
+ "v": "/movie_bt_series/riju",
+ "n": "日剧"
+ }, {
+ "v": "/movie_bt_series/rihandy",
+ "n": "日韩电影"
+ }, {
+ "v": "/movie_bt_series/oumeiju",
+ "n": "欧美剧"
+ }, {
+ "v": "/movie_bt_series/oumeidy",
+ "n": "欧美电影"
+ }, {
+ "v": "/movie_bt_series/taiju",
+ "n": "泰剧"
+ }, {
+ "v": "/movie_bt_series/thaidy",
+ "n": "泰国电影"
+ }, {
+ "v": "/movie_bt_series/gangju",
+ "n": "港台剧"
+ }, {
+ "v": "/movie_bt_series/gangtaidy",
+ "n": "港台电影"
+ }, {
+ "v": "/movie_bt_series/documentary",
+ "n": "纪录片"
+ }, {
+ "v": "/movie_bt_series/zongyi",
+ "n": "综艺"
+ }, {
+ "v": "/movie_bt_series/hanju",
+ "n": "韩剧"
+ }, {
+ "v": "/movie_bt_series/xianggangdy",
+ "n": "香港经典电影"
+ }]
+ }, {
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "v": "/movie_bt_tags/pop-popular",
+ "n": "POP流行"
+ }, {
+ "v": "/movie_bt_tags/biography",
+ "n": "传记"
+ }, {
+ "v": "/movie_bt_tags/child",
+ "n": "儿童"
+ }, {
+ "v": "/movie_bt_tags/adventure",
+ "n": "冒险"
+ }, {
+ "v": "/movie_bt_tags/plot",
+ "n": "剧情"
+ }, {
+ "v": "/movie_bt_tags/action",
+ "n": "动作"
+ }, {
+ "v": "/movie_bt_tags/anime",
+ "n": "动漫"
+ }, {
+ "v": "/movie_bt_tags/animation",
+ "n": "动画"
+ }, {
+ "v": "/movie_bt_tags/history",
+ "n": "历史"
+ }, {
+ "v": "/movie_bt_tags/costume",
+ "n": "古装"
+ }, {
+ "v": "/movie_bt_tags/antiquity",
+ "n": "古风"
+ }, {
+ "v": "/movie_bt_tags/homosexual",
+ "n": "同性"
+ }, {
+ "v": "/movie_bt_tags/comedy",
+ "n": "喜剧"
+ }, {
+ "v": "/movie_bt_tags/fantasy",
+ "n": "奇幻"
+ }, {
+ "v": "/movie_bt_tags/family",
+ "n": "家庭"
+ }, {
+ "v": "/movie_bt_tags/terror",
+ "n": "恐怖"
+ }, {
+ "v": "/movie_bt_tags/suspense",
+ "n": "悬疑"
+ }, {
+ "v": "/movie_bt_tags/erotic",
+ "n": "情色"
+ }, {
+ "v": "/movie_bt_tags/thriller",
+ "n": "惊悚"
+ }, {
+ "v": "/movie_bt_tags/drama",
+ "n": "戏曲"
+ }, {
+ "v": "/movie_bt_tags/war",
+ "n": "战争"
+ }, {
+ "v": "/movie_bt_tags/latin",
+ "n": "拉丁"
+ }, {
+ "v": "/movie_bt_tags/funny",
+ "n": "搞笑"
+ }, {
+ "v": "/movie_bt_tags/campus",
+ "n": "校园"
+ }, {
+ "v": "/movie_bt_tags/song-and-dance",
+ "n": "歌舞"
+ }, {
+ "v": "/movie_bt_tags/martial-arts",
+ "n": "武侠"
+ }, {
+ "v": "/movie_bt_tags/disaster",
+ "n": "灾难"
+ }, {
+ "v": "/movie_bt_tags/love",
+ "n": "爱情"
+ }, {
+ "v": "/movie_bt_tags/crime",
+ "n": "犯罪"
+ }, {
+ "v": "/movie_bt_tags/fancy",
+ "n": "玄幻"
+ }, {
+ "v": "/movie_bt_tags/reality-show",
+ "n": "真人秀"
+ }, {
+ "v": "/movie_bt_tags/short-film",
+ "n": "短片"
+ }, {
+ "v": "/movie_bt_tags/kehuan",
+ "n": "科幻"
+ }, {
+ "v": "/movie_bt_tags/documentary",
+ "n": "纪录片"
+ }, {
+ "v": "/movie_bt_tags/talkshow",
+ "n": "脱口秀"
+ }, {
+ "v": "/movie_bt_tags/stageart",
+ "n": "舞台艺术"
+ }, {
+ "v": "/movie_bt_tags/west",
+ "n": "西部"
+ }, {
+ "v": "/movie_bt_tags/sport",
+ "n": "运动"
+ }, {
+ "v": "/movie_bt_tags/youth",
+ "n": "青春"
+ }, {
+ "v": "/movie_bt_tags/music",
+ "n": "音乐"
+ }, {
+ "v": "/movie_bt_tags/ghost",
+ "n": "鬼怪"
+ }, {
+ "v": "/movie_bt_tags/black-film",
+ "n": "黑色电影"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "v": "/movie_bt_cat/bhutan",
+ "n": "不丹"
+ }, {
+ "v": "/movie_bt_cat/china",
+ "n": "中国"
+ }, {
+ "v": "/movie_bt_cat/china-taiwan",
+ "n": "中国台湾"
+ }, {
+ "v": "/movie_bt_cat/china-mainland",
+ "n": "中国大陆"
+ }, {
+ "v": "/movie_bt_cat/china-hongkong",
+ "n": "中国香港"
+ }, {
+ "v": "/movie_bt_cat/denmark",
+ "n": "丹麦"
+ }, {
+ "v": "/movie_bt_cat/ukraine",
+ "n": "乌克兰"
+ }, {
+ "v": "/movie_bt_cat/uruguay",
+ "n": "乌拉圭"
+ }, {
+ "v": "/movie_bt_cat/israel",
+ "n": "以色列"
+ }, {
+ "v": "/movie_bt_cat/iraq",
+ "n": "伊拉克"
+ }, {
+ "v": "/movie_bt_cat/iran",
+ "n": "伊朗"
+ }, {
+ "v": "/movie_bt_cat/russia",
+ "n": "俄罗斯"
+ }, {
+ "v": "/movie_bt_cat/bulgaria",
+ "n": "保加利亚"
+ }, {
+ "v": "/movie_bt_cat/croatia",
+ "n": "克罗地亚"
+ }, {
+ "v": "/movie_bt_cat/iceland",
+ "n": "冰岛"
+ }, {
+ "v": "/movie_bt_cat/canada",
+ "n": "加拿大"
+ }, {
+ "v": "/movie_bt_cat/hungary",
+ "n": "匈牙利"
+ }, {
+ "v": "/movie_bt_cat/south-africa",
+ "n": "南非"
+ }, {
+ "v": "/movie_bt_cat/botswana",
+ "n": "博茨瓦纳"
+ }, {
+ "v": "/movie_bt_cat/qatar",
+ "n": "卡塔尔"
+ }, {
+ "v": "/movie_bt_cat/luxembourg",
+ "n": "卢森堡"
+ }, {
+ "v": "/movie_bt_cat/india",
+ "n": "印度"
+ }, {
+ "v": "/movie_bt_cat/indonesia",
+ "n": "印度尼西亚"
+ }, {
+ "v": "/movie_bt_cat/kazakhstan",
+ "n": "哈萨克斯坦"
+ }, {
+ "v": "/movie_bt_cat/colombia",
+ "n": "哥伦比亚"
+ }, {
+ "v": "/movie_bt_cat/turkey",
+ "n": "土耳其"
+ }, {
+ "v": "/movie_bt_cat/serbia",
+ "n": "塞尔维亚"
+ }, {
+ "v": "/movie_bt_cat/cyprus",
+ "n": "塞浦路斯"
+ }, {
+ "v": "/movie_bt_cat/mexico",
+ "n": "墨西哥"
+ }, {
+ "v": "/movie_bt_cat/dominica",
+ "n": "多米尼加"
+ }, {
+ "v": "/movie_bt_cat/austria",
+ "n": "奥地利"
+ }, {
+ "v": "/movie_bt_cat/venezuela",
+ "n": "委内瑞拉"
+ }, {
+ "v": "/movie_bt_cat/nigeria",
+ "n": "尼日利亚"
+ }, {
+ "v": "/movie_bt_cat/巴基斯坦",
+ "n": "巴基斯坦"
+ }, {
+ "v": "/movie_bt_cat/paraguay",
+ "n": "巴拉圭"
+ }, {
+ "v": "/movie_bt_cat/brazil",
+ "n": "巴西"
+ }, {
+ "v": "/movie_bt_cat/greece",
+ "n": "希腊"
+ }, {
+ "v": "/movie_bt_cat/germany",
+ "n": "德国"
+ }, {
+ "v": "/movie_bt_cat/italy",
+ "n": "意大利"
+ }, {
+ "v": "/movie_bt_cat/latvia",
+ "n": "拉脱维亚"
+ }, {
+ "v": "/movie_bt_cat/norway",
+ "n": "挪威"
+ }, {
+ "v": "/movie_bt_cat/chech",
+ "n": "捷克"
+ }, {
+ "v": "/movie_bt_cat/摩洛哥",
+ "n": "摩洛哥"
+ }, {
+ "v": "/movie_bt_cat/斯洛伐克",
+ "n": "斯洛伐克"
+ }, {
+ "v": "/movie_bt_cat/slovenia",
+ "n": "斯洛文尼亚"
+ }, {
+ "v": "/movie_bt_cat/singapore",
+ "n": "新加坡"
+ }, {
+ "v": "/movie_bt_cat/zealand",
+ "n": "新西兰"
+ }, {
+ "v": "/movie_bt_cat/japan",
+ "n": "日本"
+ }, {
+ "v": "/movie_bt_cat/chile",
+ "n": "智利"
+ }, {
+ "v": "/movie_bt_cat/north-korea",
+ "n": "朝鲜"
+ }, {
+ "v": "/movie_bt_cat/cambodia",
+ "n": "柬埔寨"
+ }, {
+ "v": "/movie_bt_cat/georgia",
+ "n": "格鲁吉亚"
+ }, {
+ "v": "/movie_bt_cat/belgium",
+ "n": "比利时"
+ }, {
+ "v": "/movie_bt_cat/saudi-arabia",
+ "n": "沙特阿拉伯"
+ }, {
+ "v": "/movie_bt_cat/france",
+ "n": "法国"
+ }, {
+ "v": "/movie_bt_cat/poland",
+ "n": "波兰"
+ }, {
+ "v": "/movie_bt_cat/puertorco",
+ "n": "波多黎各"
+ }, {
+ "v": "/movie_bt_cat/bohei",
+ "n": "波黑"
+ }, {
+ "v": "/movie_bt_cat/thailand",
+ "n": "泰国"
+ }, {
+ "v": "/movie_bt_cat/australia",
+ "n": "澳大利亚"
+ }, {
+ "v": "/movie_bt_cat/ireland",
+ "n": "爱尔兰"
+ }, {
+ "v": "/movie_bt_cat/estonia",
+ "n": "爱沙尼亚"
+ }, {
+ "v": "/movie_bt_cat/sweden",
+ "n": "瑞典"
+ }, {
+ "v": "/movie_bt_cat/switzerland",
+ "n": "瑞士"
+ }, {
+ "v": "/movie_bt_cat/belarus",
+ "n": "白俄罗斯"
+ }, {
+ "v": "/movie_bt_cat/peru",
+ "n": "秘鲁"
+ }, {
+ "v": "/movie_bt_cat/tunisia",
+ "n": "突尼斯"
+ }, {
+ "v": "/movie_bt_cat/lithuania",
+ "n": "立陶宛"
+ }, {
+ "v": "/movie_bt_cat/romania",
+ "n": "罗马尼亚"
+ }, {
+ "v": "/movie_bt_cat/america",
+ "n": "美国"
+ }, {
+ "v": "/movie_bt_cat/finland",
+ "n": "芬兰"
+ }, {
+ "v": "/movie_bt_cat/sovietunion",
+ "n": "苏联"
+ }, {
+ "v": "/movie_bt_cat/england",
+ "n": "英国"
+ }, {
+ "v": "/movie_bt_cat/netherlands",
+ "n": "荷兰"
+ }, {
+ "v": "/movie_bt_cat/philippines",
+ "n": "菲律宾"
+ }, {
+ "v": "/movie_bt_cat/葡萄牙",
+ "n": "葡萄牙"
+ }, {
+ "v": "/movie_bt_cat/west-germany",
+ "n": "西德"
+ }, {
+ "v": "/movie_bt_cat/spain",
+ "n": "西班牙"
+ }, {
+ "v": "/movie_bt_cat/vietnam",
+ "n": "越南"
+ }, {
+ "v": "/movie_bt_cat/argentina",
+ "n": "阿根廷"
+ }, {
+ "v": "/movie_bt_cat/korea",
+ "n": "韩国"
+ }, {
+ "v": "/movie_bt_cat/malaysia",
+ "n": "马来西亚"
+ }, {
+ "v": "/movie_bt_cat/马耳他",
+ "n": "马耳他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "v": "/year/2024",
+ "n": "2024"
+ }, {
+ "v": "/year/2023",
+ "n": "2023"
+ }, {
+ "v": "/year/2022",
+ "n": "2022"
+ }, {
+ "v": "/year/2021",
+ "n": "2021"
+ }, {
+ "v": "/year/2020",
+ "n": "2020"
+ }, {
+ "v": "/year/2019",
+ "n": "2019"
+ }, {
+ "v": "/year/2018",
+ "n": "2018"
+ }, {
+ "v": "/year/2017",
+ "n": "2017"
+ }, {
+ "v": "/year/2016",
+ "n": "2016"
+ }, {
+ "v": "/year/2015",
+ "n": "2015"
+ }, {
+ "v": "/year/2014",
+ "n": "2014"
+ }, {
+ "v": "/year/2013",
+ "n": "2013"
+ }, {
+ "v": "/year/2012",
+ "n": "2012"
+ }, {
+ "v": "/year/2011",
+ "n": "2011"
+ }, {
+ "v": "/year/2010",
+ "n": "2010"
+ }, {
+ "v": "/year/2009",
+ "n": "2009"
+ }, {
+ "v": "/year/2008",
+ "n": "2008"
+ }, {
+ "v": "/year/2007",
+ "n": "2007"
+ }, {
+ "v": "/year/2006",
+ "n": "2006"
+ }, {
+ "v": "/year/2005",
+ "n": "2005"
+ }, {
+ "v": "/year/2004",
+ "n": "2004"
+ }, {
+ "v": "/year/2003",
+ "n": "2003"
+ }, {
+ "v": "/year/2002",
+ "n": "2002"
+ }, {
+ "v": "/year/2001",
+ "n": "2001"
+ }, {
+ "v": "/year/2000",
+ "n": "2000"
+ }, {
+ "v": "/year/1999",
+ "n": "1999"
+ }, {
+ "v": "/year/1998",
+ "n": "1998"
+ }, {
+ "v": "/year/1997",
+ "n": "1997"
+ }, {
+ "v": "/year/1996",
+ "n": "1996"
+ }, {
+ "v": "/year/1995",
+ "n": "1995"
+ }, {
+ "v": "/year/1994",
+ "n": "1994"
+ }, {
+ "v": "/year/1993",
+ "n": "1993"
+ }, {
+ "v": "/year/1992",
+ "n": "1992"
+ }, {
+ "v": "/year/1991",
+ "n": "1991"
+ }, {
+ "v": "/year/1990",
+ "n": "1990"
+ }, {
+ "v": "/year/1989",
+ "n": "1989"
+ }, {
+ "v": "/year/1988",
+ "n": "1988"
+ }, {
+ "v": "/year/1987",
+ "n": "1987"
+ }, {
+ "v": "/year/1986",
+ "n": "1986"
+ }, {
+ "v": "/year/1985",
+ "n": "1985"
+ }, {
+ "v": "/year/1984",
+ "n": "1984"
+ }, {
+ "v": "/year/1983",
+ "n": "1983"
+ }, {
+ "v": "/year/1982",
+ "n": "1982"
+ }, {
+ "v": "/year/1981",
+ "n": "1981"
+ }, {
+ "v": "/year/1980",
+ "n": "1980"
+ }, {
+ "v": "/year/1979",
+ "n": "1979"
+ }, {
+ "v": "/year/1978",
+ "n": "1978"
+ }, {
+ "v": "/year/1977",
+ "n": "1977"
+ }, {
+ "v": "/year/1976",
+ "n": "1976"
+ }, {
+ "v": "/year/1975",
+ "n": "1975"
+ }, {
+ "v": "/year/1974",
+ "n": "1974"
+ }, {
+ "v": "/year/1973",
+ "n": "1973"
+ }, {
+ "v": "/year/1972",
+ "n": "1972"
+ }, {
+ "v": "/year/1971",
+ "n": "1971"
+ }, {
+ "v": "/year/1970",
+ "n": "1970"
+ }, {
+ "v": "/year/1969",
+ "n": "1969"
+ }, {
+ "v": "/year/1968",
+ "n": "1968"
+ }, {
+ "v": "/year/1967",
+ "n": "1967"
+ }, {
+ "v": "/year/1966",
+ "n": "1966"
+ }, {
+ "v": "/year/1965",
+ "n": "1965"
+ }, {
+ "v": "/year/1964",
+ "n": "1964"
+ }, {
+ "v": "/year/1963",
+ "n": "1963"
+ }, {
+ "v": "/year/1962",
+ "n": "1962"
+ }, {
+ "v": "/year/1960",
+ "n": "1960"
+ }, {
+ "v": "/year/1959",
+ "n": "1959"
+ }, {
+ "v": "/year/1954",
+ "n": "1954"
+ }, {
+ "v": "/year/1952",
+ "n": "1952"
+ }, {
+ "v": "/year/1950",
+ "n": "1950"
+ }, {
+ "v": "/year/1949",
+ "n": "1949"
+ }, {
+ "v": "/year/1948",
+ "n": "1948"
+ }, {
+ "v": "/year/1940",
+ "n": "1940"
+ }, {
+ "v": "/year/1939",
+ "n": "1939"
+ }, {
+ "v": "/year/1925",
+ "n": "1925"
+ }]
+ }]
+ },
+ // searchUrl:'/search?q=**',
+ searchUrl: '/search?q=**',
+ searchable: 2, //是否启用全局搜索,
+ quickSearch: 0, //是否启用快速搜索,
+ headers: {
+ 'User-Agent': 'UC_UA',
+ },
+ class_parse: '.navlist&&li;a&&Text;a&&href;.*/([^/]+)',
+ play_parse: true,
+ // lazy:'',
+ lazy: `js:
+ pdfh = jsp.pdfh;
+ var html = request(input);
+ var ohtml = pdfh(html, '.videoplay&&Html');
+ var url = pdfh(ohtml, "body&&iframe&&src");
+ if (/Cloud/.test(url)) {
+ var ifrwy = request(url);
+ let code = ifrwy.match(/var url = '(.*?)'/)[1].split('').reverse().join('');
+ let temp = '';
+ for (let i = 0x0; i < code.length; i = i + 0x2) {
+ temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10))
+ }
+ input = {
+ jx: 0,
+ url: temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7),
+ parse: 0
+ }
+ } else if (/decrypted/.test(ohtml)) {
+ var phtml = pdfh(ohtml, "body&&script:not([src])&&Html");
+ eval(getCryptoJS());
+ var scrpt = phtml.match(/var.*?\\)\\);/g)[0];
+ var data = [];
+ eval(scrpt.replace(/md5/g, 'CryptoJS').replace('eval', 'data = '));
+ input = {
+ jx: 0,
+ url: data.match(/url:.*?[\\'\\"](.*?)[\\'\\"]/)[1],
+ parse: 0
+ }
+ } else {
+ input
+ }
+ `,
+ limit: 6,
+ 推荐: '.leibox&&li;*;*;*;*',
+ // double:true, // 推荐内容是否双层定位
+ 一级: '.mrb&&li;img&&alt;img&&data-original;.jidi&&Text;a&&href',
+ 二级: {
+ "title": "h1&&Text;.moviedteail_list&&li:eq(0)&&Text",
+ "img": ".dyimg&&img&&src",
+ "desc": ".moviedteail_list&&li:eq(-1)&&Text;;;.moviedteail_list&&li:eq(7)&&Text;.moviedteail_list&&li:eq(5)&&Text",
+ "content": ".yp_context&&p&&Text",
+ "tabs": ".mi_paly_box .ypxingq_t--span",
+ "lists": ".paly_list_btn:eq(#id) a"
+ },
+ 搜索: '.search_list&&li;img&&alt;img&&data-original;.nostag&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JS/腾讯弹幕.js b/JS/腾讯弹幕.js
new file mode 100644
index 0000000..a3ebd8a
--- /dev/null
+++ b/JS/腾讯弹幕.js
@@ -0,0 +1,842 @@
+var rule = {
+ title: '腾云驾雾[官]',
+ host: 'https://v.%71%71.com',
+ // homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=choice&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18',
+ homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=cartoon&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18',
+ detailUrl: 'https://node.video.%71%71.com/x/api/float_vinfo2?cid=fyid',
+ searchUrl: '/x/search/?q=**&stag=fypage',
+ searchUrl: 'https://pbaccess.video.%71%71.com/trpc.videosearch.smartboxServer.HttpRountRecall/Smartbox?query=**&appID=3172&appKey=lGhFIPeD3HsO9xEp&pageNum=(fypage-1)&pageSize=10',
+ searchable: 2,
+ filterable: 1,
+ multi: 1,
+ // url:'/channel/fyclass?listpage=fypage&channel=fyclass&sort=18&_all=1',
+ url: '/x/bu/pagesheet/list?_all=1&append=1&channel=fyclass&listpage=1&offset=((fypage-1)*21)&pagesize=21&iarea=-1',
+ // filter_url: 'sort={{fl.sort or 18}}&year={{fl.year}}&pay={{fl.pay}}',
+ // filter_url: 'sort={{fl.sort or 75}}&year={{fl.year}}&pay={{fl.pay}}',
+ filter_url: 'sort={{fl.sort or 75}}&iyear={{fl.iyear}}&year={{fl.year}}&itype={{fl.type}}&ifeature={{fl.feature}}&iarea={{fl.area}}&itrailer={{fl.itrailer}}&gender={{fl.sex}}',
+ // filter: 'H4sIAAAAAAAAA+2UzUrDQBCA32XOEZLUJrGvIj0saaDBNisxBkIJCG3Fi4oepIg3EQoieqiH+vM23Zq+hRuaZLZ4ce9z2/lmd2d2+NgR+H0e+gF0DkdwFGTQgRMeJ2BAxIaSwvrqVnxcyzhlg9PttqjED2c/45cSy8DyIDcavr57q/lBw8XTd/E6qbnT8M3zTFyc72RtC/Jumd+2c8wy7KZ4nxSL5Z9uxHS+Gc+r83sWVp1eVttl4Dluk1h93YubWZVwduplAYuxoFguVp+P/y5om/Z+/YxyqfAW8pbKbeS2yi3kO/ebyE2Fy1nXXBm7DDzknspd5K7KHeSOytvI2+XAugYkKWlD2mhrM+RpSB8OmaNvTsriMEgycofc0XbHZ3HCeUTukDv67vTDQY/MIXO0zelxn5M4JI6mOPkvgswSEpgPAAA=',
+ filter: {
+ "choice": [{
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最热",
+ "v": "75"
+ }, {
+ "n": "最新",
+ "v": "83"
+ }, {
+ "n": "好评",
+ "v": "81"
+ }]
+ }, {
+ "key": "iyear",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }]
+ }],
+ "tv": [{
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最热",
+ "v": "75"
+ }, {
+ "n": "最新",
+ "v": "79"
+ }, {
+ "n": "好评",
+ "v": "16"
+ }]
+ }, {
+ "key": "feature",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "爱情",
+ "v": "1"
+ }, {
+ "n": "古装",
+ "v": "2"
+ }, {
+ "n": "悬疑",
+ "v": "3"
+ }, {
+ "n": "都市",
+ "v": "4"
+ }, {
+ "n": "家庭",
+ "v": "5"
+ }, {
+ "n": "喜剧",
+ "v": "6"
+ }, {
+ "n": "传奇",
+ "v": "7"
+ }, {
+ "n": "武侠",
+ "v": "8"
+ }, {
+ "n": "军旅",
+ "v": "9"
+ }, {
+ "n": "权谋",
+ "v": "10"
+ }, {
+ "n": "革命",
+ "v": "11"
+ }, {
+ "n": "现实",
+ "v": "13"
+ }, {
+ "n": "青春",
+ "v": "14"
+ }, {
+ "n": "猎奇",
+ "v": "15"
+ }, {
+ "n": "科幻",
+ "v": "16"
+ }, {
+ "n": "竞技",
+ "v": "17"
+ }, {
+ "n": "玄幻",
+ "v": "18"
+ }]
+ }, {
+ "key": "iyear",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }]
+ }],
+ "movie": [{
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最热",
+ "v": "75"
+ }, {
+ "n": "最新",
+ "v": "83"
+ }, {
+ "n": "好评",
+ "v": "81"
+ }]
+ }, {
+ "key": "type",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "犯罪",
+ "v": "4"
+ }, {
+ "n": "励志",
+ "v": "2"
+ }, {
+ "n": "喜剧",
+ "v": "100004"
+ }, {
+ "n": "热血",
+ "v": "100061"
+ }, {
+ "n": "悬疑",
+ "v": "100009"
+ }, {
+ "n": "爱情",
+ "v": "100005"
+ }, {
+ "n": "科幻",
+ "v": "100012"
+ }, {
+ "n": "恐怖",
+ "v": "100010"
+ }, {
+ "n": "动画",
+ "v": "100015"
+ }, {
+ "n": "战争",
+ "v": "100006"
+ }, {
+ "n": "家庭",
+ "v": "100017"
+ }, {
+ "n": "剧情",
+ "v": "100022"
+ }, {
+ "n": "奇幻",
+ "v": "100016"
+ }, {
+ "n": "武侠",
+ "v": "100011"
+ }, {
+ "n": "历史",
+ "v": "100021"
+ }, {
+ "n": "老片",
+ "v": "100013"
+ }, {
+ "n": "西部",
+ "v": "3"
+ }, {
+ "n": "记录片",
+ "v": "100020"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }]
+ }],
+ "variety": [{
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最热",
+ "v": "75"
+ }, {
+ "n": "最新",
+ "v": "23"
+ }]
+ }, {
+ "key": "iyear",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }]
+ }],
+ "cartoon": [{
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最热",
+ "v": "75"
+ }, {
+ "n": "最新",
+ "v": "83"
+ }, {
+ "n": "好评",
+ "v": "81"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "内地",
+ "v": "1"
+ }, {
+ "n": "日本",
+ "v": "2"
+ }, {
+ "n": "欧美",
+ "v": "3"
+ }, {
+ "n": "其他",
+ "v": "4"
+ }]
+ }, {
+ "key": "type",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "玄幻",
+ "v": "9"
+ }, {
+ "n": "科幻",
+ "v": "4"
+ }, {
+ "n": "武侠",
+ "v": "13"
+ }, {
+ "n": "冒险",
+ "v": "3"
+ }, {
+ "n": "战斗",
+ "v": "5"
+ }, {
+ "n": "搞笑",
+ "v": "1"
+ }, {
+ "n": "恋爱",
+ "v": "7"
+ }, {
+ "n": "魔幻",
+ "v": "6"
+ }, {
+ "n": "竞技",
+ "v": "20"
+ }, {
+ "n": "悬疑",
+ "v": "17"
+ }, {
+ "n": "日常",
+ "v": "15"
+ }, {
+ "n": "校园",
+ "v": "16"
+ }, {
+ "n": "真人",
+ "v": "18"
+ }, {
+ "n": "推理",
+ "v": "14"
+ }, {
+ "n": "历史",
+ "v": "19"
+ }, {
+ "n": "经典",
+ "v": "3"
+ }, {
+ "n": "其他",
+ "v": "12"
+ }]
+ }, {
+ "key": "iyear",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }]
+ }],
+ "child": [{
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最热",
+ "v": "75"
+ }, {
+ "n": "最新",
+ "v": "76"
+ }, {
+ "n": "好评",
+ "v": "20"
+ }]
+ }, {
+ "key": "sex",
+ "name": "性别",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "女孩",
+ "v": "1"
+ }, {
+ "n": "男孩",
+ "v": "2"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "内地",
+ "v": "3"
+ }, {
+ "n": "日本",
+ "v": "2"
+ }, {
+ "n": "其他",
+ "v": "1"
+ }]
+ }, {
+ "key": "iyear",
+ "name": "年龄段",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "0-3岁",
+ "v": "1"
+ }, {
+ "n": "4-6岁",
+ "v": "2"
+ }, {
+ "n": "7-9岁",
+ "v": "3"
+ }, {
+ "n": "10岁以上",
+ "v": "4"
+ }, {
+ "n": "全年龄段",
+ "v": "7"
+ }]
+ }],
+ "doco": [{
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最热",
+ "v": "75"
+ }, {
+ "n": "最新",
+ "v": "74"
+ }]
+ }, {
+ "key": "itrailer",
+ "name": "出品方",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "BBC",
+ "v": "1"
+ }, {
+ "n": "国家地理",
+ "v": "4"
+ }, {
+ "n": "HBO",
+ "v": "3175"
+ }, {
+ "n": "NHK",
+ "v": "2"
+ }, {
+ "n": "历史频道",
+ "v": "7"
+ }, {
+ "n": "ITV",
+ "v": "3530"
+ }, {
+ "n": "探索频道",
+ "v": "3174"
+ }, {
+ "n": "ZDF",
+ "v": "3176"
+ }, {
+ "n": "腾讯自制",
+ "v": "15"
+ }, {
+ "n": "合作机构",
+ "v": "6"
+ }, {
+ "n": "其他",
+ "v": "5"
+ }]
+ }, {
+ "key": "type",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": "-1"
+ }, {
+ "n": "自然",
+ "v": "4"
+ }, {
+ "n": "美食",
+ "v": "10"
+ }, {
+ "n": "社会",
+ "v": "3"
+ }, {
+ "n": "人文",
+ "v": "6"
+ }, {
+ "n": "历史",
+ "v": "1"
+ }, {
+ "n": "军事",
+ "v": "2"
+ }, {
+ "n": "科技",
+ "v": "8"
+ }, {
+ "n": "财经",
+ "v": "14"
+ }, {
+ "n": "探险",
+ "v": "15"
+ }, {
+ "n": "罪案",
+ "v": "7"
+ }, {
+ "n": "竞技",
+ "v": "12"
+ }, {
+ "n": "旅游",
+ "v": "11"
+ }]
+ }]
+ },
+ headers: {
+ 'User-Agent': 'PC_UA'
+ },
+ timeout: 5000,
+ // class_parse:'.site_channel a;a&&Text;a&&href;channel/(.*)',
+ cate_exclude: '会员|游戏|全部',
+ // class_name: '精选&电视剧&电影&综艺&动漫&少儿&纪录片',
+ // class_url: 'choice&tv&movie&variety&cartoon&child&doco',
+ class_name: '精选&电影&电视剧&综艺&动漫&少儿&纪录片',
+ class_url: 'choice&movie&tv&variety&cartoon&child&doco',
+ limit: 20,
+ // play_parse:true,
+ // 手动调用解析请求json的url,此lazy不方便
+ play_parse: true,
+ lazy: $js.toString(() => {
+ try {
+ let api = "" + input.split("?")[0];
+ console.log(api);
+ let response = fetch(api, {
+ method: 'get',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ });
+ let bata = JSON.parse(response);
+ if (bata.url.includes("qq")) {
+ input = {
+ parse: 0,
+ url: bata.url,
+ jx: 0,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ } else {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ } catch {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ }),
+ 推荐: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
+ 一级: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
+ 二级: $js.toString(() => {
+ VOD = {};
+ let d = [];
+ let video_list = [];
+ let video_lists = [];
+ let list = [];
+ let QZOutputJson;
+ let html = fetch(input, fetch_params);
+ let sourceId = /get_playsource/.test(input) ? input.match(/id=(\d*?)&/)[1] : input.split("cid=")[1];
+ let cid = sourceId;
+ let detailUrl = "https://v.%71%71.com/detail/m/" + cid + ".html";
+ log("详情页:" + detailUrl);
+ pdfh = jsp.pdfh;
+ pd = jsp.pd;
+ try {
+ let json = JSON.parse(html);
+ VOD = {
+ vod_url: input,
+ vod_name: json.c.title,
+ type_name: json.typ.join(","),
+ vod_actor: json.nam.join(","),
+ vod_year: json.c.year,
+ vod_content: json.c.description,
+ vod_remarks: json.rec,
+ vod_pic: urljoin2(input, json.c.pic)
+ }
+ } catch (e) {
+ log("解析片名海报等基础信息发生错误:" + e.message)
+ }
+ if (/get_playsource/.test(input)) {
+ eval(html);
+ let indexList = QZOutputJson.PlaylistItem.indexList;
+ indexList.forEach(function(it) {
+ let dataUrl = "https://s.video.qq.com/get_playsource?id=" + sourceId + "&plat=2&type=4&data_type=3&range=" + it + "&video_type=10&plname=qq&otype=json";
+ eval(fetch(dataUrl, fetch_params));
+ let vdata = QZOutputJson.PlaylistItem.videoPlayList;
+ vdata.forEach(function(item) {
+ d.push({
+ title: item.title,
+ pic_url: item.pic,
+ desc: item.episode_number + "\t\t\t播放量:" + item.thirdLine,
+ url: item.playUrl
+ })
+ });
+ video_lists = video_lists.concat(vdata)
+ })
+ } else {
+ let json = JSON.parse(html);
+ video_lists = json.c.video_ids;
+ let url = "https://v.qq.com/x/cover/" + sourceId + ".html";
+ if (video_lists.length === 1) {
+ let vid = video_lists[0];
+ url = "https://v.qq.com/x/cover/" + cid + "/" + vid + ".html";
+ d.push({
+ title: "在线播放",
+ url: url
+ })
+ } else if (video_lists.length > 1) {
+ for (let i = 0; i < video_lists.length; i += 30) {
+ video_list.push(video_lists.slice(i, i + 30))
+ }
+ video_list.forEach(function(it, idex) {
+ let o_url = "https://union.video.qq.com/fcgi-bin/data?otype=json&tid=1804&appid=20001238&appkey=6c03bbe9658448a4&union_platform=1&idlist=" + it.join(",");
+ let o_html = fetch(o_url, fetch_params);
+ eval(o_html);
+ QZOutputJson.results.forEach(function(it1) {
+ it1 = it1.fields;
+ let url = "https://v.qq.com/x/cover/" + cid + "/" + it1.vid + ".html";
+ d.push({
+ title: it1.title,
+ pic_url: it1.pic160x90.replace("/160", ""),
+ desc: it1.video_checkup_time,
+ url: url,
+ type: it1.category_map && it1.category_map.length > 1 ? it1.category_map[1] : ""
+ })
+ })
+ })
+ }
+ }
+ let yg = d.filter(function(it) {
+ return it.type && it.type !== "正片"
+ });
+ let zp = d.filter(function(it) {
+ return !(it.type && it.type !== "正片")
+ });
+ VOD.vod_play_from = yg.length < 1 ? "qq" : "qq$$$qq 预告及花絮";
+ VOD.vod_play_url = yg.length < 1 ? d.map(function(it) {
+ return it.title + "$" + it.url
+ }).join("#") : [zp, yg].map(function(it) {
+ return it.map(function(its) {
+ return its.title + "$" + its.url
+ }).join("#")
+ }).join("$$$");
+ }),
+ 搜索: $js.toString(() => {
+ let d = [];
+ pdfa = jsp.pdfa;
+ pdfh = jsp.pdfh;
+ pd = jsp.pd;
+ let html = request(input);
+ let baseList = pdfa(html, "body&&.result_item_v");
+ log(baseList.length);
+ baseList.forEach(function(it) {
+ let longText = pdfh(it, ".result_title&&a&&Text");
+ let shortText = pdfh(it, ".type&&Text");
+ let fromTag = pdfh(it, ".result_source&&Text");
+ let score = pdfh(it, ".figure_info&&Text");
+ let content = pdfh(it, ".desc_text&&Text");
+ // let url = pdfh(it, ".result_title&&a&&href");
+ let url = pdfh(it, "div&&r-data");
+ // log(longText);
+ // log(shortText);
+ // log('url:'+url);
+ let img = pd(it, ".figure_pic&&src");
+ url = "https://node.video.qq.com/x/api/float_vinfo2?cid=" + url.match(/.*\/(.*?)\.html/)[1];
+ log(shortText + "|" + url);
+ if (fromTag.match(/腾讯/)) {
+ d.push({
+ title: longText.split(shortText)[0],
+ img: img,
+ url: url,
+ content: content,
+ desc: shortText + " " + score
+ })
+ }
+ });
+ setResult(d);
+ }),
+ 搜索: $js.toString(() => {
+ let d = [];
+ let html = request(input);
+ let json = JSON.parse(html);
+ if (json.data.smartboxItemList.length > 0) {
+ let cid = json.data.smartboxItemList[0].basicDoc.id;
+ let url = 'https://node.video.qq.com/x/api/float_vinfo2?cid=' + cid;
+ let html1 = request(url);
+ let data = JSON.parse(html1);
+
+ d.push({
+ title: data.c.title,
+ img: data.c.pic,
+ url: url,
+ content: data.c.description,
+ desc: data.rec
+ });
+ }
+ setResult(d);
+ })
+}
\ No newline at end of file
diff --git a/JS/芒果弹幕.js b/JS/芒果弹幕.js
new file mode 100644
index 0000000..3f517be
--- /dev/null
+++ b/JS/芒果弹幕.js
@@ -0,0 +1,843 @@
+var rule = {
+ title: '百忙无果[官]',
+ host: 'https://pianku.api.%6d%67%74%76.com',
+ homeUrl: '',
+ // searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/pc/search/v1?q=**&pn=fypage&pc=10',
+ // 新版接口搜索变成v2并且加了验证,蛋疼
+ // searchUrl: 'https://mobileso.bz.mgtv.com/pc/search/v2?allowedRC=1&src=mgtv&did=cf03b959-6945-4cb6-bcb3-88762459354d×tamp=2024-06-21T15%3A52%3A55Z&signVersion=1&signNonce=8dae67a1fafc4bda984ec8deb47666ad&q=**&pn=fypage&pc=10&corr=1&_support=10000000&signature=4e27fddcd2a1a66d6c1764ed6b74bab7',
+ // 用手机的吧,搞不定这个
+ searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/msite/search/v2?q=**&pn=fypage&pc=10',
+ detailUrl: 'https://pcweb.api.mgtv.com/episode/list?page=1&size=50&video_id=fyid',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ multi: 1,
+ // 分类链接fypage参数支持1个()表达式
+ // https://www.mgtv.com/lib/3?lastp=list_index&kind=a1&year=all&chargeInfo=a1&sort=c2
+ url: '/rider/list/pcweb/v3?platform=pcweb&channelId=fyclass&pn=fypage&pc=80&hudong=1&_support=10000000&kind=a1&area=a1',
+ filter_url: 'year={{fl.year or "all"}}&sort={{fl.sort or "all"}}&chargeInfo={{fl.chargeInfo or "all"}}',
+ headers: {
+ 'User-Agent': 'PC_UA'
+ },
+ timeout: 5000,
+ class_name: '电视剧&电影&综艺&动漫&纪录片&教育&少儿',
+ class_url: '2&3&1&50&51&115&10',
+ filter: {
+ "1": [{
+ "key": "chargeInfo",
+ "name": "付费类型",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "免费",
+ "v": "b1"
+ }, {
+ "n": "vip",
+ "v": "b2"
+ }, {
+ "n": "VIP用券",
+ "v": "b3"
+ }, {
+ "n": "付费点播",
+ "v": "b4"
+ }]
+ }, {
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最新",
+ "v": "c1"
+ }, {
+ "n": "最热",
+ "v": "c2"
+ }, {
+ "n": "知乎高分",
+ "v": "c4"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }],
+ "2": [{
+ "key": "chargeInfo",
+ "name": "付费类型",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "免费",
+ "v": "b1"
+ }, {
+ "n": "vip",
+ "v": "b2"
+ }, {
+ "n": "VIP用券",
+ "v": "b3"
+ }, {
+ "n": "付费点播",
+ "v": "b4"
+ }]
+ }, {
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最新",
+ "v": "c1"
+ }, {
+ "n": "最热",
+ "v": "c2"
+ }, {
+ "n": "知乎高分",
+ "v": "c4"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }],
+ "3": [{
+ "key": "chargeInfo",
+ "name": "付费类型",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "免费",
+ "v": "b1"
+ }, {
+ "n": "vip",
+ "v": "b2"
+ }, {
+ "n": "VIP用券",
+ "v": "b3"
+ }, {
+ "n": "付费点播",
+ "v": "b4"
+ }]
+ }, {
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最新",
+ "v": "c1"
+ }, {
+ "n": "最热",
+ "v": "c2"
+ }, {
+ "n": "知乎高分",
+ "v": "c4"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }],
+ "50": [{
+ "key": "chargeInfo",
+ "name": "付费类型",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "免费",
+ "v": "b1"
+ }, {
+ "n": "vip",
+ "v": "b2"
+ }, {
+ "n": "VIP用券",
+ "v": "b3"
+ }, {
+ "n": "付费点播",
+ "v": "b4"
+ }]
+ }, {
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最新",
+ "v": "c1"
+ }, {
+ "n": "最热",
+ "v": "c2"
+ }, {
+ "n": "知乎高分",
+ "v": "c4"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }],
+ "51": [{
+ "key": "chargeInfo",
+ "name": "付费类型",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "免费",
+ "v": "b1"
+ }, {
+ "n": "vip",
+ "v": "b2"
+ }, {
+ "n": "VIP用券",
+ "v": "b3"
+ }, {
+ "n": "付费点播",
+ "v": "b4"
+ }]
+ }, {
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最新",
+ "v": "c1"
+ }, {
+ "n": "最热",
+ "v": "c2"
+ }, {
+ "n": "知乎高分",
+ "v": "c4"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }],
+ "115": [{
+ "key": "chargeInfo",
+ "name": "付费类型",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "免费",
+ "v": "b1"
+ }, {
+ "n": "vip",
+ "v": "b2"
+ }, {
+ "n": "VIP用券",
+ "v": "b3"
+ }, {
+ "n": "付费点播",
+ "v": "b4"
+ }]
+ }, {
+ "key": "sort",
+ "name": "排序",
+ "value": [{
+ "n": "最新",
+ "v": "c1"
+ }, {
+ "n": "最热",
+ "v": "c2"
+ }, {
+ "n": "知乎高分",
+ "v": "c4"
+ }]
+ }, {
+ "key": "year",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": "all"
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }]
+ },
+ limit: 20,
+ play_parse: true,
+ lazy: $js.toString(() => {
+ try {
+ let api = "" + input.split("?")[0];
+ console.log(api);
+ let response = fetch(api, {
+ method: 'get',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ });
+ let bata = JSON.parse(response);
+ if (bata.url.includes("mgtv")) {
+ input = {
+ parse: 0,
+ url: bata.url,
+ jx: 0,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ } else {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ } catch {
+ input = {
+ parse: 0,
+ url: input.split("?")[0],
+ jx: 1,
+ danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
+ };
+ }
+ }),
+ // 手动调用解析请求json的url,此lazy不方便
+ // lazy:'js:print(input);fetch_params.headers["user-agent"]=MOBILE_UA;let html=request(input);let rurl=html.match(/window\\.open\\(\'(.*?)\',/)[1];rurl=urlDeal(rurl);input={parse:1,url:rurl};',
+ // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
+ 一级: 'json:data.hitDocs;title;img;updateInfo||rightCorner.text;playPartId',
+ // 一级:'json:data.hitDocs;title;img;updateInfo;playPartId',
+ 二级: $js.toString(() => {
+ fetch_params.headers.Referer = "https://www.mgtv.com";
+ fetch_params.headers["User-Agent"] = MOBILE_UA;
+ pdfh = jsp.pdfh;
+ pdfa = jsp.pdfa;
+ pd = jsp.pd;
+ VOD = {};
+ let d = [];
+ let html = request(input);
+ let json = JSON.parse(html);
+ let host = "https://www.mgtv.com";
+ let ourl = json.data.list.length > 0 ? json.data.list[0].url : json.data.series[0].url;
+ if (!/^http/.test(ourl)) {
+ ourl = host + ourl
+ }
+ fetch_params.headers["User-Agent"] = MOBILE_UA;
+ html = request(ourl);
+ if (html.includes("window.location =")) {
+ print("开始获取ourl");
+ ourl = pdfh(html, "meta[http-equiv=refresh]&&content").split("url=")[1];
+ print("获取到ourl:" + ourl);
+ html = request(ourl)
+ }
+ try {
+ let details = pdfh(html, ".m-details&&Html").replace(/h1>/, "h6>").replace(/div/g, "br");
+ print(details);
+ let actor = "",
+ director = "",
+ time = "";
+ if (/播出时间/.test(details)) {
+ actor = pdfh(html, "p:eq(5)&&Text").substr(0, 25);
+ director = pdfh(html, "p:eq(4)&&Text");
+ time = pdfh(html, "p:eq(3)&&Text")
+ } else {
+ actor = pdfh(html, "p:eq(4)&&Text").substr(0, 25);
+ director = pdfh(html, "p:eq(3)&&Text");
+ time = "已完结"
+ }
+ let _img = pd(html, ".video-img&&img&&src");
+ let JJ = pdfh(html, ".desc&&Text").split("简介:")[1];
+ let _desc = time;
+ VOD.vod_name = pdfh(html, ".vt-txt&&Text");
+ VOD.type_name = pdfh(html, "p:eq(0)&&Text").substr(0, 6);
+ VOD.vod_area = pdfh(html, "p:eq(1)&&Text");
+ VOD.vod_actor = actor;
+ VOD.vod_director = director;
+ VOD.vod_remarks = _desc;
+ VOD.vod_pic = _img;
+ VOD.vod_content = JJ;
+ if (!VOD.vod_name) {
+ VOD.vod_name = VOD.type_name;
+ }
+ } catch (e) {
+ log("获取影片信息发生错误:" + e.message)
+ }
+
+ function getRjpg(imgUrl, xs) {
+ xs = xs || 3;
+ let picSize = /jpg_/.test(imgUrl) ? imgUrl.split("jpg_")[1].split(".")[0] : false;
+ let rjpg = false;
+ if (picSize) {
+ let a = parseInt(picSize.split("x")[0]) * xs;
+ let b = parseInt(picSize.split("x")[1]) * xs;
+ rjpg = a + "x" + b + ".jpg"
+ }
+ let img = /jpg_/.test(imgUrl) && rjpg ? imgUrl.replace(imgUrl.split("jpg_")[1], rjpg) : imgUrl;
+ return img
+ }
+
+ if (json.data.total === 1 && json.data.list.length === 1) {
+ let data = json.data.list[0];
+ let url = "https://www.mgtv.com" + data.url;
+ d.push({
+ title: data.t4,
+ desc: data.t2,
+ pic_url: getRjpg(data.img),
+ url: url
+ })
+ } else if (json.data.list.length > 1) {
+ for (let i = 1; i <= json.data.total_page; i++) {
+ if (i > 1) {
+ json = JSON.parse(fetch(input.replace("page=1", "page=" + i), {}))
+ }
+ json.data.list.forEach(function(data) {
+ let url = "https://www.mgtv.com" + data.url;
+ if (data.isIntact == "1") {
+ d.push({
+ title: data.t4,
+ desc: data.t2,
+ pic_url: getRjpg(data.img),
+ url: url
+ })
+ }
+ })
+ }
+ } else {
+ print(input + "暂无片源")
+ }
+ VOD.vod_play_from = "mgtv";
+ VOD.vod_play_url = d.map(function(it) {
+ return it.title + "$" + it.url
+ }).join("#");
+ setResult(d);
+ }),
+
+ 搜索: $js.toString(() => {
+ fetch_params.headers.Referer = "https://www.mgtv.com";
+ fetch_params.headers["User-Agent"] = MOBILE_UA;
+ let d = [];
+ let html = request(input);
+ let json = JSON.parse(html);
+ json.data.contents.forEach(function(data) {
+ if (data.type && data.type == 'media') {
+ let item = data.data[0];
+ let desc = item.desc.join(',');
+ let fyclass = '';
+ if (item.source === "imgo") {
+ let img = item.img ? item.img : '';
+ try {
+ fyclass = item.rpt.match(/idx=(.*?)&/)[1] + '$';
+ } catch (e) {
+ log(e.message);
+ fyclass = '';
+ }
+ log(fyclass);
+ d.push({
+ title: item.title.replace(/|<\/B>/g, ''),
+ img: img,
+ content: '',
+ desc: desc,
+ url: fyclass + item.url.match(/.*\/(.*?)\.html/)[1]
+ })
+ }
+ }
+ });
+ setResult(d);
+ }),
+}
\ No newline at end of file
diff --git a/JS/花子动漫.js b/JS/花子动漫.js
new file mode 100644
index 0000000..f669f44
--- /dev/null
+++ b/JS/花子动漫.js
@@ -0,0 +1,970 @@
+var rule = {
+ title: '花子动漫[漫]',
+ host: 'https://www.huazidm.com',
+ class_name: 'TV动漫&剧场&特摄',
+ class_url: '1&2&3',
+ searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
+ searchUrl: '/vodsearch/**----------fypage---.html',
+ searchable: 2,
+ quickSearch: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ url: '/index.php/api/vod#type=fyclassfyfilter&page=fypage',
+ filterable: 0,
+ filter_url: '&class={{fl.class}}&year={{fl.year}}&letter={{fl.letter}}&by={{fl.by}}',
+ filter: {
+ "1": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "异世界",
+ "v": "异世界"
+ }, {
+ "n": "百合",
+ "v": "百合"
+ }, {
+ "n": "后宫",
+ "v": "后宫"
+ }, {
+ "n": "热血",
+ "v": "热血"
+ }, {
+ "n": "纯爱",
+ "v": "纯爱"
+ }, {
+ "n": "穿越",
+ "v": "穿越"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "战斗",
+ "v": "战斗"
+ }, {
+ "n": "后宫",
+ "v": "后宫"
+ }, {
+ "n": "搞笑",
+ "v": "搞笑"
+ }, {
+ "n": "日常",
+ "v": "日常"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "治愈",
+ "v": "治愈"
+ }, {
+ "n": "校园",
+ "v": "校园"
+ }, {
+ "n": "恋爱",
+ "v": "恋爱"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "推理",
+ "v": "推理"
+ }, {
+ "n": "机战",
+ "v": "机战"
+ }, {
+ "n": "音乐",
+ "v": "音乐"
+ }, {
+ "n": "萝莉",
+ "v": "萝莉"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "惊悚",
+ "v": "惊悚"
+ }, {
+ "n": "泡面番",
+ "v": "泡面番"
+ }, {
+ "n": "游戏改",
+ "v": "游戏改"
+ }, {
+ "n": "小说改",
+ "v": "小说改"
+ }, {
+ "n": "漫画改",
+ "v": "漫画改"
+ }, {
+ "n": "腐",
+ "v": "腐"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000",
+ "v": "2000"
+ }, {
+ "n": "1999",
+ "v": "1999"
+ }, {
+ "n": "1998",
+ "v": "1998"
+ }, {
+ "n": "1997",
+ "v": "1997"
+ }, {
+ "n": "1996",
+ "v": "1996"
+ }, {
+ "n": "1995",
+ "v": "1995"
+ }, {
+ "n": "1994",
+ "v": "1994"
+ }, {
+ "n": "1993",
+ "v": "1993"
+ }, {
+ "n": "1992",
+ "v": "1992"
+ }, {
+ "n": "1991",
+ "v": "1991"
+ }, {
+ "n": "1990",
+ "v": "1990"
+ }, {
+ "n": "1989",
+ "v": "1989"
+ }, {
+ "n": "1988",
+ "v": "1988"
+ }, {
+ "n": "1987",
+ "v": "1987"
+ }, {
+ "n": "1986",
+ "v": "1986"
+ }, {
+ "n": "1985",
+ "v": "1985"
+ }, {
+ "n": "1984",
+ "v": "1984"
+ }, {
+ "n": "1983",
+ "v": "1983"
+ }, {
+ "n": "1982",
+ "v": "1982"
+ }, {
+ "n": "1981",
+ "v": "1981"
+ }, {
+ "n": "1980",
+ "v": "1980"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }, {
+ "n": "0-9",
+ "v": "0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "时间",
+ "value": [{
+ "n": "按最新",
+ "v": "time"
+ }, {
+ "n": "按最热",
+ "v": "hits"
+ }, {
+ "n": "按评分",
+ "v": "score"
+ }]
+ }],
+ "2": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "异世界",
+ "v": "异世界"
+ }, {
+ "n": "百合",
+ "v": "百合"
+ }, {
+ "n": "热血",
+ "v": "热血"
+ }, {
+ "n": "穿越",
+ "v": "穿越"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "战斗",
+ "v": "战斗"
+ }, {
+ "n": "搞笑",
+ "v": "搞笑"
+ }, {
+ "n": "日常",
+ "v": "日常"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "治愈",
+ "v": "治愈"
+ }, {
+ "n": "校园",
+ "v": "校园"
+ }, {
+ "n": "恋爱",
+ "v": "恋爱"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "机战",
+ "v": "机战"
+ }, {
+ "n": "音乐",
+ "v": "音乐"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000",
+ "v": "2000"
+ }, {
+ "n": "1999",
+ "v": "1999"
+ }, {
+ "n": "1998",
+ "v": "1998"
+ }, {
+ "n": "1997",
+ "v": "1997"
+ }, {
+ "n": "1996",
+ "v": "1996"
+ }, {
+ "n": "1995",
+ "v": "1995"
+ }, {
+ "n": "1994",
+ "v": "1994"
+ }, {
+ "n": "1993",
+ "v": "1993"
+ }, {
+ "n": "1992",
+ "v": "1992"
+ }, {
+ "n": "1991",
+ "v": "1991"
+ }, {
+ "n": "1990",
+ "v": "1990"
+ }, {
+ "n": "1989",
+ "v": "1989"
+ }, {
+ "n": "1988",
+ "v": "1988"
+ }, {
+ "n": "1987",
+ "v": "1987"
+ }, {
+ "n": "1986",
+ "v": "1986"
+ }, {
+ "n": "1985",
+ "v": "1985"
+ }, {
+ "n": "1984",
+ "v": "1984"
+ }, {
+ "n": "1983",
+ "v": "1983"
+ }, {
+ "n": "1982",
+ "v": "1982"
+ }, {
+ "n": "1981",
+ "v": "1981"
+ }, {
+ "n": "1980",
+ "v": "1980"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }, {
+ "n": "0-9",
+ "v": "0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "时间",
+ "value": [{
+ "n": "按最新",
+ "v": "time"
+ }, {
+ "n": "按最热",
+ "v": "hits"
+ }, {
+ "n": "按评分",
+ "v": "score"
+ }]
+ }],
+ "3": [{
+ "key": "class",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }, {
+ "n": "2003",
+ "v": "2003"
+ }, {
+ "n": "2002",
+ "v": "2002"
+ }, {
+ "n": "2001",
+ "v": "2001"
+ }, {
+ "n": "2000",
+ "v": "2000"
+ }, {
+ "n": "1999",
+ "v": "1999"
+ }, {
+ "n": "1998",
+ "v": "1998"
+ }, {
+ "n": "1997",
+ "v": "1997"
+ }, {
+ "n": "1996",
+ "v": "1996"
+ }, {
+ "n": "1995",
+ "v": "1995"
+ }, {
+ "n": "1994",
+ "v": "1994"
+ }, {
+ "n": "1993",
+ "v": "1993"
+ }, {
+ "n": "1992",
+ "v": "1992"
+ }, {
+ "n": "1991",
+ "v": "1991"
+ }, {
+ "n": "1990",
+ "v": "1990"
+ }, {
+ "n": "1989",
+ "v": "1989"
+ }, {
+ "n": "1988",
+ "v": "1988"
+ }, {
+ "n": "1987",
+ "v": "1987"
+ }, {
+ "n": "1986",
+ "v": "1986"
+ }, {
+ "n": "1985",
+ "v": "1985"
+ }, {
+ "n": "1984",
+ "v": "1984"
+ }, {
+ "n": "1983",
+ "v": "1983"
+ }, {
+ "n": "1982",
+ "v": "1982"
+ }, {
+ "n": "1981",
+ "v": "1981"
+ }, {
+ "n": "1980",
+ "v": "1980"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "A"
+ }, {
+ "n": "B",
+ "v": "B"
+ }, {
+ "n": "C",
+ "v": "C"
+ }, {
+ "n": "D",
+ "v": "D"
+ }, {
+ "n": "E",
+ "v": "E"
+ }, {
+ "n": "F",
+ "v": "F"
+ }, {
+ "n": "G",
+ "v": "G"
+ }, {
+ "n": "H",
+ "v": "H"
+ }, {
+ "n": "I",
+ "v": "I"
+ }, {
+ "n": "J",
+ "v": "J"
+ }, {
+ "n": "K",
+ "v": "K"
+ }, {
+ "n": "L",
+ "v": "L"
+ }, {
+ "n": "M",
+ "v": "M"
+ }, {
+ "n": "N",
+ "v": "N"
+ }, {
+ "n": "O",
+ "v": "O"
+ }, {
+ "n": "P",
+ "v": "P"
+ }, {
+ "n": "Q",
+ "v": "Q"
+ }, {
+ "n": "R",
+ "v": "R"
+ }, {
+ "n": "S",
+ "v": "S"
+ }, {
+ "n": "T",
+ "v": "T"
+ }, {
+ "n": "U",
+ "v": "U"
+ }, {
+ "n": "V",
+ "v": "V"
+ }, {
+ "n": "W",
+ "v": "W"
+ }, {
+ "n": "X",
+ "v": "X"
+ }, {
+ "n": "Y",
+ "v": "Y"
+ }, {
+ "n": "Z",
+ "v": "Z"
+ }, {
+ "n": "0-9",
+ "v": "0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "时间",
+ "value": [{
+ "n": "按最新",
+ "v": "time"
+ }, {
+ "n": "按最热",
+ "v": "hits"
+ }, {
+ "n": "按评分",
+ "v": "score"
+ }]
+ }]
+ },
+ filter_def: {},
+ detailUrl: '/voddetail/fyid.html',
+ play_parse: true,
+ sniffer: 1,
+ is_video: 'obj/tos|bd.xhscdn|/ugc/',
+ lazy: $js.toString(() => {
+ input = {
+ parse: 1,
+ url: input,
+ //js:'try{let urls=Array.from(document.querySelectorAll("iframe")).filter(x=>x.src.includes("?url="));if(urls){location.href=urls[0].src}}catch{}document.querySelector("button").click()',
+ js: 'try{location.href=document.querySelector("#playleft iframe").src}catch{}document.querySelector("button.swal-button--confirm").click()',
+ parse_extra: '&is_pc=1&custom_regex=' + rule.is_video,
+ }
+ }),
+ limit: 6,
+ 推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
+ 一级: $js.toString(() => {
+ let body = input.split("#")[1];
+ let t = Math.round(new Date / 1e3).toString();
+ let key = md5("DS" + t + "DCC147D11943AF75");
+ let url = input.split("#")[0];
+ body = body + "&time=" + t + "&key=" + key;
+ print(body);
+ fetch_params.body = body;
+ let html = post(url, fetch_params);
+ let data = JSON.parse(html);
+ VODS = data.list.map(function(it) {
+ it.vod_pic = urljoin2(input.split("/i")[0], it.vod_pic);
+ return it
+ });
+ }),
+ 二级: {
+ title: '.slide-info-title&&Text;.slide-info:eq(3)--strong&&Text',
+ img: '.detail-pic&&data-original',
+ desc: '.fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text',
+ content: '#height_limit&&Text',
+ tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a',
+ tab_text: '.swiper-slide&&Text',
+ lists: '.anthology-list-box:eq(#id) li',
+ },
+ 搜索: 'json:list;name;pic;;id',
+ 搜索: $js.toString(() => {
+ let html = fetch(input);
+ let list = pdfa(html, ".public-list-box");
+ VODS = list.map(x => {
+ return {
+ vod_name: pdfh(x, ".thumb-txt&&Text"),
+ vod_pic: pdfh(x, ".lazy&&data-src"),
+ vod_remarks: pdfh(x, ".public-list-prb&&Text"),
+ vod_content: pdfh(x, ".thumb-blurb&&Text"),
+ vod_id: pdfh(x, "a&&href")
+ }
+ });
+ }),
+ 图片替换: '&=>&'
+}
\ No newline at end of file
diff --git a/JS/茶杯狐.js b/JS/茶杯狐.js
new file mode 100644
index 0000000..17c76eb
--- /dev/null
+++ b/JS/茶杯狐.js
@@ -0,0 +1,1512 @@
+/**
+ * 原创诺临风
+ * 原创时间:2024-05-07
+ * 转载请不要删除此版权声明
+ */
+
+
+var rule = {
+ title: "新茶杯狐",
+ host: "https://www.cbhfox.com/",
+ url: "/chbys/fyfilter.html",
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ detailUrl: "/cbhtv/fyid.html",
+ homeUrl: "/label/hot.html",
+ filter_url: "{{fl.cateId}}{{fl.area}}{{fl.by}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}",
+ filter: {
+ "dianying": [{
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "喜剧",
+ "v": "/class/喜剧"
+ }, {
+ "n": "爱情",
+ "v": "/class/爱情"
+ }, {
+ "n": "恐怖",
+ "v": "/class/恐怖"
+ }, {
+ "n": "动作",
+ "v": "/class/动作"
+ }, {
+ "n": "科幻",
+ "v": "/class/科幻"
+ }, {
+ "n": "剧情",
+ "v": "/class/剧情"
+ }, {
+ "n": "战争",
+ "v": "/class/战争"
+ }, {
+ "n": "警匪",
+ "v": "/class/警匪"
+ }, {
+ "n": "犯罪",
+ "v": "/class/犯罪"
+ }, {
+ "n": "动画",
+ "v": "/class/动画"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "武侠",
+ "v": "/class/武侠"
+ }, {
+ "n": "冒险",
+ "v": "/class/冒险"
+ }, {
+ "n": "枪战",
+ "v": "/class/枪战"
+ }, {
+ "n": "恐怖",
+ "v": "/class/恐怖"
+ }, {
+ "n": "悬疑",
+ "v": "/class/悬疑"
+ }, {
+ "n": "惊悚",
+ "v": "/class/惊悚"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "青春",
+ "v": "/class/青春"
+ }, {
+ "n": "文艺",
+ "v": "/class/文艺"
+ }, {
+ "n": "微电影",
+ "v": "/class/微电影"
+ }, {
+ "n": "古装",
+ "v": "/class/古装"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "运动",
+ "v": "/class/运动"
+ }, {
+ "n": "农村",
+ "v": "/class/农村"
+ }, {
+ "n": "儿童",
+ "v": "/class/儿童"
+ }, {
+ "n": "网络电影",
+ "v": "/class/网络电影"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "大陆",
+ "v": "/area/中国大陆"
+ }, {
+ "n": "香港",
+ "v": "/area/中国香港"
+ }, {
+ "n": "台湾",
+ "v": "/area/中国台湾"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "德国",
+ "v": "/area/德国"
+ }, {
+ "n": "泰国",
+ "v": "/area/泰国"
+ }, {
+ "n": "印度",
+ "v": "/area/印度"
+ }, {
+ "n": "法国",
+ "v": "/area/法国"
+ }, {
+ "n": "意大利",
+ "v": "/area/意大利"
+ }, {
+ "n": "西班牙",
+ "v": "/area/西班牙"
+ }, {
+ "n": "加拿大",
+ "v": "/area/加拿大"
+ }, {
+ "n": "其他",
+ "v": "/area/其他"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "/lang/国语"
+ }, {
+ "n": "英语",
+ "v": "/lang/英语"
+ }, {
+ "n": "粤语",
+ "v": "/lang/粤语"
+ }, {
+ "n": "闽南语",
+ "v": "/lang/闽南语"
+ }, {
+ "n": "韩语",
+ "v": "/lang/韩语"
+ }, {
+ "n": "日语",
+ "v": "/lang/日语"
+ }, {
+ "n": "法语",
+ "v": "/lang/法语"
+ }, {
+ "n": "德语",
+ "v": "/lang/德语"
+ }, {
+ "n": "其它",
+ "v": "/lang/其它"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "dianshiju": [{
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "古装",
+ "v": "/class/古装"
+ }, {
+ "n": "战争",
+ "v": "/class/战争"
+ }, {
+ "n": "青春偶像",
+ "v": "/class/青春偶像"
+ }, {
+ "n": "喜剧",
+ "v": "/class/喜剧"
+ }, {
+ "n": "家庭",
+ "v": "/class/家庭"
+ }, {
+ "n": "犯罪",
+ "v": "/class/犯罪"
+ }, {
+ "n": "动作",
+ "v": "/class/动作"
+ }, {
+ "n": "奇幻",
+ "v": "/class/奇幻"
+ }, {
+ "n": "剧情",
+ "v": "/class/剧情"
+ }, {
+ "n": "历史",
+ "v": "/class/历史"
+ }, {
+ "n": "经典",
+ "v": "/class/经典"
+ }, {
+ "n": "乡村",
+ "v": "/class/乡村"
+ }, {
+ "n": "情景",
+ "v": "/class/情景"
+ }, {
+ "n": "商战",
+ "v": "/class/商战"
+ }, {
+ "n": "网剧",
+ "v": "/class/网剧"
+ }, {
+ "n": "其他",
+ "v": "/class/其他"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "/area/内地"
+ }, {
+ "n": "韩国",
+ "v": "/area/韩国"
+ }, {
+ "n": "香港",
+ "v": "/area/香港"
+ }, {
+ "n": "台湾",
+ "v": "/area/台湾"
+ }, {
+ "n": "日本",
+ "v": "/area/日本"
+ }, {
+ "n": "美国",
+ "v": "/area/美国"
+ }, {
+ "n": "泰国",
+ "v": "/area/泰国"
+ }, {
+ "n": "英国",
+ "v": "/area/英国"
+ }, {
+ "n": "新加坡",
+ "v": "/area/新加坡"
+ }, {
+ "n": "其他",
+ "v": "/area/其他"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "/lang/国语"
+ }, {
+ "n": "英语",
+ "v": "/lang/英语"
+ }, {
+ "n": "粤语",
+ "v": "/lang/粤语"
+ }, {
+ "n": "闽南语",
+ "v": "/lang/闽南语"
+ }, {
+ "n": "韩语",
+ "v": "/lang/韩语"
+ }, {
+ "n": "日语",
+ "v": "/lang/日语"
+ }, {
+ "n": "其它",
+ "v": "/lang/其它"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "zongyi": [{
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": "3"
+ }, {
+ "n": "选秀",
+ "v": "/class/选秀"
+ }, {
+ "n": "情感",
+ "v": "/class/情感"
+ }, {
+ "n": "访谈",
+ "v": "/class/访谈"
+ }, {
+ "n": "播报",
+ "v": "/class/播报"
+ }, {
+ "n": "旅游",
+ "v": "/class/旅游"
+ }, {
+ "n": "音乐",
+ "v": "/class/音乐"
+ }, {
+ "n": "美食",
+ "v": "/class/美食"
+ }, {
+ "n": "纪实",
+ "v": "/class/纪实"
+ }, {
+ "n": "曲艺",
+ "v": "/class/曲艺"
+ }, {
+ "n": "生活",
+ "v": "/class/生活"
+ }, {
+ "n": "游戏互动",
+ "v": "/class/游戏互动"
+ }, {
+ "n": "财经",
+ "v": "/class/财经"
+ }, {
+ "n": "求职",
+ "v": "/class/求职"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "/area/内地"
+ }, {
+ "n": "港台",
+ "v": "/area/港台"
+ }, {
+ "n": "日韩",
+ "v": "/area/日韩"
+ }, {
+ "n": "欧美",
+ "v": "/area/欧美"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "/lang/国语"
+ }, {
+ "n": "英语",
+ "v": "/lang/英语"
+ }, {
+ "n": "粤语",
+ "v": "/lang/粤语"
+ }, {
+ "n": "闽南语",
+ "v": "/lang/闽南语"
+ }, {
+ "n": "韩语",
+ "v": "/lang/韩语"
+ }, {
+ "n": "日语",
+ "v": "/lang/日语"
+ }, {
+ "n": "其它",
+ "v": "/lang/其它"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "dongmna": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "/area/内地"
+ }, {
+ "n": "港台",
+ "v": "/area/港台"
+ }, {
+ "n": "日韩",
+ "v": "/area/日韩"
+ }, {
+ "n": "欧美",
+ "v": "/area/欧美"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "/lang/国语"
+ }, {
+ "n": "英语",
+ "v": "/lang/英语"
+ }, {
+ "n": "粤语",
+ "v": "/lang/粤语"
+ }, {
+ "n": "闽南语",
+ "v": "/lang/闽南语"
+ }, {
+ "n": "韩语",
+ "v": "/lang/韩语"
+ }, {
+ "n": "日语",
+ "v": "/lang/日语"
+ }, {
+ "n": "其它",
+ "v": "/lang/其它"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }],
+ "jilupian": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "/area/内地"
+ }, {
+ "n": "港台",
+ "v": "/area/港台"
+ }, {
+ "n": "日韩",
+ "v": "/area/日韩"
+ }, {
+ "n": "欧美",
+ "v": "/area/欧美"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "/lang/国语"
+ }, {
+ "n": "英语",
+ "v": "/lang/英语"
+ }, {
+ "n": "粤语",
+ "v": "/lang/粤语"
+ }, {
+ "n": "闽南语",
+ "v": "/lang/闽南语"
+ }, {
+ "n": "韩语",
+ "v": "/lang/韩语"
+ }, {
+ "n": "日语",
+ "v": "/lang/日语"
+ }, {
+ "n": "其它",
+ "v": "/lang/其它"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "2014",
+ "v": "/year/2014"
+ }, {
+ "n": "2013",
+ "v": "/year/2013"
+ }, {
+ "n": "2012",
+ "v": "/year/2012"
+ }, {
+ "n": "2011",
+ "v": "/year/2011"
+ }, {
+ "n": "2010",
+ "v": "/year/2010"
+ }, {
+ "n": "2009",
+ "v": "/year/2009"
+ }, {
+ "n": "2008",
+ "v": "/year/2008"
+ }, {
+ "n": "2006",
+ "v": "/year/2006"
+ }, {
+ "n": "2005",
+ "v": "/year/2005"
+ }, {
+ "n": "2004",
+ "v": "/year/2004"
+ }]
+ }, {
+ "key": "letter",
+ "name": "字母",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "A",
+ "v": "/letter/A"
+ }, {
+ "n": "B",
+ "v": "/letter/B"
+ }, {
+ "n": "C",
+ "v": "/letter/C"
+ }, {
+ "n": "D",
+ "v": "/letter/D"
+ }, {
+ "n": "E",
+ "v": "/letter/E"
+ }, {
+ "n": "F",
+ "v": "/letter/F"
+ }, {
+ "n": "G",
+ "v": "/letter/G"
+ }, {
+ "n": "H",
+ "v": "/letter/H"
+ }, {
+ "n": "I",
+ "v": "/letter/I"
+ }, {
+ "n": "J",
+ "v": "/letter/J"
+ }, {
+ "n": "K",
+ "v": "/letter/K"
+ }, {
+ "n": "L",
+ "v": "/letter/L"
+ }, {
+ "n": "M",
+ "v": "/letter/M"
+ }, {
+ "n": "N",
+ "v": "/letter/N"
+ }, {
+ "n": "O",
+ "v": "/letter/O"
+ }, {
+ "n": "P",
+ "v": "/letter/P"
+ }, {
+ "n": "Q",
+ "v": "/letter/Q"
+ }, {
+ "n": "R",
+ "v": "/letter/R"
+ }, {
+ "n": "S",
+ "v": "/letter/S"
+ }, {
+ "n": "T",
+ "v": "/letter/T"
+ }, {
+ "n": "U",
+ "v": "/letter/U"
+ }, {
+ "n": "V",
+ "v": "/letter/V"
+ }, {
+ "n": "W",
+ "v": "/letter/W"
+ }, {
+ "n": "X",
+ "v": "/letter/X"
+ }, {
+ "n": "Y",
+ "v": "/letter/Y"
+ }, {
+ "n": "Z",
+ "v": "/letter/Z"
+ }, {
+ "n": "0-9",
+ "v": "/letter/0-9"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "/by/time"
+ }, {
+ "n": "人气",
+ "v": "/by/hits"
+ }, {
+ "n": "评分",
+ "v": "/by/score"
+ }]
+ }]
+ },
+ filter_def: {
+ dianying: {
+ cateId: "dianying"
+ },
+ dianshiju: {
+ cateId: "dianshiju"
+ },
+ zongyi: {
+ cateId: "zongyi"
+ },
+ dongmna: {
+ cateId: "dongmna"
+ },
+ jilupian: {
+ cateId: "jilupian"
+ },
+ },
+ class_name: "电影&剧集&动漫&综艺&记录片",
+ class_url: "dianying&dianshiju&dongmna&zongyi&jilupian",
+ headers: {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/"
+ },
+ play_parse: true,
+ lazy: `js:
+ var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
+ var url = html.url;
+ var from = html.from;
+ if (html.encrypt == '1') {
+ url = decodeURI(url)
+ } else if (html.encrypt == '2') {
+ url = decodeURI(base64Decode(url))
+ }
+ if (/\.m3u8|\.mp4/.test(url)) {
+ input = url
+ } else {
+ var currentDate = new Date();
+ var year = currentDate.getFullYear();
+ var month = String(currentDate.getMonth() + 1).padStart(2, '0');
+ var day = String(currentDate.getDate()).padStart(2, '0');
+ const urlTime = year + month + day;
+ var MacPlayerConfig = {};
+ eval(fetch(HOST + '/static/js/playerconfig.js?t=' + urlTime).replace('var Mac', 'Mac'));
+ var parseUrl = MacPlayerConfig.player_list[from].parse;
+ if (parseUrl && parseUrl != "") {
+ let $playUrl = "";
+ if(parseUrl.startsWith("http")){
+ $playUrl = parseUrl;
+ }else{
+ $playUrl = HOST + parseUrl;
+ }
+ input = {
+ url: url,
+ playUrl: $playUrl,
+ parse: 1,
+ header: JSON.stringify({
+ 'user-agent': 'Mozilla/5.0',
+ 'Origin': input
+ })
+ }
+ } else {
+ input
+ }
+ }
+ `,
+ 推荐: `js:
+ let d = [];
+ pdfh = jsp.pdfh;pdfa = jsp.pdfa;pd = jsp.pd;
+ let html = request(input);
+ let items = pdfa(html, "div.module-items div.module-card-item");
+ function shuffleArray(array) {
+ for (let i = array.length - 1; i > 0; i--) {
+ const j = Math.floor(Math.random() * (i + 1));
+ [array[i], array[j]] = [array[j], array[i]];
+ }
+ return array;
+ }
+ const shuffledArray = shuffleArray(items);
+ shuffledArray.forEach(it => {
+ d.push({
+ url:pdfh(it,"div.module-card-item-title&&a&&href"),
+ title:pdfh(it,"div.module-card-item-title&&a&&Text"),
+ img:pdfh(it,"div.module-item-pic&&img&&data-original"),
+ desc:pdfh(it,"div.module-card-item-class&&Text") + "/" + pdfh(it,"div.module-item-note&&Text")
+ })
+ });
+ setResult(d);
+ `,
+ 一级: `js:
+ var d = [];
+ pdfh = jsp.pdfh;pdfa = jsp.pdfa;pd = jsp.pd;
+ var html = request(input);
+ let items = pdfa(html, "a.module-item");
+ items.forEach(it => {
+ d.push({
+ url:pdfh(it,"a&&href"),
+ title:pdfh(it,"a&&title"),
+ img:pdfh(it,"div.module-item-pic&&img&&data-original"),
+ desc:pdfh(it,"div.module-item-note&&Text")
+ })
+ });
+ setResult(d)
+ `,
+ 二级: $js.toString(() => {
+ VOD = {};
+ let html = request(input);
+ VOD.vod_name = pdfh(html, "h1&&Text");
+ VOD.vod_pic = pd(html, ".module-item-pic&&img&&data-original");
+ VOD.vod_year = pdfh(html, ".module-info-tag-link:eq(0)&&Text");
+ VOD.vod_area = pdfh(html, ".module-info-tag-link:eq(1)&&Text");
+ VOD.type_name = pdfh(html, ".module-info-tag-link:eq(2)&&Text");
+ VOD.vod_actor = pdfh(html, ".module-info-item-content:eq(1)&&Text");
+ VOD.vod_director = pdfh(html, ".module-info-item-content:eq(0)&&Text");
+ VOD.vod_remarks = "不信广告就你赢了";
+ VOD.vod_content = pdfh(html, ".module-info-introduction-content&&Text");
+ if (typeof play_url === "undefined") {
+ var play_url = ""
+ }
+ let playFrom = [];
+ let playUrl = [];
+ let tabs = pdfa(html, "div.module-tab-item");
+ tabs.forEach((it, index) => {
+ playFrom.push('諾临風-' + pdfh(it, 'span&&Text') + "[" + pdfh(it, 'small&&Text') + "]");
+ let playTag = "div.module-play-list:eq(" + index + ") a";
+ let tags = pdfa(html, playTag);
+ let mapUrl = tags.map((tag) => {
+ let title = pdfh(tag, "a&&Text").trim();
+ let purl = pd(tag, "a&&href");
+ return title + "$" + play_url + urlencode(purl);
+ });
+ playUrl.push(mapUrl.join("#"))
+ });
+ VOD.vod_play_from = playFrom.join("$$$");
+ VOD.vod_play_url = playUrl.join("$$$");
+ }),
+ double: false,
+ searchUrl: "/index.php/vod/search/wd/**.html",
+ 搜索: `js:
+ var d = [];
+ pdfh = jsp.pdfh;pdfa = jsp.pdfa;pd = jsp.pd;
+ var html = request(input);
+ let list = pdfa(html, "div.module-item");
+ list.forEach(it => {
+ d.push({
+ title: pdfh(it, "div.module-card-item-title&&Text"),
+ desc: pdfh(it, "div.module-item-note&&Text"),
+ pic_url: pdfh(it, "div.module-item-pic&&img&&data-original"),
+ url: pdfh(it, "div.module-card-item-title&&a&&href")
+ })
+ });
+ setResult(d)
+ `
+};
\ No newline at end of file
diff --git a/JS/路漫漫.js b/JS/路漫漫.js
new file mode 100644
index 0000000..d781efa
--- /dev/null
+++ b/JS/路漫漫.js
@@ -0,0 +1,549 @@
+var rule = {
+ title: "路漫漫",
+ host: "http://www.lmm36.com",
+ url: "/vod/show/id/fyclassfyfilter.html",
+ searchUrl: '/vod/search/page/fypage/wd/**.html',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: {
+ "3": [{
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "更早",
+ "v": "/year/2014-1980"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近更新",
+ "v": "/by/time"
+ }, {
+ "n": "最高人气",
+ "v": "/by/hits"
+ }, {
+ "n": "最高评分",
+ "v": "/by/score"
+ }, {
+ "n": "最多点赞",
+ "v": "/by/up"
+ }]
+ }],
+ "4": [{
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "更早",
+ "v": "/year/2014-1980"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近更新",
+ "v": "/by/time"
+ }, {
+ "n": "最高人气",
+ "v": "/by/hits"
+ }, {
+ "n": "最高评分",
+ "v": "/by/score"
+ }, {
+ "n": "最多点赞",
+ "v": "/by/up"
+ }]
+ }],
+ "5": [{
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "更早",
+ "v": "/year/2014-1980"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近更新",
+ "v": "/by/time"
+ }, {
+ "n": "最高人气",
+ "v": "/by/hits"
+ }, {
+ "n": "最高评分",
+ "v": "/by/score"
+ }, {
+ "n": "最多点赞",
+ "v": "/by/up"
+ }]
+ }],
+ "6": [{
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "更早",
+ "v": "/year/2014-1980"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近更新",
+ "v": "/by/time"
+ }, {
+ "n": "最高人气",
+ "v": "/by/hits"
+ }, {
+ "n": "最高评分",
+ "v": "/by/score"
+ }, {
+ "n": "最多点赞",
+ "v": "/by/up"
+ }]
+ }],
+ "7": [{
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "更早",
+ "v": "/year/2014-1980"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近更新",
+ "v": "/by/time"
+ }, {
+ "n": "最高人气",
+ "v": "/by/hits"
+ }, {
+ "n": "最高评分",
+ "v": "/by/score"
+ }, {
+ "n": "最多点赞",
+ "v": "/by/up"
+ }]
+ }],
+ "8": [{
+ "key": "年代",
+ "name": "年代",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "/year/2025"
+ }, {
+ "n": "2024",
+ "v": "/year/2024"
+ }, {
+ "n": "2023",
+ "v": "/year/2023"
+ }, {
+ "n": "2022",
+ "v": "/year/2022"
+ }, {
+ "n": "2021",
+ "v": "/year/2021"
+ }, {
+ "n": "2020",
+ "v": "/year/2020"
+ }, {
+ "n": "2019",
+ "v": "/year/2019"
+ }, {
+ "n": "2018",
+ "v": "/year/2018"
+ }, {
+ "n": "2017",
+ "v": "/year/2017"
+ }, {
+ "n": "2016",
+ "v": "/year/2016"
+ }, {
+ "n": "2015",
+ "v": "/year/2015"
+ }, {
+ "n": "更早",
+ "v": "/year/2014-1980"
+ }]
+ }, {
+ "key": "排序",
+ "name": "排序",
+ "value": [{
+ "n": "最近更新",
+ "v": "/by/time"
+ }, {
+ "n": "最高人气",
+ "v": "/by/hits"
+ }, {
+ "n": "最高评分",
+ "v": "/by/score"
+ }, {
+ "n": "最多点赞",
+ "v": "/by/up"
+ }]
+ }]
+ },
+ filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage",
+ filter_def: "",
+ headers: {
+ "User-Agent": "MOBILE_UA"
+ },
+ timeout: 5000,
+ class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影",
+ class_url: "6&7&8&3&4&5",
+ class_parse: "",
+ cate_exclude: "",
+ play_parse: true,
+ lazy: $js.toString(() => {
+ function getDAesString(token) {
+ eval(getCryptoJS());
+ var key = CryptoJS.enc.Utf8.parse("ejjooopppqqqrwww");
+
+ var iv = CryptoJS.enc.Utf8.parse("1348987635684651");
+
+ var token = CryptoJS.AES.decrypt(token, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7,
+ });
+
+ return token.toString(CryptoJS.enc.Utf8);
+ }
+
+ var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
+ var url = html.url;
+ var from = html.from;
+ if (html.encrypt == "1") {
+ url = unescape(url);
+ } else if (html.encrypt == "2") {
+ url = unescape(base64Decode(url));
+ }
+ if (/\.mp4|\.m3u8|\.flv/.test(url)) {
+ input = {
+ parse: 0,
+ url: url.split("&")[0],
+ js: ''
+ };
+ } else {
+ var jsh = request(HOST + "/static/player/" + from + ".js", {
+ headers: {
+ Referer: input
+ },
+ }).match(/\.src\s*=\s*(.*?);/)[1];
+ //log(MY_HOME);
+ if (/type=/.test(jsh)) {
+ jsh = jsh
+ .replace(/[\+\s']/g, "")
+ .replace(/MacPlayer.Parse/, "")
+ .replace(/MacPlayer.PlayUrl/, url)
+ .replace(/window.location.href/, input);
+ var playht = fetch(jsh, {
+ headers: {
+ Referer: HOST
+ }
+ });
+ } else {
+ jsh = jsh
+ .replace(/[\+\s']/g, "")
+ .replace(/MacPlayer.Parse/, "")
+ .replace(/MacPlayer.PlayUrl/, url)
+ .replace(/window.location.href/, input);
+
+ jsh = JSON.parse(
+ fetch(jsh, {
+ headers: {
+ Referer: HOST
+ },
+ onlyHeaders: true
+ })
+ ).url;
+ var playht = fetch(jsh, {
+ headers: {
+ Referer: HOST
+ }
+ });
+ }
+
+ var postapi = jsh.match(/^(.*?\/\/.*?\/.*?\/)/)[1];
+
+ var posturl = postapi + playht.match(/post\("(.*?)"/)[1];
+ if (/act\s*=/.test(playht)) {
+ var vid = playht.match(/vid\s*=\s*"(.*?)"/)[1];
+ var t = playht.match(/var\s*t\s*=\s*"(.*?)"/)[1];
+ var token = playht.match(/token\s*=\s*"(.*?)"/)[1];
+ var act = playht.match(/act\s*=\s*"(.*?)"/)[1];
+ var play = playht.match(/play\s*=\s*"(.*?)"/)[1];
+ token = getDAesString(token);
+
+ var data = JSON.parse(
+ post(posturl, {
+ headers: {
+ Referer: HOST
+ },
+ body: {
+ vid: vid,
+ t: t,
+ token: token,
+ act: act,
+ play: play,
+ },
+ timeout: 5000
+ })
+ );
+ input = {
+ parse: 0,
+ url: data.url,
+ js: ''
+ };
+ } else {
+ var key = "";
+
+ playht.match(/var (\w+)="(.*?)";/g).forEach(function(list) {
+ key += list.match(/"(.*?)"/)[1];
+ });
+ const bodys = JSON.parse(
+ playht
+ .match(/post\(.*?,(.*?),\n/)[1]
+ .replace(/"keyyy"\s*:\s*''.*?''/, '"keyyy" : "' + key + '"')
+ );
+ var data = JSON.parse(
+ post(posturl, {
+ headers: {
+ Referer: HOST
+ },
+ body: bodys
+ })
+ );
+ if (data.ext == "xgplayer") {
+ var dataurl =
+ "https://yun.366day.site/mp4hls/xgplayer.php?vid=" + data.url;
+ var video = fetch(dataurl, {
+ headers: {
+ Referer: jsh
+ }
+ }).match(
+ /"url": "(.*?)"/
+ )[1];
+ input = {
+ parse: 0,
+ url: video,
+ js: ''
+ };
+ } else if (data.ext == "hls" || data.ext == "hls_list") {
+ input = {
+ parse: 0,
+ url: decodeURIComponent(data.url),
+ js: ''
+ };
+ } else {
+ input = {
+ parse: 0,
+ url: data.url,
+ js: ''
+ };
+ }
+ }
+ }
+ }),
+ double: false,
+ 推荐: "*",
+ 一级: ".video-img-box;h6.title&&Text;.lazyload&&data-src;.label&&Text;a&&href",
+ 二级: {
+ title: ".page-title&&Text;.tag-link&&Text",
+ img: ".module-item-pic&&.lazyload&&src",
+ desc: ".video-info-items:eq(3)&&Text;.video-info-items:eq(2)&&Text;;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text",
+ content: ".video-info-content&&Text",
+ tabs: ".module-tab-item.tab-item",
+ lists: ".module-player-list:eq(#id) a",
+ tab_text: "body&&Text",
+ list_text: "body&&Text",
+ list_url: "a&&href"
+ },
+ detailUrl: "",
+ 搜索: "*"
+}
\ No newline at end of file
diff --git a/JS/达达龟.js b/JS/达达龟.js
new file mode 100644
index 0000000..916de27
--- /dev/null
+++ b/JS/达达龟.js
@@ -0,0 +1,627 @@
+muban.首图2.二级.desc = 'p.data:eq(-1)&&Text;;;p.data:eq(-2)&&Text;p.data:eq(-3)&&Text';
+var rule = {
+ title: '达达龟',
+ 模板: '首图2',
+ host: 'https://www.dadagui.me',
+ // url:'/vodshow/fyclass--------fypage---.html',
+ url: '/vodshow/fyclassfyfilter.html',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '-{{fl.area}}-{{fl.by}}-{{fl.class}}-{{fl.lang}}-{{fl.letter}}---fypage---{{fl.year}}',
+ filter: {
+ "1": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "大陆",
+ "v": "大陆"
+ }, {
+ "n": "香港",
+ "v": "香港"
+ }, {
+ "n": "台湾",
+ "v": "台湾"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "法国",
+ "v": "法国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "韩国",
+ "v": "韩国"
+ }, {
+ "n": "德国",
+ "v": "德国"
+ }, {
+ "n": "泰国",
+ "v": "泰国"
+ }, {
+ "n": "印度",
+ "v": "印度"
+ }, {
+ "n": "意大利",
+ "v": "意大利"
+ }, {
+ "n": "西班牙",
+ "v": "西班牙"
+ }, {
+ "n": "加拿大",
+ "v": "加拿大"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "国语"
+ }, {
+ "n": "英语",
+ "v": "英语"
+ }, {
+ "n": "粤语",
+ "v": "粤语"
+ }, {
+ "n": "闽南语",
+ "v": "闽南语"
+ }, {
+ "n": "韩语",
+ "v": "韩语"
+ }, {
+ "n": "日语",
+ "v": "日语"
+ }, {
+ "n": "法语",
+ "v": "法语"
+ }, {
+ "n": "德语",
+ "v": "德语"
+ }, {
+ "n": "其它",
+ "v": "其它"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "time"
+ }, {
+ "n": "人气",
+ "v": "hits"
+ }, {
+ "n": "评分",
+ "v": "score"
+ }]
+ }],
+ "2": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "内地"
+ }, {
+ "n": "韩国",
+ "v": "韩国"
+ }, {
+ "n": "香港",
+ "v": "香港"
+ }, {
+ "n": "台湾",
+ "v": "台湾"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "泰国",
+ "v": "泰国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }, {
+ "n": "新加坡",
+ "v": "新加坡"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "国语"
+ }, {
+ "n": "英语",
+ "v": "英语"
+ }, {
+ "n": "粤语",
+ "v": "粤语"
+ }, {
+ "n": "闽南语",
+ "v": "闽南语"
+ }, {
+ "n": "韩语",
+ "v": "韩语"
+ }, {
+ "n": "日语",
+ "v": "日语"
+ }, {
+ "n": "其它",
+ "v": "其它"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "time"
+ }, {
+ "n": "人气",
+ "v": "hits"
+ }, {
+ "n": "评分",
+ "v": "score"
+ }]
+ }],
+ "3": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "内地",
+ "v": "内地"
+ }, {
+ "n": "港台",
+ "v": "港台"
+ }, {
+ "n": "日韩",
+ "v": "日韩"
+ }, {
+ "n": "欧美",
+ "v": "欧美"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "国语"
+ }, {
+ "n": "英语",
+ "v": "英语"
+ }, {
+ "n": "粤语",
+ "v": "粤语"
+ }, {
+ "n": "闽南语",
+ "v": "闽南语"
+ }, {
+ "n": "韩语",
+ "v": "韩语"
+ }, {
+ "n": "日语",
+ "v": "日语"
+ }, {
+ "n": "其它",
+ "v": "其它"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "time"
+ }, {
+ "n": "人气",
+ "v": "hits"
+ }, {
+ "n": "评分",
+ "v": "score"
+ }]
+ }],
+ "4": [{
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国产",
+ "v": "国产"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "欧美",
+ "v": "欧美"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "2011",
+ "v": "2011"
+ }, {
+ "n": "2010",
+ "v": "2010"
+ }, {
+ "n": "2009",
+ "v": "2009"
+ }, {
+ "n": "2008",
+ "v": "2008"
+ }, {
+ "n": "2007",
+ "v": "2007"
+ }, {
+ "n": "2006",
+ "v": "2006"
+ }, {
+ "n": "2005",
+ "v": "2005"
+ }, {
+ "n": "2004",
+ "v": "2004"
+ }]
+ }, {
+ "key": "lang",
+ "name": "语言",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "国语",
+ "v": "国语"
+ }, {
+ "n": "英语",
+ "v": "英语"
+ }, {
+ "n": "粤语",
+ "v": "粤语"
+ }, {
+ "n": "闽南语",
+ "v": "闽南语"
+ }, {
+ "n": "韩语",
+ "v": "韩语"
+ }, {
+ "n": "日语",
+ "v": "日语"
+ }, {
+ "n": "其它",
+ "v": "其它"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "time"
+ }, {
+ "n": "人气",
+ "v": "hits"
+ }, {
+ "n": "评分",
+ "v": "score"
+ }]
+ }]
+ },
+ searchUrl: '/vodsearch/**----------fypage---.html',
+ class_parse: '.stui-header__menu li:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
+ lazy: `js:
+ var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
+ var url = html.url;
+ if (html.encrypt == '1') {
+ url = unescape(url)
+ } else if (html.encrypt == '2') {
+ url = unescape(base64Decode(url))
+ }
+ if (/\\.m3u8|\\.mp4/.test(url)) {
+ input = {
+ jx: 0,
+ url: url,
+ parse: 0
+ }
+ } else {
+ input
+ }
+ `,
+ // 搜索: muban.首图2.搜索1,
+ 搜索: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JS/追剧弹幕.js b/JS/追剧弹幕.js
new file mode 100644
index 0000000..cf49480
--- /dev/null
+++ b/JS/追剧弹幕.js
@@ -0,0 +1,183 @@
+globalThis.h_ost = 'http://v.lkuys.cn/';
+
+globalThis.vodlist = function($t, $pg) {
+ const currentTimestamp = parseInt(Date.now() / 1000, 10);
+ const url = h_ost + '/v2/home/type_search';
+ const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
+ let html = request(url, {
+ body: {
+ sign: hx,
+ type_id: $t,
+ page: $pg,
+ },
+ headers: {
+ 'User-Agent': 'okhttp-okgo/jeasonlzy',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ 'method': 'POST'
+ }, true);
+ return JSON.parse(html).data.list;
+}
+
+globalThis.seach = function(wd) {
+ const currentTimestamp = parseInt(Date.now() / 1000, 10);
+ const url = h_ost + '/v2/home/search';
+ const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
+ let html = request(url, {
+ body: {
+ sign: hx,
+ keyword: wd,
+ timestamp: currentTimestamp,
+ },
+ headers: {
+ 'User-Agent': 'okhttp-okgo/jeasonlzy',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ 'method': 'POST'
+ }, true);
+ return JSON.parse(html).data.list;
+}
+globalThis.vodids = function(ids) {
+ const currentTimestamp = parseInt(Date.now() / 1000, 10);
+ const url = h_ost + '/v2/home/vod_details';
+ const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
+ let html = request(url, {
+ body: {
+ sign: hx,
+ vod_id: ids,
+ timestamp: currentTimestamp,
+ },
+ headers: {
+ 'User-Agent': 'okhttp-okgo/jeasonlzy',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ 'method': 'POST'
+ }, true);
+ const redata = JSON.parse(html);
+ let vodPlayFrom = '';
+ let vodPlayUrl = '';
+ redata.data.vod_play_list.forEach((value, key) => {
+ if (value.flag.includes("nby") || value.flag.includes("mgtv") || value.flag.includes("qq") || value.flag.includes("qiyi") || value.flag.includes("mgtv")) {
+ vodPlayFrom += `${value.flag}$$$`;
+ value.urls.forEach(url => {
+ vodPlayUrl += `${url.name}$${value.parse_urls[0]}${url.url}~${url.name}#`;
+ });
+ vodPlayUrl += '$$$';
+ }
+ });
+ const regeshi = {
+ vod_id: redata.data.vod_id,
+ vod_name: redata.data.vod_name,
+ vod_remarks: `${redata.data.vod_remarks}`,
+ type_name: redata.data.vod_class,
+ vod_pic: redata.data.vod_pic,
+ vod_year: redata.data.vod_year,
+ vod_area: redata.data.vod_area,
+ vod_actor: `${redata.data.vod_actor}`,
+ vod_director: redata.data.vod_director,
+ vod_content: `${redata.data.vod_content}`,
+ vod_play_from: vodPlayFrom,
+ vod_play_url: vodPlayUrl
+ };
+ return regeshi;
+}
+globalThis.jxx = function(input) {
+ if ("741852963" !== '741852963') {
+ return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
+ }
+ const parts = input.split('~');
+ try {
+ let response = fetch(parts[0], {
+ method: 'get',
+ headers: {
+ 'User-Agent': 'okhttp/3.14.9',
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ });
+
+ if (response.includes("成功") || response.includes("success") || response.includes("nby")) {
+ let bata = JSON.parse(response);
+ input = {
+ parse: 0,
+ url: bata.url,
+ jx: 0,
+ danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
+ }
+ } else {
+ input = {
+ parse: 0,
+ url: parts[0].includes('url=') ? parts[0].slice(parts[0].indexOf('url=') + 4) : null,
+ jx: 1,
+ danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
+ }
+ }
+ } catch {
+ input = {
+ parse: 0,
+ url: '解析失败',
+ jx: 0,
+ }
+ }
+ return input;
+}
+
+var rule = {
+ title: '追剧',
+ host: '',
+ detailUrl: 'fyid',
+ searchUrl: '**',
+ url: 'fyclass',
+ searchable: 2,
+ quickSearch: 1,
+ filterable: 0,
+ class_name: '电影&电视剧&综艺&动漫',
+ class_url: '1&2&4&3',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ input = jxx(input);
+ }),
+ 推荐: $js.toString(() => {
+ let bdata = vodlist(0, 1);
+ console.log(bdata);
+ bdata.forEach(it => {
+ d.push({
+ url: it.vod_id,
+ title: it.vod_name,
+ img: it.vod_pic,
+ desc: it.vod_remarks
+ });
+ });
+ setResult(d);
+ }),
+ 一级: $js.toString(() => {
+ let bdata = vodlist(input, MY_PAGE);
+ console.log(bdata);
+ bdata.forEach(it => {
+ d.push({
+ url: it.vod_id,
+ title: it.vod_name,
+ img: it.vod_pic,
+ desc: it.vod_remarks
+ });
+ });
+ setResult(d);
+ }),
+ 二级: $js.toString(() => {
+ console.log("调试信息2" + input);
+ let data = vodids(input);
+ //console.log(data);
+ VOD = (data);
+ }),
+ 搜索: $js.toString(() => {
+ let ddata = seach(input);
+ ddata.forEach(it => {
+ d.push({
+ url: it.vod_id,
+ title: it.vod_name,
+ img: it.vod_pic,
+ desc: it.vod_remarks
+ });
+ });
+ setResult(d);
+ }),
+}
\ No newline at end of file
diff --git a/JS/追剧迷.js b/JS/追剧迷.js
new file mode 100644
index 0000000..3031e38
--- /dev/null
+++ b/JS/追剧迷.js
@@ -0,0 +1,37 @@
+var rule = {
+ title: '追剧迷',
+ 模板: 'vfed',
+ host: 'https://www.zhuijumi.cc',
+ // url:'/videotype/fyclass-fypage.html',
+ url: '/mp4type/fyclass-fypage.html',
+ searchUrl: '/mp4search/-.html?wd=**',
+ class_parse: '.fed-part-tips li;a&&Text;a&&href;.*/(.*?).html',
+ cate_exclude: '更多|申请',
+ lazy: `js:
+ var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
+ var url = html.url;
+ if (html.encrypt == '1') {
+ url = unescape(url)
+ } else if (html.encrypt == '2') {
+ url = unescape(base64Decode(url))
+ }
+ if (/\\.m3u8|\\.mp4/.test(url)) {
+ input = {
+ jx: 0,
+ url: url,
+ parse: 0
+ }
+ } else {
+ input
+ }
+ `,
+ 二级: {
+ "title": "h1&&Text;.fed-col-xs6--span:eq(0)&&Text",
+ "img": ".fed-list-info&&a&&data-original",
+ "desc": ".fed-col-xs12.fed-part-eone:eq(3)&&Text;;;.fed-col-xs12.fed-part-eone--span:eq(0)&&Text;.fed-col-xs12.fed-part-eone--span:eq(1)&&Text",
+ "content": ".fed-conv-text:eq(0)&&Text",
+ "tabs": "ul.fed-padding&&li",
+ "lists": ".fed-tabs-btm:eq(#id) li"
+ },
+ 搜索: '.fed-list-deta;h1&&Text;.fed-lazy&&data-original;.fed-list-remarks&&Text;a&&href;.fed-col-xs12.fed-part-eone:eq(2)&&Text',
+}
\ No newline at end of file
diff --git a/JS/采集之王.js b/JS/采集之王.js
new file mode 100644
index 0000000..3bc5d96
--- /dev/null
+++ b/JS/采集之王.js
@@ -0,0 +1,378 @@
+globalThis.getRandomItem = function(items) {
+ return items[Math.random() * items.length | 0];
+}
+var rule = {
+ title: '采集之王[合]',
+ author: '道长',
+ version: '20240706 beta17',
+ update_info: ``.trim(),
+ host: '',
+ homeTid: '',
+ homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
+ detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
+ searchUrl: '/api.php/provide/vod/?wd=**&pg=#TruePage##page=fypage',
+ classUrl: '/api.php/provide/vod/',
+ url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyfilter',
+ filter_url: '{{fl.类型}}',
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000,
+ limit: 20,
+ search_limit: 10,
+ searchable: 1,
+ quickSearch: 0,
+ filterable: 1,
+ play_parse: true,
+ parse_url: '',
+ search_match: false,
+ search_pic: true,
+ 预处理: $js.toString(() => {
+ function getClasses(item) {
+ let classes = [];
+ if (item.class_name && item.class_url) {
+ if (!/&|电影|电视剧|综艺|动漫[\u4E00-\u9FA5]+/.test(item.class_name)) {
+ try {
+ item.class_name = ungzip(item.class_name)
+ } catch (e) {
+ log(`不识别的class_name导致gzip解码失败:${e}`)
+ return classes
+ }
+ }
+ let names = item.class_name.split('&');
+ let urls = item.class_url.split('&');
+ let cnt = Math.min(names.length, urls.length);
+ for (let i = 0; i < cnt; i++) {
+ classes.push({
+ 'type_id': urls[i],
+ 'type_name': names[i]
+ });
+ }
+ }
+ return classes
+ }
+ if (typeof(batchFetch) === 'function') {
+ rule.search_limit = 16;
+ log('当前程序支持批量请求[batchFetch],搜索限制已设置为16');
+ }
+ let _url = rule.params;
+ log(`传入参数:${_url}`);
+ if (_url && typeof(_url) === 'string' && /^(http|file)/.test(_url)) {
+ if (_url.includes('$')) {
+ let _url_params = _url.split('$');
+ _url = _url_params[0];
+ rule.search_match = !!(_url_params[1]);
+ if (_url_params.length > 2) {
+ rule.search_pic = !!(_url_params[2]);
+ }
+ }
+ let html = request(_url);
+ let json = JSON.parse(html);
+ let _classes = [];
+ rule.filter = {};
+ rule.filter_def = {};
+ json.forEach(it => {
+ let _obj = {
+ type_name: it.name,
+ type_id: it.url,
+ parse_url: it.parse_url || '',
+ searchable: it.searchable !== 0,
+ api: it.api || '',
+ cate_exclude: it.cate_exclude || '',
+ cate_excludes: it.cate_excludes || [],
+ };
+ _classes.push(_obj);
+ try {
+ let json1 = [];
+ if (it.class_name && it.class_url) {
+ json1 = getClasses(it);
+ } else {
+ json1 = JSON.parse(request(urljoin(_obj.type_id, _obj.api || rule.classUrl))).class;
+ }
+ if (_obj.cate_excludes && Array.isArray(_obj.cate_excludes) && _obj.cate_excludes.length > 0) {
+ json1 = json1.filter(cl => !_obj.cate_excludes.includes(cl.type_name));
+ } else if (_obj.cate_exclude) {
+ json1 = json1.filter(cl => !new RegExp(_obj.cate_exclude, 'i').test(cl.type_name));
+ }
+ rule.filter[_obj.type_id] = [{
+ "key": "类型",
+ "name": "类型",
+ "value": json1.map(i => {
+ return {
+ "n": i.type_name,
+ 'v': i.type_id
+ }
+ })
+ }];
+ if (json1.length > 0) {
+ rule.filter_def[it.url] = {
+ "类型": json1[0].type_id
+ };
+ }
+ } catch (e) {
+ rule.filter[it.url] = [{
+ "key": "类型",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }]
+ }];
+ }
+ });
+ rule.classes = _classes;
+ }
+ }),
+ class_parse: $js.toString(() => {
+ input = rule.classes;
+ }),
+ 推荐: $js.toString(() => {
+ VODS = [];
+ if (rule.classes) {
+ let randomClass = getRandomItem(rule.classes);
+ let _url = urljoin(randomClass.type_id, input);
+ if (randomClass.api) {
+ _url = _url.replace('/api.php/provide/vod/', randomClass.api)
+ }
+ try {
+ let html = request(_url, {
+ timeout: rule.timeout
+ });
+ let json = JSON.parse(html);
+ VODS = json.list;
+ VODS.forEach(it => {
+ it.vod_id = randomClass.type_id + '$' + it.vod_id;
+ it.vod_remarks = it.vod_remarks + '|' + randomClass.type_name;
+ });
+ } catch (e) {}
+ }
+ }),
+ 一级: $js.toString(() => {
+ VODS = [];
+ if (rule.classes) {
+ let _url = urljoin(MY_CATE, input);
+ let current_vod = rule.classes.find(item => item.type_id === MY_CATE);
+ if (current_vod && current_vod.api) {
+ _url = _url.replace('/api.php/provide/vod/', current_vod.api)
+ }
+ let html = request(_url);
+ let json = JSON.parse(html);
+ VODS = json.list;
+ VODS.forEach(it => {
+ it.vod_id = MY_CATE + '$' + it.vod_id
+ });
+ }
+ }),
+ 二级: $js.toString(() => {
+ VOD = {};
+ if (orId === 'update_info') {
+ VOD = {
+ vod_content: rule.update_info.trim(),
+ vod_name: '更新日志',
+ type_name: '更新日志',
+ vod_pic: 'https://resource-cdn.tuxiaobei.com/video/FtWhs2mewX_7nEuE51_k6zvg6awl.png',
+ vod_remarks: `版本:${rule.version}`,
+ vod_play_from: '道长在线',
+ vod_play_url: '随机小视频$http://api.yujn.cn/api/zzxjj.php',
+ };
+ } else {
+ if (rule.classes) {
+ let _url = urljoin(fyclass, input);
+ let current_vod = rule.classes.find(item => item.type_id === fyclass);
+ if (current_vod && current_vod.api) {
+ _url = _url.replace('/api.php/provide/vod/', current_vod.api)
+ }
+ let html = request(_url);
+ let json = JSON.parse(html);
+ let data = json.list;
+ VOD = data[0];
+ if (current_vod && current_vod.type_name) {
+ VOD.vod_play_from = VOD.vod_play_from.split('$$$').map(it => current_vod.type_name + '|' + it).join('$$$')
+ }
+ }
+ }
+ }),
+ 搜索: $js.toString(() => {
+ VODS = [];
+ if (rule.classes) {
+ let canSearch = rule.classes.filter(it => it.searchable);
+ let page = Number(MY_PAGE);
+ page = (MY_PAGE - 1) % Math.ceil(canSearch.length / rule.search_limit) + 1;
+ let truePage = Math.ceil(MY_PAGE / Math.ceil(canSearch.length / rule.search_limit));
+ if (rule.search_limit) {
+ let start = (page - 1) * rule.search_limit;
+ let end = page * rule.search_limit;
+ let t1 = new Date().getTime();
+ let searchMode = typeof(batchFetch) === 'function' ? '批量' : '单个';
+ log('start:' + start);
+ log('end:' + end);
+ log('搜索模式:' + searchMode);
+ log('精准搜索:' + rule.search_match);
+ log('强制获取图片:' + rule.search_pic);
+ if (start < canSearch.length) {
+ let search_classes = canSearch.slice(start, end);
+ let urls = [];
+ search_classes.forEach(it => {
+ let _url = urljoin(it.type_id, input);
+ if (it.api) {
+ _url = _url.replace('/api.php/provide/vod/', it.api)
+ }
+ _url = _url.replace("#TruePage#", "" + truePage);
+ urls.push(_url);
+ });
+ let results_list = [];
+ let results = [];
+ if (typeof(batchFetch) === 'function') {
+ let reqUrls = urls.map(it => {
+ return {
+ url: it,
+ options: {
+ timeout: rule.timeout
+ }
+ }
+ });
+ let rets = batchFetch(reqUrls);
+ let detailUrls = [];
+ let detailUrlCount = 0;
+ rets.forEach((ret, idx) => {
+ let it = search_classes[idx];
+ if (ret) {
+ try {
+ let json = JSON.parse(ret);
+ let data = json.list;
+ data.forEach(i => {
+ i.site_name = it.type_name;
+ i.vod_id = it.type_id + '$' + i.vod_id;
+ i.vod_remarks = i.vod_remarks + '|' + it.type_name;
+ });
+ if (rule.search_match) {
+ data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name))
+ }
+ if (data.length > 0) {
+ if (rule.search_pic && !data[0].vod_pic) {
+ log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`);
+ let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(',');
+ detailUrls.push(detailUrl);
+ results_list.push({
+ data: data,
+ has_pic: false,
+ detailUrlCount: detailUrlCount
+ });
+ detailUrlCount++;
+ } else {
+ results_list.push({
+ data: data,
+ has_pic: true
+ });
+ }
+ }
+ } catch (e) {
+ log(`请求:${it.type_id}发生错误:${e.message}`)
+ }
+ }
+ });
+ let reqUrls2 = detailUrls.map(it => {
+ return {
+ url: it,
+ options: {
+ timeout: rule.timeout
+ }
+ }
+ });
+ let rets2 = reqUrls2.length > 0 ? batchFetch(reqUrls2) : [];
+ for (let k = 0; k < results_list.length; k++) {
+ let result_data = results_list[k].data;
+ if (!results_list[k].has_pic) {
+ try {
+ let detailJson = JSON.parse(rets2[results_list[k].detailUrlCount]);
+ log('二级数据列表元素数:' + detailJson.list.length);
+ result_data.forEach((d, _seq) => {
+ let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]);
+ if (detailVodPic) {
+ Object.assign(d, {
+ vod_pic: detailVodPic.vod_pic
+ });
+ }
+ });
+ } catch (e) {
+ log(`强制获取网站${result_data[0].site_name}的搜索图片失败:${e.message}`);
+ }
+ }
+ results = results.concat(result_data);
+ }
+ } else {
+ urls.forEach((_url, idx) => {
+ let it = search_classes[idx];
+ try {
+ let html = request(_url);
+ let json = JSON.parse(html);
+ let data = json.list;
+ data.forEach(i => {
+ i.vod_id = it.type_id + '$' + i.vod_id;
+ i.vod_remarks = i.vod_remarks + '|' + it.type_name;
+ });
+ if (rule.search_match) {
+ data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name))
+ }
+ if (data.length > 0) {
+ if (rule.search_pic && !data[0].vod_pic) {
+ log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`);
+ let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(',');
+ try {
+ let detailJson = JSON.parse(request(detailUrl));
+ log('二级数据列表元素数:' + detailJson.list.length);
+ data.forEach((d, _seq) => {
+ let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]);
+ if (detailVodPic) {
+ Object.assign(d, {
+ vod_pic: detailVodPic.vod_pic
+ });
+ }
+ });
+ } catch (e) {
+ log(`强制获取网站${it.type_id}的搜索图片失败:${e.message}`);
+ }
+ }
+ results = results.concat(data);
+ }
+ results = results.concat(data);
+ } catch (e) {
+ log(`请求:${it.type_id}发生错误:${e.message}`)
+ }
+ });
+ }
+ VODS = results;
+ let t2 = new Date().getTime();
+ log(`${searchMode}搜索:${urls.length}个站耗时:${(Number(t2) - Number(t1))}ms`)
+ }
+ }
+ }
+ }),
+ lazy: $js.toString(() => {
+ let parse_url = '';
+ if (flag && flag.includes('|')) {
+ let type_name = flag.split('|')[0];
+ let current_vod = rule.classes.find(item => item.type_name === type_name);
+ if (current_vod && current_vod.parse_url) {
+ parse_url = current_vod.parse_url
+ }
+ }
+ if (/\.(m3u8|mp4)/.test(input)) {
+ input = {
+ parse: 0,
+ url: input
+ }
+ } else {
+ if (parse_url.startsWith('json:')) {
+ let purl = parse_url.replace('json:', '') + input;
+ let html = request(purl);
+ input = {
+ parse: 0,
+ url: JSON.parse(html).url
+ }
+ } else {
+ input = parse_url + input;
+ }
+ }
+ }),
+}
\ No newline at end of file
diff --git a/JS/魔力高清.js b/JS/魔力高清.js
new file mode 100644
index 0000000..105a6a3
--- /dev/null
+++ b/JS/魔力高清.js
@@ -0,0 +1,598 @@
+// 网址发布页 https://molicp.com
+muban.首图.二级.title = '.text-fff--font&&Text;.data--span:eq(0)&&Text';
+muban.首图.二级.desc = '#rating&&Text;;;.data--span:eq(1)&&Text;.data--span:eq(2)&&Text';
+muban.首图.二级.content = '.desc&&Text';
+var rule = {
+ title: 'HDmoli',
+ 模板: '首图',
+ host: 'https://www.hdmoli.pro',
+ // url:'/mlist/fyclass-fypage.html',
+ url: '/search.php?page=fypage&searchtype=5&tid=fyfilter',
+ filterable: 1, //是否启用分类筛选,
+ filter_url: '{{fl.cateId}}&jq={{fl.class}}&area={{fl.area}}&year={{fl.year}}&state={{fl.state}}&order={{fl.by}}',
+ filter: {
+ "1": [{
+ "key": "cateId",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": "1"
+ }, {
+ "n": "动作",
+ "v": "5"
+ }, {
+ "n": "爱情",
+ "v": "6"
+ }, {
+ "n": "科幻",
+ "v": "7"
+ }, {
+ "n": "恐怖",
+ "v": "8"
+ }, {
+ "n": "战争",
+ "v": "9"
+ }, {
+ "n": "喜剧",
+ "v": "10"
+ }, {
+ "n": "纪录片",
+ "v": "11"
+ }, {
+ "n": "剧情",
+ "v": "12"
+ }, {
+ "n": "犯罪",
+ "v": "30"
+ }, {
+ "n": "动画",
+ "v": "32"
+ }]
+ }, {
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "家庭",
+ "v": "家庭"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "惊悚",
+ "v": "惊悚"
+ }, {
+ "n": "音乐",
+ "v": "音乐"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "犯罪",
+ "v": "犯罪"
+ }, {
+ "n": "运动",
+ "v": "运动"
+ }, {
+ "n": "喜剧",
+ "v": "喜剧"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "韩国",
+ "v": "韩国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "泰国",
+ "v": "泰国"
+ }, {
+ "n": "中国",
+ "v": "中国"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "more",
+ "v": "more"
+ }]
+ }, {
+ "key": "state",
+ "name": "状态",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "完结",
+ "v": "w"
+ }, {
+ "n": "连载中",
+ "v": "l"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "time"
+ }, {
+ "n": "评分",
+ "v": "douban"
+ }]
+ }],
+ "2": [{
+ "key": "cateId",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": "2"
+ }, {
+ "n": "美剧",
+ "v": "15"
+ }, {
+ "n": "韩剧",
+ "v": "16"
+ }, {
+ "n": "日剧",
+ "v": "13"
+ }, {
+ "n": "英剧",
+ "v": "34"
+ }, {
+ "n": "中国",
+ "v": "14"
+ }, {
+ "n": "泰剧",
+ "v": "29"
+ }, {
+ "n": "综艺",
+ "v": "39"
+ }, {
+ "n": "其他",
+ "v": "38"
+ }]
+ }, {
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "家庭",
+ "v": "家庭"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "惊悚",
+ "v": "惊悚"
+ }, {
+ "n": "音乐",
+ "v": "音乐"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "犯罪",
+ "v": "犯罪"
+ }, {
+ "n": "运动",
+ "v": "运动"
+ }, {
+ "n": "喜剧",
+ "v": "喜剧"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "韩国",
+ "v": "韩国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "泰国",
+ "v": "泰国"
+ }, {
+ "n": "中国",
+ "v": "中国"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "more",
+ "v": "more"
+ }]
+ }, {
+ "key": "state",
+ "name": "状态",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "完结",
+ "v": "w"
+ }, {
+ "n": "连载中",
+ "v": "l"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "time"
+ }, {
+ "n": "评分",
+ "v": "douban"
+ }]
+ }],
+ "41": [{
+ "key": "cateId",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": "41"
+ }, {
+ "n": "日本",
+ "v": "42"
+ }, {
+ "n": "其他",
+ "v": "43"
+ }]
+ }, {
+ "key": "class",
+ "name": "剧情",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "战争",
+ "v": "战争"
+ }, {
+ "n": "恐怖",
+ "v": "恐怖"
+ }, {
+ "n": "剧情",
+ "v": "剧情"
+ }, {
+ "n": "爱情",
+ "v": "爱情"
+ }, {
+ "n": "家庭",
+ "v": "家庭"
+ }, {
+ "n": "励志",
+ "v": "励志"
+ }, {
+ "n": "悬疑",
+ "v": "悬疑"
+ }, {
+ "n": "动作",
+ "v": "动作"
+ }, {
+ "n": "奇幻",
+ "v": "奇幻"
+ }, {
+ "n": "冒险",
+ "v": "冒险"
+ }, {
+ "n": "历史",
+ "v": "历史"
+ }, {
+ "n": "惊悚",
+ "v": "惊悚"
+ }, {
+ "n": "音乐",
+ "v": "音乐"
+ }, {
+ "n": "科幻",
+ "v": "科幻"
+ }, {
+ "n": "犯罪",
+ "v": "犯罪"
+ }, {
+ "n": "运动",
+ "v": "运动"
+ }, {
+ "n": "喜剧",
+ "v": "喜剧"
+ }]
+ }, {
+ "key": "area",
+ "name": "地区",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "美国",
+ "v": "美国"
+ }, {
+ "n": "韩国",
+ "v": "韩国"
+ }, {
+ "n": "英国",
+ "v": "英国"
+ }, {
+ "n": "日本",
+ "v": "日本"
+ }, {
+ "n": "泰国",
+ "v": "泰国"
+ }, {
+ "n": "中国",
+ "v": "中国"
+ }, {
+ "n": "其他",
+ "v": "其他"
+ }]
+ }, {
+ "key": "year",
+ "name": "年份",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "2025",
+ "v": "2025"
+ }, {
+ "n": "2024",
+ "v": "2024"
+ }, {
+ "n": "2023",
+ "v": "2023"
+ }, {
+ "n": "2022",
+ "v": "2022"
+ }, {
+ "n": "2021",
+ "v": "2021"
+ }, {
+ "n": "2020",
+ "v": "2020"
+ }, {
+ "n": "2019",
+ "v": "2019"
+ }, {
+ "n": "2018",
+ "v": "2018"
+ }, {
+ "n": "2017",
+ "v": "2017"
+ }, {
+ "n": "2016",
+ "v": "2016"
+ }, {
+ "n": "2015",
+ "v": "2015"
+ }, {
+ "n": "2014",
+ "v": "2014"
+ }, {
+ "n": "2013",
+ "v": "2013"
+ }, {
+ "n": "2012",
+ "v": "2012"
+ }, {
+ "n": "more",
+ "v": "more"
+ }]
+ }, {
+ "key": "state",
+ "name": "状态",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }, {
+ "n": "完结",
+ "v": "w"
+ }, {
+ "n": "连载中",
+ "v": "l"
+ }]
+ }, {
+ "key": "by",
+ "name": "排序",
+ "value": [{
+ "n": "时间",
+ "v": "time"
+ }, {
+ "n": "评分",
+ "v": "douban"
+ }]
+ }]
+ },
+ filter_def: {
+ 1: {
+ cateId: '1',
+ by: 'time'
+ },
+ 2: {
+ cateId: '2',
+ by: 'time'
+ },
+ 41: {
+ cateId: '41',
+ by: 'time'
+ }
+ },
+ searchUrl: '/search.php?page=fypage&searchword=**&searchtype=',
+ class_parse: '.myui-header__menu li;a&&Text;a&&href;.*/index(\\d+).html',
+}
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index a165419..0000000
--- a/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# duoapi
-
diff --git a/XBPQ/修罗影视.json b/XBPQ/修罗影视.json
new file mode 100644
index 0000000..88d0f73
--- /dev/null
+++ b/XBPQ/修罗影视.json
@@ -0,0 +1,35 @@
+{
+ "站名": "修罗影视",
+ "请求头": "User-Agent@Mozilla/5.0 (Linux;; Android 12;; PEHM00 Build/SKQ1.210216.001;; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.108 Mobile Safari/537.36",
+ "编码": "UTF-8",
+ "图片代理": "0",
+ "直接播放": "0",
+ "主页url": "http://v.xlys.ltd.ua",
+ "分类url": "http://v.xlys.ltd.ua/s/{cateId}/{catePg}",
+ "分类": "动作$dongzuo#爱情$aiqing#喜剧$xiju#科幻$kehuan#恐怖$kongbu#战争$zhanzheng#武侠$wuxia#魔幻$mohuan#剧情$juqing#动画$donghua#惊悚$jingsong#灾难$zainan#悬疑$xuanyi#警匪$jingfei#文艺$wenyi#青春$qingchun#冒险$maoxian#犯罪$fanzui#纪录$jilu#古装$guzhuang#奇幻$qihuan#国语$guoyu#综艺$zongyi#历史$lishi#运动$yundong#原创压制$yuanchuang#美剧$meiju#韩剧$hanju#国产电视剧$guoju#日剧$riju#英剧$yingju#德剧$deju#俄剧$eju#巴剧$baju#加剧$jiaju#西剧$spanish#意大利剧$yidaliju#泰剧$taiju#港台剧$gangtaiju#法剧$faju#澳剧$aoju",
+ "数组": "card-link&&/h3>",
+ "标题": "&&",
+ "图片": "data-echo=\"&&\"",
+ "分类url": "https://www.wwgz.cn/vod-list-id-{cateId}-pg-{catePg}-order--by-time-class-0-year-{year}-letter--area-{area}-lang-.html",
+ "分类": "短剧$26#电视剧$2#电影$1#动漫$4#综艺$3"
+}
\ No newline at end of file
diff --git a/XBPQ/哆啦新番社.json b/XBPQ/哆啦新番社.json
new file mode 100644
index 0000000..6617766
--- /dev/null
+++ b/XBPQ/哆啦新番社.json
@@ -0,0 +1,18 @@
+{
+ "请求头": "User-Agent$MOBILE_UA",
+ "编码": "UTF-8",
+ "主页url": "https://dora.xiaoxinbk.com/",
+ "数组": "class=\"card-img-bili\"&&",
+ "标题": "alt=\"&&\"",
+ "图片": "data-url=\"&&\"",
+ "链接": "href=\"&&\"",
+ "线路标题": "mt-0\">&&",
+ "播放数组": "class=\"card-body button-list\"&&",
+ "播放列表": "",
+ "播放链接": "href=\"&&\"",
+ "播放标题": ">&&",
+ "分类url": "https://www.dora-video.cn/search/sy/?niandai={year}&cat={class}&tag={cateId}&gaojijiansuo=1&zhuangtai={by}",
+ "分类": "全部$0#动画$20#剧场版$21#MV$22#预告片$23#直播$27#同人$25#民间$26#目录$28#中篇$30",
+ "剧情": "哆啦A梦新番$1#新哆啦A梦 台湾配音$2#哆啦A梦剧场版$3#最新预告片$6#剧场版集合$7#哆啦A梦MV$4#哆啦A梦七小子集合$11#生日特别篇$19#哆啦A梦生日特别篇$12#哆啦美生日特别篇$14#大雄生日特别篇$13#静香生日特别篇$15#胖虎生日特别篇$16#小夫生日特别篇$17#24小时直播$24#哆啦A梦中篇附映$29#哆啦A梦大山版 - 哆啦a梦1979版国语旧版 - 旧版$31#哆啦A梦大山修复&补档区$32#藤子·F·不二雄【其它动画】$33",
+ "排序": "全部$0#完结$2#连载$1#待定$-1"
+}
\ No newline at end of file
diff --git a/XBPQ/樱花影视.json b/XBPQ/樱花影视.json
new file mode 100644
index 0000000..2ca5775
--- /dev/null
+++ b/XBPQ/樱花影视.json
@@ -0,0 +1,5 @@
+{
+ "线路标题": "&&
",
+ "分类url": "https://yinghuadm.fun/vodshow/{cateId}-{area}--{class}-----{catePg}---{year}.html",
+ "分类": "电影$1#剧集$2#综艺$3#动漫$4"
+}
\ No newline at end of file
diff --git a/XBPQ/永乐影视.json b/XBPQ/永乐影视.json
new file mode 100644
index 0000000..44f7706
--- /dev/null
+++ b/XBPQ/永乐影视.json
@@ -0,0 +1,7 @@
+{
+ "请求头": "User-Agent$MOBILE_UA",
+ "编码": "UTF-8",
+ "分类": "电影$1#电视剧$2#综艺$3#动漫$4",
+ "类型": "动作片$6#喜剧片$7#爱情片$8#科幻片$9#奇幻片$10#恐怖片$11#剧情片$12#战争片$20#动画片$26#悬疑片$22#冒险片$23#犯罪片$24#惊悚片$45#歌舞片$46#灾难片$47#网络片$48||国产剧$13#港台剧$14#日剧$15#韩剧$33#欧美剧$16#泰剧$34#新马剧$35#其他剧$25||内地综艺$27#港台综艺$28#日本综艺$29#韩国综艺$36#欧美综艺$30#新马泰综艺$37#其他综艺$38||国产动漫$31#日本动漫$32#韩国动漫$39#港台动漫$40#新马泰动漫$41#欧美动漫$42#其他动漫$43",
+ "分类url": "https://www.ylys.tv/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html"
+}
\ No newline at end of file
diff --git a/XBPQ/海纳影视.json b/XBPQ/海纳影视.json
new file mode 100644
index 0000000..4b90fec
--- /dev/null
+++ b/XBPQ/海纳影视.json
@@ -0,0 +1,6 @@
+{
+ "简介": "简介:&&",
+ "数组": "row\">&&",
+ "分类url": "https://www.hainatv.net/index.php/vod/show/area/{area}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html",
+ "分类": "电影$1#电视剧$2#综艺$3#动漫$4#短剧$59"
+}
\ No newline at end of file
diff --git a/XBPQ/爱我短剧.json b/XBPQ/爱我短剧.json
new file mode 100644
index 0000000..cf3bd09
--- /dev/null
+++ b/XBPQ/爱我短剧.json
@@ -0,0 +1,25 @@
+{
+ "请求头": "User-Agent$MOBILE_UA",
+ "主页url": "https://www.aiwodj.com",
+ "数组": "lazy lazyloaded&&>]",
+ "图片": "data-src=\"&&\"",
+ "标题": "title=\"&&\"",
+ "链接": "href=\"&&\"",
+ "副标题": "+module-item-caption\">&&&&",
+ "播放列表": "",
+ "播放标题": "span>&&",
+ "播放链接": "href=\"&&\"",
+ "跳转播放链接": "urlDecode(var player_*\"url\":\"&&\")",
+ "搜索url": "https://www.aiwodj.com/vodsearch/{wd}----------{pg}---.html",
+ "搜索数组": "lazy lazyload&&>]",
+ "搜索图片": "data-src=\"&&\"",
+ "搜索标题": "+title=\"&&\"",
+ "搜索链接": "href=\"&&\"",
+ "分类url": "https://www.aiwodj.com/vodshow/{cateId}--{by}-{class}-{lang}----{catePg}---{year}.html",
+ "分类": "穿越&战神&重生&爱情&萌娃&神医&古代&玄幻&言情",
+ "分类值": "fenle&fenlei2&fenlei3&fenlei4&guda&shenyi&gudai&xuanhuan&yanqing"
+}
\ No newline at end of file
diff --git a/XBPQ/狐狸君.json b/XBPQ/狐狸君.json
new file mode 100644
index 0000000..1219930
--- /dev/null
+++ b/XBPQ/狐狸君.json
@@ -0,0 +1,21 @@
+{
+ "搜索模式": "1",
+ "搜索url": "https://www.foxjun.com/s/?q={wd}",
+ "搜索数组": "class=\"media\">&&/div>",
+ "搜索图片": "src=\"&&\"",
+ "搜索标题": "《&&》",
+ "搜索副标题": "》&&\"",
+ "搜索链接": "href=\"&&\"",
+ "标题": "《&&》",
+ "副标题": "》&&\"",
+ "影片年代": "上映日期:&&",
+ "影片类型": "类型:&&",
+ "主演": "主演:&&",
+ "简介": "简介:&&",
+ "播放数组": "&&",
+ "播放列表": "[包含:magnet]",
+ "播放标题": ">&&<",
+ "播放链接": "href=\"&&\"",
+ "分类url": "https://www.foxjun.com/channel/{cateId}.html?apage1={catepg}",
+ "分类": "国产剧$guochanju#电影$dianying#动画$donghua#美欧剧$meiouju#日韩剧$rihanju"
+}
\ No newline at end of file
diff --git a/XBPQ/短剧网.json b/XBPQ/短剧网.json
new file mode 100644
index 0000000..1d5f5a7
--- /dev/null
+++ b/XBPQ/短剧网.json
@@ -0,0 +1,4 @@
+{
+ "分类": "短剧$duanju#电影$dianying#电视剧$dianshiju#动漫$dongman#综艺$zongyi",
+ "分类url": "https://www.duanjuwang.cc/vodtype/{cateId}/page/{catePg}.html"
+}
\ No newline at end of file
diff --git a/XBPQ/秀儿影视.json b/XBPQ/秀儿影视.json
new file mode 100644
index 0000000..0901bce
--- /dev/null
+++ b/XBPQ/秀儿影视.json
@@ -0,0 +1,8 @@
+{
+ "简介": "tt\" style=*>&&",
+ "数组": "&&",
+ "搜索url": "https://xiuer.pro/vod/search/?wd={wd}",
+ "分类url": "https://xiuer.pro/show/{cateId}/area/{area}/class/{class}/page/{catePg}/year/{year}/",
+ "分类": "短剧$duanju#电视剧$dianshiju#电影$dianying#动漫$dongman#综艺$zongyi"
+}
\ No newline at end of file
diff --git a/XBPQ/雪糕影视.json b/XBPQ/雪糕影视.json
new file mode 100644
index 0000000..d90a276
--- /dev/null
+++ b/XBPQ/雪糕影视.json
@@ -0,0 +1,5 @@
+{
+ "分类": "电影$1#剧集$2#综艺$3#动漫$4",
+ "类型": "动作片$1#喜剧片$2#爱情片$21#海外动漫$3#科幻片$4#恐怖片$5#剧情片$6#战争片$7#纪录片$8#其他$9",
+ "分类url": "https://www.xgitv.com/vshow/{cateId}-----------.html"
+}
\ No newline at end of file
diff --git a/XBPQ/面包影视.json b/XBPQ/面包影视.json
new file mode 100644
index 0000000..d943372
--- /dev/null
+++ b/XBPQ/面包影视.json
@@ -0,0 +1,7 @@
+{
+ "请求头": "User-Agent$MOBILE_UA",
+ "编码": "UTF-8",
+ "分类url": "https://v.aiwule.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html",
+ "分类": "电影$20#电视剧$21#动漫$23#综艺$22#短剧$47",
+ "简介": "简介:&&"
+}
\ No newline at end of file
diff --git a/config.bin b/config.bin
index 84b08e6..eb59692 100644
--- a/config.bin
+++ b/config.bin
@@ -1,891 +1,1656 @@
{
- "spider": "https://cdn09022024.gitlink.org.cn/api/v1/repos/leevi0321/apps/raw/new.jar;md5;23724CAFB5177BB74289DC95E85B6C6D",
- "wallpaper": "https://yydsys.top/bg.php",
- "logo": "https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1725712769296/%E9%A3%8E%E8%BD%A6new.gif",
- "warningText": "软件接口完全免费,请勿贩卖和购买",
- "sites": [
- {
- "key": "豆瓣",
- "name": "🍥┃豆瓣┃推荐🍥",
- "type": 3,
- "api": "csp_DouBan",
- "searchable": 0,
- "filterable": 1,
- "changeable": 1
- },
- {
- "key": "ConfigCenter",
- "name": "📀┃配置┃中心",
- "type": 3,
- "api": "csp_ConfigCenter",
- "searchable": 0,
- "changeable": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
- }
- },
- {
- "key": "多多影音",
- "name": "👲┃多多┃影音",
- "type": 3,
- "api": "csp_kongbai",
- "searchable": 1,
- "changeable": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
- "siteUrl": "https://duoduo.banye.tech:7086/",
- "filter": "./lib/wogg.json"
- }
- },
- {
- "key": "多多备用",
- "name": "👲┃多多┃网盘",
- "type": 3,
- "api": "csp_kongbai",
- "searchable": 1,
- "changeable": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.jso",
- "siteUrl": "https://tv.yydsys.top/",
- "filter": "./lib/wogg.json"
- }
- },
- {
- "key": "csp_Jianpian",
- "name": "⏳┃荐片┃磁力",
- "type": 3,
- "api": "csp_Jianpian",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "ext": "./lib/jianpian.json"
- },
- {
- "key": "瓜子",
- "name": "🌰┃瓜子┃秒播",
- "type": 3,
- "api": "csp_Gz360",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "金牌",
- "name": "🥇┃金牌┃秒播",
- "type": 3,
- "api": "csp_Jpys",
- "playerType": 1,
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_ReBo",
- "name": "🐠┃热播┃秒播",
- "type": 3,
- "api": "csp_ReBo",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_Czsapp",
- "name": "🏭┃厂长┃影视",
- "type": 3,
- "api": "csp_Czsapp",
- "playerType": 2,
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "ext": "http://www.czzyvideo.com"
- },
- {
- "key": "csp_LiteApple",
- "name": "🍎┃苹果┃盒子",
- "type": 3,
- "api": "csp_LiteApple",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_Wwys",
- "name": "👩🌾┃农民┃影视",
- "type": 3,
- "api": "csp_Wwys",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "ext": "https://wwgz.cn"
- },
- {
- "key": "csp_Siren",
- "name": "👽️┃私人┃影院",
- "type": 3,
- "api": "csp_Siren",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_Kanke",
- "name": "🫣┃看客┃影院",
- "type": 3,
- "api": "csp_Kanke",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "ext": "http://www.guaziys.com"
- },
- {
- "key": "csp_Lkdy",
- "name": "📺︎┃来看┃影院",
- "type": 3,
- "api": "csp_Lkdy",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_SaoHuo",
- "name": "🔥┃骚火┃影院",
- "type": 3,
- "api": "csp_SaoHuo",
- "playerType": 2,
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "ext": "https://shdy5.us"
- },
- {
- "key": "csp_Tvyb",
- "name": "🎥┃TVB┃云播",
- "type": 3,
- "api": "csp_Tvyb",
- "playerType": 2,
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "ext": "http://www.tvyun01.com/"
- },
- {
- "key": "csp_Qiyou",
- "name": "🥝┃奇优┃影院",
- "type": 3,
- "api": "csp_Qiyou",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_Jiaozi",
- "name": "🥟┃饺子┃影视",
- "type": 3,
- "api": "csp_Jiaozi",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_Ddys",
- "name": "🐞┃低端┃影视",
- "type": 3,
- "api": "csp_Ddys",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_Kuaikan",
- "name": "👀┃快看┃影视",
- "type": 3,
- "api": "csp_Kuaikan",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
- {
- "key": "csp_SP360",
- "name": "🎯┃360┃影视",
- "type": 3,
- "api": "csp_SP360",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "changeable": 1
- },
- {
- "key": "csp_Kanqiu",
- "name": "🏉┃球赛┃直播",
- "type": 3,
- "api": "csp_Kanqiu",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "gridview": 3,
- "style": {
- "type": "list"
- }
- },
- {
- "key": "玩偶gg",
- "name": "💂┃饭硬┃玩偶",
- "type": 3,
- "api": "csp_Wogg",
- "searchable": 1,
- "changeable": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
- "siteUrl": "http://wogg.xxooo.cf/",
- "filter": "./lib/wogg.json"
- }
- },
- {
- "key": "蜡笔",
- "name": "🖍️┃蜡笔┃玩偶",
- "type": 3,
- "api": "csp_kongbai",
- "searchable": 1,
- "changeable": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
- "siteUrl": "http://feimaoai.site",
- "filter": "./lib/wogg.json"
- }
- },
- {
- "key": "木偶锅锅",
- "name": "️🎠┃木偶┃锅锅",
- "type": 3,
- "api": "csp_kongbai",
- "searchable": 1,
- "changeable": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
- "siteUrl": "https://mo.666291.xyz/",
- "filter": "./lib/wogg.json"
- }
- },
- {
- "key": "闪电",
- "name": "⚡┃闪电┃网盘",
- "type": 3,
- "api": "csp_kongbai",
- "searchable": 1,
- "changeable": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
- "siteUrl": "http://1.95.79.193",
- "filter": "./lib/wogg.json"
- }
- },
- {
- "key": "盘Ta",
- "name": "🎨┃盘他┃资源",
- "type": 3,
- "api": "csp_PanTa",
- "searchable": 1,
- "filterable": 0,
- "switchable": 0,
- "ext": {
- "siteUrl": "https://www.91panta.cn/",
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
- }
- },
- {
- "key": "网盘集合",
- "name": "🅿┃网盘┃集合",
- "type": 3,
- "api": "csp_网盘集合",
- "searchable": 1,
- "filterable": 0,
- "switchable": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
- "share": "./lib/网盘集合.json"
- }
- },
- {
- "key": "csp_非凡资源",
- "name": "🥗┃非凡┃资源",
- "type": 1,
- "api": "http://cj.ffzyapi.com/api.php/provide/vod/",
- "playurl": "json:https://jx.behds.cn/qcb.php?url=",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "categories": [
- "动作片",
- "喜剧片",
- "科幻片",
- "恐怖片",
- "爱情片",
- "剧情片",
- "战争片",
- "记录片",
- "国产剧",
- "欧美剧",
- "香港剧",
- "韩国剧",
- "台湾剧",
- "日本剧",
- "海外剧",
- "泰国剧",
- "国产动漫",
- "日韩动漫",
- "欧美动漫",
- "港台动漫",
- "海外动漫",
- "大陆综艺",
- "港台综艺",
- "日韩综艺",
- "欧美综艺"
- ]
- },
- {
- "key": "量子资源",
- "name": "🥑┃量子┃资源",
- "type": 1,
- "api": "http://cj.lziapi.com/api.php/provide/vod/",
- "playurl": "json:https://jx.behds.cn/qcb.php?url=",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 0,
- "categories": [
- "国产剧",
- "国产动漫",
- "泰国剧",
- "台湾剧",
- "香港剧",
- "欧美剧",
- "韩国剧",
- "日本剧",
- "动漫",
- "体育",
- "剧情片",
- "动作片",
- "爱情片",
- "喜剧片"
- ]
- },
- {
- "key": "csp_SNzy",
- "name": "🐉┃索尼┃高清",
- "type": 1,
- "api": "https://suoniapi.com/api.php/provide/vod/?ac=list",
- "playurl": "json:https://jx.behds.cn/qcb.php?url=",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "categories": [
- "动作片",
- "喜剧片",
- "科幻片",
- "恐怖片",
- "爱情片",
- "剧情片",
- "战争片",
- "记录片",
- "国产剧",
- "欧美剧",
- "香港剧",
- "韩国剧",
- "台湾剧",
- "日本剧",
- "海外剧",
- "泰国剧",
- "国产动漫",
- "日韩动漫",
- "欧美动漫",
- "港台动漫",
- "海外动漫",
- "大陆综艺",
- "港台综艺",
- "日韩综艺",
- "欧美综艺"
- ]
- },
- {
- "key": "push_agent",
- "name": "📨┃手机┃推送",
- "type": 3,
- "api": "csp_Push",
- "searchable": 0,
- "quickSearch": 0,
- "ext": {
- "commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
- }
- }
- ],
- "lives": [
- {
- "name": "zbds",
- "type": 0,
- "url": "https://live.zbds.top/tv/iptv4.txt",
- "epg": "http://epg.112114.xyz/?ch={name}&date={date}",
- "logo": "https://epg.112114.xyz/logo/{name}.png"
- },
- {
- "name": "爱看港台",
- "type": 0,
- "url": "https://aktv.top/live.txt",
- "epg": "http://epg.112114.xyz/?ch={name}&date={date}",
- "logo": "https://epg.112114.xyz/logo/{name}.png"
- },
- {
- "name": "myernestlu",
- "type": 0,
- "url": "https://myernestlu.github.io/zby.txt",
- "epg": "http://epg.112114.xyz/?ch={name}&date={date}",
- "logo": "https://epg.112114.xyz/logo/{name}.png"
- },
- {
- "name": "ganjue",
- "type": 0,
- "url": "http://27.54.236.201:6897/uploads/tvbox/tv.txt",
- "epg": "http://epg.112114.xyz/?ch={name}&date={date}",
- "logo": "https://epg.112114.xyz/logo/{name}.png"
- },
- {
- "name": "wwb521",
- "type": 0,
- "url": "https://ghp.ci/https://raw.githubusercontent.com/wwb521/live/main/ipv4.txt",
- "epg": "http://epg.112114.xyz/?ch={name}&date={date}",
- "logo": "https://epg.112114.xyz/logo/{name}.png"
- },
- {
- "name": "qingwen",
- "type": 0,
- "url": "https://ghp.ci/https://raw.githubusercontent.com/qingwen07/awesome-iptv/maintvbox_live_all.txt",
- "epg": "http://epg.112114.xyz/?ch={name}&date={date}",
- "logo": "https://epg.112114.xyz/logo/{name}.png"
- }
- ],
- "parses": [
- {
- "name": "json聚合",
- "type": 3,
- "url": "Demo"
- },
- {
- "name": "Web嗅探",
- "type": 3,
- "url": "Web"
- },
- {
- "name": "自动①号",
- "type": 1,
- "url": "https://jxjson.icu/neibu.php?url=",
- "ext": {
- "flag": [
- "qq",
- "腾讯",
- "qiyi",
- "爱奇艺",
- "奇艺",
- "youku",
- "优酷",
- "sohu",
- "搜狐",
- "letv",
- "乐视",
- "mgtv",
- "芒果",
- "tnmb",
- "seven",
- "bilibili",
- "1905"
- ],
- "header": {
- "User-Agent": "okhttp/4.9.1"
+ "spider": "https://cdn09022024.gitlink.org.cn/api/v1/repos/leevi0321/apps/raw/spider.jar;md5;912ACA622048F595ACA9EC9ABDFAABD2",
+ "wallpaper": "http://bobohome.ignorelist.com:20247/bing",
+ "logo": "http://127.0.0.1:9978/file/TVBox/logo.png",
+ "sites": [
+ {
+ "key": "豆瓣",
+ "name": "🍥┃豆瓣┃推荐🍥",
+ "type": 3,
+ "api": "csp_Douban",
+ "searchable": 0
+ },
+ {
+ "key": "配置中心",
+ "name": "⚙️┃配置┃中心",
+ "type": 3,
+ "api": "csp_Config",
+ "searchable": 0,
+ "changeable": 0,
+ "indexs": 0,
+ "style": {
+ "type": "rect",
+ "ratio": 1.597
+ }
+ },
+ {
+ "key": "影视配置",
+ "name": "🛞┃影视┃配置",
+ "type": 3,
+ "api": "csp_Wexconfig",
+ "searchable": 0,
+ "changeable": 0,
+ "indexs": 0,
+ "style": {
+ "type": "rect",
+ "ratio": 1.597
+ },
+ "jar": "https://cdn09022024.gitlink.org.cn/api/v1/repos/leevi0321/apps/raw/wex.jar;md5;A2E404CA5B03A236D97E5A2D6486AC89"
+ },
+ {
+ "key": "多多弹幕",
+ "name": "👲┃多多┃影音",
+ "type": 3,
+ "api": "csp_Wobg",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
+ "site": "https://duoduo.banye.tech:7086",
+ "danmu": true
+ }
+ },
+ {
+ "key": "多多网盘",
+ "name": "👲┃多多┃网盘",
+ "type": 3,
+ "api": "csp_Wobg",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
+ "site": "https://tv.yydsys.top",
+ "danmu": true
+ }
+ },
+ {
+ "key": "荐片",
+ "name": "⏳┃荐片┃磁力",
+ "type": 3,
+ "api": "csp_Jianpian",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "playerType": 1,
+ "ext": {
+ "danmu": true
+ }
+ },
+ {
+ "key": "旺旺影视",
+ "name": "🌞┃旺旺┃影视",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./XBPQ/农民影视.json"
+ },
+ {
+ "key": "厂长弹幕",
+ "name": "🏭┃厂长┃弹幕",
+ "type": 3,
+ "api": "csp_Czzy",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": {
+ "danmu": true
+ }
+ },
+ {
+ "key": "天天弹幕",
+ "name": "⏱️┃天天┃弹幕",
+ "type": 3,
+ "api": "csp_TianTian",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": {
+ "danmu": true,
+ "site": "aHR0cDovL3R0LnlzZHFqcy5jbg=="
+ }
+ },
+ {
+ "key": "金牌影视",
+ "name": "🥇┃金牌┃影视",
+ "type": 3,
+ "api": "csp_WebJP",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "KhY021WelCEl+6MsvwnzaPusskysEhxc/i3d/FHwReBTtZTeDEVZJbQKKez3K+OxlrjAIMdUpAUxP8fGystYn0Hss098UFVR69Qm2ARgmeZN86q8Ww=="
+ },
+ {
+ "key": "热播弹幕",
+ "name": "🐠┃热播┃秒播",
+ "type": 3,
+ "api": "csp_TianTian",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": {
+ "danmu": true,
+ "site": "aHR0cDovL3YucmJvdHYuY24="
+ }
+ },
+ {
+ "key": "浪酷弹幕",
+ "name": "🏄️┃浪酷┃弹幕",
+ "type": 3,
+ "api": "csp_TianTian",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": {
+ "danmu": true,
+ "site": "aHR0cDovL3YubGt1eXMuY24="
+ }
+ },
+ {
+ "key": "瓜子影视",
+ "name": "🍈┃瓜子┃影视",
+ "type": 3,
+ "api": "csp_Gz360",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "西瓜视频",
+ "name": "🍉┃西瓜┃视频",
+ "type": 3,
+ "api": "csp_AmuXiguaV2",
+ "searchable": 1,
+ "quickSearch": 0,
+ "filterable": 0,
+ "changeable": 0,
+ "style": {
+ "type": "rect",
+ "ratio": 1.597
+ }
+ },
+ {
+ "key": "文才弹幕",
+ "name": "🖌┃文才┃弹幕",
+ "type": 3,
+ "api": "csp_Jpys",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": {
+ "danmu": true
+ }
+ },
+ {
+ "key": "素白白",
+ "name": "🐑┃白白┃影视",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/素白白.js"
+ },
+ {
+ "key": "哔哩弹幕",
+ "name": "🅱️┃哔哩┃弹幕",
+ "type": 3,
+ "api": "csp_Bilimd",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "style": {
+ "type": "rect",
+ "ratio": 1.597
+ },
+ "ext": {
+ "cookie": "http://127.0.0.1:9978/file/TVBox/bilibili.txt"
+ },
+ "timeout": 10
+ },
+ {
+ "key": "哔哩合集",
+ "name": "🅱️┃哔哩┃合集",
+ "type": 3,
+ "api": "csp_Bili",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "style": {
+ "type": "rect",
+ "ratio": 1.597
+ },
+ "ext": {
+ "cookie": "http://127.0.0.1:9978/file/TVBox/bilibili.txt",
+ "json": "./JSON/哔哩合集.json"
+ },
+ "timeout": 10
+ },
+ {
+ "key": "立播弹幕",
+ "name": "🤍┃立播┃弹幕",
+ "type": 3,
+ "api": "csp_Libvio",
+ "searchable": 1,
+ "filterable": 1,
+ "changeable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
+ "site": "https://www.libvio.cc",
+ "danmu": true
+ }
+ },
+ {
+ "key": "小苹果弹幕",
+ "name": "🍎┃苹果┃盒子",
+ "type": 3,
+ "api": "csp_Xpg",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": {
+ "danmu": true
+ }
+ },
+ {
+ "key": "玩偶弹幕",
+ "name": "💂┃饭硬┃玩偶",
+ "type": 3,
+ "api": "csp_Wogg",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
+ "wogg": true,
+ "danmu": true
+ }
+ },
+ {
+ "key": "夸克闪电弹幕",
+ "name": "⚡️┃闪电┃网盘",
+ "type": 3,
+ "api": "csp_Wobg",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "changeable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
+ "site": "https://shandian.banye.tech:7086",
+ "danmu": true
+ }
+ },
+ {
+ "key": "夸克蜡笔弹幕",
+ "name": "🖍️┃蜡笔┃玩偶",
+ "type": 3,
+ "api": "csp_Wobg",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
+ "site": "https://labi.banye.tech:7086",
+ "danmu": true
+ }
+ },
+ {
+ "key": "夸克木偶弹幕",
+ "name": "🎠┃木偶┃锅锅",
+ "type": 3,
+ "api": "csp_Wobg",
+ "quickSearch": 1,
+ "changeable": 1,
+ "filterable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
+ "site": "https://mogg.banye.tech:7086",
+ "danmu": true
+ }
+ },
+ {
+ "key": "雷鲸",
+ "name": "🐋┃雷鲸┃天意",
+ "type": 3,
+ "api": "csp_Wexleijing",
+ "searchable": 1,
+ "changeable": 1,
+ "jar": "https://cdn09022024.gitlink.org.cn/api/v1/repos/leevi0321/apps/raw/wex.jar;md5;A2E404CA5B03A236D97E5A2D6486AC89"
+ },
+ {
+ "key": "盘他",
+ "name": "🥏┃盘他┃网盘",
+ "type": 3,
+ "api": "csp_WexYDpanta",
+ "searchable": 1,
+ "changeable": 1,
+ "jar": "https://cdn09022024.gitlink.org.cn/api/v1/repos/leevi0321/apps/raw/wex.jar;md5;A2E404CA5B03A236D97E5A2D6486AC89"
+ },
+ {
+ "key": "星芽短剧",
+ "name": "🌟┃星芽┃短剧",
+ "type": 3,
+ "api": "csp_AppXY",
+ "searchable": 1,
+ "quickSearch": 0,
+ "filterable": 0
+ },
+ {
+ "key": "河马短剧",
+ "name": "🦛┃河马┃短剧",
+ "type": 3,
+ "api": "csp_AppHMDJ",
+ "searchable": 1,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "KhY021WelCEl+6MsvwnzaPussky/EAoc9z7C4keyHaEQ+sKbXhMKd83VjTL7Ls6+m7XDIcGdziOxPv79y/h4QCvmOEJmZ1VD6dopzAVxkFzEFw=="
+ },
+ {
+ "key": "短剧网",
+ "name": "🔦┃短剧┃聚合",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./XBPQ/短剧网.json"
+ },
+ {
+ "key": "短剧屋",
+ "name": "🏠️┃短剧┃小屋",
+ "type": 3,
+ "api": "csp_XYQHiker",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "./json/短剧屋.json"
+ },
+ {
+ "key": "短剧合集",
+ "name": "🐦🔥┃短剧┃合集",
+ "type": 3,
+ "api": "./JS/quark.min.js",
+ "ext": "./JS/短剧合集.js",
+ "style": {
+ "type": "list"
+ }
+ },
+ {
+ "key": "韩小圈",
+ "name": "🍩┃韩圈┃影视",
+ "type": 3,
+ "api": "csp_HanXiaoQuan",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "HG影视",
+ "name": "🥒┃黄瓜┃影像",
+ "type": 3,
+ "api": "csp_AppYsV2",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "https://cs.hgyx.vip/api2/api.php/app/"
+ },
+ {
+ "key": "巧技",
+ "name": "🛠️┃巧技┃影视",
+ "type": 3,
+ "api": "csp_qiao2",
+ "playerType": 2,
+ "ext": "https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1740038979341/cksp.txt"
+ },
+ {
+ "key": "二三",
+ "name": "🤞┃二三┃影视",
+ "type": 3,
+ "api": "csp_Muou",
+ "playerType": 2,
+ "ext": "caHR0cHM6Ly8xMjN5c3cuY29tfDIz5b2x6KeGfDQuMS44"
+ },
+ {
+ "key": "油条",
+ "name": "🍟┃薯条┃影视",
+ "type": 3,
+ "api": "csp_Muou",
+ "playerType": 2,
+ "ext": "caHR0cDovL3UzYS50dHhnenMuY2585LyY5LyY5YWUfDQuMS45"
+ },
+ {
+ "key": "时常",
+ "name": "🪖┃收藏┃影视",
+ "type": 3,
+ "api": "csp_Xdai",
+ "playerType": 1,
+ "ext": "jaHR0cHM6Ly9zYzEwODAudG9wfGU1OWQ0NGIyZWVmMDNiYTJ8ZTU5ZDQ0YjJlZWYwM2JhMnwxMzQ="
+ },
+ {
+ "key": "现代",
+ "name": "⏲️┃现代┃影视",
+ "type": 3,
+ "api": "csp_Xdai",
+ "playerType": 1,
+ "ext": "caHR0cHM6Ly94ZHlzLnZpcC9nZXRhcHAudHh0fHN6ZGp3ZGFwcHdjbm1kaGJ8c3pkandkYXBwd2NubWRoYnwxMTQ="
+ },
+ {
+ "key": "木叶",
+ "name": "🍂┃木叶┃影视",
+ "type": 3,
+ "api": "csp_Xdai",
+ "playerType": 2,
+ "ext": "saHR0cDovL2hvc3QueXl5cy5uZXdzLzI1MDEyMy50eHR8UnVOOUxSdndUUmdwUW5wS3xSdU45TFJ2d1RSZ3BRbnBLfDU0Ng=="
+ },
+ {
+ "key": "快看",
+ "name": "🫣┃快看┃影视",
+ "type": 3,
+ "api": "csp_AppYsV2",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "changeable": 1,
+ "ext": "http://kkwk123.top/api.php/app/"
+ },
+ {
+ "key": "站长影视",
+ "name": "👑┃站长┃影视",
+ "type": 3,
+ "api": "csp_AppGetApp",
+ "searchable": 1,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "w7TClcK8w5rDrcKYwoPCmcKkw57ClcK0wpvCnF9SwoPCmcOtw5jDj8Orw6ZValLCmMOtw6fDqsOswrRiX8KdacOcw57CrMKxw6DCqmbCnmPDpsKow6XCsMKywpRhYMKUwqfDl8Ozw7LDtGVewpPCn8Omwq3Cr8KvwrJsX8KRwqDDosKhw6rDocOqVVxSecOnw5zDrsOQw6nCpcKUUmrCm8KVwqbCm8OuwpzCoFJqwpvDjuWHv+mFoeaQn+WQllzlhpzkvYflkbDCreW/q+iov+i2vua7g+esicKNUsKlwpXCu8Oew61+wpXCqVLCs8KVw57DssOzwq3CpMKmwpHDqcOcw5vDqcOqwqzCqcKUwqPCm8KfwpzCusOfwqZ5wqZSwrPClcOew7LDs8KtwqTCpsKRw6nDnMObw6nDqsKswqnClMKjwpvDsA=="
+ },
+ {
+ "key": "云播影视",
+ "name": "🌤️┃云播┃APP",
+ "type": 3,
+ "api": "csp_AppGetApp",
+ "searchable": 1,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "w7TCmsK8w5rDrcKYwoPCmcKkw57CmsK0wpnCoVpcUFfDjMOcw67DnsOPwqXCnFdqwpnCmsOiw63DrsKjal9fw6DDmMOuw5rDqsKjXsKkwqbDssOVw5vDqcOqYcKTwp/CncKow5TDqsOiwqjCo8KYwqBXwqXCk8Khw4LDqMKcwqTCh8Kfw6vDl8KhwrPCmlrCmcKewpnDrcOJwqvCqsKzWlxQV8Otw5zDqsKgwrRTV8KL5Ya16YWh5pCY5ZGdwqXlh6bkvYrlkKdq5b6h6Ki/6La35ryK562Sw5daXFBXwrrDmMOtw4TDn8KsV2pQwqDDoMOjw5zDpWVkZWjDpsOcw53DpMKsZ2VoV8KlwpPCocK6w5/CpnnCplfCs8KTwqHDpsOjwpbCm2Jkwq7Cq8Onw6LDncKeYmRlwrHCmsKmwpnCocKbwpXCkcKUw57DpcOtwqDCtFPCq1fCpcOsw5jDrMKmw5vCmsKVwp7CpMKgwq3CmsKgw4fCosKqwpnCnMOlw5TCqcKuwqhjUFjCh8Oiw6HDnsOow7HCplB+woTCmcKkwqrCp8KqblDCh8KZw6fCqcKuwrTCmsKrZmRZwpnCtMOqw6nDpsKYwofClcKSw4TDnMOuwqjCr2ZnXmPCr8KTwqLDhMOCwod9fFzCmcOfw6PDpMOfU3fClcKTw6TDosKjwpnCvcKbwqLCn8Kdw57CosKrwqrCrGFgXmDCp8KjwprDjMObwpnCkcKiwpnCqMKowq3CsMKoZmZXXMKZwprDm8Olw6bCosKnc8Kiw6jDpsOtw4nDrMKiwqTCn8KTw6jDn8OMw57DnsKcwqLClcKTw63DpsKhwrPCmsKHwqLCpcKVw7bCn8KawqDDnsKYwpPCosKpw6nDp8OFw57Ds1pqUFfDssOUw6nDsMObwqHCl2BhwqvCqcKhw7Y="
+ },
+ {
+ "key": "洽洽影视",
+ "name": "🏕️┃洽洽┃影视",
+ "type": 3,
+ "api": "csp_AppGZ",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "KhY021WelCEl+6MsvwnzaPussky6FQJcpCjT9V7/D61ft9vQAhNEPOYSMZVJSODd/JOOSOwUzim+9qfvgpNz7SvUPpAkXAweyrp76WY8s5EBwW7DBMY="
+ },
+ {
+ "key": "小米电影",
+ "name": "🍚┃小米┃电影",
+ "type": 3,
+ "searchable": 1,
+ "quickSearch": 1,
+ "api": "csp_MovieApp"
+ },
+ {
+ "key": "秀儿影视",
+ "name": "🐷┃秀儿┃影视",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./XBPQ/秀儿影视.json"
+ },
+ {
+ "key": "低端影视",
+ "name": "🦄┃低端┃影视",
+ "type": 3,
+ "api": "csp_Ddys",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "快看影视",
+ "name": "👁️┃快看┃影视",
+ "type": 3,
+ "api": "csp_Kuaikan",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "来看影视",
+ "name": "📺︎┃来看┃影视",
+ "type": 3,
+ "api": "csp_Lkdy",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "全网影视",
+ "name": "🕸️┃全网┃影视",
+ "type": 3,
+ "api": "csp_Quanwk",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "https://www.91qkw.com"
+ },
+ {
+ "key": "奇优影视",
+ "name": "🥝┃奇优┃影视",
+ "type": 3,
+ "api": "csp_Qiyou",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "http://www.dyxz2.com/"
+ },
+ {
+ "key": "海纳影视",
+ "name": "🌊┃海纳┃影视",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./XBPQ/海纳影视.json"
+ },
+ {
+ "key": "面包影视",
+ "name": "🍞┃面包┃影视",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./XBPQ/面包影视.json"
+ },
+ {
+ "key": "永乐影视",
+ "name": "🎵┃永乐┃影视",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./XBPQ/永乐影视.json"
+ },
+ {
+ "key": "雪糕影视",
+ "name": "🧁┃雪糕┃影视",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": "./XBPQ/雪糕影视.json"
+ },
+ {
+ "key": "真心影视",
+ "name": "💞┃真心┃影视",
+ "type": 3,
+ "api": "csp_WebGZ",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "1905",
+ "name": "🎦┃央妈┃电影",
+ "type": 3,
+ "api": "csp_Web1905",
+ "searchable": 1,
+ "quickSearch": 0,
+ "filterable": 0
+ },
+ {
+ "key": "索尼资源",
+ "name": "🐉┃索尼┃采集",
+ "type": 1,
+ "api": "https://suoniapi.com/api.php/provide/vod/",
+ "searchable": 1,
+ "changeable": 1,
+ "categories": [
+ "动作片",
+ "喜剧片",
+ "爱情片",
+ "科幻片",
+ "恐怖片",
+ "剧情片",
+ "战争片",
+ "纪录片",
+ "动画片",
+ "国产剧",
+ "欧美剧",
+ "韩剧",
+ "日剧",
+ "港剧",
+ "台剧",
+ "泰剧",
+ "海外剧",
+ "大陆综艺",
+ "日韩综艺",
+ "港台综艺",
+ "欧美综艺",
+ "国产动漫",
+ "日韩动漫",
+ "欧美动漫",
+ "港台动漫",
+ "海外动漫"
+ ]
+ },
+ {
+ "key": "量子资源",
+ "name": "🥑┃量子┃资源",
+ "type": 1,
+ "api": "https://cj.lziapi.com/api.php/provide/vod/",
+ "searchable": 1,
+ "changeable": 1,
+ "categories": [
+ "动作片",
+ "喜剧片",
+ "科幻片",
+ "恐怖片",
+ "爱情片",
+ "剧情片",
+ "战争片",
+ "记录片",
+ "国产剧",
+ "欧美剧",
+ "香港剧",
+ "韩国剧",
+ "台湾剧",
+ "日本剧",
+ "海外剧",
+ "泰国剧",
+ "国产动漫",
+ "日韩动漫",
+ "欧美动漫",
+ "港台动漫",
+ "海外动漫",
+ "大陆综艺",
+ "港台综艺",
+ "日韩综艺",
+ "欧美综艺"
+ ]
+ },
+ {
+ "key": "非凡资源",
+ "name": "🥗┃非凡┃资源",
+ "type": 1,
+ "api": "http://cj.ffzyapi.com/api.php/provide/vod/",
+ "searchable": 1,
+ "changeable": 1,
+ "categories": [
+ "动作片",
+ "喜剧片",
+ "科幻片",
+ "恐怖片",
+ "爱情片",
+ "剧情片",
+ "战争片",
+ "记录片",
+ "国产剧",
+ "欧美剧",
+ "香港剧",
+ "韩国剧",
+ "台湾剧",
+ "日本剧",
+ "海外剧",
+ "泰国剧",
+ "国产动漫",
+ "日韩动漫",
+ "欧美动漫",
+ "港台动漫",
+ "海外动漫",
+ "大陆综艺",
+ "港台综艺",
+ "日韩综艺",
+ "欧美综艺"
+ ]
+ },
+ {
+ "key": "哆啦新番社",
+ "name": "🖼️┃哆啦┃动漫",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "style": {
+ "type": "list"
+ },
+ "ext": "./XBPQ/哆啦新番社.json"
+ },
+ {
+ "key": "56动漫",
+ "name": "🖼️┃五六┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/56动漫.js"
+ },
+ {
+ "key": "NT动漫",
+ "name": "🖼️┃奈特┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/NT动漫.js"
+ },
+ {
+ "key": "Anime1",
+ "name": "🖼️┃ANM┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/Anime1.js"
+ },
+ {
+ "key": "曼波动漫",
+ "name": "🖼️┃曼波┃动漫",
+ "type": 3,
+ "api": "csp_AppGetApp",
+ "searchable": 1,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "w7TClcK8w5rDrcKYwoPCmcKkw57ClcK0wpvCnF9SwoPCmcOtw5jDj8Orw6ZValLCmMOtw6fDqsOswrRiX8KRwqDDqcKhw6nDpsOpwpnCpcKeYcKnw6fDqcOpwqnClMKgwplew6nDm8OqwpvCplXCpMKZwqDCm8KtwpzDlOWHv+mEm+aPleWQk1zlh6XkvorlkbHCs+W/q+inuei1tOa7gOesicOWwpXCpsKbwrvCmMKje8KVw7LClcK0wpvCsGnClMKTY8KpwqzDncObw5/CmMKTwpFkwq7Cp8KcwqXCnHTClcKjecOvwpXCtMKbwrBpwpTCk2PCqcKsw53Dm8OfwpjCk8KRZMKuwqfCnMO2"
+ },
+ {
+ "key": "稀饭动漫",
+ "name": "🖼️┃稀饭┃动漫",
+ "type": 3,
+ "api": "csp_AppGetApp",
+ "searchable": 1,
+ "quickSearch": 0,
+ "filterable": 0,
+ "ext": "w7TClcK8w5rDrcKYwoPCmcKkw57ClcK0wpvDosKnwqTCoMKjwrPCosKpw7HDoMKUwqDCoF3CqsKmwqrCrsKtbGBgZsKuwqHDncOow61hwpHCoF3DoMOow5vDp8Ohwq3CmMKfwqXCp8Ogw7PDqsOdwp/Cn8KlwpTCp8OWw6nDpsKpwprClcKkwpHDqcOjwqjDrcOywqdSXFLDgsOhw6PDrcORwqLCosKUUsKzwpXCnMKlwpzCp8KZwqBSwrPClcOV5Ye+6YWi5o+Y5ZCTXOWGnOS+kOWRqsK05b+q6KmA6LW35ruA56yJwo3Cm8KfwpzCusOfwqZ7wpXCqcKbwq3CnMKqw7PCjWLCg8Kgw6fCrMOlw6vDqMKtwoZ7wp/CvMKVwqbCm8K7wpjCo3nCpsKbwq3CnMKqw7PCjWLCg8Kgw6fCrMOlw6vDqMKtwoZ7wp/CvMKVwqbCm8ONwpzCpMKVwoXDq8OfwpzCs8KcVcKt"
+ },
+ {
+ "key": "动画片",
+ "name": "🖼️┃动画┃大全",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/动画片大全.js"
+ },
+ {
+ "key": "路漫漫",
+ "name": "🖼️┃路漫┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/路漫漫.js"
+ },
+ {
+ "key": "动漫岛",
+ "name": "🖼️┃岛屿┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/动漫岛.js"
+ },
+ {
+ "key": "去看吧",
+ "name": "🖼️┃看吧┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/去看吧.js"
+ },
+ {
+ "key": "爱弹幕",
+ "name": "🖼️┃弹幕┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/爱弹幕.js"
+ },
+ {
+ "key": "好看动漫",
+ "name": "🖼️┃好看┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/好看动漫.js"
+ },
+ {
+ "key": "奇米动漫",
+ "name": "🖼️┃奇米┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/奇米动漫.js"
+ },
+ {
+ "key": "花子动漫",
+ "name": "🖼️┃花子┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/花子动漫.js"
+ },
+ {
+ "key": "动漫巴士",
+ "name": "🖼️┃巴士┃动漫",
+ "type": 3,
+ "api": "./JS/drpy2.min.js",
+ "ext": "./JS/动漫巴士.js"
+ },
+ {
+ "key": "搜索弹幕",
+ "name": "📀┃网盘┃搜索",
+ "type": 3,
+ "api": "csp_PanSearch",
+ "searchable": 1,
+ "filterable": 0,
+ "changeable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "danmu": true
+ }
+ },
+ {
+ "key": "易搜弹幕",
+ "name": "📀┃易搜┃搜索",
+ "type": 3,
+ "api": "csp_YiSo",
+ "searchable": 1,
+ "filterable": 0,
+ "changeable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "danmu": true,
+ "cookie": "satoken=0eedba28-be8a-4f01-81af-2d8d44808ecf"
+ }
+ },
+ {
+ "key": "云盘弹幕",
+ "name": "📀┃超清┃云盘",
+ "type": 3,
+ "api": "csp_Yunpan4k",
+ "searchable": 1,
+ "filterable": 0,
+ "changeable": 1,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "danmu": true
+ }
+ },
+ {
+ "key": "夸搜弹幕",
+ "name": "📀┃夸克┃搜索",
+ "type": 3,
+ "api": "csp_Qkso",
+ "searchable": 1,
+ "filterable": 1,
+ "changeable": 0,
+ "ext": {
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "danmu": true
+ }
+ },
+ {
+ "key": "小纸条弹幕",
+ "name": "📀┃纸条┃搜索",
+ "type": 3,
+ "api": "csp_XiaoZhiTiao",
+ "searchable": 1,
+ "filterable": 1,
+ "changeable": 0,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "danmu": true
+ }
+ },
+ {
+ "key": "夸克趣盘搜弹幕",
+ "name": "📀┃趣盘┃搜索",
+ "type": 3,
+ "api": "csp_QuPanSou",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "changeable": 1,
+ "ext": {
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "danmu": true
+ }
+ },
+ {
+ "key": "夸克短剧弹幕",
+ "name": "📀┃夸克┃短剧",
+ "type": 3,
+ "api": "csp_Qkdj",
+ "searchable": 1,
+ "filterable": 1,
+ "changeable": 0,
+ "ext": {
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "danmu": true
+ }
+ },
+ {
+ "key": "修罗影视",
+ "name": "🧲┃修罗┃磁力",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "./XBPQ/修罗影视.json"
+ },
+ {
+ "key": "80S",
+ "name": "🧲┃80S┃磁力",
+ "type": 3,
+ "api": "csp_BLSGod",
+ "playerType": 1,
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "New6v",
+ "name": "🧲┃六维┃磁力",
+ "type": 3,
+ "api": "csp_New6v",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "https://www.xb6v.com"
+ },
+ {
+ "key": "SeedHub",
+ "name": "🧲┃种子┃磁力",
+ "type": 3,
+ "api": "csp_SeedHub",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "美剧迷",
+ "name": "🧲┃美剧┃磁力",
+ "type": 3,
+ "api": "csp_MeijuMi",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "迅雷吧",
+ "name": "🧲┃迅雷┃磁力",
+ "type": 3,
+ "api": "csp_Xunlei8",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "电影港",
+ "name": "🧲┃港口┃磁力",
+ "type": 3,
+ "api": "csp_XYQHiker",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "./json/电影港.json"
+ },
+ {
+ "key": "狐狸君",
+ "name": "🧲┃狐狸┃磁力",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "changeable": 1,
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1,
+ "ext": "./XBPQ/狐狸君.json"
+ },
+ {
+ "key": "Mp4电影",
+ "name": "🧲┃高清┃磁力",
+ "type": 3,
+ "api": "csp_Mp4Mov",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "美剧天堂",
+ "name": "🧲┃天堂┃磁力",
+ "type": 3,
+ "api": "csp_MeijuTT",
+ "searchable": 1,
+ "quickSearch": 1,
+ "filterable": 1
+ },
+ {
+ "key": "我的阿里",
+ "name": "🧑💼┃我的┃阿里",
+ "type": 3,
+ "api": "csp_MyAli",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "indexs": 0,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt"
+ },
+ "style": {
+ "type": "list"
+ }
+ },
+ {
+ "key": "我的夸克",
+ "name": "🧑💼┃我的┃夸克",
+ "type": 3,
+ "api": "csp_MyQuark",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "indexs": 0,
+ "ext": {
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt"
+ },
+ "style": {
+ "type": "list"
+ }
+ },
+ {
+ "key": "我的UC",
+ "name": "🧑💼┃我的┃UC",
+ "type": 3,
+ "api": "csp_MyUc",
+ "searchable": 0,
+ "quickSearch": 0,
+ "filterable": 0,
+ "indexs": 0,
+ "ext": {
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt"
+ },
+ "style": {
+ "type": "list"
+ }
+ },
+ {
+ "key": "阿里合集",
+ "name": "🦊┃阿里┃合集",
+ "type": 3,
+ "api": "csp_AliShare",
+ "searchable": 1,
+ "changeable": 0,
+ "filterable": 0,
+ "indexs": 0,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "share": "./JS/alishare.txt"
+ },
+ "style": {
+ "type": "list"
+ }
+ },
+ {
+ "key": "AList",
+ "name": "🧭┃ALi┃合集",
+ "type": 3,
+ "api": "csp_AList",
+ "searchable": 1,
+ "filterable": 1,
+ "changeable": 0,
+ "style": {
+ "type": "list"
+ },
+ "ext": "./JSON/alist.json"
+ },
+ {
+ "key": "网络直播",
+ "name": "🪗┃网络┃直播",
+ "type": 3,
+ "api": "csp_Living",
+ "searchable": 1
+ },
+ {
+ "key": "push_agent",
+ "name": "📲┃手机┃推送",
+ "type": 3,
+ "api": "csp_Push",
+ "searchable": 0,
+ "filterable": 0,
+ "changeable": 0,
+ "ext": {
+ "token": "http://127.0.0.1:9978/file/TVBox/token.txt",
+ "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt",
+ "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt",
+ "danmu": true
+ }
}
- }
- },
- {
- "name": "自动②号",
- "type": "1",
- "url": "http://43.248.100.147:6068/KEY/XGJ/root/key/70.php?url=",
- "ext": {
- "flag": [
- "youku",
- "qq",
- "qiyi",
- "bilibili",
- "mgtv",
- "pptv",
- "xigua",
- "NBY",
- "ETH-",
- "BBA",
- "TX",
- "MXTV",
- "mytv",
- "nmys",
- "yhdm",
- "BNNB",
- "letu",
- "DJWB",
- "DJWX",
- "DJWT",
- "duanju"
- ],
- "header": {
- "User-Agent": "Dalvik/2.1.0"
+ ],
+ "parses": [
+ {
+ "name": "臻享",
+ "type": "1",
+ "url": "https://zy.qiaoji8.com/gouzi.php?url=",
+ "ext": {
+ "flag": [
+ "qq",
+ "腾讯",
+ "qiyi",
+ "爱奇艺",
+ "奇艺",
+ "youku",
+ "优酷",
+ "sohu",
+ "搜狐",
+ "letv",
+ "乐视",
+ "mgtv",
+ "芒果",
+ "tnmb",
+ "seven",
+ "bilibili",
+ "1905"
+ ],
+ "header": {
+ "User-Agent": "okhttp/4.9.1"
+ }
+ }
+ },
+ {
+ "name": "优选",
+ "type": 1,
+ "url": "http://1.94.221.189:88/algorithm.php?url=",
+ "ext": {
+ "flag": [
+ "qq",
+ "腾讯",
+ "qiyi",
+ "爱奇艺",
+ "奇艺",
+ "youku",
+ "优酷",
+ "sohu",
+ "搜狐",
+ "letv",
+ "乐视",
+ "mgtv",
+ "芒果",
+ "tnmb",
+ "seven",
+ "bilibili",
+ "1905"
+ ],
+ "header": {
+ "User-Agent": "okhttp/4.9.1"
+ }
+ }
+ },
+ {
+ "name": "至臻",
+ "type": 1,
+ "url": "http://yunhai.qijiyun.vip/home/api?type=ys&uid=177259&key=dijnouxKNOQSTUWXY5&url=",
+ "ext": {
+ "flag": [
+ "qq",
+ "腾讯",
+ "qiyi",
+ "爱奇艺",
+ "奇艺",
+ "youku",
+ "优酷",
+ "sohu",
+ "搜狐",
+ "letv",
+ "乐视",
+ "mgtv",
+ "芒果",
+ "tnmb",
+ "seven",
+ "bilibili",
+ "1905"
+ ],
+ "header": {
+ "User-Agent": "okhttp/4.9.1"
+ }
+ }
+ },
+ {
+ "name": "无双",
+ "type": 1,
+ "url": "http://1.94.221.189:88/algorithm.php?url=",
+ "ext": {
+ "flag": [
+ "hgvip"
+ ],
+ "header": {
+ "User-Agent": "okhttp/4.9.1"
+ }
+ }
+ },
+ {
+ "name": "线路1",
+ "type": 0,
+ "url": "https://www.8090g.cn/?url="
+ },
+ {
+ "name": "线路2",
+ "type": 0,
+ "url": "https://jx.m3u8.tv/jiexi/?url="
+ },
+ {
+ "name": "线路3",
+ "type": 0,
+ "url": "https://www.ckplayer.vip/jiexi/?url="
+ },
+ {
+ "name": "线路4",
+ "type": 0,
+ "url": "https://yparse.ik9.cc/index.php?url="
+ },
+ {
+ "name": "线路5",
+ "type": 0,
+ "url": "https://bd.jx.cn/?url="
+ },
+ {
+ "name": "线路6",
+ "type": 0,
+ "url": "https://jx.yparse.com/index.php?url="
+ },
+ {
+ "name": "线路7",
+ "type": 0,
+ "url": "https://jx.hls.one/?url="
+ },
+ {
+ "name": "线路8",
+ "type": 0,
+ "url": "https://pl.a6club.com/player/analysis.php?v="
+ },
+ {
+ "name": "线路9",
+ "type": 0,
+ "url": "https://jx.2s0.cn/player/?url="
+ },
+ {
+ "name": "线路10",
+ "type": 0,
+ "url": "https://jx.nnxv.cn/tv.php?url="
}
- }
- },
- {
- "name": "自动③号",
- "type": 0,
- "url": "https://bd.jx.cn/?url=",
- "ext": {
- "flag": [
- "qq",
- "腾讯",
- "qiyi",
- "爱奇艺",
- "奇艺",
- "youku",
- "优酷",
- "tucheng",
- "sohu",
- "搜狐",
- "letv",
- "乐视",
- "mgtv",
- "芒果",
- "tnmb",
- "seven",
- "yzm",
- "aliyun",
- "RJuMao",
- "bilibili",
- "1905",
- "xinvip",
- "XAL",
- "qiqi",
- "XALS",
- "YuMi-vip"
- ]
- }
- },
- {
- "name": "自动④号",
- "type": 1,
- "url": "https://2.08bk.com/?url=",
- "ext": {
- "flag": [
- "qq",
- "腾讯",
- "qiyi",
- "爱奇艺",
- "奇艺",
- "youku",
- "优酷",
- "tucheng",
- "sohu",
- "搜狐",
- "letv",
- "乐视",
- "mgtv",
- "芒果",
- "tnmb",
- "seven",
- "yzm",
- "aliyun",
- "RJuMao",
- "bilibili",
- "1905",
- "xinvip",
- "XAL",
- "qiqi",
- "XALS",
- "YuMi-vip"
- ]
- }
- },
- {
- "name": "自动④号",
- "type": "1",
- "url": "http://43.248.100.147:6068/bba/bbajson.php?url=",
- "ext": {
- "flag": [
- "BBA"
- ],
- "header": {
- "User-Agent": "Dalvik/2.1.0"
+ ],
+ "rules": [
+ {
+ "name": "农民",
+ "hosts": [
+ "toutiaovod.com"
+ ],
+ "regex": [
+ "video/tos/cn"
+ ]
+ },
+ {
+ "name": "火山",
+ "hosts": [
+ "huoshan.com"
+ ],
+ "regex": [
+ "item_id="
+ ]
+ },
+ {
+ "name": "抖音",
+ "hosts": [
+ "douyin.com"
+ ],
+ "regex": [
+ "is_play_url="
+ ]
+ },
+ {
+ "name": "饭团点击",
+ "hosts": [
+ "dadagui",
+ "freeok",
+ "dadagui"
+ ],
+ "script": [
+ "document.querySelector(\"#playleft iframe\").contentWindow.document.querySelector(\"#start\").click();"
+ ]
+ },
+ {
+ "name": "毛驴点击",
+ "hosts": [
+ "www.maolvys.com"
+ ],
+ "script": [
+ "document.getElementsByClassName('swal-button swal-button--confirm')[0].click()"
+ ]
}
- }
- },
- {
- "name": "线路1",
- "type": 0,
- "url": "https://jx.xyflv.cc/?url=",
- "ext": {
- "header": {
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57"
+ ],
+ "doh": [
+ {
+ "name": "Google",
+ "url": "https://dns.google/dns-query",
+ "ips": [
+ "8.8.4.4",
+ "8.8.8.8"
+ ]
+ },
+ {
+ "name": "Cloudflare",
+ "url": "https://cloudflare-dns.com/dns-query",
+ "ips": [
+ "1.1.1.1",
+ "1.0.0.1",
+ "2606:4700:4700::1111",
+ "2606:4700:4700::1001"
+ ]
+ },
+ {
+ "name": "AdGuard",
+ "url": "https://dns.adguard.com/dns-query",
+ "ips": [
+ "94.140.14.140",
+ "94.140.14.141"
+ ]
+ },
+ {
+ "name": "DNSWatch",
+ "url": "https://resolver2.dns.watch/dns-query",
+ "ips": [
+ "84.200.69.80",
+ "84.200.70.40"
+ ]
+ },
+ {
+ "name": "Quad9",
+ "url": "https://dns.quad9.net/dns-quer",
+ "ips": [
+ "9.9.9.9",
+ "149.112.112.112"
+ ]
}
- }
- },
- {
- "name": "线路2",
- "type": 0,
- "url": "https://bo.htoo.vip/player?url=",
- "ext": {
- "header": {
- "user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
+ ],
+ "lives": [
+ {
+ "name": "ITV",
+ "type": 0,
+ "url": "./ITV.txt",
+ "epg": "http://epg.51zmt.top:8000/e.xml",
+ "ua": "okhttp/3.15,AptvPlayer/1.4.0",
+ "timeout": 3,
+ "playerType": 2
+ },
+ {
+ "name": "肥羊直播",
+ "type": 3,
+ "api": "csp_Feiyang",
+ "url": "https://9877.kstore.space/Live/live.m3u",
+ "timeout": 10,
+ "ua": "okhttp/3.15",
+ "catchup": {
+ "type": "append",
+ "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z"
+ }
+ },
+ {
+ "name": "AI直播",
+ "type": 0,
+ "url": "https://wget.la/https://raw.githubusercontent.com/PizazzGY/TV/master/output/user_result.txt",
+ "epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}",
+ "playerType": 2,
+ "timeout": 10
+ },
+ {
+ "name": "虎牙一起看",
+ "type": 3,
+ "api": "csp_Feiyang",
+ "url": "https://9877.kstore.space/Live/huyayqk.m3u",
+ "timeout": 10,
+ "ua": "okhttp/3.15"
+ },
+ {
+ "name": "斗鱼一起看",
+ "type": 3,
+ "api": "csp_Feiyang",
+ "url": "https://9877.kstore.space/Live/douyuyqk.m3u",
+ "timeout": 10,
+ "ua": "okhttp/3.15"
+ },
+ {
+ "name": "YY轮播",
+ "type": 3,
+ "api": "csp_Feiyang",
+ "url": "https://9877.kstore.space/Live/yylunbo.m3u",
+ "timeout": 10,
+ "ua": "okhttp/3.15"
+ },
+ {
+ "name": "电视Live",
+ "type": 0,
+ "url": "http://127.0.0.1:9978/proxy?do=live&u=Gather",
+ "playerType": 2,
+ "timeout": 10
+ },
+ {
+ "name": "网络Live",
+ "type": 0,
+ "url": "http://127.0.0.1:9978/proxy?do=live&url=https://tv.iill.top/m3u/Live",
+ "playerType": 2,
+ "timeout": 10
+ },
+ {
+ "name": "范明明",
+ "type": 0,
+ "url": "https://live.fanmingming.cn/tv/m3u/ipv6.m3u",
+ "playerType": 2,
+ "timeout": 10
+ },
+ {
+ "name": "APTV",
+ "type": 0,
+ "url": "https://wget.la/https://github.com/Kimentanm/aptv/raw/master/m3u/iptv.m3u",
+ "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}",
+ "logo": "https://epg.iill.top/logo/{name}.png",
+ "ua": "okhttp/3.15,AptvPlayer/1.4.0",
+ "timeout": 10,
+ "playerType": 2
}
- }
- },
- {
- "name": "线路3",
- "type": 0,
- "url": "https://jx.yparse.com/index.php?url=",
- "ext": {
- "header": {
- "user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
+ ],
+ "hosts": [
+ "cache.ott.*.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com",
+ "cache.ott.ystenlive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com",
+ "cache.ott.bestlive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com",
+ "cache.ott.wasulive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com",
+ "cache.ott.fifalive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com",
+ "cache.ott.hnbblive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com"
+ ],
+ "flags": [
+ "youku",
+ "优酷",
+ "优 酷",
+ "优酷视频",
+ "qq",
+ "腾讯",
+ "腾 讯",
+ "腾讯视频",
+ "iqiyi",
+ "qiyi",
+ "奇艺",
+ "爱奇艺",
+ "爱 奇 艺",
+ "m1905",
+ "xigua",
+ "letv",
+ "leshi",
+ "乐视",
+ "乐 视",
+ "sohu",
+ "搜狐",
+ "搜 狐",
+ "搜狐视频",
+ "tudou",
+ "pptv",
+ "mgtv",
+ "芒果",
+ "imgo",
+ "芒果TV",
+ "芒 果 T V",
+ "bilibili",
+ "哔 哩",
+ "哔 哩 哔 哩"
+ ],
+ "ijk": [
+ {
+ "group": "软解码",
+ "options": [
+ {
+ "category": 4,
+ "name": "opensles",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "overlay-format",
+ "value": "842225234"
+ },
+ {
+ "category": 4,
+ "name": "framedrop",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "soundtouch",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "start-on-prepared",
+ "value": "1"
+ },
+ {
+ "category": 1,
+ "name": "http-detect-range-support",
+ "value": "0"
+ },
+ {
+ "category": 1,
+ "name": "fflags",
+ "value": "fastseek"
+ },
+ {
+ "category": 2,
+ "name": "skip_loop_filter",
+ "value": "48"
+ },
+ {
+ "category": 4,
+ "name": "reconnect",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "enable-accurate-seek",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-auto-rotate",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-handle-resolution-change",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-hevc",
+ "value": "0"
+ },
+ {
+ "category": 1,
+ "name": "dns_cache_timeout",
+ "value": "600000000"
+ }
+ ]
+ },
+ {
+ "group": "硬解码",
+ "options": [
+ {
+ "category": 4,
+ "name": "opensles",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "overlay-format",
+ "value": "842225234"
+ },
+ {
+ "category": 4,
+ "name": "framedrop",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "soundtouch",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "start-on-prepared",
+ "value": "1"
+ },
+ {
+ "category": 1,
+ "name": "http-detect-range-support",
+ "value": "0"
+ },
+ {
+ "category": 1,
+ "name": "fflags",
+ "value": "fastseek"
+ },
+ {
+ "category": 2,
+ "name": "skip_loop_filter",
+ "value": "48"
+ },
+ {
+ "category": 4,
+ "name": "reconnect",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "enable-accurate-seek",
+ "value": "0"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-auto-rotate",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-handle-resolution-change",
+ "value": "1"
+ },
+ {
+ "category": 4,
+ "name": "mediacodec-hevc",
+ "value": "1"
+ },
+ {
+ "category": 1,
+ "name": "dns_cache_timeout",
+ "value": "600000000"
+ }
+ ]
}
- }
- },
- {
- "name": "线路4",
- "type": 0,
- "url": "https://jx.aidouer.net/?url=",
- "ext": {
- "header": {
- "user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36",
- "referer": "https://jiejie.uk/"
- }
- }
- },
- {
- "name": "线路5",
- "type": 0,
- "url": "https://www.8090g.cn/?url="
- },
- {
- "name": "线路6",
- "type": 0,
- "url": "https://jx.yangtu.top?url="
- },
- {
- "name": "线路7",
- "type": 0,
- "url": "https://jx.m3u8.tv/jiexi/?url="
- },
- {
- "name": "线路8",
- "type": 0,
- "url": "https://www.ckplayer.vip/jiexi/?url="
- }
- ],
- "flags": [
- "youku",
- "优酷",
- "优 酷",
- "优酷视频",
- "qq",
- "腾讯",
- "腾 讯",
- "腾讯视频",
- "iqiyi",
- "qiyi",
- "奇艺",
- "爱奇艺",
- "爱 奇 艺",
- "AiKu",
- "aiku",
- "m1905",
- "xigua",
- "letv",
- "leshi",
- "乐视",
- "乐 视",
- "sohu",
- "搜狐",
- "搜 狐",
- "搜狐视频",
- "tudou",
- "pptv",
- "mgtv",
- "芒果",
- "imgo",
- "芒果TV",
- "芒 果 T V",
- "bilibili",
- "哔 哩",
- "哔 哩 哔 哩"
- ],
- "ijk": [
- {
- "group": "软解码",
- "options": [
- {
- "category": 4,
- "name": "opensles",
- "value": "0"
- },
- {
- "category": 4,
- "name": "overlay-format",
- "value": "842225234"
- },
- {
- "category": 4,
- "name": "framedrop",
- "value": "1"
- },
- {
- "category": 4,
- "name": "soundtouch",
- "value": "1"
- },
- {
- "category": 4,
- "name": "start-on-prepared",
- "value": "1"
- },
- {
- "category": 1,
- "name": "http-detect-range-support",
- "value": "0"
- },
- {
- "category": 1,
- "name": "fflags",
- "value": "fastseek"
- },
- {
- "category": 2,
- "name": "skip_loop_filter",
- "value": "48"
- },
- {
- "category": 4,
- "name": "reconnect",
- "value": "1"
- },
- {
- "category": 4,
- "name": "max-buffer-size",
- "value": "5242880"
- },
- {
- "category": 4,
- "name": "enable-accurate-seek",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec-auto-rotate",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec-handle-resolution-change",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec-hevc",
- "value": "0"
- },
- {
- "category": 1,
- "name": "dns_cache_timeout",
- "value": "600000000"
- }
- ]
- },
- {
- "group": "硬解码",
- "options": [
- {
- "category": 4,
- "name": "opensles",
- "value": "0"
- },
- {
- "category": 4,
- "name": "overlay-format",
- "value": "842225234"
- },
- {
- "category": 4,
- "name": "framedrop",
- "value": "1"
- },
- {
- "category": 4,
- "name": "soundtouch",
- "value": "1"
- },
- {
- "category": 4,
- "name": "start-on-prepared",
- "value": "1"
- },
- {
- "category": 1,
- "name": "http-detect-range-support",
- "value": "0"
- },
- {
- "category": 1,
- "name": "fflags",
- "value": "fastseek"
- },
- {
- "category": 2,
- "name": "skip_loop_filter",
- "value": "48"
- },
- {
- "category": 4,
- "name": "reconnect",
- "value": "1"
- },
- {
- "category": 4,
- "name": "max-buffer-size",
- "value": "5242880"
- },
- {
- "category": 4,
- "name": "enable-accurate-seek",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec",
- "value": "1"
- },
- {
- "category": 4,
- "name": "mediacodec-auto-rotate",
- "value": "1"
- },
- {
- "category": 4,
- "name": "mediacodec-handle-resolution-change",
- "value": "1"
- },
- {
- "category": 4,
- "name": "mediacodec-hevc",
- "value": "1"
- },
- {
- "category": 1,
- "name": "dns_cache_timeout",
- "value": "600000000"
- }
- ]
- }
- ]
+ ],
+ "ads": [
+ "static-mozai.4gtv.tv"
+ ]
}
\ No newline at end of file
diff --git a/custom_spider.jar b/custom_spider.jar
deleted file mode 100644
index 4e4fd65..0000000
Binary files a/custom_spider.jar and /dev/null differ
diff --git a/drpy_js/01看球[球].js b/drpy_js/01看球[球].js
deleted file mode 100644
index 9a2430c..0000000
--- a/drpy_js/01看球[球].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/0855影视.js b/drpy_js/0855影视.js
deleted file mode 100644
index 4779390..0000000
--- a/drpy_js/0855影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/111tv[自动].js b/drpy_js/111tv[自动].js
deleted file mode 100644
index 5986046..0000000
--- a/drpy_js/111tv[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogIHRpdGxlOiAiMTExdHYiLAogIOaooeadvzogIuiHquWKqCIsCiAgaG9zdDogImh0dHBzOi8vd3d3LjExMXR2cy5jb20iLAogIHVybDogIi92b2RzaG93L2Z5ZmlsdGVyLmh0bWwiLAogIGZpbHRlcmFibGU6IDEsCiAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQSsyYmEwOGJSeFNHLzh0K2FpVXFlVzNNSmQ5Qzd2Zjd0Y3FIdEVJcWFwcEtUVnFwaXBBQVkyTk1zQUVCRHNHQk51RFlVSHlCRU5mWVhmZ3plL08vNk5wejVweXpyUlE1aGJUUXpJZEllWjkzZDNablptZk9xM0h5VEFzR3RHTmZQdE8rN2Y5Wk82WTVtM1ZyYVVMcjBCNC8vSzZmNjU4ZVB2cXh2M1hoWXc5YjBYd2prbTlpVDNnTkRIWUk3c3krYzNNeGF6ejNXZC9BbzRHdnZEK2Z3MFZkT2w1a0xScG1MZWRkSk84bnE3Rzh4bmlRMnQxTk1oNmlwbEpseGp1UjI5VVM0ejNFMDFuR3c4ak5hc2FhVEp1MWw4enRvcWRFSzJaOUh2c21MK2pXQmg4MEx4RWo1eGwySkVvamgvbzlJMGRQbU05UXd5Q3c3L0ZOYUlnRTltZDR5aDZhQnc4RXRwbkltMFpHdGlrRXRwbWJ0bmJxc2swaDhENThjUkw0dlBnTHN6WXVueWVFOU56Q0crdjVPbmdnOEhtSmttTklEd1RONGFxN2dzOFRBcitIVnpQMmk2dzFYTEVpS2JqQ2g3Q05Zc1dxRldRYlFxQ1hIYU8rZ2tBdkdiTlNXOUlUQXQrNW5yS2lWZm5PUXVEM3N2T3IvV29hUEJBNFJwR292VkNTWXlRRVBtOHU1bzJhZko0US9DTnlTd1UzUDBRZkVlcTJQcUpGdzd0ZU5pNEVUczdFSm5rZ3NLTmJxK1NCd0FsSUc5N0NJSnMwVzdMTUZvSXROL0pBc0VWbEZTUHliWVh3cmFlZGJiTnVzUFVrZFR0REVReDRtNEhjbmRpKzRJa1E4UkRuUWVKQnpuWGlPdWNCNGdIRzlWN2szbDhaN3lIZXczazM4VzdPdTRoM2NSNG1IdWFjK3F2ei91clVYNTMzVjZmKzZyeS9PdlZYNS8zVnFiODY3MitBK3V2OTFUZUJoYlJkbW1RVEtQVmZKaEF4bjhEakFJNGo2UVBTaCtRRWtCTklUZ0k1aWVRVWtGTklUZ001amVRTWtETkl6Z0k1aStRY2tITkl6Z001aitRQ2tBdElMZ0s1aU9RU2tFdElMZ081ak9RS2tDdElyZ0s1aXVRYWtHdElyZ081anVRR2tCdEliZ0s1aWVRV2tGdEliZ081amVRT2tEdEk3Z0s1aStRZWtIdEk3Z081anlUd2hmeFdBcjRQeFU3T1dMVVVmU2lvL1IrS25hNDAwdHRrZXVqcGdIY0Q3c20xbWwyZTlmbmZERHg5UWx0Z2FkU0t4M3orazYrLy82Ry8rUzRQT3JSZzczNWpFQzEzVVcyZDhUR3dRclJpUkhGbkZpMHlVZHVaeGZKUHEwUXppNWF5cVByTW90VXZpamV6YU1NUXRadFp0TWU0eGJKbHpER0x0aVV2QWxuRzV0K3pIWFhQamlUc2taZDBjeGZyUTZ2c000dkZ1TmhNWTJHTldTekpqV3c0ODlQTUNxdlVkU0NwSzVGM1p1djBuazNSVG1LeUMyL00zVi9rdXdqaG4wWjVueEI0MzlJNkpSOFE3WXlubUgvcENlSC8yREJwdFVRNzZVMUVTRitlcERibng5enhtbXhUQ096ZmJsR3NBTmxGMU8xazJmZGxUWGR2eXBzRE9ZdEMwS2htS0d1Q1FHOTB6L2xOOWdRRWpvQXg3ZFF6dmhmMm9VODBkOXB2NTVnbkJFM3c3NnduUXRCOVpYNWZXV1ZabFdWVmxsVlo5akJtMlZEUFByTnNpSmExdFpwckxNU2MraDlVRmtPMEdUUVAybEpsbjl2SjBtQTY2KzNNZnBjV29yMlJjM2FUZmpkNGNPbXVNVFR1NUlaa2dSQ0Nra1BVSGwzRzVOQVNsSC8zM0hKY2xpd2g4TDZaZ3AyUTlSWUVkVFpxVjJYaUFFSEY2cTI1TTRYRnFpV3dETzRtR3l2eVhVQ2dWMXUzaWt2U0V3S2Z0N2pGa29vUUZOU1g3VzFNbWtMUWxGWHRlTXFzelZEaThDRWNoKzNYWG02UzR5QUV0ckU1NGc0L2wzY0w4WW5tQ1ZYN05WWDdOVlg3VmUwL0hMVy9NN1RQMnQvSnpwYlNXVHV6NFRzcTZHUkhNNjM2N1hkcEtjT3ZmRDZYTmdDUkcvd3ViUnZpQnplL1M1dU5NN2RPeHpiaFhuVWVwTTZEWktwVDUwSHFQT2dEODVzNkQxS1pVR1ZDbFFuLzE1bVEvN2FwSXBLS1NDb2lxWWgweUNPU3FyQ3F3aDZkQ2h2V1ZZVlZGVlpWV0ZWaGowNkZWWWNRa3F0RENFMUZKQldSUG5KRUN1N3poNmt3TFNNck5la2FHMDdjWUQ4RThmOFYxcXh4Wm4yQlFrR1kvV3lWcmpock5XZHR6NjBrcEVzTDNSMmR0cmVYZkFVK1ROdURreXliOVpWR3hMQ3FJOUtsVGFVeDhzNHVwM3pGTGR4emtQK2dKZWEreHVJaUJIcVpxajBrMHhFSWZPbmhzdVhsdXJ3TU9xUnh3TW9wSzF0eEp0S3lXcURHTm1ZelZsRU9Kb2ovS3JIKzY2bjBZeVJQbFM3L1licjhrQVNwS3FTcWtOcFJxWkNEZndKNk9wVkRpejBBQUE9PSIsCiAgZmlsdGVyX3VybDogInt7Zmwu57G75Z6LfX0tLXt7Zmwu5o6S5bqPfX0te3tmbC7liafmg4V9fS17e2ZsLuivreiogH19LXt7Zmwu5a2X5q+NfX0tLS1meXBhZ2UtLS17e2ZsLuW5tOS7vX19IiwKICBmaWx0ZXJfZGVmOiB7CiAgICAyMDogewogICAgICDnsbvlnos6ICIyMCIKICAgIH0sCiAgICAyOTogewogICAgICDnsbvlnos6ICIyOSIKICAgIH0sCiAgICAzODogewogICAgICDnsbvlnos6ICIzOCIKICAgIH0sCiAgICA0MzogewogICAgICDnsbvlnos6ICI0MyIKICAgIH0sCiAgICA0OTogewogICAgICDnsbvlnos6ICI0OSIKICAgIH0sCiAgICA1MTogewogICAgICDnsbvlnos6ICI1MSIKICAgIH0sCiAgICA1MjogewogICAgICDnsbvlnos6ICI1MiIKICAgIH0KICB9LAogIGNsYXNzX3BhcnNlOiAiLm5hdmJhci1pdGVtcyYmbGk7YSYmVGV4dDthJiZocmVmOy4qLyhcXGQrKS5odG1sIiwKICAgIOaQnOe0ojogIi5tb2R1bGUtaXRlbXMmJi5tb2R1bGUtaXRlbTtzdHJvbmcmJlRleHQ7aW1nJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0O2EmJmhyZWY7Lm1vZHVsZS1jYXJkLWl0ZW0taW5mby0tc3Ryb25nJiZUZXh0IiwKfQ==
\ No newline at end of file
diff --git a/drpy_js/222听书[听].js b/drpy_js/222听书[听].js
deleted file mode 100644
index 6f20224..0000000
--- a/drpy_js/222听书[听].js
+++ /dev/null
@@ -1 +0,0 @@
-SDRzSUFBQUFBQUFDQTNXVThXdlRRQlRIZis5ZkVUSkkycG9sczRvL3BKUXhSVkJ3K0lQdUo1VjRTNjdyYmRjbXkxM2ExVnFvNHNSaDFTb0tPb2NEa1RtWXJnd0diaFB4bjFsUy9TOThsNlIxYys0Q3VkeDduL3ZldTNjdlYwZSs1QWNVbDFvWkNSb25uR0pUTFJRS1llL0w0ZjdHTGVqdXFGcnNHK3g4RHo4OE5TVTFjYVhXaXNzNDJDcWNlNlpoTkJvTkhTWTd6WVp1dTlVVUNYd0toTkZreHRueGN0TkRjMWl2OENwTnZRd2ozNjdNQUtNYXliZnVWYnhKZ1pVU1drbk1EZGQzU3ZsOE91Sk5ENWVPU2FCWkNMMmdHVWIwdGgvMk5zSmVmL0I2TTF6ZURIYzZVVzl0c1BzeGdSY0RZaS9jaUdlWUUvL1NQN2QrZDlhUDBtVkNPZlpqNlJQd2s4ZVFrc0hYOTc4N0sya3VNSEt3ejh5V1lReCt2QnhzdlJ1c1B2clYveGJ0UEF3LzdXcmhkamQ2c3h1OTdrZmRCOUZLSjFwYkFiY1c3dTJGZXhzQkNsOTFiZGRkSUpqRlVxS3BNd3o3NDFOenVNWlZVNTIrZnZIcXRjdld6RlM2YWRFTVE1SXZ4Yk5rVTVLVE5OUXdka3J1Z2h4RDdZUzFLV0xNOHBEUDRIQjFrVHBGb2FTSUZPVW1YdUtpci9pNFhJUVR5dXI1eWR6UjQ3RVJ4eFplc21uZ3dOencrVHBzSzNWNUZEVlRVZTRIT0RGU1VpWGN2SkFNb3VlYnY1NzFZRW5HQXpMdW9Wb05VOHVhZFJRbG9NV0F4a0hra3djMEhUY1FlWTYxeE5hUzJlSGo1WEI3UDAzOGkyNEl5ZHhlUGZ6eExITzQxeGtjZkI2SzExMkhFc2FIKzRvTHVhaFRkSzlKWFFRTE9vaWpjZGNuYzZTRzZGSEgwUXhBRUljSFhhSGFrbU1GMlpRVGVkdXRjVGdIeTNJd1J3UWkxNGNmOGZ4VElFOHJKSUNzeWFRNko5Uk9pUWdBQnpQNzlQVzhrVkRxRW1qaUhNSWpncU5aTmxKS0UyTlpvam9WaGNFcEFDSk1weklCTmZGaWRvdzRPWkZPR1lvbytTVk1WUnlUMklGNWQ1NlpHYzhwVjZTU05NODhYWHdXNFlYK2poR01SNlBpcUdaeEhkR3N3TE0rWGd3dzQxbFM4d0t1dGRvNVRScFdDbFFXOWkyclRoenNRc3kyVHp6WTNoVlJscmxjTEZXSGl3c3VGbGlnNWpaRzRxUXNaWTNidC9YcWVYUmZkTjQ1UStkaURVQnpPYWsxQW1OWXJBc0N4NjJpelMrWjBvUjJ3aHhmWlBBNm80NFJOaDB3WXBkRXNZNnBKOUhrdDVBbWpqbmFvMUZid3BUaC84V1RPUTdmMVRMdHpCOWZlRXlMcFFVQUFBPT0=
\ No newline at end of file
diff --git a/drpy_js/29片库[密].js b/drpy_js/29片库[密].js
deleted file mode 100644
index 8851880..0000000
--- a/drpy_js/29片库[密].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/310直播[球].js b/drpy_js/310直播[球].js
deleted file mode 100644
index a424459..0000000
--- a/drpy_js/310直播[球].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/3VQPU8CQRDt/RUXij01chwaLI4Qg8TCBGOh1GQ49o6VvQ9390AwJCa0aoiNhVY20qCFxBh+j+HwX7j3gWLhJpudffPezLzpAFNYQLFSUi7XFHkEERQbirqT18OH6fxuom7FeMvjQsItIXwjl+t2u5pkaKKTpgNGZTa3x0s6EqU8gpLVMylwjmwZ+WDjlMgxMLNVi+l/IGhEffUEOg+I2T6J8R8sLld3wYnGC4eTr/sxWry/haMhCl9f5KOu8pKBdJRH20sHGJqYcSM1Gh21xjHLlm3sClWyj473D6sH9VpZjRmDVEfamFUJFxVPlsxABwSwzEquEjX8hyCIg71Abq6g66kPn0Kv7gPj0ocFlOMEptDv/e6EEodI1W7ya3pBvJ0V+vx2vLgZScFmqvj8uApnzxLQqBylbnqukLYUKGpnBBrEwq6NkG9QsV7YQOgUX4iiZmGKiWMr8iLEmVkEhETW7VtZLwpbDFvL6rPrpPqy3Xz0GE6fkoEH38GIm9BGAgAA
\ No newline at end of file
diff --git a/drpy_js/348电影网.js b/drpy_js/348电影网.js
deleted file mode 100644
index 104d61d..0000000
--- a/drpy_js/348电影网.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJzM0OOeUteW9see9kScsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuMzQ4ei5jb20nLAogICAgLy8gdXJsOicvdm9kc2hvdy9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAgdXJsOiAnL3ZvZHNob3cvaWQvZnlmaWx0ZXIuaHRtbCcsCiAgICBmaWx0ZXJhYmxlOiAxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJ3t7ZmwuY2F0ZUlkfX17e2ZsLmFyZWF9fS9wYWdlL2Z5cGFnZXt7ZmwueWVhcn19JywKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUErMlh5MjdUVUJDRzM4WHJTTTJ4YysyU0hlSVJVQllXZUFWMFVRRlNWVVdpbElTa0JkS2lOalEwRlNDUk9pMHBkVlJ1U2VUMFpYeXAzNExqMkRremM1QmFTdzA3TC8xLzQvSHg3em0vN1hXRktjdjMxNVZIeHBxeXJEelFueHAzSHlvWlpVVi9ZdkJqdDFIM2h4TisvRngvL015WUZhNkVjcTBmYlBaRG1SOHdwWnFKNWEyK1kzZjk1dXVZRklDMHUyN1RCRklVeEc4TXZjMGFrQklRYzljZFRZQ1VCZkUyZHJ3WGJTQXNDeGRxbXFRZGc5VjVqUU5uM0VSSWhVdU5UMTE3SDVBS0RmMk5hZkJ4aWhBMERNNzJ5QUpWYUJnY3ZmY09lZ2hwMEhEcjNMZFBFY3JCQ2w4Ty9QWXVRbm00citsM2YrK25hdy9uQ0x3TlBsMDRveDEwRnBoN3gvL1dvYWR4RXlzaGpSNjN2bXJvNkdGM0xmZk4rUHFIRFF2NmFnYWRlcXd1aFkyV1lrbXM2N2pqL1RrbkZiRWtlclFzYnpTbFBTSkptRFY5NXg3YXBDS1doR2NYKzNKRkxNMHJycmFIY2tVc2lSNGZlbDUzUUh0RUVuaDhJdmVJSlhoQXYrV0tXSUtWV3YrdTFDSTkzbHJ1K0pqMmlDVFI0MVdMdSt3MlRtZ2JvWXA3N2wzNnJUTy8yYUczTFZUWXNaKzk3VXQrTXIyb1VFVmQ3WmN6YWRPaVNNTGp0R2JvcTJpY1JqK2NpWjF3bk5RczN3ZHgrN0ROMGt4QVZKT3BocWtxVXhWVEpsT0dhVmFtV1VSWldhS3NqR2xKcGlWTWl6SXRZbHFRYVFIVHZFenptTXBlTWV3Vms3MWkyQ3NtZThXd1YwejJpbUd2bU94Vm1MeVZhaVdqcUxkOGljQWErSVp3eGliUDhYbE13K0o1ZHZCOFFDaUh0M0M0SVFHQlhkN0FERE1ERVBnYzVpTUh3ZUU4eUhKbGFlVGh0SHgyWWRGWnIvRjZ1cGtpS1huY0xDSmNiNDY5SlBGN1U2Z2xpTisyeFJQSFBmcEMyd2cxRGFFMGhCS0ZrSVpDNkwvdXp5aUk2TGhHRXMwamVXK0ZFbzBsV2hGSjZUU24wOHluT2JlZ2FaNjlUK2swUjFMeTk4QTFzNXBtY3pyTmliSzVlTXN2UkEyOHlkMGpQN1ZhaVpJcnN3NmZiVnI2eDV2KzhhWi92R21nTFRiUXFuOEI1MGE0T0RnVkFBQT0nLAogICAgZmlsdGVyX2RlZjogewogICAgICAgIDE6IHtjYXRlSWQ6ICcxJ30sCiAgICAgICAgMjoge2NhdGVJZDogJzInfSwKICAgICAgICAzOiB7Y2F0ZUlkOiAnMyd9LAogICAgICAgIDQ6IHtjYXRlSWQ6ICc0J30sCiAgICAgICAgMzc6IHtjYXRlSWQ6ICczNyd9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL3ZvZHNlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsLy/mmK/lkKblkK/nlKjlhajlsYDmkJzntKIsCiAgICBoZWFkZXJzOiB7Ly/nvZHnq5nnmoTor7fmsYLlpLQs5a6M5pW05pSv5oyB5omA5pyJ55qELOW4uOW4pnVh5ZKMY29va2llcwogICAgICAgICdVc2VyLUFnZW50JzogJ1BDX1VBJywKICAgIH0sCiAgICBjbGFzc19wYXJzZTogJy5uYXYtY2hhbm5lbCBhO2EmJlRleHQ7YSYmaHJlZjsvKFxcZCspLmh0bWwnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIHRhYl9yZW1vdmU6IFsn6JOd5YWJWicsICfmnoHpgJ8nLCAn5p6B6YCfMiddLAogICAgbGF6eTogYGpzOgoJCWxldCBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKCQlsZXQgdXJsID0gaHRtbC51cmw7CgkJaWYgKGh0bWwuZW5jcnlwdCA9PSAnMScpIHsKCQkJdXJsID0gdW5lc2NhcGUodXJsKQoJCX0gZWxzZSBpZiAoaHRtbC5lbmNyeXB0ID09ICcyJykgewoJCQl1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSkKCQl9CmlmICgvXFwubTN1OC8udGVzdCh1cmwpKSB7CiAgICAgICAgICAgIGxldCBib2R5ID0gcmVxdWVzdCh1cmwpOwogICAgICAgICAgICBsZXQgbGluZXMgPSBib2R5LnNwbGl0KCdcXG4nKTsKICAgICAgICAgICAgbGV0IG0zdThVcmwgPSBudWxsOwogICAgICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGxpbmVzKSB7CiAgICAgICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgICAgICAgICBpZiAobGluZS5lbmRzV2l0aCgnLm0zdTgnKSkgewogICAgICAgICAgICAgICAgICAgIG0zdThVcmwgPSB1cmxqb2luKHVybCxsaW5lKTsvL+iOt+WPluW1jOWll00zVTgKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhtM3U4VXJsKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiBtM3U4VXJsIHx8IHVybCwKICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgIH07CiAgICB9IGVsc2UgewoJCQlpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICBwYXJzZTogMAogICAgICAgICAgICB9OwoJCX0KCWAsCiAgICBsaW1pdDogNiwKICAgIGRvdWJsZTogdHJ1ZSwgLy8g5o6o6I2Q5YaF5a655piv5ZCm5Y+M5bGC5a6a5L2NCiAgICDmjqjojZA6ICcudm9kbGlzdDsqOyo7KjsqOyonLAogICAg5LiA57qnOiAnLnBhY2steWtwYWNrO2EmJnRpdGxlOy5lY2xhenkmJmRhdGEtb3JpZ2luYWw7LnBhY2stcHJiJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgInRpdGxlIjogIi5meXkmJlRleHQ7LnMtdG9wLWluZm8tZGV0YWlsJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5nLXBsYXlpY29uJiZpbWcmJnNyYyIsCiAgICAgICAgImRlc2MiOiAiLnMtdG9wLWluZm8tdGl0bGUgc3BhbiYmVGV4dDs7Oy5pdGVtLXR5cGUmJlRleHQ7Lml0ZW0tYWN0b3I6ZXEoMikmJlRleHQiLAogICAgICAgICJjb250ZW50IjogIi5lYy1wYWx5dGNqaSBzcGFuJiZUZXh0IiwKICAgICAgICAidGFicyI6IGBqczoKICAgICAgICAgICAgVEFCUyA9IFtdOwoJCQlsZXQgdGFicyA9IHBkZmEoaHRtbC5yZXBsYWNlKC8mbmJzcDsvZywnJyksICcuc3dpcGVyLXdyYXBwZXIgLmNoYW5uZWxuYW1lJyk7CgkJCXRhYnMuZm9yRWFjaCgoaXQpID0+IHsKICAgIFRBQlMucHVzaChwZGZoKGl0LCAiYm9keSYmVGV4dCIpLnJlcGxhY2UoL1xccypcXChbXildKlxcKS8sJycpLnJlcGxhY2UoL1teXHgwMC1ceDdGXS8sJycpKTsKfSk7CgkJYCwKICAgICAgICAibGlzdHMiOiAiLmNvbnRlbnRfcGxheWxpc3Q6ZXEoI2lkKSBsaSIKICAgIH0sCiAgICDmkJzntKI6ICcucGFjay1wYWNrY292ZXIucmV0dXJsLmxpc3QtdG9wLWI7KjsqOyo7KicsCn0=
\ No newline at end of file
diff --git a/drpy_js/360吧[球].js b/drpy_js/360吧[球].js
deleted file mode 100644
index 8f40fbc..0000000
--- a/drpy_js/360吧[球].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/71V70/TQBj+zl9xIWbtYLYbBJMVp8FojEaccUJiCGlu7W09dm3H9TocssQEJCb+2gc/Gj8QIyQakUiMAv43jI3/wmt73S8w+MnuQ3vv89z7Pvfce7cycYuQPLKwp5QRm8cmcj2QAyXfMRh2HSAT7FRSoILqSfB0BPCHIAYsZhPOomjZRx4LOcnpLrrk8Yk5cLeQv69UIfWQHPD7CCZkkBMCnhJ8R4iIBq8FXm+xx6/FsgJMsWFVlp0kyF0TimIaNjnFUXxKpgfiDrRRiBAEyz7Sg7G+aoFxIPHfOAcsl0cYgnYcni8IBK7AeowMZq1iI0xquDVEByGKbEgrXgg72KgEBXsMiphPnT7twVNzTR2bGl9D6kw8mK6FqziLcRVaIOUsIkRosZoeoxFpaYgdEXoik0caIzVIAfVJYFmksb132PrwUgNS6/deZ3tTSqlq9LXWan45/vVp7eToc/vd4Vrr29vO7n44hWFGuGZp8kq61dxeaDfXF6VIgOV6jAMWY1VPU1Vb4ZQi5C6qXYKN5ijhHBVWsbqCiqo1pWPHRE8Ewx9ECa4hnWCPeWqpbhDoeYLnIUgNayhXFLzOG2zFpWZubGyADIuB7IkotOzzvSuEcQ2ko1gJE4ZoRBMhC0ETUW50b0elOQ/RyzNl5DCJF5/N37hz75Y+NyNqNVLCJBu5PndjKp0WuUL5YsOl1vOd0/WdROfHd+5for37NXwdHrWaL6R+euRHJjGRmExkswKqEt644enTAKO+aJ0qLCPD9R3Wr3Y0M6qBTK8/RieGxpND42y2FxBrIXC1roFLS57C3AKj2CnL8tARxU7VZ0FTCVXpVLSTYTwlbNTC1lOEp91OjYqcbm20Pm60m5sXVMoXl5DBFO4NLjtyf8LU0LGTHqISoohKcV3enYNHScpTXMbO+YT4CMUCT97sdF43L1A3n79Z4DZ0r1tZGCBZLtNtyAwLeRJPPJD5+Oez9sH2v2VeWOxdNrgE5NnH+oOZ27fA1RzIJIcM+KuY4KqVkr1EjUE5B69COVJ8fE6a79v7W/9RH//XIufra/wBT8LERNQGAAA=
\ No newline at end of file
diff --git a/drpy_js/360影视[官].js b/drpy_js/360影视[官].js
deleted file mode 100644
index f4e90cb..0000000
--- a/drpy_js/360影视[官].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/36直播[密].js b/drpy_js/36直播[密].js
deleted file mode 100644
index 97f0d50..0000000
--- a/drpy_js/36直播[密].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVzOFrmSHS3KbO30Ug4+c3FdMagOQzXbiHjMmbSwhTLIVoTE0RalRN9MliOOWnPoj4znCTdshiziwXW4L4Sf2DIdhy5iQH9CUPhIxWbBil2y1WdFiql1ilFK0nANqAI73vB5cXvj9jJeTHJLFARx5oQE5SXGTW0NnVLN2U0+Gi6dSKTjGCfxuwXAim019uy1PzlIIotmzZaLUrF1uplVpcfVbuQR0Hjl9Q50RVdhym/1aTKieJ8Ljq/XA183J/xTOmSXz49DLs7Ub4JheIStSanC4DD/q/1VA0W6dHAvAqAd1QkV/+ZvjhgYXYCYNx0TWnc8rMUAoZ2dPPpw4ZPLNA2W0fboBnz7F89oQqzVjABLobecpHJDz3ndfneUXXnnh6EdCBSOA4JTO8mCr1wG5bxeWg7OcGw6YOJwqMdn9Wv/LH/zk1/GM91qU9xGA2A7ucOww10nbZDa9y0Z3NLet00DzsYyv+L1ljQRVZsPV6a7ls8TXglJ+sQrGXG/J4lkhsS9I+9DPCY5nJ3zsVPrqhrxbdsrUPr4q4OG/kscudSiO3fdlhNtvbRTS57FgQq1ZUgyVPaS3TwTknaGQg8NXRvzTTzY+IEV5LJZPUrzvMD5aydbaVcsWIH492fBAZb1G5asuNq/MYcw+R5V9e9cDjfuQQgQnZ0aBzWAPyn+Clvll3yuT0JBMP5gw8kuHgnoAbTp8ffdH9vwtkpyISeF5Wmx/lDpMBzMcyW/XrbYrR/uIqQgd+bWaIjQIx7PVtSJHpCV9I3GCe8JreE+6jirCa4mxdBJVnX13Fb6oCTzhjDgCZ/ZuvHUvsY19HPIIxnyWgUR41YrbHSb5uG5XUUGHkcs=
\ No newline at end of file
diff --git a/drpy_js/4K-AV.js b/drpy_js/4K-AV.js
deleted file mode 100644
index 27ba19e..0000000
--- a/drpy_js/4K-AV.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CmF1dGhvcjogJ+Wwj+WPr+S5kC8yNDA3MDEv56ys5LqM54mIJywKdGl0bGU6ICc0S0FWJywK57G75Z6LOiAn5b2x6KeGJywKaG9zdDogJ2h0dHBzOi8vNGstYXYuY29tJywKaG9zdEpzOiAnJywKaGVhZGVyczogeydVc2VyLUFnZW50JzogJ0lPU19VQSd9LArnvJbnoIE6ICd1dGYtOCcsCnRpbWVvdXQ6IDUwMDAsCgpob21lVXJsOiAnLycsCnVybDogJy9meWNsYXNzZnlmaWx0ZXIvcGFnZS1meXBhZ2UuaHRtbFsvZnljbGFzc2Z5ZmlsdGVyXScsCmZpbHRlcl91cmw6ICd7e2ZsLmNsYXNzfX0nLApkZXRhaWxVcmw6ICcnLApzZWFyY2hVcmw6ICcvcz9xPSoqJywKc2VhcmNoYWJsZTogMSwgCnF1aWNrU2VhcmNoOiAxLCAKZmlsdGVyYWJsZTogMSwgCgpjbGFzc19uYW1lOiAn55S15b2xJuWJp+mbhicsCmNsYXNzX3VybDogJ21vdmllJnR2JywKZmlsdGVyX2RlZjoge30sCgpwbGF5X3BhcnNlOiB0cnVlLApsYXp5OiBganM6CmlmICgvbTN1OHxtcDQvLnRlc3QoaW5wdXQpKSB7CmlucHV0ID0geyBqeDogMCwgcGFyc2U6IDAsIHVybDogaW5wdXQgfQp9IGVsc2UgewpsZXQga3VybCA9IHJlcXVlc3QoaW5wdXQpLm1hdGNoKC88c291cmNlIHNyYz0iKC4qPykiLylbMV07CmlucHV0ID0geyBqeDogMCwgcGFyc2U6IDAsIHVybDoga3VybCB9Cn0KYCwKCmxpbWl0OiA5LApkb3VibGU6IGZhbHNlLArmjqjojZA6ICcqJywK5LiA57qnOiAnLk5UTWl0ZW07YSYmdGl0bGU7aW1nJiZzcmM7LnRhZ3MmJlRleHQ7YSYmaHJlZicsCuS6jOe6pzogYGpzOgpsZXQga2h0bWwgPSByZXF1ZXN0KGlucHV0KTsKVk9EID0ge307ClZPRC52b2RfaWQgPSBpbnB1dDsKVk9ELnZvZF9uYW1lID0gcGRmaChraHRtbCwgJyNNYWluQ29udGVudF90aXRsZWgxMiYmZGl2OmVxKDEpJiZUZXh0Jyk7ClZPRC50eXBlX25hbWUgPSBwZGZoKGtodG1sLCAnLnRhZ3MtLXNwYW4mJlRleHQnKTsKVk9ELnZvZF9waWMgPSBwZGZoKGtodG1sLCAnI01haW5Db250ZW50X3Bvc3RlciYmaW1nJiZzcmMnKTsKVk9ELnZvZF9yZW1hcmtzID0gcGRmaChraHRtbCwgJy52aWRlb2RldGFpbCYmbGFiZWw6ZXEoMCkmJlRleHQnKTsKVk9ELnZvZF95ZWFyID0gcGRmaChraHRtbCwgJy52aWRlb2RldGFpbCYmYSYmVGV4dCcpOwpWT0Qudm9kX2FyZWEgPSBwZGZoKGtodG1sLCAnLnZpZGVvZGV0YWlsJiZsYWJlbDplcSgxKSYmVGV4dCcpOwpWT0Qudm9kX2RpcmVjdG9yID0gJ+acquefpSc7ClZPRC52b2RfYWN0b3IgPSAn5pyq55+lJzsKVk9ELnZvZF9jb250ZW50ID0gcGRmaChraHRtbCwgJy52aWRlb2Rlc2MmJlRleHQnKTsKVk9ELnZvZF9wbGF5X2Zyb20gPSAnNEtBVuS4k+e6vyc7CgpsZXQga2xpc3RzID0gW107CmxldCBrY29kZSA9IHBkZmEoa2h0bWwsICd1bCNydGxpc3QmJmxpJyk7CmlmICgga2NvZGUgPT0gMCkgewogICAga2NvZGUgPSBwZGZhKGtodG1sLCAnI01haW5Db250ZW50X3Bvc3RlciYmYScpOwogICAga2NvZGUuZm9yRWFjaCgoa2MpID0+IHsKICAgIGxldCBrbmFtZSA9IHBkZmgoa2MsICdhJiZ0aXRsZScpLnJlcGxhY2UoJ+eUteW9sea1t+aKpScsJycpOwogICAgbGV0IGtocmVmID0gcGRmaChrYywgJ2EmJmhyZWYnKS5yZXBsYWNlKCdwb3N0ZXIuanBnJywnJyk7CiAgICBsZXQga2xpc3QgPSBrbmFtZSArICckJyArIGtocmVmOwogICAga2xpc3RzLnB1c2goa2xpc3QpOwogICAgfSk7CiAgICBWT0Qudm9kX3BsYXlfdXJsID0ga2xpc3RzLmpvaW4oJyMnKTsKfSBlbHNlIHsKICAgIGtjb2RlOwogICAga2NvZGUuZm9yRWFjaCgoa2MpID0+IHsKICAgIGxldCBrbmFtZSA9IHBkZmgoa2MsICdzcGFuJiZUZXh0Jyk7CiAgICBsZXQga2hyZWYgPSBwZGZoKGtjLCAnaW1nJiZzcmMnKS5yZXBsYWNlKCdzY3JlZW5zaG90LmpwZycsJycpOwogICAgbGV0IGtsaXN0ID0ga25hbWUgKyAnJCcgKyBraHJlZjsKICAgIGtsaXN0cy5wdXNoKGtsaXN0KTsKICAgIH0pOwogICAgVk9ELnZvZF9wbGF5X3VybCA9IGtsaXN0cy5qb2luKCcjJyk7Cn0KYCwK5pCc57SiOiAnKicsCgpmaWx0ZXI6IHsKInR2IjpbCnsia2V5IjoiY2xhc3MiLCJuYW1lIjoi5Ymn5oOFIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi5Yqo5L2cIiwidiI6Ii90YWcv5Yqo5L2cIn0seyJuIjoi5Ymn5oOFIiwidiI6Ii90YWcv5Ymn5oOFIn0seyJuIjoi5YaS6ZmpIiwidiI6Ii90YWcv5YaS6ZmpIn0seyJuIjoi5Zac5YmnIiwidiI6Ii90YWcv5Zac5YmnIn0seyJuIjoi5Zu95Lqn5YmnIiwidiI6Ii90YWcv5Zu95Lqn5YmnIn0seyJuIjoi5oGQ5oCWIiwidiI6Ii90YWcv5oGQ5oCWIn0seyJuIjoi5oiY5LqJIiwidiI6Ii90YWcv5oiY5LqJIn0seyJuIjoi56eR5bm7IiwidiI6Ii90YWcv56eR5bm7In0seyJuIjoi5Yqo55S7IiwidiI6Ii90YWcv5Yqo55S7In0seyJuIjoi6Z+p5YmnIiwidiI6Ii90YWcv6Z+p5YmnIn0seyJuIjoi54qv572qIiwidiI6Ii90YWcv54qv572qIn0seyJuIjoi57qq5b2V54mHIiwidiI6Ii90YWcv57qq5b2V54mHIn1dfSwKeyJrZXkiOiJjbGFzcyIsIm5hbWUiOiLliafmg4UiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiIyMDI0IiwidiI6Ii8yMDI0In0seyJuIjoiMjAyMyIsInYiOiIvMjAyMyJ9LHsibiI6IjIwMjIiLCJ2IjoiLzIwMjIifSx7Im4iOiIyMDIxIiwidiI6Ii8yMDIxIn0seyJuIjoiMjAyMCIsInYiOiIvMjAyMCJ9LHsibiI6IjIwMTkiLCJ2IjoiLzIwMTkifV19Cl0KfQp9
\ No newline at end of file
diff --git a/drpy_js/4khdr.js b/drpy_js/4khdr.js
deleted file mode 100644
index 2b41c79..0000000
--- a/drpy_js/4khdr.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJzRLSERSW+ejgV0nLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LjRraGRyLmNuJywKICAgIGhvbWVVcmw6ICIvZm9ydW0ucGhwP21vZD1mb3J1bWRpc3BsYXkmZmlkPTImcGFnZT0xIiwKICAgIHVybDogJy9mb3J1bS5waHA/bW9kPWZvcnVtZGlzcGxheSZmaWQ9MiZmaWx0ZXI9dHlwZWlkJnR5cGVpZD1meWNsYXNzJnBhZ2U9ZnlwYWdlJywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmNsYXNzfX0nLAogICAgZmlsdGVyOiB7fSwKICAgIHNlYXJjaFVybDogJy9zZWFyY2gucGhwI3NlYXJjaHN1Ym1pdD15ZXMmc3JjaHR4dD0qKjtwb3N0JywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMSwKICAgIGZpbHRlcmFibGU6IDAsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnUENfVUEnLAogICAgICAgICdDb29raWUnOiAnaHR0cDovLzEyNy4wLjAuMTo5OTc4L2ZpbGU6Ly8vdHZib3gvSlMvbGliLzRraGRyLnR4dCcsCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX25hbWU6ICI0S+eUteW9sSY0S+e+juWJpyY0S+WNjuivrSY0S+WKqOeUuyY0S+e6quW9leeJhyY0S+aXpemfqeWNsCbok53lhYnnlLXlvbEm6JOd5YWJ576O5YmnJuiTneWFieWNjuivrSbok53lhYnliqjnlLsm6JOd5YWJ5pel6Z+p5Y2wIiwKICAgIGNsYXNzX3VybDogIjMmOCYxNSY2JjExJjQmMjkmMzEmMzMmMzImMzQiLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIHBsYXlfanNvbjogW3sKICAgICAgICByZTogJyonLAogICAgICAgIGpzb246IHsKICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgIGp4OiAwCiAgICAgICAgfQogICAgfV0sCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAndWwjd2F0ZXJmYWxsIGxpO2EmJnRpdGxlO2ltZyYmc3JjO2Rpdi5hdXRoLmNsJiZUZXh0O2EmJmhyZWYnLAogICAg5LiA57qnOiAndWwjd2F0ZXJmYWxsIGxpO2EmJnRpdGxlO2ltZyYmc3JjO2Rpdi5hdXRoLmNsJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICIjdGhlYWRfc3ViamVjdCYmVGV4dCIsCiAgICAgICAgaW1nOiAiaW1nLnpvb20mJnNyYyIsCiAgICAgICAgZGVzYzogJ3RkW2lkXj0icG9zdG1lc3NhZ2VfIl0gZm9udCYmVGV4dCcsCiAgICAgICAgY29udGVudDogJ3RkW2lkXj0icG9zdG1lc3NhZ2VfIl0gZm9udCYmVGV4dCcsCiAgICAgICAgdGFiczogYGpzOgpwZGZoPWpzcC5wZGZoO3BkZmE9anNwLnBkZmE7cGQ9anNwLnBkOwpUQUJTPVtdCmxldCBkID0gcGRmYShodG1sLCAnZGl2LnBjYiB0YWJsZS50X3RhYmxlIGEnKTsKbGV0IHRhYnNhID0gW107CmxldCB0YWJzcSA9IFtdOwpsZXQgdGFic20gPSBmYWxzZTsKbGV0IHRhYnNlID0gZmFsc2U7CmQuZm9yRWFjaChmdW5jdGlvbihpdCkgewoJbGV0IGJ1cmwgPSBwZGZoKGl0LCAnYSYmaHJlZicpOwoJaWYgKGJ1cmwuc3RhcnRzV2l0aCgiaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvIikgfHwgYnVybC5zdGFydHNXaXRoKCJodHRwczovL3d3dy5hbGlwYW4uY29tL3MvIikpewoJCXRhYnNhLnB1c2goIumYv+mHjOmbsuebpCIpOwoJfWVsc2UgaWYgKGJ1cmwuc3RhcnRzV2l0aCgiaHR0cHM6Ly9wYW4ucXVhcmsuY24vcy8iKSl7CgkJdGFic3EucHVzaCgi5aS45YWL57ay55ukIik7Cgl9ZWxzZSBpZiAoYnVybC5zdGFydHNXaXRoKCJtYWduZXQiKSl7CgkJdGFic20gPSB0cnVlOwoJfWVsc2UgaWYgKGJ1cmwuc3RhcnRzV2l0aCgiZWQyayIpKXsKCQl0YWJzZSA9IHRydWU7Cgl9Cn0pOwppZiAodGFic20gPT09IHRydWUpewoJVEFCUy5wdXNoKCLno4HlipsiKTsKfQppZiAodGFic2UgPT09IHRydWUpewoJVEFCUy5wdXNoKCLpm7vpqaIiKTsKfQppZiAoZmFsc2UgJiYgdGFic2EubGVuZ3RoICsgdGFic3EubGVuZ3RoID4gMSl7CglUQUJTLnB1c2goIumBuOaTh+WPs+WBtOe2q+i3ryIpOwp9CmxldCB0bXBJbmRleDsKdG1wSW5kZXg9MTsKdGFic2EuZm9yRWFjaChmdW5jdGlvbihpdCl7CglUQUJTLnB1c2goaXQgKyB0bXBJbmRleCk7Cgl0bXBJbmRleCA9IHRtcEluZGV4ICsgMTsKfSk7CnRtcEluZGV4PTE7CnRhYnNxLmZvckVhY2goZnVuY3Rpb24oaXQpewoJVEFCUy5wdXNoKGl0ICsgdG1wSW5kZXgpOwoJdG1wSW5kZXggPSB0bXBJbmRleCArIDE7Cn0pOwpsb2coJzRraGRyIFRBQlMgPj4+Pj4+Pj4+Pj4+Pj4+Pj4+JyArIFRBQlMpOwpgLAogICAgICAgIGxpc3RzOiBganM6CmxvZyhUQUJTKTsKcGRmaD1qc3AucGRmaDtwZGZhPWpzcC5wZGZhO3BkPWpzcC5wZDsKTElTVFMgPSBbXTsKbGV0IGQgPSBwZGZhKGh0bWwsICdkaXYucGNiIHRhYmxlLnRfdGFibGUgYScpOwpsZXQgbGlzdGEgPSBbXTsKbGV0IGxpc3RxID0gW107CmxldCBsaXN0bSA9IFtdOwpsZXQgbGlzdGUgPSBbXTsKZC5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsKCWxldCBidXJsID0gcGRmaChpdCwgJ2EmJmhyZWYnKTsKCWxldCB0aXRsZSA9IHBkZmgoaXQsICdhJiZUZXh0Jyk7Cglsb2coJzRraGRyIHRpdGxlID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+JyArIHRpdGxlKTsKCWxvZygnNGtoZHIgYnVybCA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PicgKyBidXJsKTsKCWxldCBsb29wcmVzdWx0ID0gdGl0bGUgKyAnJCcgKyBidXJsOwoJaWYgKGJ1cmwuc3RhcnRzV2l0aCgiaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvIikgfHwgYnVybC5zdGFydHNXaXRoKCJodHRwczovL3d3dy5hbGlwYW4uY29tL3MvIikpewoJCWlmICh0cnVlKXsKCQlpZiAoVEFCUy5sZW5ndGg9PTEpewoJCQlidXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6OTk3OC9wcm94eT9kbz1hbGkmdHlwZT1wdXNoJmNvbmZpcm09MCZ1cmw9IiArIGVuY29kZVVSSUNvbXBvbmVudChidXJsKTsKCQl9ZWxzZXsKCQkJYnVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjk5NzgvcHJveHk/ZG89YWxpJnR5cGU9cHVzaCZ1cmw9IiArIGVuY29kZVVSSUNvbXBvbmVudChidXJsKTsKCQl9CgkJfWVsc2V7CgkJCWJ1cmwgPSAncHVzaDovLycgKyBidXJsOwoJCX0KCQlsb29wcmVzdWx0ID0gdGl0bGUgKyAnJCcgKyBidXJsOwoJCWxpc3RhLnB1c2gobG9vcHJlc3VsdCk7Cgl9ZWxzZSBpZiAoYnVybC5zdGFydHNXaXRoKCJodHRwczovL3Bhbi5xdWFyay5jbi9zLyIpKXsKCQlpZiAodHJ1ZSl7CgkJaWYgKFRBQlMubGVuZ3RoPT0xKXsKCQkJYnVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjk5NzgvcHJveHk/ZG89cXVhcmsmdHlwZT1wdXNoJmNvbmZpcm09MCZ1cmw9IiArIGVuY29kZVVSSUNvbXBvbmVudChidXJsKTsKCQl9ZWxzZXsKCQkJYnVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjk5NzgvcHJveHk/ZG89cXVhcmsmdHlwZT1wdXNoJnVybD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KGJ1cmwpOwoJCX0KCQl9ZWxzZXsKCQkJYnVybCA9ICdwdXNoOi8vJyArIGJ1cmw7CgkJfQoJCWxvb3ByZXN1bHQgPSB0aXRsZSArICckJyArIGJ1cmw7CgkJbGlzdHEucHVzaChsb29wcmVzdWx0KTsKCX1lbHNlIGlmIChidXJsLnN0YXJ0c1dpdGgoIm1hZ25ldCIpKXsKCQlsaXN0bS5wdXNoKGxvb3ByZXN1bHQpOwoJfWVsc2UgaWYgKGJ1cmwuc3RhcnRzV2l0aCgiZWQyayIpKXsKCQlsaXN0ZS5wdXNoKGxvb3ByZXN1bHQpOwoJfQp9KTsKaWYgKGxpc3RtLmxlbmd0aD4wKXsKCUxJU1RTLnB1c2gobGlzdG0pOwp9CmlmIChsaXN0ZS5sZW5ndGg+MCl7CglMSVNUUy5wdXNoKGxpc3RlKTsKfQppZiAoZmFsc2UgJiYgbGlzdGEubGVuZ3RoICsgbGlzdHEubGVuZ3RoID4gMSl7CglMSVNUUy5wdXNoKFsi6YG45pOH5Y+z5YG057ar6Lev77yM5oiWM+enkuW+jOiHquWLlei3s+mBjiRodHRwOi8vMTI3LjAuMC4xOjEwMDc5L2RlbGF5LyJdKTsKfQpsaXN0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsKCUxJU1RTLnB1c2goW2l0XSk7Cn0pOwpsaXN0cS5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsKCUxJU1RTLnB1c2goW2l0XSk7Cn0pOwpgLAoKICAgIH0sCiAgICDmkJzntKI6IGBqczoKcGRmaD1qc3AucGRmaDtwZGZhPWpzcC5wZGZhO3BkPWpzcC5wZDsKaWYgKHJ1bGVfZmV0Y2hfcGFyYW1zLmhlYWRlcnMuQ29va2llLnN0YXJ0c1dpdGgoImh0dHAiKSl7CglydWxlX2ZldGNoX3BhcmFtcy5oZWFkZXJzLkNvb2tpZT1mZXRjaChydWxlX2ZldGNoX3BhcmFtcy5oZWFkZXJzLkNvb2tpZSk7CglsZXQgY29va2llID0gcnVsZV9mZXRjaF9wYXJhbXMuaGVhZGVycy5Db29raWU7CglzZXRJdGVtKFJVTEVfQ0ssIGNvb2tpZSk7Cn07CmxvZygnNGtoZHIgc2VhcmNoIGNvb2tpZT4+Pj4+Pj4+Pj4+Pj4+PicgKyBydWxlX2ZldGNoX3BhcmFtcy5oZWFkZXJzLkNvb2tpZSk7CmxldCBuZXdfaG9zdD0gSE9TVCArICcvc2VhcmNoLnBocCc7CmxldCBuZXdfaHRtbD1yZXF1ZXN0KG5ld19ob3N0KTsKbGV0IGZvcm1oYXNoID0gcGRmaChuZXdfaHRtbCwgJ2lucHV0W25hbWU9ImZvcm1oYXNoIl0mJnZhbHVlJyk7CmxvZygiNGtoZHIgZm9ybWhhc2g+Pj4+Pj4+Pj4+Pj4+Pj4iICsgZm9ybWhhc2gpOwpsZXQgcGFyYW1zID0gJ2Zvcm1oYXNoPScgKyBmb3JtaGFzaCArICcmc2VhcmNoc3VibWl0PXllcyZzcmNodHh0PScgKyBlbmNvZGVVUklDb21wb25lbnQoS0VZKTsKbGV0IF9mZXRjaF9wYXJhbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJ1bGVfZmV0Y2hfcGFyYW1zKSk7CmxldCBwb3N0RGF0YSA9IHsKICAgIGJvZHk6IHBhcmFtcwp9OwpPYmplY3QuYXNzaWduKF9mZXRjaF9wYXJhbXMsIHBvc3REYXRhKTsKbG9nKCI0a2hkciBzZWFyY2ggcG9zdERhdGE+Pj4+Pj4+Pj4+Pj4+Pj4iICsgSlNPTi5zdHJpbmdpZnkoX2ZldGNoX3BhcmFtcykpOwpsZXQgc2VhcmNoX2h0bWwgPSBwb3N0KCBIT1NUICsgJy9zZWFyY2gucGhwP21vZD1mb3J1bScsIF9mZXRjaF9wYXJhbXMpCi8vbG9nKCI0a2hkciBzZWFyY2ggcmVzdWx0Pj4+Pj4+Pj4+Pj4+Pj4+IiArIHNlYXJjaF9odG1sKTsKbGV0IGQ9W107CmxldCBkbGlzdCA9IHBkZmEoc2VhcmNoX2h0bWwsICdkaXYjdGhyZWFkbGlzdCB1bCBsaScpOwpkbGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsKCWxldCB0aXRsZSA9IHBkZmgoaXQsICdoMyYmVGV4dCcpOwoJaWYgKHNlYXJjaE9iai5xdWljayA9PT0gdHJ1ZSl7CgkJaWYgKHRpdGxlLmluY2x1ZGVzKEtFWSkpewoJCQl0aXRsZSA9IEtFWTsKCQl9Cgl9CglsZXQgaW1nID0gIiI7CglsZXQgY29udGVudCA9IHBkZmgoaXQsICdwOmVxKDIpJiZUZXh0Jyk7CglsZXQgZGVzYyA9IHBkZmgoaXQsICdwOmVxKDMpJiZUZXh0Jyk7CglsZXQgdXJsID0gcGQoaXQsICdhJiZocmVmJywgSE9TVCk7CglkLnB1c2goewoJCXRpdGxlOnRpdGxlLAoJCWltZzppbWcsCgkJY29udGVudDpjb250ZW50LAoJCWRlc2M6ZGVzYywKCQl1cmw6dXJsCgkJfSkKfSk7CnNldFJlc3VsdChkKTsKCWAsCn0K
\ No newline at end of file
diff --git a/drpy_js/4k剧院.js b/drpy_js/4k剧院.js
deleted file mode 100644
index 3a5ff88..0000000
--- a/drpy_js/4k剧院.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/4k양牘.js b/drpy_js/4k양牘.js
deleted file mode 100644
index fe7cfea..0000000
--- a/drpy_js/4k양牘.js
+++ /dev/null
@@ -1 +0,0 @@
-bXViYW4ubXhwcm8u5LqM57qnLnRpdGxlID0gJ2gxJiZUZXh0Oy5tb2R1bGUtaW5mby10YWcmJlRleHQnOwptdWJhbi5teHByby7kuoznuqcuZGVzYyA9ICcubW9kdWxlLWluZm8taXRlbTplcSg0KSYmVGV4dDs7Oy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQ6ZXEoMSkmJlRleHQ7Lm1vZHVsZS1pbmZvLWl0ZW0tY29udGVudDplcSgwKSYmVGV4dCc7Cm11YmFuLm14cHJvLuS6jOe6py50YWJfdGV4dCA9ICdib2R5LS1zbWFsbCYmVGV4dCc7CnZhciBydWxlID0gewoJdGl0bGU6JzRL5Ymn6ZmiJywgLy/ljp85MWZyZWUKCeaooeadvzonbXhwcm8nLAoJaG9zdDonaHR0cHM6Ly93d3cuNGs0ay5saXZlJywKCXVybDonL3ZvZHNob3cvZnlmaWx0ZXIuaHRtbCcsCglmaWx0ZXJhYmxlOjEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCglmaWx0ZXJfdXJsOid7e2ZsLmNhdGVJZH19LXt7ZmwuYXJlYX19LXt7ZmwuYnkgb3IgInRpbWUifX0te3tmbC5jbGFzc319LXt7ZmwubGFuZ319LXt7ZmwubGV0dGVyfX0tLS1meXBhZ2UtLS17e2ZsLnllYXJ9fScsCglmaWx0ZXI6IHsKCQkiMSI6W3sia2V5IjoiY2F0ZUlkIiwibmFtZSI6Iuexu+WeiyIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IjEifSx7Im4iOiLnuqrlvZXniYciLCJ2IjoiMjAifSx7Im4iOiLliqjkvZzniYciLCJ2IjoiNiJ9LHsibiI6IuWWnOWJp+eJhyIsInYiOiI3In0seyJuIjoi56eR5bm754mHIiwidiI6IjgifSx7Im4iOiLmgZDmgJbniYciLCJ2IjoiOSJ9LHsibiI6IueIseaDheeJhyIsInYiOiIxMCJ9LHsibiI6IuWJp+aDheeJhyIsInYiOiIxMSJ9LHsibiI6IuaImOS6ieeJhyIsInYiOiIxMiJ9XX0seyJrZXkiOiJhcmVhIiwibmFtZSI6IuWcsOWMuiIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuWkp+mZhiIsInYiOiLlpKfpmYYifSx7Im4iOiLpppnmuK8iLCJ2Ijoi6aaZ5rivIn0seyJuIjoi5Y+w5rm+IiwidiI6IuWPsOa5viJ9LHsibiI6Iue+juWbvSIsInYiOiLnvo7lm70ifSx7Im4iOiLms5Xlm70iLCJ2Ijoi5rOV5Zu9In0seyJuIjoi6Iux5Zu9IiwidiI6IuiLseWbvSJ9LHsibiI6IuaXpeacrCIsInYiOiLml6XmnKwifSx7Im4iOiLpn6nlm70iLCJ2Ijoi6Z+p5Zu9In0seyJuIjoi5b635Zu9IiwidiI6IuW+t+WbvSJ9LHsibiI6IuazsOWbvSIsInYiOiLms7Dlm70ifSx7Im4iOiLljbDluqYiLCJ2Ijoi5Y2w5bqmIn0seyJuIjoi5oSP5aSn5YipIiwidiI6IuaEj+Wkp+WIqSJ9LHsibiI6Iuilv+ePreeJmSIsInYiOiLopb/nj63niZkifSx7Im4iOiLliqDmi7/lpKciLCJ2Ijoi5Yqg5ou/5aSnIn0seyJuIjoi5YW25LuWIiwidiI6IuWFtuS7liJ9XX0seyJrZXkiOiJsYW5nIiwibmFtZSI6IuivreiogCIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuWbveivrSIsInYiOiLlm73or60ifSx7Im4iOiLoi7Hor60iLCJ2Ijoi6Iux6K+tIn0seyJuIjoi57Kk6K+tIiwidiI6IueypOivrSJ9LHsibiI6IumXveWNl+ivrSIsInYiOiLpl73ljZfor60ifSx7Im4iOiLpn6nor60iLCJ2Ijoi6Z+p6K+tIn0seyJuIjoi5pel6K+tIiwidiI6IuaXpeivrSJ9LHsibiI6IuazleivrSIsInYiOiLms5Xor60ifSx7Im4iOiLlvrfor60iLCJ2Ijoi5b636K+tIn0seyJuIjoi5YW25a6DIiwidiI6IuWFtuWugyJ9XX0seyJrZXkiOiJ5ZWFyIiwibmFtZSI6IuW5tOS7vSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IjIwMjQiLCJ2IjoiMjAyNCJ9LHsibiI6IjIwMjMiLCJ2IjoiMjAyMyJ9LHsibiI6IjIwMjIiLCJ2IjoiMjAyMiJ9LHsibiI6IjIwMjEiLCJ2IjoiMjAyMSJ9LHsibiI6IjIwMjAiLCJ2IjoiMjAyMCJ9LHsibiI6IjIwMTkiLCJ2IjoiMjAxOSJ9LHsibiI6IjIwMTgiLCJ2IjoiMjAxOCJ9LHsibiI6IjIwMTciLCJ2IjoiMjAxNyJ9LHsibiI6IjIwMTYiLCJ2IjoiMjAxNiJ9LHsibiI6IjIwMTUiLCJ2IjoiMjAxNSJ9LHsibiI6IjIwMTQiLCJ2IjoiMjAxNCJ9LHsibiI6IjIwMTMiLCJ2IjoiMjAxMyJ9LHsibiI6IjIwMTIiLCJ2IjoiMjAxMiJ9LHsibiI6IjIwMTEiLCJ2IjoiMjAxMSJ9LHsibiI6IjIwMTAiLCJ2IjoiMjAxMCJ9XX0seyJrZXkiOiJsZXR0ZXIiLCJuYW1lIjoi5a2X5q+NIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiQSIsInYiOiJBIn0seyJuIjoiQiIsInYiOiJCIn0seyJuIjoiQyIsInYiOiJDIn0seyJuIjoiRCIsInYiOiJEIn0seyJuIjoiRSIsInYiOiJFIn0seyJuIjoiRiIsInYiOiJGIn0seyJuIjoiRyIsInYiOiJHIn0seyJuIjoiSCIsInYiOiJIIn0seyJuIjoiSSIsInYiOiJJIn0seyJuIjoiSiIsInYiOiJKIn0seyJuIjoiSyIsInYiOiJLIn0seyJuIjoiTCIsInYiOiJMIn0seyJuIjoiTSIsInYiOiJNIn0seyJuIjoiTiIsInYiOiJOIn0seyJuIjoiTyIsInYiOiJPIn0seyJuIjoiUCIsInYiOiJQIn0seyJuIjoiUSIsInYiOiJRIn0seyJuIjoiUiIsInYiOiJSIn0seyJuIjoiUyIsInYiOiJTIn0seyJuIjoiVCIsInYiOiJUIn0seyJuIjoiVSIsInYiOiJVIn0seyJuIjoiViIsInYiOiJWIn0seyJuIjoiVyIsInYiOiJXIn0seyJuIjoiWCIsInYiOiJYIn0seyJuIjoiWSIsInYiOiJZIn0seyJuIjoiWiIsInYiOiJaIn1dfSx7ImtleSI6ImJ5IiwibmFtZSI6IuaOkuW6jyIsInZhbHVlIjpbeyJuIjoi5pe26Ze0IiwidiI6InRpbWUifSx7Im4iOiLkurrmsJQiLCJ2IjoiaGl0cyJ9LHsibiI6IuivhOWIhiIsInYiOiJzY29yZSJ9XX1dLAoJCSIyIjpbeyJrZXkiOiJjYXRlSWQiLCJuYW1lIjoi57G75Z6LIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiMiJ9LHsibiI6IuazsOWbveWJpyIsInYiOiIyMSJ9LHsibiI6IuWbveS6p+WJpyIsInYiOiIxMyJ9LHsibiI6Iuasp+e+juWJpyIsInYiOiIxNCJ9LHsibiI6Iua4r+WPsOWJpyIsInYiOiIxNSJ9LHsibiI6IuaXpemfqeWJpyIsInYiOiIxNiJ9XX0seyJrZXkiOiJhcmVhIiwibmFtZSI6IuWcsOWMuiIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuWGheWcsCIsInYiOiLlhoXlnLAifSx7Im4iOiLpn6nlm70iLCJ2Ijoi6Z+p5Zu9In0seyJuIjoi6aaZ5rivIiwidiI6Iummmea4ryJ9LHsibiI6IuWPsOa5viIsInYiOiLlj7Dmub4ifSx7Im4iOiLml6XmnKwiLCJ2Ijoi5pel5pysIn0seyJuIjoi576O5Zu9IiwidiI6Iue+juWbvSJ9LHsibiI6IuazsOWbvSIsInYiOiLms7Dlm70ifSx7Im4iOiLoi7Hlm70iLCJ2Ijoi6Iux5Zu9In0seyJuIjoi5paw5Yqg5Z2hIiwidiI6IuaWsOWKoOWdoSJ9LHsibiI6IuWFtuS7liIsInYiOiLlhbbku5YifV19LHsia2V5IjoibGFuZyIsIm5hbWUiOiLor63oqIAiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLlm73or60iLCJ2Ijoi5Zu96K+tIn0seyJuIjoi6Iux6K+tIiwidiI6IuiLseivrSJ9LHsibiI6IueypOivrSIsInYiOiLnsqTor60ifSx7Im4iOiLpl73ljZfor60iLCJ2Ijoi6Ze95Y2X6K+tIn0seyJuIjoi6Z+p6K+tIiwidiI6IumfqeivrSJ9LHsibiI6IuaXpeivrSIsInYiOiLml6Xor60ifSx7Im4iOiLlhbblroMiLCJ2Ijoi5YW25a6DIn1dfSx7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiMjAyNCIsInYiOiIyMDI0In0seyJuIjoiMjAyMyIsInYiOiIyMDIzIn0seyJuIjoiMjAyMiIsInYiOiIyMDIyIn0seyJuIjoiMjAyMSIsInYiOiIyMDIxIn0seyJuIjoiMjAyMCIsInYiOiIyMDIwIn0seyJuIjoiMjAxOSIsInYiOiIyMDE5In0seyJuIjoiMjAxOCIsInYiOiIyMDE4In0seyJuIjoiMjAxNyIsInYiOiIyMDE3In0seyJuIjoiMjAxNiIsInYiOiIyMDE2In0seyJuIjoiMjAxNSIsInYiOiIyMDE1In0seyJuIjoiMjAxNCIsInYiOiIyMDE0In0seyJuIjoiMjAxMyIsInYiOiIyMDEzIn0seyJuIjoiMjAxMiIsInYiOiIyMDEyIn0seyJuIjoiMjAxMSIsInYiOiIyMDExIn0seyJuIjoiMjAxMCIsInYiOiIyMDEwIn1dfSx7ImtleSI6ImxldHRlciIsIm5hbWUiOiLlrZfmr40iLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiJBIiwidiI6IkEifSx7Im4iOiJCIiwidiI6IkIifSx7Im4iOiJDIiwidiI6IkMifSx7Im4iOiJEIiwidiI6IkQifSx7Im4iOiJFIiwidiI6IkUifSx7Im4iOiJGIiwidiI6IkYifSx7Im4iOiJHIiwidiI6IkcifSx7Im4iOiJIIiwidiI6IkgifSx7Im4iOiJJIiwidiI6IkkifSx7Im4iOiJKIiwidiI6IkoifSx7Im4iOiJLIiwidiI6IksifSx7Im4iOiJMIiwidiI6IkwifSx7Im4iOiJNIiwidiI6Ik0ifSx7Im4iOiJOIiwidiI6Ik4ifSx7Im4iOiJPIiwidiI6Ik8ifSx7Im4iOiJQIiwidiI6IlAifSx7Im4iOiJRIiwidiI6IlEifSx7Im4iOiJSIiwidiI6IlIifSx7Im4iOiJTIiwidiI6IlMifSx7Im4iOiJUIiwidiI6IlQifSx7Im4iOiJVIiwidiI6IlUifSx7Im4iOiJWIiwidiI6IlYifSx7Im4iOiJXIiwidiI6IlcifSx7Im4iOiJYIiwidiI6IlgifSx7Im4iOiJZIiwidiI6IlkifSx7Im4iOiJaIiwidiI6IloifV19LHsia2V5IjoiYnkiLCJuYW1lIjoi5o6S5bqPIiwidmFsdWUiOlt7Im4iOiLml7bpl7QiLCJ2IjoidGltZSJ9LHsibiI6IuS6uuawlCIsInYiOiJoaXRzIn0seyJuIjoi6K+E5YiGIiwidiI6InNjb3JlIn1dfV0sCgkJIjMiOlt7ImtleSI6ImNhdGVJZCIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIzIn0seyJuIjoi5aSn6ZmG57u86Im6IiwidiI6IjIyIn0seyJuIjoi5qyn576O57u86Im6IiwidiI6IjIzIn0seyJuIjoi5pel6Z+p57u86Im6IiwidiI6IjI0In0seyJuIjoi5riv5Y+w57u86Im6IiwidiI6IjI1In1dfSx7ImtleSI6IuWJp+aDhSIsIm5hbWUiOiLliafmg4UiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLpgInnp4AiLCJ2Ijoi6YCJ56eAIn0seyJuIjoi5oOF5oSfIiwidiI6IuaDheaEnyJ9LHsibiI6Iuiuv+iwiCIsInYiOiLorr/osIgifSx7Im4iOiLmkq3miqUiLCJ2Ijoi5pKt5oqlIn0seyJuIjoi5peF5ri4IiwidiI6IuaXhea4uCJ9LHsibiI6Iumfs+S5kCIsInYiOiLpn7PkuZAifSx7Im4iOiLnvo7po58iLCJ2Ijoi576O6aOfIn0seyJuIjoi57qq5a6eIiwidiI6Iue6quWuniJ9LHsibiI6IuabsuiJuiIsInYiOiLmm7LoiboifSx7Im4iOiLnlJ/mtLsiLCJ2Ijoi55Sf5rS7In0seyJuIjoi5ri45oiP5LqS5YqoIiwidiI6Iua4uOaIj+S6kuWKqCJ9LHsibiI6Iui0oue7jyIsInYiOiLotKLnu48ifSx7Im4iOiLmsYLogYwiLCJ2Ijoi5rGC6IGMIn1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi5YaF5ZywIiwidiI6IuWGheWcsCJ9LHsibiI6Iua4r+WPsCIsInYiOiLmuK/lj7AifSx7Im4iOiLml6Xpn6kiLCJ2Ijoi5pel6Z+pIn0seyJuIjoi5qyn576OIiwidiI6Iuasp+e+jiJ9XX0seyJrZXkiOiJsYW5nIiwibmFtZSI6IuivreiogCIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuWbveivrSIsInYiOiLlm73or60ifSx7Im4iOiLoi7Hor60iLCJ2Ijoi6Iux6K+tIn0seyJuIjoi57Kk6K+tIiwidiI6IueypOivrSJ9LHsibiI6IumXveWNl+ivrSIsInYiOiLpl73ljZfor60ifSx7Im4iOiLpn6nor60iLCJ2Ijoi6Z+p6K+tIn0seyJuIjoi5pel6K+tIiwidiI6IuaXpeivrSJ9LHsibiI6IuWFtuWugyIsInYiOiLlhbblroMifV19LHsia2V5IjoieWVhciIsIm5hbWUiOiLlubTku70iLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiIyMDI0IiwidiI6IjIwMjQifSx7Im4iOiIyMDIzIiwidiI6IjIwMjMifSx7Im4iOiIyMDIyIiwidiI6IjIwMjIifSx7Im4iOiIyMDIxIiwidiI6IjIwMjEifSx7Im4iOiIyMDIwIiwidiI6IjIwMjAifSx7Im4iOiIyMDE5IiwidiI6IjIwMTkifSx7Im4iOiIyMDE4IiwidiI6IjIwMTgifSx7Im4iOiIyMDE3IiwidiI6IjIwMTcifSx7Im4iOiIyMDE2IiwidiI6IjIwMTYifSx7Im4iOiIyMDE1IiwidiI6IjIwMTUifSx7Im4iOiIyMDE0IiwidiI6IjIwMTQifSx7Im4iOiIyMDEzIiwidiI6IjIwMTMifSx7Im4iOiIyMDEyIiwidiI6IjIwMTIifSx7Im4iOiIyMDExIiwidiI6IjIwMTEifSx7Im4iOiIyMDEwIiwidiI6IjIwMTAifSx7Im4iOiIyMDA5IiwidiI6IjIwMDkifSx7Im4iOiIyMDA4IiwidiI6IjIwMDgifSx7Im4iOiIyMDA3IiwidiI6IjIwMDcifSx7Im4iOiIyMDA2IiwidiI6IjIwMDYifSx7Im4iOiIyMDA1IiwidiI6IjIwMDUifSx7Im4iOiIyMDA0IiwidiI6IjIwMDQifV19LHsia2V5IjoibGV0dGVyIiwibmFtZSI6IuWtl+avjSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IkEiLCJ2IjoiQSJ9LHsibiI6IkIiLCJ2IjoiQiJ9LHsibiI6IkMiLCJ2IjoiQyJ9LHsibiI6IkQiLCJ2IjoiRCJ9LHsibiI6IkUiLCJ2IjoiRSJ9LHsibiI6IkYiLCJ2IjoiRiJ9LHsibiI6IkciLCJ2IjoiRyJ9LHsibiI6IkgiLCJ2IjoiSCJ9LHsibiI6IkkiLCJ2IjoiSSJ9LHsibiI6IkoiLCJ2IjoiSiJ9LHsibiI6IksiLCJ2IjoiSyJ9LHsibiI6IkwiLCJ2IjoiTCJ9LHsibiI6Ik0iLCJ2IjoiTSJ9LHsibiI6Ik4iLCJ2IjoiTiJ9LHsibiI6Ik8iLCJ2IjoiTyJ9LHsibiI6IlAiLCJ2IjoiUCJ9LHsibiI6IlEiLCJ2IjoiUSJ9LHsibiI6IlIiLCJ2IjoiUiJ9LHsibiI6IlMiLCJ2IjoiUyJ9LHsibiI6IlQiLCJ2IjoiVCJ9LHsibiI6IlUiLCJ2IjoiVSJ9LHsibiI6IlYiLCJ2IjoiViJ9LHsibiI6IlciLCJ2IjoiVyJ9LHsibiI6IlgiLCJ2IjoiWCJ9LHsibiI6IlkiLCJ2IjoiWSJ9LHsibiI6IloiLCJ2IjoiWiJ9XX0seyJrZXkiOiJieSIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtCIsInYiOiJ0aW1lIn0seyJuIjoi5Lq65rCUIiwidiI6ImhpdHMifSx7Im4iOiLor4TliIYiLCJ2Ijoic2NvcmUifV19XSwKCQkiNCI6W3sia2V5IjoiY2F0ZUlkIiwibmFtZSI6Iuexu+WeiyIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IjQifSx7Im4iOiLlm73kuqfliqjmvKsiLCJ2IjoiMjYifSx7Im4iOiLmrKfnvo7liqjmvKsiLCJ2IjoiMjcifSx7Im4iOiLml6Xpn6nliqjmvKsiLCJ2IjoiMjgifSx7Im4iOiLmuK/lj7DliqjmvKsiLCJ2IjoiMjkifV19LHsia2V5Ijoi5Ymn5oOFIiwibmFtZSI6IuWJp+aDhSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuaDheaEnyIsInYiOiLmg4XmhJ8ifSx7Im4iOiLnp5HlubsiLCJ2Ijoi56eR5bm7In0seyJuIjoi54Ot6KGAIiwidiI6IueDreihgCJ9LHsibiI6IuaOqOeQhiIsInYiOiLmjqjnkIYifSx7Im4iOiLmkJ7nrJEiLCJ2Ijoi5pCe56yRIn0seyJuIjoi5YaS6ZmpIiwidiI6IuWGkumZqSJ9LHsibiI6IuiQneiOiSIsInYiOiLokJ3ojokifSx7Im4iOiLmoKHlm60iLCJ2Ijoi5qCh5ZutIn0seyJuIjoi5Yqo5L2cIiwidiI6IuWKqOS9nCJ9LHsibiI6IuacuuaImCIsInYiOiLmnLrmiJgifSx7Im4iOiLov5DliqgiLCJ2Ijoi6L+Q5YqoIn0seyJuIjoi5oiY5LqJIiwidiI6IuaImOS6iSJ9LHsibiI6IuWwkeW5tCIsInYiOiLlsJHlubQifSx7Im4iOiLlsJHlpbMiLCJ2Ijoi5bCR5aWzIn0seyJuIjoi56S+5LyaIiwidiI6IuekvuS8miJ9LHsibiI6IuWOn+WImyIsInYiOiLljp/liJsifSx7Im4iOiLkurLlrZAiLCJ2Ijoi5Lqy5a2QIn0seyJuIjoi55uK5pm6IiwidiI6IuebiuaZuiJ9LHsibiI6IuWKseW/lyIsInYiOiLlirHlv5cifSx7Im4iOiLlhbbku5YiLCJ2Ijoi5YW25LuWIn1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi5Zu95LqnIiwidiI6IuWbveS6pyJ9LHsibiI6IuaXpeacrCIsInYiOiLml6XmnKwifSx7Im4iOiLmrKfnvo4iLCJ2Ijoi5qyn576OIn0seyJuIjoi5YW25LuWIiwidiI6IuWFtuS7liJ9XX0seyJrZXkiOiJsYW5nIiwibmFtZSI6IuivreiogCIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuWbveivrSIsInYiOiLlm73or60ifSx7Im4iOiLoi7Hor60iLCJ2Ijoi6Iux6K+tIn0seyJuIjoi57Kk6K+tIiwidiI6IueypOivrSJ9LHsibiI6IumXveWNl+ivrSIsInYiOiLpl73ljZfor60ifSx7Im4iOiLpn6nor60iLCJ2Ijoi6Z+p6K+tIn0seyJuIjoi5pel6K+tIiwidiI6IuaXpeivrSJ9LHsibiI6IuWFtuWugyIsInYiOiLlhbblroMifV19LHsia2V5IjoieWVhciIsIm5hbWUiOiLlubTku70iLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiIyMDI0IiwidiI6IjIwMjQifSx7Im4iOiIyMDIzIiwidiI6IjIwMjMifSx7Im4iOiIyMDIyIiwidiI6IjIwMjIifSx7Im4iOiIyMDIxIiwidiI6IjIwMjEifSx7Im4iOiIyMDIwIiwidiI6IjIwMjAifSx7Im4iOiIyMDE5IiwidiI6IjIwMTkifSx7Im4iOiIyMDE4IiwidiI6IjIwMTgifSx7Im4iOiIyMDE3IiwidiI6IjIwMTcifSx7Im4iOiIyMDE2IiwidiI6IjIwMTYifSx7Im4iOiIyMDE1IiwidiI6IjIwMTUifSx7Im4iOiIyMDE0IiwidiI6IjIwMTQifSx7Im4iOiIyMDEzIiwidiI6IjIwMTMifSx7Im4iOiIyMDEyIiwidiI6IjIwMTIifSx7Im4iOiIyMDExIiwidiI6IjIwMTEifSx7Im4iOiIyMDEwIiwidiI6IjIwMTAifSx7Im4iOiIyMDA5IiwidiI6IjIwMDkifSx7Im4iOiIyMDA4IiwidiI6IjIwMDgifSx7Im4iOiIyMDA3IiwidiI6IjIwMDcifSx7Im4iOiIyMDA2IiwidiI6IjIwMDYifSx7Im4iOiIyMDA1IiwidiI6IjIwMDUifSx7Im4iOiIyMDA0IiwidiI6IjIwMDQifV19LHsia2V5IjoibGV0dGVyIiwibmFtZSI6IuWtl+avjSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IkEiLCJ2IjoiQSJ9LHsibiI6IkIiLCJ2IjoiQiJ9LHsibiI6IkMiLCJ2IjoiQyJ9LHsibiI6IkQiLCJ2IjoiRCJ9LHsibiI6IkUiLCJ2IjoiRSJ9LHsibiI6IkYiLCJ2IjoiRiJ9LHsibiI6IkciLCJ2IjoiRyJ9LHsibiI6IkgiLCJ2IjoiSCJ9LHsibiI6IkkiLCJ2IjoiSSJ9LHsibiI6IkoiLCJ2IjoiSiJ9LHsibiI6IksiLCJ2IjoiSyJ9LHsibiI6IkwiLCJ2IjoiTCJ9LHsibiI6Ik0iLCJ2IjoiTSJ9LHsibiI6Ik4iLCJ2IjoiTiJ9LHsibiI6Ik8iLCJ2IjoiTyJ9LHsibiI6IlAiLCJ2IjoiUCJ9LHsibiI6IlEiLCJ2IjoiUSJ9LHsibiI6IlIiLCJ2IjoiUiJ9LHsibiI6IlMiLCJ2IjoiUyJ9LHsibiI6IlQiLCJ2IjoiVCJ9LHsibiI6IlUiLCJ2IjoiVSJ9LHsibiI6IlYiLCJ2IjoiViJ9LHsibiI6IlciLCJ2IjoiVyJ9LHsibiI6IlgiLCJ2IjoiWCJ9LHsibiI6IlkiLCJ2IjoiWSJ9LHsibiI6IloiLCJ2IjoiWiJ9XX0seyJrZXkiOiJieSIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtCIsInYiOiJ0aW1lIn0seyJuIjoi5Lq65rCUIiwidiI6ImhpdHMifSx7Im4iOiLor4TliIYiLCJ2Ijoic2NvcmUifV19XQoJfSwKCWZpbHRlcl9kZWY6ewoJCTE6e2NhdGVJZDonMSd9LAoJCTI6e2NhdGVJZDonMid9LAoJCTM6e2NhdGVJZDonMyd9LAoJCTQ6e2NhdGVJZDonNCd9Cgl9LAoJY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zJiZsaTpndCgxKTpsdCg1KTthJiZ0aXRsZTthJiZocmVmOy4qLyguKj8pLmh0bWwnLAoJbGF6eTpganM6CgkJdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwoJCXZhciB1cmwgPSBodG1sLnVybDsKCQlpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykgewoJCQl1cmwgPSB1bmVzY2FwZSh1cmwpCgkJfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7CgkJCXVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKQoJCX0KCQlpZiAoL1xcLm0zdTh8XFwubXA0Ly50ZXN0KHVybCkpIHsKCQkJaW5wdXQgPSB7CgkJCQlqeDogMCwKCQkJCXVybDogdXJsLAoJCQkJcGFyc2U6IDAKCQkJfQoJCX0gZWxzZSB7CgkJCWlucHV0CgkJfQoJYCwKCeaOqOiNkDogJyonLAoJZG91YmxlOiBmYWxzZSwgLy8g5o6o6I2Q5YaF5a655piv5ZCm5Y+M5bGC5a6a5L2NCgoJLy8gc2VhcmNoVXJsOicvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKCXNlYXJjaFVybDonL2luZGV4LnBocC9hamF4L3N1Z2dlc3Q/bWlkPTEmd2Q9KiombGltaXQ9NTAnLAoJZGV0YWlsVXJsOicvdm9kZGV0YWlsL2Z5aWQuaHRtbCcsIC8v6Z2e5b+F5aGrLOS6jOe6p+ivpuaDheaLvOaOpemTvuaOpQoJ5pCc57SiOidqc29uOmxpc3Q7bmFtZTtwaWM7O2lkJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/539影视.js b/drpy_js/539影视.js
deleted file mode 100644
index 13b4f4e..0000000
--- a/drpy_js/539影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/61Sy24TMRRdt19hCWkmE5iZEEQlHLHokhWLkl2lkTN2Ziw8j9rXbVJUiVVXgLJiAyxg0XaLxAJVPH4mTcpfYHsS2lDKQ2I0Go/vPfecY9+7SySSWjB0Hz1ZXwMOgmH/7p17Z5/fnx8f+rfW12Ynb2dvvmL/29HLs1dfujaUVwqwnwPUCsexQZs3Go33TQ4hLQVGfrxbURjXLB6OU0GUimuS2Y1dohwK4bCKEZnm/R8VzT7eo3G7/bsKMjA2UdcGdjRPH2+5KEYdGxlyAUw2EBfIGaFMKmxOiMzj9xWT4WbGSvCN7oOHW0l/05Ef2I+zm9REKlPvaxEp0DxsOJKkYKVGguMMWp0AC2htBD3ieY/YCOyaSzbsRe24tb1NbwYXtlMCLGGjVGhqWaefjuaTQ5epBRkv1UBqZmOC7I9xoQekjIpRLavIBlyCFxww2rD/sxcn588nlyya+xNcQZQKcxtDPuoJbi25nvYchagI9TxKgISV5BkviehFNU9DMPZXD+G80Uq7W1z6mn58Oj89NpIrguiyDvkX/unpM8fX9KUZviV5WpVgOpQklAHhAkUuvSD5NaTGbKcVdoMG5BQQ4kV2lRNyXQzQdXeyqKRMpdfacVqd4M9+bv8F5ifLC4zVblArWSAD5VKyqmm1V4Z2JMOQex5ZIGxT1FXndtJsyire4DQwuIupn01ezz+8+1+tPfgO2qXhnVcEAAA=
\ No newline at end of file
diff --git a/drpy_js/555影视[飞].js b/drpy_js/555影视[飞].js
deleted file mode 100644
index 50d5253..0000000
--- a/drpy_js/555影视[飞].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/58动漫[漫].js b/drpy_js/58动漫[漫].js
deleted file mode 100644
index e9843b7..0000000
--- a/drpy_js/58动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-bXViYW4udmZlZC7kuoznuqcudGl0bGUgPSAnaDEmJlRleHQ7LmZlZC1jb2wtbWQzOmVxKDApJiZUZXh0JzsKbXViYW4udmZlZC7kuoznuqcuZGVzYyA9ICcuZmVkLWNvbC1tZDM6ZXEoMykmJlRleHQ7OzsuZmVkLWNvbC1tZDYtLXNwYW46ZXEoMCkmJlRleHQ7LmZlZC1jb2wtbWQ2LS1zcGFuOmVxKDEpJiZUZXh0JzsKbXViYW4udmZlZC7kuoznuqcudGFicyA9ICcubmF2LXRhYnMmJmxpJzsKbXViYW4udmZlZC7kuoznuqcubGlzdHMgPSAnLm15dWktY29udGVudF9fbGlzdDplcSgjaWQpJiZsaSc7CnZhciBydWxlID0gewogICAgdGl0bGU6ICc1OOWKqOa8q1vmvKtdJywKICAgIOaooeadvzogJ3ZmZWQnLAogICAgaG9zdDogJ2h0dHA6Ly93d3cudGluZzM4LmNvbScsCiAgICB1cmw6ICcvc2VhcmNoLnBocD9wYWdlPWZ5cGFnZSZzZWFyY2h0eXBlPTUmdGlkPWZ5Y2xhc3NmeWZpbHRlcicsCiAgICBjbGFzc19wYXJzZTogJy5mZWQtcG9wcy1uYXZiYXImJmxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS5odG1sJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAianM6dmFyIGh0bWw9SlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTt2YXIgdXJsPWh0bWwudXJsO2lmKGh0bWwuZW5jcnlwdD09JzEnKXt1cmw9dW5lc2NhcGUodXJsKX1lbHNlIGlmKGh0bWwuZW5jcnlwdD09JzInKXt1cmw9dW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpfWlmKC9tM3U4fG1wNC8udGVzdCh1cmwpKXtpbnB1dD11cmx9ZWxzZXtpbnB1dH0iLAogICAgbGltaXQ6IDYsCiAgICBmaWx0ZXJhYmxlOiAxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJyZvcmRlcj17e2ZsLmJ5fX0mYXJlYT17e2ZsLmFyZWF9fSZ5ZWFyPXt7ZmwueWVhcn19JywKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUErMlR6VXJEUUJTRjMyWFdXV1RTWC9zcTBrWFVBWXNtaFZDRlVMS1N1dEpVUkF6RmdodTFFUW9HTE1XbXRFK1RqT1l0ek05azdnVTM3cFBkbk8vTXZUTjNEak1tbFBRT3grU00yYVJIYktaYlJDR21ickJVeFp0VnROMmwrbEkvdjJENU5qUERFeis1OGpPY0N1SW9CZFZVclNGWXZrUmNBNjVoVG9GVHpGWGdLdUwwUVBKMGlYZ1hlQmZ6RHZBTzVtM2diY3hid0Z1WU40RTNNWWQ1S1o2WHdyd1U1aldHRmhNOFh6cjl6Q21lL2NpR1IrZnVmUnhPL3p3Njk5YUp0eElOUm9OMGE5azRDa01lUEFqbmREQ1NCbmY5bjlzN1lSd1BEWU9aSjlteGZZVm9kZWFWeTd4UloxNjV6SnNvYzkxaU9zcDhIc1EzNFQ4emoxOFd5ZXhhVUNGS0wzbWI4YThQNFFraDY2WUIzK3pMdWtMSVczdXZmTDRVbmhDeTUvTjcvTFFyZXhaQzFpMFgzM3UzckN1RTlENERxQk5DM21XeWpyYVA1VjBLZ2JPcHYwUVZ2b1R6Q3hUSFQ1dndDQUFBJywKICAgIGZpbHRlcl9kZWY6IHsKICAgICAgICAxOiB7Y2F0ZUlkOiAnMSd9LAogICAgICAgIDI6IHtjYXRlSWQ6ICcyJ30sCiAgICAgICAgMzoge2NhdGVJZDogJzMnfSwKICAgICAgICA0OiB7Y2F0ZUlkOiAnNCd9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC5waHA/cGFnZT1meXBhZ2Umc2VhcmNod29yZD0qKiZzZWFyY2h0eXBlPScsCiAgICDmkJzntKI6ICcuZmVkLWxpc3QtaXRlbTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5mZWQtbGlzdC1yZW1hcmtzJiZUZXh0O2EmJmhyZWYnLAp9
\ No newline at end of file
diff --git a/drpy_js/6V新版[磁].js b/drpy_js/6V新版[磁].js
deleted file mode 100644
index a9d0309..0000000
--- a/drpy_js/6V新版[磁].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/777影视.js b/drpy_js/777影视.js
deleted file mode 100644
index caa8bfb..0000000
--- a/drpy_js/777影视.js
+++ /dev/null
@@ -1 +0,0 @@
-bOHh4qyJ30YH+RrYfWhs9tvD5Jc4Xz1Me0uVLZYLg1jcIlNdiwvb6D8n5e9aopJAtroJoz2eayeIatLNPi6hgOc7kCvFZQxGo+FlpMlfpAR+UQaoRCgISKMj/LzHrSJ+EjeHMqxyYZw4o+9qudT8pv1V8TokQCxrw0moFVdWCH4BZ2N7v0C6F4+iytqnqMjWuCqnjTZ8EMYBHWyxdLJzKMs3o+rD8NfhBoaaKfUkkVSypJpHkEz6/tGJsuLiiXxzzzBhNk0FMA0DhDiD5yRSPBU9lPcOvwCgGwiYWu4DtoAPxQ0VeJlOfx4xtZTXkvw1krr/pSUD0U4Hu0VRgTmwSjBuHmd9zqEfTIMXZWcAcl+cWkSuMEkdnsCsVXr3Gu61+IlCzOkv/L9ZcJSNPKQVVSqmoZUVMA4jE0MewfhUc9KKKgP0gvXPQmNsOckLoDh20JIG+ywLQpcHneuYboHQmKt6HfVEKnaztJDGMd+upOHKYUAI+6MJmCtoCbiluCJno3UTo1r7tYdO2wHqs3vK5gmEFLi+8uB/bmDQxy68JwQ5EGHJ4UCrDOtPXdYfq3a9yYNJZuZqnzd3hdaAtqOcqg5NBaBqSHqHfal7wVCdl/MvpDLnBGhN9tfxlN2xnWb9EYMR1B4bquXCEYJnL1B6qwHS9f9f3ZEo/VQQ+bYbOeJ6u8OuEJrDK0k7TpqCwQ+xfdmG7o5Hiac1TzW8iFuEi6m+dyneH0affypXLcC83xNkjgH1O0nPkSdkATdY1nXdNVt7z1XCIEwo36L/WutFwFaPZ0ag7au29pDB/uT8NPi7rMvbk1P6RiCMZAC9Dc/5R37CMV6koZ2+E8Io8GR6vcTmA2acntB4O4p5P/07006gTNGDvxIESPpFpA1/WLYUSA8rGD6lYgluAY2IIJquDJZc+9SYXlXe5D0QrNg/N6ARseFcbFRTX2kHj34eoUzUj71lRlk0Mwy9kpTxHkhOHW9XIRMaGuyiHzSLnT2JmdC4vNFDNM6GZjyMl6DEYT8/EgyatirMb8Ydl4pdE6fPFFGWFVfrJ/87OKxqFHmXl5ptfcKzEuusFLV935OFh5CwyPJ8f50sjqEGYMBFpib6/WJumeTScExKHMDXF7+3065aK54UCRNhq0z75kUz2Tj194GCKdlnHp5de+nKydjI/yjen9M+f47M17h2Fyt3XEG6jqf8+kjgismU5XBqKd0zQoDEMKjit5ZKefYh+tdFXsQpxXnckgv8fiHBNyFZtiNn8e7wlnZB/LVVUXjejW30abS/XTfk7wUp2MoCdblGKj6FLiJXAMotwvUuAmUVqoajspGR/er0ab5NfEssd30hlBaOR/GuunHg+GprSSnaXVw6hg1UKfvFPSHSF0JMaEDF+rLge7FRpKfG7CSyPQm5Q9uNpw+/5w5EyVm/hdrIIh+tC4ZRjmSWzvhrAqEIK4BsYDQWIF+0gxVXn/SW1Hjez0h2OlHLtGPwNYI+FBlXAr/uNic/c4aXcQ+Ln4f6JGOD3EwX8V9J3Z6J1B4Cf33sF54ql5rq9OMoB8tvTFTeBC9MpVxLxblvuBPvMmpevqZMbz3vyGdEvxtZsF4sEZ/yxjHVZdxiZDcdnY6bIaavIhPyGfgEKt2II/kl5FfN+GW65tjjaolT7l/8dBKPJkYzRTmS0/dpNIoG9leGXuTgn/z0ZSuaRMSd75WU2NRxbs0nvKa6EQywM234EF/diLXWgn9u7vXRyBXJjWHhsVSTdDD9UfVaCVHC8qhsAFVWBbLpffbrMlfkINB5le/iDlAaBACUui2nZfU+5g9GVOopjGMrferVV64IgSAp4yEmfvQR+gcpxqHTtpDxRjFXNIWXX6OPEBX0PzuhXU6H+ChreJXzQ4RAOXFYwFkaRhqwKpEtCM7KKm8xz7ZFdI4Law0zD4pDGHyv4Uw3ibGFOwI5PTXUB9H/bXINsDcHD4u0KTyFVxoeZ/k3pL3OfnU0QWwwPwW54SF9ul1w1iboVivOtB7jI9dCmx8TOCXLVtTEQc6hQkK4fNEQTALXyoRcmSVHw6m9gYpHq7Cd6QVuSsaOLslslbo3/xLiVpBYys4iETyxbx4KwboXsYaYREtS5didA/3q5ptsz/Cp0o/ddraMD7oYN9irNYdEawrQI8iGqaH/J84qqB6PbcHhUU/UFOMuIR5TIHuRVP3DmasvG9N0WxbKATdgTio6WgS+tPYk2DTwstmA3GqWI51jlrCcpt0WsAseHJ+5ItazQNrp3Lef7pKtqm766fW/NeQBhQc8rykvzm5fH6X3uQO4DSRqtvFzaDhqkBHIZECgXy33ccJTcHGj+VI7UIgACfv8m4uJ8cuk4mSfEJwGRsMSy+RqYgjGzp6nb91TEu0/NqkCyWAckehRgFCuykYIskdl86t2YQsF7QvMkaJqGI29MntsLSh3QwaEXCN4lXvL1vScVFBtrpf4a7W+6cjogBmlOgXmqnQbNW5DH4AziE4Lmq3GNFEVuaKOtxpILYvq+jUpy1sXztnelswOYPa8EROIqf/yjUQgxl+ggOSXZrivKSgvs6fk0/9ogqV706fPfEH9kQteQYqx0DJwND9I2i1gGGsq5qG1z8SC/ho5HfABIMZ+j4y5xFtExnXjsfDpJYPokuJR+B/OEmWvHw2wopdkfm3G31Db0g9kr9gew5pyviPHX9Wk0BhResemULvJGOpXYxUKpNXjfNZr7Eh9/SWF3RLQEuLfKOIFFG7qE+MLXlrqH2T+H/fjuNU8qveOF5Dgc5hn9R1fAmGBNn7XIW3F6aA2BjTjrpMqM2mu0cF1ceWN5nnsg4nr1uKUgJuJbDBYQ6/CXq0R1X8p8ABMMlajXW58T4zNVeKMev9GZeIkLT9QtNjyOQOE3J0kjV1Ha3bRNfAzSr4LZSAIKWYfbJTNzC8R5LjcCazeGxynSMoRNS56BJfxziyNsK8CO0QAqDbx4fPMWrsPMNJlpcB+T7161COPuO9juH/WwggyfA2mAcjv2TYTzm7GM9du36WphgDwKrpNOS/PEuEhKeHKoF/f8zu5AQORxlSOat8VQ97ri4bMqEz4CRQJzOZ1WyUVOerMs8USISH500a9UjGYtvSdxxQd7y3uVeugNSzs2Ro9Rm0/rjhEjf0aN56IMELeRQ2t2QLVQvprjHJ1MmiR8I3dwqx9zO368pyu6Er/3NVMmj5rYtM0Gxq9D0679UfUcc5OpidKBg==
\ No newline at end of file
diff --git a/drpy_js/7喜影院.js b/drpy_js/7喜影院.js
deleted file mode 100644
index 01d60fa..0000000
--- a/drpy_js/7喜影院.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/7猫小说[书].js b/drpy_js/7猫小说[书].js
deleted file mode 100644
index 756b4cd..0000000
--- a/drpy_js/7猫小说[书].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/85k影视.js b/drpy_js/85k影视.js
deleted file mode 100644
index 6525696..0000000
--- a/drpy_js/85k影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogIHRpdGxlOiAiODVr5b2x6KeGIiwKICDmqKHmnb86ICJteHBybyIsCiAgaG9zdDogImh0dHBzOi8vODVrLmx0ZCIsCiAgdXJsOiAiL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWZpbHRlciIsCiAgc2VhcmNoVXJsOiAiL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLyIsCiAgZmlsdGVyYWJsZTogMSwKICBmaWx0ZXI6ICJINHNJQUFBQUFBQUFBKzFaNjA3Yk1CaDlsL3hHczUyR3R2QXFFeis2VVkxcXJDQmdiQWdoTVhGcnVYVk0wQTZ0RzVzRXRHeVVwaHZYbE1MTDFFbjdGa3VheFBiblNpdXNaWnVtL013NUowNTg0bnpuY3pLckVHWHc4YXp5UEQ2akRDcFdwVW8vclNsOVNqTDJJaTRlVDhkR1g4WmJ3cVFOMDZWaWM2SG93UFlCVWViNlBIaTFXSy9scmZTS3g0UTVrODNUZElFekVjWllxWXE1c01TWktHY0tXL1NxeXBrQnhwaHYzcHJ6V2M0UXpDK1VMb0RoQ0w4N00vVyticVFGU21WVTQwU250UjFPcWZhMWhoelNkWVhtZGJwdWNGZlk4UzljUVlua2NQejFvL0dSY1RROU5vd21SOFplb2NRd0lvaGR0SDVab2g5cWRML1EzRjMyVDRwTnhHTUlFTDY2ZWJoclhwYUJ6b1BZMURPNmVYVURGQjdFSEwzWnRBY0dDZzlpSHYzWWtSVWV4S3hhcThnS0QySmo1QTdNL0RFY3c0WFlYUGFPNURFOGlNM2w1a0pXZUJDL1U3MzlUblV3eG9aT2pVTTRoZ3V4TVJZenRzczBkUVNIWVNpYjg4R3RsU2xaNlYwNGJZYnk5Zi9aWEx1MVQ0WVhaU2pUTFozWHExa29jaUZ4MVRYS3BVWnhucTg2ZHR6VnFyTWRzZ2Z5NWFPeDVEUGtRa2g4eExMRWhiakUrcjR2UzF5SVM1cTVHdDNJeVNxR0luRTF0S2xhRUJLWGxDeHhJU1N1M0RaSkMwTGlvbXFiZWd0QzRwT2hKd3RRMG9JUUxBaFhwL1ZxVFNnSS9uRlhqMGJGYXI4dm5vbkhKcEFEQUZxVGFRM1FJWmtPQVZxVmFSWFFSS2JocldHWnhpSk5CaVNhREFBNkt0TlJRRWRrT2dMb3NFeUhBUzI3Um9CclJIYU5BTmVJN0JvQnJoSFpOUUpjSTdKckJMaEdaTmNJY0EzTHJtSGdHcFpkdzhBMUxMdUdnV3RZZGcwRDE3RHNHZ2F1WWRrMXJNRjN3Tng4UjQwTWZ3ZllNWHdIek54NU0zZktTV2ZFSnpOb0ttR2Z4SkxRTUV4OXUwMHprcGlhNUVXcHZFaFR5MjJheWFkakUzSG52b2I2RkxYTFJvYjNBM1pGckJzRnU1ZndXNFVRcnpPWFpUdFZCVW9UQzVsZGxRU3FuNTkxWEhDU2xsTzhOVExQTHVoK2xsTXFGbXFhRTJnQ1JSNnFMUkhXOUQzYmtvNVIzb3ZHcFhOTGNaZldwbFBEY0lmV0pxdmJhVTQvZm9IRE1QU3ZCYnp3L1A3WGdQL3owUXpqTVlqbUlKcURhUDdOYUE1MUdjMDhmOTM4c2FyWGpiVGh4eUlQYmplZElSc1NxNHhkZUNETDQ5dk5hTWoyUDFUQkRnVUZ1L2NGT3hRVTdLQmdCd1c3RndWYjY3SmdDN3VpbFhWcjV5dGRMWnJYMzN4UytERGN3cTN0TTFxcitMVmUrSnJyN3NQRWM5V3dXS2FjL1JaZytZZGxiOHNGMk9oRDdaK0V0K0IrKzZmT094dDNIbERoUW45dHQ2RUY0ZFg3OE5LQzhBckNLd2l2bm9SWHBOdjBFdjVQMXJhc2FwNS9nOU9FSDVSN0pRSFgvbWxUNW40Q2FyeGVsZWdkQUFBPSIsCiAgZmlsdGVyX3VybDogInt7Zmwu57G75Z6LfX17e2ZsLuWcsOWMun19e3tmbC7mjpLluo99fXt7Zmwu6K+t6KiAfX0vcGFnZS9meXBhZ2V7e2ZsLuW5tOS7vX19IiwKICBmaWx0ZXJfZGVmOiB7CiAgICAxOiB7CiAgICAgIOexu+WeizogIjEiCiAgICB9LAogICAgMjogewogICAgICDnsbvlnos6ICIyIgogICAgfSwKICAgIDM6IHsKICAgICAg57G75Z6LOiAiMyIKICAgIH0sCiAgICA0OiB7CiAgICAgIOexu+WeizogIjQiCiAgICB9LAogICAgNDc6IHsKICAgICAg57G75Z6LOiAiNDciCiAgICB9CiAgfSwKICBjbGFzc19wYXJzZTogIi5uYXZiYXItaXRlbXMmJmxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oXFxkKykvIiwKICB0YWJfZXhjbHVkZTogIuaOkuW6jyIsCiAg5pCc57SiOiAnYm9keSAubW9kdWxlLWl0ZW07Lm1vZHVsZS1jYXJkLWl0ZW0tdGl0bGUmJlRleHQ7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0O2EmJmhyZWY7Lm1vZHVsZS1jYXJkLWl0ZW0taW5mby0tc3Ryb25nJiZUZXh0JywKfQ==
\ No newline at end of file
diff --git a/drpy_js/88tvs.js b/drpy_js/88tvs.js
deleted file mode 100644
index dc373b9..0000000
--- a/drpy_js/88tvs.js
+++ /dev/null
@@ -1 +0,0 @@
-IhQ4qYXbEH8CuG28d+KFO+3ig70mhwJseGLF5Tl/Dtts1abXdoG/h0Es+faABNvZJn0tihzMKjFabJuJ9ySTspsxVprVt2KSRTkmjfatRQUKfWdYSw7Iar3D3fd8/NXoTXady2lnw++Q3zxD5axuuBuAT9R8M6b4M9FriDkyCZv328lAgBy0d9mHRYHxFuGJru94s4KZ0L92fLvPfVYtnuoNSP6xbzlLcDsoM8ngkCY0UR+KSDW2n0YAt0YLHlJIm/wFiYpttApStK5Pie1aQiZOMZWqj0LSCUbDOFClv08OGv4SWT3aREHjg4RxxqnkjtlPMha0HmkRV5OXfGCHchCrHGPKjrZp8VS7KW4efVnep0/koSB2JdLELH6fG8s1xltO4ZXPwX9fW7lveQZ6FIkwNV6xOqf4OwyqI0StOX5kbwL3LNPm0wwyGqzxAU5pa2yqFGpQHramNeuAgFfvdgYbRlTDkn4R4+x8J/J03w7d585ENDEg7tqipZRH6LN45NvSoMnCOesGFFtczMU3iLFIsx7kPWTSk3qPHGZVZh7aJhixvc3gB9YIoQr7Tv9VcuC/4Uo8Plxt5+d89zj5jvEqq6YdToR9MGCbg/JWZU8f1oHDO0qscfmjIihHz0/IahVle7rqGNaXsHsQeduieKWiN7WSfysYXt8pbqfSlFC8mB3ACHBHMMFh1DZDOKWvuEejKztdq98RZXdYdyapxFk3riEQXa7y1n0SXnVtwo/hQVty69fgNx4ogg9zenSQGdDz6e2BObQ4Pef44OC3oJZFetcKUF0TATN9l+x4eR5TzUN70P3lDZgFjSo+Q3yCpoAy4HcE9/HK8scPNVpKuCERFY6Spd9xVCv1xXNTBBWV13k2V0q+mnMQXgbNAZ2iue+ItFPpZ77RmzbHsmoPpjvNd/eoHNeH3QW89e/x0RBaKplPv/RqqCrwozB2/gvI3Fc68aHZKXw3M7u9eLWWSdlHPMpiSZbsZ/iQMmmN9GWLCPf460svTys99/6QGwoHIIwHX2f9kU+9MwKdXOqBYSoXV8fCC8GrLX+h5Km7Yi08frdxG4eushY+KVM24Okrs1O4vPm1fIN2iMg8kjN29jL55qFQzYPe0zOAkzPV+HmdpHQKvFwoDJ3pZiWgl1B62T+H0Ilq08Dox0PCnErBxWXnm9+NX+YWQOzdDUpeQe7AB665/+2RLcrZpNkegUDI+l8sdfR6qzeb7KiD2Wt/nge2kQUV7te+k4scQVpJBhs4ALTXgvc2zpYFtol14/ZmNsp6NQrTFLdegdq6xhtpQjTRUftKU937AYu2mJT9u77VOhTFtfiwwKPa4+umkN/yudAnH5PQL5BroAJS8djCM8qehE6ZAsMHfTROTPKErkjjc63YPGR4ngz2w2T7qI79+CdgdQdeNybDcSb0ZfAJy9QXPhD5kD6+ritTK6Vzh5j9wg0lqqE1JJAQiThppzuS/c3bp6+rSQIwKuxwWaO420bn/MRCivbCAI+mgMbBXiG9FKpzZ948q/mWqRl5juiQtuYC4WkjtrmN41LKHCmkH6Zg2mdbbweUTU4ZuMiynxUlBcH+iQ//MudF76x2AyJWW7nhZPaSGJ6HrQ0c4E0vuwuU2qTrN2jt4rmvSLtZr4J+HVGcreLTlO1shyGOa4DbGafORZWF/BXAbGFMaHFwbkSQIQbCi57+kUnr26XuKUSLGNvbfN2tb9JbzDCJQNSSbIPzuWCx7fj7BLR62PSsWxGns7MNdKz/QEaMWAr1ogfOc9E/FEItisHim1wz72CN2wijz8F5/K0xXS9zLrAN0TvuoX5iVzhtt+RHzEPCo/zII7X/AXluwzV7SO8m2AXLBLpx/wsKm29VDhqg6de+wWSZJ2aZLaYCfgaJQcHKm//W7qX4AKKzZ7ok1qZINkYJhhxFuos6h2akDHJSgC+K+Eskm6LWtoPeuzXUv/78IpqKqcJwEtA+DfyuKhkA5Nl4EcsCbmc7aRPhQw60s4iBdijRISzIZjLXrrFygv2Ifr3So+SIjVRoaWKyiLIey3iRuZLSXiGFcdXvA3to4DM9pjWtCCkLghlmKWqgBC9qiw5grLTE2m4z674n/t3jU4eMbE7bAyrjR2FQ/Za/1ZOHvsCS6a1yyg4KvZTZs3gsqMJf5yzFMTiNGj3LDcB0L4/TC0tNLh96+2Hf+qHnRn1jvXfkbP1T4cPih/dVd7g2FpYNmkrTiDyojd1EJOB2vn/J
\ No newline at end of file
diff --git a/drpy_js/88影视网.js b/drpy_js/88影视网.js
deleted file mode 100644
index 9298ba1..0000000
--- a/drpy_js/88影视网.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV6tsYzlvX1nKdoU7WMXNIE5c18n2FGJHD3BJteINLUCaAMcjHzki27d1ORu7WnGEqXBaHRRYIbYfJeuyW6iNaRjAFxvjAv0uFfVbxGFX2YWV+i7E3v85g/PB+8+DI86stbiO1eLDbE1zCD1dfTb1M2gQ4VtBJeym8zRdGd5zI1keI+IBtGQbCNG3f20zgjntLFb8J2EqxhRoByRDMb8J0/r+BohbcNe4eznlJp8wGGo7HQRCK0y9Scq5BcAG/9zw1yLxk9iQCVan3orEl5eBgcGHKgwaedvTJcBck8XUJioPvSGTWGx6zLpbliQdmPdbnauhNJSZH1PaFFhu31Jyv3n/lX4NiTV1kXOVrUIKs59+JvC3pLVsnw2ycg1q2DxgijJ3BqoVi8A3PueYw0ZuQnRMhWFQ97Rvzl5sZ/7c/92zw3g1NjKVjNBH/mfo2bL2I8mcjjyi25u/WQKFFu+mQhm94I6ugjP/VplZwmq3mSCgPmVpv4OoNCjmGCMWYaM7eRTthRgDSXQF3HopWipVPjhc/Qg44aY2mNHrvwb3h0yMo6X0K7gF5xKQ9vaLOQ/9cFWn01pDvNuZHIcDKCZZi85mJVVVlA8bFifn1WKkN9YqaA7X1YhHlygXh/mgnoHf9G/BGxfHKmhWQlg0kizeQ9CvQ3iddOcaPXR64SK8ud8hc93eiky9+Va+qL2xgZ1IOHCkU6FCgXXMdeoJmLUQMdQh5aoHQ0jN6cqE28Aey6ZVVQnfFDy0tl8U4b1uBBmw7MBV0lmfrAhyRgsEy4Xc4Bda64fNt1iiaVGY1Zuv8r0DM3uBacnXHz6X3+bwxRh7UgEGfKsuq+yeXXar4tmX7GsyixKMLzGXsFjVPqqaBcp9HAKsUiQQqqtpvpVAw5Ln4HEtFoJs3tFTiUOo3R4mslXkZq4U3E8rYq8tdOQIVnutL9p5wkcgBrlHGDiIF/A0FCxnkQK9xY85Mmbrm0RLxWhQrn7S5w8rhhAduPfmtLGPolzuHxNfk2uMRQ1HMzG8K5Wf7LsrE98gYvj+77nGqWkzy38hOYgnPW/8L2iee9kuLoLx5RaIYyx7eHtiyopvd0UOyq8aQUwReohy4DO1OkYSHLTUb2aMRZnJSyw8FVR+BA4gSkdfogtgv26RiVDR9o+S3nzs453Lp2nhnNjbj1gh/Bq/TxiHLAn+sg0Z8AqvFBSIXTJxKTxF5eS0FO9IXdpIj7VRAVzKu2uwpziZbReuF5btkMI0w5sEDQbMficbNVryIti3hu1cF9kIeQdpAToEWnU5xCHAAdz6hRMbHc9EWsftGK3wYQB7DGH9HCeL77xgL4MVWPGTgDZVVydaZtRT6M+URrMkochyKI8VrwLXtnb8ExtD0SuqywPn/wAUy9PY6HOUEBB331mazIDe2WvJ1U38v7ojftA9anvg20mClj8V1y+JUxsAMfberb8X/IHIr6uVQjA63/r4RMkFpHWmDHlm5AsX876HuWsh8fqXSUTJ36jnhp6jZK7twEV2yrZW0VyHtCLXH4++7v0rAvBBnCQwJgfaNc3/z88S0aRDRr81Tb0Zgz7ySQzHH4R9yxndx93iQiLGeCHWxhQnmzT7HMCypeevJRzEdiOry70y2ExTTvJuVbsJPtxmLlHrGjyPVWRnbRnD5dA7FQ8yVJVca6mvyyuYO6uzcmjGy3BPCoI42PRkEZdr76HYgwpp+n8cY/SNm7REPtThaGtxN8r+ElxZaqObbN3CoEPJxrCpSqmnna0tQb7EwxRkMmY10VlnL6MEVYBT2efAARG2UA==
\ No newline at end of file
diff --git a/drpy_js/88看球[球].js b/drpy_js/88看球[球].js
deleted file mode 100644
index 93b7aec..0000000
--- a/drpy_js/88看球[球].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogIjg455yL55CDW+eQg10iLAogICAgLy8gaG9zdDogJ2h0dHA6Ly93d3cuODhrcS5uZXQvJywvL+WPkeW4g+mhtQogICAgLy8gaG9zdDonaHR0cDovL3d3dy44OGthbnFpdS5jYycsCiAgICAvLyBob3N0OiAiaHR0cDovL3d3dy44OGthbnFpdS5saXZlIiwKICAgIGhvc3Q6ICJodHRwOi8vd3d3Ljg4a2FucWl1LmRvZyIsCiAgICB1cmw6ICIvbWF0Y2gvZnljbGFzcy9saXZlIiwKICAgIHNlYXJjaFVybDogIiIsCiAgICBzZWFyY2hhYmxlOiAwLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBjbGFzc19wYXJzZTogIi5uYXYtcGlsbHMgbGk7YSYmVGV4dDthJiZocmVmOy9tYXRjaC8oXFxkKykvbGl2ZSIsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgIlVzZXItQWdlbnQiOiAiUENfVUEiLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgcGFnZWNvdW50OiB7CiAgICAgICAgIjEiOiAxLAogICAgICAgICIyIjogMSwKICAgICAgICAiNCI6IDEsCiAgICAgICAgIjIyIjogMSwKICAgICAgICAiOCI6IDEsCiAgICAgICAgIjkiOiAxLAogICAgICAgICIxMCI6IDEsCiAgICAgICAgIjE0IjogMSwKICAgICAgICAiMTUiOiAxLAogICAgICAgICIxMiI6IDEsCiAgICAgICAgIjEzIjogMSwKICAgICAgICAiMTYiOiAxLAogICAgICAgICIyOCI6IDEsCiAgICAgICAgIjciOiAxLAogICAgICAgICIxMSI6IDEsCiAgICAgICAgIjMzIjogMSwKICAgICAgICAiMjciOiAxLAogICAgICAgICIyMyI6IDEsCiAgICAgICAgIjI2IjogMSwKICAgICAgICAiMyI6IDEsCiAgICAgICAgIjIxIjogMSwKICAgICAgICAiMTgiOiAxCiAgICB9LAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpZiAoL2VtYmVkPS8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgbGV0IHVybCA9IGlucHV0Lm1hdGNoKC9lbWJlZD0oLio/KSYvKVsxXTsKICAgICAgICAgICAgdXJsID0gYmFzZTY0RGVjb2RlKHVybCk7CiAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICB1cmw6IHVybC5zcGxpdCgnIycpWzBdLAogICAgICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoL1w/dXJsPS8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgIHVybDogaW5wdXQuc3BsaXQoJz91cmw9JylbMV0uc3BsaXQoJyMnKVswXSwKICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbnB1dAogICAgICAgIH0KICAgIH0pLAogICAgbGltaXQ6IDYsCiAgICBkb3VibGU6IGZhbHNlLAogICAg5o6o6I2QOiAiKiIsCiAgICDkuIDnuqc6ICIubGlzdC1ncm91cCAuZ3JvdXAtZ2FtZS1pdGVtOy5kLW5vbmUmJlRleHQ7aW1nJiZzcmM7LmJ0biYmVGV4dDthJiZocmVmIiwKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAiLmdhbWUtaW5mby1jb250YWluZXImJlRleHQ7LmN1c3RvbWVyLW5hdmJhci1uYXYgbGkmJlRleHQiLAogICAgICAgIGltZzogImltZyYmc3JjIiwKICAgICAgICBkZXNjOiAiOzs7ZGl2LnRlYW0tbmFtZTplcSgwKSYmVGV4dDtkaXYudGVhbS1uYW1lOmVxKDEpJiZUZXh0IiwKICAgICAgICBjb250ZW50OiAiZGl2LmdhbWUtdGltZSYmVGV4dCIsCiAgICAgICAgdGFiczogImpzOlRBQlM9WyfpgZPplb/lnKjnur8nXSIsCiAgICAgICAgbGlzdHM6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgICAgIExJU1RTID0gW107CiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dC5yZXBsYWNlKCdwbGF5JywgJ3BsYXktdXJsJykpOwogICAgICAgICAgICBsZXQgcGRhdGEgPSBKU09OLnBhcnNlKGh0bWwpLmRhdGE7CiAgICAgICAgICAgIHBkYXRhID0gcGRhdGEuc2xpY2UoNik7CiAgICAgICAgICAgIHBkYXRhID0gcGRhdGEuc2xpY2UoMCwgLTIpOwogICAgICAgICAgICBwZGF0YSA9IGJhc2U2NERlY29kZShwZGF0YSk7CiAgICAgICAgICAgIC8vIGxvZyhwZGF0YSk7CiAgICAgICAgICAgIGxldCBqbyA9IEpTT04ucGFyc2UocGRhdGEpLmxpbmtzOwogICAgICAgICAgICBsZXQgZCA9IGpvLm1hcChmdW5jdGlvbiAoaXQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpdC5uYW1lICsgJyQnICsgdXJsZW5jb2RlKGl0LnVybCkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIExJU1RTLnB1c2goZCkKICAgICAgICB9KSwKICAgIH0sCiAgICDmkJzntKI6ICIiLAp9Ow==
\ No newline at end of file
diff --git a/drpy_js/8号影院.js b/drpy_js/8号影院.js
deleted file mode 100644
index 1407adf..0000000
--- a/drpy_js/8号影院.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/21Uy27bRhTd+ysII9DDkslIshRHghoormxLVvSibDXeKENySA41HLLkUDbtCAhQoGiAAHWAIm1hd9EsUi8apAECFEjR5mcqqf6LDkVatVDPhuSZcw/n3rnntiQDypQHros0kjA9CRD+6s2ryflfWf7vjy9mH39Jc6crHFsUSG6Ri/Mu9dC6DQiBeDDQIVA4PRdPr4yTpZURcDjHw5ArRzHTy5+nP31iUZEk482lEMWQoZuTb3+f/Pn+6sfX0YZuuZThOqV2URCOjo54CejA8l1etsyI4zm4yK0KqoNMQfVVhCl0eJ2aeDXcDxEgBX/IpAVh+sO7ydmbydm72XeXk2++nr3/Y/b2/OrZ85vsQSh6eqpifvrieUgbj9dV3wYajIRZAQbwWMaeEpx9evHr5OXl7Ku3V99fPp1ePPvn08vp+Yfpq9/iN4WZ6O6GW6tcrwLtP8Kij77M9/1hgR406iKkUi8licY9lezk9q2CSMy6B7DVMfv1Fujbj1sH+U7dJF+IHrxXz52MGo+UeqU9NH3noDB8OCREcdWmJCO7ctzZ1Fwi6Hfz2ULV+BzLeUwMfUdu3j2u+Ntk69C+3zbbrYxsMG6z+rCmiPldVzY64t4wS43DfnfTrElVoZkb0WEmt6d5vUrP6Fa9XGM3BdTNnfrWsKc3RZCXhdx9cbtekxsoq4q4kYKjbr3maydO19ztEG3UPxzu9Ufb2tb2Yz+VKXSqLPlyeemKBgpUi1GjZK5fWM9c15/VLrM6B8dhWPZ2UnaJlLudlFsibdxO2ohIKwuiC4Ej6/tBd8SF8IO3dftB0BblsDtiIXxkOUp5bY3FRAD1bViOmkHGzGADGzgua53V0ELU8gYDExKPw6gEYrEePKbBU3egWuLXhAS/9iB5s7ExOPGL3B3D5aklUgcRLZFIcuXPFqkwCqQcIogODJd58EkrNDerMyKw7Vg2dCiCboKAEdIAtRzmbRsDqlqOySqiQWa+UDKO2rpFYHzMbP2ktNBHxPbowt3XK8ork15C55aaByzjRjBF4un/KzBzUQewzdg8BVd2kE3LcS7FQSJbCtzv1rYs02bHIjQhARcWNqrzjUSUcjL5n+o4vMkImZ5dzD68XkyvkaVg5NKg/ApiJQ8vYD6VSnxQZmwBJRZTAAXrloM0RAAu8ZSdb5196XT5soLh9y8C8qBDRwUAAA==
\ No newline at end of file
diff --git a/drpy_js/926tv[球].js b/drpy_js/926tv[球].js
deleted file mode 100644
index 007bb71..0000000
--- a/drpy_js/926tv[球].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/ASMR[听].js b/drpy_js/ASMR[听].js
deleted file mode 100644
index f639e7f..0000000
--- a/drpy_js/ASMR[听].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV4cdwevzzVM9Nz7H86XLRA84tPQCSoLeimmOfKciELapp10YNmbbs1mcgWvuCbjjgXsJkvU4hwcERKfbrJybZ0JnJAm4ILUE4MHoamVT2BRDaG+Deo1NbJBVVgy72dlN3mwz+WEta6YM/SJAuT3APct81BP3rx1peiihQeDzxTxS0e2powSRZb7JWMH7bmrvL4sNzmUPkNHTJVBC0Wkc0dMnhYbxYqmDbNg1MkRKxKhFCgRMc5zxvHJUly02tZrH1PQiHItVa38q1tSDQJ1ErAR5cWsTG/tCgsBrSLihyUBT4J7SzTMNXGg0lEBOgNukKikYqpFVx/pv8/4a1QlTRRkHs61/EdZcY7eICVDL3ttsVdm+TJzHgjcK+1uN2PZYQYyEJL3ScBcb6wNKs/KsPhBCOTEuR3f2k0bMqQZOjbbqG8y18bO7MjbT5N4k1ZuZHTGmfTskfaPQcS+2/RcJyL08AXZIbn2WQPXqLOwSItw4SU05CoYJFavIxvQBZCJJ17TNbjNeu47ftwKCVbHbKEbpoaRZqa6boQpU0jNFcyqKqREvaQc3DyTUtF32hLMksN/hq9p82hm+vnm8I+wR5BcxW9Gs6gT1Cys5i9xAV/s+2PfCTbHQao0j5+RdiBLvAWnBu9A5HMfouOMRKBZuS5wHYUFJpyhr9xzTgQmhxxjVfDzMpZnX8BX6kc1l1awv8gGd0GfW3sEayOAPtooIetAHqPH7Fstl45T6pMLXJwyjvSYyGWLHbT7k75XaOXgjbFXuMEuKdr0yWHFj0Uddr4NWp7IRJAhnulk0VtIv52emTPCb8wuqxbXClAXpgfXkRtEBITtrUKyjE8yS5Yt9s2cKUOwlKBqUBsuQZ5WXmsq3uvzNCvDr/Fc8967fn9jLWnh/Q3kYNRwbTJeHLB1AHqIC5x0thhp0Y6GiA12fVc7zQI/zi/KnFRYpgil2zitLQmHpcAYX4fTckueiNe55BGWImtAWX3VGr1V8AWjyNTbGHYwprVY0ZP5NteMieUIP/++eadstt1X9P7Sn4Sv/FtqEAZ617CbTKvOpoSBoMlchCKCV401XYDABsT+I+6KpNaPEkwV+94kjfIk6ScQDQDbZrhnNW7GZ7nJ6+Ji/jNbgQgsHja6RPI0anS/1uyJ4mcOi6b/dcgTJgsB/gcemB7HTtMTOpTjvytBpXpBrYbPdFD1V1pvTrP7XqwGk7JVp/MODcI6b+HNpg0pYw2JrQWqVrS9dIlSgItjAd3QHsSJdQjfMoF7xnJQg+rhvwEdTQjYpvmg8YT8/ol9S8P4ocCtfaw+E3K6vWWiRVA+LQnF7BbXiWyHyEUZBbmgwskMsRe9Fj2HJnrt3F51EYPDlo/Spk/nc9DKFZBObHU+3AP3jh71xpcQ23nIwNnxJL15hsBhBy3l3GnBIGA5syG0TxkFMua/7mcVHuiZ1A+uV+efilL0jK/UWX3SQuD43lUy5rm8JpiBc04C7A+nO21LNF6LL8ZXr6EY6eTpIZXpsjHvhLRkh4Mqi7UqGLQ6jO92avubzUDYhbbW9ZsSALOMz4TRrwGaSYWBhGRrpuaTxQeG14ioz5zfuxRUBk/5ObC4fAPPdN6OCAu/BnsnDRPaNhtFc1WtHalh1ugiieNvYZ1uWI1lzFQhUAgH4l3nJLmpT8GmCRwU1QyBhCZFbY45+pIQ0oFooHa7tR8Zei66PyjS9
\ No newline at end of file
diff --git a/drpy_js/Auete影视.js b/drpy_js/Auete影视.js
deleted file mode 100644
index ad062d4..0000000
--- a/drpy_js/Auete影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/61WW08bRxR+xr9itZG8XmrWQNo8rOVUNE1VIVWtBHkpQWTwjr1r1t5lZ9ZgkCUThALkAmmTtEpShd4ETdWSKI2UcEl+TNi1eepf6JkZX8Zp+4afPOc7l2/OOTvnZAYHE8qgEm8/bv71k3JRiR69aW7ciDZ34hf3T5/eau2vMLh5fDf6oRHtH7XWnyo2pT4xMxkUYooN4lAMKplEoooCJQhdrOSU5cQAdaiLTUUbY1paOjGQySi2R6ipdext5C3ZqEK80Mh7ZabCcUXrD+AHnjBn6DgB3A+cCk19/uXEpJ51MQVCZTcX4PkQEyFOL9sYWTgg5rJ6heBgaKyIK1Q1v7o0c2WsXhdWJMgD0xLxDd8q2CnmJK2GbjLpOskkSibtABdUPSuCgbKeZa5z8E9LZzKQkdMfX0ZPnkTbt+Od19HmXtxYiTe/jbYelMjJ4c/NnZV3jeunjYettze4XevlzahxxNMQBq6pZQq1vIsIKdQKjktxkHEqFl4s1HxUxAYjM/XfGhybZhlhbpQz8COkaJaVa6R7nhHul5cLrsHN6/WesskqPKB+4VUdrJpTy+ocrqmmyvXUtFpBZRCr0cZuvLoG5ypyQ6FXYeK1vdPVPSaGg1pPt6UPHoM+9F4byCyW/B64uXdy/FgCraUe2Fx/DmEkEM1L4O7d6PWhBM7ZPTBe2Y4bD2RwVgJXN+PrDyUQWqUHrn9/crAhgUsSIXFv2ZIRmq5Pp1nSJqtnlLHmmzug34nhhWXsdLHTJ79JGHxlpbDH/btfJSxwZOjFMwmqIYpklL0CPXQBVYoSGG3Jpv2G0aPjk4MuVsGO1WMav9qX7aqzxVIXa918LtNxRMBOIr+unVXrPTpuHh51whRDb8mrFOVUSiiksg+FIkgolECgHY6fls+K4+Ze895ht/0hiB0iuaTx0e+9kpZRRb6dhMHtZBDoSyDQ52CH/bxD0Rnxb/35LDq+L30T4670kR5uRWuvZNB6H5T6YNwq9bXkL7vNey+j4+fdxpQ8i85rNVb6VVzkWQ6qsI7it00M1OHCBKMgb18RzyofPueJZ/i2/zF7THPiTU0KrQUvsHKDg1rXTLyfo3CeD5383AQXige1M4z4o6n1BpIGcfhIAi9K+6dd8rw5BzOIgOPRGeE9581pgiQvwoyPAsKmq1EOhlBIPcV1zCJNDeumS1MX9CzMr0m8SLPtOZbNpK5eXfhAl57+dkyKZmcCXPaq2NRODu7G3/zxWfPgLbuW76JaJw4NQgwiFy3VTI2BrlN2YFRfEE4SA/GdvdbtbSDEM3LyqtE82GX0KERHlusQqhg0gGE/cz5r8NWgTdBgPpNJmKpZw7YoKvYT594ObnFvfORwWyghrAxVHCigxiVZo4wJYeVJ+iaeT43qwo/K+9gpF1VT6djAiQcUmIVJnvlbGBoZHm4Hf9/bh3qHbb/8o/+RX+iLnvcqlK8fwKCtp3C1oZE+PSgFAaVrJWLCcWBy7JMJWFCmprPsxDYWpgASWFeQWFdgVRrVdI4zzCh4wWWUt1Mph+pK7iLPmHBk+CGxU3zRcWhaUWc9q9aOrRvEdx2a0t41tjR9amS6c/776CGch6d15qXOw1zjRFk5GVP1HOsRWBWYgF3onGPp0Imq6FSxU7IuyKPAGmIhFUgAfHjQAhB5yIIJgoNuzi0YN/+qfv0fj1LByKEKAAA=
\ No newline at end of file
diff --git a/drpy_js/B站影视.js b/drpy_js/B站影视.js
deleted file mode 100644
index cc7d19b..0000000
--- a/drpy_js/B站影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/FreeOKLOL.js b/drpy_js/FreeOKLOL.js
deleted file mode 100644
index 2e593c8..0000000
--- a/drpy_js/FreeOKLOL.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/GO影视.js b/drpy_js/GO影视.js
deleted file mode 100644
index 7e40908..0000000
--- a/drpy_js/GO影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICBhdXRob3I6ICflsI/lj6/kuZAvMjQwNzAxL+esrOS4gOeJiCcsCiAgICB0aXRsZTogJ0dP5b2x6KeGJywKICAgIOexu+WeizogJ+W9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuZ295cy5jYycsCiAgICBob3N0SnM6ICcnLAogICAgaGVhZGVyczogeydVc2VyLUFnZW50JzogJ01PQklMRV9VQSd9LAogICAg57yW56CBOiAndXRmLTgnLAogICAgdGltZW91dDogNTAwMCwKCiAgICBob21lVXJsOiAnLycsCiAgICB1cmw6ICcvdm9kc2hvdy9meWZpbHRlci5odG1sJywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmNhdGVJZH19LXt7ZmwuYXJlYX19LXt7ZmwuYnl9fS17e2ZsLmNsYXNzfX0te3tmbC5sYW5nfX0te3tmbC5sZXR0ZXJ9fS0tLWZ5cGFnZS0tLXt7ZmwueWVhcn19JywKICAgIGRldGFpbFVybDogJycsCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaGFibGU6IDEsCiAgICBxdWlja1NlYXJjaDogMSwKICAgIGZpbHRlcmFibGU6IDEsCgogICAgY2xhc3NfbmFtZTogJ+eUteW9sSbliafpm4Ym57u86Im6JuWKqOa8qybnn63liacm55Wq5YmnJywKICAgIGNsYXNzX3VybDogJzEmMiYzJjQmMzAmMzEnLAogICAgZmlsdGVyX2RlZjogewogICAgICAgIDE6IHtjYXRlSWQ6ICcxJ30sCiAgICAgICAgMjoge2NhdGVJZDogJzInfSwKICAgICAgICAzOiB7Y2F0ZUlkOiAnMyd9LAogICAgICAgIDQ6IHtjYXRlSWQ6ICc0J30sCiAgICAgICAgMzA6IHtjYXRlSWQ6ICczMCd9LAogICAgICAgIDMxOiB7Y2F0ZUlkOiAnMzEnfQogICAgfSwKCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogYGpzOgpsZXQga2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC92YXIgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CmxldCBrdXJsID0ga2NvZGUudXJsOwpsZXQga2ppZXhpID0gSE9TVCArICcvcGFseS9nb3lzLz91cmw9JzsKaWYgKC9cXC4obTN1OHxtcDQpLy50ZXN0KGt1cmwpKSB7CmlucHV0ID0geyBqeDogMCwgcGFyc2U6IDAsIHVybDoga3VybCB9Owp9IGVsc2UgewppbnB1dCA9IHsgang6IDAsIHBhcnNlOiAxLCB1cmw6IGtqaWV4aSArIGt1cmwgfTsKfQpgLAoKICAgIGxpbWl0OiA5LAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAogICAg5LiA57qnOiAnLm1vZHVsZS1pdGVtO2E6ZXEoMCkmJnRpdGxlO2ltZyYmZGF0YS1zcmM7Lm1vZHVsZS1pdGVtLXRleHQmJlRleHQ7YTplcSgwKSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJ2gxJiZUZXh0Oy50YWctbGluazplcSgxKSYmVGV4dCcsCiAgICAgICAgaW1nOiAnLnZpZGVvLWNvdmVyJiZpbWcmJmRhdGEtc3JjJywKICAgICAgICBkZXNjOiAnLnZpZGVvLWluZm8taXRlbXM6ZXEoLTIpJiZUZXh0Oy50YWctbGluazplcSgtMikmJlRleHQ7LnRhZy1saW5rOmVxKC0xKSYmVGV4dDsudmlkZW8taW5mby1hY3RvcjplcSgxKSYmVGV4dDsudmlkZW8taW5mby1hY3RvcjplcSgwKSYmVGV4dCcsCiAgICAgICAgY29udGVudDogJy52b2RfY29udGVudCYmc3BhbiYmVGV4dCcsCiAgICAgICAgdGFiczogJy50YWItaXRlbSBzcGFuJywKICAgICAgICB0YWJfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RzOiAnLnNvcnQtaXRlbTplcSgjaWQpJiZhJywKICAgICAgICBsaXN0X3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3VybDogJ2EmJmhyZWYnLAogICAgfSwKICAgIOaQnOe0ojogJy5tb2R1bGUtc2VhcmNoLWl0ZW07LnZpZGVvLXNlcmlhbCYmdGl0bGU7KjsudmlkZW8tc2VyaWFsJiZUZXh0Oy52aWRlby1zZXJpYWwmJmhyZWYnLAoKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUErMVoyVTRiU1JSOTV6UDZtWkhjaHJEa0xYdkl2cS9LZ3lkanpVVERNQkl3SXlHRXhHYXcyUXlJNERDWWJRS1lFQXhtQ1FFYnc4KzR1dTIvbUxickxsWEowTElHR0NWU3YvbWM0MXRWOTFiZnJxUHE5Z3JETk02L3JHZzNmZzIyR2VlTjE0SFdZTU5QUnFYUkZQZ3Q2R0I3TXlObUJ4MzhaNkR4RDRkNDJXNDBPYlFJclJSNlZvcTBBMHlqb3hMb2daVmNObTVIK2tHcFlXVXlMaUlKVm1wWmlTU3NuaEFyZGFSWVhhTlc1eVFyOWFUWWlUR3huMkhGOUhGUStGMHVIVkVrWHAwZDN0Um1NdjFHeDZ1T1NzNjlNZERTd3FuTGhibW4va1Yrd0FMUTV3VU5nSjRqYUFEMGF1S1lFdWdWd0RFbDBDdUtjUkxvNWNINUpFQXRuMXdXUTZ1Z0FhRDVCamJzTEdvQWxIWGFFeGxlWnhHUXR0VFA2d1JBYTBrdTV3N25jUzBTVUZ6ZmVHSHFBOFpKUUhHenE4N0tNVTRDMHJyWDdNa3gxQ1FncldmQTZ2NExOUWtvdjB4VWhQWXdQd2xRSzh5TVcrK1dRQU5BWTA3MjV5TnBIRk1DeXVGdzNaNzRKTEtibUFaaCtrZDBNZitlZGtvQzBrYjZSSFFMTlFsb3A0NUduVHJqVGtuQWxZdGJNMk5VdVJJZ3JmZkkvb2laQUtBS1pNZnNURnhic0VacHJSSm9EZ2FVVG9tbnhGQzYzRTVaVEJTbStuQU5FbENsbDZlc3ZRMnN0QVJjcTVTMWYwaTFLZ0ZhKytHSW1NN2lxaVdnSGRwK3l4b0FxdVBnSm1zQUtDNjJaTVhYTUU0Q1d1ZmNCNDREd0x2K21UVUF2SmFVdXBhVUZqZWNFdWxsakpPQTRucWpUcVZFR0J1Q01XV3lkR1JIazNaa0NwTWh6RjA2YncwZU9XSFVxSWpwSDZIZFhBYmZSUUMwWFc4TU5QM011NTdmU09aWE9zdmQ5ZW1zODM4Y1d3SmxGMWdEUUR1N3RjZ2FBTnFGV0ZZTXgxaG1yT3lUSWt1ZzdDOXJBSlJuUnRFa1VQWlh5VVFDcFlKaXZZY3JXQVJhQmR1Q2dXYXVvQlhiTGNSMnlxeWczK2V2QnE3MFUrR3JtSzlTZVQvemZwVTNtVGRWM3NlOFQrSE5ldUxOZXBXdlk3NU81V3VacjFYNUd1WnJWUDRjOCtkVW52TTExWHhOenRkVTh6VTVYMVBOMStSOFRUVmZrL010R2dqdFNRKzJ0Z2FWblJMSm1MVXhYT1pPWFFEaUFqRVhnYmxJekNWZ0xoRnpHWmpMeEZ3QjVnb3hWNEc1U3N3MVlLNFJjeDJZNjhRMEFOTkF6QTFnYmhCekU1aWJ4TndDNWhZeHQ0RzVUY3dkWU80UWN4ZVl1OFRjQStZZU1mZUJ1VS9NQTJBZUVQTVFtSWZFUEFMbUVUR1BnWGxNekJOZ25oRHpGSmlueER3RDVoa3h6NEY1VHN3TFlGNFE0L3NCbTZENFMzdFdmbXhUT25wa1hLU2pYejBuM09nT2FIM2ovQlhIemFYVFZtb0NsRi9ldExid1czR2pWNFR4bkd4NS9YdHpzRGh0eGF2S0NzTi9Vc2ZPM2VHOGluUHBCRnRYcGFHY3c5YzVaaFdKZTlCNVhSWlBQWmE0YmEyMVJQRUFab2s3M2ZyMFdTeE9zdVQzbmFML2RuRlNicDVYMmpuUnRTdDZvcHJEQTZvY2Z5L1dkMFdhVGdRSnl2VE54L3A3TjkvczV1L2RYS09ieDgzdEw3QnJCTUMrT1dSTm9Tc0RRUE85N1dNdkRrQnhsRnd6QUdWN2paTTR6TDZRODM5eXdDVlFqblA3cis3VHpTbTZPOVBqM2FDck01MU1PZVpOekN4Z0tHSFB5WDNwNUR4SDVqa3l6NUY1anV5TUhWblZTUjBaZDQyOEVyRXpCM3l2NUZmc1ZjbVU2YXJpc0VxK1RGZTUzNlUxMDlXNjA3TmdoYzZJbmVqRVY3UUVxb1hvblZNc2hBT29yT3RIK1ZRWUR3MEpLRzQ4YVEzZ2hSVUFUalprN2FHZEFjREh4WFp1ZjVTT2l4SlFqdVRDZTF3TEFOTFNxMko5RmpVSmFMN3BMZVdxVHdLS201aXpkdWc2VmdMZXNqMHJITTJseC9uS1RxT29EanQvTzZZTTZ5QUJqYkhabmU4YXdtZ0ovZys3SkI4M1duVUo2QThiSDd0Rm9EOXFxRW5nR1JEUGdIZ0d4RE1nbmdFNUF3TlNmVklEb2x6dXlHdWFnUlhyNENOMkEvYzRYQmhwS25jUVhBeHBLdmNkM0ExcDZsZjNUWnBhZlhyMnhNMkN1SDFOdFh1UytRVzBOUUJvekpFVmV4UTNCQUJwbzdQMkduMkpsSUNQM09PL2J1WkhaL0lqZUZzRmdNYWNYeERUZE5CSVFHTzYzQ1paOGJUeXhWUUNtcy9sVzZMYnpabElPV1hDQnhpQXFpMXRLNW9EcUo2TGg3a0QvQW9MZ09KRzVrUjRHdU1rNExiWUVrbTBkQUJvek9rQmF3cXRHUUN1eTZZNGlsRmRTa0E1bk0vdUZxclVLR3hUaWtCcGsyTnZqRnd0MTcvWnFuSno4U3lYWjdrOHkyVjRsc3V6WE1hcDNQbjRWTS8xTGI1VHZGN3lldWs3NlNYelcrOGw3M3oyem1mdm5mTGR2Rk1xT3Y0QmNRN1VDOW91QUFBPScKfQ==
\ No newline at end of file
diff --git a/drpy_js/HBOTV[优].js b/drpy_js/HBOTV[优].js
deleted file mode 100644
index bee3df6..0000000
--- a/drpy_js/HBOTV[优].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/6VX227bRhB971cskkIkHfGiS3yRyqaOWzSoc2ljO0XhGMqKHIlr82buUhcnAvoBbZHHPvSpL+0H9KEI+jlB0s/o7JK6ULZSFPUDtRyeOTM7MzuzHtGMZHkIxCUvPyJEMBFCh2gP7j85fnb69q+fz7Q6ioOEC5QGQqS8Y9vj8dgK+okYNSwviWwFybMQEfZg6oWUc5vFPkx6g2lKh2AFIgpPq5+UrCDnQDMvOCn0R4lfvNtbW2ahbq+gaF+615SCy5x5F0dK2iGOlAxYKCArIEoQAPUh4x21NUK0Ew6ZuT+EWGho6+uD3sm+4p7Jh3Kul9KMywBYXOTMLAh6vQjinISsS2u1Y5gI+RtkMOhaW7Zubd0zChfTkE7nBCLLQcpCejXtkFvnvPM8xjcQRG4co53BZQ5c6CxOc2F0F1+9JB7gZ4myIiq8QLczxYx+oClX2fvENk4bZwulc57EqPPV0ZPHdy3lgK54lrSYHQRInIVLJWYDoisBxF42TQVxXaI1NIO8lF9JqZLHwD2ago6vBd2MQMjhZvXmRvU+5bDd/hy8xC+4SrK5J/bz55YetfLdV1HafhW1Kf62DNsSMkYKPydWAZPlWrxi2IuIO/W54Hyy+qYKEx+lYLa6iVXKQn5LJY1FDOt9W679JFcFNU/ou59+//vH11gheVjUCFZsyLiwvBBrccAm3aJO1EnqWjL/YUL9Ws2ngppJxoYspmHXSplnCqylakWpOnr75/fv3/z2ARPk/5t484MyURyM+akvrGHlCDwivZ4PgrKQWOpzSXIjpFZLO3Cpt4xarTwhyggGNhpepxVBHvXJJrdLTR/rRqqu7eFfzctF0/gv6MYH0SQ1TZ7S+MOYgmcVWW6jRMqdFFiTXwAe6gpI0D5fhAkZYgh7Pdl6SNAqITL9/HooZV+Qn6T928w3ELdsaO9e//L+j1875ONzbonkSGQsHuq6QdxPy7TLvxH2fx9P0+lZtyLrJ/4UxdoFTPsJzXxXI3fI4Rff4VOr8SAZu0VVCIhS5ruNmujHNAI3hjGvRUriJymODbdo3FqX2HaYDHVJbFRMlV0arb1Y+qX69QPUl526Om/KkCxQZTTMEOKhCCR+Z+8ahnoBqLhlSSghEZ2YOFtcZx2Zp8MM/TFZzMHLMzDLRs2lVmMdXVSttnE2bvJVTFOQWjRNQ+ZRwZLYnpioaw6SLDKxXWFbxVbpX3NPjjA6H2GPkisWhtS+azlEf8jifNIl+7GfJcwnjWaXNJtOs9FsNJ4ekPs5C3376PCbhoUCx9m2HKfRJeORQfbRCfgW+odM2HdbO1Zrm+iHD44fPaxjPV0A+RK8i8QgzzBJ0s82GjsIsiQCe2/Pcqz2brtt7e6SR0mf4UXiiA5oxkqidfep50GqXJeH2pZTrl6JgZTcmaxLo7B76TrWXp1F8kJAR2xQLsfQT+fSNB7Wt+wtBd2tEHA2jME3YYI3iHgI3ZHbbxWM6w5O5vlG+JgV5YR5tGBCI4ySFWBAshGD8boiVos5kEfb5Eyo3HI8D2Vb2wyOMMkSHOOehhQVNyJl5iXyXmMzBrumCq6feHkka2QNie0fsoJmw11uef9qOi1nxzEd++YcmiFGMse4S7KrwDx4XL8KyixBbJ4clWmAWC12tAXJ7EW11ZQXIrUDfZNfYJduFbfHNEi1Oqm2i8Vtr1xU3ZZ9p6OeVXkEIkh8eR18cnS84qQxb1jSvWXDqnguWy96nvoDqmD1eYMuB7a8OPoMRyK2ZWO5aTziRJf653jzUCTG2lZ8K815oFeFK5MaLQa6VDw9P5NGl7NUATSjfk2zGKjritXxepOeGuGpf7O16uQ25HD47GlRY652nav4H2FDp7yzeVPq2qLYb7Mokm1oBMcBRHBbq9iYrQR5tlhxEE+B56HQ/fL7DPc5+wcdk6b++gwAAA==
\ No newline at end of file
diff --git a/drpy_js/HDmoli.js b/drpy_js/HDmoli.js
deleted file mode 100644
index 70d9ea4..0000000
--- a/drpy_js/HDmoli.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ0hEbW9saScsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuaGRtb2xpLnBybycsCiAgICB1cmw6ICcvc2VhcmNoLnBocD9wYWdlPWZ5cGFnZSZzZWFyY2h0eXBlPTUmdGlkPWZ5ZmlsdGVyJywKICAgIHNlYXJjaFVybDogJy9zZWFyY2gucGhwP3BhZ2U9ZnlwYWdlJnNlYXJjaHdvcmQ9Kiomc2VhcmNodHlwZT0nLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgImZpbHRlcmFibGUiOiAxLAogICAgImZpbHRlciI6ICJINHNJQUFBQUFBQUFBKzJYM1c0U1FSVEgzMld2aVdWMytXekNrNWhlckdFVFVUNGlVbVBUTk5GaUtWQkRhYVBnQjlHckJ0cTB0dGlHQ0loOW1aM2Q4aGJ1TW1kbnprd204Y0o2WS9ieS8vK2RHV2JPbmpNbmJHdTZ0djV3VzN0cWIybnJtamVla3k4SFdrd3JXeVViNnhkV2NkTmVCWllGMnhmYVRveTZwRDF5RmdOd2s4ejJtbU8zdmdkMml0dkRJektkZzUxbXR2dTY2NzdxZ1ozaGR2T0RNMnVCbmVVLzJSdVExaEJzUGM0M241MlJ4WHV2dFI4aW5TOXBEZmx4ZElNdmFWOTZpelB3elRpK2xmY3VQS2ZweDI4RWhLYUw3UVhwNG5zTDZSSitVbjJsSjg5eW9KV0pDRERWeW12NEdMUXk2VDRHelZaL201RFpCVnBOTmIvem1OejJFYWFhSFczMzNPc2RvYU5ScmF5RDFlcVZadmhrbjMvNEFGUE5jT040K2ZFVVlhb1o3alRJNFhlRXFXWkhxN2ZkM1Uvb2FGU0hlUG4xMnBsMk9RYXRyTWtnYTFRclN5VEFWSWY0N3Jiclg1VmowTXBhRFU1T3RWQlBneXZ5ZG9icUtkUlNQVEZiYUwrOTBiSStrbDN2VjRkOFhvQnJWVzByQnc1UHlha1VBQTY3MXNGWUNnQ0g1YngvNGc3T2NRQTRMT0Q2U3RvQm5EREErWEVoQllERDd6Wng1ajBjQUk2UXZlbU5NMStnN0lWYXloNnovNXc5STI0a3dOdXlyV3B1cFJFMEpXaGlhRWpRd0ZDWG9JNWhYSUp4QlBXc0NQVXNoaGtKWmpCTVN6Q05ZVXFDS1F5VEVreGlLR1ZJeHhuU3BRenBQRU9sU3RYR2NLWHg5M1E3eDJSMnlMOG4wK0wzNUxid3V2WW55LzROdUpWcTNxN21hZ1YvRzFiVmwyOUlzeUh3ZkdYemtWVU9qckFSMDR6N21vcEJ1L0VSbFJUNmp2c3AzRTNJTjRVMlpMNlpVUGNPeW4zUVlpemU0RVhpelgvZXRjTEh3OHlxVzh6TVJITXVtblBSbkl2bVhEVG4vdTg1bDhCLy8vNnFMNFgyV0NzVkM4OXJhNFZ5M242Wk1CNDhycFdLNmlJWEFrMElqRVpQTkhyKzFlaUpIcy9vOGJ5ZngzUG5OMGRreThjOEV3QUEiLAogICJmaWx0ZXJfdXJsIjogInt7Zmwu57G75Z6LfX0me3tmbC7liafmg4V9fSZ7e2ZsLuWcsOWMun19Jnt7Zmwu5bm05Lu9fX0me3tmbC7mjpLluo99fSIsCiAgImZpbHRlcl9kZWYiOiB7CiAgICAiMSI6IHsKICAgICAgIuexu+WeiyI6ICIxIgogICAgfSwKICAgICIyIjogewogICAgICAi57G75Z6LIjogIjIiCiAgICB9LAogICAgIjQxIjogewogICAgICAi57G75Z6LIjogIjQxIgogICAgfQogIH0sCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICBjbGFzc19wYXJzZTogJy5teXVpLWhlYWRlcl9fbWVudSBsaTthJiZUZXh0O2EmJmhyZWY7aW5kZXgoXFxkKylcLmh0bWwnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICcnLAogICAgbGltaXQ6IDYsCiAgICDmjqjojZA6ICd1bC5teXVpLXZvZGxpc3QuY2xlYXJmaXg7bGk7YSYmdGl0bGU7YSYmZGF0YS1vcmlnaW5hbDsucGljLXRleHQmJlRleHQ7YSYmaHJlZicsCiAgICBkb3VibGU6IHRydWUsCiAgICDkuIDnuqc6ICcubXl1aS12b2RsaXN0IGxpO2EmJnRpdGxlO2EmJmRhdGEtb3JpZ2luYWw7LnBpYy10ZXh0JiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICcubXl1aS1jb250ZW50X19kZXRhaWwgLnRpdGxlJiZUZXh0Oy5teXVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKC0yKSYmVGV4dCcsCiAgICAgICAgaW1nOiAnLm15dWktY29udGVudF9fdGh1bWIgLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJywKICAgICAgICBkZXNjOiAnLm15dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMCkmJlRleHQ7Lm15dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMSkmJlRleHQ7Lm15dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMikmJlRleHQnLAogICAgICAgIGNvbnRlbnQ6ICcuY29udGVudCYmVGV4dCcsCiAgICAgICAgdGFiczogJy5uYXYtdGFiczplcSgwKSBsaScsCiAgICAgICAgbGlzdHM6ICcubXl1aS1jb250ZW50X19saXN0OmVxKCNpZCkgbGknLAogICAgfSwKICAgIOaQnOe0ojogJyNzZWFyY2hMaXN0IGxpO2EmJnRpdGxlOy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsucGljLXRleHQudGV4dC1yaWdodCYmVGV4dDthJiZocmVmOy5kZXRhaWwmJnA6ZXEoMykmJlRleHQnLAp9
\ No newline at end of file
diff --git a/drpy_js/KTV歌厅[听].js b/drpy_js/KTV歌厅[听].js
deleted file mode 100644
index e962ef4..0000000
--- a/drpy_js/KTV歌厅[听].js
+++ /dev/null
@@ -1 +0,0 @@
-Z2xvYmFsVGhpcy5wb3N0MiA9IGZ1bmN0aW9uIChfdXJsLCBfZGF0YSkgewogICAgLy8gbGV0IGRhdGEgPSBidWlsZFVybChfdXJsLF9kYXRhKS5zcGxpdCgnPycpWzFdOwogICAgLy8gcmV0dXJuIHBvc3QoX3VybCx7Ym9keTplbmNvZGVVUklDb21wb25lbnQoZGF0YSksaGVhZGVyczpydWxlLmhlYWRlcnN9KTsKICAgIHJldHVybiBwb3N0KF91cmwsIHtkYXRhOiBfZGF0YSwgaGVhZGVyczogcnVsZS5oZWFkZXJzfSk7Cn0KdmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflkKzmrYwnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ0tUVuatjOWOhVvlkKxdJywKICAgIC8vIGhvc3Q6ICdodHRwczovL3Zwc2RuLmxldXNlLnRvcCcsCiAgICBob3N0OiAnaHR0cHM6Ly9hcGkuY2xvdWRmbGFyZS5jb20nLAogICAgcm9vdDogJ2h0dHBzOi8vYXBpLmNsb3VkZmxhcmUuY29tL2NsaWVudC92NC9hY2NvdW50cy8xZWNjNGE5NDdjNWE1MTg0MjcxNDFmNGE2OGM4NmVhMS9kMS9kYXRhYmFzZS80ZjEzODVhYi1mOTUyLTQwNGEtODcwYS1lNGNmZWY0YmQ5ZmQvcXVlcnknLAogICAgbWt0dlVybDogJ2h0dHA6Ly90eHlzb25nLm15c290by5jYy9zb25ncy8nLAogICAgdXJsOiAnL3NlYXJjaG12P3RhYmxlPWZ5Y2xhc3MmcGc9ZnlwYWdlI2Z5ZmlsdGVyJywKICAgIHNlYXJjaFVybDogJy9zZWFyY2htdj9rZXl3b3Jkcz0qKiZwZz1meXBhZ2UnLAogICAgcGljOiAnaHR0cHM6Ly9hcGkucGF1Z3JhbS5jb20vd2FsbHBhcGVyLz9zb3VyY2U9c2luYSZjYXRlZ29yeT11cycsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQTUyU1RVL0NNQmpIdjB2UEhBVGZ1ZXJGa3dlUGhnT0hTUlpobUlFbWhKQmdCTElJQkVnSTAvQnFBZ0ZFd2dZUkRiandaV3pwdm9VcjJ0R2xYT1RXL3ArbjdhKy9OZzRpb2hRUVpPQzlqSU5ySVFhOFFCWUNZbGdDTGlENVE0STFoelVONW1iV1hKVEVxRFczUm5mKzRLMndXaUtSaG5UUGZPaVJtRlFUcnZocTRDWTdrR3E3YXo1bjdOanpGNlBQRVN4b2RyeEx1NnNHYkZkQXdrY0t2enhYWVRtMHBsbnFjNmdNdHFaWmxqODRGTmlaY0J6TGVRb1dGY0xoYzRGSVdBb3dnb0oreGc0ZURYRXZ1ZWJ4L0JNSXF3VnJDNTZwYXJBeHhUS2JmVGJlb3pMVkRodnYwMjdWZ0htVnJSelFVN002R3gvU1c0L2JiSHhFWWRMVDczbkZqby9wOXYwM1ZIY2M3TjZoUUJQTmtkdWZJYTlCN2N0Um9qZkcwMGNLeXp4K05IWWpPQisva2QzNjhkSDdQWDdKOGE2TENpenJuR3VVVENLMXk3bUdxUVVhNW5qWDlUNHNHWnhvcEpYWWJpb2FLdzFVSGZPaUt6VTR5M0NpOGVMVkhEeHRzS3kyVUw1NWVuWnhjcjVCdGFIamJtYjFneE0vOHNpOVRPWURBQUE9JywKICAgIGZpbHRlcl91cmw6ICd7e2ZsfX0nLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScsCiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgTHVlTnJ5Y1ctNmprczd4QmpQcVg5bWpGcTJBMk01S3VsNklnM0Q4eicsCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX25hbWU6ICfmrYzmiYsm5puy5bqTJywKICAgIGNsYXNzX3VybDogJ3NpbmdlciZzb25nJywKICAgIOS4gOe6pzogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgZCA9IFtdOwogICAgICAgIC8vIGxldCBfdXJsID0gaW5wdXQuc3BsaXQoJyMnKVswXTsKICAgICAgICBsZXQgX3VybCA9IHJ1bGUucm9vdDsKICAgICAgICBsZXQgcGFyYW1zID0gW107CiAgICAgICAgbGV0IHNxbCA9ICcnOwogICAgICAgIGxldCBzaXplID0gMjA7CiAgICAgICAgbGV0IHBnID0gTVlfUEFHRTsKICAgICAgICBpZiAoTVlfQ0FURSA9PT0gJ3NpbmdlcicpIHsKICAgICAgICAgICAgc3FsID0gJ3NlbGVjdCBuYW1lLCBpZCBmcm9tIHNpbmdlciB3aGVyZSAxPTEnOwogICAgICAgICAgICBpZiAoTVlfRkwucmVnaW9uKSB7CiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChNWV9GTC5yZWdpb24pOwogICAgICAgICAgICAgICAgc3FsICs9ICcgYW5kIHJlZ2lvbl9pZCA9ID8nOwogICAgICAgICAgICAgICAgLy8gX3VybCArPSAnJndoZXJlPXJlZ2lvbl9pZCZrZXl3b3Jkcz0nICsgTVlfRkwucmVnaW9uICsgJyZzaXplPTIxJzsKICAgICAgICAgICAgfSBlbHNlIGlmIChNWV9GTC5mb3JtKSB7CiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChNWV9GTC5mb3JtKTsKICAgICAgICAgICAgICAgIHNxbCArPSAnIGFuZCBmb3JtX2lkID0gPyc7CiAgICAgICAgICAgICAgICAvLyBfdXJsICs9ICcmd2hlcmU9Zm9ybV9pZCZrZXl3b3Jkcz0nICsgTVlfRkwuZm9ybSArICcmc2l6ZT0yMSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3FsICs9IGAgb3JkZXIgYnkgaWQgbGltaXQgJHsocGcgLSAxKSAqIHNpemV9LCR7c2l6ZX07YDsKICAgICAgICAgICAgbGV0IGh0bWwgPSBwb3N0MihfdXJsLCB7cGFyYW1zOiBwYXJhbXMsIHNxbDogc3FsfSk7CiAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgZCA9IGpzb24ucmVzdWx0WzBdLnJlc3VsdHMubWFwKGl0ZW0gPT4gewogICAgICAgICAgICAgICAgbGV0IHBpYyA9IHJ1bGUubWt0dlVybCArIGl0ZW0uaWQgKyAnLmpwZyc7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHZvZF9pZDogaXRlbS5uYW1lICsgJ0BAJyArIGl0ZW0ubmFtZSArICdAQCcgKyBwaWMsCiAgICAgICAgICAgICAgICAgICAgdm9kX25hbWU6IGl0ZW0ubmFtZSwKICAgICAgICAgICAgICAgICAgICB2b2RfcGljOiBwaWMsCiAgICAgICAgICAgICAgICAgICAgdm9kX3JlbWFya3M6ICcnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgaWYgKE1ZX0NBVEUgPT09ICdzb25nJykgewogICAgICAgICAgICBzcWwgPSAnc2VsZWN0IG51bWJlciwgbmFtZSBmcm9tIHNvbmcgd2hlcmUgMT0xJzsKICAgICAgICAgICAgaWYgKE1ZX0ZMLmxhbikgewogICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goTVlfRkwubGFuKTsKICAgICAgICAgICAgICAgIHNxbCArPSAnIGFuZCBsYW5ndWFnZV9pZCA9ID8nOwogICAgICAgICAgICAgICAgLy8gX3VybCArPSAnJndoZXJlPWxhbmd1YWdlX2lkJmtleXdvcmRzPScgKyBNWV9GTC5sYW4gKyAnJnNpemU9MjEnOwogICAgICAgICAgICB9IGVsc2UgaWYgKE1ZX0ZMLnR5cGUpIHsKICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKE1ZX0ZMLnR5cGUpOwogICAgICAgICAgICAgICAgc3FsICs9ICcgYW5kIHR5cGVfaWQgPSA/JzsKICAgICAgICAgICAgICAgIC8vIF91cmwgKz0gJyZ3aGVyZT10eXBlX2lkJmtleXdvcmRzPScgKyBNWV9GTC50eXBlICsgJyZzaXplPTIxJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBzcWwgKz0gYCBvcmRlciBieSBudW1iZXIgbGltaXQgJHsocGcgLSAxKSAqIHNpemV9LCR7c2l6ZX07YDsKICAgICAgICAgICAgbGV0IGh0bWwgPSBwb3N0MihfdXJsLCB7cGFyYW1zOiBwYXJhbXMsIHNxbDogc3FsfSk7CiAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgZCA9IGpzb24ucmVzdWx0WzBdLnJlc3VsdHMubWFwKGl0ZW0gPT4gewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB2b2RfaWQ6IHJ1bGUubWt0dlVybCArIGl0ZW0ubnVtYmVyICsgJy5ta3YnICsgJ0BAJyArIGl0ZW0ubmFtZSArICdAQCcgKyAnJywKICAgICAgICAgICAgICAgICAgICB2b2RfbmFtZTogaXRlbS5uYW1lLAogICAgICAgICAgICAgICAgICAgIHZvZF9waWM6IHJ1bGUucGljLAogICAgICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiAnJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIFZPRFMgPSBkOwogICAgfSksCiAgICDkuoznuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IF91cmwgPSBydWxlLnJvb3Q7CiAgICAgICAgbGV0IGlkID0gb3JJZC5zcGxpdCgnQEAnKVswXTsKICAgICAgICBsZXQgbmFtZSA9IG9ySWQuc3BsaXQoJ0BAJylbMV07CiAgICAgICAgaWYgKGlkLmVuZHNXaXRoKCcubWt2JykpIHsKICAgICAgICAgICAgVk9EID0gewogICAgICAgICAgICAgICAgdm9kX25hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICB2b2RfcGxheV9mcm9tOiAn6YGT6ZW/5Zyo57q/JywKICAgICAgICAgICAgICAgIHZvZF9jb250ZW50OiAn6YGT6ZW/5Zyo57q/JywKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIFZPRCA9IHsKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiBpZCwKICAgICAgICAgICAgICAgIHZvZF9wbGF5X2Zyb206ICfpgZPplb/lnKjnur8nLAogICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6ICfpgZPplb/lnKjnur8nLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChpZC5lbmRzV2l0aCgnLm1rdicpKSB7CiAgICAgICAgICAgIFZPRC52b2RfcGxheV91cmwgPSAn5ZeF5o6i5pKt5pS+JCcgKyBpZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsZXQgcGFyYW1zID0gW2lkXTsKICAgICAgICAgICAgbGV0IHNxbCA9ICdzZWxlY3QgbnVtYmVyLG5hbWUgZnJvbSBzb25nIHdoZXJlIHNpbmdlcl9uYW1lcyA9ID8gb3JkZXIgYnkgbnVtYmVyIGxpbWl0IDAsOTk5JzsKICAgICAgICAgICAgbGV0IGh0bWwgPSBwb3N0MihfdXJsLCB7cGFyYW1zOiBwYXJhbXMsIHNxbDogc3FsfSk7CiAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgbGV0IGRhdGEgPSBqc29uLnJlc3VsdFswXS5yZXN1bHRzOwoKICAgICAgICAgICAgVk9ELnZvZF9wbGF5X3VybCA9IChkYXRhLm1hcChpdGVtID0+IHsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUgKyAnJCcgKyBydWxlLm1rdHZVcmwgKyBpdGVtLm51bWJlciArICcubWt2JzsKICAgICAgICAgICAgfSkpLmpvaW4oJyMnKTsKICAgICAgICB9CiAgICB9KSwKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgX3VybCA9IHJ1bGUucm9vdDsKICAgICAgICBsZXQgd2QgPSBLRVk7CiAgICAgICAgbGV0IHNxbCA9ICJzZWxlY3QgbnVtYmVyLG5hbWUgZnJvbSBzb25nIHdoZXJlIG5hbWUgbGlrZSAnJSIgKyB3ZCArICIlJyBvciBzaW5nZXJfbmFtZXMgbGlrZSAnJSIgKyB3ZCArICIlJyI7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBsZXQgaHRtbCA9IHBvc3QyKF91cmwsIHtzcWw6IHNxbH0pOwogICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBkID0ganNvbi5yZXN1bHRbMF0ucmVzdWx0cy5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB2b2RfaWQ6IHJ1bGUubWt0dlVybCArIGl0ZW0ubnVtYmVyICsgJy5ta3YnICsgJ0BAJyArIGl0ZW0ubmFtZSArICdAQCcgKyAnJywKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiBpdGVtLm5hbWUsCiAgICAgICAgICAgICAgICB2b2RfcGljOiBydWxlLnBpYywKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBpdGVtLnNpbmdlcl9uYW1lcywKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIFZPRFMgPSBkOwogICAgfSksCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHtwYXJzZTogMCwgdXJsOiBpbnB1dH07CiAgICB9KSwKfQ==
\ No newline at end of file
diff --git a/drpy_js/KimiVod.js b/drpy_js/KimiVod.js
deleted file mode 100644
index 8020973..0000000
--- a/drpy_js/KimiVod.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICdLaW1pVm9kJywKICBob3N0OiAnaHR0cHM6Ly9raW1pdm9kLmNvbS92b2Qvc2hvdy9pZC8yL3BhZ2UvMi5odG1sJywKICB1cmw6ICcvdm9kL3Nob3cvaWQvZnljbGFzcy9wYWdlL2Z5cGFnZS5odG1sJywKICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLmh0bWw/d2Q9KionLAogIHNlYXJjaGFibGU6IDIscXVpY2tTZWFyY2g6IDAsZmlsdGVyYWJsZTogMCwKICBoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJ30sCmNsYXNzX25hbWU6ICfnlLXlvbEm5Ymn6ZuGJue7vOiJuibliqjmvKsm55+t5YmnJuWbveS6p+WJpybpn6nliacm576O5YmnJuaXpeWJpyblj7Dliacm5riv5YmnJua1t+WkluWJpybnuqrlvZXniYcm5rOw5YmnJuaImOS6ieeJhybliqjnlLvnlLXlvbEm5oKs55aR54mHJuWlh+W5u+eJhybniLHmg4XniYcm5oGQ5oCW54mHJuWJp+aDheeJhybliqjkvZzniYcm56eR5bm754mHJuWWnOWJp+eJhyblm73kuqfliqjmvKsm5pel5pys5Yqo5ryrJumfqeWbveWKqOa8qybmrKfnvo7liqjmvKsm5riv5Y+w5Yqo5ryrJuWPsOa4r+e7vOiJuibmrKfnvo7nu7zoibom6Z+p5pel57u86Im6JuWbveS6p+e7vOiJuicsCmNsYXNzX3VybDogJzImMSY0JjMmMzkmNiY3JjgmOSYxMCYxMSYxMiYyNiYzMiYyMiYyMyYyNCYyNSYyMSYyMCYxMyYxNCYxNSYxNiYyOCYyNyYyOSYzMCYzMSYzNiYzMyYzNCYzOCcsCiAgcGxheV9wYXJzZTogdHJ1ZSxsaW1pdDogNixkb3VibGU6IHRydWUsCiAgbGF6eTogYGpzOgogIGxldCBodG1sPXJlcXVlc3QoaW5wdXQpOwogIGlucHV0PWh0bWwubWF0Y2goL3ZpZFxzKj1ccypbIiddKC4qPylbIiddLylbMV07CiAgYCwKICDmjqjojZA6ICcqJywKICDkuIDnuqc6ICcuZ3JpZCAuczYubTM7YSYmdGl0bGU7aW1nJiZkYXRhLXNyYzsud2hpdGUtdGV4dC5zbWFsbC10ZXh0JiZUZXh0O2EmJmhyZWYnLAogIOS6jOe6pzogewogICAgdGl0bGU6ICdoMSYmVGV4dCcsCiAgICBpbWc6ICdpbWcmJmRhdGEtc3JjJywKICAgIGRlc2M6ICcuZ3JpZCYmLmVycm9yLXRleHQmJlRleHQ7LmdyaWQmJm5hdiYmYTplcCgyKSYmVGV4dDsuZ3JpZCYmbmF2JiZhOmVwKDEpJiZUZXh0Oy5ncmlkJiZwOmVwKDEpJiZUZXh0Oy5ncmlkJiZwOmVwKDApJiZUZXh0JywKICAgIGNvbnRlbnQ6ICcucmlnaHQtYWxpZ24mJlRleHQnLAogICAgdGFiczogJy50YWJzIHNwYW4nLAogICAgbGlzdHM6ICcucGxheW5vOmVxKCNpZCkgYScKICB9LAogIOaQnOe0ojogJyonLAp9
\ No newline at end of file
diff --git a/drpy_js/LIBHD[优].js b/drpy_js/LIBHD[优].js
deleted file mode 100644
index 9472dd1..0000000
--- a/drpy_js/LIBHD[优].js
+++ /dev/null
@@ -1,33 +0,0 @@
-var rule = {
- title: 'LIBHD',
- host: 'https://www.libhd.com',
- url: '/vodshow/fyclassfyfilter.html',
- searchUrl: '/vodsearch/**----------fypage---.html',
- searchable: 2,
- quickSearch: 0,
- filterable: 1,
- filter: 'H4sIAAAAAAAAA+2ZWW8aVxTHvwvPruSxszVv2fd9T5WHPPipbd5aqYos2cYQwAvYckwoeGuMcVyDwXZdAwW+zNwZ+BYdc8/5n4sUj1DjVmo0b/z+Z+527py5f2behqzQ+e/ehr4f+SV0PuRW6mp5KjQQevP6xxGTf379w08j3QvfeLKKbHbCm0eyB6HRAVIXcypeIJWAY26s4oQjFCPgmDOecsYWKUaAPhObdiPHfWpAn4U5Va1znxrQLl6Q8QgwXuyDXYvzeBo41i5uqOktihFgvMSO2+AYgTFPd6Eu8zwCxPLvZJ4EmEtxw26u8lw0oF10vpP5xO00oN3yljdzbqehn3w6E9vu4hzHNCAWTjgTv3JMA9ZeT6rIIa9dA8c6S/POhzzFCNDn4rt2vMZ9asD6miV34Q/VqPASwbgiud7+iF3UgNhsVCV3OaYBu9hKeXvAu6hBsppzluaQ1S4gNtlyf+eVECADjTm3nuuZcI80+uroSl1GKldW0zUpI3BfZbRe6GSiPAkNSPVGxjnc4VRrkGSVnWoTyeoCJt+cVdkGT1sDtmjvvcQIkMipisQI0C6dd3Lb3E4D5rnySdoRyLb/KTECmUvZnEu5p91MWdU2uJ0GtJtMeplSMa4WYawk33KTRTee4cWApYRXnamW1wxVzIwrIgd2nQuLoGfbq/t2vWFsO3M/2z40OHSKtO5PQx8WfdjUh0QfMnVLdMvUB0UfNHTrW+jeT0M/J/o5Uz8r+llTPyP6GVM/LfppU5f1WuZ6LVmvZa7XkvVa5notWa9lrteS9Xo/zY1q7xTbm2OyUeC+6jPb8K7nu0CDUS8SI0AN7q5LjAD1km6ombSEhY2KMsIajEqUGIFR3UZMg1GJxko0GPe6KoXlXj+Cnnu9mHZ2Zox7nbmfFF4g4QKUi6RchHKJlEtQLpNyGcoVUq5AuUrKVSjXSLkG5Top16HcIOUGlJuk3IRyi5RbUG6TchvKHVLuQLlLyl0o90i5B+U+KfehPCDlAZSHpDyE8oiUR1Aek/IYyhNSnkB5SspTKM9IeQblOSnPobwg5QWUl6S8hDL4DT9GurX2aiA0dGLG0scG+Jk57UXU+IEKJ3vsCUn9GFdVOlA11IiGPg3hscbVzxD6GVc/y+Nn0OzqmlgeAjF9ESfDjoIA472PiskkMOyQ5Iyg73Pyi+xRNOJdD//WhX5sxz+1Tn42x99WHW9lfG3VYtlzHmppDaaZObAhgQ35v9qQwE4EduIL7cTwSdmJzljcLYzxPazBPA4nV4zj0ANUVanVLse4qjSg3XzRSfCbAwKpi4hzyEczgdTTnl1NoZ66YJwunY88FwLEaluqtMwxDRgvu2u8c9GAdgsrzj7emWlAu8NDJ5a0a/Py7qRHQh72f/MMBudBA/qoTLTHp7m1hv/k6PeOc+/gxrS7YDyYvEeVPJiOALHtgpdajmkIDtPgMA0O0+AwDX29h+mpkzpM/Q5Mvw80brjYXuNDmAB9zm66KX4DToBYatndxgcMDXI+HP/BpJ1aas/yewIC9Lm6prKoNQ3o0+d/vJOrGR9hNGA8n08Qfu8sVNlL0z6Pp8GM5feMmAfI53rT/os/3hCg3eyKimW5nQaO2bVdVWQDQoA+swknw0aCQPJSUa008tIF4/n0L/7/zzbsGl7WaDAemsf+V//sQd/vhAMTEJiAwAQEJuBrMgGjfwPB443K+yEAAA==',
- filter_url: '-{{fl.地区}}--{{fl.类型}}-{{fl.语言}}-{{fl.字母}}---fypage---{{fl.年份}}',
- headers: {
- 'User-Agent': 'MOBILE_UA',
- },
- timeout: 5000,
- class_parse: '.swiper-wrapper&&li:lt(5);a&&Text;a&&href;(\\d+)',
- play_parse: true,
- lazy: "js:\n input = { parse: 1, url: input, js: '' };",
- double: true,
- 推荐: '*',
- 一级: 'body&&.public-list-box;a&&title;img&&data-src;.public-list-prb&&Text;a&&href',
- 二级: {
- title: 'h3&&Text;.gen-search-form li:eq(6)--em&&Text',
- img: '.mask-1&&data-src',
- desc: '.gen-search-form li:eq(1)--em&&Text;.gen-search-form li:eq(4)--em&&Text;.gen-search-form li:eq(5)--em&&Text;.gen-search-form li:eq(2)--em&&Text;.gen-search-form li:eq(3)--em&&Text',
- content: '.gen-search-form li:eq(-1)--em&&Text',
- tabs: '.anthology-tab a',
- lists: '.anthology-list-play:eq(#id)&&li',
- tab_text: 'body&&Text',
- list_text: 'body&&Text',
- list_url: 'a&&href',
- },
- 搜索: '*;.thumb-txt&&Text;*;*;*;.thumb-blurb&&Text',
-}
diff --git a/drpy_js/LIBVIO[优].js b/drpy_js/LIBVIO[优].js
deleted file mode 100644
index 4e07cf3..0000000
--- a/drpy_js/LIBVIO[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/M1949电影.js b/drpy_js/M1949电影.js
deleted file mode 100644
index f87f345..0000000
--- a/drpy_js/M1949电影.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV6tsYzlvX1nKdoU7WMXNIE54kc2EZwQvOz/rrtJZP1n/uxbrQOBvJJ7fp1lV+sv2IzKSmCvpp3Rj2YCsmVSibh6qmDIEeTzCl9PXLF9WKCYelkfYsgJ/Mp3KkwI9/HgREGiEGNHsluOHDHmNAg91r7274hch7n4Q7L2Ws3zXPMENyGQuflGwBFTySVSvaCK6mpqAVIHzKH/FcKuzCTJ7QLbdT9IUmBxDAxNWORu62RvLzvdf4+yYvNdJ0DAYOzG7x4iWDoa45ymJ3o3gPtfSr0B0saM8WstWMkfjT6ZmPUZFBZkMlIuqEhlQfrFWIC9zFhOgCt13VAX1bLuBR6Lav01KtGwvlPKox1bqq4c0um1XozYKHK7WQu90Bu5Uz3EVmmy1tS9HY3vem8tco4xjVT7dxpK6/ZwmpqtJ65OzrbPC34VSWV6FoypEZg2D9Unkso83H6E88LOB+x7d3l+GnXzk1T0TJnQnR5puA9QZKzsCEDu45dj9glrO6klnR35kjO3sd37OhgF9wZtL1yqGy/h6KXcN/yK231aPPvQNHd0c7hldYlWZsLeT4VRZnNueIHayNRJtnjA5+Crc1a22NzPh5VRb227UsXWE2fvJFr1/lKMybIeSalAnUeHJJ23GeGtuT3h/Cbp6WBfV7F8TA1BAu7HNhgj0Zk5TfyEonnAyUgQ4H3dMRPbXAtZRy0bD4QuKlCDiOisnGctpSfCSQ+hGXXJe0TSLeznuC87N1jPQvPhP99mMBFBY+O7354XlgoL5JH4WbB4G5y84gCP4IN76HUT1r4yS5MQccd95qozra6HmE19eSYZbdPckqM7UDmR9qiecpXZhdAmDDxOgxCFzrI97roF5kGDjO2QlrosDdrBOPfDyG4tmT0fkeUNjt3Ddy5IFR1R01hnY3SDp0cqquTtfQGCoZwIaQYoEc3F6s+VBbpEiwZvssBj39/PEE5Y7jNZhDWA7FgVft/TrQAnzCcWcediei0kZYCJ053IPibiYG34S8jjb3nJnibJ66o6Ufx8kTtnB4yAH48vF5AAcHkrTdo5hvW/2k7O0KWHBOI68ZWBvIlXGszbMXeN4KY1jmUn2DXuJVN1HIj1LpaKElAv9GDkP94ClAJdo/XCLLGGXjWDVAclYqmfLfOAzwHRRhblwQLJ3oAgrRkTo+p734a0ZBH0dfHUg6wBJh7DOcc5VVQwzrl9j0QjgqpBeXGssiAUNn6Pvk6kj+XYeToO+q10yhy1Lk8hQLiH89wK8zHLj1dPWj8djqg0m2U1bnC+W7kdacfEPlf2J5ZQ3pzBajKe4gIX7aWWDLAflwt+5Yqe/qbPZzbw1kY52gmGCVJ7UziBNXFP3QFrDPm5JKL0DLKSaTHGvCjiZ84niMOWG9z7hgN9TfYv8XwONCgrON2e5VGPQPcbLFrSUme98z64G8CGIl/epIzEg6B2ia8YKvITMg01iyQnTV/PZauOaKLCvAq77Nw7GelWXuymGiiG010lUR2EiBzcrrpOyNwo7l+T36XcjtY8AJ9qv1MGjAjxNgeJpPe90ylOtjWGxTlFKHanTsSrNhYhEunWkoSjwQVRnZu7cnFFat4YdJ5mRcUbGfqluovYmllAEUlyamO5artFrh529GQq0HOLCSdclm36jij3wW/F3s0z8ieYEJcmIcRrc01xJhBiKRK+erY5nM0jzeC5r+oFE7thAyWG+LlYQ7wTYx4fbn8Ny+DB5uz9UYTIThTdJxZE//yNkTRgJVyjDeSiPCRsE8sOT69+daEmlHqdmjobAGcotX0KWrnQwysKR7soa17dyRWoq1vOV2rVSUndcOF9pVa3VnSxXGg7etxa3ME3hccTehPmHnBcxvERZUzi+cKF09vRNeBg=
\ No newline at end of file
diff --git a/drpy_js/MuteFun[漫].js b/drpy_js/MuteFun[漫].js
deleted file mode 100644
index 6603f79..0000000
--- a/drpy_js/MuteFun[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV2y7g637nkMoiC8thhxc2MS078+tjm+tO7ywY7mEFrlVKNlQtgUpfOEHyMGPt64RcoLEoRuC2OLssjmYHwVnsi6JS7j9so6bRF6nF+cS7o9tsYd1iSlp9zZP3nNy0RCCxi/0g82GQO3skXdEY7ECGvBCCtSBQn8jqJnMVUbEzbnRvenIR1CR8416pPLyB6Ar6QE9JjNClAlnVFUq4mB1kxc=
\ No newline at end of file
diff --git a/drpy_js/NT动漫[漫].js b/drpy_js/NT动漫[漫].js
deleted file mode 100644
index 9e408ad..0000000
--- a/drpy_js/NT动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflvbHop4YnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ05U5Yqo5ryrW+a8q10nLAogICAgaG9zdDogJ2h0dHA6Ly93d3cubnRkbTkuY29tLycsCiAgICB1cmw6ICcvdHlwZS9meWNsYXNzLWZ5cGFnZS5odG1sJywKICAgIGNsYXNzX25hbWU6ICfml6XmnKwm5Lit5Zu9Juasp+e+jicsCiAgICBjbGFzc191cmw6ICdyaWJlbiZ6aG9uZ2d1byZvbWVpJywKICAgIHNlYXJjaFVybDogJy9zZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcjogJycsCiAgICBmaWx0ZXJfdXJsOiAnJywKICAgIGZpbHRlcl9kZWY6IHt9LAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScsCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX3BhcnNlOiAnI3NpZGUtbWVudSBsaTthJiZUZXh0O2EmJmhyZWY7LyguKj8pXC5odG1sJywKICAgIGNhdGVfZXhjbHVkZTogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHtwYXJzZTogMSwgdXJsOiBpbnB1dCwganM6ICcnfTsKICAgIH0pLAogICAgZG91YmxlOiB0cnVlLAogICAg5o6o6I2QOiAnLmJsb2NrY29udGVudDt1bC51bF9saV9hNSYmbGk7LmFuaW1lX2ljb24xX25hbWUmJlRleHQ7KjsuYW5pbWVfaWNvbjFfbmFtZTEmJlRleHQ7KicsCiAgICDkuIDnuqc6ICcuYmxvY2tkaWYyOy5jZWxsX2ltZm9ybV9uYW1lJiZUZXh0O2ltZyYmc3JjOy5uZXduYW1lJiZUZXh0O2EmJmhyZWY7LmNlbGxfaW1mb3JtX2Rlc2MmJlRleHQnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICdoNCYmVGV4dDsuYmFzZWJsb2NrMiYmbGk6ZXEoLTEpJiZUZXh0JywKICAgICAgICBpbWc6ICdpbWcmJnNyYycsCiAgICAgICAgZGVzYzogJy5iYXNlYmxvY2syJiZsaSYmVGV4dDsuYmFzZWJsb2NrMiYmbGk6ZXEoLTIpJiZUZXh0Oy5iYXNlYmxvY2syJiZsaTplcSgyKSYmVGV4dDs7JywKICAgICAgICBjb250ZW50OiAnLmRldGFpbF9pbWZvcm1fZGVzY19wcmUmJnAmJlRleHQnLAogICAgICAgIHRhYnM6ICd1bC50aXRsZSYmbGknLAogICAgICAgIGxpc3RzOiAnLm1vdnVybDplcSgjaWQpJiZhJywKICAgICAgICB0YWJfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RfdXJsOiAnYSYmaHJlZicsCiAgICAgICAgbGlzdF91cmxfcHJlZml4OiAnJywKICAgIH0sCiAgICDmkJzntKI6ICcqJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/OmoFun[漫].js b/drpy_js/OmoFun[漫].js
deleted file mode 100644
index bd21df4..0000000
--- a/drpy_js/OmoFun[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV3aqIpXMWrGL2Yq6pWI8NFNHLMAQpKPSE7k6V0IH4+JAojXiQmEIu5R7VzReezqJgZdZPFgJsIyL3zE9af18V7Pr2ESQZzLqcE4C/0MTPB922QFiR3rMq3CM5DUZp3Vde3UfFlhq3oqrgA0k+mMOQvJOULOcUh5UMM/2r7GXoMVfOw7UOCDRQaP37pD8FObsc5TmgAqyEbk0sUEcbS3SGBPzykJTIf9/qb+rLHLWYzqsPTb5quKmVg+RvOz9POv3uFJu1ICRUoZ3EejaokFVxMUeE4qA+PvSuf8LyhVsIhVvL1fLPDu/GKHK0jihvMg3YTv2eYogn8Rd9rLJVfZYRrIhWsixB7LGbXeSFGOKPHfQGWo88lroBhg1AUUB25epdSRp5ntqSfL8CKxCqJqaOYqPLZOrCWWDzX27iwrLMGGj4oHfx7yM7GDR9+zCM+0CtZYonrAb/ppQEM/d614ueK46GIVDiTWSfAg1ptnp5Rk35hCwpUIafoqAZe04FxFBlt8W0KvdoPISRH38CgSp3442088vAduXAPRfWwdktUC2IxJ8b+NgWGHQbApMZ22RCtPNiskoG0kBw/9V9iczDskC3GlmnyyYCiYL5klkl15eBwfJqOKWPZQyBfUodiS1O3GHeWzoLB+Lukqzt7Z3R/Axx8BVEGAikS5JW3bJ3k/+M8lGQfDVxKhYUdhaGkE4cAN1FQf5vfvCgs3Fh7XmyTsYgMik0SV553id29+3Q+MONyfMfSWzcaEDDKdMKbUCd0/9JPeRbDz5WQizFGWauW5V98EASBoT2u1wAHpgaNxbnqidGxJeGEAo656D9PK5sugvkQV8919hrKtsz+VwRdETDtq3OibGqYBoD70bWupppNXBWgwFJCGTKRTP550N06zTYbcuksNBolmmVk7EOjJ07XV7/jRU2TFOVauZFo/VuV54OQxuzuf9I7zcBbIrR0eIPoERxvF9C/Jvdpvs3Ft4yNFgukV84+1mIw5s8HHOs+INZCVkIqMcZiNNP78Qtog0VSzEaNF6Rp8EZZh1RNelpKkZTi5bLBJIAXDHOsVpKi9RjMBg1bU4xhAuC/IyveFBRl9xvnFU3/af9H8A2VWk48h5CUllled1hukfiULS34yHc/zHiR1oaj5xHK4oqDEjkdlrZVxQKc7Aa/0vjxeBfmK/+G2YwbM5OdqXNL7NJvlutEU7io+ErtRjiJHcNQankz7vN9OYZrodaPUg/hdWWI4FSypYEaD9f7/crRo4C5FHfc93Q3cm2OVsN1I45chBSaY2FCpGqixxgGMfHSQLDAPl5Mg5PeBUskGBysn8/quya9y/Qd9dTI2R5jaxEMbIP9zf2q+mwl3Y7GS+8pIcxb01IZjL4AtBo1LAfYTbCKvkVINMOMuJ51tKQhSKhAFu/RtyXcq2bQdgIgM6lw44v1zfUAWV2w4WlZFvcQkpRN45qXw6KFFNnqZ6uBqupbsMV4YQVtoKesJCQDy+hV63SdSYnW5MWujGJg9sDlzHdTczNuX0UsSvJw/vRRpnsBvJzHF34BHvsENH5UiJZF+fGzeGrHx2sFpNeZqcZ/TcPsRRbAm77Wr0oZn8zSP36buG2Q95ujnxumIA5FwmrALENxxn/qogBsfHwwNsDJNe8dN+GKLonI6EIumbBOc59tE4no6oXqmBY2wkOH2VlEFmEqjnWBhIE35877Kc4wFPpV8muauPNzzrnkyU9u22H66YD5uSJnHAnULzVMqzc2DUZ1U9I/qveppa0XBJkMysiSJvAIRLuws61w41x9Re0PppQqeSOpEFeL05jwMfeQb5Xj/f+ANE4mYn3pFy86SF/34etV96JHmafX0RqcLAMYAoaRirv4KrOIsNf11llU41STr5UvZf6CNdmrm9+HtX+GJEUe4U8WdjPgVt6/JEviNykV8qytyJdvAlZXR6+ZD90t16nzHGA6hlSABS1ojQpBX/7Kkr6iASbkTuL0hOoUSb5yiM+eYK47xKKe0+/5uYTTbvnJeDbyF8z9P6HPxVy1p/tCpKfzt4d3MHYvYmQPg6hDGCre1zPMFSP0R/DTg6nE/IFpn8WTS2LYsdB21kfzpLh/yOWydMq5RhfjKuVCJpGGHEkJ+rIpiQ5ypfAdb2sVhdE9FKbJHi7mO7CATbRNwwI3OIzQMDbKMwob0RDFp2N/LzmxQ/2hZk9QBI6uUx8R7lHSbtmcbN9DyFFUgzBvTlrgegHnPPtXLAGdwXxiY+cK1li31+yISdH52SCVEOQWS4K5NXxIxlo87DrvEppEHCJ0eWrLmmx+XDH0HafdTscWIuWrbXN2rvYJDPClOIU+CeXsQLQuRXKbCYxUhzZO39+yWyzcxast+paMPauJUUouBbxxda0dfKVe6blxDZazLJ2/5veE8pnJuRBGI8usoE0g1FQBFtMolPodDxdHR8PQJuwVBxH9PpmmSsNoj88EP0w3WbIxCr5+tutOhGGRU0KYd0/Wzfm/rdCDpzPatPjI+vj8kFLQRaHtyJjpB0XWtU5vvgrd/EMF47yNdfPF/dFw+8Fz/sFj3xiSDNsTcfJqrJUMSUT/GzOxR9Ny4RAfJ509TykIbRX/Q9FFeoP94xC+Kg9DXowNFtSJJb9shm7mYlxOnkYXrQXjPVJQ7EZ8gbcOB2t43hl2x4cM1p5NgZbk/lGk9auMVyhTOfTytUQYz3spAc5RoWVrb6npKYahHXRUrRlqcJJqJm3/deaxSdTb4y+xgZEoYGb3AP0za0RdqQGlllRY/UylFWitKiaJXFhVSkYnsoDR9GrhmF2d9IUErd+2EHN9s5ePxi8a9KvX5kBojlT0WEmbjm78p/uzzhA1DK9TRyZFx8FY2nN8CsurX1mxsby0DB9JZCB2ClhSU68ooYuY/EXXQjIDP+1CpgoWVDBGEIuJYPsZrmhq8e5bwBil1cZyTfca2FiV6hA3hHNlRI2njq/FzymEeGqfJiOR0CMuyl96H7OfWgmJFbd6lU1IabZcQpZ471GDHl9oMq3ToJ3RNak7tBqzeXVKKkbyeqJhDlWOId2Izfr7+mp7YZXmRbNELkmjUC4Z3yR5E3+AfndlDHqTFNHyQ/dPErFwKcsKj2XGl+T56Q8z/NiR9qRZXuDc5Rb7LO/Gyq2pJNz4UTKRK1+TrI73TUvT/80DDsUlN/DD64xE6vhaFdLKhoOLhwjMWmym8D5zBDrrktiWygwK1gkTjYWpFPtiUVy7naPcYzf7MrZ6ZJLOcFLlh38w82+0B7slfkdOEHiCyAnBxK/crr/CblmhROquKOsrvZbur9rhCeyhwERtAOMGohEi42HNDtLT+Rr0XekWaiCyxcsg4+P3QLScV5XavFTGVTupa9n9cUKpvWgJN+2eLdoLE+Ser1E8fFmBx+oRH4cIkYYTdV6a39uPpj4NVZbdw4OhGuq/L0sQBTql8PAxsLIIQppkRT9Gbw6CmRD81mU1hhtxvayB89Olx7JpNsFrtUjvhUxC4UHqJUZghJQFQu6MgRztpGUUEwV0q5DONaGzLmW//srBiTwbGAMb6n7UvRnzyHR9hhzcu7ouWxvGeAcAPYxOdy43bsd03WY+Im7byrY3GJLKF+Rh3iFf8orMErNFCAXWUpQZ1QeMTfTzFDM/XPGP5eywk3zPn7kP9+ytLFIHdg2GuttG5dAXATq47DROi6TOWODt7FsOUNIx7W9B0rdAQIdiDHWzQ0tnjpjX1ZlSHTioHSOGQlws7cJ1ToP4lTY7A/88Uryt3eI5yn+ek5pxGSKfMn6Y4QWRV1cDaU8JCz+i2tA3UUCTaHozlAWXKgHtWq3wT7yno8APzJvby05HGBnSHZRpsvQGsNXVR0E5a18o3isiz/sq/MGRYKV5V9br8nv+Lz7u/FlVYai8wzGISfzWrI21CMvZb+oEYQ8rkEVvc6kXrjr6/mhGTvFTQA7v4ys7IPKAKDUpK1/DVeFNkqjvU3fnRsAiKDcuFRbGTm+f4B2aLWyEjXTPJ//USQTtYyg9nWYkK6h3hE0eooizx7RR1Bw/aCdgRJrP0H6TWAVCOl/yq20E9xEyr2pUrOZBQutmeBAHs/PDX+TRUFrT8D4HNoYupWmQj9wfWBU1tEoi0FHWZfLJwwHFyPyAid2lAQU6crayv/Rqd0832yBTv7vE4Gbh4RbdcsbZYBmPlm87w0cuQPltqMDNiwQ8Xs8ahp1JZCM9lfhoQ/0FFT458cbxmndQgy5Agsn8RnxvzA2kGoSlqIFrpuAKyU8l/iTdkkYr71o0CgzDJoRHNbOr29tYFql8Xps7r/QdM1wrCXs9FbFKJn8D+xlzQHCIn29DsW0+J/hqzR0SxRM5yh1uqGBkRuwkBVXb0J0Io6nsjjogaLjfaZozss1Urf9Co2QY1Jr8izzO/mIENp7fsPPN0fdy6eB4lrNJrbTrVi8kZ+HoyOP4ADt3w+pqO19PFazywBhoEASkJzzH+DzT/PBFYpD8R8P3t41ye/FZwKEhWtEr+XlZmedQbxacYl3B2HYRnNNjv0Q6UPKo0xSThVo8kt67G+/pFspwXREkK3PNdgpK94ivEYNIefDVTDigU4X/EUtDbtNcuyGC/tFsAYYgPQY3eWvlei7d8GK9b9BEMfIe2Sm90m/PTVbv1XPmBlMQSQ9NSLJ7U5SQs3wGGzdaxn2svodd1PzTUB8bawpsNWNjQcW/42VUIsj7mTv9GzAUTb4xTVPoDbO8E0F+89VNV3+m09hTjlmRLbHOOgUwGIEpy3rnv2OlfyZ1lyFTwkhKu9r9HntSLAYjIensHbr6oZ4q/ni5cML0dRhnKnFPomo2yvz3venRRw/3cEx5jgsTyXNx455rmkHVJ5Pt4u5QXcXA8XtuQV0/5h5L0aA1VO9ybIYUIiOOzsepWFV4Oi8gnpUO0r/BDnLNTi/O5GmMdQpYcyF2Sm1jzcyIaYqzeSEe2JpVxFwSCq1hT2bYXbBit0nxWEGWjN3Pk+gr+fZB8au0Uhe18mz4YTMaBNlWn8tBPLhLLhBQuRdubqRD6b1p9wFNhbA5eaQYrwwYXOONGEYDu1gEUdmppV8Zb/BYdODzxVSwD8qAsm1AZxQHGontHgkr/S0nLAAYTAat/P9Xp2i4MgehcSC1VtNzALdpqO62iFEqa7Tcf3JHkrWG+fJm56vdIBdElBN80JHroVDLZqBQfPwV7QUDnR1Em/5fH+fGYzi3XVxd8Ob7rOPUIaAL9q2oel43bkriu9lU0T4HyIUOWagDqZonpgIQ+l26eN6kOuEkI+38InriN6q3MZmn1Q2WwzCRC1A9XNIjGjD2YVfEgWTEDpXaoLht1Yz0g2lPf1yLgTp8Cd+FbDlkrXh3PNGW5fzggJTo7lK6aihF2J22FmCjIJU0nNcAQFcD1OmpxbMD3qlbTeIkcYBsSBdEWlkfGkqMwB+l+GYeE2pdu7iAxpoGOwHdO0rOD+myl+DxbttcHh6C5CK9vK1EjyuALZOGSMifRYcMQskSGx3WNZY9FECCcfk8mjapnkZmaf1Aeb4BE8dFuTkXidzyWRJmKkIWdaayJQDVtr9Xhl3iRwqZiAQ3QbGF9nF4izV37lMbP58xOGi5BiETYUcO5dKjy2tpiyffVLt9VrJhtWppJ+fV4y/BVUns2/Agy3Q1ZMsPy55rczY4IhN75KI1CCmZWNxiRIMrDwtUS3jT/Dp79nmTxhwRQMzFX7Fr4jEh4QJU++7EKKobRYW1RmtDnect99giRRRg7DdOGFsuz5Za28AnoS6fC5VSuDJLZpLga7O32wANjXl5tIcRD5OYqK/NLXDWDgpuDUnVRUpxPuUbOXCXFbs2uFRGn2XbGk8AY6ynN45xkojlpw1nVv+9wdiTMQTkEyTmymSqE5ldQ1VwajRbv8DcxIyS1/5ZjD89V5SU6PCVFOvIfevWXSM0xbvyvw8gUkIc/VNQgk5Mcm4DTnCU4es14xIXbrpnA7MLS2Ljk7u70ZjyL04iUYSP0WtOl31fEKhLTCqEaOKUg+BK4x9ly4R11MPsEGqIEFeUD9v5MV5zI=
\ No newline at end of file
diff --git a/drpy_js/PTT[优].js b/drpy_js/PTT[优].js
deleted file mode 100644
index e87eb49..0000000
--- a/drpy_js/PTT[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/PTT追剧大师.js b/drpy_js/PTT追剧大师.js
deleted file mode 100644
index f06e060..0000000
--- a/drpy_js/PTT追剧大师.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/Pornhub[密].js b/drpy_js/Pornhub[密].js
deleted file mode 100644
index 6976164..0000000
--- a/drpy_js/Pornhub[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAACA4VVW28bRRR+768YrGi9TuJZRy2JZeNGJvShEikVISCUBmu8O/ZOsju7nZm1s0WWeEBcJEAVD7wEVFEEEQ+IlyJF4fJrEid54i9wZnZ9T8vY8vqc8825n7M9IpBIAooa6ONbCI5iKqA1VHwYCe4n7eKq4fqRVMD0lYplzXH6/T5e23AJ4diNwloVTg5MRAA4xyWKdiOROmvYV2GwOaJbzGt0UjcgUlox6VIg9CO/LCkRrr+bqciIkYJDmvYj4TWWl196j7S142sZ63HC3MMdw6+hSsbrsEBRkcFylk+JR4Ws5cHrU9yVVJSbXcpVEfzYjp6wICDO67iSWxtkj4A8SWto6UBiFe0owXjXtkuocXdKVQ+Sq72H5Ar6OKFS2YzHiSqNEfrgkCjXtx2T3M3aIwc+OyuPcHg7qTqlvcr+jD5IMKjTWutjvlE6ruDoxETISaSjYwqUcCpdElMbqNKs/ACSUSyOWYPMyiBHXRz/c/nl58Mffh6ePa0hlcY06qDtD1sPmtv30GuNBiok3KMdxqlXQJtoyZ6EilkIFVvIkRtxqdCWSGMV7Sqmg1vCOltMULvgs0MqoOGgX6iSjmtg5QPSI/hAFkqTFARUIY+6kac7uZNwV7GI2x5RpDSXFo2EbgJY5aharS/I2owTocXF4g3CVFEJMq14URpQDjKDwfr3bcq7yp/FdSKBbA1m2oM6PN7Q9+DPysq8q/rk7qw0UNZkuCOicMsnYgtitY2tPbaPPtIxlWZNDRYclMIFq33GvahfwW0VETvTP3dTUJUIruET/mAm14oeqbcgCaBuUjusOdj03X3dkuAxJeGNPQ8XGFfVphAktefq2CaSrt95DyzoTJui2iN7c1DKTUtQr/IyR940yuyJzlXUygj84J3WB+82H06pzOOeaAU/pyMpjaYB1VChkI2EWWatfNheuQ60w26wMKejjXv9y3fo+sc/rItvnl18cWw17w+/fn716al1fvrn8NvfrIvjv8/PTnLi+tmvms6I5vtXJz9d/f6iODvJzAOlFetOxVq3NqyNf//6DL7jRez6LPD0Or79Ktm6VS3e0AGOE0RdO2Byrhyc9PR07O3Ps0MzNW6ATbBYxgFTdsGan2Dm5TDmTWHmt2Vs93Rie7Am4oC4sCYy/wurSMOndBrDGEbuHoENazMoPpsrSgbrSRwn0rcX50/vuJZOJfgGg7Z6M0AbAoiaFQ8mrg9Ki+tam63fmtmvEE866iUlEpq/aljI4PW7nlGO40WJeYlNEOenn1yenUC9PdbbMx251GCKhuUe82iZ79exIPywbLJvWXoM6izsWpbeY2U95jgWtEzTkZBYli9oJ++o87OvjPbCMvS84Qyffn/54jnY03rL7ejoLhiu+UTamSGY0/+zOGVj8B8Nf8HdhggAAA==
\ No newline at end of file
diff --git a/drpy_js/R18撸[密].js b/drpy_js/R18撸[密].js
deleted file mode 100644
index 779193a..0000000
--- a/drpy_js/R18撸[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAA9hcGYC/3VUTW/TQBC951dYFXLsEK/JrXIUUIWQOICK0uaA2ipa22t7i7/YHZekKBInToAqDlyAAxygNy4cqh7gz7Qp/AvGH3HcJuxlrXlv3sy+GXnbPmQOECol92Mtymwak7/fPlx+/EUuzt9cnX/vKi9bCh6gtrSUNommGTdSGrPQsJOJQmyI292CEXIJBcUJGRUer8GZ3m8dUaGILGTKoNKbn36Zf/6N9LJapQEcQobBYW9z/v5s7/LH64MKCRIJCAQAqbRM03kmJgERvc0wM5KUxcTOjo8raiZCZJo8dtmEpEFqHiUuTFNmelMnxJca3jSlPiMBRGGVIrFjJxitSSwR02ieIvPeC3fQ6agysyMOAzVXHJTC/RR7rYSLguOUCslq9wJGXSbG44jFGbpm+aDd0a0QtF5P71NV3WUTyO9AMK9vavv77m292WyZj1aXTuanPZJMGFs+i6GNdZ7cH4+2KvasvObvTv+8PbGUW4eSQLIDgse+punK4G5DJmSg5IVwSoI9z5gE7eH2zi7Or8lwEd47uB7D4WM0dT2q5QLdxVvRwXwvEG83VbgkXiIeUCfQNA43ulhojgFKzQA5qFhZ0xSqqTjzglszc/PaXeXx0/Fo+GhdRsqdRgaPfFWVwvlfCvcUzXQZUB6aBHJj8pK6fqPt/LgkzWSgrQKNBcenddfiLpOOpWxsrEexS6vofD1cLH7e1wo606+FZq0lsHynZDBkMsNFdKvoTC8LXZy9wl+BtTrUel0X/i0/6hmU63fy6ernV1To5D+Ef5khGO12BAAA
\ No newline at end of file
diff --git a/drpy_js/RjAv[密].js b/drpy_js/RjAv[密].js
deleted file mode 100644
index c870c84..0000000
--- a/drpy_js/RjAv[密].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ1JKQVZb5a+GXScsCiAgICBob3N0OiAnaHR0cHM6Ly9yamF2LnR2L3poJywKICAgIHVybDogJy92aWRlb3R5cGUvZnljbGFzcy1meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvdm9kL3NlYXJjaC8qKi5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGhlYWRlcnM6IHsKICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjguMC4wLjAgU2FmYXJpLzUzNy4zNicsCiAgICAnYWNjZXB0LWxhbmd1YWdlJzogJ3poLUNOLHpoO3E9MC45JywKICAgICdyZWZlcmVyJzogJ2h0dHBzOi8vcmphdi50di8nCiAgICB9LAogICAgY2xhc3NfbmFtZTogJ+mmrOizveWFi+egtOWjniZKQVZfVW5jZW5zb3JlZCZNb3NhaWNfUmVtb3ZlZCZBc2lhbl9BbWF0ZXVyJkZDMi1QUFYmTUdTJywKICAgIGNsYXNzX3VybDogJ0pBVl9DZW5zb3JlZCYvSkFWX1VuY2Vuc29yZWQmTW9zYWljX1JlbW92ZWQmQXNpYW5fQW1hdGV1ciZGQzItUFBWJk1HUycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpPT57CiAgICBsZXQgaHRtbCA9ICBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwogICAgbGV0IGxpbmsgPSBodG1sLnVybAogICAgaW5wdXQ9e3BhcnNlOjAsdXJsOmxpbmssaGVhZGVyOnJ1bGUuaGVhZGVyc30KICB9KSwKICAgIOS4gOe6pzogJy5yb3ctc3BhY2U3JiZsaTtoMiYmVGV4dDtpbWcmJnNyYzs7YTplcSgwKSYmaHJlZicsCiAgICDkuoznuqc6ICcqJywKICAgIOaQnOe0ojogJy5yb3ctc3BhY2UyMCAuY29sLTE3O2gxJiZUZXh0O2ltZyYmc3JjOzthOmVxKDApJiZocmVmJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/TVB云播.js b/drpy_js/TVB云播.js
deleted file mode 100644
index 32a72c6..0000000
--- a/drpy_js/TVB云播.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/UAA[听].js b/drpy_js/UAA[听].js
deleted file mode 100644
index fd35ca6..0000000
--- a/drpy_js/UAA[听].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV+IpJMw5v95iw+CDIe0xhAAtKuoe1tmSRubLWXYlD2OGzTC1LV/d8T5WlDLWXuTE/3YMEkIpSugDe3idNWEhBW26prUNwwhLPPuE+efHdv+F/8nYDDA6ajDY0R/cOoWlNbZTLnlpMDxE8NUpm8iYEe9AzfTRs594kcNbsbFzQGKBwUbhxkPdQt5hKT7WfJBLNH2mpXL2P5rTmlzHJfTcpioq2I5NK0bs7RZsCrZh+Xw4Fei5FRqDqEkUfvcV8ITYzwsRDmavRmTx0UW9vmOJb7/uXY0VooQsPg8TPXejw09l3unYOCYGvIkyaPUDvFDl/mlJbVMLuFgolVxUuvjt+4Dz6JOXIvO428gnNEFLSkodF41aVMpLU2tUGCIGOsMxHi5xv+XiudEpg/51OpiDpMsNkaYzb8r8CxT4tIzDWOqLqG3MhuaMUTG3k7WQeOrv5GBzZ/F5NXMeWCp/i3Ugxp4j5ZConeLJOXbeI5XvX6QMRoY7GhuN7CgJmiOnc38M2LiMLB6Vz+WsfRTfpkOSjRP1r4Y9/Jw1UyKPMgEQQyEnZRPHPQ6Zl6EAzwrzL7ejIKSs3POpDDdS/Sj6ZG+6KFxNvMfqHzhcSYOac2t6fXgUoP/pmXCSZJ24mjJLYasqPYY2d67xsiqnBRMon0rrSKe4jQqwjsOGXyVf9M4CVWaLLlk48u5ZMUww07usgJaZ9pEQpmvIBxL81ObBj+xVdfZyeUiK7eU7x/w7hxyj2VIGy3lDg+pMmTuLioQEaq+XrjU6Hta35tHNuQ3HxWPwDvG83eoSoZcE9LNInYYJu4EgODiPKhZDOAxlgBts0S06696PW0gw8RKpYrqa2jkmdljD/wyUWNyYdcbAXs0ikCHHpiZnSUsOJp1RXvCeXRHoLfjURGL3iR1mNObyZaHvN0pK9TOizZtnjCoETsWNnwNvOnZH2+9K1nhF8jEJHl50FPz5NpQmB++WgdS267HNHIZInO5UTd7tXdzWaUsXl7mPbdA5sh8BmJCFSuL92ZcrVJYv4h0iRDpxiD6rs8bIibs14tnbiZ8pE3IRWHz1VcXfhgMKbc9wwu4OdoIAI12H/S/6CauZ0VK2XvRbk43Olq2G0MWcNnNw9OAmwzaWcfsxUyf+Drj+jg5EeD9fxuVixvbLqC70Uu83I0G2jPIIVzI=
\ No newline at end of file
diff --git a/drpy_js/UAA[密].js b/drpy_js/UAA[密].js
deleted file mode 100644
index 7fe4404..0000000
--- a/drpy_js/UAA[密].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV5e0sjfnYsSqn4yYxXGRvGVn5bnGHZ4dD7u5F5u8E7FiC8ob743lR911nup6LKTKx+7MDAy+USDNrsMTcSvP24LHMWL6N8xENHidkRsjC1ENBMG0zkcuR5Zgg4aZaSCgzb/PGtE0pQRkhsiB9DIWN3jBpFFwQqydpWeNfr1kRms2oFKTZFSN5UrGtaM8NwRJPUBKUGsBHpOOPfHl3EwMjz/CQanGxtcfvIH8vZzWn7ybtPP1OUVhDeIVBCHGBp4CHY0JJ2TzJAGgIrQPhTKued0Ug7T/j9qQ0rvrzI8YsBdxl0nVi4p73kYiSgfSTkwPQ0xQvKoNQUG63vx5jae3PFw8R+Ag9b238q168dB7x+4bj4y18F1gXcjUoFbBjpUwkqC4yZpCnlRdNLEshtqlkqZu137NU7Qn7RZoWDEgGDeSjV9U2bx8yASVW25p3wgkVw3oA0isAOkOuNnATyfbywXpLCvseOKx1TRSFa+Qlge9EIT+0gJ6zAN3RURnxaOI7asgUK1qpm7si+9hbBmQmTXPiHEHm2ctTJ2+OL97eRU5jtTSWbfdnXpZ8rc7ccaOksyR+LTqUNxTaRJ0RLRAW6F3+8zoPZ7ptUT/0SAZznkUFGHudJScqqQI3XG/+qwMfnJlTzaxxNBylSt/OThWZk7N3sDhfvkJE+sB3JzbwuFjWmwJl8IFXbUX46X5sdIrI8iESLkMKd0wtH4lY/3svYKL1jWOvJKHgqcwBa9vATDJyfMyzUHk2VcHuc5xxLNjY5iuhSLK3+1grz77sSNlr/ElTOMWu0DF1SUsicSfLb571AdiB6CakjjHFuomIuRStZVkXD8oP8y2tEHQFE1FZ8fLJuOPXhbYq0lTT5suOz9F4J3F3cumY066JNxIhBejuFOjjQS/epBLQzYcSMNiN3AtFXaM69lsYcwRtLWnuEimYsF2iHbJMWTybBR53ugR9Q==
\ No newline at end of file
diff --git a/drpy_js/[密]RjAv.js b/drpy_js/[密]RjAv.js
deleted file mode 100644
index 1ffe574..0000000
--- a/drpy_js/[密]RjAv.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICdb5a+GXVJqQXYnLAogIGhvc3Q6ICdodHRwczovL3JqYXYudHYvemgnLAogIHVybDogJy96aC92aWRlb3R5cGUvZnljbGFzcy1meXBhZ2UuaHRtbCcsCiAgc2VhcmNoVXJsOiAnL3poL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCcsCiAgLy9kZXRhaWxVcmw6ICdodHRwczovL3BsYXkucmphdi50di96aC92aWRlby9meWlkLmh0bWwnLAogIHNlYXJjaGFibGU6IDIsCiAgaGVhZGVyczogewogICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDE0OyAyMzEyN1BOMENDIEJ1aWxkL1VLUTEuMjMwODA0LjAwMTsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS8xMjYuMC42NDc4LjcxIE1vYmlsZSBTYWZhcmkvNTM3LjM2JywKICB9LAogIGhpa2VyTGlzdENvbDogIm1vdmllXzIiLAogIGhpa2VyQ2xhc3NMaXN0Q29sOiAibW92aWVfMiIsCiAgdGltZW91dDogNTAwMCwKICBjbGFzc19uYW1lOiAnRkMyLVBQVibml6XmnKznhKHnorwm6aas6LO95YWL56C05aOeJuWci+eUoibml6XmnKzmnInnorwmTUdT5YuV55S7JuS4reaWh+Wtl+W5lSbli5Xnlasm5q2Q576O5oiQ5Lq6JktvcmVhbiBCSiBEYW5jZSblr6vnnJ8nLAogIGNsYXNzX3VybDogJ0ZDMi1QUFYmSkFWX1VuY2Vuc29yZWQmTW9zYWljX1JlbW92ZWQmQXNpYW5fQW1hdGV1ciZKQVZfQ2Vuc29yZWQmTUdTJkpBVitDSE4uU1VCcyZBbmltZSZXZXN0ZXJuX1Bvcm4mS29yZWFuX0JKX0RhbmNlJkFkdWx0X0lET0wnLAogIC8vcGxheV9wYXJzZTogdHJ1ZSwKICBsYXp5OiAnJywKICB0YWJfcmVuYW1lOiB7J+mBk+mVv+WcqOe6vyc6ICflnKjnur/mtY/op4gnfSwKICBkb3VibGU6IHRydWUsCiAg5o6o6I2QOiAnLnJvdy1zcGFjZTc7Lm1iMTU7aDIucm93cy0yJiZUZXh0O2ltZyYmc3JjOy5pY28tcmlnaHQmJlRleHQ7YSYmaHJlZjsuaWNvLWxlZnQmJlRleHQnLAogIOS4gOe6pzogJy5yb3ctc3BhY2U3IC5tYjE1O2gyLnJvd3MtMiYmVGV4dDtpbWcmJnNyYzsuaWNvLXJpZ2h0JiZUZXh0O2EmJmhyZWY7Lmljby1sZWZ0JiZUZXh0JywKICDkuoznuqc6ICcqJywKICDmkJzntKI6ICcucm93LXNwYWNlNyAubWIxNTtoMi5yb3dzLTImJlRleHQ7aW1nJiZzcmM7Lmljby1yaWdodCYmVGV4dDthJiZocmVmOy5pY28tbGVmdCYmVGV4dCcsCn0=
\ No newline at end of file
diff --git a/drpy_js/[影]追影TV.js b/drpy_js/[影]追影TV.js
deleted file mode 100644
index 11bb85b..0000000
--- a/drpy_js/[影]追影TV.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICdb5b2xXei/veW9sVRWJywKICBob3N0OiAnaHR0cDovL3N2aXAuemh1aXlpbmcuY3lvdS8nLAogIHNlYXJjaFVybDogJy9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICB1cmw6ICcvaW5kZXgucGhwL3ZvZC90eXBlL2lkL2Z5Y2xhc3MvcGFnZS9meXBhZ2UuaHRtbCcsCiAgaGVhZGVyczogewogICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICB9LAogIHRpbWVvdXQ6IDUwMDAsCiAgY2xhc3NfcGFyc2U6ICdib2R5JiYuaGwtc21uYXYgbGk7YSYmVGV4dDthJiZocmVmOy4qLyhcXGQrKS5odG1sJywKICBsaW1pdDogNDAsCiAgcGxheV9wYXJzZTogdHJ1ZSwKICBsYXp5OiAnJywKICDmjqjojZA6ICcuaGwtdm9kLWxpc3Q7bGk7YSYmdGl0bGU7YSYmZGF0YS1vcmlnaW5hbDsucmVtYXJrcyYmVGV4dDthJiZocmVmOy5obC1pdGVtLXN1YiYmVGV4dCcsCiAgZG91YmxlOiB0cnVlLAogIOS4gOe6pzogJy5obC12b2QtbGlzdCYmLmhsLWxpc3QtaXRlbTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5yZW1hcmtzJiZUZXh0O2EmJmhyZWYnLAogIOS6jOe6pzogewogICAgdGl0bGU6ICcuaGwtY29sLXhzLTEyOmVxKDEpLS1lbSYmVGV4dDsuaGwtY29sLXhzLTEyOmVxKDIpJiZUZXh0JywKICAgIGltZzogJy5obC1sYXp5JiZkYXRhLW9yaWdpbmFsJywKICAgIGRlc2M6ICcuaGwtY29sLXhzLTEyOmVxKDExKS0tZW0mJlRleHQ7LmhsLWNvbC14cy0xMjplcSg1KS0tZW0mJlRleHQ7LmhsLWNvbC14cy0xMjplcSg2KS0tZW0mJlRleHQ7LmhsLWNvbC14cy0xMjplcSgzKS0tZW0mJlRleHQ7LmhsLWNvbC14cy0xMjplcSg0KS0tZW0mJlRleHQnLAogICAgY29udGVudDogJy5obC1jb250ZW50LXRleHQmJlRleHQnLAogICAgdGFiczogJy5obC10YWJzJiZhJywKICAgIGxpc3RzOiAnLmhsLXBsYXlzLWxpc3Q6ZXEoI2lkKSYmbGknLAogIH0sCiAg5pCc57SiOiAnLmhsLWxpc3QtaXRlbTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5yZW1hcmtzJiZUZXh0O2EmJmhyZWY7LmhsLXRleHQtbXV0ZWQuaGwtbGMtMiYmVGV4dCcsCn0=
\ No newline at end of file
diff --git a/drpy_js/[资]采集集合.js b/drpy_js/[资]采集集合.js
deleted file mode 100644
index 61bffbc..0000000
--- a/drpy_js/[资]采集集合.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var rule = {
- 模板: '采集1',
- title: '采集集合',
- host: 'https://zhangqun66.serv00.net',
- homeTid: '13',
- homeUrl: '/cjjh.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
- detailUrl: '/cjjh.php/provide/vod/?ac=detail&ids=fyid',
- searchUrl: '/cjjh.php/provide/vod/?wd=**&pg=fypage',
- url: '/cjjh.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
-}
diff --git a/drpy_js/auete.js b/drpy_js/auete.js
deleted file mode 100644
index 1a1aac2..0000000
--- a/drpy_js/auete.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/bilfun(自动).js b/drpy_js/bilfun(自动).js
deleted file mode 100644
index 317e472..0000000
--- a/drpy_js/bilfun(自动).js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfoh6rliqgnLAogICAg5qih5p2/5L+u5pS5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIG11YmFuLuiHquWKqC7kuoznuqcudGFicyA9ICcubW9kdWxlLXRhYi1pdGVtLnRhYi1pdGVtJzsKICAgIH0pLAogICAgdGl0bGU6ICdiaWxmdW4o6Ieq5YqoKScsCiAgICBob3N0OiAnaHR0cDovL2JpbGZ1bi5jYycsCiAgICB1cmw6ICcvYmlsZnVuc2hvdy9meWNsYXNzZnlmaWx0ZXIuaHRtbCcsCiAgICBjbGFzc19wYXJzZTogJy5uYXZiYXItaXRlbXMgbGk6Z3QoMSk6bHQoOSk7YSYmVGV4dDthJiZocmVmOy9iaWxmdW4vKFxcZCspLmh0bWwnLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcl91cmw6ICcte3tmbC7lnLDljLp9fS17e2ZsLuaOkuW6j319LXt7Zmwu5Ymn5oOFfX0te3tmbC7or63oqIB9fS17e2ZsLuWtl+avjX19LS0tZnlwYWdlLS0te3tmbC7lubTku6N9fScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJaVzA4YlJ4VEgzL3NwSWo5VGlZWGNtcmZjNy9kN3FqeEVGVktqdHFuVXBKV3FDQWt3ZGd3QjJ5Q0M0OXJjR202aEdNeWxGSllhZnhuUHJ2MHRNdmFjOHovanRxeXNscVF2NnlmLy9tZG45c3labloyL1pnKzkvT3lRL2tXY3lJa3ZYMGErNmZvNWNpS2lCaGE4YUN6U0ZubjI1THN1bTM5Njh1MlBYWTBMbjlYbDJHSXR1bGlYTlVTNjIwZ2R6K3ZyU1NYZ21KOVlvNDRFT09iMXByMmVjWW9Sb00vQnhVb3B6MzBhUUo4TEkycG5sL3MwZ0haSVhBRDNTN3l0dUFOOFB3TWNxeGJtMWRBU3hRaHd2OEZWdjhReEFpdFBmMnhYOHF3RFluT3ZKRThDNUZLWXIreE5jeTRHMEM0K1dzdSs1M1lHMEc1eVNXZk83UXkwVWsrdmI5a2ZIK0dZQWNTaWcxN2ZMeHd6Z0xIdnBsUnNtOGR1Z0dPMWlWSHY3UnpGQ05EbitLdnFnTXQ5R3NENDlsYjhzZDlWYVkySENNWVZxZG5xTzh5aUFjU1NjWlZhNTVnQnpHSTVyZWVBWjlHQVZEWHZUWXlncWcxQXJML3MvOFlqSVVBRlNpUCticjRwNFNhcCszSDlTbHBHK2FJYWNxMWx4TnpTTXBwZHFHWGpuSVFCbEhvKzYyMnZjcWtOU0xHSzNzNGVpdFVBSkwrWFZMa1NwMjBBVTdUeFJtSUVLT1RyTllrUm9GMW16c3N2Y3pzRHlIUHF2YlFqa0duL1EySUVra3ZSenFYWTFHNjRxTng1Ym1jQTdmcFR1bElxd2F0RkdDT1pLL3VwZ2orUTVjR0FaUWxQZTYvTHVobFdNVE91aUcxVmRubGhFZGpUWGwwdFZCZDdaTnJCTFUxN3JxU3Y1ODROV05NZ01RSk03ZnFzeEFnd0RabVNHczVJV05pYUtDdHN3SnBnaVJGWUQ0MFZNMkJOc0RVU0ExWUoxVXBVU2xpSHBwV3pzMW5aTFZrcmg3bVZFbmEwZHh3bXJmSFgwanRGNzdUMUR0RTdiTjBSM2JIMWR0SGJMZDM1QXJyK2ErbkhSVDl1NjhkRVAyYnJSMFUvYXV0SFJEOWk2ekpleHg2dkkrTjE3UEU2TWw3SEhxOGo0M1hzOFRveVh2MjNhYUlLR1c5MTJKb281cjlNRkdSN29rNlNjQkxLS1ZKT1FUbE55bWtvWjBnNUErVXNLV2VobkNQbEhKVHpwSnlIY29HVUMxQXVrbklSeWlWU0xrRzVUTXBsS0ZkSXVRTGxLaWxYb1Z3ajVScVU2NlJjaDNLRGxCdFFicEp5RThvdFVtNUJ1VTNLYlNoM1NMa0Q1UzRwZDZIY0krVWVsUHVrM0lmeWdKUUhVQjZTOGhES0kxSWVRV24vbk5kQTg0UGlKVWVWbTVJSEJkejhvSGlaclZwbVU0SmFldkZVTitEdUs2N3JGY2VhNGw4L2ZmRmNYcEdyL1NvUmI0by8vK3I3SDdycXVUeHVNMDYzNDhDY2JvQXZDWEtYeGh5cDNpMFY1U1NicEZhY3RGclpVaTdlcmdaYWRLajdPdWtnaHhya3BJTThXSkJqck96TWlBY2pFQmNhODdKc2NRaHd2emR4Y2IwRWxqK1RtaEcwdW5IL043OFdqK25yWVNnYjBJb1ArcmRlTHNoM0JmdTgvYjFWb004Ykwyb3JwQ1ptNE9LWlExLzBOMThVK3B0STZHOUNmeE1KL2MzLzRHODZEOHJmMUhvRy9JVWVmdnNac1Bmbi9pbHJmOWFBSkZmSzFXS0MzOGNHMEc2MDRBM3kyUXFCdkZGajNqWjdCUUo1RTI5VWR0SjRFemZBMnU1cTd6Z1hBc1RjSmJVeXlURUR1Rjl1M1RxVk1vQjJZMVBlSms0VkRhRGQ5cmFYU0ZYY1VUbGRhcEpRaDgxZnRlUGhPaGhBSDJ0OTFkNGhibTNnazNnUjdTKzBrMERhRGJDMk5MM0p5WlpXQjhTV0YzUnBPV1lnM04zRDNUMFM3dTdoN2g3dTdwOXNkejk4VUx0NzBBNGU5RTNOanhhcU0rd0tDTkJuY3RGUDgwY0xBc1RTay80eXZqa1prQTFyLzI5YzFmUkVOY2tuS1FUb2MzcEc1ZkNXTm9BK0EwNDZ2THhyZlRjemdQc0ZmRFVLT3RWUlJWMm1UYjZmQVRzMnQySEZOS0NlczN1VlAvbDdHd0hhSmFkVUlzZnRETWpEdEs0SzdJZ0kwR2R1ME11eXN5R1F1cXlwY2daMWFZQzFzMzNFRTVKY3FlTGlPTXVBdGQzdWU1cnhqODZqeFlSRFZ4SzZrdENWaEs0a2RDVWZ5WlZvVTlMOUFUc0RtUFZESkFBQScsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAg5Yqo5ryrOiB757G75Z6LOiAnNCd9LAogICAgICAgIOeUteW9sToge+exu+WeizogJzEnfSwKICAgICAgICDov57nu63liac6IHvnsbvlnos6ICcyJ30sCiAgICAgICAg57u86Im6OiB757G75Z6LOiAnMyd9LAogICAgICAgIOeIveaWh+efreWJpzoge+exu+WeizogJzIyJ30sCiAgICAgICAg57qq5b2V54mHOiB757G75Z6LOiAnMTknfSwKICAgICAgICDkvZPogrLotZvkuos6IHvnsbvlnos6ICcyMCd9LAogICAgICAgIOW9seinhuino+ivtDoge+exu+WeizogJzIxJ30KICAgIH0sCiAgICBzZWFyY2hVcmw6ICcvYmlsZnVuc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/cally66.js b/drpy_js/cally66.js
deleted file mode 100644
index 048a97a..0000000
--- a/drpy_js/cally66.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/cally66影视.js b/drpy_js/cally66影视.js
deleted file mode 100644
index 67c5397..0000000
--- a/drpy_js/cally66影视.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgICJkZXNjIjogIi5tb2R1bGUtaW5mby1pdGVtOmVxKDEpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtOmVxKDIpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtOmVxKDMpJiZUZXh0OzsiLAogICAgInRhYl90ZXh0IjogInNwYW4mJlRleHQiCn0pCnZhciBydWxlID0gewogICAg5qih5p2/OiAibXhwcm8iLAogICAgdGl0bGU6ICJjYWxseTY2IiwKICAgIGhvc3Q6ICJodHRwczovL2NhbGx5NjYuaWN1IiwKICAgIHVybDogIi92b2QvbGlzdC5odG1sP2Z5ZmlsdGVyIiwKICAgIHNlYXJjaFVybDogImh0dHBzOi8vY2FsbHk2Ni5pY3UvcHVibGljL2F1dG8vc2VhcmNoMS5odG1sP2tleXdvcmQ9KiomcGFnZT1meXBhZ2UiLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcjogIkg0c0lBQUFBQUFBQUFPMlliMC9hVUJUR3YwdGY3SlhNbGhZRWsyVWZaQ0ZMTThtMkROM2ltSWt4SmlvREFlZWNpOElVRXBjTkJ6aWRzUG1YV3Z3eXZiMzBXNndnY0M2SGsra0wzS3UrdlBkNWJtOTdubk4vYmJvZ0tkTGtrd1hwVlhSZW1wUllPc1hyaGpRbXplalRVWEU4cDhmZVJUdkdtZlowc3VJa0t1MXBkeUF0am5WbnN4WExMUExNYWxkNHBzZWpUMTlPUFFxREkxZGttZkt3UTVIN0ZwNnUyNGtrWVZINkZudjVrNzJVSXl4KzJDaFRwcStpd2tibFRYWnBFQllOTmtwazdaVmR3aEtBamZaWDZhc0V4Ykx3TGNveUFSdXRIUExjSm1FSndWVlNuNTJkS21HQjZ2TEdBVE8zaHkxK3FLNmQvbUkxTW9RRnFzdU5EWmE4R0xab3drYlpZMjRlREZzQ1FvekxUV2UzU1ZpRWpjeE5iaFQ1MWlrejY5amxKaGxwKzdwZGVYbGlHYWJRbGIzeFA3cHlmTzcxMUhqczVkdjR3eGZ4NmRqajNwWGxCL0g1TnplRjY5K0lYL1pyM1ZYelVYMjJVdzlSVkpHb2lxSWZpUUZSVkpBWUZFVVppZEFPU3NEbnhqcW9RaWNvc2svQjl3dlp5QUdmak5jS3gwdVdmVEplTEI2dHdvbWRyMklkcFZHc3NROE5JWTNlK0U2TUtKV2RuVlIzVnArTjZwMXFRN250aTJPMlVjTTZWTnpPNzl2RlE2ekRrWFgycXF4Z1loMUM0YzJQaEE2NTJIOXFoQTdSdE5icWhCNFMxbThUdWtEQTV2bXdya0krYkwzR0dqK3dEZ0ZaMSsrSjlVTDlEc3Z1STJJZDZzZVNaK3hYQXV2YVFNQ3Q0Nk5XWlFrQzdvL3ZGSERCZFAzZDJaZys4eHd4MVMwZ29Rc0IvUzRSZWxCc0FFS2ZFQnVBMENFZ0oyK3k5VHpXdzNTQmVucWJvSkhGeUpqa0g5bTdzbUJhamJMN21zSWd4a2VCc0tnb2JjSVNFT3ZWUGhQREZ0enpoQ1VrVnNVeWNvUWxmUCtnSG1DeEIyb1AxQjZvUFZEZkJtcDFaS0R1bkFOdVhMVXlEUVEvb1J0dVRnUHRVc1NTdUU5TnUzQm4wQzdoZkoyZXMxS09kbW4zRCtVQnRIcFE5cURzUWRtRDhtMVExa2I4OVp5dDJGYy9NZnlHUG4xSlZ4QmxUcnNtMElQUnJ0RDk0MVlUMGVmaDFzT3RoMXNQdDdkK0E0ZEh4VnRldlc2ZFpSSDNOR2dFWjNXZGIrMWhIUnFCYlpSYTM1TlloMGF3akIycitSWHIwQWhPd21RWEsxaUhuSGlhK0gyaENXK0M1VFdleGorWk5jakpXVXExdmgxaEhkTWY2LytCK3lwazdZSC9MdUNQTFA0RnVMc1daOUVhQUFBPSIsCiAgICBmaWx0ZXJfdXJsOiAiJnBhZ2U9ZnlwYWdlJnt7Zmwu5YiG57G7fX0me3tmbC7lubTku719fSZ7e2ZsLuWcsOWMun19Jnt7Zmwu6K+t6KiAfX0mdHlwZV9pZD1meWNsYXNzIiwKICAgIGhlYWRlcnM6IHsKICAgICAgICAiVXNlci1BZ2VudCI6ICIqbW9iaWxlIgogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19wYXJzZTogIi50ZW1faGVhZF9tZXVuIGxpO2EmJlRleHQ7YSYmaHJlZjtpZD0oXFxkKykiLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKCiAgICAgICBsZXQgZmlsZSA9IG51bGw7CiAgICAgICBsZXQgcXVlcnkgPSBnZXRRdWVyeShpbnB1dCk7IAogICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KCdodHRwczovL2NhbGx5NjYuaWN1L29wZW5hcGkvcGxheWxpbmUvJytxdWVyeS5saW5lX2lkKTsKICAgICAgICAgIC8vaHR0cHM6Ly9jYWxseTY2LmljdS9vcGVuYXBpL3BsYXlsaW5lLzMxMDE4CiAgIGxldCB1cmwgPSBKU09ONS5wYXJzZShodG1sKS5pbmZvLmZpbGU7CgoKICAvL2xldCBoY29uZiA9IGh0bWwubWF0Y2goL3RlbUxpbmVMaXN0ID0gKC4qPyk7XHMvKVsxXTsKICAvL2xldCBqc29uID0gSlNPTjUucGFyc2UoaGNvbmYpOwogIC8vanNvbi5mb3JFYWNoKGl0ID0+IHsKICAgLy8gaWYgKGl0LmlkID09IHF1ZXJ5LmxpbmVfaWQpIHsKICAvLyAgICBmaWxlID0gaXQuZmlsZTsgLy8g5pu05pawIGZpbGUg55qE5YC8CiAgLy8gIH0KICAgLy8gICAgIH0pCgogIC8vbGV0IHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZShmaWxlLnN1YnN0cmluZygzKSkpOwoKCiAgLy9sb2codXJsKQogIGlmICgvXC4obTN1OHxtcDR8bTRhfG1wMykvLnRlc3QodXJsKSkgewogICAgaW5wdXQgPSB7CiAgICAgIHBhcnNlOiAwLAogICAgICBqeDogMCwKICAgICAgdXJsOiB1cmwsCiAgICB9OwogIH0gZWxzZSB7CiAgICBpbnB1dCA9IHVybCAmJiB1cmwuc3RhcnRzV2l0aCgnaHR0cCcpICYmIHRlbGxJc0p4KHVybCkgPyB7cGFyc2U6MCxqeDoxLHVybDp1cmx9OmlucHV0OwogIH0KICAgIH0pLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogIioiLAogICAg5LiA57qnOiAiYm9keSBhLm1vZHVsZS1wb3N0ZXItaXRlbS5tb2R1bGUtaXRlbTsubW9kdWxlLXBvc3Rlci1pdGVtLXRpdGxlJiZUZXh0Oy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmIiwKICAgIOaQnOe0ojogIi5tb2R1bGUtY2FyZC1pdGVtOy5tb2R1bGUtY2FyZC1pdGVtLXRpdGxlJiZUZXh0Oyo7KjsqIgp9
\ No newline at end of file
diff --git a/drpy_js/eFuns.js b/drpy_js/eFuns.js
deleted file mode 100644
index 1cdcbff..0000000
--- a/drpy_js/eFuns.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/freeok.js b/drpy_js/freeok.js
deleted file mode 100644
index 0a56050..0000000
--- a/drpy_js/freeok.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogICAgdGl0bGU6ICdmcmVlb2snLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LmZyZWVvay5wcm8nLAogICAgdXJsOiAnL3ZvZC1zaG93L2Z5Y2xhc3MtLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaFVybDogJy9zbzFzby8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAwLAogICAgaGVhZGVyczogewogICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAnLAogICAgfSwKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhciYmdWwmJmxpO2EmJlRleHQ7YSYmaHJlZjsvKFxcZCspLmh0bWwnLAogICAgY2xhc3NfZXhjbHVkZTon55WZ6KiAfOmmlumhtXznvZHnm5h8JywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnYm9keSYmLnNjcm9sbC1ib3g7Lm1vZHVsZS1wb3N0ZXItaXRlbS5tb2R1bGUtaXRlbTsubW9kdWxlLXBvc3Rlci1pdGVtLXRpdGxlJiZUZXh0O2ltZyYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmJywKICAgIGRvdWJsZTogdHJ1ZSwKICAgIOS4gOe6pzogJ2JvZHkmJi5tb2R1bGUtaXRlbTthJiZ0aXRsZTtpbWcmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICJ0aXRsZSI6ICJoMSYmVGV4dDsubW9kdWxlLWluZm8tdGFnJiZUZXh0IiwKICAgICJpbWciOiAiLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsIiwKICAgICJkZXNjIjogIi5tb2R1bGUtaW5mby1pdGVtOmVxKDEpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtOmVxKDIpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtOmVxKDMpJiZUZXh0IiwKICAgICJjb250ZW50IjogIi5tb2R1bGUtaW5mby1pbnRyb2R1Y3Rpb24mJlRleHQiLAogICAgInRhYnMiOiAiLm1vZHVsZS10YWItaXRlbSIsCiAgICAibGlzdHMiOiAiLm1vZHVsZS1wbGF5LWxpc3Q6ZXEoI2lkKSBhIn0sCiAgICDmkJzntKI6ICdib2R5IC5tb2R1bGUtaXRlbTsubW9kdWxlLWNhcmQtaXRlbS10aXRsZSYmVGV4dDsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZjsubW9kdWxlLWluZm8taXRlbS1jb250ZW50JiZUZXh0Jyx9
\ No newline at end of file
diff --git a/drpy_js/i275听书[听].js b/drpy_js/i275听书[听].js
deleted file mode 100644
index 50c0993..0000000
--- a/drpy_js/i275听书[听].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflkKzkuaYnLAogICAgdGl0bGU6ICdpMjc15ZCs5LmmJywKICAgIGhvc3Q6ICdodHRwczovL20udGluZzI3NS5jb20nLAogICAgLy8gdXJsOiAnL2NhdGVnb3J5L2Z5Y2xhc3MvMi5odG1sP3BhZ2U9ZnlwYWdlJywKICAgIHVybDogJy9jYXRlZ29yeS9meWNsYXNzL2Z5ZmlsdGVyL2Z5cGFnZS5odG1sJywKICAgIGZpbHRlcmFibGU6IDEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5ieX19JywKICAgIGZpbHRlcjogewogICAgICAgICI2IjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjciOiBbeyJrZXkiOiAiYnkiLCAibmFtZSI6ICLmjpLluo8iLCAidmFsdWUiOiBbeyJuIjogIuabtOaWsCIsICJ2IjogIjIifSwgeyJuIjogIuS6uuawlCIsICJ2IjogIjMifV19XSwKICAgICAgICAiOCI6IFt7ImtleSI6ICJieSIsICJuYW1lIjogIuaOkuW6jyIsICJ2YWx1ZSI6IFt7Im4iOiAi5pu05pawIiwgInYiOiAiMiJ9LCB7Im4iOiAi5Lq65rCUIiwgInYiOiAiMyJ9XX1dLAogICAgICAgICI5IjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjEwIjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjExIjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjEyIjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjEzIjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjE0IjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjE1IjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjQ5IjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjUwIjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0sCiAgICAgICAgIjUxIjogW3sia2V5IjogImJ5IiwgIm5hbWUiOiAi5o6S5bqPIiwgInZhbHVlIjogW3sibiI6ICLmm7TmlrAiLCAidiI6ICIyIn0sIHsibiI6ICLkurrmsJQiLCAidiI6ICIzIn1dfV0KICAgIH0sCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgNjoge2J5OiAnMid9LAogICAgICAgIDc6IHtieTogJzInfSwKICAgICAgICA4OiB7Ynk6ICcyJ30sCiAgICAgICAgOToge2J5OiAnMid9LAogICAgICAgIDEwOiB7Ynk6ICcyJ30sCiAgICAgICAgMTE6IHtieTogJzInfSwKICAgICAgICAxMjoge2J5OiAnMid9LAogICAgICAgIDEzOiB7Ynk6ICcyJ30sCiAgICAgICAgMTQ6IHtieTogJzInfSwKICAgICAgICAxNToge2J5OiAnMid9LAogICAgICAgIDQ5OiB7Ynk6ICcyJ30sCiAgICAgICAgNTA6IHtieTogJzInfSwKICAgICAgICA1MToge2J5OiAnMid9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL3BjL2luZGV4L3NlYXJjaC5odG1sP2tleXdvcmQ9KiomcGFnZT1meXBhZ2UnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgaGVhZGVyczogeydVc2VyLUFnZW50JzogJ01PQklMRV9VQSd9LAogICAgY2xhc3NfbmFtZTogJ+eOhOW5u+Wlh+W5uybpg73luILoqIDmg4Um5a6r5paX5aWz6aKRJuWumOWcuuWVhuaImCbmrabkvqDku5nkvqAm5YiR5L6m5o6o55CGJuaOoumZqeenkeW5uybph43nlJ/nqb/otoom5oGQ5oCW5oOK5oKaJuaWh+WtpuWOhuWPsibkuKTmgKfmg4XmhJ8m572R5ri456ue5oqAJuebuOWjsOivhOS5picsCiAgICBjbGFzc191cmw6ICc2JjcmOCY5JjEwJjExJjEyJjEzJjE0JjE1JjQ5JjUwJjUxJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnKicsCiAgICAvLyDkuIDnuqc6Jy5saXN0LXdyYXBwZXImJi5pdGVtLWxpbms7aDItLXNwYW4mJlRleHQ7aW1nJiZkYXRhLWNmc3JjOy5zdGF0dXMmJlRleHQ7YSYmaHJlZicsCiAgICDkuIDnuqc6ICcubGlzdC13cmFwcGVyJiYuaXRlbS1saW5rO2gyLS1zcGFuJiZUZXh0O2ltZyYmc3JjOy5zdGF0dXMmJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICAidGl0bGUiOiAiLmJvb2stdGl0bGUmJlRleHQ7LnRleHQ6ZXEoMCkmJlRleHQiLAogICAgICAgIC8vICJpbWciOiIuaW1nJiZkYXRhLWNmc3JjIiwKICAgICAgICAiaW1nIjogIi5pbWcmJnNyYyIsCiAgICAgICAgImRlc2MiOiAiLnVwZGF0ZS10aW1lJiZUZXh0Ozs7LnRleHQ6ZXEoMSkmJlRleHQ7LnRleHQ6ZXEoMikmJlRleHQiLAogICAgICAgICJjb250ZW50IjogIi5ib29rLWludHJvJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIub3BlcmF0ZS1iYXImJi50b3RhbC1udW0iLAogICAgICAgICJsaXN0cyI6ICIuYm9vay1saXN0OmVxKCNpZCkmJi5saXN0LWl0ZW0iCiAgICB9LAogICAg5pCc57SiOiAnKicsCn0=
\ No newline at end of file
diff --git a/drpy_js/iFun.js b/drpy_js/iFun.js
deleted file mode 100644
index 405b064..0000000
--- a/drpy_js/iFun.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVxh2V7dcJmP9sgEPFX0Fw2nJdi2DWckcq0kfcFab9Gbl4v0/tmUqhRQLUC4vbE+s+Wp487KCSzW9F1F2QWcWHquWjhG1nXyKeYtDU56Ng3F3Gj2gwyLBaWb8WuDFvmKJmu1MPo3I2TD+ogNW70xv3kUD86nvRrk3cLAIYD8q3XQlitbwJBbHRBf1IvUTHbGmFT2h9PRknXFQtwlUXbIohKAruI0GeTC8jvxttclXk3tGrlNU4YdrvfiF8z7ukQ90XUS2S29uJ+2sWji7MH/z1PQMFo/jBpid5KLLd1YWojZsFrxB0qrq49aG+apmBQ8nG/hJrlDBG6/tSOwdaI+7PiRVSrz0vlNEDcy2cOWBD+DAonUWJNPmtsGJnb4fEKIsJ3KqhkVvsBBZgH42MsAqIYe0Q2XEsyV+WMoyT7lmkLAYGq2C+vHr3rFxxCKpO6R/AJBXQ4q6MBGDD3pNKG2TmePI6TZD6VOWRdsquFFcQgIaOaKuiPeXZnQUMX/Dx+52Klh/3v+UnxiCaCiTcG9CuspB281xO09lyxDb4Y/WMTbYCNd5S1iRh3bNHi6HDAwNnjyttDmZ9wKmn95rudl3Stf3XSNLGY6hTLb0rOfGoXchKs0O44an4f8n2kbYFCOR+Faqg6sOsWpfol8fy3h0vnEA9c2Edcm/U5NIPeN2YT6lZBt1+8GNDChqz/4RGWCHIuxPBX2nsSy65yadTA4V8BpRZYPoIJZ07ic6me7SXSIfPe7lzGEBlplS9JU8+QYRHMj9FqwsWBOkx+McpIcOSdk9rzgnTOEFOB2qTf5AZyPR69fu2q6ljuzt3BTaTk6msLLpAuRn9v9+7553rMWBmHkATljm7TfXHtbrKej7fQAQ64K1ZGDDdC6P2WvzUIfpi4M72TY4iM+V3bRKFg68AybQaQ3ueEwQHLE50OukWZwhr5W2W1INLbFfJlbU6CFV7PSpkonW9oh6wf/gVExexfdWNytzr9gHHyfTo4/QEVy1+1fgsDpokkKYfZDkLuJA+HPoiVv4E0dgd8oQV70iKMtx/L5x3KkxG7xoTnMpxnnIV6zNd4iCfSQvwmPZHnVXchtNytrhQ0UwL2gWHHwM/N9LxEL9NFIJD/Sv54sXZCVxmMFxSrvMUivsOBJzm9yd5r7bPWUDnEEJWKKyhAwg/vTLAbPRn9wIpL/zsnrPZaK2Y3jR1mgqYbqj62hgyiGzq8JU3CJ+bJKbsj2/PooKYLWXh2P4UurLefy8a7dtmgkM6BJvw+pZkuXBrNmfbEazDrIaCYbbIXwS+OtWKshN/qxZZm6iVrDpa8etH5cAInKXFIdL6pSWtm4FpDGGKhKHIAIMpdBRlKcG6J5s6fihPh3iRA1pQqeZ2yPeLYxzoPHy+nBo2RL8/WvRSzqLxcBo7g0ln56Z02yfAC+vQ+sWoCG76iBmPAoWmyJc8w5h5THF
\ No newline at end of file
diff --git a/drpy_js/iku喵[资].js b/drpy_js/iku喵[资].js
deleted file mode 100644
index cda124b..0000000
--- a/drpy_js/iku喵[资].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/ytLLFIoKs1JVbBVqOZSAIJnKxY+m7vfSkH9ZXv7y9lthuo6YOGSzJKcVKBoZnbp02lbo19sbYmFymTkF5cAJTJKSgqs9PWTEzOzMvWAqnL1kpOtLAwsLeHKclNDMlOAKoECtQDL5T0GdwAAAA==
\ No newline at end of file
diff --git a/drpy_js/libvio.js b/drpy_js/libvio.js
deleted file mode 100644
index 7ffe0b8..0000000
--- a/drpy_js/libvio.js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8g5rC45LmF572R5Z2A77yaaHR0cHM6Ly9saWJ2aW8uYXBwCm11YmFuLummluWbvjIu5LqM57qnLnRpdGxlID0gJ2gxJiZUZXh0Oy5kYXRhOmVxKDApJiZUZXh0JwptdWJhbi7pppblm74yLuS6jOe6py5kZXNjID0gJy5kYXRhLmhpZGRlbi14cyYmVGV4dDs7Oy5kYXRhOmVxKDEpJiZUZXh0Oy5kYXRhOmVxKDQpJiZUZXh0JwptdWJhbi7pppblm74yLuS6jOe6py5jb250ZW50ID0gJy5kZXRhaWwtY29udGVudCYmVGV4dCcKdmFyIHJ1bGUgPSB7Cgl0aXRsZTonTElCVklPJywKCeaooeadvzon6aaW5Zu+MicsCglob3N0OidodHRwczovL3d3dy5saWJ2aW8uYXBwJywKCWhvc3RKczoncHJpbnQoSE9TVCk7bGV0IGh0bWw9cmVxdWVzdChIT1NULHtoZWFkZXJzOnsiVXNlci1BZ2VudCI6UENfVUF9fSk7bGV0IHNyYz1qc3AucGRmaChodG1sLCJsaTplcSgwKSYmYTplcSgyKSYmaHJlZiIpO3ByaW50KHNyYyk7SE9TVD1zcmMnLAoJLy8gdXJsOicvdHlwZS9meWNsYXNzLWZ5cGFnZS5odG1sJywKCXVybDonL3Nob3cvZnljbGFzc2Z5ZmlsdGVyLmh0bWwnLAoJZmlsdGVyYWJsZToxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAoJZmlsdGVyX3VybDonLXt7ZmwuYXJlYX19LXt7ZmwuYnl9fS0te3tmbC5sYW5nfX0tLS0tZnlwYWdlLS0te3tmbC55ZWFyfX0nLAoJZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsxWVhVOFRRUlQ5TC9QY2g1a0ZXdVN2R0I1V3MxRUMxcVNnU1VPYW1BQUdSV2hDbEUwalJrMzRLQW0xcXhLRUpTMS9walB0L2d0bm1ZOTdWK05ha3FKdE1tOXp6cmwzdDJkMjdrbDNWd2tqYy9kWHlXSlFKWFBFcndRK0taQ3kveVNRaU85SC9FMHM4WE4vNlZsd1UxWk82WTFtc3RaTWFRbElyYURZM2tXTHYrL3dnK09rOFZKckdTcGJseHcxeEVVN1U2ZXBYNjVYajhSbE4zczlSWm02Zm5kSGtycENBNk9KNys5QTA4Qm9nNjJ2b0dsZys4SkRzWDlxK2hRd1d2THhCUG8wTUJydi9nQk5BL2d0RWY0dFVhWnZPK0x4a2VsVHdQYXQxK1VPOHMwVDAycXhkWEo0M2ErMytxOGF4b3pGOXZxdlA0bXRhOWxtYm1HeHJkZzQ3MTN0R1ZtQjJueXFxb05SRGZ3S09oaVhaNzJyenBBSHc2UGV0T1p1bG9pZkFuNEs4eDd3SHVZWjhBenpGSGlLZUhiUDhuS0orRm5nWnpGZkFyNkUrU0x3UmN6UEFEK0RlZkRMc0Y4R2ZobjJ5OEF2dzM0WitHWFlMd08vY29rZjA1SmZmZ1NQYWRCdURab3ZobnhNOGp6S2VuTUNGRUN6QXBvR2R2NitIWUNtZ1oyVnNNTzNRNUFCbzJsQ3NnSm9Da0hUQUUwMjBoUkFVNGljS0lET09mK3lCdWM4QlhnREgxUmgrOFRPTG8vcnYyMmZDTStUOEV4ZlltVkJsdHJJaW1NUnZkWEs0NFdWWmRqQTlqcmZOTEc0L1BCcEpVanZPbDhnM3Y4STM3K0g2ckFoblJlR2VTR2FIOXAvRHNyYzBONkxaSzd4RDU5TnE4VXU1RnpJVFdMSWpWdFlUWTh5ckRLeE1sUm9pTk5qR1JWR1U4Q045dVNQdHVVcCtLWFlMd1cvRlB1bDRKZGl2eFQ4VXV5WGdsK0svVkx3SzVjdWFzWWdhdVI1SEVuVzNQcE56bVhHUkdTR205RXhtTkhpYUdZMDcyVWc3dzkvM3RjVzk4WERUYitiL2p2OWNsRkMwLzl2YjE3N0NkdWtOSDIxRmdBQScsCgloZWFkZXJzOnsKCQknVXNlci1BZ2VudCc6J01PQklMRV9VQScKCX0sCgljbGFzc19wYXJzZTonLnN0dWktaGVhZGVyX19tZW51IGxpOmd0KDApOmx0KDcpO2EmJlRleHQ7YSYmaHJlZjsvKFxcZCspLmh0bWwnLAoJLy8gdGFiX2V4Y2x1ZGU6J+WkuOWFi+e9keebmHznmb7luqbkupHnm5gnLAoJcGFnZWNvdW50OnsiMjciOjF9LAoJICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgIHBhcnNlOiAxLAogICAgICAgICAgICB1cmw6IGlucHV0LAogICAgICAgICAgICBqczogJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwbGF5bGVmdCBpZnJhbWUiKS5jb250ZW50V2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwbGF5ZXIiKS5jbGljaygpJywKICAgICAgICB9CiAgICB9KSwKCS8vIHNlYXJjaFVybDonL3NlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCglzZWFyY2hVcmw6Jy9pbmRleC5waHAvYWpheC9zdWdnZXN0P21pZD0xJndkPSoqJmxpbWl0PTUwJywKCWRldGFpbFVybDonL2RldGFpbC9meWlkLmh0bWwnLCAvL+mdnuW/heWhqyzkuoznuqfor6bmg4Xmi7zmjqXpk77mjqUKCeaQnOe0ojonanNvbjpsaXN0O25hbWU7cGljOztpZCcsCn0=
\ No newline at end of file
diff --git a/drpy_js/netflav.js b/drpy_js/netflav.js
deleted file mode 100644
index c1fd4db..0000000
--- a/drpy_js/netflav.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAAAAH1Ty27TQBTd8xWmVDNO2tppEQglMlEl9iwK3TTFmtrX8bR+dTwOTapIRSwQKo8KVXRBFlU3XUBXsKgqAT/TOHwG83BfCLAsP+4995x7Zu70CDNYEYHhGNu3DINTHkHTwAnwICI9PCtiYZpzEQo5z/KmbVepe5aXxrYCFCwSeTvoexHJ83ZGuuAEfflS6RwI88KnGqR/2hvQf54y36nX0TU44v0MHNXDtUqyJltakIHNgnobSyraNBoyEtCIA9MQFVA9uAmJpY1ytDN+f1B+Ofr18x0qR68nhy9QeXAoX+enJ+XHV2j86fv52TG+qtRmOIPEp0kXeZDkKQMfFcnlpxfSBHKYy4s1RKKo3YWEgTMe7U72jxaXFVdEYyoW7b78ziLSdzPCcmhyVoBKk0G/iRXy/HRncnYsJK0e9SF1u4z6rpcmnAgRhpClAg3XgyhqXfyoJULoCWzx1nWAQeMuQjnzWjfDBKGQQaAFz95Iwen13OLpEmfCpWnWnIdy+w2jJ+Yh5HEk5oHBZgE5N2mSFbymshFwwxepzA+IKWGz2IpJV4yEu+BSDjHWOBqY/m0H45omlSW+AGamSfkNKWVEE4Yi9yedNtqETXO+pu1WArI2FlulSv9ZeOlbFzHgBUu05gyexjOKQV0qP9SwIUQ56BYrx1pI+hUq3AtNWx+Gjt2x47gXNuatrf6gY/c6tlVvT9nd2kpj1WIgdt4DE0/hWVy1oAkZaMaLFZYCtQvqFTI3WJwbrM4o+pVnnXy13rbiu8UDq84dxf8fet/Kijw08eTz7vjt1/LDSbn/AyuzSrRWOVXP5cePqmN/dfVS31UDG7A0FlM52XspbjU4fwGpw+Jb6ylNTHynamLYqlZTFpV7o8m3I0FUFxzD39htzGNuBAAA
\ No newline at end of file
diff --git a/drpy_js/ok资源[资].js b/drpy_js/ok资源[资].js
deleted file mode 100644
index f12e712..0000000
--- a/drpy_js/ok资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-Q/+JQu002MIhInksxbFmwokFjoYvzvVaQsBImydLtO4H/iQpus3s+LSklI/qQQpsO3iedPGNtLeiHK45byE00INIa05ZOt3WvTkPm0YAXU5vgFb9F4LJCKBBwg9DeBJqIbWaUX2800DpCDO7OyTMT+v+4ORkkYRWLLkVmYLvurC0cABU0hDSTcBrvqgS6fCk261z63BCJDEkzp6DLD8+16EKkE6rXv4im4CVOvIFtkCUbvrvh9PCfzomJqJjzGYrpCeGnt8z9eKhczA8dTPHuU+EtTmAJ6+thpuCMn0AFXIe722L6ieScVEBis3w2gtMEgn1SpCvofEB/DJQeN6jn8if6LwSjF4Dbf1f9L8/s0WKmqNmhDiDMk4X1XThaasWoQMTy3GRpOIoFWHl3ZRoBkpqO7EDdAg94RiqK2Tr3OrwJYD1yF2wSOaNQolFOCYiut+Wge8hwb+/6yRM32M7lQ==
\ No newline at end of file
diff --git a/drpy_js/rarbt(全)[优].js b/drpy_js/rarbt(全)[优].js
deleted file mode 100644
index 3528368..0000000
--- a/drpy_js/rarbt(全)[优].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICJteHBybyIsCiAgICB0aXRsZTogInJhcmJ0W10iLAogICAgaG9zdDogImh0dHBzOi8vd3d3LnJhcmJ0LmZ1biIsCiAgICB1cmw6ICIvdm9kL3Nob3cvaWQvZnljbGFzc2Z5ZmlsdGVyL3BhZ2UvZnlwYWdlLmh0bWwiLAogICAgc2VhcmNoVXJsOiAiL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCIsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQU8xYlcyOWJOeEwrTDNwTzEwZk96ZTVqa1FVSzlLWFlYYlFQaXp5NGlkQzRtOXE3anBNZ1d3U0lMNUlseTVhbCtLcFlzaHc3OHQyNldJNGx5N29BK1MwaXo5Ry9XRXFraHVSUVRsMmcyTVVXUkkwaTU1dlB3K0Z3T0NTSDlDKytuOGRmakFaOFgvNzlGOTgvQXE5OFgvcElaSi9PQkgyM2ZHTWpQd2ZVN3hjalQ1OXo0bGdIRGg2MFp3NDZNUHZ3dmI0bDBMVVU0d3YwMGRPUlo4OEdCTlJqdU9HaVVBY01BWUdPK1lOV1BhWHI0QkRvMkUrUXl5dGRCNGRBQnhndGRYQ294L0NhY2FaVll3aW94NkRUSis1YVFtTUlDT3lZejd2MUk5ME9Eb0dPbVhrNi9VN1h3U0d3TlBTMm5UelVMZVZRajlIT2xGcVhjWTBoSU5BUkM1R2xNMTBIaDRDUm5jTWVFeEJZT2hXbmI5WjBTemtFalBCR3F4clJHUnpxTVZxMWJTOVgwQmdDQWgybkMxNTRTOWZCSWNuWWF6VzJFYU1MU1o4R3ZjZ1o4bWtYZ25HWmFyVGZOZlJ4NFJDTWZyWXBvMWVNUG9mQVkwc2Z2RjBVUVJ3Q1JueUJ2a0d4emlGZzVDNUk5VlJuY0Fnc3JSNlIrcXB1S1llQWtUbDFJM002ZzBQUXltelRQYzdxclhBSXhxV3lUd29WZlZ3NEpQc1NibStHVUYrNjBPdUhIWTVJRGFrQ1dhZ3FxYUgzZmFQVThHRy9uZXcxTVRBeUVSZ1pFQkIwdFJFam0zV05JU0NZQ250SldzbHJEQUhKWVN2UXk0YmVDb2NnZk5hek5IV2lNUVFrSjl3aHRrTkFFRDdSSW1ZSUNGb3ByV0tHZ01EU1Joa3pCQVE2WnBlWWgwajRVRmNEcUJMTTdoSUxpYVJ1RUtEUTRtS0JWUGYwRmpra3JTNllWaGRVbTFyTldiZStUdGYwUVpDb1RBWHpOTFd1a3pnazAvdzJqVFpaVjNTREFBV2JHaVhlMzFiMW5XNlpLZ0QyWXBrRW96cVBROG9DUkFvckpGalFBdzFRNENXMlNMQ2lremdFUFNpZk15ZnI1bk1JR0RzSDdKTXNaM1VTb0hLQ1hyYlJ5QWdJTkMyRTJWRGlXSkFvOEZJWjcwMkpCQzkwSHFCNkxKQkNqVm1DSFl0bDhEdmhRNXBmTWRpQUFtODUyNnJ0OWFPcUFoaXgvRXBIeGJwdXNVUWh5anZEcUErYWdJQXhmMkl3T0FSakdydGlXdDJyYzJ5WkpwQ0xacmFUNGJEUEFZVjhjUlZqNDA2T2RaNUV3YjZsTTlLSWtweWVuaVFLMFhDVlphc1pDYVBwQXlpMGUzaEMwOWsrQTZnSnRBUitlZDY2cWlzSnZQZDlrd1ErNkF6ZTZUWHpLakF5TWRBRkZPbHRMTDJ0U2dleGRGQ1YrckhVcjBvZExIVVVxWDhZU1JtZ1NJZXdkRWlWM3NmUys2cjBIcGJlVTZWM3NmU3VLc1crOHF1KzhtTmYrVlZmK2JHdi9LcXYvTmhYZnRWWGZ1d3J2K29yQi92S1VYM2xZRjg1cXE4YzdDdEg5WldEZmVXb3ZuS3dyeHpWVnc3MmxhUDZ5c0crY2xSZk9kaFhqdW9yQi92S1VYM2xZRjg1MGxmRFRuZHk3R29NLy9Ddzh3WDduM1RhVUgvYVVJYzJKR2wwODV5dUgrcWtJYWREdWorc3pWQzZFYU1iR1RsRDRmdEdXNno0ZVh0MWp1UjYyOFdCa1VlVDR4TURFcFlaYTlaTk50cVZYWjBvWVptS3JyeEdneXpHZEtLRWxhYTlOMjlvTVdJMExXQm9lbnJadXdpaWRqa21EeHJ4ZGlPcFV3UUdsSzExZXJyTDlseUlCVERZVmR0bVcyNnZnZTBDR0RUdVRORlV1bFhMSUkwQXkzMWJuSlN5U0IzSFpCOHZTVEJrOUVIQ2NrWGQ2T3o1c0hzbERNVEVBUXVEOW1FQkVRRldITk5PdjIybnRnekhDRmpWZUxGSGxoS21SZzZEeG5UTWEyN1JOR3Bhd3JDNHJzeVMwempidCtoRUNTdEhLL0xoVUo1cGUwMERERTJmSDdYbkVpU1hSazBEck1RelRTNnp1V0xFczRDQk9KTmcyMUF5aGNaUHdtcmNiTmE5eFYwemJqZ01pM3F1UWtMYmhuc2tyQk9Oa0pVdzByZzIxMWZqMnB3NjU4aHBoazFFWTg0SldHNzJ3bXhMZ0ZnY1UvdDd5c1k5YXZhWHczTFRlOWhxNHBIam1EcERDZ2xTcTVxVGhNTkthSkdOQ0QzWk5VSkx3SXAxZEhYSk1LMkR5ZmtiOUNJbGI3NkU1MjhQQmwzQlV1c3k2c1lSVWNMcXRtNi9pU09xaThtSlhxVGxoSGUraFNkNkQ1WWJ6NmliWGZQT1A2QzVBYkRpa2xhbDdpNHRHaTRSTURTZERMTVo0TVhPVU5NQVF6akZpblJqMnEyeXc5SzdUMld2ZVVRVzM5TmtyajIzd0hheUtNUStTd1VISGt5eG85S25NbUViMTN4SVBRcHlSeHBpMmJjQzNjMTlLak9NcFBmWVAzRWZzUmgrc2ZpQjdJYytkWTV4N2JNcG8wVlRES1pXWm1nMHduTHBwN0w3THVkR1VHb3l4ZUMwaFJudWdQZGJyRFBJUzdvTUJtU2p5VFIxZkpXTE1Gc3FNK3hFekZob2VLNGhnY0dGR2t1RHpDaldDeWFmeTVNc1hzejdNWlJLQURPSkhXT1lrSFduT3dqc0FHK3NSSi9oeVdrU1pXYnlSakl6TE8yWUE5MlBBZDZZUzNTdFkwZG01QUZGb0xqT0xaYTZVVU9MNjRiSFZKa3lUOXB2TSs3N1ZXT2VDRmpXNEtJMHVOKzZSSU1vWVRsRlowbjlCTS9QTGlaMVJVaHFsMlJ3WWdOWWFaUlV5M1JqM21oVXdFQThYeUZuWmZvQlRYY0pRMy9QU214blkyenRKQXdoc0xaSmszbGFuRVlqRHJEaVFYYy9RbkpIaGdjRnJDNnVLMDFhU09CVTJJTVZqUXdoT1hPbklHQmwyOE5PcHEycktXUGJJMkFnbnE0d0VMRTRwZ1FhQ1U2NW1aSVJaZ0xXenIvNUdxMnRLT2ZmM3ZlTmR0ZWhQQ2tza1RDY3RSK1BUZ1M0U1NCUkZpd3ZVdlVLVVpNTEVuVVp6ODBwNlZCeVFhSm0vYms4UFYwd3VGS2lMc1BCUGdad1dGbVpPalhweFdPREtDV2djVCtsYkV1a1JnNWZ1MWVWUkhPN3lwYjZYTVFnQ2hoWWxjUE9GbExHaXlTQ1JJa3RkdGhSOXZHeWRaQW9mYWZKaTM0ZDc4Qnl1M3JtdloxbVBld3VUV3loWU1tb1ZjdlQ3WnJaeFBWVW1KK0hsMnl4NGxtVHJhNDd3ZmE3a0tHbkx3bGlZTFBjT1IyRUQza2ord2xsWFpQaDBJOWs1SFlhMlNDMWRiYWE1YXRLNVV4MjV4b2U5S1VaWnBSdWJ2Yk8wMll2ZERHTVppVEc0STVkZFpJTk15dk5VVFVZY3E2c2RpVk1IMDAzK2t3WVRheE8vVllsNnRXVjBoZDgzMlRxMDNTSzVsZTgvWkM3S21mZStNdXh3TVRBNCtjL2pBTHZ6amZlY3BvRUl5U1djVGMzRVBQUjZGUDIzOGpZb0VHL2hpakxIRGZRS2lzbXR4OGdDZ042TXI4ejVIejcyVWFCK3YyZnYvcml6amZYc081cHRLN1dhNWl5M3ZMMWc3OTlkdzFKRm9PK2V0QlgyMWNQRkRWOUdWOUx4djFCUS9xdjBja1JKWWlVeTY0ZTQwbmdKem1PZE92SWpZUU5IU05qUC82Z2VPakJkdy8rTXZwUEhBOHZIazh3VU9FZ1FnZUJkbEpIYmlhTENDOERvLzkrSW0xeDZ3azI2dDdIV1ZxTkkrYjMzMm9oN2hWRDd2S3VESEg0dmttSWUvbFpFZzROa3pJNzdaVmtPODlaaHdlR0VXdW9MMnNJc2U3M1pkMUhySHQ5V2ZjUTYyNWYxbDNFdXRPWGRRZXhidmRsM1Vhc3diNnNRY1R5OTJYNTlaSmU3QzJwTGlrbHZkNjNQaXgwL2FLOWZpNkZIWDAvdkJxWUhHVy9CT1c0YXBVV1Znek9rOUhKWjlLdzdxaHo4d3ptczBmakU0R09kUTl2K2Y0YW1CZ05QTE12UCt6TEQvdnl3Nzc4MFBwaVgzN0lWdXpMRHhGSzl1V0g3SUY5K1dGZmZ2aitCeTgvN0ZzT1hXcmZjaWhTKzVaRGsvNS92K1hvVmwvVHhpV3FoQ0czekx4WDZzR2kyczh4U0ZPcFJYSlZOWjRaU0JoMGZmellxdFRiTzJ0SUhjQnlRZGlnRjVzNlMyQUt4Y3V2c3grREpXQ3dMaGx1MVRMdFZBaFpCN0RjcXA2em80dFNMNVgzM1J5V0drTTBqOStZY0F4MHJjVEpNYjdjNXhoUWdpV2FYQ1oxZEdjcllTQ2VKbHY0b2s5Z0VETnBOdlRMcE5UbmFvVERvS3UyN1RieEt3K09xYnFTQjZhaXBEekNlQXN6SkZSZ1AyZ2NBUVpkVyt1a09VUDIwRzJSaElHNE51Y2VieU1XeDhEcmh5ZHNvK2ZHMFYyV2hHR1ZxMmZZOXExVlFhRXRZY1d4Ym5XbnZWazJmQ3RnSllSWUpOTzFCU09FQkt6NGpoU1czTGR4dzMwQy92MXVpOWlnVlk5YWxkNGhVTHNCRWhMTnFnVHJrOEdWRW5YbUZmdGViblJnNmJrVjl5UnBzamlzMk1qMkt2ME03TURBcXBZN0wyNDJ6VHE5bE1CQUhHK1F5Z0w3TWJoU29pUXVOMlplT3dsWVNVbWRoTmZuMWsxS29QV1pCSnVheW0yM2JCMGs5azdBM2duWU80R2JoYmk5RTlCWmYvdzdnUmNqRTZPQnlWZjJVc0JlQ3RoTGdkOTRLZkNySmY5ZnZ6YjQ3MXdLdUtrTVN4cnUvaHRkRGFEZ2xka2lXZHJGUEluYUN3SjdRV0F2Q093RmdjOWVFTmdMQW50Qm9FbnRCWUVxdFJjRXYvOEZRYXUrNms2aklyZkF3SkRpRWIzNHFGTUVCb21uc0VNT1VqcEZZSkRyRWdmdWNaU1dkblNXaENIWkpjUHRzeW12ZUt3VEpRd2FUelB0TlBxN0VJR0I2ZWxZTzQzL0JwUmpzbEJTSkNGMEJ5RXdoV0w4UGFMQTVHclhxYkFpV3pnRy9abzVaZHN2dDRyLzFBcGdhZlFCYmFTdzBWM01saDF0MmRHV0hXOFc0cmJzcUxQKytHWEhSeU1UaytQalkwclowUzFla2Eyb3RCUytQeE5BQXkvR0h3ODhlekwrY21EMDhjQ2RQejJaL1BtcGt1WlgyVVFqOHdlMGR0eVBQajRXZURTT2ZpV3kvOWxmbVh3NURyK2licnR0d1ZSRWtTMlkyb0twNXJIZitvcjYxOHVocERiZHFxekpyWkJRQXlobytoM0twdmFsdEMyRSttd2gxQlpDYlNIVUZrS2wxQlpDVmFrdGhLcFNXd2k5V1NIVVZzUTZNbHNSODltS21LMkkyWXJZdzF1K3g4OUh4bjU2cmhURWJJcTBLZEttU0pzaWJZcmtLZkwxZndDZW5aQVF1bVlBQUE9PSIsCiAgICBmaWx0ZXJfdXJsOiAie3tmbC7liafmg4V9fXt7Zmwu5Zyw5Yy6fX17e2ZsLuW5tOS7vX19e3tmbC7mmI7mmJ99fXt7Zmwu5a+85ryUfX17e2ZsLuS4i+i9vX19e3tmbC7osYbnk6N9fXt7Zmwu5o6S5bqPfX0vaWQvZnljbGFzcyIsCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICIubmF2YmFyLWl0ZW1zIGxpOmd0KDApOmx0KDEwKTthJiZUZXh0O2EmJmhyZWY7dHlwZS8oLio/KVxcLmh0bWwiLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDEsCiAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgIGpzOiAnJwogICAgICAgIH07CiAgICB9KSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICDmjqjojZA6ICIqIiwKICAgIOS4gOe6pzogImJvZHkmJmEubW9kdWxlLXBvc3Rlci1pdGVtLm1vZHVsZS1pdGVtO2EmJnRpdGxlOy5sYXp5bG9hZGVkJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0O2EmJmhyZWYiLAogICAg5LqM57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBraHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIFZPRCA9IHt9OwogICAgICAgIFZPRC52b2RfaWQgPSBpbnB1dDsKICAgICAgICBWT0Qudm9kX25hbWUgPSBwZGZoKGtodG1sLCAnaDEmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX3BpYyA9IHBkZmgoa2h0bWwsICdpbWcubHMtaXMtY2FjaGVkJiZkYXRhLW9yaWdpbmFsJyk7CiAgICAgICAgVk9ELnR5cGVfbmFtZSA9IHBkZmgoa2h0bWwsICcubW9kdWxlLWluZm8tdGFnLWxpbms6ZXEoMikmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSBwZGZoKGtodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW06ZXEoLTEpJiZUZXh0Jyk7CiAgICAgICAgVk9ELnZvZF95ZWFyID0gcGRmaChraHRtbCwgJy5tb2R1bGUtaW5mby10YWctbGluazplcSgwKSYmVGV4dCcpOwogICAgICAgIFZPRC52b2RfYXJlYSA9IHBkZmgoa2h0bWwsICcubW9kdWxlLWluZm8tdGFnLWxpbms6ZXEoMSkmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX2RpcmVjdG9yID0gcGRmaChraHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQ6ZXEoMCkmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX2FjdG9yID0gcGRmaChraHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQ6ZXEoMikmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX2NvbnRlbnQgPSBwZGZoKGtodG1sLCAnLnNob3ctZGVzYyYmVGV4dCcpOwoKICAgICAgICBsZXQga3RhYnMgPSBbXTsKICAgICAgICBsZXQgenhfdGFicyA9IHBkZmEoa2h0bWwsICcudGFiLWl0ZW0gc3BhbicpOwogICAgICAgIGlmICh6eF90YWJzLmxlbmd0aCAhPT0gMCkgewogICAgICAgICAgICB6eF90YWJzLm1hcCgoaXQpID0+IHsKICAgICAgICAgICAgICAgIHJldHVybiBrdGFicy5wdXNoKCflnKjnur8tJyArIHBkZmgoaXQsICdib2R5JiZUZXh0JykpCiAgICAgICAgICAgIH0pCiAgICAgICAgfTsKICAgICAgICBsZXQgeHpfdGFicyA9IHBkZmEoa2h0bWwsICcjcGxheVN3aXBlciYmLmRvd250YWItaXRlbScpOwogICAgICAgIGlmICh4el90YWJzLmxlbmd0aCAhPT0gMCkgewogICAgICAgICAgICB4el90YWJzLm1hcCgoaXQpID0+IHsKICAgICAgICAgICAgICAgIHJldHVybiBrdGFicy5wdXNoKCfno4HlipstJyArIHBkZmgoaXQsICdib2R5LS1zbWFsbCYmVGV4dCcpKQogICAgICAgICAgICB9KQogICAgICAgIH07CiAgICAgICAgVk9ELnZvZF9wbGF5X2Zyb20gPSBrdGFicy5qb2luKCckJCQnKTsKCiAgICAgICAgbGV0IGtsaXN0cyA9IFtdOwogICAgICAgIGxldCB6eF9wbGlzdHMgPSBwZGZhKGtodG1sLCAnLm1vZHVsZS1wbGF5LWxpc3QnKTsKICAgICAgICBsZXQgeHpfcGxpc3RzID0gcGRmYShraHRtbCwgJy5tb2R1bGUtcm93LW9uZScpOwogICAgICAgIGxldCBpID0gMDsKICAgICAgICBsZXQgaiA9IDA7CiAgICAgICAga3RhYnMuZm9yRWFjaCgodGFiKSA9PiB7CiAgICAgICAgICAgIGlmICgv5Zyo57q/Ly50ZXN0KHRhYikpIHsKICAgICAgICAgICAgICAgIGxldCB6eF9wbGlzdCA9IHBkZmEoenhfcGxpc3RzW2ldLCAnYScpLm1hcCgoaXQpID0+IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGRmaChpdCwgJ2EmJlRleHQnKSArICckJyArIHBkKGl0LCAnYSYmaHJlZicsIGlucHV0KQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICB6eF9wbGlzdCA9IHp4X3BsaXN0LmpvaW4oJyMnKTsKICAgICAgICAgICAgICAgIGtsaXN0cy5wdXNoKHp4X3BsaXN0KQogICAgICAgICAgICB9IGVsc2UgaWYgKC/no4HlipsvLnRlc3QodGFiKSkgewogICAgICAgICAgICAgICAgbGV0IHh6X3BsaXN0ID0gcGRmYSh4el9wbGlzdHNbal0sICdhLmJ0bi1kb3duJykubWFwKChpdCkgPT4gewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwZGZoKGl0LCAnYSYmdGl0bGUnKSArICckJyArIHBkZmgoaXQsICdhJiZocmVmJykKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaisrOwogICAgICAgICAgICAgICAgeHpfcGxpc3QgPSB4el9wbGlzdC5qb2luKCcjJyk7CiAgICAgICAgICAgICAgICBrbGlzdHMucHVzaCh4el9wbGlzdCkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIFZPRC52b2RfcGxheV91cmwgPSBrbGlzdHMuam9pbignJCQkJykKICAgIH0pLAogICAg5pCc57SiOiAiYm9keSYmLm1vZHVsZS1pdGVtOy5tb2R1bGUtY2FyZC1pdGVtLXRpdGxlJiZUZXh0Oy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmOy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQmJlRleHQiCn0=
\ No newline at end of file
diff --git a/drpy_js/rarbt[优].js b/drpy_js/rarbt[优].js
deleted file mode 100644
index 4402b31..0000000
--- a/drpy_js/rarbt[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/script直播[飞].js b/drpy_js/script直播[飞].js
deleted file mode 100644
index cf1dde0..0000000
--- a/drpy_js/script直播[飞].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/4VWTY/bRBi+91dYu1Vs0+w4SVdQJQRUoEKgsq26XRAKUTRrT+LZ9cd0Zpw2hUiIA1ygWkE5gUACCbhw6wG2EvwX1N3Qf8E7M87Gjp2Si5Pnfd7vD2eKucWziFh96+NLFnwklRHpWrbwOWVy8d2T869/Hzz/+Yeh3dTyMBUSxKGUTHQ972GIRMYI90MsUUSnJKdlPAKWN6E8Et545kdYiO3xjOHJkiEIBq0DzStB+FAF0DLQvYz6x/sav8DGNJKEl2ghwQHhopsnoT5bB4LwnesTksitrrWVHquQvauo3UatLc2aG10d2yjBsUq7kILBTSJ+SBMilhIW4dmIYS5AQ/KMGDTCD2dd6/KRQDLdl5wmE8dxrf5rhZjo2HK8j5ATX82ufRKzXddDkgjp0IRl0nULTM1WqGpM7qrVNGXV+PyCOrdIJMi6LnhSfUVaV2WBhMRcig+oDB37SKRJ16541GkQaTHgg+M1A5xA4j5Zajehb651xYTTq7UTyljbIfcylaYy61aZm/J8d//WnnHvKEMuAnRe0q5NvWiynEF9sIVKmrFw837SmMKov2x+nT/67d+vTlazGqSZHsBV/z3v2R+fLk5/BQ6K0wAi24mokDt+mkgM48MbDYMbmEoS92g8aTRwJM0Xwf1eDzcaISfj3M3S5AvHqqbUpQUFLaYWVG8j8tPYw4x6Yw6BedOOZ4J9Xefb77QaMmU38++tVmOMpymHYIXB2p0G4zTGfHYXT/raol3oqQolgDgGwzJ2GKX+sQBBpalG0ivtyHsfjm5ff/uG9Wo/V0QRSSYyXJ9XZVkVc7PdQW5qmLek3HrPi9KJYz//9u+z01/sK2VfJeY45Zaj3FEYIe2zbncCxDIROlVB4bIq3QEdogzOkzo6zVoyzMOKyjiZUnIfbuXdMIsP36CTeiVzq5adP9wJYQTbuyhIGaOpHyQoIdID0LNhE5bGaQA/7BoIqSulYHt7uyitRlPlbE5u7r54+8x7QN4hIoukE7illXx2+uX/b4PnWaqr0PiDOzfd0hRCgUTNcAIPUKOABIso7A/k4w5aa8Tb77xZT2yvEfcg93pmZ41pLm2BZcpe9a1K21bB22ePflw8fqru7yudFlPP3Wvm2dmFZ42eUgMX+q6qZo2UonG0wpSRdUwZNFjRKlhEsBA3sB86DpVNWImAPFhrQz6QwqyEjn6geUNl+bKaFioLw1AcDLOXSnvVv/dvvXXxJ2X5mabBSJ1XeMd3VQ2bFal5re9VRlHOGNkoVIqM+l3V7xqJevvD8Yxh18z/o/PTk38+/8Zurt2WC7LZy8Vnf5598VTRH/+l0zfTscGB1tH1O0ppAsNjr0ox75W24vzk+8WTn8DDSxDC/NJ/GZ/u39MJAAA=
\ No newline at end of file
diff --git a/drpy_js/vidhub.js b/drpy_js/vidhub.js
deleted file mode 100644
index 39bf9e4..0000000
--- a/drpy_js/vidhub.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/voflix.js b/drpy_js/voflix.js
deleted file mode 100644
index a39d071..0000000
--- a/drpy_js/voflix.js
+++ /dev/null
@@ -1 +0,0 @@
-dnii7ugd5nEoxGnGrkv4Tw9atCNAZurC3b1VnoGEaXApbhAJJQl++IQG23v2aZ/mQ7Xss/O0k1687cMbtNgDr0it5vD4MNAaT9Uqj9/edE+Ml1i8EXYTXzBmv8CcEzm6wQrCr4xy75jMG2T0fXJsI3s12xPeb1YI1CDJf+tMvBFs7Ec4tqz1BXDJ93p+BTRq18lXpTvVOwsckZjLKkugxnx4P318A9YBKmr16h8sE3c7wdxiqKJli2IX0L6eRwXLEEqZCbS3SBAOGETjYmx0QVqCzEVGOtmoe9zCSRHAVkFpG9WOyPf02H8d37pq2Szuq7fJiPtr/xcmXJXaT0AZ7tWrxUe/EpWXe+EdH9iGXjX+lagzOld9WeH/GyTvc8K9kHpaHOMa06WTLYnJuHHVQZ7i5RRG/bPTv4LNZG51yzi7byLAmGmt9okT0r2VUvGXozJ9m2JRLw3S80D+qV91Za+3MquxLXOQ5f3mUXjXSj0k+/VAcWNGmFnPOPzr+YWD5IH8lyNLpeodNtVpTfjxWhg812y2kldX2zbXI6qtXMk7NlNyZpJT5CKdV6/LIhJXMlgFhRZWQVeL9s3/eqTwmqrRI5Id+k5OxCiPfm073hpXv4S80VjQoE0J4bznd0nWUgz5Lhkdn4v+zyxK5RjefBpc6CoW2/2xcQ2G76g/qvGx2x6sCY8XIZmot9XW1dhhkAgN7GrCP2FtxyHngzNbwJLXXgQ5Nifbs0DhdjpPbwznv6PwKmnV/4dbvw8Jjdqa8vsp39jUmGCJuBq0nPbKrP+OPF0NZ9QY6KIfCJn3vbMUYuIW5RCrpcVjFQRJf17NI78p9xfrAV3PUrHM1wKBQF9pA+PjBUZCVS0BCEAXEu9ndkqmiut6KX+z2wVoO6EVQZpIQzOpFkHdsyJ7jVx9f5AUzqvifvZUmRpDkqfOgcX9EakIGBC/RdzTEzZNfl+rRYmrB6YaG/1lwX7Gy9Q+7vVuWLDbkPPyt5kz/NrsxpRn0jtXxXFpTxm8rznVOvT8LvhXXosGP/YoQZv+8++SgbAiF3+/ojm7v9HVmY+Dj/c1jfpzfS9DmIL0pIkBKAQjblAGjyT0ayjnrxv7GGZWu1wNSRHlurZS34vzT7gfMiLbOj33qt8qliYZC3RKqTP1BA/YBGkvJIxAYavf3nL6bTwIpTYvSjHaf/o65pbhFqfYIIc/bLv37QazJb8rfEvpmGK63yGTt+blQi9P6NpIZA==
\ No newline at end of file
diff --git a/drpy_js/xvideos涩涩[密].js b/drpy_js/xvideos涩涩[密].js
deleted file mode 100644
index cabf19e..0000000
--- a/drpy_js/xvideos涩涩[密].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/ӰTV.js b/drpy_js/ӰTV.js
deleted file mode 100644
index 54574e0..0000000
--- a/drpy_js/ӰTV.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAC0soWYC/51TzW4TMRC+8xQrIW2aUK/T0HJIxKFIHJBAXJqeKlXOerq28K4X2xuyRZV4AKj6AJy4tFckDqhS1Zfp32Nge52ySatI4Mva/ma+75sZ75SoSFUCopfR5yeRXYYbAcOoc3d5cX3xc2e3s+6vmdTG3jJjyiHGesrL5JBVvOZFlqS1rHCI00BUysZK2GDMCwqzpGQlnkqKGwiXJAN8UPvPJ4p7vYSZXIT06rFEU5eAObVJqSBatxnauQwIBaWHoRC3OmMNCm1nUJiO5X33/tWbt6/3x9sh42g9lJyDrGx5W/1+v7nyQvslUdr1YiJpHccJE0jnBZlGgo9IHO/AzLgvU3AwSnp4bW+PPuu2HQmec0u7GUhLQeo5p1EVhCByWFuNkHJzfHb37cSenZotHgmuzagR9KNxG0oMQVLxjBdEjBIFOVEf9LIjS8AN5EhXkwYKElRWE7Fg4er3l9vz0yXRpmC38zT/bCCoXZ1/9dx/hzJ/YY4+lQLNNNoYDOHj2kYXIcgDywN00F2owi2eZ4HHNXHJViuOgk4fFVytuLUSfbESfb4S3WyhLZ+pLIx9qvdW/QkZG/Qg1JCJDnFuG8ekBbqhzVH36LQfoxN+yqlto+CLP8DNyffbXz/mrfzvifs6nVuUVwaoJ0vR4N770R8wopcibQQAAA==
\ No newline at end of file
diff --git a/drpy_js/一个g影视.js b/drpy_js/一个g影视.js
deleted file mode 100644
index 6196161..0000000
--- a/drpy_js/一个g影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogIHRpdGxlOiAi5LiA5LiqZ+W9seinhiIsCiAg5qih5p2/OiAibXhwcm8iLAogIHRhYl9leGNsdWRlOiAi5o6S5bqPIiwKICBob3N0OiAiaHR0cHM6Ly95aWdlZy5wcm8iLAogIHVybDogIi92b2RzaG93L2Z5Y2xhc3NmeWZpbHRlci5odG1sIiwKICAvL3NlYXJjaFVybDogIiIsCiAgZmlsdGVyYWJsZTogMSwKICBmaWx0ZXI6ICJINHNJQUFBQUFBQUFBKzJaYTA4YlJ4U0cvNHMvVTJtWGhDVE50OXp2OTN1cWZJZ3FwRVp0VTZsSksxVVJFbURzR0FLMlFRVEh0YmsxM0VJeG1Fc3ByR3Y4Wnp5NzlyL28yblBPZThadFdWa3RWRXE3My9aNXo4N3NuRE03TzY5bVgwWHN5TW5QWGtXKzdQNGhjaktpQmhmZGFDelNFWG4rOU90dWs3OS8rdFYzM2MwYm56ZmsyRkk5dXRTUWZZajBkSkE2a2Zmdko1V0FZMTVpblRvUzRKamJsM1o3SnloR2dENkhscXJsUFBlcEFYMHVqcXJkRXZlcEFlMHdjQUU4TC9HdTZnenk4elJ3ckZaWVVNUExGQ1BBODRiV3ZETEhDSXh4ZXVNbEdXY0RFSnQvTGVNa3dGZ0tDOVc5R1I2TEJyU0xqOVd6SDdpZEJyU2JXdlpIenUwMHRGTlB0My9GbXhqbG1BYkVva051LzQ4YzA0RGNTeWtWMitIY05YQ3NQam5tdnB1bkdBSDZuSGhkRzNTNFR3M0liMi9WRy85RmxkYzVSVER1U00zVjNtTVdOU0NXakt2VUJzYzBZQllyYVg4T2VCWTFTRlh6N3VRb3F0b0V4QVlxM3MrY0NRRXFVQjcxU3ZtV0FiZElQVThhZDlJeXloZlZzR01zSSthMmx0SGNZajBiNTBGb1FLa1hzdTdPR3BkYWd4U3I2Tzd1b1ZoTndPRDNraXBYNW1GcndCUnR2cFVZQVFyNVpsMWlCR2lYbVhmeks5eE9BOFk1L1VIYUVjaTAveW94QWhsTDBSeExzYVhkU0ZFNUM5eE9BOW9OcFB4S3FRU3ZGbUZrTWwveFVnVnZNTXZKZ0dVSno3aHZLbjR6ckdKbTNCSGJycFo0WVJHWTAxNWJLOVNXZW1YYXdXMU5lNjdzMzgrZGF6Q21RV0lFbU5xTk9Za1JZQm95WlRXU2tiQ3dNVkZHV0lNeHdSSWpNRjRhSTZiQm1HQWpFdzFHQ2RWcVZFcllnSmFWczd0VkxaV05sY1BjVGdrN3JjNmpwRFV2RGYySTZFZE12VlAwVGxPM1JiZE4zUkxkTW5UN1UraitwYUdmRVAyRXFSOFgvYmlwSHhQOW1LbDNpZDVsNnBLdmJlWnJTNzYybWE4dCtkcG12cmJrYTV2NTJwS3ZmOWt5VVlXTXV6WmlUQlR6SHlZS3NqbFJwMGc0QmVVMEthZWhuQ0hsREpTenBKeUZjbzZVYzFET2szSWV5Z1ZTTGtDNVNNcEZLSmRJdVFUbE1pbVhvVndoNVFxVXE2UmNoWEtObEd0UXJwTnlIY29OVW01QXVVbktUU2kzU0xrRjVUWXB0NkhjSWVVT2xMdWszSVZ5ajVSN1VPNlRjaC9LQTFJZVFIbEl5a01vajBoNUJPVXhLWStoV0ovd0dtaDlVZHprbUhKUzhxS0FXMThVTjdOZHoyeEowSmRlUHZNYmNQZFZ4M0dMNHkzeEw1NjlmQ0dmeUxVQmxZaTN4Rjk4L3MyMzNZMnhQT21JZEI2WXlRMndKRUhHVXZzaTFiZXRvankrRnFrZEU2MVd0NVdERDZ1R05zM3B2aVk2eUp3R21lZ2creFZrRnF1N3MySy9DTVNBeHR3c3V4c0NQTzl0WEF3dmdXSE5wR1lFN2U3Wi84eXF4V1ArL2ZDU1RXakhBdjFkR3hka3VZSXQzdjYyS3REaVRSUjlGNlFtWjJIZ21VTkw5Q2RMZE1qVzVqOW1KYUJiWXAwczB6cFprcTlsNW10SlhwYVpseVY1V1daZWx1VGxYNFlXSmhKYW1JL1R3aHc1S0F0VDd4MzBGbnY1QTZmQjNJSUhwbzB0MkFlTWI3VlNLeWI0azZzQjdjWUs3aENmbkJESVJ6UG03ckFkSUpDUDdXWjFONDJQYlJPTUhhMytuc2RDZ0ppenJGYW5PS1lCejh0dEdHZE9HdEJ1Zk5yZHdwbWhCclRiMlhFVHFhb3pKbWRITFJMcXNQV1RiMnE0RGhyUXgzcC9yVytZVzJ2NFYreUdieUY4czRCaE44SFl0Zng5VEhhdEJpQzJzdWlYbG1NYXdnMDgzTUFqaDdlQlM3NldtVys0c1VmQ2pmMy91TEVmUGFpTlBXanpEdnBaNWtVTHRWazJCQVRvTTdua3BmbHZCQUZpNlNsdkJUK1ROTWhldGYvUHExcDZzcGJrY3hJQzlEa3pxM0w0UUd0QW53SG5HRzdlTVg2SWFjRHpBbjRIQlozWnFLSmZwaTErbmdZek5yOXB4SHhBUGVmMnFyL3hqelFDdEV0T3EwU08yMm1ROTJoREZkZ01FYURQM0pDYlpWTkRJSFZaVjVVTTZ0SUVZMU03eFBPUFhMbnE0TEJLZzdIVDdudFc4WmVtbzgwQmg0WWtOQ1NoSVFrTlNXaElEczJRZEptR0pIeDF3MWYzWTNsMWUzNEg4MlExSmM0bUFBQT0iLAogIGZpbHRlcl91cmw6ICIte3tmbC7lnLDljLp9fS17e2ZsLuaOkuW6j319LXt7Zmwu5Ymn5oOFfX0te3tmbC7or63oqIB9fS17e2ZsLuWtl+avjX19LS0tZnlwYWdlLS0te3tmbC7lubTku719fSIsCiAgZmlsdGVyX2RlZjogIiIsCiAgaGVhZGVyczogewogICAgIlVzZXItQWdlbnQiOiAiTU9CSUxFX1VBIgogIH0sCiAgdGltZW91dDogNTAwMCwKICBjbGFzc19wYXJzZTogIi5uYXZiYXItaXRlbXMgbGk7YSYmVGV4dDthJiZocmVmOyhcXGQrKSIsCiAg5LqM57qnOiB7CiAgICAgICAgICAgICAgICB0aXRsZTogJ2gxJiZUZXh0Oy5tb2R1bGUtaW5mby10YWctbGluazplcSgtMSkmJlRleHQnLAogICAgICAgICAgICAgICAgaW1nOiAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsfHxkYXRhLXNyY3x8c3JjJywKICAgICAgICAgICAgICAgIGRlc2M6ICcubW9kdWxlLWluZm8taXRlbTplcSgtMSktLXNwYW4mJlRleHQ7Lm1vZHVsZS1pbmZvLXRhZy1saW5rJiZUZXh0Oy5tb2R1bGUtaW5mby10YWctbGluazplcSgxKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbTplcSgzKS0tc3BhbiYmVGV4dDsubW9kdWxlLWluZm8taXRlbTplcSgxKS0tc3BhbiYmVGV4dCcsCiAgICAgICAgICAgICAgICBjb250ZW50OiAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbiYmVGV4dCcsCiAgICAgICAgICAgICAgICB0YWJzOiAnLm1vZHVsZS10YWItaXRlbScsCiAgICAgICAgICAgICAgICBsaXN0czogJy5tb2R1bGUtcGxheS1saXN0OmVxKCNpZCkgYScsCiAgICAgICAgICAgICAgICB0YWJfdGV4dDogJ2Rpdi0tc21hbGwmJlRleHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICDmkJzntKI6ICdib2R5IC5tb2R1bGUtaXRlbTsubW9kdWxlLWNhcmQtaXRlbS10aXRsZSYmVGV4dDsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZjsubW9kdWxlLWNhcmQtaXRlbS1pbmZvJiZUZXh0JywKICAgICAgICB9
\ No newline at end of file
diff --git a/drpy_js/一号影院[搜].js b/drpy_js/一号影院[搜].js
deleted file mode 100644
index 67c8819..0000000
--- a/drpy_js/一号影院[搜].js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCiAgICAvLyBsaXN0X3VybF9wcmVmaXg6ICdwdXNoOi8vJywKfSk7CnZhciBydWxlID0gewogICAg5qih5p2/OiAnbXhwcm8nLAogICAgdGl0bGU6ICfkuIDlj7flvbHpmaI1JywKICAgIGhvc3Q6ICdodHRwczovLzAwMS5wbScsCiAgICBjYXRlX2V4Y2x1ZGU6ICfku4rml6Xmm7TmlrAnLAogICAgdXJsOiAnL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC9hamF4L3N1Z2dlc3Q/bWlkPTEmd2Q9KionLAogICAgZGV0YWlsVXJsOiAnL2luZGV4LnBocC92b2QvZGV0YWlsL2lkL2Z5aWQuaHRtbCcsCiAgICBjbGFzc19wYXJzZTogJy5uYXZiYXItaXRlbXMgbGk6Z3QoMCk6bHQoOCk7YSYmVGV4dDthJiZocmVmOy4qLyhcXGQrKScsCiAgICB0YWJfZXhjbHVkZTogJ+aOkuW6jycsCiAgICDmkJzntKI6ICdqc29uOmxpc3Q7bmFtZTtwaWM7ZW47aWQnLAogICAgfQ==
\ No newline at end of file
diff --git a/drpy_js/一支穿云箭.js b/drpy_js/一支穿云箭.js
deleted file mode 100644
index 9faa600..0000000
--- a/drpy_js/一支穿云箭.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/一曲肝肠断.js b/drpy_js/一曲肝肠断.js
deleted file mode 100644
index 8132f41..0000000
--- a/drpy_js/一曲肝肠断.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/一点视频[密].js b/drpy_js/一点视频[密].js
deleted file mode 100644
index 2b013d7..0000000
--- a/drpy_js/一点视频[密].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+S4gOeCueinhumikScsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuMWF2Lm1lJywKICAgIHVybDogJy92b2R0eXBlL2Z5Y2xhc3MtZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3ZvZHNlYXJjaC8qKi0vcGFnZS9meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAwLAogICAgY2xhc3NfbmFtZTogJ+WbveS6p+inhumikSblm73kuqfoh6rmi40m5Zu95Lqn5YG35ouNJuaOouiKseezu+WIlyblm73kuqfkuLvmkq0m5a2m55Sf5aup5aa5JuS6uuWmu+WwkeWmhybmuK/lj7DpnZPlpbMm5piO5pif5o2i6IS4Jue9kee6oum7keaWmSblm73kuqfnvqTkuqQm5Zu95Lqn5Lmx5LymJum6u+ixhuS8oOWqkibnu7/luL3mjaLlprsm5Zu95Lqn5Lq65aaWJuS6mua0suiJsuaDhSbml6Xpn6nml6DnoIEm5qyn576O5peg56CBJuS4reaWh+Wtl+W5lSbkuInnuqfnlLXlvbEm5oiQ5Lq65Yqo5ryrJuerpeminOW3qOS5sybnvo7ohb/kuJ3oopwm54af5aWz5Lq65aa7JuWwkeWls+iQneiOiSblvLrlpbjkubHkvKYm5Y+j5Lqk576k5LqkJywgLy/pnZnmgIHliIbnsbvlkI3np7Dmi7zmjqUKICAgIGNsYXNzX3VybDogJzEmMiYzJjQmNSY2JjcmOCY5JjEwJjEyJjEzJjExJjE0JjE1JjE2JjE3JjE4JjIwJjIxJjIyJjIzJjI0JjI1JjI2JjI3JjI4JywgLy/pnZnmgIHliIbnsbvmoIfor4bmi7zmjqUKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnJywKICAgIGRvdWJsZTogdHJ1ZSwKICAgIOS4gOe6pzogJy52aWRlby13cmFwcGVyJiZhO2EmJnRpdGxlO2ltZyYmc3JjOy5udW1iZXImJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6ICcqJywKICAgIOaQnOe0ojogJy52aWRlby13cmFwcGVyJiZhO2EmJnRpdGxlO2ltZyYmc3JjOy5udW1iZXImJlRleHQ7YSYmaHJlZicsCn0=
\ No newline at end of file
diff --git a/drpy_js/一起看.js b/drpy_js/一起看.js
deleted file mode 100644
index 07134c3..0000000
--- a/drpy_js/一起看.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/一起看[优].js b/drpy_js/一起看[优].js
deleted file mode 100644
index 828e435..0000000
--- a/drpy_js/一起看[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/七年影视.js b/drpy_js/七年影视.js
deleted file mode 100644
index ba60903..0000000
--- a/drpy_js/七年影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/七新电影网.js b/drpy_js/七新电影网.js
deleted file mode 100644
index 217636f..0000000
--- a/drpy_js/七新电影网.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/七色番[漫].js b/drpy_js/七色番[漫].js
deleted file mode 100644
index a0b5cb5..0000000
--- a/drpy_js/七色番[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/三集电影[自动].js b/drpy_js/三集电影[自动].js
deleted file mode 100644
index 5b041e4..0000000
--- a/drpy_js/三集电影[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/4VTy24TMRTd8xVWhTIzJbEF3aCJAit+gMeqrSJn7GRcPGPXvpOHSLYgEAsW3UEXZUPFAgkJJKiE+jNpAn+B5xF1kgjqxYx9fc655869M6QGmUxy1EEvbiG3Fudni9PLEHm/X32+enPuNWvR+eWXxcnPEN0+shjUEzAiHfh+gDoPKnK+kqxHU1yy8fzi7fLiEwbasy6DhxPFXLKWO7cE8ASvNl77Jn4X+BhyDSaGrZZNqJSNxlMXq6izoHQKAiR39uc/Xv95/3J58v3q19f9Uu2wKiZWFhwiBtA2JGQ0GuG9IzbBkUoqRGakAxCRMj7GOtZkqBiBieZEMNKfRJJai2NIZIUvAl1Njc1T45QOe9QUhVkkRTgA/24QSvDvB21aus7fseH9NvEPDtidoK5mOTVR/GzTg7G2Oo0T+XDEOru7q+68+7D89vGGvkgOKE/ivqHhxxm34ItUZxC01yCl6Q7SrE/9HN9EnsvcaBRtqoEJQVIN/AK/ocEcf//wOlZgcF+ZRzSKHWPdWIlwFAHYcC1pxH1StHEqRfp8SjOIlZnqrMco8CnjNjJCg1ApGThzum5q5cA1sKwhT5eDQn7selBNzAaBYZ3Z2F93VJulmsxKoLmFLUbGPbZvcsPhppe94N9SkUqBp7DFufcfjhZRt7Cws7N+OasVW99bDo+5zdxQsuD6D5r9BWlL0cwQBAAA
\ No newline at end of file
diff --git a/drpy_js/世纪DJ音乐网[听].js b/drpy_js/世纪DJ音乐网[听].js
deleted file mode 100644
index ce24b19..0000000
--- a/drpy_js/世纪DJ音乐网[听].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/两个BT.js b/drpy_js/两个BT.js
deleted file mode 100644
index 1a8270a..0000000
--- a/drpy_js/两个BT.js
+++ /dev/null
@@ -1 +0,0 @@
-PjaEUdFRi0YSbm/twHCzcOGSsniCSyXfkXyQcHSbvsGZZAWHH2zvOEiJQU9Y3Tj+EAA2RtsawBUuG+a2xt3sTj4bpn+cx+mugl4o1nX8LA8Yr/08RP4ML0vRPYR9KRrH1eP4FTMghVhmakBZWxTfc7NgQfrfnINaLPyG2o22Fc+97Lfz169IOEVHR7kDC9U9Biz5UkuME2QtsBlPHxOYP0IeQaEJ/1tUV7axrSsmbHKI7cH0EzZPD0TsOZiaQZeqAWuIpwbI6HZ9cEuEdneCH0rApm0vyB7DtmqPdbEU19yRrDpzSIRjw0Q7JBr2c2N9V602jLWyT116jI3nYv4zwCJX1C9UYzJuiE5/s407/kJRO7IzCrhcwjdJBYGsQs5dUojsHHoECQCKx7ag6cZkiEo8yr9lXCgpDjzXuixxptFlImZ4StEW2PlV5WtZynZJUKAFwDXMtd04TSkV/TRgPOjUzD+DwKNXB3Jh9hQCSfHnjdfaniz/VEN6A2YfAVeX1EpGz1YSWMtkfULOUATW1rVZnH4k68dg4MvL+QAzqJtwWkxdO1E5umwxy5W8keNWumiLKVy8pJc0VDMIbb8QjGP4KGejfvLJaPEXWiZHs/V3fH+LlZigik5+aZF4OmAYXA7BSdlCawlkDzKxdYoDkdT0KE7xi5BqVyAG3hA1FkKiIEq9UrQrjsJGUzoG6U16sw5E3K1w1TvwdtivA1uUWWya0CDfsmrdIYNCqq69X1ZYasf1N4qJCD7bRzBqOyXgbgKQsI6EWupoNNatvY1xHcPj53UxH/dAKYhH3l3EiQk3gnxXd8VunZck4CL9hKmsVjSlWQxN/K5vxz2rvR1n5HyvJO7dRouXj9F60zBICi4MZLs76hUl3vBaC7FHGxs4UTod3NRgCy8qQvbIpQm07K0DwVllta1dsS+44TA5htGaEL7RcpFXDdDkPJr5v92r+wklekRW+PULzCVDUSVMIjB7xzzECAL/67okdq90Elgawgp1PNx+CcUA2rq4IetX+Z2SJfW8FpWkApQImRtFoPFCSxJqFLxmYwLm8ypjTKYjH7tz01AOSI29r+CtZuAOqfDqf+jauiYYW9gmfFyO3+RqoUbOmaDE6+3dmVjxx+YMMQCFMMC2STgqevBr3oeA6AjtDhSJWx7kEJJM2fZ3bL86g1wfOvtUQfZXWJ20CcD4My20wD9Aa1sOYQMrfbcfyHoyFhWe3mYvnKHvnSI8mRbvk5pdPw2ndug+ipFUoWcSvDwGtQiB6D9Edfz0rbUGYBgT2kYihpncGUB4jVIr57UNtQ0QgDOdFpbSA753WLNKDAW90efuFvYPEMNwJZU7c/Q4QdEKaX/XuJkQzcK6x5quddSZU2/d1jYbMUugDopdxGNL7kuaZHpBcqB4RPzqSXmlg5xCgO5owRkvSovjN10C4Wjm7WN2qnfIxcZdI1sZhQP+mE2oqlrVGWeRKmBdbogsbMRDD/gVsC8tqNgLfWMPIQBbGJLBOAbvj4n6h9xsu+EUMHFfYz6IGDyiZWgJJVY3n7q6VjZKdL5k3p6X8LqiP/9ZTFXHFLSdyPSal91yBkJ4uFI1kpyld+Jxj0is0emNgXJvukNU/mwBx5j+6h6bl0VukcQn0DsD8rQ6EXgPLqLw8eStMuQUoh3JB0JQCZOf5b/JsO8YiFMTIpEhDOybJQgj6pY9LLipU0IltCjTwoffCKmzZnNPumLx8ggFKffQVHTT/t6h7XAZB7gdRuLp1wAtzWA0iBrcFtPSE2GhehMRgVObmUxrr181XZwtGc0U5FjSEcTbYi+UyIISUTQaZi+AL4DDWPDsUr+ptJJ6e8JEVnxKRqKJaTlWuCuHwIUmWpbxHkKS9BT2ZOKiId89V0j8UK0Rxj4Fh934hRNpg5d5mY/BdmUOcYeuLeP+Txe78b8+gm6LimoI5oBdTaOU78nSAgrORnNUx/Ln6PPcIzHdCrLF/zMt9HgzUjhDYO+uzprDBMR+692wT5pVqyTmq9zG5CVLoic+jACaRfsMpPc1VoCWCTmaSoqeKtjoIUyxDTUHTC/MGg6YFEae/y1pBHyktx+JBIjvhcPNoQ7prnhPFxJ0HyT54ehex/PSd3WVFJxVvJp5mZqite4l8OTKICIbL6s5mdqNMaX2A1H8f574cmdUEdrwAKB5KgzFaAnzl75evUWcE2wPyT6SCs+Evd1E2+lheYsfPn6152xGcSEOIr1mLMmjMUktcORSgV51o8mmnbertv0t/I2zx9MfxE76CLosew3Dq/0FG58E8lXr9/G1IyF/JGruTbWjf4/xNNYgGlIL+8n+VrrOE9YnmVaBNvcTr+aJ5Q+Z3Bo9neNrSU+Cm09kuIecYMGPiInBOM/fLWk8UlffG2p7TnLd00S+u0gBC57KSh1sBGK9RNV9KiK8kZ83faEAj3+oYqaV48ne1Q0HazepXlROLebv9HB0CrSxQ++9yjFO0ZkenSCFS9NcFbv4cYFvfBou6RpcQvWnpTZmaBoOG9MUudJjUQYKQZ3TCa0L7YQ6HEuxzFORnOuxRQc9OJEKOs4AVL9Txz0nT39l0zxJZuxoskuS8CbUtcEXteck2fwHt1IOqTK7yiEl1Y6I0XJEvw0oAsI7ruyIcvcgnJ+NQcl8xH3gMQzqYKKp23zCp0q+d4He7gHpjAuzGDyLAn62sqsQBb5xmc5sk06JjUhO96EOVN2DQQQHkuXghwuWtvuZHSBTBKLjq4IayjJkw53mtsbsnDDlGjVw/ABuIWFd8MlHKDcONAHfd3o2zYGh9+LGXlCMyN8BEnBuO8CPyqxZKZyKDdjhZi2mKHinVB7RYXx0P4vPYThvcqQUojwMeF+RdyApuZDquATi6+mx9yewZm7vdMWbJ3LN7mpVaMDWKauvLMTlhXNG1CqO6ra7XC1wFuQuvzHtv3ujNld5Mzxp3PLD7xTp7FUFKzSQZwVlpjC75CKk2RMTrDItmIEJMzSUpc7WCQPmgO7m36Yr+2OI2+VK5nfrC40bRlohYtXupHPtlS1VlURGNMwVcfiRVNW4gvHdt6+e4jFBDT9R/sq4N6O9AQ9tvXvn7kH3uz+N+5uw3zrD37q0jPTFyYildns+gx4DrmEzDYZEtfJ01bjQrJhoRlr49LgEs6fOZ848txfvwwoZaqz+YjA6sW4/G3JuviKzBtibiSJ8hwrGQNThhWLGdiTXZWNFHP68tiBdNHLhLq90DBVOzvZzGjPR4nvuT6dvV5okH1Py+89csYMpHzpmiRulS2Go7RYuvJgMpfSrJ1FNT8KHE2zFTmmPpflUGHJlRdGalWMRVifRwqEW+mwClQ7mAYgyefYDPSJymP/2MWIp4ajw12v0pFQrwBJcceLXFftt41KR3FUst+qz6w4mN0ZEsgEcAyCWc/LQHiXZ0SMqP9xX9EtAGqnbfMLWVP7gIoobDi09T0P9cTwQEFe+eV2fO8FI/riMjHVcv0VkEX3f8DH/OF3UHLtiS6rcn9L+LCMg1MBsz6jL6x3LTBiGZ0W5RV05oOiJK1d5xseg1IIYGRkERq9ya4NjUwn1NO4mfr+WumM57Bu/muytUnukfIMaPeIYz+lMpiefzqG5owySsiNLZiJNbxCelYh58KLQy9s6YSTOsyPtKkqWSgFAgfU+V1rKKlbmhgdxRoX+wSBofcOEGhMYu7EF4UUy/+qGYlWVpOsQG+Ezkl3JIK9V6WW3PEzzFEl/kggy6O+/3ezV6Hgi8E8JyYVqBAZr2JNMM3OUE//dt3lIbjq5HnmYnAq9XenzxuMbszFufi4CSQk75iKZuIuPQl39Eh8gGBh+NxOCE2ya2m0NXV3tjvTpXiSq74ji74bZPc+Fyn59gVHz+hDh8yJ81kvksgJrnTfBrcq3ih3qG7JGucge2M+3TNEgjkZxJLmIlk5N7rFHItoUMq753WftM5nGaHZm7xYV7c3fTz1TZKtcsTr7bn1QXUJUMGclp02VcHwInciGYzMr+1lSt4OtuvTlq1UV8Q1yHS6Lehk4fIBK9gJYk+5Zbkl4LFxG5yOiXcuciy+/8Tkni6olnn7P+HA4ZKArRKLulocOKmgrdOE2TpzQKgHelV27Jlop5louNjV9/pvRYGfYQFUhJFbOf51gktemSVH6q0FRWl/HGMypb0fwgnQTqzV53ywJ50p4cpog8yw2HcOCvQUvJwcYKglI3uHfzyhn/dhN8SeDZPkeFHDRhX1bxxp0M+02Gqyuj5u/hTyyWnp7ddyq+dhJiahodFzDCj0qYYSsPze5jCJrsyoV3tRCoLupYrZTt3V5leQO9+Vz++zV7DRFouwm2rXSLWbgLhLBZOUGAoWz88XRTHSNvFUw3g/MjQ1UFQ/ebFdasAgqxK9H0L6ajgeOiERZvon1vV5KfycwLhvjc6liGBy4Yf1jht4nx/IYsHA08+aCLQvPCCCgACO9x5DBUFiPScOibLtAxWlIeZg31vnDBcZnznyPg3GDSlYFtQRyHtYMKWDAYK+oIHIqYI/1LingjJsGVTsMiuKRW4/21oMCGylfsXlfFo8R9NfKyNJYnUnMYanP9G4fmoorzCYuIAzldI3ITIGxPFGUIIAlc6kgMUZa447xN3jY42+A5MgsOIDhaSP/YntDS9JeHOp16YXKiDJKOgcvxmnBaUpRkaU4XDfEobZDcxuXzSIzgx7qSwAn2aElK5jCRT2QPU70YdBFrXNsz3x9xK1XiFJ5XTq44JeQjKr5tLJzclOP7+MgN+Lrm7wOA6pd9ur9a6/mEQnj4LymNvPGeQDUFaX9ygawkrXADI7ypnDGOyYMIDd3jId9vgjp7cblG5Q1anGzgd3D2DzeDdeyjU7A4OfUuEpbf2l4EoFA0g3uN34pZYXa52JBS2ySfpNLgTbPbzKcyxqwlblgB+pnryAEVbYxMuplUAPYSf+H2ThZQ6iu1iZVxo6mGKOuHprX5jVZEfj+PuQoq2AxYsY9HwhHwPuvBX8tWO2vGF5Cv86Cx3h70nOtuYQNEQqUTSbHvQ5erJFqJ6GE9n5Y880tmeh/cQA4KJbmcv+kItWnWGArKovNbQhqpKGEtI6aj3z4CjMxc50xLM1vLN8gf6Dyao8ozZuVf8LbEq0SusgyTZ4w9wXqvQpA7fzgLjkr+a6jVBfTcBXsdzBXIRBTPOxi039IiVRfl4T5SMnRAwvqKFV5mNqIdHLgz/RgiYw6Sim3Jzc0pvz1A+wXJZNZkDg/R6p2UYwlRq0VANxU7YuwAcdRxLrvqUCw7JAEl/NFzaY+JKZgK1sz3mjVBsA1pfZU733K0J/pwVCt8n65bX1L5srxogEfdTU/FlE5JBuNjxA/fpGHbFzAfzOPuVP/N0A7AxW77pIBJQ/aa9X+G4Jh8skgj/XtPwsgRWEiZieJvE69+cYF9UJQHkDilTLMahheWuWFVXt/KhbxcOwKWHfI51P4EhaIQBplQ+rnVxNSw9CGpEWErDfkmglGHHb9vQf5weXGzxVj9y+kq4p5azIdwNa6JLZq3pzp4soceIhXK7Yp7s7+XUw7aX3guNbJHhiKvF+d/rNd3B1ITblCsMqH1rVCjMZVoR3q+xAJO7Q1cZy1W/82HKUcQrrJOmrAxFjVvjWBW4EBd5V2ed2iTQvpHk4TXaqDAM2i/l6y6gmT4DACnTunbOGJA4k/W7w+Sihif9ck8ylzA9ZYslrI4J4rTsQndWuQCE9xgBOCOAgxMRyf5q8ZdZ7YdS3WHYQHEKOgzzTQvA6mbsfASFQcrs5YU1e4ABxCBCOo0VeK2jAs2EMcynHl2QpfbMmHocBAA+dXtA3ro0wrxwV2N1Jg3HjfM4To4ztZu5/qQ13bEI0xCbXhI/rszdlfs6VkbHvtUKwKrwsCc/rgOtEjDwQpV1iBVQ1YdEF4M9VkLRmB4yfiNq+t/PzIepbAkySESWp23FsphXqRJp0IbkLiF44naA6zqPPkA3dbmb35afaARo+QNpdnV9OYNiLQIrSLLwpgSDQkFFhxl3Jq5dT9ZaQhd6t6fP3C98qOXDVSqPE0AfcFOyLWSk6T0kvFJGuKcv7LwJo7hjPa7TJd1fX/GrOUOhgcQSedeIxjMseV2W2OtsR+G6tgOZDPgE+99yQOHq1oFZwCJXjfQSiVCRJz+pHO+/R3KvOb0x0h+7Fr4NHrQXQv5vnqNe+1FWyk6xeGZvLDl2ROKXnuPbTGmJfC2+I0KSKB2biV5NiGXs6PMumVtrInt+b44JUFmkpsKphy9YLbiPAytyKtVvfZpOpwwQLKeDG/zC1VVkYdzgDxqv5qWCrjaUcLzf0pCswW580epy0/tpflvqKFsrDQ9MU6X89MERVMNAz09nkWhmvm8odkOTdDzjALLhz+IuITfP/GvAJygRUKiGx+0PYp/Jo4lmNCB5CK2AVO7Vraa//ajWmJw8GT/xIM5bj7ZPtFzaEGH6wAdTZ4VfqCyYx8TNA3OVX1eGE8RJE0shlvXV3zF8yrwS9JbKwTMnra6/XsExOzMsoGSKYAVza8pQfSuZVzjvTCiVYNQB0ELT0kS9OPiFwjlVXGiDUWsCyRpZ25IclEeJnvgNQGIWWViAokvzQlLypKtQGvuBl4G22rh+XLcN5PXiiAZi798uGD0Rlg/3W+/rfr5FWxq57M+agL3qcd8X87T+DVDYZzKQEXC3LmJUXMKLTa/LdPHx2QPrpFraz3w0T50XOBberF4G65YgVCqXMapkrdkMJ7rTVDCgdTM248ZbM5JsEg+C1zbTbfw45+7ZoIwqyS4FnSpbVTS1Ia+8Q+UrUBvKPhcUyUlc0P5vDRN4v53rn/H+pdGKsYCj5EycYS9Wi4kRtMnYbSO4tdMBxQ2ew/XpOdN+txP1WMFuTxDAoRPh9cL5hEPMeO3JKJ2UEFkswe90rOYgydzYn2xPtMRT+QKv1K76//E4K2mRL87jKkJNxI5iuaxct/Ib1hKLcHAZ/HfWai2hskwumFt05md1OCOoEf/D7rMdiV9U3yJarf9eXyteDSbuAW7b6nRtSEXARiiMRPqxQ6MekFFShZwK9PF5aqoJPLthUwGG/bedl+l+NFXa8JVSWXITty8JNBVQfNcjcbD8Dd3bhzWPX138S7OqPhkVOp/K71/KRZdPfOAoa4nmtewUvAEun2IIUzWmPHm+0YdMHCKH4kw14uizh0iOPVwPunRRKX5bP15Z1J06WWnF9lQ863/SLziijV7aNTfXYuV1iTOpoQrOkZ7wBiEu5fnJ9Zpws2qoRNFDuSaBIv5maIg5cqEZzicTRgzZ4LQpaHPoHTAx7WEPrqnYd0oaLN5qSvSqIHd5O6NHwahr5DapVk3xA9dtrp/XIpdHcyn0x95vQN3+dMQShe9jguiQdNpMO+iUyIINZ+rsPctODK1xLPaZPzZDWzb9fvT/aUeCdfQLtp2KRlbMKtpJNaCEQ35Wag7OWRfMq7X6L/wxgDP6KDYyUU4pchdhITzUi4gWZPcZ9V2zvZqnFY7hVHZCJVXvkpQ+DUv1sVDgoSYhzP0gasEJUeU2hFkQ+rAQGME/lldLeRfGQKloT3VMq+5/LJa6gCSBZCIhGi2YAQ9m0Lk0QhmMBY5tpW3kbpkp0B/QXOr5bn7lOx7am8m/FWM3mpLyBE52eXa/GD8L1+U+fN0jb0FnGH86E195C7QJ/5S//O7fFoRLVTm8DETvbZPs1YMl8Krxoar8RhE3iNseZcEh2DC0AgW4TaIaADdEvFT3jivvU6iuhu1eVrHEh0MMX4N4c1EWdEpqcN0ptlbk+D48eXwL+QGmRGjFmcdIzdMljy41njWaHr6X9cp6ttUA0BofDP5CERjoP1HedymCoq+ziYphwJCKS4BZXCmE+akUDZILSW815Dp8ILBkmdosp3B7Qz1z2oTgegFqM6WAWwKm+Sx4CFhB27OslqtrSG8EW1+H6wHcOemEZjBdo9u74/AjXzIs22SF2rmcUC8kRnZilYOb7gL/jbYtqdjahmNaoigQUp1H6T9QFdmLjkAbAnpfg/BB1e9O5bUwtjnVt56EDKwyQtYBGLorEiCcn9TZqQ6jD92EzWQHHf48t+fvtrp1UDHvC+60cRVLhLPjanex8lCzzNHEmnG8E5Euyp/A0ziYs3TbwNI6Z4AIWvhrjo9Xl0gswBgHEN5NuRTQar6ogHd3XPkQucouskQvRMiNeDU1DLpp7W/Mh+zF2LNC+YSs49j94RzSiBV9UK7lsMwqmTrk+FIdZ2mGSrMTzzAzIv5uZ1dBTpgt/Zo/2VEQUYaKMuW7K7R5wGBm8V74bl1KqtwLaT99qws2F645V4qrFmOChy57+cXAKEdEr3tHwBs030NpFdh5JYUNs7mWbjgaY/oqJvwrda8w14FPcvomNOdfL9//xftlQLGmmM2EJeakQV7Phu/cjHrX03M64JwOWJVwv5yW0HnPxnoXL4Y+V2UcYEsxdPo32Bm3OjLycbK18dgrYasTAuK2yYZJWSvtNBET6XSRKGevYykV9uTPs6dyELDHpV9w2z6+9e1nLJ3CsQybb93l9CUBQCdIzXIAeZBE944enYIgZO57uH2R1yb/XWdwpB1wt+8eYOMLir/EqbmmTfeGzyPEMd7642KNrE6MLFLyTF96fo6irWpzAk8aj8yZ9fNI2ieY0/efeDcD5kRdbTX6QB4edK96gpnkPeSh3scYLRJfjP9XQLWuzviLEnj+RsCXL0cZ4QNfxJzd/YA6isYw6GD935GN77lIKZHVwhBOTcRYagfM0pqojM/ipXBqfqjxep4HNa3KdNL1maLOOZSgbpohGJleLRFDPj+bnV+Vycp/ppQwlErjnd0sI4bFYP75kuBh7VQ/eovX/Zdi1QQGXk0miLqownHGp4JIdkX6cFdLiP/9kObjNDCoY6lFjaaaSUX1HCD7RQbf1qKbcepWnYEdlKPcghG1ijUFBHk7yWRzYq/pwtpmpErnZJEHHWPsJexTFn/sUp+hwalwzAS6mSSOrQeamnKvtyc9Bv+CCAloARCxiUyDKs2m/BPTL0lxPcD6C90s/wEWYh1wMWgPmMfQ9q3HJ523b4NoIjH7s3Oc3G7QHwRTDcD5XAsN/Z1vD1Hquuc34mr5V9gq3DkIMmhODBjbfpwzwNDuakH77F8jcVAQEjybgquTEUv+KLf8mDazjVMd1NrbyU5p3zjf46P9SpS6gnN8/uxTN7ou0ZT7G+qEnEeh5Dfvg6FMPK4A6GarPs+bMdO+dnG5MRCKBPwLjJqSKfyPsFyNFmpiClrhVyGa2/2+UvS6JvDPbZGFzAlmB1eczBf6fC7K66sQDZc18haBONTe1NUqg4s6tBhwzj0dLpIPlEATUpCRNp1NcfEsfWCuRNEMd2WeEqotBZONiY0vgUK6uBfk1KXD3d4WRIpkPJM/lSNWfXrDvjL0Wr7wX5DAzZ1qPmKhAgx7z1YKLWG2dbCYMCVfR7mpoxNS+GP26h57LDiPI/MaU7yWL91mtge0G0RrYx+UhX0ziSVe+e1PK6n+0gyj2eDcb1ot3VrdvmI1RGS7TGg7AL1EYhASQ7aAimdEvTpaGfhJR+PqzIJ4iRJ9D4+1DJt4msUhrDp5NpAZ4/pkG1GIPwhslQ39zDCqjaMwbmvtz0I+xYtpAUCbOK63nQRg447raGSwVUf6zoP5Gfy1REGvwOmRRe9B8j/xHWe5un1/QmRNVz5wXBKFv52Z1N8omP6G93YEzGzFLyP9vO49yqIvNbqi6SeVbSGz6b51CRvExIsMHvpJPTUjCVKAE8LIvt45b+J/mrRL8PCNPf0oCWU25eIi+Vv9/eKRVpg8hfrkKyK4439pydvapgENopdZIeZXd/efWqFVbsvD8zNXjA0luoNxfzItOFZ+BaDTtb6q3PjTkBnOX5/GJ/4TZjs48lhn9hE4w1LM2dwwRUfXzgXyeb5krv5axeNm3vUIGlPvnSKJEGNLBusJs4fClWRsOA8KGXtMTdCXxpKfavWKKrl2rh7HFeBw35pLc6T32Zz+FnPJagabT1nQ3OHQbYKd6c1thOZKwBDvTnKBP9epNpZNa78XKeQFN97Rj31YswMROt/+BapJiS4zC6s1quUS2j2zlWicrkEhuRxQs+FKBuro7kUkB5DSTjExwAPnxW+c7EDeYMMjsja4Zj5GZLiCk2/gKwtdWakgg/7NuSM8ixsN+5iHih8LTgcJmuhkGNaC8ikW1RfKrcc+KZFma82NS7whTovwOGF20Gr5mL+bHUgBvAN3/BISTxDF9xSE+NSCvMs7OxdiJbbqVhx+Mb2a+DEJ0qmCWQdiiXrtyDPHUK0ua0asx3wRBIaPBLnlpDT2D7MZpgGcbPSd9mtMjBt1ssVD525FfkWpUa3OtT9o1l+JRUQ+2flBgaMl/fCRTqeAnWVdtxmbAbrANfKXdZz0GCxY+kypzadLawX7+rwv0D4Qqqx3j/EwP/naz3xmc6OYlbF7W09IobWUia2c3DurekmwFrWXSzjhtrQXbigRhMAHRyEXXecoU8K8O4V3ekmVWi9dcGlEb7i9g86MdjWRZIKDaP9QlmJels/mj97cLAfNWVGm86omv5pcyZYBCnEQt3Qyy34d2TGTivOGg+rx+ctfSadfx9EMwZKXEllbuzKbTe1L/M1iibTp1QUplk+V9TUle8YbJjcLiHca8LM/Cg1jG//lr3di3VmBZlKFJDG969athKg7UA1XN/dwbngppx19+j1wipJvC3lNvkfgZWkne7KPekkmanoMMGjgfrARTW/KGRXxQ5fHzx1Xcdx/6UsVCZNtDwaxco+uwhpoUc8MhU717fwDHWwo4hfCfxpgy/oOMw+xPjlCHY8Ls+c51lEBr6PTs0Mqp00pEZFzI7qBEW0uQSDv8Uj/CPtEL1gH2oe8E0uXV4YwkOI1TvzIwkwkqTkMushR856UqD5gqx0wof4KWPEFUey0SQ0SOLE+BrO+4iQ50T8U7ePTbzwUdtyxtEL4vpFHmzUhshVDWawdiCnDj4c/1WYMVrYFcO4cMYf8nahETe1TDSDBxJjvHSRuzq9jZ25Zij7+7J6T98wCnujp/MWV7iLOzjodlUwyiAVhdzK2S0phlu83n0iGtjTKUg9oePFkCaF5F5gpQvmlYtROTA72DS1zLClXnqcx8xhS6lwKOo/YuWg5StK+Dp6P6VN3dygvaOcNmza91tovPma3CMYvb1BpgSex928Ailv6nGoNMlerqJzpQoeSYJYoegJZobtNf7yb3VmdGFKfiIsDLOM9+iO6CB8lQKq3IG3JVp9wj1wV1tq/8TaeRBYwEenz0NYAwMIaGvWR6M9pLlT2z5zJLfIAX9Y7kpOkmPOZ8333QC
\ No newline at end of file
diff --git a/drpy_js/丫丫电子书[书].js b/drpy_js/丫丫电子书[书].js
deleted file mode 100644
index b863306..0000000
--- a/drpy_js/丫丫电子书[书].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflsI/or7QnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+S4q+S4q+eUteWtkOS5plvkuaZdJywKICAgIGhvc3Q6ICdodHRwOi8vd3d3LnNodXl5OC5jYy8nLAogICAgdXJsOiAnL2Z5Y2xhc3MvbGlzdF91cGRhdGVfZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL2FsbC8ja2V5PSoqJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICcnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBoaWtlckxpc3RDb2w6ICJ0ZXh0XzEiLAogICAgaGlrZXJDbGFzc0xpc3RDb2w6ICJ0ZXh0XzEiLAogICAgY2xhc3NfcGFyc2U6ICcjbmF2IGE7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLycsCiAgICBjYXRlX2V4Y2x1ZGU6ICflhajpg6jlsI/or7QnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGh0bWwsICdoMSYmVGV4dCcpOwogICAgICAgIGxldCBjb250ZW50ID0gcGRmaChodG1sLCAnI2NvbnRlbnQtLS5yZWFkYnV0dG9uJiZIdG1sJykucmVwbGFjZSgvXG4vZywgIiIpLnNwbGl0KCI8YnI+IikuZmlsdGVyKHYgPT4gdikuc2xpY2UoMCkuam9pbigiXG4iKS5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKS5zcGxpdCgnPGRpdicpWzBdOwogICAgICAgIGxldCByZXQgPSBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAgIHRpdGxlLAogICAgICAgICAgICBjb250ZW50CiAgICAgICAgfSk7CiAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogJ25vdmVsOi8vJyArIHJldCwganM6ICcnfTsKICAgIH0pLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAogICAg5LiA57qnOiAnLmxpc3Rjb25sJiZ1bCYmbGk7YSYmVGV4dDs7c3BhbjplcSgtMSkmJlRleHQ7YSYmaHJlZjthOmVxKDEpJiZUZXh0JywKICAgIOS6jOe6pzogewogICAgICAgIOmHjeWumuWQkTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICAgICAgbG9nKCfmiafooYzph43lrprlkJE6JyArIE1ZX1VSTCk7CiAgICAgICAgICAgIC8vIGxldCBodG1sID0gcmVxdWVzdChNWV9VUkwpOwogICAgICAgICAgICBNWV9VUkwgPSBwZChodG1sLCAnYS5kaXJhbGlua3MmJmhyZWYnLCBNWV9VUkwpOwogICAgICAgICAgICBsb2coJ+S6jOe6p+mHjeWumuWQkeWIsDonICsgTVlfVVJMKTsKICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QoTVlfVVJMKTsKICAgICAgICB9KSwKICAgICAgICB0aXRsZTogJ2gxJiZUZXh0JywKICAgICAgICBpbWc6ICdpbWcmJnNyYycsCiAgICAgICAgZGVzYzogJy5sYXN0cmVjb3JkJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnLnJfY29ucyYmVGV4dCcsCiAgICAgICAgdGFiczogJy5kaXJ0aXRvbmUmJmgyJywKICAgICAgICBsaXN0czogJ3VsJiZsaScsCiAgICAgICAgdGFiX3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3VybDogJ2EmJmhyZWYnLAogICAgICAgIGxpc3RfdXJsX3ByZWZpeDogJycsCiAgICB9LAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dC5zcGxpdCgnIycpWzBdKTsKICAgICAgICBsZXQgbGlzID0gcGRmYShodG1sLCAnLmF1Ym9vazImJmg0JykuZmlsdGVyKGl0ID0+IGl0LmluY2x1ZGVzKEtFWSkpOwogICAgICAgIGxldCBkID0gW107CiAgICAgICAgbGlzLmZvckVhY2goaXQgPT4gewogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsICdhJiZUZXh0JyksCiAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGl0LCAnaDQtLWEmJlRleHQnKSwKICAgICAgICAgICAgICAgIGltZzogIiIsCiAgICAgICAgICAgICAgICB1cmw6IHBkKGl0LCAnYSYmaHJlZicsIE1ZX1VSTCksCiAgICAgICAgICAgIH0pCiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgfSksCn0=
\ No newline at end of file
diff --git a/drpy_js/中华听书网[听].js b/drpy_js/中华听书网[听].js
deleted file mode 100644
index fdfa530..0000000
--- a/drpy_js/中华听书网[听].js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8g5pCc57Si6aqM6K+BCnZhciBydWxlID0gewogICAg57G75Z6LOiAn5ZCs5LmmJywKICAgIHRpdGxlOiAn5Lit5Y2O5ZCs5Lmm572RJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy50aW5nc2h1Y24uY29tJywKICAgIHVybDogJy9saXN0L2Z5Y2xhc3MtZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC5waHA/cGFnZT1meXBhZ2Ujc2VhcmNod29yZD0qKiZzZWFyY2h0eXBlPTtwb3N0JywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICcjbmV3c19uYXYmJmxpOmhhcyhhKTthJiZUZXh0O2EmJmhyZWY7LiovKFxcZCspLmh0bWwnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIC8vICBsYXp5OidqczppbnB1dD1pbnB1dC5yZXBsYWNlKCJ3d3ciLCJtIiknLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgdXJsID0gaW5wdXQ7CiAgICAgICAgaWYgKC9tM3U4fG1wNHxtcDN8YWNjfG00YXx3bWF8YWFjLy50ZXN0KHVybCkpIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlucHV0ID0gaW5wdXR1cmwKICAgICAgICB9CiAgICB9KSwKICAgIGxpbWl0OiA2LAogICAg5Zu+54mH5p2l5rqQOiAnQFJlZmVyZXI9aHR0cHM6Ly93d3cudGluZ3NodWNuLmNvbScsCiAgICDmjqjojZA6ICcubGF5b3V0X3JpZ2h0OmVxKDEpJiZsaTsqOyo7ZW0mJlRleHQ7KicsCiAgICDkuIDnuqc6ICcubGlzdEJveCYmbGk7aW1nJiZhbHQ7aW1nJiZzcmM7cDplcSgwKSYmc3BhbiYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDMmJlRleHQ7LndlYnppX3RvcCYmbGk6ZXEoNCkmJlRleHQnLAogICAgICAgIGltZzogJy5waWMmJmltZyYmc3JjJywKICAgICAgICBkZXNjOiAnLndlYnppX3RvcCYmbGk6ZXEoMSkmJnNwYW4mJlRleHQ7Ozsud2ViemlfdG9wJiZsaTplcSgzKSYmVGV4dDsud2ViemlfdG9wJiZsaTplcSgyKSYmVGV4dCcsCiAgICAgICAgY29udGVudDogJyNpZERJVi0tYSYmVGV4dCcsCiAgICAgICAgdGFiczogJy5jb250ZW50X2pydG9wOmVxKDApJiZsaScsCiAgICAgICAgbGlzdHM6ICcudmlkZW91cmw6ZXEoI2lkKSYmbGknCiAgICB9LAogICAg5pCc57SiOiAnKicsCn0=
\ No newline at end of file
diff --git a/drpy_js/乐草TV[密].js b/drpy_js/乐草TV[密].js
deleted file mode 100644
index b1e097e..0000000
--- a/drpy_js/乐草TV[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAAAA31TS2/TQBC++1dYIDlxmngTFaRiN1RF4gACcaDhQlG6tcfxputHves8KJHoEYlCeJ4qgbjQC+LCAQqif6ZN2hs/gVk7KQcQB6/nm/1mvt2Z2R5N9TTjoDf1HY1mMohTWy+dfX9x8vzz8bdxqapJJjmgD9Hp3pO1e+gKYiHRE0iZCJuQfr9vcXBp3LBknMz2bwpkKBuoBymCnVJLQFpb7UAkS7h3+861G7eut1urpVFVm/54O32/i95M+rWlXDWEOEOVy/V6vaphyhBaKUcGwd2ssFjkwcBKgoT0Yo/IYQKEecQfupwKQRLaAQTqZwUy5BjngaSMt/4VnXA6LKJxEfg1SKTWeagAmrrBX6G0SwdEZJ0OCLkSMq/ZMPpes1IxlGyzUDc4C5lsLtbP09BNVdJGVde2M+Zu3c2dhcNnXEL6h6Dll2knNBWqCxdDiLJa7Ps1l0Y9KmoK65w51DDyTikjSMF3SHl93VswUdOlEtowcHnmQdGUQqTtgY99wfJrkm62U4hoCKpRZ7uvzt4cnewfTA+PVKt+vRsfFmjy8tPk9U/VMVWv+alkmgF6FGgXrfn3aJDugKwgoYlH4PTh0NY3usLWOEh9y409aHZFYiWeH5RT2M6womUWJZk0rZBKNyiTZeaneMSyVVkxl0kBrhLzfuOB6RRZVPI81TxEOXL++oWc6GjM18skXMyWHoXJJWJJJaPiTBNfQK6n3oLeHdh6varPbohWfjFF1EfaSAcu4D/8xoyvnpZ1XpiFefgGljwfClu/glMZZ3m7fYpJq9rk2cHp3hiLWMEyHX99PD38iMDqMQ9ih4Udw6BcFoZHJa3FKeuwiHLHwjlmtS7IhLpbtR6DvjCMNRhIh9qwXa6bxWSorIdPi6xKYjLen375gKAr4sjmTEhHDYKTMNeByGEecmYTo6ZFG/0GXSBjrDQEAAA=
\ No newline at end of file
diff --git a/drpy_js/九妖仓库[密].js b/drpy_js/九妖仓库[密].js
deleted file mode 100644
index 446b364..0000000
--- a/drpy_js/九妖仓库[密].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICc5MeS7k+W6kycsCiAgaG9zdDogJ2h0dHBzOi8va2QxZjIxanEtMmRlaS1icy45MWNhbmdrdTI5LmJ1enonLAogIHVybDogJy90eXBlL2Z5Y2xhc3MvZnlwYWdlJywKICBzZWFyY2hVcmw6ICcvc2VhcmNoLyoqL24vZnlwYWdlJywKICBzZWFyY2hhYmxlOiAyLAogIHF1aWNrU2VhcmNoOiAwLAogIGZpbHRlcmFibGU6IDAsCiAgY2xhc3NfbmFtZTogJ+WbveS6p+S8oOWqkibml6XmnKwm5Zu95LqnJumfqeWbvSbmrKfnvo4m5Yqo55S7Jjkx57K+6YCJJuW9k+WJjeeDremXqCbmnKzmnIjmnIDng60m5pys5pyI5pS26JePJuS4iuaciOeDremXqCblm73kuqfop4bpopEm5Lit5paH5a2X5bmVJuWbveS6pybml6XmnKzmnIkm5pel5pys5pegJuasp+e+juaXoCblvLrkubEm5Yi25pyN6K+x5oORJuebtOaSreS4u+aSrSbmv4Dmg4XliqjmvKsm5piO5pif5o2i6IS4JuaKlumYtOinhumikSblpbPmmI7mmJ8m572RLeabnS3pl6gm55CG5LiJ57qnJkFW6Kej6K+0JlPosIPmlZkm6JCd6I6J5bCR5aWzJuaegeWTgeWqmum7kSblpbPlkIzmgYsm546p5YG25aeQ5aeQJuS6uuezu+WIlycsLy/pnZnmgIHliIbnsbvlkI3np7Dmi7zmjqUKICAgY2xhc3NfdXJsOiAnMTU4JjE4MCYxODEmMTU5JjE4MiYxNjAmMzc2JjM4OCYzODkmMzkwJjM5MSYzMjgmMzI5JjMzMCYzMzEmMzMyJjMzMyYzMzQmMzM1JjMzNiYzMzcmMzM4JjMzOSYzNDAmMzQzJjM0NSYzNDYmMzQ3JjM0OCYzNDkmMzUwJjM1MSYzNTMnLC8v6Z2Z5oCB5YiG57G75qCH6K+G5ou85o6lCiAgcGxheV9wYXJzZTogdHJ1ZSwKICBsYXp5OiAnJywKICBsaW1pdDogNiwKICDmjqjojZA6ICcnLAogIGRvdWJsZTogdHJ1ZSwKICDkuIDnuqc6ICdib2R5JiYuc3R1aS12b2RsaXN0X19pdGVtO2EmJnRpdGxlO2ltZyYmc3JjOzthJiZocmVmJywKICDkuoznuqc6IHsKICAgIHRpdGxlOiAnJywKICAgIGltZzogJycsCiAgICBkZXNjOiAnJywKICAgIGNvbnRlbnQ6ICcnLAogICAgdGFiczogJycsCiAgICBsaXN0czogJ2JvZHkmJi5ncm91cC1ib3gnLAogIH0sCiAg5pCc57SiOiAnLnN0dWktdm9kbGlzdCYmbGk7YSYmdGl0bGU7aW1nJiZzcmM7O2EmJmhyZWYnLAp9
\ No newline at end of file
diff --git a/drpy_js/九牛电影.js b/drpy_js/九牛电影.js
deleted file mode 100644
index e75ecf7..0000000
--- a/drpy_js/九牛电影.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/22MsQ4BQRRFe18xlU2EeZUC8RfUMrszzMbMzmbnLbsRHyBR6kSholUoSMTPYH/DYCUKr7l55+RenfosojozkWjS23lZnHcUmT9AkSHpEs83PG80rGZKVas9B71OZcISkqRKOD+rEHeP/faxubaJ99nx6m+KISrh4O20KRbrYnW8Xw6lksaiMxIxbgOMx62cBkaXMk2UcxBGXGQ0ljFMDAcrzRRCDsM8UMxaiNlIuOcVVKJWZdcKlgSy/3fhrX6LMOVQq33r8yfigowXCwEAAA==
\ No newline at end of file
diff --git a/drpy_js/云电影网.js b/drpy_js/云电影网.js
deleted file mode 100644
index 0c0a131..0000000
--- a/drpy_js/云电影网.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVyvwWtIzIIYsnA8q/wlLeXw1PZrDcQkS4SM6d2BKO0LPBsOvYv2JE5eBbQA775S66EoOTFvNPc+UI0O0Pg8CktRvLZcsRYtH/lPEDsfOfRIgKX1czws7qyAeBsm06RVSqeDtGjh/6yBaUiU5jdAZpAGholvs8jTNsAOh4LCAgu9pNiAl8j+56iGdQ1rMMf0uEe6jbrCkQSG0i1xW8L+OZxGBYLnsdhT6BSDt7wYbhFGSzXnXP1iaYmh5ewfuJ6wcITMS4Gs/d+ISLfvozBfaZ1veyCRBVVPA+LMnypZjag6bQ+D/t0uYmCAVV6PrO96FpaeB8jUu6xSTDoAAn656hgxggMHP+OsFYwH8yhruDy9hQaaMcgZIWfBDnsq9a5Z/5gb8Euql+7a1FmIkxHuLIzcrBmh7CWjvesCZ3tTADdFG6XFtfMkpF1J5m/SHG/aMb9yHOFraDMuItlJ3tw9rjA7Eodkw/ZhISaeB6BA6SSrAtOnjI4BOl4jfSgecUGjV5RusuJpTaXHxmeT95fxl0Q1vyWkV1GtW+roCybUf7YujSUNmP7jvR7KzZRMbEIl/YSBCJGWQDopa7sR+8UdI+LQs/Qnlg3AqrSWzFR0vJ3Ujt7NGhQxaks+0Kt+ibk4gb+rjdNXJDcpOK8aHjRluJrdfApvbOWZGB/E/oth/FYAoBAIUDrAienW5ScsISzVEAxLUIeeQ3IBKXHjWDNs90vqDrlTocvSnn8JDC5vh/FJ3fDKG54S+Tofemnywp6BZiiF/D1Q5IrMkbwQpjhox4jVAH+cXHxwX+H7e47g+CYEJKHWN8/Nc1muysMHvb4KfFg1Oz4UyK6AjffJUtM5v54sYC1BTROI2w6gE9IMKhZaxHy6c3nSelY4hw4nBQY+PJxMmEfDcvNmlZQvzW5LJQw1VFYXCJczed8FiM8Axm+wBWyNv2Tqopd08uvaFsu+kvNzH3YDkbvDkr9n80oxAPcitsmB6o5a259+sqpG/sQLmfPYFv9EPDqsSXAe9jcnNQZzv0+Sp2z1hwNwqLK3t/IBkjOVy32i/tUnehRw5/E9d
\ No newline at end of file
diff --git a/drpy_js/云盘资源网[盘].js b/drpy_js/云盘资源网[盘].js
deleted file mode 100644
index 45b6da2..0000000
--- a/drpy_js/云盘资源网[盘].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/人人影视.js b/drpy_js/人人影视.js
deleted file mode 100644
index 9949ab7..0000000
--- a/drpy_js/人人影视.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi7pppblm74yLuS6jOe6pywgewogICAgdGFiczogJ2Rpdi5ib3R0b20tbGluZSBoMycsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ+mmluWbvjInLAogICAgdGl0bGU6ICfkurrkurrlvbHop4YnLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LnJ0dGtzLmNvbScsCiAgICB1cmw6ICcvcnJ0b3AvZnljbGFzc2Z5ZmlsdGVyLmh0bWwnLAogICAgZmlsdGVyX3VybDogJ3t7ZmwuYXJlYX19e3tmbC5ieX19L3BhZ2UvZnlwYWdle3tmbC55ZWFyfX0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyV3kyN2FRQlNHMzhWckpNYWt1VFJ2MEdlb3NqQmdnVW5pcEZ6YW1paFNxMXdFb1ExdDFVQnBTQzlTQ0NBbHdpaTlFRWZBeXpCMmVJdU9ZWmc1bnE1WWRGTm1oLy92Y0dibTkvQWY5cFM0b1ptV1lTYVU5YWQ3eXFadUtldEtUTXZxVCtKS1NERzFiWjA4ZTkxNy9LVkVuZzNUeUpKbjh1bTV0cFhUSjE4eGlZQ1BXdU9EbGkvN2REOUUxV0xUUFRpaWF1clpMZ2VWT21FVXZFd0JjTklhOWVzVXhQTWNlSVV1YjZXQlZsN3pQYjY3cDJBenlZSDcrcDM3cWpJRFVRQUtuMFpPa1lLOHY4YUdqNlluMTlLNnhzK042elorNDh4OTdsSHZCcC8zOFdWelhEdW1MT3czRGxNcFdEZStxcm05VHFDT1NrSy9zdTNlRFlMOXBoTHpZbkJLNmdJVlZKcFZqTCsyeFFvcU1YZXFEYmQrSGFpZ0VxdTR0Y1VlVkdJVkZSdWZmTU1YMzRORlRHVzdhVis3RjQySHhuRGtmQTd1Q1FKMk45N2EyTGtLbm44cXpTb2VTbDF4WjFUaWV6LzdlKzluc0lKczBTME55WXNLTHNSVXRsWmo2SlZ2dkdJdHVCeFQyYnNiSG5yOXFsc0p2bUN1c3AwTmJrbDdYR2lMWGdRQXZLcVdycVg1VlhXcnY4YlZIM05mMVFpS1BKb3Q1emNNVHdSQWwwUzZCR2xFcEJGSVZaR3FrQ0tSSWtEVnh3SWxBcUJySWwyRGRGV2txNUN1aUhRRjBtV1JMa01xZXFWQ3IxVFJLeFY2cFlwZXFkQXJWZlJLaFY2cG9sY3E5QXFKWGlIb0ZSSzlRdEFySkhxRm9GZEk5QXBCcjVEb0ZSSGdCWTFhNEhxZWZzQk9lZTdyeVc3MVpKbW9GYzRhcEIzN2JUbU9hMzhFTkdsa00vd1gyam5FaFdOQU03R2R0Tzd2Y0NNMEdYcVpwSkhLL1lPcGQ5NGZPVTArM3hLeEZEOVByME15RzdBc1lOV0duOFdNcFpPQS9meU5MeXVjSlYrazVOaVNZMHVPTFRtMjVOaGFwTEcxWXlhMk5STU1MWm44TXZsbDhzdmtsOG4vZnlkL25pUy9aY2pnbDhFdmcxOEd2d3oraFFuK2xMR1YyelhrZjM0Wi9UTDZaZlRMNkYrWTZOLy9BNU9aeHVxYkh3QUEnLAogICAgc2VhcmNoVXJsOiAnL3JyY3oqKi9wYWdlL2Z5cGFnZS5odG1sJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/优酷[官].js b/drpy_js/优酷[官].js
deleted file mode 100644
index 7834f21..0000000
--- a/drpy_js/优酷[官].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/低端.js b/drpy_js/低端.js
deleted file mode 100644
index 04f4976..0000000
--- a/drpy_js/低端.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/你好帅影院.js b/drpy_js/你好帅影院.js
deleted file mode 100644
index e0cc64c..0000000
--- a/drpy_js/你好帅影院.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/AGPqh+RieRT1xCDC/uYMyxmYSfBqy6ywasp0y8aCxcZSoZd8rmoi1vsLOh9ZzQP+AhMtFtQVHwyxv1MlTI8UfQpPop2fHk1PqP5DBP6t2Jtf6/B4lGz86yJWCYbhkBDAYoPflEc6hJgxcl9v8PfKQc7/GZNcA+8HeS3Z6pLDiaxa/8LB7PL4iMHVBX1Pj8DYF0vv5CTPbqtu0Gsn+mS+KKhexPzbhpg4WNfz2I6uGrD/z72J8utmFjZsiScbuSU2YbDULYNP1QeNfMJJAKJ9Ts8BHmsOSMVebAgg++Xk7cn1e3/odCkJtS4lG6gQyi1smgu0CTyZGQ2iRnhLaaTj5C/0LTCa0DmZxAXajeiliIb0Jpi1MOx0bgvNF01V5CYG2aNAcfRBJLIm/lX2cNWSpwIJIEQaZnoTAzbKFBSA9MJKNf5qu2agDRnUtJ13MlYNkzC7Gea/2pm9zZvmB1mS2h6WV6EyjIYVEwsFcDM9uDQoBEYZtBjl+VBTViAg3WwkpHNCw//6hCor8XhZFuPiZtdjHL06tFyt+L26U76oOeY9/HB3SRr7SKVkhSVKnL+7yXmtXqakpWoou4mTrqQJRa9uUDEA8TPR4tX46cey+65NBDoxviltE43JocuXVAdIr7uZSBOdtr53faWepjp6+7myUkbpxuZNoqImsa1Rq45kMcNi0gh0nICdHUyeJrlYUpERgkekwhqa+y6kgAijmFF3sPylz63FPFTUAEgtXUlYjsEPdA9kKhWMENnu5yBPcF6H4fYMY+xeNECk8RThsEgdUJy9HQBVOaoAdeu8bCUAG0Iay7JypYMNdVndmEAGReYa7+9H8gWP8WH1c5cPWRi/8k2TxlnweuFw+0APp+rz4MDiVJaaAHt0EOz8AcczPX5cjFleZw6vqGlGCUz7IMVKg2T8nrhXx+zsk7fi49ZKSgIXwaJcEswl60MkcPg35y+rQkdku/8DLmHxi7z63OCg81tY0rycPQUwJgbWF8yQy6fL04XGLVcujxfHnGGYjgFJUbX8KV3Hp7ds3GWbVI=
\ No newline at end of file
diff --git a/drpy_js/侠客影视.js b/drpy_js/侠客影视.js
deleted file mode 100644
index 3afba69..0000000
--- a/drpy_js/侠客影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/兄弟影视[优].js b/drpy_js/兄弟影视[优].js
deleted file mode 100644
index 9f26d7f..0000000
--- a/drpy_js/兄弟影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/兔小贝[儿].js b/drpy_js/兔小贝[儿].js
deleted file mode 100644
index b360908..0000000
--- a/drpy_js/兔小贝[儿].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV0d7owGGbzAt3wHjwbr6oJxb/x/8sWmMgeB+y8q2WkvH+TQPxzQMCPDRqNPp1YseMwNcsarctPT4lQNIZWiDH13juWpsrHEVt+tRGPLau99XXCYF+bkfYGN0JIFa5BhWpH28omQ0JSrBiD3bgrHYLHChmRTSqRpwJKQEECl6TE+oBeS9mnWzmXA1TUTDd7h7gyDSb7N6tSlpRkuID6N50vzcCIOY8t+Vs7m9dFF9AJ4zaXXE651D5MDic6W/wZ7PRwj5c7JKjyRR9szB2tK6N6kljkjC3ORJA2ANLkiPTc00UfuHnPWl5TfaCw8TxwePs4M7w12EYKtdppYD0XdLSf2G2A7aUV6hEgT4NQFNQ7XpH0u3VSL8/ZtdJ5WgxJJ5VaT15eZI+IKs+cR8QrLf7fQqhQL3mX/B9o7i78Fdyf7Tb7sIHyLJ4BKLBQnDZ74yYWZQueCVb62FB25d37rno4pNK+fzuvdZlIIc+jTq35UAa1PxXF2B3/gnURPl6EdNLI4fHVlmE62DD3RCjx33I1qJxLDWaA0DhVnJoqj15eZx8hu/Wqu3j9v8qRKglX3Hm8BkmHHcVBi70M6J54VqSx1RXq7rtQwwD5xuyXMvQKUYGDUvUIjPos56KjSy2LVJVHCLvvjQk6zM8ipBTMpSz3smRgY3jCRRTOkjYzNhNLzg5w4R3nUnVo8Lq832ZBDCz0+DY4cImmH6SqXrQ13TQ4CQsoc1b4BMuRvNhNV3O45RMe+cVIcxylUa4tbrrszXNZK8GNDNSayjQX4obC9wiytkoCuZZbPJePVYzv7SdvsHwsjiZV1sk0sBA58KEkv5bBi17cxW00j/cqAFeoJC1kp67vPGV51bQfhvU/WTx5yRlx0Oc1B89K9xpRQDqsHPI4PfmUZqFqvpFbVHs83FRp1z3cCxuMOeuiEvzpUkUyETDhV/Us2JAzSvh1pAPWrAaDpY8af4WgoPRgHh+pF3MIs6WfHclEA7SbrCwRuYxU1VahJNxpMhYboafD4ht/FH3Kq6IJmeGePCaSfy/yJgJrFFeuEKyRYG5M2EnUIoB+RejuhFnM+QJmSsRxH82dUIgWW/RvFGWJkQJBKyZewC5TZJ4Nc7AkCY86wC5wcs90Jpan/3QW2uBMRy5BqxOoF58RRLUuCL0QO4wM6i73ecVudCjtXV7lFGp3g+SXdqgqA4oOx7WUsQwiSlJlyCScGSzZGrfV4Om/bEPVC7fCbFh8Pdywi9XkrZjVd6+1M9506o+tJhyLR7bpq94NSPBhAPreaPUTAPj8dfSC8Y2uWOvsZadEApO7f7QtTtzx3te4ZNg0Npf1D+g5KIuPvemscmZg==
\ No newline at end of file
diff --git a/drpy_js/全能影视.js b/drpy_js/全能影视.js
deleted file mode 100644
index 268b3f7..0000000
--- a/drpy_js/全能影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICflhajog73lvbHop4YnLAogIGhvc3Q6ICdodHRwczovL3d3dy5xbmtrOC5jb20vJywKICB1cmw6ICcvbWxpc3QvZnljbGFzc19meXBhZ2UuaHRtbFsvbWxpc3QvZnljbGFzcy5odG1sXScsCiAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9zby5xbmtrOC5jb20vP3BhZ2U9ZnlwYWdlJnNlYXJjaHR5cGU9dm9kc2VhcmNoJmtleXdvcmQ9KiomaWRzPSZwaW55aW49JnN0YXJyaW5nPSZkaXJlY3RlZD0mYXJlYT0mbGFuZ3VhZ2U9JnllYXI9JmxldHRlcj0mdHlwZT0mb3JkZXI9JmJ5PScsCiAgY2xhc3NfcGFyc2U6ICcubmF2IHVsJiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKFxcZCspLmh0bWwnLAogIHNlYXJjaGFibGU6IDIsCiAgcXVpY2tTZWFyY2g6IDAsCiAgZmlsdGVyYWJsZTogMCwKICBoZWFkZXJzOiB7CiAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgfSwKICBwbGF5X3BhcnNlOiB0cnVlLAogIGxhenk6ICJqczpcbiAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcbiAgbGV0IGhjb25mID0gaHRtbC5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdO1xuICBsZXQganNvbiA9IEpTT041LnBhcnNlKGhjb25mKTtcbiAgbGV0IHVybCA9IGpzb24udXJsO1xuICBpZiAoanNvbi5lbmNyeXB0ID09ICcxJykge1xuICAgIHVybCA9IHVuZXNjYXBlKHVybCk7XG4gIH0gZWxzZSBpZiAoanNvbi5lbmNyeXB0ID09ICcyJykge1xuICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKTtcbiAgfVxuICBpZiAoL1xcLihtM3U4fG1wNHxtNGF8bXAzKS8udGVzdCh1cmwpKSB7XG4gICAgaW5wdXQgPSB7XG4gICAgICBwYXJzZTogMCxcbiAgICAgIGp4OiAwLFxuICAgICAgdXJsOiB1cmwsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpbnB1dDtcbiAgfSIsCiAgbGltaXQ6IDYsCiAgZG91YmxlOiB0cnVlLAogIOaOqOiNkDogJy5waWMmJmxpO2xpOyBhJiZUZXh0O2ltZyYmc3JjOyNpbWdfYnV0JiZUZXh0O2EmJmhyZWY7JywKICDkuIDnuqc6ICcubGl0JiZkbDsuaDQmJlRleHQ7aW1nJiZzcmM7ZGQ6ZXEoMykmJlRleHQ7YSYmaHJlZjsnLAogIOS6jOe6pzogewogICAgdGl0bGU6ICcuaDQmJlRleHQ7LmludHJvIGxpOmVxKDEpJiZUZXh0JywKICAgIGltZzogJ2ltZyYmc3JjJywKICAgIGRlc2M6ICcuaW50cm8gbGk6ZXEoNikmJlRleHQ7LmludHJvIGxpOmVxKDMpJiZUZXh0Oy5pbnRybyBsaTplcSgyKSYmVGV4dDsuaW50cm8gbGk6ZXEoNCkmJlRleHQ7JywKICAgIGNvbnRlbnQ6ICcuY29udCYmVGV4dCcsCiAgICB0YWJzOiAnLnRvbmd5aSYmaDQnLAogICAgbGlzdHM6ICcjbWhsaXN0JiZ1bDplcSgjaWQpIGxpJywKICB9LAogIOaQnOe0ojogJyonLAp9
\ No newline at end of file
diff --git a/drpy_js/六月听书[听].js b/drpy_js/六月听书[听].js
deleted file mode 100644
index 0873845..0000000
--- a/drpy_js/六月听书[听].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/农民影视[优].js b/drpy_js/农民影视[优].js
deleted file mode 100644
index 388cc02..0000000
--- a/drpy_js/农民影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8g5Y+R5biD6aG1IGh0dHBzOi8vd3d3Lm5tZHZkLmNvbS8KdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WGnOawkeW9seinhlvkvJhdJywKICAgIHRhYl9yZW5hbWU6IHsn6buY6K6kJzogJ+e6v+i3r+KRoCcsICfmkq3mlL4nOiAn57q/6Lev4pGgJywgJ+a7tOa7tCc6ICfnur/ot6/ikaAnfSwgLy9ob3N0OidodHRwczovL3d3dy5ubWRkZC5jb20nLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3Lm5tZHZkLmNvbS8nLAogICAgaG9zdEpzOiBgcHJpbnQoSE9TVCk7bGV0IGh0bWw9cmVxdWVzdChIT1NULHtoZWFkZXJzOnsiVXNlci1BZ2VudCI6TU9CSUxFX1VBfX0pOwoJbGV0IHNyYyA9IGpzcC5wZGZoKGh0bWwsImJvZHkmJmE6ZXEoMSkmJmhyZWYiKXx8anNwLnBkZmgoaHRtbCwiYm9keSYmYTplcSgxKSYmVGV4dCIpOwoJaWYoIXNyYy5zdGFydHNXaXRoKCdodHRwJykpe3NyYz0naHR0cHM6Ly8nK3NyY307cHJpbnQoIuaKk+WIsOS4u+mhtToiK3NyYyk7SE9TVD1zcmNgLAogICAgdXJsOiAnL3ZvZC1saXN0LWlkLWZ5ZmlsdGVyLmh0bWwnLCAvLyAvdm9kLWxpc3QtaWQtMi1wZy0xLW9yZGVyLS1ieS10aW1lLWNsYXNzLTAteWVhci0yMDIzLWxldHRlci0tYXJlYS0tbGFuZy0uaHRtbAogICAgZmlsdGVyYWJsZTogMSwvL+aYr+WQpuWQr+eUqOWIhuexu+etm+mAiSwKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmNhdGVJZH19LXBnLWZ5cGFnZS1vcmRlci0tYnkte3tmbC5ieSBvciAidGltZSJ9fS1jbGFzcy0wLXllYXIte3tmbC55ZWFyfX0tbGV0dGVyLXt7ZmwubGV0dGVyfX0tYXJlYS17e2ZsLmFyZWF9fS1sYW5nLScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJaMzA0VFFSeUYzMld2dVpqWnRqTlQzc0JuTUZ4VWJDSlJNUUUwSVlSRUxRZ3RDbXFrRlN6K2laYVdpRklDSWJJSWZabnVscjZGVzdvNzU2Q0pNZUZLTW5mOW5kT2RuVzlvc2wrV09VOTZvemZudkx2RldXL1VHeS9NRkcvYzlrYTh5Y0w5WWp6MzlrL0M5eXZ4L0todzcySHg0b3VUY1J3dXR2cWwxaUNPQituTmp5UnhwZFU5cmZmS1MwbVRRMU90aCtVbUdtV2IzdkorVkZwRW85RTBYNFhISjJpTWJhSW5MNlBIVlRSNTNLZmN2TFNhRkxobytXMDNLRk9GZlVlbFN2UjBreXBzTDJ3c1hkcUVqUGMzTmlpSDUxV1lLaFp3V21HOUhUNFAvbjVhV1BsTHM3L3hMRW1USWUzNjJ4dlJqNzJrU3daNzNWbzdPajVMcnhzTzlzak9Wc04zcDBtWERIYk5EenZva3NFZVFLMFIxWGVUTGhsc2Q5REdkY2xndTJvN3JId010ejZsdFozdFhYZDJvNjNHZWFQVERUYlRlM05rcVY2MHcyQTdwUm9PYVhlK3NvOGRKQU4ydDg2N1crY3Uza3EwMG9tUE5sM1d6bmJsUnFlMzlxMVgza2dYdDNQNmpXNW5vWGRhaTZycEh3T3p2Y3ZpVWZpOWxONWlPUEJQWkxaWW1LS2Z5UEZoOStUelAvNUVmT0Zua3V6aUkrVStjcDl6aVZ4eUxwQUx5bVhlNWpMUHVVRnVPTmZJTmVjS3VlSThoenpIZVJaNWxuUHdTdWFWNEpYTUs4RXJtVmVDVnpLdkFLOWdYZ0Zld2J3Q3ZJSjVCWGdGOHdyd0N1WVY0QlhNSzhBcm1GZUFWekN2QUs5Z1hnRmVBVjZaejZlOEZ4OHBOOGdONXhxNTVsd2hWNXpua09jNHp5TFBjcDVCbnVIY1IrNXpMcEZMemdWeTVqWGdOY3hyd0d1WTE0RFhNSzhCcjJGZUExN0R2QWE4aG5rTmVBM3pHdkFhNWpYZ05jeHJ3R3VZVjROWE02OEdyMlplRFY3TnZCcThtbmsxZURYemF2QnE1dFhnMWN5cndhdVpWNE5YTTY4R3IyWmVCVjdGdkFxOGlua1ZlQlh6S3ZBcTVsWGdWY3lyd0t1WVY0RlhNYThDcjJKZUJWN0Z2QXE4OFVkK2ZOeWF4Y01qV24wZEJtdC9QRHlpMmxHL2RwZ3NNRE1SZjlVK3ZZSWdhcjlKbWpzVE05TjQ4dTB0aE11cGZVeVBQNWdxRHU0Nk51TDVWN1JCME1hUDRtN1FqSTBzUlVNVis4ekFYQTdhYVlXemkrMWpJQ2U0Q3NjZDdUWUhUb01xNTF6TXVaaHpNZWRpenNXY2l6a1hjeTUyelZ3c1F5N203TWJaamJNYlp6Zk9icHpkT0x0eGR2UC8yMDMyaW0rYWNEcGhwUlg5L0VvdmhzeHZGZjMvTHUvZUdUbXJjbGJsck1wWmxiTXFaMVhPcXE2WlZmbkt2VFJ5ZXVQMHh1bU4weHVuTjA1dm5ONWNJNzJaL3dWTlROUWhyaTRBQUE9PScsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgMToge2NhdGVJZDogJzEnfSwgMjoge2NhdGVJZDogJzInfSwgMzoge2NhdGVJZDogJzMnfSwgNDoge2NhdGVJZDogJzQnfSwgMjY6IHtjYXRlSWQ6ICcyNid9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocD9tPXZvZC1zZWFyY2gmd2Q9KionLAogICAgc2VhcmNoYWJsZTogMiwvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIGhlYWRlcnM6IHsvL+e9keermeeahOivt+axguWktCzlrozmlbTmlK/mjIHmiYDmnInnmoQs5bi45bimdWHlkoxjb29raWVzCiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sIC8vIGNsYXNzX3BhcnNlOiAnI3RvcG5hdiBsaTpsdCg0KTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykuaHRtbCcsCiAgICBjbGFzc19uYW1lOiAn55S15b2xJui/nue7reWJpybnu7zoibom5Yqo5ryrJuefreWJpycsLy/pnZnmgIHliIbnsbvlkI3np7Dmi7zmjqUKICAgIGNsYXNzX3VybDogJzEmMiYzJjQmMjYnLC8v6Z2Z5oCB5YiG57G75qCH6K+G5ou85o6lCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaW5pdF9qcyA9IGBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuYXZpZ2F0b3IsIHtwbGF0Zm9ybToge2dldDogKCkgPT4gJ2lQaG9uZSd9fSk7YDsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDEsCiAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgIGpzOiBgdHJ5e2xvY2F0aW9uLmhyZWYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJpZnJhbWUiKVsxXS5zcmM7fWNhdGNoKGVycikge31kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubGluZSIpLmNsaWNrKClgLAogICAgICAgICAgICBwYXJzZV9leHRyYTogJyZpbml0X3NjcmlwdD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGJhc2U2NEVuY29kZShpbml0X2pzKSksCiAgICAgICAgfQogICAgfSksCiAgICBsaW1pdDogNiwKICAgIOaOqOiNkDogJy5nbG9iYWxQaWNMaXN0IGxpOmhhcyhpbWcpO2EmJnRpdGxlOyo7KjsqJywKICAgIOS4gOe6pzogJy5nbG9iYWxQaWNMaXN0IGxpOy5zVGl0JiZUZXh0O2ltZyYmc3JjOy5zQm90dG9tLS1lbSYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgICJ0aXRsZSI6ICIudGl0bGUmJlRleHQ7LnR5cGUtdGl0bGUmJlRleHQiLAogICAgICAgICJpbWciOiAiLnBhZ2UtaGQmJmltZyYmc3JjIiwKICAgICAgICAiZGVzYyI6ICIuZGVzY19pdGVtOmVxKDMpJiZUZXh0Oy5kZXNjX2l0ZW06ZXEoNCktLXNwYW4mJlRleHQ7Oy5kZXNjX2l0ZW06ZXEoMSktLXNwYW4mJlRleHQ7LmRlc2NfaXRlbTplcSgyKS0tc3BhbiYmVGV4dCIsCiAgICAgICAgImNvbnRlbnQiOiAiLmRldGFpbC1jb24gcCYmVGV4dCIsCiAgICAgICAgInRhYnMiOiAiLmhkIiwKICAgICAgICAibGlzdHMiOiAiLm51bUxpc3Q6ZXEoI2lkKSBsaSIKICAgIH0sCiAgICDmkJzntKI6ICcudWxQaWNUeHQuY2xlYXJmaXggbGk7KjtpbWcmJmRhdGEtc3JjOy5zRGVzOmVxKDEpJiZUZXh0OyonLAp9
\ No newline at end of file
diff --git a/drpy_js/农民影视gz.js b/drpy_js/农民影视gz.js
deleted file mode 100644
index ff7e153..0000000
--- a/drpy_js/农民影视gz.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WGnOawkeW9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cud3dnei5jbi8nLAogICAgLyoKICAgIGhvc3RKczpgcHJpbnQoSE9TVCk7bGV0IGh0bWw9cmVxdWVzdChIT1NULHtoZWFkZXJzOnsiVXNlci1BZ2VudCI6TU9CSUxFX1VBfX0pOwogICAgbGV0IHNyYyA9IGpzcC5wZGZoKGh0bWwsImJvZHkmJmE6ZXEoMSkmJmhyZWYiKXx8anNwLnBkZmgoaHRtbCwiYm9keSYmYTplcSgxKSYmVGV4dCIpOwogICAgaWYoIXNyYy5zdGFydHNXaXRoKCdodHRwJykpe3NyYz0naHR0cHM6Ly8nK3NyY307cHJpbnQoIuaKk+WIsOS4u+mhtToiK3NyYyk7SE9TVD1zcmNgLAogICAgKi8KICAgIHVybDogJy92b2QtbGlzdC1pZC1meWZpbHRlci5odG1sJywKICAgIGZpbHRlcmFibGU6IDEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5jYXRlSWR9fS1wZy1meXBhZ2Utb3JkZXItLWJ5LXt7ZmwuYnkgb3IgInRpbWUifX0tY2xhc3MtMC15ZWFyLXt7ZmwueWVhcn19LWxldHRlci17e2ZsLmxldHRlcn19LWFyZWEte3tmbC5hcmVhfX0tbGFuZy0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyWjMwNFRRUnlGMzJXdnVaalp0ak5UM3NCbk1GeFViQ0pSTVFFMElZUkVMUWd0Q21xa0ZTeitpWmFXaUZJQ0liSUlmWm51bHI2Rlc3bzc1NkNKTWVGS01uZjluZE9kblc5b3NsK1dPVTk2b3pmbnZMdkZXVy9VR3kvTUZHL2M5a2E4eWNMOVlqejM5ay9DOXl2eC9LaHc3Mkh4NG91VGNSd3V0dnFsMWlDT0Irbk5qeVJ4cGRVOXJmZktTMG1UUTFPdGgrVW1HbVdiM3ZKK1ZGcEVvOUUwWDRYSEoyaU1iYUluTDZQSFZUUjUzS2ZjdkxTYUZMaG8rVzAzS0ZPRmZVZWxTdlIwa3lwc0wyd3NYZHFFalBjM05paUg1MVdZS2had1dtRzlIVDRQL241YVdQbExzNy94TEVtVEllMzYyeHZSajcya1N3WjczVm83T2o1THJ4c085c2pPVnNOM3AwbVhESGJORHp2b2tzRWVRSzBSMVhlVExobHNkOURHZGNsZ3UybzdySHdNdHo2bHRaM3RYWGQybzYzR2VhUFREVGJUZTNOa3FWNjB3MkE3cFJvT2FYZStzbzhkSkFOMnQ4NjdXK2N1M2txMDBvbVBObDNXem5ibFJxZTM5cTFYM2tnWHQzUDZqVzVub1hkYWk2cnBId096dmN2aVVmaTlsTjVpT1BCUFpMWlltS0tmeVBGaDkrVHpQLzVFZk9Gbmt1emlJK1UrY3A5emlWeHlMcEFMeW1YZTVqTFB1VUZ1T05mSU5lY0t1ZUk4aHp6SGVSWjVsblB3U3VhVjRKWE1LOEVybVZlQ1Z6S3ZBSzlnWGdGZXdid0N2SUo1QlhnRjh3cndDdVlWNEJYTUs4QXJtRmVBVnpDdkFLOWdYZ0ZlQVY2Wno2ZThGeDhwTjhnTjV4cTU1bHdoVjV6bmtPYzR6eUxQY3A1Qm51SGNSKzV6THBGTHpnVnk1alhnTmN4cndHdVkxNERYTUs4QnIyRmVBMTdEdkFhOGhua05lQTN6R3ZBYTVqWGdOY3hyd0d1WVY0TlhNNjhHcjJaZURWN052QnE4bW5rMWVEWHphdkJxNXRYZzFjeXJ3YXVaVjROWE02OEdyMlplQlY3RnZBcThpbmtWZUJYekt2QXE1bFhnVmN5cndLdVlWNEZYTWE4Q3IySmVCVjdGdkFxODhVZCtmTnlheGNNalduMGRCbXQvUER5aTJsRy9kcGdzTURNUmY5VSt2WUlnYXI5Sm1qc1RNOU40OHUwdGhNdXBmVXlQUDVncUR1NDZOdUw1VjdSQjBNYVA0bTdRakkwc1JVTVYrOHpBWEE3YWFZV3ppKzFqSUNlNENzY2Q3VFlIVG9NcTUxek11Wmh6TWVkaXpzV2NpemtYY3k1MnpWd3NReTdtN01iWmpiTWJaemZPYnB6ZE9MdHhkdlAvMjAzMmltK2FjRHBocFJYOS9Fb3Zoc3h2RmYzL0x1L2VHVG1yY2xibHJNcFpsYk1xWjFYT3FxNlpWZm5LdlRSeWV1UDB4dW1OMHh1bk4wNXZuTjVjSTcyWi93Vk5UTlFocmk0QUFBPT0nLAogICAgZmlsdGVyX2RlZjogewogICAgICAgIDE6IHtjYXRlSWQ6ICcxJ30sCiAgICAgICAgMjoge2NhdGVJZDogJzInfSwKICAgICAgICAzOiB7Y2F0ZUlkOiAnMyd9LAogICAgICAgIDQ6IHtjYXRlSWQ6ICc0J30sCiAgICAgICAgMjY6IHtjYXRlSWQ6ICcyNid9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocD9tPXZvZC1zZWFyY2gmd2Q9KionLAogICAgc2VhcmNoYWJsZTogMiwvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHNlYXJjaE5vUGFnZTogMSwvL+aYr+WQpuWFs+mXreaQnOe0ouWIhumhtSwKICAgIGhlYWRlcnM6IHsvL+e9keermeeahOivt+axguWktCzlrozmlbTmlK/mjIHmiYDmnInnmoQs5bi45bimdWHlkoxjb29raWVzCiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICAvLyBjbGFzc19wYXJzZTogJyN0b3BuYXYgbGk6bHQoNCk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAgY2xhc3NfbmFtZTogJ+eUteW9sSbov57nu63liacm57u86Im6JuWKqOa8qybnn63liacnLC8v6Z2Z5oCB5YiG57G75ZCN56ew5ou85o6lCiAgICBjbGFzc191cmw6ICcxJjImMyY0JjI2JywvL+mdmeaAgeWIhuexu+agh+ivhuaLvOaOpQogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIHBkZmEgPSBqc3AucGRmYTsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBtYWNfdXJsID0gaHRtbC5tYXRjaCgvbWFjX3VybD0nKC4qPyknOy8pWzFdOwogICAgICAgIGxldCBtYWNfZnJvbSA9IGh0bWwubWF0Y2goL21hY19mcm9tPScoLio/KScvKVsxXTsKICAgICAgICBsb2cobWFjX2Zyb20pOwogICAgICAgIGxldCBpbmRleCA9IHBhcnNlSW50KGlucHV0Lm1hdGNoKC9udW0tKFxkKykvKVsxXSkgLSAxOwogICAgICAgIGxldCBwbGF5VXJscyA9IG1hY191cmwuc3BsaXQoJyMnKTsKICAgICAgICBsZXQgcGxheVVybCA9IHBsYXlVcmxzW2luZGV4XS5zcGxpdCgnJCcpWzFdOwogICAgICAgIGxvZyhwbGF5VXJsKTsKICAgICAgICBsZXQganhfanNfdXJsID0gJ2h0dHBzOi8vYXBpLmNubWNvbS5jb20vbm1hcGkvbm1ib2YvJyArIG1hY19mcm9tICsgJy5qcyc7CiAgICAgICAgaHRtbCA9IHJlcXVlc3QoanhfanNfdXJsKTsKICAgICAgICBsZXQganhfcGhwX3VybCA9IGh0bWwubWF0Y2goL3NyYz0iKC4qPyknLylbMV07CiAgICAgICAgaWYgKG1hY19mcm9tLmluY2x1ZGVzKCdtM3U4JykpIHsKICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QoanhfcGhwX3VybCArIHBsYXlVcmwpOwogICAgICAgICAgICBsZXQgcmVhbFVybCA9IGh0bWwubWF0Y2goL3VybD0nKC4qPyknLylbMV07CiAgICAgICAgICAgIGlmIChyZWFsVXJsKSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IHtwYXJzZTogMCwgdXJsOiByZWFsVXJsfTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KGp4X3BocF91cmwgKyBwbGF5VXJsLCB7aGVhZGVyczogeydSZWZlcmVyJzogJ2h0dHBzOi8vbm12b2QuY25tY29tLmNvbS8nfX0pOwogICAgICAgICAgICBsZXQgbGluZTEgPSBodG1sLm1hdGNoKC9jYXNlXHMrJ+e6v+i3r+KRoCc6XHMqc3JjXHMqPVxzKicoLio/KScvKVsxXTsKICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QobGluZTEgKyBwbGF5VXJsLCB7aGVhZGVyczogeydSZWZlcmVyJzoganhfcGhwX3VybCArIHBsYXlVcmx9fSk7CiAgICAgICAgICAgIGxldCByZWFsVXJsID0gaHRtbC5tYXRjaCgvdXJsLio/JyguKj8pJy8pWzFdOwogICAgICAgICAgICBpZiAocmVhbFVybCkgewogICAgICAgICAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogcmVhbFVybH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnLmdsb2JhbFBpY0xpc3QgLnJlc2l6ZV9saXN0Oyo7aW1nJiZkYXRhLXNyYzsqOyonLAogICAg5LiA57qnOiAnLmdsb2JhbFBpY0xpc3QgbGk7LnNUaXQmJlRleHQ7aW1nJiZzcmM7LnNCb3R0b20tLWVtJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgInRpdGxlIjogIi50aXRsZSYmVGV4dDsudHlwZS10aXRsZSYmVGV4dCIsCiAgICAgICAgImltZyI6ICIucGFnZS1oZCYmaW1nJiZzcmMiLAogICAgICAgICJkZXNjIjogIi5kZXNjX2l0ZW06ZXEoMykmJlRleHQ7LmRlc2NfaXRlbTplcSg0KS0tc3BhbiYmVGV4dDs7LmRlc2NfaXRlbTplcSgxKS0tc3BhbiYmVGV4dDsuZGVzY19pdGVtOmVxKDIpLS1zcGFuJiZUZXh0IiwKICAgICAgICAiY29udGVudCI6ICIuZGV0YWlsLWNvbiBwJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIuaGQgbGkiLAogICAgICAgICJsaXN0cyI6ICIubnVtTGlzdDplcSgjaWQpIGxpIgogICAgfSwKICAgIOaQnOe0ojogJy51bFBpY1R4dC5jbGVhcmZpeCBsaTsqO2ltZyYmZGF0YS1zcmM7LnNEZXM6ZXEoMSkmJlRleHQ7KicsCiAgICDmkJzntKLpqozor4HmoIfor4Y6ICfns7vnu5/lronlhajpqozor4EnLAp9Cg==
\ No newline at end of file
diff --git a/drpy_js/冠建影视.js b/drpy_js/冠建影视.js
deleted file mode 100644
index 1185140..0000000
--- a/drpy_js/冠建影视.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn5Yag5bu65b2x6KeGJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5wYW5kYWd1YXJkLmNvbScsCiAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0vJywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLycsCiAgICBjbGFzc19wYXJzZTogJy5uYXZiYXItaXRlbXMgbGk6Z3QoMSk6bHQoMTApO2EmJlRleHQ7YSYmaHJlZjsvKFxcZCspJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/分享短视频.js b/drpy_js/分享短视频.js
deleted file mode 100644
index 310b988..0000000
--- a/drpy_js/分享短视频.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/11Sy27UMBTd8xWWQE4yZJIBwYJEQ1XxA0hlVgiN3MQzcetJUj/mATNSVxUSr0FiiUDqgiIVBJW6gCn8zbz4C+zYo1KchZ1zj8+95173EQNMUgya4Nk1oNbq7GLx4UUEnMXvs/XJkeOHoTmNF9Mv85+fxstfp6t3F+PF9zfrb+fVFUEExfrG86P57HT18ati/zl+6/hVNCu4UMFMiDIKw8FgEPAMMZyTBAc5FpYlGVWksDNKKOJ8q0Rd3OyM9GYJHCOWZC1D65MUF6GBtvYHzVrtCgvt6npuGehAkmR/p8Ij0DBYh1CBmaFZKMMoxYxHtg16OS2OWX27i3PhqKwPH7Rb2zbPxLfOe7iQyt7dRsPqVPW3S8S4bgl6nDHcqTWV0ScRFe7te16MIHyEh0LvOhirWOgGNc9KJ0jgNh4mVKZawaIlRaONqmASG5Sip6MI3NjjgSh2BCN513U90Lz/jwmKBchEj6oBM3wgMRcuyUspvPgKpa0GoChl2slcTfeBk5J+UDW6rpPXd4shhNU/hJwljgduAud60CvvOJdSlbR+S7bUhm8mq+V9sMe1oYmhTzzjIS1kNYdLV8vXn9evppGpgAjc07mBpDElcc18tivzH4er2cl/TAglhVBxVYOrpxmTXhfCFAlULxjpkhzReNP9jdDspRHaKC+n71fnxxaY/AXjXE+UJgMAAA==
\ No newline at end of file
diff --git a/drpy_js/刷剧网.js b/drpy_js/刷剧网.js
deleted file mode 100644
index cfd16e3..0000000
--- a/drpy_js/刷剧网.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WIt+WJp+e9kScsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuc2h1YWp1dy5jb20nLAogICAgdXJsOiAnL1Nob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL1NlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAnJywKICAgIGZpbHRlcl91cmw6ICcnLAogICAgZmlsdGVyX2RlZjoge30sCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICcubmF2JiYubmF2X2l0ZW07YSYmVGV4dDthJiZocmVmOy9UeXBlLyguKj8pXC5odG1sJywKICAgIGNhdGVfZXhjbHVkZTogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogYGpzOmlucHV0ID0ge3BhcnNlOiAxLCB1cmw6IGlucHV0LCBqczogJyd9YCwKICAgIGRvdWJsZTogdHJ1ZSwKICAgIOaOqOiNkDogJy5zd2lwZXItd3JhcHBlcjsuYy1keXdVaW07LnRpdGxlJiZUZXh0O2ltZyYmZGF0YS1vcmlnaW5hbDsuYy1oREltVEcmJlRleHQ7YSYmaHJlZjsnLAogICAg5LiA57qnOiAnLmMtZmZlQk9uO3AmJlRleHQ7aW1nJiZkYXRhLW9yaWdpbmFsOy5jLWhESW1URyYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnLnRpdGxlJiZUZXh0Oy5pbmZvJiZwOmVxKDIpJiZUZXh0JywKICAgICAgICBpbWc6ICdpbWcmJmRhdGEtb3JpZ2luYWwnLAogICAgICAgIGRlc2M6ICcuaW5mbyYmcDplcSgzKSYmVGV4dDsuaW5mbyYmcDplcSg0KSYmVGV4dDs7LmluZm8mJnA6ZXEoMSkmJlRleHQ7LmluZm8mJnAmJlRleHQnLAogICAgICAgIGNvbnRlbnQ6ICcuYm90dG9tLWRldGFpbCYmVGV4dCcsCiAgICAgICAgdGFiczogJy5obC1wbGF5cy1mcm9tJiZhJywKICAgICAgICBsaXN0czogJy5obC1wbGF5cy1saXN0OmVxKCNpZCkmJmxpJywKICAgIH0sCiAgICAvL+aQnOe0ojogJ+WIl+ihqDvmoIfpopg75Zu+54mHO+aPj+i/sDvpk77mjqU76K+m5oOFJywKICAgIOaQnOe0ojogJyonLAp9Cg==
\ No newline at end of file
diff --git a/drpy_js/刺猬影视.js b/drpy_js/刺猬影视.js
deleted file mode 100644
index 0471ab2..0000000
--- a/drpy_js/刺猬影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/22Qv07DMBCHZ/IUntqkND5GlIhnYIGtUuXEbm3kJJbt/AN1RQx9BQamMrCwRkK8DG15DJwQpA54Ofnu9306+zq5Y6nFxBixzv2sTEiOs0bpAn9122O3m6MHD7ljSbK0rLERmlJRhaHJiJSTyY1rTefeJoi9imikS8nQ1YgcXl8Oz58OGHwuNXiElcz19k/dcfu2/3j/3j2OI16YXs+tVSYCaA1Oa2Nw097DmCi1dAEQOWUNVlxBVVAwvKhBUFi1qXTPAEXWzF36grnN5MgaRnTKb/81DKNTEGoKs9kpPriXimjTb49zUiVEh8KyzCAporX1L4JIWv8yiMnvt/SVa7aKwV8s6HnwZzvzNj9JKAuRdQEAAA==
\ No newline at end of file
diff --git a/drpy_js/剧哥哥.js b/drpy_js/剧哥哥.js
deleted file mode 100644
index 04855d5..0000000
--- a/drpy_js/剧哥哥.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/ASdotKRYPNu8cLtwdABO3MDeyNp8SITwKEVrcmMRsD6s0DQiKXK91uXHy81Bhzh8xPZzDl/A9cOXQrBxH+Qn2Zl2eNL3Ogzx+kAqZMq7TDGW7Ndfho+4VAcQyAx6N07mGF5YukrplQJjqw/gopLQePqQvE+ScNKoCQ2l41iCJRm0JQIEiQj0DOrgBIRLU+XkexeSynWxNkf/wA6th6IWpx/qyxB6J44MXofwezVp+cbrmBYL1EY3zNgLA+4yrM/GSbNpDsV9FB9HgwHfSjw+FAKjsM/tANsfMsn45FCcFSrfP0XE3FbViva67CK+1aJ6xuxbFxLbKf79QownEGvGJrcnCqKmi33nNwMdJHSSkghAoLmcZsRg1qi5c8FbELXTlQkBUQJ4s02+FW+bW33VEBqjPrX7O0lN4oBk+18UOrqmz22YyfuAos4OpAtya8FBiwubA1NNCMqL14rBeu92vubH5vhQeyHsW6Hhg2r+ioSGGiIjWhSNPnfELBTA//sChPpsz8FjR0Ofh25xWH3WhxVUsZn6Odu1A2ddcIhi8ZV7wxN5uMSyIUCeGbdVgKS5+kcTSobM0M8jnTVUmETOWWhH6tJs4Ksm/dloj8aBmvRxaW7DtAdjvGhJzN0x0K9VAvdE6c/O/3swrSnyBXkCxpeaKjQUUcVhKCHsX4k8pQBDopM0rLFCq1x17btJrvtUBDqZBLcJa0MKvg4QUhOpQuuwOE3g6sfidReeLAVi/xlFXFBSPS8xTEcznMHQRaB9ma60tGQuAgA0HbTq2oC9QBNaXX5ups4ajqbFoMeYNYjY7kZBrkUa9mJMOmVJd0dsUsl3Ia+omTmhC/IvQZAzza8exHJxobOIHQw/sttK1jwKKE3k92L/SJRsu3F4sLW9EBqNnHZB44ZEcFfmPPDH71/r6IcxNy/dwQzrkiXhF83hAHlcd4Ne5CaGe5Woag48S0x6nceL4eRlaPwZ6vGooE/9kNcvMHeevRKcrk3KM6xX/SnkWg2iLsa0zMOKz9kMU6l7xekjcvRSc5c3Jqd2T+hYA61ph540z5zIXiUyoDkpQHXil60cSCnax7rywH7RiMa7zze6/IXIPLCo9BEc0+5nKnmuFaeZ/zeHpJiD5+d0ZJ72p/LkuYmxc7+iozlGXgxJ4zN+roJnPvmpW1Dm53ZUGm7KSXhHhxs1VHoBqAWrUkMrTSPCJ0bQsK9IJKsa7zZJJD61zpaV8JDgQY13ls=
\ No newline at end of file
diff --git a/drpy_js/剧圈圈.js b/drpy_js/剧圈圈.js
deleted file mode 100644
index ccee5c7..0000000
--- a/drpy_js/剧圈圈.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn5Ymn5ZyI5ZyIJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5qcXF6eC5jYy8nLAogICAgdXJsOiAnL3ZvZHNob3cvZnlmaWx0ZXIuaHRtbCcsCiAgICAiZmlsdGVyX3VybCI6ICJ7e2ZsLuWcsOWMun19e3tmbC7mjpLluo99fXt7Zmwu5Ymn5oOFfX17e2ZsLuexu+Wei319e3tmbC7or63oqIB9fS9wYWdlL2Z5cGFnZXt7Zmwu5bm05Lu9fX0iLAogICJmaWx0ZXJfZGVmIjogewogICAgImRpYW55aW5nIjogewogICAgICAi57G75Z6LIjogImlkL2RpYW55aW5nIgogICAgfSwKICAgICJqdWppIjogewogICAgICAi57G75Z6LIjogImlkL2p1amkiCiAgICB9LAogICAgImRvbmdtYW4iOiB7CiAgICAgICLnsbvlnosiOiAiaWQvZG9uZ21hbiIKICAgIH0sCiAgICAiem9uZ3lpIjogewogICAgICAi57G75Z6LIjogImlkL3pvbmd5aSIKICAgIH0sCiAgICAiamlsdXBpYW4iOiB7CiAgICAgICLnsbvlnosiOiAiaWQvamlsdXBpYW4iCiAgICB9LAogICAgInNodWFuZ2p1IjogewogICAgICAi57G75Z6LIjogImlkL3NodWFuZ2p1IgogICAgfQogIH0sCiAgICBmaWx0ZXI6IHsiZGlhbnlpbmciOlt7ImtleSI6Iuexu+WeiyIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiJpZC8xIn0seyJuIjoi5Yqo5L2c54mHIiwidiI6ImlkL2Rvbmd6dW9waWFuIn0seyJuIjoi5Zac5Ymn54mHIiwidiI6ImlkL3hpanVwaWFuIn0seyJuIjoi54ix5oOF54mHIiwidiI6ImlkL2FpcWluZ3BpYW4ifSx7Im4iOiLnp5HlubvniYciLCJ2IjoiaWQva2VodWFucGlhbiJ9LHsibiI6IuaBkOaAlueJhyIsInYiOiJpZC9rb25nYnVwaWFuIn0seyJuIjoi5Ymn5oOF54mHIiwidiI6ImlkL2p1cWluZ3BpYW4ifSx7Im4iOiLmiJjkuonniYciLCJ2IjoiaWQvemhhbnpoZW5ncGlhbiJ9LHsibiI6IuWKqOeUu+eJhyIsInYiOiJpZC9kb25naHVhcGlhbiJ9XX0seyJrZXkiOiLliafmg4UiLCJuYW1lIjoi5Ymn5oOFIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiTmV0ZmxpeCIsInYiOiJjbGFzcy9OZXRmbGl4LyJ9LHsibiI6IuWWnOWJpyIsInYiOiJjbGFzcy/llpzliacvIn0seyJuIjoi54ix5oOFIiwidiI6ImNsYXNzL+eIseaDhS8ifSx7Im4iOiLmgZDmgJYiLCJ2IjoiY2xhc3Mv5oGQ5oCWLyJ9LHsibiI6IuWKqOS9nCIsInYiOiJjbGFzcy/liqjkvZwvIn0seyJuIjoi56eR5bm7IiwidiI6ImNsYXNzL+enkeW5uy8ifSx7Im4iOiLliafmg4UiLCJ2IjoiY2xhc3Mv5Ymn5oOFLyJ9LHsibiI6IuaImOS6iSIsInYiOiJjbGFzcy/miJjkuokvIn0seyJuIjoi54qv572qIiwidiI6ImNsYXNzL+eKr+e9qi8ifSx7Im4iOiLliqjnlLsiLCJ2IjoiY2xhc3Mv5Yqo55S7LyJ9LHsibiI6IuWlh+W5uyIsInYiOiJjbGFzcy/lpYflubsvIn0seyJuIjoi5q2m5L6gIiwidiI6ImNsYXNzL+atpuS+oC8ifSx7Im4iOiLlhpLpmakiLCJ2IjoiY2xhc3Mv5YaS6ZmpLyJ9LHsibiI6IuaequaImCIsInYiOiJjbGFzcy/mnqrmiJgvIn0seyJuIjoi5oGQ5oCWIiwidiI6ImNsYXNzL+aBkOaAli8ifSx7Im4iOiLmgqznlpEiLCJ2IjoiY2xhc3Mv5oKs55aRLyJ9LHsibiI6IuaDiuaCmiIsInYiOiJjbGFzcy/mg4rmgpovIn0seyJuIjoi5Y+k6KOFIiwidiI6ImNsYXNzL+WPpOijhS8ifSx7Im4iOiLljoblj7IiLCJ2IjoiY2xhc3Mv5Y6G5Y+yLyJ9LHsibiI6IuWutuW6rSIsInYiOiJjbGFzcy/lrrbluq0vIn0seyJuIjoi5ZCM5oCnIiwidiI6ImNsYXNzL+WQjOaApy8ifSx7Im4iOiLov5DliqgiLCJ2IjoiY2xhc3Mv6L+Q5YqoLyJ9LHsibiI6IuWEv+erpSIsInYiOiJjbGFzcy/lhL/nq6UvIn0seyJuIjoi57uP5YW4IiwidiI6ImNsYXNzL+e7j+WFuC8ifSx7Im4iOiLpnZLmmKUiLCJ2IjoiY2xhc3Mv6Z2S5pilLyJ9LHsibiI6IuaWh+iJuiIsInYiOiJjbGFzcy/mlofoibovIn0seyJuIjoi5b6u55S15b2xIiwidiI6ImNsYXNzL+W+rueUteW9sS8ifSx7Im4iOiLnuqrlvZXniYciLCJ2IjoiY2xhc3Mv57qq5b2V54mHLyJ9LHsibiI6Iue9kee7nOeUteW9sSIsInYiOiJjbGFzcy/nvZHnu5znlLXlvbEvIn1dfSx7ImtleSI6IuWcsOWMuiIsIm5hbWUiOiLlnLDljLoiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLnvo7lm70iLCJ2IjoiYXJlYS/nvo7lm70vIn0seyJuIjoi6Z+p5Zu9IiwidiI6ImFyZWEv6Z+p5Zu9LyJ9LHsibiI6IuaXpeacrCIsInYiOiJhcmVhL+aXpeacrC8ifSx7Im4iOiLms7Dlm70iLCJ2IjoiYXJlYS/ms7Dlm70vIn0seyJuIjoi5Lit5Zu96aaZ5rivIiwidiI6ImFyZWEv5Lit5Zu96aaZ5rivLyJ9LHsibiI6IuS4reWbveWPsOa5viIsInYiOiJhcmVhL+S4reWbveWPsOa5vi8ifSx7Im4iOiLmlrDliqDlnaEiLCJ2IjoiYXJlYS/mlrDliqDlnaEvIn0seyJuIjoi6ams5p2l6KW/5LqaIiwidiI6ImFyZWEv6ams5p2l6KW/5LqaLyJ9LHsibiI6IuWNsOW6piIsInYiOiJhcmVhL+WNsOW6pi8ifSx7Im4iOiLoi7Hlm70iLCJ2IjoiYXJlYS/oi7Hlm70vIn0seyJuIjoi5rOV5Zu9IiwidiI6ImFyZWEv5rOV5Zu9LyJ9LHsibiI6IuW+t+WbvSIsInYiOiJhcmVhL+W+t+WbvS8ifSx7Im4iOiLliqDmi7/lpKciLCJ2IjoiYXJlYS/liqDmi7/lpKcvIn0seyJuIjoi6KW/54+t54mZIiwidiI6ImFyZWEv6KW/54+t54mZLyJ9LHsibiI6IuS/hOe9l+aWryIsInYiOiJhcmVhL+S/hOe9l+aWry8ifSx7Im4iOiLlhbblroMiLCJ2IjoiYXJlYS/lhbblroMvIn1dfSx7ImtleSI6IuW5tOS7vSIsIm5hbWUiOiLlubTku70iLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiIyMDI0IiwidiI6Ii95ZWFyLzIwMjQifSx7Im4iOiIyMDIzIiwidiI6Ii95ZWFyLzIwMjMifSx7Im4iOiIyMDIyIiwidiI6Ii95ZWFyLzIwMjIifSx7Im4iOiIyMDIxIiwidiI6Ii95ZWFyLzIwMjEifSx7Im4iOiIyMDIwIiwidiI6Ii95ZWFyLzIwMjAifSx7Im4iOiIyMDE5IiwidiI6Ii95ZWFyLzIwMTkifSx7Im4iOiIyMDE4IiwidiI6Ii95ZWFyLzIwMTgifSx7Im4iOiIyMDE3IiwidiI6Ii95ZWFyLzIwMTcifSx7Im4iOiIyMDE2IiwidiI6Ii95ZWFyLzIwMTYifSx7Im4iOiIyMDE1IiwidiI6Ii95ZWFyLzIwMTUifSx7Im4iOiIyMDE0IiwidiI6Ii95ZWFyLzIwMTQifSx7Im4iOiIyMDEzIiwidiI6Ii95ZWFyLzIwMTMifSx7Im4iOiIyMDEyIiwidiI6Ii95ZWFyLzIwMTIifSx7Im4iOiIyMDExIiwidiI6Ii95ZWFyLzIwMTEifSx7Im4iOiIyMDEwIiwidiI6Ii95ZWFyLzIwMTAifSx7Im4iOiIyMDA5IiwidiI6Ii95ZWFyLzIwMDkifSx7Im4iOiIyMDA4IiwidiI6Ii95ZWFyLzIwMDgifSx7Im4iOiIyMDA3IiwidiI6Ii95ZWFyLzIwMDcifSx7Im4iOiIyMDA2IiwidiI6Ii95ZWFyLzIwMDYifSx7Im4iOiIyMDA1IiwidiI6Ii95ZWFyLzIwMDUifSx7Im4iOiIyMDA0IiwidiI6Ii95ZWFyLzIwMDQifSx7Im4iOiIyMDAzIiwidiI6Ii95ZWFyLzIwMDMifSx7Im4iOiIyMDAyIiwidiI6Ii95ZWFyLzIwMDIifSx7Im4iOiIyMDAxIiwidiI6Ii95ZWFyLzIwMDEifSx7Im4iOiIyMDAwIiwidiI6Ii95ZWFyLzIwMDAifSx7Im4iOiIxOTk5IiwidiI6Ii95ZWFyLzE5OTkifSx7Im4iOiIxOTk4IiwidiI6Ii95ZWFyLzE5OTgifSx7Im4iOiIxOTk3IiwidiI6Ii95ZWFyLzE5OTcifSx7Im4iOiIxOTk2IiwidiI6Ii95ZWFyLzE5OTYifSx7Im4iOiIxOTk1IiwidiI6Ii95ZWFyLzE5OTUifSx7Im4iOiIxOTk0IiwidiI6Ii95ZWFyLzE5OTQifSx7Im4iOiIxOTkzIiwidiI6Ii95ZWFyLzE5OTMifSx7Im4iOiIxOTkyIiwidiI6Ii95ZWFyLzE5OTIifSx7Im4iOiIxOTkxIiwidiI6Ii95ZWFyLzE5OTEifSx7Im4iOiIxOTkwIiwidiI6Ii95ZWFyLzE5OTAifSx7Im4iOiIxOTg5IiwidiI6Ii95ZWFyLzE5ODkifSx7Im4iOiIxOTg4IiwidiI6Ii95ZWFyLzE5ODgifSx7Im4iOiIxOTg3IiwidiI6Ii95ZWFyLzE5ODcifSx7Im4iOiIxOTg2IiwidiI6Ii95ZWFyLzE5ODYifSx7Im4iOiIxOTg1IiwidiI6Ii95ZWFyLzE5ODUifSx7Im4iOiIxOTg0IiwidiI6Ii95ZWFyLzE5ODQifSx7Im4iOiIxOTgzIiwidiI6Ii95ZWFyLzE5ODMifSx7Im4iOiIxOTgyIiwidiI6Ii95ZWFyLzE5ODIifSx7Im4iOiIxOTgxIiwidiI6Ii95ZWFyLzE5ODEifSx7Im4iOiIxOTgwIiwidiI6Ii95ZWFyLzE5ODAifV19LHsia2V5Ijoi5o6S5bqPIiwibmFtZSI6IuaOkuW6jyIsInZhbHVlIjpbeyJuIjoi5pe26Ze05o6S5bqPIiwidiI6ImJ5L3RpbWUvIn0seyJuIjoi5Lq65rCU5o6S5bqPIiwidiI6ImJ5L2hpdHMvIn0seyJuIjoi6K+E5YiG5o6S5bqPIiwidiI6ImJ5L3Njb3JlLyJ9XX1dLCJqdWppIjpbeyJrZXkiOiLnsbvlnosiLCJuYW1lIjoi57G75Z6LIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiaWQvMiJ9LHsibiI6IuWbveS6p+WJpyIsInYiOiJpZC9ndW9jaGFuanUifSx7Im4iOiLmuK/lj7DliaciLCJ2IjoiaWQvZ2FuZ3RhaWp1In0seyJuIjoi5pel6Z+p5YmnIiwidiI6ImlkL3JpaGFuanUifSx7Im4iOiLmrKfnvo7liaciLCJ2IjoiaWQvb3VtZWlqdSJ9LHsibiI6IuazsOWbveWJpyIsInYiOiJpZC90YWlndW9qdSJ9XX0seyJrZXkiOiLliafmg4UiLCJuYW1lIjoi5Ymn5oOFIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiTmV0ZmxpeCIsInYiOiJjbGFzcy9OZXRmbGl4LyJ9LHsibiI6IueIseaDhSIsInYiOiJjbGFzcy/niLHmg4UvIn0seyJuIjoi6KiA5oOFIiwidiI6ImNsYXNzL+iogOaDhS8ifSx7Im4iOiLpg73luIIiLCJ2IjoiY2xhc3Mv6YO95biCLyJ9LHsibiI6IuWutuW6rSIsInYiOiJjbGFzcy/lrrbluq0vIn0seyJuIjoi5oiY5LqJIiwidiI6ImNsYXNzL+aImOS6iS8ifSx7Im4iOiLllpzliaciLCJ2IjoiY2xhc3Mv5Zac5YmnLyJ9LHsibiI6IuWPpOijhSIsInYiOiJjbGFzcy/lj6Too4UvIn0seyJuIjoi5q2m5L6gIiwidiI6ImNsYXNzL+atpuS+oC8ifSx7Im4iOiLlgbblg48iLCJ2IjoiY2xhc3Mv5YG25YOPLyJ9LHsibiI6IuWOhuWPsiIsInYiOiJjbGFzcy/ljoblj7IvIn0seyJuIjoi5oKs55aRIiwidiI6ImNsYXNzL+aCrOeWkS8ifSx7Im4iOiLnp5HlubsiLCJ2IjoiY2xhc3Mv56eR5bm7LyJ9LHsibiI6IuWGkumZqSIsInYiOiJjbGFzcy/lhpLpmakvIn0seyJuIjoi5oOK5oKaIiwidiI6ImNsYXNzL+aDiuaCmi8ifSx7Im4iOiLniq/nvaoiLCJ2IjoiY2xhc3Mv54qv572qLyJ9LHsibiI6Iui/kOWKqCIsInYiOiJjbGFzcy/ov5DliqgvIn0seyJuIjoi5oGQ5oCWIiwidiI6ImNsYXNzL+aBkOaAli8ifSx7Im4iOiLliafmg4UiLCJ2IjoiY2xhc3Mv5Ymn5oOFLyJ9LHsibiI6IuWlh+W5uyIsInYiOiJjbGFzcy/lpYflubsvIn0seyJuIjoi57qq5b2V54mHIiwidiI6ImNsYXNzL+e6quW9leeJhy8ifSx7Im4iOiLngb7pmr4iLCJ2IjoiY2xhc3Mv54G+6Zq+LyJ9LHsibiI6IuWKqOS9nCIsInYiOiJjbGFzcy/liqjkvZwvIn1dfSx7ImtleSI6IuWcsOWMuiIsIm5hbWUiOiLlnLDljLoiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLkuK3lm73lpKfpmYYiLCJ2IjoiYXJlYS/kuK3lm73lpKfpmYYvIn0seyJuIjoi576O5Zu9IiwidiI6ImFyZWEv576O5Zu9LyJ9LHsibiI6IumfqeWbvSIsInYiOiJhcmVhL+mfqeWbvS8ifSx7Im4iOiLml6XmnKwiLCJ2IjoiYXJlYS/ml6XmnKwvIn0seyJuIjoi5rOw5Zu9IiwidiI6ImFyZWEv5rOw5Zu9LyJ9LHsibiI6IuS4reWbvemmmea4ryIsInYiOiJhcmVhL+S4reWbvemmmea4ry8ifSx7Im4iOiLkuK3lm73lj7Dmub4iLCJ2IjoiYXJlYS/kuK3lm73lj7Dmub4vIn0seyJuIjoi5paw5Yqg5Z2hIiwidiI6ImFyZWEv5paw5Yqg5Z2hLyJ9LHsibiI6IumprOadpeilv+S6miIsInYiOiJhcmVhL+mprOadpeilv+S6mi8ifSx7Im4iOiLljbDluqYiLCJ2IjoiYXJlYS/ljbDluqYvIn0seyJuIjoi6Iux5Zu9IiwidiI6ImFyZWEv6Iux5Zu9LyJ9LHsibiI6IuazleWbvSIsInYiOiJhcmVhL+azleWbvS8ifSx7Im4iOiLlvrflm70iLCJ2IjoiYXJlYS/lvrflm70vIn0seyJuIjoi5Yqg5ou/5aSnIiwidiI6ImFyZWEv5Yqg5ou/5aSnLyJ9LHsibiI6Iuilv+ePreeJmSIsInYiOiJhcmVhL+ilv+ePreeJmS8ifSx7Im4iOiLkv4TnvZfmlq8iLCJ2IjoiYXJlYS/kv4TnvZfmlq8vIn0seyJuIjoi5YW25a6DIiwidiI6ImFyZWEv5YW25a6DLyJ9XX0seyJrZXkiOiLlubTku70iLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiMjAyNCIsInYiOiIveWVhci8yMDI0In0seyJuIjoiMjAyMyIsInYiOiIveWVhci8yMDIzIn0seyJuIjoiMjAyMiIsInYiOiIveWVhci8yMDIyIn0seyJuIjoiMjAyMSIsInYiOiIveWVhci8yMDIxIn0seyJuIjoiMjAyMCIsInYiOiIveWVhci8yMDIwIn0seyJuIjoiMjAxOSIsInYiOiIveWVhci8yMDE5In0seyJuIjoiMjAxOCIsInYiOiIveWVhci8yMDE4In0seyJuIjoiMjAxNyIsInYiOiIveWVhci8yMDE3In0seyJuIjoiMjAxNiIsInYiOiIveWVhci8yMDE2In0seyJuIjoiMjAxNSIsInYiOiIveWVhci8yMDE1In0seyJuIjoiMjAxNCIsInYiOiIveWVhci8yMDE0In0seyJuIjoiMjAxMyIsInYiOiIveWVhci8yMDEzIn0seyJuIjoiMjAxMiIsInYiOiIveWVhci8yMDEyIn0seyJuIjoiMjAxMSIsInYiOiIveWVhci8yMDExIn0seyJuIjoiMjAxMCIsInYiOiIveWVhci8yMDEwIn0seyJuIjoiMjAwOSIsInYiOiIveWVhci8yMDA5In0seyJuIjoiMjAwOCIsInYiOiIveWVhci8yMDA4In0seyJuIjoiMjAwNyIsInYiOiIveWVhci8yMDA3In0seyJuIjoiMjAwNiIsInYiOiIveWVhci8yMDA2In0seyJuIjoiMjAwNSIsInYiOiIveWVhci8yMDA1In0seyJuIjoiMjAwNCIsInYiOiIveWVhci8yMDA0In0seyJuIjoiMjAwMyIsInYiOiIveWVhci8yMDAzIn0seyJuIjoiMjAwMiIsInYiOiIveWVhci8yMDAyIn0seyJuIjoiMjAwMSIsInYiOiIveWVhci8yMDAxIn0seyJuIjoiMjAwMCIsInYiOiIveWVhci8yMDAwIn0seyJuIjoiMTk5OSIsInYiOiIveWVhci8xOTk5In0seyJuIjoiMTk5OCIsInYiOiIveWVhci8xOTk4In0seyJuIjoiMTk5NyIsInYiOiIveWVhci8xOTk3In0seyJuIjoiMTk5NiIsInYiOiIveWVhci8xOTk2In0seyJuIjoiMTk5NSIsInYiOiIveWVhci8xOTk1In0seyJuIjoiMTk5NCIsInYiOiIveWVhci8xOTk0In0seyJuIjoiMTk5MyIsInYiOiIveWVhci8xOTkzIn0seyJuIjoiMTk5MiIsInYiOiIveWVhci8xOTkyIn0seyJuIjoiMTk5MSIsInYiOiIveWVhci8xOTkxIn0seyJuIjoiMTk5MCIsInYiOiIveWVhci8xOTkwIn0seyJuIjoiMTk4OSIsInYiOiIveWVhci8xOTg5In0seyJuIjoiMTk4OCIsInYiOiIveWVhci8xOTg4In0seyJuIjoiMTk4NyIsInYiOiIveWVhci8xOTg3In0seyJuIjoiMTk4NiIsInYiOiIveWVhci8xOTg2In0seyJuIjoiMTk4NSIsInYiOiIveWVhci8xOTg1In0seyJuIjoiMTk4NCIsInYiOiIveWVhci8xOTg0In0seyJuIjoiMTk4MyIsInYiOiIveWVhci8xOTgzIn0seyJuIjoiMTk4MiIsInYiOiIveWVhci8xOTgyIn0seyJuIjoiMTk4MSIsInYiOiIveWVhci8xOTgxIn0seyJuIjoiMTk4MCIsInYiOiIveWVhci8xOTgwIn1dfSx7ImtleSI6IuaOkuW6jyIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtOaOkuW6jyIsInYiOiJieS90aW1lLyJ9LHsibiI6IuS6uuawlOaOkuW6jyIsInYiOiJieS9oaXRzLyJ9LHsibiI6IuivhOWIhuaOkuW6jyIsInYiOiJieS9zY29yZS8ifV19XSwiZG9uZ21hbiI6W3sia2V5Ijoi5Ymn5oOFIiwibmFtZSI6IuWJp+aDhSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6Ik5ldGZsaXgiLCJ2IjoiY2xhc3MvTmV0ZmxpeC8ifSx7Im4iOiLlpYflubsiLCJ2IjoiY2xhc3Mv5aWH5bm7LyJ9LHsibiI6IuWKqOS9nCIsInYiOiJjbGFzcy/liqjkvZwvIn0seyJuIjoi56eR5bm7IiwidiI6ImNsYXNzL+enkeW5uy8ifSx7Im4iOiLllpzliaciLCJ2IjoiY2xhc3Mv5Zac5YmnLyJ9LHsibiI6IuWGkumZqSIsInYiOiJjbGFzcy/lhpLpmakvIn0seyJuIjoi5ZCO5a6rIiwidiI6ImNsYXNzL+WQjuWuqy8ifSx7Im4iOiLniLHmg4UiLCJ2IjoiY2xhc3Mv54ix5oOFLyJ9LHsibiI6IuaCrOeWkSIsInYiOiJjbGFzcy/mgqznlpEvIn0seyJuIjoi5py65oiYIiwidiI6ImNsYXNzL+acuuaImC8ifSx7Im4iOiLmiJjkuokiLCJ2IjoiY2xhc3Mv5oiY5LqJLyJ9LHsibiI6IuWFtuS7liIsInYiOiJjbGFzcy/lhbbku5YvIn1dfSx7ImtleSI6IuWcsOWMuiIsIm5hbWUiOiLlnLDljLoiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLkuK3lm73lpKfpmYYiLCJ2IjoiYXJlYS/kuK3lm73lpKfpmYYvIn0seyJuIjoi5pel5pysIiwidiI6ImFyZWEv5pel5pysLyJ9LHsibiI6Iue+juWbvSIsInYiOiJhcmVhL+e+juWbvS8ifSx7Im4iOiLpn6nlm70iLCJ2IjoiYXJlYS/pn6nlm70vIn0seyJuIjoi5Lit5Zu96aaZ5rivIiwidiI6ImFyZWEv5Lit5Zu96aaZ5rivLyJ9LHsibiI6IuS4reWbveWPsOa5viIsInYiOiJhcmVhL+S4reWbveWPsOa5vi8ifSx7Im4iOiLoi7Hlm70iLCJ2IjoiYXJlYS/oi7Hlm70vIn0seyJuIjoi5rOV5Zu9IiwidiI6ImFyZWEv5rOV5Zu9LyJ9LHsibiI6IuWKoOaLv+WkpyIsInYiOiJhcmVhL+WKoOaLv+Wkpy8ifSx7Im4iOiLopb/nj63niZkiLCJ2IjoiYXJlYS/opb/nj63niZkvIn0seyJuIjoi5L+E572X5pavIiwidiI6ImFyZWEv5L+E572X5pavLyJ9LHsibiI6IuWFtuWugyIsInYiOiJhcmVhL+WFtuWugy8ifV19LHsia2V5Ijoi5bm05Lu9IiwibmFtZSI6IuW5tOS7vSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IjIwMjQiLCJ2IjoiL3llYXIvMjAyNCJ9LHsibiI6IjIwMjMiLCJ2IjoiL3llYXIvMjAyMyJ9LHsibiI6IjIwMjIiLCJ2IjoiL3llYXIvMjAyMiJ9LHsibiI6IjIwMjEiLCJ2IjoiL3llYXIvMjAyMSJ9LHsibiI6IjIwMjAiLCJ2IjoiL3llYXIvMjAyMCJ9LHsibiI6IjIwMTkiLCJ2IjoiL3llYXIvMjAxOSJ9LHsibiI6IjIwMTgiLCJ2IjoiL3llYXIvMjAxOCJ9LHsibiI6IjIwMTciLCJ2IjoiL3llYXIvMjAxNyJ9LHsibiI6IjIwMTYiLCJ2IjoiL3llYXIvMjAxNiJ9LHsibiI6IjIwMTUiLCJ2IjoiL3llYXIvMjAxNSJ9LHsibiI6IjIwMTQiLCJ2IjoiL3llYXIvMjAxNCJ9LHsibiI6IjIwMTMiLCJ2IjoiL3llYXIvMjAxMyJ9LHsibiI6IjIwMTIiLCJ2IjoiL3llYXIvMjAxMiJ9LHsibiI6IjIwMTEiLCJ2IjoiL3llYXIvMjAxMSJ9LHsibiI6IjIwMTAiLCJ2IjoiL3llYXIvMjAxMCJ9LHsibiI6IjIwMDkiLCJ2IjoiL3llYXIvMjAwOSJ9LHsibiI6IjIwMDgiLCJ2IjoiL3llYXIvMjAwOCJ9LHsibiI6IjIwMDciLCJ2IjoiL3llYXIvMjAwNyJ9LHsibiI6IjIwMDYiLCJ2IjoiL3llYXIvMjAwNiJ9LHsibiI6IjIwMDUiLCJ2IjoiL3llYXIvMjAwNSJ9LHsibiI6IjIwMDQiLCJ2IjoiL3llYXIvMjAwNCJ9LHsibiI6IjIwMDMiLCJ2IjoiL3llYXIvMjAwMyJ9LHsibiI6IjIwMDIiLCJ2IjoiL3llYXIvMjAwMiJ9LHsibiI6IjIwMDEiLCJ2IjoiL3llYXIvMjAwMSJ9LHsibiI6IjIwMDAyMDI0IiwidiI6Ii95ZWFyLzIwMDAyMDI0In0seyJuIjoiMjAyMyIsInYiOiIveWVhci8yMDIzIn0seyJuIjoiMjAyMiIsInYiOiIveWVhci8yMDIyIn0seyJuIjoiMjAyMSIsInYiOiIveWVhci8yMDIxIn0seyJuIjoiMjAyMCIsInYiOiIveWVhci8yMDIwIn0seyJuIjoiMjAxOSIsInYiOiIveWVhci8yMDE5In0seyJuIjoiMjAxOCIsInYiOiIveWVhci8yMDE4In0seyJuIjoiMjAxNyIsInYiOiIveWVhci8yMDE3In0seyJuIjoiMjAxNiIsInYiOiIveWVhci8yMDE2In0seyJuIjoiMjAxNSIsInYiOiIveWVhci8yMDE1In0seyJuIjoiMjAxNCIsInYiOiIveWVhci8yMDE0In0seyJuIjoiMjAxMyIsInYiOiIveWVhci8yMDEzIn0seyJuIjoiMjAxMiIsInYiOiIveWVhci8yMDEyIn0seyJuIjoiMjAxMSIsInYiOiIveWVhci8yMDExIn0seyJuIjoiMjAxMCIsInYiOiIveWVhci8yMDEwIn0seyJuIjoiMjAwOSIsInYiOiIveWVhci8yMDA5In0seyJuIjoiMjAwOCIsInYiOiIveWVhci8yMDA4In0seyJuIjoiMjAwNyIsInYiOiIveWVhci8yMDA3In0seyJuIjoiMjAwNiIsInYiOiIveWVhci8yMDA2In0seyJuIjoiMjAwNSIsInYiOiIveWVhci8yMDA1In0seyJuIjoiMjAwNCIsInYiOiIveWVhci8yMDA0In0seyJuIjoiMjAwMyIsInYiOiIveWVhci8yMDAzIn0seyJuIjoiMjAwMiIsInYiOiIveWVhci8yMDAyIn0seyJuIjoiMjAwMSIsInYiOiIveWVhci8yMDAxIn0seyJuIjoiMjAwMCIsInYiOiIveWVhci8yMDAwIn0seyJuIjoiMTk5OSIsInYiOiIveWVhci8xOTk5In0seyJuIjoiMTk5OCIsInYiOiIveWVhci8xOTk4In0seyJuIjoiMTk5NyIsInYiOiIveWVhci8xOTk3In0seyJuIjoiMTk5NiIsInYiOiIveWVhci8xOTk2In0seyJuIjoiMTk5NSIsInYiOiIveWVhci8xOTk1In0seyJuIjoiMTk5NCIsInYiOiIveWVhci8xOTk0In0seyJuIjoiMTk5MyIsInYiOiIveWVhci8xOTkzIn0seyJuIjoiMTk5MiIsInYiOiIveWVhci8xOTkyIn0seyJuIjoiMTk5MSIsInYiOiIveWVhci8xOTkxIn0seyJuIjoiMTk5MCIsInYiOiIveWVhci8xOTkwIn0seyJuIjoiMTk4OSIsInYiOiIveWVhci8xOTg5In0seyJuIjoiMTk4OCIsInYiOiIveWVhci8xOTg4In0seyJuIjoiMTk4NyIsInYiOiIveWVhci8xOTg3In0seyJuIjoiMTk4NiIsInYiOiIveWVhci8xOTg2In0seyJuIjoiMTk4NSIsInYiOiIveWVhci8xOTg1In0seyJuIjoiMTk4NCIsInYiOiIveWVhci8xOTg0In0seyJuIjoiMTk4MyIsInYiOiIveWVhci8xOTgzIn0seyJuIjoiMTk4MiIsInYiOiIveWVhci8xOTgyIn0seyJuIjoiMTk4MSIsInYiOiIveWVhci8xOTgxIn0seyJuIjoiMTk4MCIsInYiOiIveWVhci8xOTgwIn1dfSx7ImtleSI6IuaOkuW6jyIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtOaOkuW6jyIsInYiOiJieS90aW1lLyJ9LHsibiI6IuS6uuawlOaOkuW6jyIsInYiOiJieS9oaXRzLyJ9LHsibiI6IuivhOWIhuaOkuW6jyIsInYiOiJieS9zY29yZS8ifV19XSwiem9uZ3lpIjpbeyJrZXkiOiLliafmg4UiLCJuYW1lIjoi5Ymn5oOFIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiTmV0ZmxpeCIsInYiOiJjbGFzcy9OZXRmbGl4LyJ9LHsibiI6Iuecn+S6uuengCIsInYiOiJjbGFzcy/nnJ/kurrnp4AvIn0seyJuIjoi6Z+z5LmQIiwidiI6ImNsYXNzL+mfs+S5kC8ifSx7Im4iOiLllpzliaciLCJ2IjoiY2xhc3Mv5Zac5YmnLyJ9LHsibiI6IuiEseWPo+engCIsInYiOiJjbGFzcy/ohLHlj6Pnp4AvIn0seyJuIjoi5paH5YyWIiwidiI6ImNsYXNzL+aWh+WMli8ifSx7Im4iOiLnvo7po58iLCJ2IjoiY2xhc3Mv576O6aOfLyJ9XX0seyJrZXkiOiLlnLDljLoiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi576O5Zu9IiwidiI6ImFyZWEv576O5Zu9LyJ9LHsibiI6IumfqeWbvSIsInYiOiJhcmVhL+mfqeWbvS8ifSx7Im4iOiLml6XmnKwiLCJ2IjoiYXJlYS/ml6XmnKwvIn0seyJuIjoi5Lit5Zu96aaZ5rivIiwidiI6ImFyZWEv5Lit5Zu96aaZ5rivLyJ9LHsibiI6IuS4reWbveWPsOa5viIsInYiOiJhcmVhL+S4reWbveWPsOa5vi8ifSx7Im4iOiLljbDluqYiLCJ2IjoiYXJlYS/ljbDluqYvIn0seyJuIjoi6Iux5Zu9IiwidiI6ImFyZWEv6Iux5Zu9LyJ9LHsibiI6IuazleWbvSIsInYiOiJhcmVhL+azleWbvS8ifSx7Im4iOiLlvrflm70iLCJ2IjoiYXJlYS/lvrflm70vIn0seyJuIjoi5Yqg5ou/5aSnIiwidiI6ImFyZWEv5Yqg5ou/5aSnLyJ9LHsibiI6Iuilv+ePreeJmSIsInYiOiJhcmVhL+ilv+ePreeJmS8ifSx7Im4iOiLkv4TnvZfmlq8iLCJ2IjoiYXJlYS/kv4TnvZfmlq8vIn0seyJuIjoi5YW25a6DIiwidiI6ImFyZWEv5YW25a6DLyJ9XX0seyJrZXkiOiLor63oqIAiLCJuYW1lIjoi6K+t6KiAIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi6Iux6K+tIiwidiI6Imxhbmcv6Iux6K+tLyJ9LHsibiI6IumfqeivrSIsInYiOiJsYW5nL+mfqeivrS8ifSx7Im4iOiLml6Xor60iLCJ2IjoibGFuZy/ml6Xor60vIn0seyJuIjoi57Kk6K+tIiwidiI6Ii9sYW5nL+eypOivrS8ifSx7Im4iOiLms5Xor60iLCJ2IjoibGFuZy/ms5Xor60vIn0seyJuIjoi5YW25LuWIiwidiI6Imxhbmcv5YW25LuWLyJ9XX0seyJrZXkiOiLlubTku70iLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiMjAyNCIsInYiOiIveWVhci8yMDI0In0seyJuIjoiMjAyMyIsInYiOiIveWVhci8yMDIzIn0seyJuIjoiMjAyMiIsInYiOiIveWVhci8yMDIyIn0seyJuIjoiMjAyMSIsInYiOiIveWVhci8yMDIxIn0seyJuIjoiMjAyMCIsInYiOiIveWVhci8yMDIwIn0seyJuIjoiMjAxOSIsInYiOiIveWVhci8yMDE5In0seyJuIjoiMjAxOCIsInYiOiIveWVhci8yMDE4In0seyJuIjoiMjAxNyIsInYiOiIveWVhci8yMDE3In0seyJuIjoiMjAxNiIsInYiOiIveWVhci8yMDE2In0seyJuIjoiMjAxNSIsInYiOiIveWVhci8yMDE1In0seyJuIjoiMjAxNCIsInYiOiIveWVhci8yMDE0In0seyJuIjoiMjAxMyIsInYiOiIveWVhci8yMDEzIn0seyJuIjoiMjAxMiIsInYiOiIveWVhci8yMDEyIn0seyJuIjoiMjAxMSIsInYiOiIveWVhci8yMDExIn0seyJuIjoiMjAxMCIsInYiOiIveWVhci8yMDEwIn0seyJuIjoiMjAwOSIsInYiOiIveWVhci8yMDA5In0seyJuIjoiMjAwOCIsInYiOiIveWVhci8yMDA4In0seyJuIjoiMjAwNyIsInYiOiIveWVhci8yMDA3In0seyJuIjoiMjAwNiIsInYiOiIveWVhci8yMDA2In0seyJuIjoiMjAwNSIsInYiOiIveWVhci8yMDA1In0seyJuIjoiMjAwNCIsInYiOiIveWVhci8yMDA0In0seyJuIjoiMjAwMyIsInYiOiIveWVhci8yMDAzIn0seyJuIjoiMjAwMiIsInYiOiIveWVhci8yMDAyIn0seyJuIjoiMjAwMSIsInYiOiIveWVhci8yMDAxIn0seyJuIjoiMjAwMCIsInYiOiIveWVhci8yMDAwIn0seyJuIjoiMTk5MCIsInYiOiIveWVhci8xOTkwIn0seyJuIjoiMTk4MCIsInYiOiIveWVhci8xOTgwIn0seyJuIjoiMTk3MCIsInYiOiIveWVhci8xOTcwIn0seyJuIjoiMTk2MCIsInYiOiIveWVhci8xOTYwIn0seyJuIjoiMTk1MCIsInYiOiIveWVhci8xOTUwIn1dfSx7ImtleSI6IuaOkuW6jyIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtOaOkuW6jyIsInYiOiJieS90aW1lLyJ9LHsibiI6IuS6uuawlOaOkuW6jyIsInYiOiJieS9oaXRzLyJ9LHsibiI6IuivhOWIhuaOkuW6jyIsInYiOiJieS9zY29yZS8ifV19XSwiamlsdXBpYW4iOlt7ImtleSI6IuaOkuW6jyIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtOaOkuW6jyIsInYiOiJieS90aW1lLyJ9LHsibiI6IuS6uuawlOaOkuW6jyIsInYiOiJieS9oaXRzLyJ9LHsibiI6IuivhOWIhuaOkuW6jyIsInYiOiJieS9zY29yZS8ifV19XSwic2h1YW5nanUiOlt7ImtleSI6IuWJp+aDhSIsIm5hbWUiOiLliafmg4UiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLpg73luIIiLCJ2IjoiY2xhc3Mv6YO95biCLyJ9LHsibiI6IuWPpOijhSIsInYiOiJjbGFzcy/lj6Too4UvIn0seyJuIjoi56m/6LaKIiwidiI6ImNsYXNzL+epv+i2ii8ifSx7Im4iOiLph43nlJ8iLCJ2IjoiY2xhc3Mv6YeN55SfLyJ9LHsibiI6IumAhuiirSIsInYiOiJjbGFzcy/pgIbooq0vIn0seyJuIjoi6LWY5am/IiwidiI6ImNsYXNzL+i1mOWpvy8ifSx7Im4iOiLmiJjnpZ4iLCJ2IjoiY2xhc3Mv5oiY56WeLyJ9LHsibiI6IuelnuWMuyIsInYiOiJjbGFzcy/npZ7ljLsvIn0seyJuIjoi55Sc5a6gIiwidiI6ImNsYXNzL+eUnOWuoC8ifSx7Im4iOiLomZDmgYsiLCJ2IjoiY2xhc3Mv6JmQ5oGLLyJ9LHsibiI6IuiogOaDhSIsInYiOiJjbGFzcy/oqIDmg4UvIn1dfSx7ImtleSI6IuaOkuW6jyIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtOaOkuW6jyIsInYiOiJieS90aW1lLyJ9LHsibiI6IuS6uuawlOaOkuW6jyIsInYiOiJieS9oaXRzLyJ9LHsibiI6IuivhOWIhuaOkuW6jyIsInYiOiJieS9zY29yZS8ifV19XX0sCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoKiovcGFnZS9meXBhZ2UuaHRtbCcsCiAgICBjbGFzc19wYXJzZTogJy5uYXZiYXItaXRlbXMgbGk6Z3QoMSk6bHQoOCk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pXC5odG1sJywKICAgIGNhdGVfZXhjbHVkZTogJ+S7iuaXpeabtOaWsHzng63mppwnLAp9
\ No newline at end of file
diff --git a/drpy_js/剧圈圈[自动].js b/drpy_js/剧圈圈[自动].js
deleted file mode 100644
index 6f1b619..0000000
--- a/drpy_js/剧圈圈[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfoh6rliqgnLAogICAg5qih5p2/5L+u5pS5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIE9iamVjdC5hc3NpZ24obXViYW4u6Ieq5YqoLuS6jOe6pywgewogICAgICAgICAgICB0YWJfdGV4dDogJ2Rpdi0tc21hbGwmJlRleHQnLAogICAgICAgIH0pOwogICAgfSksCiAgICB0aXRsZTogJ+WJp+WciOWciFvoh6rliqhdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5qcXF6eC5jYy8nLAogICAgdXJsOiAnL3ZvZHNob3cvaWQvZnljbGFzcy9wYWdlL2Z5cGFnZS5odG1sJywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gqKi9wYWdlL2Z5cGFnZS5odG1sJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyBsaTpndCgxKTpsdCg4KTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPylcLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAn5LuK5pel5pu05pawfOeDreamnCcsCiAgICBwYXJzZV91cmw6ICdodHRwczovLzEzNy4yMjAuMTgzLjEwMi9qeC93ZWJjbG91ZC5waHA/dmlkPScsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBrY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3ZhciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKICAgICAgICBsZXQga3VybCA9IGtjb2RlLnVybDsKICAgICAgICAvLyBsb2coa3VybCk7CiAgICAgICAgaW5wdXQgPSBydWxlLnBhcnNlX3VybCArIGt1cmw7CiAgICAgICAgbGV0IGluaXRfanMgPSBgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobmF2aWdhdG9yLCB7cGxhdGZvcm06IHtnZXQ6ICgpID0+ICdpUGhvbmUnfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICdzZWxmJywge2dldDogKCk9PiB7cmV0dXJuIHt9O319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhpcywgJ3NlbGYnLCB7Z2V0OiAoKT0+IHtyZXR1cm4ge307fX0pO2A7CiAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgIHBhcnNlOiAxLAogICAgICAgICAgICB1cmw6IGlucHV0LAogICAgICAgICAgICAvLyBqczogYHRyeXtsb2NhdGlvbi5ocmVmID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaWZyYW1lIilbMl0uc3JjO31jYXRjaChlcnIpIHt9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXJ0IikuY2xpY2soKWAsCiAgICAgICAgICAgIGpzOiBgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXJ0IikuY2xpY2soKWAsCiAgICAgICAgICAgIHBhcnNlX2V4dHJhOiAnJmluaXRfc2NyaXB0PScgKyBlbmNvZGVVUklDb21wb25lbnQoYmFzZTY0RW5jb2RlKGluaXRfanMpKSwKICAgICAgICB9CiAgICB9KSwKfQ==
\ No newline at end of file
diff --git a/drpy_js/剧巴巴.js b/drpy_js/剧巴巴.js
deleted file mode 100644
index 73432c3..0000000
--- a/drpy_js/剧巴巴.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/剧狗狗.js b/drpy_js/剧狗狗.js
deleted file mode 100644
index b5332cb..0000000
--- a/drpy_js/剧狗狗.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var rule={
- title: "剧狗狗",
- host: "https://www.jugougou.me",
- url: "/vodtype/fyclass-fypage.html",
- searchUrl: "/vodsearch/**----------fypage---.html",
- searchable: 2,
- quickSearch: 0,
- filterable: 1,
- filter: "",
- filter_url: "",
- filter_def: "",
- headers: {
- "User-Agent": "MOBILE_UA"
- },
- timeout: 5000,
- class_parse: ".foornav li;a&&Text;a&&href;/(\\d+)\\.html",
- cate_exclude: "Netflix|今日更新|专题列表|排行榜",
- play_parse: true,
- lazy:$js.toString(()=>{
- input = {parse:1,url:input,js:'document.querySelector("#playleft iframe").contentWindow.document.querySelector("#start").click();'};
- }),
- double: false,
- 推荐: "*",
- 一级: ".ewave-vodlist__item;a&&title;a&&data-original;.pic-text&&Text;a&&href",
- 二级: {
- title: ".ewave-content__detail&&.title&&Text;.data:eq(0)&&Text",
- img: ".pic&&img&&data-original",
- desc: ".data:eq(5)&&Text;.data:eq(3)&&Text;.data:eq(2)&&Text;;",
- content: ".art-content&&Text",
- tabs: ".ewave-pannel:has(.ewave-content__playlist)",
- lists: ".ewave-content__playlist:eq(#id)&&li",
- tab_text: "h3&&Text",
- list_text: "body&&Text",
- list_url: "a&&href"
- },
- detailUrl: "",
- 搜索: "*"
-}
\ No newline at end of file
diff --git a/drpy_js/剧迷.js b/drpy_js/剧迷.js
deleted file mode 100644
index 1cb1c16..0000000
--- a/drpy_js/剧迷.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/3WQv0rEQBDG+zxFqlxy3O1iJwniI9hoJ4RJspfk2FzC7uQfamWlWGuhFhZ6NoKFIJzFvcyZ8zHcjQGxcJphPr7vx8wcBHMWIgEp03hhZ2UAC5I1hcjJZnW1XS0n5olhqkIIfGQNuuYoSqvpVGbAuWUdKmk0Mc4cz6hAmKLkzNwbIt3zQ3e/VoGep1w9J0XOlPZ5sfxavw9ikksNThAL6VJa1zWZQxy2koR5RgdTKbjy0CqPZJLXdNaGXG1NC4iZGnQjCWZ8cEsGIkyOfjP9PB7/5+9hfgFC6u3IAqoAxDRFlknL4qkbo73juBztXceDn7t1TwSbeZqPbcGoTcb7zvEfLCDzWRPyMtLczcdld/PY3b5116+n2/OX7ulOf+8bEYjeq4UBAAA=
\ No newline at end of file
diff --git a/drpy_js/剧集TV.js b/drpy_js/剧集TV.js
deleted file mode 100644
index 824af1a..0000000
--- a/drpy_js/剧集TV.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/61TwW7UMBC98xWRkNJN1CSllB6yQog/qEThuprNOhsXx0ntydIFKnFCQirVag9waC9wYHup1EocoPxOybZ/ge24KN3ugQO+JH7z3szzjD0C4YiKEeex8+aeoxZSZCR2Vn5/mF0fvd9+sbJq4KyQqNAMsZRxFI1CulPtUByFSWIZlWCKEMmseBWl44SBlIFd6biEIVE/YYY5s3xJQCTZc6Nq/iPfD4J/0EBfO1xvoN2KJi+fGTx21hospQyJaGgWMn56JQipDxdyGAV9EEFOeOUw2gXX3SZ7qL+ZIGk39KNO6D/x2sUTQNIjewmrBqZBJ+eXPyf1p7Prz7/e1ofTqy8H9bdjyy0ZjG+qoahIgzJ4PVZKy2E0p6qnm82uPjy5+jhRUd+GL3+8m1/MtNk8YFRiQDknwpo1U+rSfOi6A0AICkGHlAPrhphVeX/hNGWzv0l8cWASN/Nuzzx7YIUh5SgK1y1jsttZ827J9VKFtTHd+wUDLdKAyESz2rk2vWUV1peiD5eij5aiG3c9JgVHwtE4QJIH2o7qYVrcYSL0pb0Urgu3A62BP93ams+m9fS0xdCDMVr9GsyYtJv7dKD8QMwL7MTaB1AuO3/1nreQode8HTsuG9y392JyPP/+9T9fg/0/B+TGrPcDAAA=
\ No newline at end of file
diff --git a/drpy_js/动漫巴士[漫].js b/drpy_js/动漫巴士[漫].js
deleted file mode 100644
index 36e7a01..0000000
--- a/drpy_js/动漫巴士[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICBhdXRob3I6ICflsI/lj6/kuZAvMjQwNTI2L+esrOS4gOeJiCcsCiAgICB0aXRsZTogJ+WKqOa8q+W3tOWjq1vmvKtdJywKICAgIGhvc3Q6ICdodHRwOi8vZG04NC5zaXRlJywKICAgIGhvc3RKczogJ3ByaW50KEhPU1QpO2xldCBodG1sPXJlcXVlc3QoSE9TVCx7aGVhZGVyczp7IlVzZXItQWdlbnQiOk1PQklMRV9VQX19KTtsZXQgc3JjPSBqc3AucGRmaChodG1sLCJ1bCYmYTplcSgwKSYmaHJlZiIpO3ByaW50KHNyYyk7SE9TVD1zcmMnLAogICAgaGVhZGVyczogeydVc2VyLUFnZW50JzogJ01PQklMRV9VQSd9LAogICAg57yW56CBOiAndXRmLTgnLAogICAgdGltZW91dDogNTAwMCwKCiAgICBob21lVXJsOiAnLycsCiAgICB1cmw6ICcvc2hvdy1meWNsYXNzLS1meWZpbHRlci1meXBhZ2UuaHRtbCcsCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5ieX19LXt7ZmwuY2xhc3N9fS0te3tmbC55ZWFyfX0nLAogICAgZGV0YWlsVXJsOiAnJywKICAgIHNlYXJjaFVybDogJy9zLSoqLS0tLS0tLS0tZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoYWJsZTogMSwKICAgIHF1aWNrU2VhcmNoOiAxLAogICAgZmlsdGVyYWJsZTogMSwKCiAgICBjbGFzc19uYW1lOiAn5Zu95Lqn5Yqo5ryrJuaXpeacrOWKqOa8qybmrKfnvo7liqjmvKsm55S15b2xJywKICAgIGNsYXNzX3VybDogJzEmMiYzJjQnLAogICAgZmlsdGVyX2RlZjoge30sCgogICAgcHJveHlfcnVsZTogJycsCiAgICBzbmlmZmVyOiAwLAogICAgaXNWaWRlbzogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgcGFyc2VfdXJsOiAnJywKICAgIGxhenk6IGBqczoKbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKbGV0IGt1cmwgPSBwZGZoKGh0bWwsJ2JvZHkmJmlmcmFtZScpLm1hdGNoKC9zcmM9IiguKj8pIi8pWzFdOwppbnB1dD0ga3VybApgLAoKICAgIGxpbWl0OiA5LAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAovL+WIl+ihqDvmoIfpopg75Zu+54mHO+aPj+i/sDvpk77mjqU76K+m5oOFKOWPr+S4jeWGmSkKICAgIOS4gOe6pzogJy52X2xpc3QgbGk7YSYmdGl0bGU7YSYmZGF0YS1iZzsuZGVzYyYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewovL+WQjeensDvnsbvlnosKICAgICAgICAidGl0bGUiOiAiaDEmJlRleHQ7bWV0YVtuYW1lKj1jbGFzc10mJmNvbnRlbnQiLAovL+WbvueJhwogICAgICAgICJpbWciOiAiaW1nJiZzcmMiLAovL+S4u+imgeaPj+i/sDvlubTku7075Zyw5Yy6O+a8lOWRmDvlr7zmvJQKICAgICAgICAiZGVzYyI6ICJtZXRhW25hbWUqPXVwZGF0ZV9kYXRlXSYmY29udGVudDttZXRhW25hbWUqPXJlbGVhc2VfZGF0ZV0mJmNvbnRlbnQ7bWV0YVtuYW1lKj1hcmVhXSYmY29udGVudDttZXRhW25hbWUqPWFjdG9yXSYmY29udGVudDttZXRhW25hbWUqPWRpcmVjdG9yXSYmY29udGVudCIsCi8v566A5LuLCiAgICAgICAgImNvbnRlbnQiOiAicDplcSgtMikmJlRleHQiLAovL+e6v+i3r+aVsOe7hAogICAgICAgICJ0YWJzIjogIi50YWJfY29udHJvbCYmbGkiLAovL+e6v+i3r+agh+mimAogICAgICAgICJ0YWJfdGV4dCI6ICJib2R5JiZUZXh0IiwKLy/mkq3mlL7mlbDnu4Qg6YCJ6ZuG5YiX6KGoCiAgICAgICAgImxpc3RzIjogIi5wbGF5X2xpc3Q6ZXEoI2lkKSYmYSIsCi8v6YCJ6ZuG5qCH6aKYCiAgICAgICAgImxpc3RfdGV4dCI6ICJib2R5JiZUZXh0IiwKLy/pgInpm4bpk77mjqUKICAgICAgICAibGlzdF91cmwiOiAiYSYmaHJlZiIKICAgIH0sCiAgICDmkJzntKI6ICcqJywKCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJXYlVzcVFSVEgzKy9IbU5lKzBMV24yMWVKWGxnSVJVK1EzVUJFc0xUYUNyWXRTbTljYjJSUTJZT1ZGVUZhOW1XY0dmMFdqYzZjTXhQRnN0RGxjZ1hmN2UvMzkrem8yWFBVbEVVaVpIVE1TcEdaZUpLTWtzblpXQ0pCUW1RK05oY1h5S3QxZXJRdGVEazIrMU9Jc1JTWkY1cXVsZHZaY2tjTElPbVFzcWNiOUxtdXJBTEltUE9MNVFzcVV3QVpkM082VGdGbUYyK3RweTNJSkdCMnZtdlVTY0R6S21mTnhqR2NKd0hyc3BWV0tRTjFFaUJyWlY1NXcxV1pBcnluZDhTdmQrR2VFdkN6YjVWWlpvVzlYUEY5N0lDcDB1UHBFRFk1R1k4dDZoNnp3bE83OEJpd3gzYllIbEN1ZTJuNHFQWlIwMGUwajVqZTF0NDJmVmo3c09FalA5Q0xTOE9QYUQ5aSttSHRoMDAvcFAyUTZRZTFIL3pZcjRtazBTMTNqOVoyUG5WTE4xSEEwclI0S2R5NVdhdXh1MzJWVEUwdkpmU3p2czFSWjEwbGljbUZ4WGpuV0dzOFpCSDdyKzNFK2w3NzhBSW1Ra0tRbmZEYkplcTU5T1lLTWdsNkRxdjByWUFUMkFVODc3aEVmMWZnUEFsQmRvSVZhK0xkUVoyRUlEdkJWcTk1SGpNSm1OM1hXYzZCVEFLK2w4TUc5U0JUZ0hVckhzdmtvVTRDWm02WmUvQThGZWk2YmU1VXNhNExtRDJVMm45TytNRWx4TWo5cmUycHJZMyt6MXZyOTJ2bFcrZTNtVDdiOStVVzllZTVsK1o1NEYvTXMvaWIwbnd0NnY4c0hmajJQT2VMZFBNYzZpUUUrZWIzbldlbnlySnJjSjZFL2p6M3pqeGI2WGVxQ1JxcWJBd0FBQT09Jwp9
\ No newline at end of file
diff --git a/drpy_js/动漫网[漫].js b/drpy_js/动漫网[漫].js
deleted file mode 100644
index f70cb1a..0000000
--- a/drpy_js/动漫网[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/21Qy0rDQBTd9ysCwqQNzUTUhSSIPyCudCVSbpNpMjB5OHOntYo/IC5040Zd6EILbl0VHz9jU/wLJ02QKt7NfZ1z7uGmug8Z/Xq8nt28r9HP6cV8+kQR+srasuyqwHVCVAGZHbTS/7CCK6zBWuzqdMe0hGhBiOCGMgRpSS2YAZy2LBPIUTDfsmfnk/L1ef52dWDSod1dLMvJfXn3YbbNjWac5ArNMEEslO95o9GIRnkWp5Bt0jBsQFoKg/GGeYTjgnmDcShAKXcwLiBmNMFUNEDFQIbJ/g+87j3HcX+iJplimbfQ6xUgVeWfKtTcTRhETPZ6Kcu0JbgfY3u14wtsb3QCIGSPHWOVE8kGAXW8NnW2O8ua5eXt/OXByGlRCxo/1UMrxYiDz46MXvfPspmu1Marh5vT1ZnFbwMq4GQscogIiQDBzSWPeQYioAUPXTSWfhszVs6+AVTVwMEGAgAA
\ No newline at end of file
diff --git a/drpy_js/努努影院1.js b/drpy_js/努努影院1.js
deleted file mode 100644
index 9bcd88a..0000000
--- a/drpy_js/努努影院1.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICfliqrliqrlvbHpmaInLAogIGhvc3Q6ICdodHRwOi8vd3d3LmlqaWFucGluLmNvbScsCiAgLy91cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0vJywKICB1cmw6Jy92b2RzaG93L2Z5Y2xhc3MtZnlmaWx0ZXIvJywKICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS8nLAogIHNlYXJjaGFibGU6IDIscXVpY2tTZWFyY2g6IDAsZmlsdGVyYWJsZTogMSwKICBoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJ30sCiAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zIGxpOmd0KDApOmx0KDgpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS8nLAogIGZpbHRlcl91cmw6ICd7e2ZsLmFyZWF9fS17e2ZsLmJ5fX0te3tmbC5jbGFzc319LS0tLS1meXBhZ2UtLS17e2ZsLnllYXJ9fScsCiAgcGxheV9wYXJzZTogdHJ1ZSxsaW1pdDogNixkb3VibGU6IHRydWUsCiAgbGF6eTogImpzOlxuICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xuICBsZXQgaGNvbmYgPSBodG1sLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV07XG4gIGxldCBqc29uID0gSlNPTjUucGFyc2UoaGNvbmYpO1xuICBsZXQgdXJsID0ganNvbi51cmw7XG4gIGlmIChqc29uLmVuY3J5cHQgPT0gJzEnKSB7XG4gICAgdXJsID0gdW5lc2NhcGUodXJsKTtcbiAgfSBlbHNlIGlmIChqc29uLmVuY3J5cHQgPT0gJzInKSB7XG4gICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpO1xuICB9XG4gIGlmICgvXFwuKG0zdTh8bXA0fG00YXxtcDMpLy50ZXN0KHVybCkpIHtcbiAgICBpbnB1dCA9IHtcbiAgICAgIHBhcnNlOiAwLFxuICAgICAgang6IDAsXG4gICAgICB1cmw6IHVybCxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGlucHV0ID0gdXJsICYmIHVybC5zdGFydHNXaXRoKCdodHRwJykgJiYgdGVsbElzSngodXJsKSA/IHtwYXJzZTowLGp4OjEsdXJsOnVybH06aW5wdXQ7XG4gIH0iLAogIOaOqOiNkDogJy50YWItbGlzdC5hY3RpdmU7YS5tb2R1bGUtcG9zdGVyLWl0ZW0ubW9kdWxlLWl0ZW07Lm1vZHVsZS1wb3N0ZXItaXRlbS10aXRsZSYmVGV4dDsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZicsCiAg5LiA57qnOiAnYm9keSBhLm1vZHVsZS1wb3N0ZXItaXRlbS5tb2R1bGUtaXRlbTthJiZ0aXRsZTsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZicsCiAg5LqM57qnOiB7CiAgICB0aXRsZTogJ2gxJiZUZXh0Oy5tb2R1bGUtaW5mby10YWctbGluazplcSgtMSkmJlRleHQnLAogICAgaW1nOiAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsfHxkYXRhLXNyY3x8c3JjJywKICAgIGRlc2M6ICcubW9kdWxlLWluZm8taXRlbTplcSgtMikmJlRleHQ7Lm1vZHVsZS1pbmZvLXRhZy1saW5rJiZUZXh0Oy5tb2R1bGUtaW5mby10YWctbGluazplcSgxKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbTplcSgyKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbTplcSgxKSYmVGV4dCcsCiAgICBjb250ZW50OiAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbiYmVGV4dCcsCiAgICB0YWJzOiAnLm1vZHVsZS10YWItaXRlbScsCiAgICBsaXN0czogJy5tb2R1bGUtcGxheS1saXN0OmVxKCNpZCkgYScsCiAgICB0YWJfdGV4dDogJ2Rpdi0tc21hbGwmJlRleHQnLAogIH0sCiAg5pCc57SiOiAnYm9keSAubW9kdWxlLWl0ZW07Lm1vZHVsZS1jYXJkLWl0ZW0tdGl0bGUmJlRleHQ7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0O2EmJmhyZWY7Lm1vZHVsZS1pbmZvLWl0ZW0tY29udGVudCYmVGV4dCcsCiAgZmlsdGVyOidINHNJQUFBQUFBQUFBKzJZM1c0YVJ4VEg3L3NVRWRlKzJIV2FqK1pWcWx6UUdEbWtDWkZNM01xTkxObkdFQ0F1WU9UZ1VQQlhZeHZITlRiWXJndExnWmZabVlXMzZNRE0rVUF0SzlSYWxocHhCYi96MzVrOTU4ek9PYlA3TmpBWERrYVd3cEg1d0pOdjN3YStEeTBGbmdTZXZReEdvNEdaUUNUNEtxUlFwQ295RmxmOFEvRGxZbWg0WFdSZ2pwLzBZeWNrS2xOZ2VjWm9oYklTak5VQWFGNnlUaU1NZ0NaWGMzS2xZRFFET0dmNnhHMlhZVTROT0dkbFV6UmJNS2NHSE1jOU5JRDNTMzUwblJUY1R3Tm92ZXF4MkRnMW1nRzhYL3JDYTRObWdQbnBiYlhJendHZ2R2U08vRFNBdmxTUDNjNCsrS0lCeHlYeS9lSm5HS2NCeCsyZUtzOWhuQWJVMXM2OHdpWm9HbENMcGVYYUw2QnB3UGhhV1JGdlFId2FRT3Z2NU9YSEk2TVp3RGtMNzNvcEIrYlVnREYwenIydDMwVzdEbUVnNHhYWnc5NG5YQ2tOcUdVU0luc0ptZ1pjcVc1TzVSbFdTZ05scml4M05qRnpRMEJ0dmV2OUJwRVl3QXkwTjcxV2VjVGhFZFB5MDhHVmVyOEVGMEpCdGwzS05iSGhqTnN1S0k1c2w4Tkt2NWdBUnpSZ3VvK0xzbkVCNmRaQUNhdkpaZ2NUTmdRTW9KTVJwVGE0cmdHWDZlb0RhUVl3bWUvcnBCbkFjZHRIc253RzR6U2duM3VmYVp3Qld2by9TRE5BdnRTNEw3V1JjVC9YaEhNTTR6VGd1UFdzeXBSSXdxNGd4a2lPdWw2MjZxV0tFQXd5YmRWOStiNnJodUZ1QmNZcjRqZHVDd3FTQWI3MFM2SGdBbHY2NXJYYmFvOWJlaFQ1MHM5YXMxOGIyL0F2czk4biszMXVueVg3TExmYlpMZTUzU0s3eGV6Mk4yaFhmNW45TWRrZmMvc2pzai9pOW9ka2Y4anREOGorZ05zcFhwdkhhMU84Tm8vWHBuaHRIcTlOOGRvOFhwdml0WG04RnNWcjhYZ3RpdGZpOFZvVXI4WGp0U2hlaThkclVid1dqOWVpZU5WZi92Qjh0MFNQanN6a2haUDkyNk1qdDIvNjI5ZG1namRoZFNsTTdEcU9yRzBaNVhuNFRaU2UrNHQxa1lScUVuMzJlaUUwdU92VG1hL3UzUXZNUlYvY2JxUDNLZGwrelZYM0RiRjZJMkxaa1ZhaVRmeTg0SGVXRU9jM3dxbUNwbUhDSGozMkxPSFhvLzNPRW40ZHlxK2Z1czBENmxBR3FFZkhaUkdLdndHODM0Y0U5WDBEckh0UnpneE1XdEwrZXpkTHhKV0FMWGNJazNTSmY5dnAvTHFTZnhjYzMzbDh1MkNocGhxRjJEbkFjdzd3dEd0TXU4YVgyRFYrZWgyWlh3cmZhdVBvcjZTOHlncHNkZzI4NnEzdnNhcW5BTjA4Ny9acVNkaVlHbkJjdmlyVGNKNDNRRVVpTGh0UWdRMVFVYnB5bXprc1NrTmdCYVQvQ1h3eGdKcHpLczUzUWRPQTl5dGRzamNoRFRodWEwOWU0OXVxQmh6WGFNaGsxblh5OUVZellzSThYUCtxK2dqa1FRUE9VVi9yclc3QWFBMTNWdUZWMVZiMUdWMGZBcXZVcXVaVHBSNEFhbWNWbFY3UU5FeHI1clJtL2w5cjVweXFtYStDa1ZzdG1uNkYwZThUbUJlcjlnNmcyQnJBT1RNblhnNWlNSUJhYnRjN3c4OUhHcWdHalA4azFjdnQ5REp3OGplQWMrNGZpQkljMlExTWNpeVhaWWQ5NXRLQTkvUDVBT1QzRmlKcUtrMnc1Z2E0ZG5URk5BV1l6OE9PK3lkOE9qTkFyd0Y3SWxuQzE0QWgwSk4wS2FyUWFBemduS1cwTEVLbE5VQjVxWXZ1TnVabENIZDNuQysxWFFmZnZ6Uk1jdlQreDRJK1BTQlBpLzBYV095anp4ZURrZmtmUTVFNTlmdGlrUlg5dTNWbStTK1YyYmE3MEJrQUFBPT0nCn0=
\ No newline at end of file
diff --git a/drpy_js/包子漫画[画].js b/drpy_js/包子漫画[画].js
deleted file mode 100644
index 6e0cfdb..0000000
--- a/drpy_js/包子漫画[画].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/北川影视.js b/drpy_js/北川影视.js
deleted file mode 100644
index 8680c6b..0000000
--- a/drpy_js/北川影视.js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8g5Y+R5biD6aG1IGh0dHBzOi8vd3d3LmJjeWluZ3NoaS5pbmsvZmIKbXViYW4ubXhwcm8u5LqM57qnLmRlc2MgPSAnLm1vZHVsZS1pbmZvLWl0ZW06ZXEoMykmJlRleHQ7OzsubW9kdWxlLWluZm8taXRlbS0tc3BhbjplcSgyKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbS0tc3BhbjplcSgxKSYmVGV4dCc7Cm11YmFuLm14cHJvLuS6jOe6py50YWJzID0gJyN5LXBsYXlMaXN0IC5tb2R1bGUtdGFiLWl0ZW0nOwp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAn5YyX5bed5b2x6KeGJywKICAgIOaooeadvzogJ214cHJvJywKICAgIC8vIGhvc3Q6J2h0dHBzOi8vYmN6aHVpanUuY29tJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5iY3lpbmdzaGkuaW5rL2ZiJywKICAgIGhvc3RKczogJ3ByaW50KEhPU1QpO2xldCBodG1sPXJlcXVlc3QoSE9TVCx7aGVhZGVyczp7IlVzZXItQWdlbnQiOlBDX1VBfX0pO2xldCBzcmM9anNwLnBkZmgoaHRtbCwibGk6ZXEoMikmJmEmJmhyZWYiKTtwcmludChzcmMpO0hPU1Q9c3JjJywKICAgIC8vIHVybDonL3ZvZHNob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLycsCiAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzZnlmaWx0ZXIvJywKICAgIGZpbHRlcmFibGU6IDEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAnLXt7ZmwuYXJlYX19LXt7ZmwuYnkgb3IgInRpbWUifX0te3tmbC5jbGFzc319LXt7ZmwubGFuZ319LXt7ZmwubGV0dGVyfX0tLS1meXBhZ2UtLS17e2ZsLnllYXJ9fScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJaYlU4VFdSVEh2NHFadC9DQ0tmaXd2Z01FRnkwUEtvcGlmRkZOczJzV01RRjJFMkpJQ3FYWXNqd0hxUWlSWkZjc0drcUxFclpNTS9CbE9uZmFiK0dkM3ZOd3llcWsyVlJkdzd5YjMvL2ZlK2VlZTIvT09RelBETk80ZlArWjhWdDAzTGhzUEJxS2pJNGFqY1p3NUVsVW9wUEtpSGhDOGgrUm9kK2oxZDhOZTNKaXB4TGY4V1FKeGtRanFHdWI4dmVnQXFEbkp2ZGhJZ2IweE9TU2lLMkJCMEJ6enU2VTdFMmNVd0hObVZsMmpvbzRwd0lhUnd0bm9IR3pPZGQraitNVTBManQ1enduQUsxemF0ZGRXOFoxS2lBdlBpdW1YcUduZ09iY08zU3NMTTZwZ0x5WmxjcjZPL1FVa0xjMEoySzBud3JRSzU4c3lkMEFENERXa254WnNsSzRGZ1VVKytSeDVkVXh4cTRBdlovYmVzSHdubEJ0YTJ2djdla0FRMEtEUjJpMmRyY09zb3RFRTk0TzM4WVp2VWNhMWRjWDd1aS9nNk04YXBDSWRtZnZYYkM4cDRrSG5xNXVaMlFrR3RFdTUyYmVtYk5xdlp4dk1wWDFHZHhNQmVoVjNxNkxRZzQ4QUJxM21CZEh1R0VBdEpuSEM4NkdqWnVwZ0E0aHZTMDJkL0VRRk5EN3R0N3hPQUI2MzN6ZXNkN2kreFRRb2YrNXorTUE2SDBmWDdBSFFPdGNmdTBrQ3JoT0JlaVZUcVpkT3kzV01IeG1uam12ejF3Ri9WQ0dJc08vOEtHVWM5bnlUcXpXUTltdzVlOHhXQVZhc093QlVFQWYzckFIUUp1YnRwMzVOTnZNMnZacnRnTHQyTmdEMExaWTh4UlFKTWYvYUpFb0lDOXg2T3pGMFZPZ2IrQjROREtpM2VxamcxTFJybkVEUTAyaEZ0Q3FqNXJlekhxenJvZFlEK202eWJxcDYwMnNOMm02K1JQcDhsSFRMN0YrU2RjdnNuNVIxeSt3ZmtIWHo3TitYdGM1WGxPUDErUjRUVDFlaytNMTlYaE5qdGZVNHpVNVh2bDQ2cDVIeDhhaStrRmwweUkzWCtOQnRXS3k0N3lLS1pXVWRsRGFTYmtDeWhWU01OVnlrdTNFWEVuS1ZWQ3VjaUxHTEV4S0Z5aGRwRndENVJvcDEwRzVUa29ZbERBcDNhQjBrOUlEU2c4cFdGVzRwdlNCMGtmS0RWQnVrSElUbEp1azNBTGxGaW45b1BTVGd2V0dpdzJXR2E0dkE2QU1rSUwxNWk0cDkwQzVSOG9nS0lPbkxzWERjYjRRWW1IRnNSYi9kU0ZFK3JDU1BvRFJZNC9sVHluM1dwYklyNEx6NitPeFVVNSt1V2tuaWRWcTlOSFRrYWozMWdlTlJxaE92WnE3bGVWZXJRSG9yRFJ5LzdYcDhtc0FYZXU5WTc5d1U4OXhPY1JmczJYcjZlanZESGZoOVVYNm56ZDB1UFkyVEhqZVU3M2F2Sm1FL0QwZGJSVytacHZuMThyNXRZQ2ZiYXBxYVBOODJyV3oySklGclZYUVdnV3RWZEJhMWFPMWFxNVRhMVdKcGR4TURIT1pBc3BsOFlTWTNzSmNwb0FXdG5kU3ppY3h1eXFnY1N0Wk1idU40eFJ3Zmt5SUF2NTFEOEI1OVdQcGFJbnlhaFcwc2xiNUc5Y0NvSGN6ZTYrMVZrWUN2Vy9qUXpsbDRmc1UwTGpWTFhGQW5ad0NHbGNvaU9SaXlWcmhMdWlVUlB0dzhKZGJYTVI5VUVCejdFK1ZKK2R3dElKdjBEbklUa0gyQkxUb0ttamxTUllzTGs4ZWtMZWJrUnVMbm9Mdlg2ZlBCWVU2S05SQm9RNEt0ZkZqRnVxV2IvRC9LdDlQQkQ2Zk1udy9PL2g4eXBEVHVLdEZudE1EU3RrK24wZSs4QUdnVGlWeHd5NVp0RUVLdEdULzVUOXVQMWYydUJDVWl2aU5DT0Q3bDhTZ0lnWVZNYWlJUVVVMGZzU0tPUEVKdEpyMlBzTWhBQUE9JywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiovJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyBsaTpndCgxKTpsdCg2KTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykvJywKICAgIGNhdGVfZXhjbHVkZTogJ+abtOaWsCcsCiAgICDkuoznuqc6IHsKICAgICAgICAidGl0bGUiOiAiaDEmJlRleHQ7Lm1vZHVsZS1pbmZvLXRhZyYmVGV4dCIsCiAgICAgICAgImltZyI6ICIubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWwiLAogICAgICAgICJkZXNjIjogIi5tb2R1bGUtaW5mby1pdGVtOmVxKDEpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtOmVxKDIpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtOmVxKDMpJiZUZXh0IiwKICAgICAgICAiY29udGVudCI6ICIubW9kdWxlLWluZm8taW50cm9kdWN0aW9uJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIubW9kdWxlLXRhYi1pdGVtLS1zbWFsbCIsCiAgICAgICAgImxpc3RzIjogIi5tb2R1bGUtcGxheS1saXN0OmVxKCNpZCkgYSIKICAgIH0sCiAgICBsYXp5OiBganM6CgkJdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwoJCXZhciB1cmwgPSBodG1sLnVybDsKCQlpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykgewoJCQl1cmwgPSB1bmVzY2FwZSh1cmwpCgkJfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7CgkJCXVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKQoJCX0KCQlpZiAoL1xcLm0zdTh8XFwubXA0Ly50ZXN0KHVybCkpIHsKCQkJaW5wdXQgPSB7CgkJCQlqeDogMCwKCQkJCXVybDogdXJsLAoJCQkJcGFyc2U6IDAKCQkJfQogICAgICAgIH0gZWxzZSBpZiAoL3lvdWt1fGlxaXlpfHZcXC5xcVxcLmNvbXxwcHR2fHNvaHV8bGVcXC5jb218MTkwNVxcLmNvbXxtZ3R2fGJpbGliaWxpfGl4aWd1YS8udGVzdCh1cmwpKSB7CgkJCWxldCBwbGF5X1VybCA9IC9iaWxpYmlsaS8udGVzdCh1cmwpID8gJ2h0dHBzOi8vangueG1mbHYuY29tLz91cmw9JyA6ICdodHRwczovL2p4Ljc3N2ppZXhpLmNvbS9wbGF5ZXIvP3VybD0nOyAvLyB0eXBlMOeahHBhcnNlCgkJCWlucHV0ID0gewoJCQkJang6IDAsCgkJCQl1cmw6IHVybCwKCQkJCXBsYXlVcmw6IHBsYXlfVXJsLAoJCQkJcGFyc2U6IDEsCgkJCQloZWFkZXI6IEpTT04uc3RyaW5naWZ5KHsKCQkJCQkndXNlci1hZ2VudCc6ICdNb3ppbGxhLzUuMCcsCgkJCQl9KSwKCQkJfQoJCX0gZWxzZSB7CgkJCWlucHV0CgkJfQoJYCwKfQ==
\ No newline at end of file
diff --git a/drpy_js/千百视频[密].js b/drpy_js/千百视频[密].js
deleted file mode 100644
index c07a611..0000000
--- a/drpy_js/千百视频[密].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV9190PMwE57ItC/7T9JSiTYERxVnxJl0JVPWn/SsyHeSI0UTY07WX1JunIWg8DZvKVCyNNakNXJWHFTdqu6RQTIZhcRnUa9efG+4MexfPQHHfDwy+qNQvQwKxiPAZKtfijMx9qOb6tMy+BEoU3pVvRp+j4sO+Fxbg0dgNZIaFB6X95VT+X1b6JBaX2dBDjY8cyIHkrHm2hZngHIJ+yYURVRvjHR7F2m9+5yCzWiBS0p8J4CMiZkrX0MpJ9BdAls7wgGnTYE+FVAihU8bsAPLtHMUJyd6pQkczNa+NHsVE+y56CZ4aPs7rXUcBw7ZNLVKLsIYKnaU5qFGyk+E2E0NPxfsIVcVlHD6HNzM/jAFUZMeeTf/TRCPn43DMqop4OH1C6S7YtGYLxpLFT++zGRb0USdjU5yPubYygmGayFXEbYnWF0Rqs+uXakn2mJF1DIIlOqS7oLXG5X40a58gZkE2d9PlQluvR2Mf8daKXZFc+lHzF/vkn30OrIkTPPeNcd4dclIkcbIq8upaYC1WjIVAUo+UU6pGBnryx4tDcsSub6v7xAmyn5x7Wmj8F7XsPeKvdxqqQSiN0GVbFEq5Q5VId/xzhknyjETFd2e+YoYIVqnCL5l43lOit7akXtE26OFXtWX5HrcdSeqeL6hwkRmIsP9DCFiYykgugQkNohfN8SQCwcTdRhEUXvK0EQg8o/S3W+Ld4OTy3fpRHvDLlIrxHBFd1VyTJKpiYJilEt+R2wil25ZFE1i2WSQ14BSN/Dc+hPd+Ak5NIcKYLr+r+68/LZ8MNAzXZd2ErcNu4HKrkB71OCwx1R8wzbF7AsFbZThJhI+T0z1Du8Q/MA9rO3+fi86/0JyyZH2sDLO+50RhuvGrPqPuCDvn59pAVDdj0sWQMD+sBbC5pXI0nrW60bWeZt2M74I5Cib1Vxp05AS0BKoZd+P32qnxYYTwp30zPUQfkXt1osfbwAZ90FKsg+U21HMMSDlWWHUst5Z5dDTv6GAm6iNu5Dq7e5yec+uSV8eig==
\ No newline at end of file
diff --git a/drpy_js/千神影视.js b/drpy_js/千神影视.js
deleted file mode 100644
index 0d87460..0000000
--- a/drpy_js/千神影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/南瓜影视.js b/drpy_js/南瓜影视.js
deleted file mode 100644
index ff741f2..0000000
--- a/drpy_js/南瓜影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/南瓜影视[优].js b/drpy_js/南瓜影视[优].js
deleted file mode 100644
index 7024cc6..0000000
--- a/drpy_js/南瓜影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKLy8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKLy8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKZ2xvYmFsVGhpcy5nZXRIZWFkZXJzID0gZnVuY3Rpb24gKGlucHV0KSB7CiAgICBsZXQgdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKCk7CiAgICBsZXQgaGVhZGVycyA9IHsKICAgICAgICAndmVyc2lvbl9uYW1lJzogJzEuMC42JywKICAgICAgICAndmVyc2lvbl9jb2RlJzogJzYnLAogICAgICAgICdwYWNrYWdlX25hbWUnOiAnY29tLmFwcC5uYW5ndWF0dicsCiAgICAgICAgJ3NpZ24nOiBtZDUoJ2M0MzFlYTU0MmNlZTk2NzkjdUJGc3pkRU0wb0wwSlJuQCcgKyB0KS50b1VwcGVyQ2FzZSgpLAogICAgICAgICdpbWVpJzogJ2M0MzFlYTU0MmNlZTk2NzknLAogICAgICAgICd0aW1lTWlsbGlzJzogdCwKICAgICAgICAnVXNlci1BZ2VudCc6ICdva2h0dHAvNC42LjAnCiAgICB9OwogICAgcmV0dXJuIGhlYWRlcnMKfQoKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WNl+eTnOW9seinhlvkvJhdJywKICAgIGhvc3Q6ICdodHRwOi8veXMuY2hhbmdtZW5neXVuLmNvbScsCiAgICBob21lVXJsOiAnL2FwaS5waHAvcHJvdmlkZS92b2RfcmFuaz9hcHA9eWx5cyZzb3J0X3R5cGU9bW9udGgmaW1laT1jNDMxZWE1NDJjZWU5Njc5JmlkPTImcGFnZT0xJywKICAgIHVybDogJy9hcGkucGhwL3Byb3ZpZGUvdm9kX2xpc3Q/YXBwPXlseXMmaWQ9ZnljbGFzc2Z5ZmlsdGVyJnBhZ2U9ZnlwYWdlJmltZWk9YzQzMWVhNTQyY2VlOTY3OScsCiAgICBkZXRhaWxVcmw6ICcvYXBpLnBocC9wcm92aWRlL3ZvZF9kZXRhaWw/YXBwPXlseXMmaW1laT1jNDMxZWE1NDJjZWU5Njc5JmlkPWZ5aWQnLAogICAgc2VhcmNoVXJsOiAnL2FwaS5waHAvcHJvdmlkZS9zZWFyY2hfcmVzdWx0X21vcmU/YXBwPXlseXMmdmlkZW9fbmFtZT0qKiZwYWdlU2l6ZT0yMCZ0aWQ9MCZpbWVpPWM0MzFlYTU0MmNlZTk2NzkmcGFnZT1meXBhZ2UnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcl91cmw6ICcmYXJlYT17e2ZsLmFyZWF9fSZ5ZWFyPXt7ZmwueWVhcn19JnR5cGU9e3tmbC5jbGFzc319JnRvdGFsPXt7ZmwudG90YWwgb3IgIueKtuaAgSJ9fSZvcmRlcj17e2ZsLmJ5IG9yICLmlrDkuIrnur8ifX0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyWDBYTFNRQlNHM3lYWFhBUm9LZlJWbkY1RWh5dXh6clRWR2FiRFRDdFNDMjFCNnd4YWk5V09MY0d4bEtDMVFqRHR5MlEzOEJZbUpIdk9XWndKZG94ZTVZN3ZQeitiWlhmL3MyRlRTU3JMOXphVmgvbWlzcXc4S0dqcjYwcENXZFVlNVYxMCtpTjJzdWZ5VTYzd0pELzFyYm95cTNRbTVZNG5vNmVVQ0dxMWptMjFuT3FMb0l3TWptYUxWWFhpQUJZT1o3ZlB5eFYwSUlORGY4V0dJK0lBRmc2Ky9aSnZOZEdCRFBPbzZ0SlRrR0dNM2JlMldTVmpBSU9qWE9QUDNoRUhjR25GOC9pcnFxM2xOVnhVMWpMWXZobStxSUVIcG5wUUgvZTZvdWFEcUUzYVIzelF3MEZuSlZpeW16bzd0c1I2K1FBLzQwTG5WMS9GYi9BQnh2L3dHYjhYQUh6dnpUbHZYWWp2K1FCemJoaDhlQ1BOUzVKZ2pHOEdqaC9BWGNkZ0J3WXoyN0ErVTRCYTVacGRsa1hOQjdvNXhieTJSalpuZUdXUHJEbWI0M3ZFQTFKcWFpR29URDhTUFkxNm11b3AxRk5VVDZLZXBMcUt1a3IwWkE1MDl5UFJzNmhucWI2RStoTFZNNmhucUw2SStpTG9TWFc2QUorQ0dxQ29xM0pkbmEzbjVIcHV0cDZWNjRCMDArNFhjY3Q0L1pDWmpkKzJ6Q2wzK1dHWHQxdml5QVBEeVRpM3hyM242RUNHczlrMDdFSE5NVy9GOFFSMko3T1NVRkxSdHM1anl6WjF0dzJKK1FERGZOeFVOd3gwSUVmYmJuWXFyaUpxUHR5MTNjeU5iaHpCT0lJUlJEQWRiUVRQOU1uUmpwaU1EM0w0cE9UUmk5QzlHdkVpOUlCY3J1NTFpNWVyQi84dHJwRk9PcjVSNHppSHhubGVXQmYrd1gzSmYzNlI3a3VQNVZPTURtUTVBOFFCTENlSU9JQWpEYkU5NkxyemwvcVBKUDNKSzNmb3Ezb2M2RGpRMFFZYUhyWHhlRU1ya0NqWHJ2blc5cHdvK3g3eG5QSHR5ZGdTSnpjQU9KMlgrODdvdFRoWVBnVHRKQk5wUC9HelQ5NnVnZVVRRVFjd09MNy9ZR2RONGdDT3RGdUVKVjJhNGV6MFFycEgyQi94OFY0ZmF3R1FNOEpxSDluN1V6d2pBWlArWW8rYTJGODhpUHRMM0YvKy92Mi85QXNxb3Ztb3Z4UUFBQT09JywKICAgIGhlYWRlcnM6IHsKICAgICAgICAiVXNlci1BZ2VudCI6ICJva2h0dHAvNC42LjAiCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX25hbWU6ICfnlLXop4bliacm55S15b2xJuWKqOa8qybnu7zoibom5rW35aSW57K+6YCJJywgLy8gL2FwaS5waHAvcHJvdmlkZS9ob21lX25hdgogICAgY2xhc3NfdXJsOiAnMiYxJjQmMyY0NicsCiAgICBsaW1pdDogMjAsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogYGpzOgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGdldHZpZGVvKHVybCkgewogICAgICAgICAgICAgICAgbGV0IGpEYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwgewogICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGdldEhlYWRlcnModXJsKQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgaWYgKGpEYXRhLmNvZGUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBqRGF0YS5kYXRhLnVybAogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly80My4xNTQuMTA0LjE1MjoxMjM0L2poYXBpL2NzLnBocD91cmw9JyArIHVybC5zcGxpdCgnPScpWzFdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKC8sLy50ZXN0KGlucHV0KSkgewogICAgICAgICAgICAgICAgbGV0IG1qdXJsID0gaW5wdXQuc3BsaXQoJywnKVsxXQogICAgICAgICAgICAgICAgbGV0IHZpZGVvVXJsID0gZ2V0dmlkZW8obWp1cmwpOwogICAgICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICAgICAgdXJsOiB2aWRlb1VybCwKICAgICAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXItYWdlbnQnOiAnTGF2Zi81OC4xMi4xMDAnCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxldCB2aWRlb1VybCA9IGdldHZpZGVvKGlucHV0KTsKICAgICAgICAgICAgICAgIGlmICgvamhhcGkvLnRlc3QodmlkZW9VcmwpKSB7CiAgICAgICAgICAgICAgICAgICAgdmlkZW9VcmwgPSBnZXR2aWRlbyh2aWRlb1VybCk7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHZpZGVvVXJsLAogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlci1hZ2VudCc6ICdMYXZmLzU4LjEyLjEwMCcKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB2aWRlb1VybCwKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGxvZyhlLnRvU3RyaW5nKCkpCiAgICAgICAgfQoJYCwKICAgIOaOqOiNkDogYGpzOgogICAgICAgIHZhciBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0LCB7CiAgICAgICAgICAgIGhlYWRlcnM6IGdldEhlYWRlcnMoaW5wdXQpCiAgICAgICAgfSk7CiAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgaHRtbC5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CiAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICB0aXRsZTogaXQubmFtZSwKICAgICAgICAgICAgICAgIGltZzogaXQuaW1nLAogICAgICAgICAgICAgICAgZGVzYzogaXQucmVtYXJrcywKICAgICAgICAgICAgICAgIHVybDogaXQuaWQKICAgICAgICAgICAgfSkKICAgICAgICB9KTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICBgLAogICAg5LiA57qnOiBganM6CgkJdmFyIGQgPSBbXTsKCQlsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQsIHsKCQkJaGVhZGVyczogZ2V0SGVhZGVycyhpbnB1dCkKCQl9KTsKCQlodG1sID0gSlNPTi5wYXJzZShodG1sKTsKCQlodG1sLmxpc3QuZm9yRWFjaChmdW5jdGlvbihpdCkgewoJCQlkLnB1c2goewoJCQkJdGl0bGU6IGl0Lm5hbWUsCgkJCQlpbWc6IGl0LmltZywKCQkJCWRlc2M6IGl0Lm1zZywKCQkJCXVybDogaXQuaWQKCQkJfSkKCQl9KTsKCQlzZXRSZXN1bHQoZCk7CglgLAogICAg5LqM57qnOiBganM6CiAgICAgICAgdmFyIGQgPSBbXTsKICAgICAgICBWT0QgPSB7CiAgICAgICAgICAgIHZvZF9pZDogaW5wdXQuc3BsaXQoJ2lkPScpWzFdCiAgICAgICAgfTsKICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQsIHsKICAgICAgICAgICAgICAgIGhlYWRlcnM6IGdldEhlYWRlcnMoaW5wdXQpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBodG1sID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgbGV0IG5vZGUgPSBodG1sLmRhdGE7CiAgICAgICAgICAgIFZPRCA9IHsKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiBub2RlWyduYW1lJ10sCiAgICAgICAgICAgICAgICB2b2RfcGljOiBub2RlWydpbWcnXSwKICAgICAgICAgICAgICAgIHR5cGVfbmFtZTogbm9kZVsndHlwZSddLAogICAgICAgICAgICAgICAgdm9kX3llYXI6IG5vZGVbJ3llYXInXSwKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiAn5pu05paw6IezOiAnICsgbm9kZVsnbXNnJ10gKyAnIC8g6K+E5YiGOiAnICsgbm9kZVsnc2NvcmUnXSwKICAgICAgICAgICAgICAgIHZvZF9jb250ZW50OiBub2RlWydpbmZvJ10uc3RyaXAoKQogICAgICAgICAgICB9OwogICAgICAgICAgICBsZXQgZXBpc29kZXMgPSBub2RlLnBsYXllcl9pbmZvOwogICAgICAgICAgICBsZXQgcGxheU1hcCA9IHt9OwogICAgICAgICAgICBpZiAodHlwZW9mIHBsYXlfdXJsID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgdmFyIHBsYXlfdXJsID0gJycKICAgICAgICAgICAgfQogICAgICAgICAgICBlcGlzb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGVwKSB7CiAgICAgICAgICAgICAgICBsZXQgcGxheXVybHMgPSBlcFsndmlkZW9faW5mbyddOwogICAgICAgICAgICAgICAgcGxheXVybHMuZm9yRWFjaChmdW5jdGlvbihwbGF5dXJsKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHNvdXJjZSA9IGVwWydzaG93J107CiAgICAgICAgICAgICAgICAgICAgaWYgKCFwbGF5TWFwLmhhc093blByb3BlcnR5KHNvdXJjZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGxheU1hcFtzb3VyY2VdID0gW10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcGxheU1hcFtzb3VyY2VdLmFwcGVuZChwbGF5dXJsWyduYW1lJ10uc3RyaXAoKSArICckJyArIHBsYXlfdXJsICsgdXJsZW5jb2RlKHBsYXl1cmxbJ3VybCddKSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBsZXQgcGxheUZyb20gPSBbXTsKICAgICAgICAgICAgbGV0IHBsYXlMaXN0ID0gW107CiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBsYXlNYXApCiAgICAgICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKICAgICAgICAgICAgICAgICAgICBwbGF5RnJvbS5hcHBlbmQoa2V5KTsKICAgICAgICAgICAgICAgICAgICBwbGF5TGlzdC5hcHBlbmQocGxheU1hcFtrZXldLmpvaW4oJyMnKSkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBsZXQgdm9kX3BsYXlfZnJvbSA9IHBsYXlGcm9tLmpvaW4oJyQkJCcpOwogICAgICAgICAgICBsZXQgdm9kX3BsYXlfdXJsID0gcGxheUxpc3Quam9pbignJCQkJyk7CiAgICAgICAgICAgIFZPRFsndm9kX3BsYXlfZnJvbSddID0gdm9kX3BsYXlfZnJvbTsKICAgICAgICAgICAgVk9EWyd2b2RfcGxheV91cmwnXSA9IHZvZF9wbGF5X3VybAogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgbG9nKCfojrflj5bkuoznuqfor6bmg4XpobXlj5HnlJ/plJnor686JyArIGUubWVzc2FnZSkKICAgICAgICB9CglgLAogICAg5pCc57SiOiBganM6CiAgICAgICAgdmFyIGQgPSBbXTsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQsIHsKICAgICAgICAgICAgaGVhZGVyczogZ2V0SGVhZGVycyhpbnB1dCkKICAgICAgICB9KTsKICAgICAgICBodG1sID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBodG1sLmRhdGEuZm9yRWFjaChmdW5jdGlvbihpdCkgewogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IGl0LnZpZGVvX25hbWUsCiAgICAgICAgICAgICAgICBpbWc6IGl0LmltZywKICAgICAgICAgICAgICAgIGRlc2M6IGl0LnFpbmd4aWR1ICsgJy8nICsgaXQuY2F0ZWdvcnksCiAgICAgICAgICAgICAgICB1cmw6IGl0LmlkLAogICAgICAgICAgICAgICAgY29udGVudDogaXQuYmx1cmIKICAgICAgICAgICAgfSkKICAgICAgICB9KTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICBgLAp9
\ No newline at end of file
diff --git a/drpy_js/博看听书[听].js b/drpy_js/博看听书[听].js
deleted file mode 100644
index 417ac7b..0000000
--- a/drpy_js/博看听书[听].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/5VVW28bRRR+769YLWi9TtL1rQXVxlRF9KGIJg9VeKmqdLI7jidZ725nZt1alSVELzRNGxsQATUFJFBbEKCkIUKJA8p/qTy2+8RfYGb24qzXRWIfdmfO9TvfOTPbBFjBvg2VqnL7lMKf4csj9v1GWcmw7m/9w+eZOSmliNpQCB8/GT7dSKjqLqFcU6fUI+VcDnjIWHbdNeAYptswTCc2a8BFbHPLXNNFJswJo5yNCD2PHEKBY8IlZFWLZ0v5M5oHVmC1oJmAwhUXt4SiUMqf1Ry/US2eCSP6/ytarSU+iZC1lmkDQpJRLUgBshNIgb3sN3K+gyg5L9eBM7IinDJAPq+52IK4WggjEQiwWQ8iRexAkiRH0JVrlk4UEeO/FMFfg62bPHJ1Zkbmm+fJwmJs1EB0XiZP5ATLolnFQHTDR+baFSkvK/lAJuteckBD9nT3C3a4P9o5Gq7/orG7x8Nfnw22Pme/P9fY9t/8MzzqsHsHGpeN1nuBsTb6bI9bsuM7XKmJT/c++2pP+Lz+7svBt8/Yw5fs+BuNbd5nnT222xnt7GuDr+/1exv9v55or3/4o3/YHTzosPUX2nD7gP20O9q5Ox6pAF7QX9n3guChUCrmxeod8TrHXwW5fVesimJVEiu5PRcNHQS8I6Ss3M4sEohPX1iBDs3wqJcXPrj08cWlxQuZdmA52Px59LjLNTOha//g02HvBResEtcpW4ACQ4xXRZBWMd0mxBV4i2JgAJ/WXVxBVuTYeyQdr6+SshSIx4ZUsfgZu3qtEss+WfgwPnXR03StoG7keD6dS+mClqlqWgNM6uLpqhZv/nSNhTCM/GJlu5KA7dmgJSonE/BlSZwWLv7oysK84QFMoI7hDR8Sqkv82awhLBIlG1EZ3C9m9Wr+moGstJ0sihuqr7b+/Oegwx5ss6Nev7epKrNJZxNDfrC5A00HEeVPJhvbG8SzEdXV02qWK9LeEUVjFIPt/cHW7jQUvmelUAiaqEuBHUGQm7H+JL3jKYvVqKbogfv7Cr9ishPzUuPAdJECcfdihX/eC7PlhDkHWODC2dlJvwiZSMZvKO4sGxaRoUkyuLcaXHGiUiS3E1edWpka9s1zESZMTcY0OuI1vywdfnHrMT/ZhF/7VHo19uUUXQRmXa/5jkmR6+iITrJhGZ5P6nqaovC3h6ghV3Mpg+CsUqOGbJjENIbYzqanSsBbqmG3IcYq+COob7DyZXssowG8/6oBQ+pjJ4YqmvW2bBs1eIQTYIxVFzm6+pYawroeXoDdp8P9H8MLsP0vwhOMRRcIAAA=
\ No newline at end of file
diff --git a/drpy_js/卧龙资源[资].js b/drpy_js/卧龙资源[资].js
deleted file mode 100644
index 0d64290..0000000
--- a/drpy_js/卧龙资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8gaHR0cHM6Ly9jb2xsZWN0LndvbG9uZ3p5dy5jb20vYXBpLnBocC9wcm92aWRlL3ZvZC8/YWM9bGlzdAoKdmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfph4fpm4YxJywKICAgIHRpdGxlOiAn5Y2n6b6Z6LWE5rqQW+i1hF0nLAogICAgaG9zdDogJ2h0dHBzOi8vY29sbGVjdC53b2xvbmd6eXcuY29tJywKICAgIC8vIGhvbWVUaWQ6ICcxMycsCiAgICBob21lVGlkOiAnJywKICAgIGNhdGVfZXhjbHVkZTogJ+eUteW9seeJh3zov57nu63liad857u86Im654mHfOWKqOa8q+eJh3znlLXlvbHop6Por7R85L2T6IKyfOa8lOWRmHzmlrDpl7votYTorq8nLAogICAgcGFyc2VfdXJsOiAnJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/即看影视.js b/drpy_js/即看影视.js
deleted file mode 100644
index 7bd6d75..0000000
--- a/drpy_js/即看影视.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVxp6gn0/cvpz3z2sY9EmTCmx+IetXeW0oiIhKyt4XtjmxR7yHVQPa1h4vDyuFLDCoch8kZavLwpVpy9I0imZUcQqHpj76KBhBmQuhHOA7u0i2uhmnFMHEvesKNCYBI5mZdYu0AVGaOiCI35TqL5VLaQ9ALl6EIpfCzZD/tW7E/QbIXRBaNg23bGN7tT0NtTL1G/7ABLNerqWnV0DOr4Uu6J6v/oyZR6OYN0PtCb+h6FnIL2tjZ8ZK+jAyDEkYnNHnRCFTdDhtCpqqO84qcMuER8ZA8TLArxusPo3QVqjetdOVSrpjfp479VYwf0IM6reA1yyzvemablGNYH1gAs7YgE7aX+hqqsmJAeiUquWDnwCcgtAzKCJNm2OE91+IeNGbjiLPFs7pdWD9YV2/zMiGZdOuBE2ZUc4chPtr6pNT3GgTOm5OCv/QA6FiD2CnB/1K1r5fUqjnoYxGyXDnNJSkcWluMt4ei30pj6157TG/EnwiqsTrV3F4+oYOa1DsKX0bwkRLAOsJ+eEhnCHpj/B+wTEK6ByebjBwIEhluhFsNDrKnrZtBrlUudQLg0AoUf5AgCPgTrRcloz4uLYVrDYkeqx3z0MweqRv0vnO9wWaVbCjuD34sxV285ZhoJmLr0iIylNpagrqLtTwqLoSeMh0QMcn3DDGhH/PBbjIjzyF84qiJqqrvtWVVjusPXY/0Oru0bQYD5j1QcwR/S5NEDM+Gsd/vplZH5XCrm//pXl8KojITqRNgDTFiXHOp8mo8EssVWkPpom4/51nRCNbZh2UQmNUD1vAg62X47UJYiRckq77TkS14QXuHPyCEjEkQZ998t/arw2uzV8pD6KMKZz5oT+chi/wKVSHusQlhiHLc241Qi2exBUv35trpX9dTgdWwYQMm9fFdUy3greJAedxj/40ZZ/SmUXRfbkqJ2SlEbsGJ9mQVHp77i5R0x2D3V+9BemTB9aV08eSGn0pcBCC+GZJUBlL1MHhWSb5EnU3u+yXrPYyp19iOYCNsUvhBrqOs4NHhFu86o6MU30Af5zBP5rXLZubYx8H7Vq5ZlUT1XTqhbb8cSQh6FAeqElzzDgZFpm0+2I0NTpxyjZQ+0dqSlZ0AVIXlCA+Z/LOaujcwqLX3tMkrzKL7/LGlo0O87ukbKvSe1eL4EAbW4ngDeHRqwC2qtefhaBcfVdulv+0X3/XsR1tIMJwfYNw0FZonnHlLCB1nXLLYmUHEKTqDxyLa+Q1R4ymbZVq6hKQiq1Ix+V9RlIfArmPtB7uqgoPl3K2tqN8TGYygn6wWIQ8JLd9ijfY2LLA8XCi/w/6xE+yArpxIWNgrI/EZcp5n7jm1I/2RLLpCH39taS10c3DPSv6W8=
\ No newline at end of file
diff --git a/drpy_js/厂长资源(可搜索).js b/drpy_js/厂长资源(可搜索).js
deleted file mode 100644
index 031f683..0000000
--- a/drpy_js/厂长资源(可搜索).js
+++ /dev/null
@@ -1,73 +0,0 @@
-// 地址发布页 https://www.czzy.site
-// 地址发布页 https://cz01.vip
-var rule = {
- title: '厂长资源',
- //host: 'https://www.czzy88.com',
- host: 'https://www.czys.pro',
- //hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});HOST = html.match(/推荐访问 " + HOST)',
- url: '/fyclassfyfilter',
- filterable: 1,//是否启用分类筛选,
- filter_url: '{{fl.cateId}}{{fl.class}}{{fl.area}}/page/fypage',
- filter: 'H4sIAAAAAAAAA42V3U7iQBTH36XXJt77KhtjBql0EFqlHbUYE79AQEXcVfwiarJi8QOVNborUniZTluufIXtiO1U7LRe9KLT3/+cOWfO/LvIpaU5yE/EFG7sxyI3zavcGAcyPOBGOBGkeecNF/JW69V5nwMpxL9jc84yAcjXXKO/1uCWRgaro264CZnPQF4ezQpAnHSehIJgEgLxQ2bdHPX3e2a5YW9X2OK4qrr83hPWWyGkE1oWYBJR3tbyuKiFSCQBAbeKUsPae2WzCSSRIrzw+EQ32lpo+HTS3Uq3HApmXNA8qIeCggv2z67CwXkv5NNffFF14LdOAeeejdfqW6cYIkRARaSVKhQTbqnbZfu+GdX/NA+dHg1JzVvNKT5KmoExXhxWHtTN2m2UkozVl6SkOSd6lJQIvmrtzdY3tFMgoNTH/e9ljX/t7wNuX0Yp+RSSZDgkNXrrln5gVu+j1OTigTgYzlw6Nzd7+EKL7DOCKgJi1hkPcda9AkbnGO8eGv9+4a02tzROxAP3mEwBWab24XgHPt38ZB8+3xgZeAlRD4Ke23cPH6t0HwpIyKOTJH0Seixe71k39WCWV3iFgvmf/aOrYDANpAXiSh5b1My1XDCbRLOkeR5aahh6LRiNS1kk+Umzc8Mi0/70Ax8KJgWBcuU83vkTzKWgY4SU3LmwfzMKSqD3I/WVVNkyl7VgWJHExMKn+qs14kKB8AJxYg+sb+AXRlGzkOyAonfPuN1ktB8CxZ/fXKmYy9VgdhrFaH5z9daq7jI2isiVoOhazi4y+koOX+Z9aMlcPWakJ6jk32vh0GgXg2Hyh8wKPG2C2dyyC6eMI5v3YZdG9zwYm0fOVHuktdLtH3cZ2QEUfQdgFVrM+Qfw0/xbpXtLvw5Gp5ySEG2rdda0ihuMsZ6hmLbLHJRpOvxW+xrr+8yAydQMDWnXe9Rmhs8+RrFexbl6wZga97D+2aPxUmFgKnHB8aX/CTefD1IJAAA=',
- searchUrl: '/daoyongjiekoshibushiyoubing?q=**',
-
- searchable: 2,
- filterable: 0,
- headers: {
- 'User-Agent': 'PC_UA',
- // 'Cookie': 'esc_search_captcha=1'
- },
- class_name: '全部&豆瓣电影Top250&高分影视&最新电影&热映中&站长推荐&电影&电视剧&动画&国产剧&日剧&韩剧&美剧&海外剧&俄罗斯电影&加拿大电影&华语电影&印度电影&日本电影&欧美电影&法国电影&英国电影&韩国电影',
- class_url: 'movie_bt&dbtop250&gaofenyingshi&zuixindianying&reyingzhong&/movie_bt_series/zhanchangtuijian&/movie_bt_series/dyy&/movie_bt_series/dianshiju&/movie_bt_series/dohua&/movie_bt_series/guochanju&/movie_bt_series/rj&/movie_bt_series/hj&/movie_bt_series/mj&/movie_bt_series/hwj&/movie_bt_series/eluosidianying&/movie_bt_series/jianadadianying&/movie_bt_series/huayudianying&/movie_bt_series/yindudianying&/movie_bt_series/ribendianying&/movie_bt_series/meiguodianying&/movie_bt_series/faguodianying&/movie_bt_series/yingguodianying&/movie_bt_series/hanguodianying',
- play_parse: true,
-
- // lazy代码:源于海阔香雅情大佬 / 小程序:香情影视 https://pastebin.com/L4tHdvFn
- lazy: `js:
- pdfh = jsp.pdfh;
- var html = request(input);
- var ohtml = pdfh(html, '.videoplay&&Html');
- var url = pdfh(ohtml, "body&&iframe&&src");
- if (url) {
- var _obj={};
- eval(pdfh(request(url),'body&&script&&Html')+'\\n_obj.player=player;_obj.rand=rand');
- function js_decrypt(str, tokenkey, tokeniv) {
- eval(getCryptoJS());
- var key = CryptoJS.enc.Utf8.parse(tokenkey);
- var iv = CryptoJS.enc.Utf8.parse(tokeniv);
- return CryptoJS.AES.decrypt(str, key, {iv: iv,padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);
- };
- let config = JSON.parse(js_decrypt(_obj.player,'VFBTzdujpR9FWBhe', _obj.rand));
- input = {
- jx: 0,
- url: config.url,
- parse: 0
- };
- }else if (/decrypted/.test(ohtml)) {
- var phtml = pdfh(ohtml, "body&&script:not([src])&&Html");
- eval(getCryptoJS());
- var script = phtml.match(/var.*?\\)\\);/g)[0];
- var data = [];
- eval(script.replace(/md5/g, 'CryptoJS').replace('eval', 'data = '));
- input = {
- jx: 0,
- url: data.match(/url:.*?['"](.*?)['"]/)[1],
- parse: 0
- }
-
-
- }
- `,
- 推荐: '.bt_img;ul&&li;*;*;*;*',
- double: true,
- 一级: '.bt_img&&ul&&li;h3.dytit&&Text;img.lazy&&data-original;.jidi&&Text;a&&href',
- 二级: {
- "title": "h1&&Text;.moviedteail_list li&&a&&Text",
- "img": "div.dyimg img&&src",
- "desc": ".moviedteail_list li:eq(3) a&&Text;.moviedteail_list li:eq(2) a&&Text;.moviedteail_list li:eq(1) a&&Text;.moviedteail_list li:eq(7)&&Text;.moviedteail_list li:eq(5)&&Text",
- "content": ".yp_context&&Text",
- "tabs": ".mi_paly_box span",
- "lists": ".paly_list_btn:eq(#id) a"
- },
- 搜索: '.search_list&&ul&&li;*;*;*;*',
- // 预处理:'rule_fetch_params.headers.Cookie="68148872828e9f4d64e7a296f6c6b6d7=5429da9a54375db451f7f9e4f16ce0ea;esc_search_captcha=1";let new_host="https://czspp.com";let new_html=request(new_host);if(/正在进行人机识别/.test(new_html)){let new_src=pd(new_html,"script&&src",new_host);log(new_src);let hhtml=request(new_src,{withHeaders:true});let json=JSON.parse(hhtml);let html=json.body;let key=html.match(new RegExp(\'var key="(.*?)"\'))[1];let avalue=html.match(new RegExp(\'value="(.*?)"\'))[1];let c="";for(let i=0;iit.toLowerCase()==="set-cookie");let cookie=setCk?json[setCk].split(";")[0]:"";log("cookie:"+cookie);rule_fetch_params.headers.Cookie=cookie;setItem(RULE_CK,cookie)}',
-}
\ No newline at end of file
diff --git a/drpy_js/厂长资源.js b/drpy_js/厂长资源.js
deleted file mode 100644
index 8304558..0000000
--- a/drpy_js/厂长资源.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/口袋追剧.js b/drpy_js/口袋追剧.js
deleted file mode 100644
index 9457687..0000000
--- a/drpy_js/口袋追剧.js
+++ /dev/null
@@ -1 +0,0 @@
-9QASVubKKpw2a+z4hivQLf5QNrJ2cf7LOzE4lUwmq/I5iBiQAy2LB7B8QSKpclOy/xBAjLNNrn24cgiKHy4qXInhf4SrlI6JGZZi+CiU8xZ3aLdMhLJKqd87GSFKrB1vJK7jrQPUEaheJPTgG49I40P7HqjBzJuMNaHwb09FUVeVNBF1tPnF3u0SfPR4C0oi6kx6QzRBOVU+mDLqLkwfDH/7fvxyJe6zVyEV/YcPZQV9Vqy7w6o6bCOzn+2tGPUdDHVjFwLsoCgCI/ZtSwRmGKMy+WHGpysprW2yQ26W2oh3fVeg1GICm14Qd7WqKvUgycN8oR5W5d30zAFa7uk/zbFsVeyV7FoblJJH6eOirzVsyWDsMMKQqh1ublChdtCNh3o3y1c+XaxzEfPn2T4AGDLDalD68rGnWjxVSW5MotILLP1r2gkrSkZLCmAM00zvSJk+WLX5QOcKAV4dSh/qaL1im4WuARz7MY/S0Pin7K/18dKGcEsCtUTs15BrIbqH4TJR4K8nezwGYf83sOBpL28U8LIVHaff86y4v7WI8jmFtDg9d+k6jy3xUhgmNNna
\ No newline at end of file
diff --git a/drpy_js/古风漫画[画].js b/drpy_js/古风漫画[画].js
deleted file mode 100644
index 30cd105..0000000
--- a/drpy_js/古风漫画[画].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/可可影视[优].js b/drpy_js/可可影视[优].js
deleted file mode 100644
index 56aa376..0000000
--- a/drpy_js/可可影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/可达影视.js b/drpy_js/可达影视.js
deleted file mode 100644
index 65bef2b..0000000
--- a/drpy_js/可达影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WPr+i+vuW9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly9rZWRheXMub3JnJywKICAgIC8vIHVybDonL3NoYWl4dWFuL2Z5Y2xhc3MtLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHVybDogJy9zaGFpeHVhbi9meWNsYXNzLWZ5ZmlsdGVyLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NvLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJhMlU3YlVCQ0czOFhYWEJ5SHNwUTd5cjd2YThWRlZDSklDMEZpcVVvUkVoV0xvQlFvQ0pJR1Frc2xBcUVpRUZxNkVCVHlNckVUM3FJR3o1a1o3dndBYzVmL0cvdll2M01NbnhCenhuRFFINW9OaGthTWlwZHp4cHZBckZGaFdMR1U5U2x0RkJraC8zaUE1N2Yrc1puQTQ0R2hCN3ljdUY5TVBHQW5HUE5GUUk5UDc2TXJRQ0hvMmYxSjFQNTNDVE1JZU41V3lyNjUwK2U1UWMveWQ1dldRUVptRUhETmIyYzBnNkJuZGlSdXg4NWhCZ0ZudjFKMEhnU2NoVlBXeHlQcjhMc2VZOGFybnAzYmgvRkNQSnRMNyt0cmM0U3RObEpXK2tTM2NvT2VGZGF2NkE0ZzBOM3Q4YnZiNHpQblZ1ejFyUE5vOWJLWWNlVjROcitWeks5RjllS1k5Ukc1N0ZJK0U3SEQrc3VnakZkWi9tTmRMT3BMdUdGKzZHRUttMlR0MUY1Y1pwdEVaeStiSkw5NkJRZFRvSHFKWENhRzNSNER6c0l4NXpwNjVnWjhaS3RmY3VrMS9jamNnTmM3M2JadWJ2WDEzSUJyNG8xVHdEV1RKN203STcybUcvQzhsWjM3NkprK3p3MTQzdGNmemgzbzg5eUFzdytmN1lXd25ya0IxN3k3eU8vK3RqSlhlbG5NWHIrV3dtV3lrRmlncndXenAzZjNJT01jcnhkM0E5dXROSU9Bai9mbk1jMGc0SnNTeVZnYkVScFRabTh3Rzd1QnZjRTBnOERlRVRaekF6M0l2NnlKR3p6djdKdnIzRzJHN1d5ZHZUeENuL0k5QS9iNGtmRmk0c1djKzRqN09EZUptNXdyNG9weDh6bHk1eVBqNWNUTE9TOGpYc1o1S2ZGU3prdUlsM0JPZlUzZTE2UytKdTlyVWwrVDl6V3ByOG43bXRUWDVIMFY5Vlc4cjZLK2l2ZFYxRmZ4dm9yNkt0NVhVVi9GK3lycXEzaGZSWDBWNzZ1b3IrSjlGZlZWdksraXZzN0hKeHN6R2JFdk45akcxTm5MeHF3RVVJbmtCWkFYU0txQVZDR3BCbEtOcEFaSURaSmFJTFZJNm9EVUlha0hVbytrQVVnRGtrWWdqVWlhZ0RRaGFRYlNqS1FGU0F1U1ZpQ3RTTnFBdENGcEI5S09wQU5JQjVKT0lKMUl1b0IwSWVrRzBvMmtCMGdQa2w0Z3ZVajZnUFFoNlFmU2oyUUF5QUNTUVNDRFR6YUZ2YmxqcGJkb1UyQit1aW5zMkVJaHUyMGZYRHN1QSt0TUI1MFQ4SWRwYk1FNjNyZDNrdmF1bHJEUjRQVFVrM25jK1lXd0JNT3BWeE9UZ1ljYkdTb3l4aHlGZkRmemVrWVVVaFJTRkZJVVVoUlNGRklVVWhSU0ZGSVUwcU5DdnA4SWpjd0dSU0JGSUVVZ1JTQkZJRVVnUlNCRklFVWdSU0E5Q3VTd0k1RGovcEFZcEJpa0dLUVlwQmlrR0tRWXBCaWtHS1FZcEVlRG5CcjFUd1FtUlNCRklFVWdSU0JGSUVVZ1JTQkZJRVVnUlNDOS9nbHl4aCtTZjRJVWdSU0JGSUVVZ1JTQkZJRTBSQ0JGSUVVZ3ZRbmsvSDlkejArM2pEMEFBQT09JywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLuWcsOWMun19LXt7Zmwu5o6S5bqPIG9yICJ0aW1lIn19LXt7Zmwu5Ymn5oOFfX0te3tmbC7or63oqIB9fS17e2ZsLuWtl+avjX19LS0tZnlwYWdlLS0te3tmbC7lubTku719fScsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICcubmF2LW0tYm94JiZsaTthJiZUZXh0O2EmJmhyZWY7Ly4qXC8oLio/KVwuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICfmnIDov5F85o6S6KGMJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHZhciBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKICAgICAgICBsb2coaHRtbCkKICAgICAgICB2YXIgdXJsID0gaHRtbC51cmw7CiAgICAgICAgdmFyIGZyb20gPSBodG1sLmZyb207CiAgICAgICAgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMScpIHsKICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTsKICAgICAgICB9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHsKICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpOwogICAgICAgIH0KICAgICAgICBsb2codXJsKQogICAgICAgIHZhciBwY29uZmlnID0ganNwLnBkZmgocmVxdWVzdChydWxlLnBhcnNlICsgdXJsKSwgJ2JvZHkmJnNjcmlwdCwwJiZIdG1sJykubWF0Y2goL2NvbmZpZyA9IHtbXHNcU10qP30vKVswXTsKICAgICAgICB2YXIgY29uZmlnID0ge307CiAgICAgICAgZXZhbChwY29uZmlnKTsKICAgICAgICBsZXQgcHVybCA9IEpTT04ucGFyc2UocmVxdWVzdChydWxlLnBhcnNlLnJlcGxhY2UoJz91cmw9JywgJ2FwaV9jb25maWcucGhwJyksIHsKICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgJ09yaWdpbic6IEhPU1QKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYm9keTogJ3VybD0nICsgY29uZmlnLnVybCArICcmdGltZT0nICsgY29uZmlnLnRpbWUgKyAnJmtleT0nICsgY29uZmlnLmtleSwKICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcKICAgICAgICB9KSkudXJsOwogICAgICAgIGlmICgvTkJZfEJUSlNPTnxDTDRLLy50ZXN0KGZyb20pKSB7CiAgICAgICAgICAgIGxldCBwbGF5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHB1cmwsIHsKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHBzOi8va2VkYXlzLm9yZycsCiAgICAgICAgICAgICAgICAgICAgJ0hvc3QnOiAnY2RuLnN1eHVuLnNpdGUnLAogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjMuMC4wLjAgU2FmYXJpLzUzNy4zNicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2UsCiAgICAgICAgICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZQogICAgICAgICAgICB9KSkubG9jYXRpb247CiAgICAgICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6IHBsYXksIGpzOiAnJ307CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IHBsYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QocHVybCwgewogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cHM6Ly9rZWRheXMub3JnJywKICAgICAgICAgICAgICAgICAgICAnSG9zdCc6ICdjZG4uc3V4dW4uc2l0ZScsCiAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMy4wLjAuMCBTYWZhcmkvNTM3LjM2JwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZSwKICAgICAgICAgICAgICAgIHdpdGhIZWFkZXJzOiB0cnVlCiAgICAgICAgICAgIH0pKS5sb2NhdGlvbjsKICAgICAgICAgICAgbGV0IHZpZGVvID0gSlNPTi5wYXJzZShyZXF1ZXN0KHBsYXksIHsKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHBzOi8va2VkYXlzLm9yZycsCiAgICAgICAgICAgICAgICAgICAgJ0hvc3QnOiAnY2RuLnN1eHVuLnNpdGUnLAogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjMuMC4wLjAgU2FmYXJpLzUzNy4zNicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2UsCiAgICAgICAgICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZQogICAgICAgICAgICB9KSkubG9jYXRpb24gKyAnIy5tM3U4JzsKICAgICAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogdmlkZW8sIGpzOiAnJ307CiAgICAgICAgfQogICAgfSksCiAgICBkb3VibGU6IHRydWUsCiAgICDmjqjojZA6ICcubGF5b3V0LWJveDsudmxpc3QmJmxpOyo7KjsqOyonLAogICAg5LiA57qnOiAnLnZvZC1saXN0JiZ1bCYmbGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5pdGVtLXN0YXR1cyYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDMmJlRleHQ7cC5yb3cmJnNwYW4mJmEmJlRleHQnLAogICAgICAgIGltZzogJ2ltZy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJ3Aucm93JiZzcGFuOmVxKC0xKSYmVGV4dDtwLnJvdyYmc3BhbjplcSgyKSYmVGV4dDtwLnJvdyYmc3BhbjplcSgxKSYmVGV4dDtwLnJvdyYmc3BhbjplcSg0KSYmVGV4dDtwLnJvdyYmc3BhbjplcSgzKSYmVGV4dDsnLAogICAgICAgIGNvbnRlbnQ6ICcubW9yZS1ib3gmJlRleHQnLAogICAgICAgIHRhYnM6ICcucGxheWxpc3QtdGFiJiZ1bCYmbGknLAogICAgICAgIGxpc3RzOiAnLmV3YXZlLXBsYXlsaXN0LWNvbnRlbnQ6ZXEoI2lkKSYmbGknLAogICAgICAgIHRhYl90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF91cmw6ICdhJiZocmVmJwogICAgfSwKICAgIOaQnOe0ojogJyonLAp9
\ No newline at end of file
diff --git a/drpy_js/咕咕番[漫].js b/drpy_js/咕咕番[漫].js
deleted file mode 100644
index 67016ee..0000000
--- a/drpy_js/咕咕番[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WSleWSleeVqlvmvKtdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5ndWd1ZmFuLmNvbScsCiAgICB1cmw6ICcvaW5kZXgucGhwL2FwaS92b2QnLAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwnLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1BDX1VBJywKICAgIH0sCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAwLAogICAgY2xhc3NfbmFtZTogJ+i/nui9veaXpea8qyblroznu5Pml6XmvKsm5Ymn5Zy6JueJueaRhCcsCiAgICBjbGFzc191cmw6ICc2JjcmMjEmMjMnLAogICAgbGltaXQ6IDYsCiAgICBkb3VibGU6IGZhbHNlLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwogICAgICAgIGxldCB1cmwgPSBodG1sLnVybDsKICAgICAgICBpZiAodXJsKSB7CiAgICAgICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6IHVybCwgaGVhZGVyOiBydWxlLmhlYWRlcnN9CiAgICAgICAgfQogICAgfSksCiAgICDkuIDnuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgLy8gZXZhbChnZXRDcnlwdG9KUyk7CiAgICAgICAgbGV0IHQgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTsKICAgICAgICBsZXQga2V5ID0gQ3J5cHRvSlMuTUQ1KCdEUycgKyB0ICsgJ0RDQzE0N0QxMTk0M0FGNzUnKS50b1N0cmluZygpOwogICAgICAgIGxldCB0eXBlID0gTVlfQ0FURTsKICAgICAgICBsZXQgcGcgPSBNWV9QQUdFOwogICAgICAgIGxldCBkYXRhID0gewogICAgICAgICAgICAndHlwZSc6IHR5cGUsCiAgICAgICAgICAgICdjbGFzcyc6ICcnLAogICAgICAgICAgICAnYXJlYSc6ICcnLAogICAgICAgICAgICAnbGFuZyc6ICcnLAogICAgICAgICAgICAndmVyc2lvbic6ICcnLAogICAgICAgICAgICAnc3RhdGUnOiAnJywKICAgICAgICAgICAgJ2xldHRlcic6ICcnLAogICAgICAgICAgICAncGFnZSc6IHBnLAogICAgICAgICAgICAndGltZSc6IHQsCiAgICAgICAgICAgICdrZXknOiBrZXkKICAgICAgICB9OwogICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShwb3N0KGlucHV0LCB7Ym9keTogZGF0YX0pKS5saXN0OwogICAgICAgIGxldCBkID0gW107CiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgbGV0IHVybCA9ICdodHRwczovL3d3dy5ndWd1ZmFuLmNvbS9pbmRleC5waHAvdm9kL2RldGFpbC9pZC8nICsgaXQudm9kX2lkICsgJy5odG1sJzsKICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgIHRpdGxlOiBpdC52b2RfbmFtZSwKICAgICAgICAgICAgICAgIGRlc2M6IGl0LnZvZF9yZW1hcmtzLAogICAgICAgICAgICAgICAgaW1nOiBpdC52b2RfcGljLAogICAgICAgICAgICAgICAgdXJsOiB1cmwKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgfSksCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJ2gzJiZUZXh0JywKICAgICAgICBpbWc6ICcuZGV0YWlsLXBpYyYmaW1nJiZkYXRhLXNyYycsCiAgICAgICAgY29udGVudDogJyNoZWlnaHRfbGltaXQmJlRleHQnLAogICAgICAgIHRhYnM6ICcuYW50aG9sb2d5LXRhYiBhJywKICAgICAgICBsaXN0czogJy5hbnRob2xvZ3ktbGlzdDplcSgjaWQpJiZhJywKICAgIH0sCiAgICDmkJzntKI6ICcucm93LXJpZ2h0JiYucHVibGljLWxpc3QtYm94O2ltZyYmYWx0O2ltZyYmZGF0YS1zcmM7IHNwYW4mJlRleHQ7YSYmaHJlZicKfQ==
\ No newline at end of file
diff --git a/drpy_js/咖啡影视.js b/drpy_js/咖啡影视.js
deleted file mode 100644
index 5ee0e98..0000000
--- a/drpy_js/咖啡影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/哈皮影视[优].js b/drpy_js/哈皮影视[优].js
deleted file mode 100644
index 7396fc5..0000000
--- a/drpy_js/哈皮影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/哔哩影视[官].js b/drpy_js/哔哩影视[官].js
deleted file mode 100644
index d1a7fd7..0000000
--- a/drpy_js/哔哩影视[官].js
+++ /dev/null
@@ -1 +0,0 @@
-LyoqCiAqIOW9seinhlRWIOW8ueW5leaUr+aMgSAKICAgICogaHR0cHM6Ly90Lm1lL2ZvbmdtaV9vZmZpY2FsLwogICAgKiBodHRwczovL2dpdGh1Yi5jb20vRm9uZ01pL1JlbGVhc2UvdHJlZS9tYWluL2FwawogKiBDb29raWXorr7nva4KICAgICogQ29va2ll6I635Y+W5pa55rOVIGh0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1VuZENvdmVyL1B5cmFtaWRTdG9yZS9tYWluL2xpc3QubWQKICogQ29va2ll6K6+572u5pa55rOVMTogRFItUFkg5ZCO5Y+w566h55CG55WM6Z2iCiAgICAqIENNU+WQjuWPsOeuoeeQhiA+IOiuvue9ruS4reW/gyA+IOeOr+Wig+WPmOmHjyA+IHsiYmlsaV9jb29raWUiOiJYWFhYWFhYIiwidm1pZCI6IlhYWFhYWCJ9ID4g5L+d5a2YCiAqIENvb2tpZeiuvue9ruaWueazlTI6IOaJi+WKqOabv+aNokNvb2tpZQogICAgKiDlupXkuIvku6PnoIEgaGVhZGVyc+eahAogICAgKiAiQ29va2llIjoiJGJpbGlfY29va2llIgogICAgKiDmiYvliqjmm7/mjaLkuLoKICAgICogIkNvb2tpZSI6IuWwhuiOt+WPlueahENvb2tpZem7j+i0tOWcqOi/mSIKICog5a6i5oi356uv6ZW/5pyfQ29va2ll6K6+572u5pWZ56iLOgogKiDmipPljIXlk5Tlk6nmiYvmnLrnq6/mkJzntKJhY2Nlc3Nfa2V5LOWPluS7u+aEj+mTvuaOpemHjOeahGFjY2Vzc19rZXnlkoxhcHBrZXnlnKhkcnB5546v5aKD5Y+Y6YeP5Lit5aKe5Yqg5ZCM5ZCN55qE546v5aKD5Y+Y6YeP5Y2z5Y+vCiAqIOatpOaXtuWTlOWTqS5qc+i/meS4quino+aekOWPr+eUqOS6juatpOa6kOeahOino+aekOe6v+i3r+eUqAogKi8KCnZhciBydWxlID0gewogICAgdGl0bGU6J+WTlOWTqeW9seinhlvlrphdJywKICAgIGhvc3Q6J2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbScsCiAgICB1cmw6Jy9meWNsYXNzLWZ5cGFnZSZ2bWlkPSR2bWlkJywKICAgIGRldGFpbFVybDonL3BnYy92aWV3L3dlYi9zZWFzb24/c2Vhc29uX2lkPWZ5aWQnLAogICAgZmlsdGVyX3VybDonZmw9e3tmbH19JywKICAgIHZtaWTojrflj5bmlZnnqIs6J+eZu+W9leWQjuiuv+mXrmh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvbmF2LOaQnOe0om1pZOWwseaYryxjb29raWXpnIDopoEgYmlsaV9qY3QsRGVkZVVzZXJJRCxTRVNTREFUQeWPguaVsCcsCiAgICBzZWFyY2hVcmw6Jy94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/a2V5d29yZD0qKiZwYWdlPWZ5cGFnZSZzZWFyY2hfdHlwZT0nLAogICAgc2VhcmNoYWJsZToxLAogICAgZmlsdGVyYWJsZToxLAogICAgcXVpY2tTZWFyY2g6MCwKICAgIGhlYWRlcnM6ewogICAgICAgICdVc2VyLUFnZW50JzonUENfVUEnLAogICAgICAgICJSZWZlcmVyIjogImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbSIsCiAgICAgICAgIkNvb2tpZSI6IiRiaWxpX2Nvb2tpZSIKICAgIH0sCiAgICB0YWJfb3JkZXI6WydiaWxpYmlsaScsJ0Lnq5knXSwvL+e6v+i3r+mhuuW6jyzmjInph4zpnaLnmoTpobrluo/kvJjlhYjvvIzmsqHlhpnnmoTkvp3mrKHmjpLlkI7pnaIKICAgIHRpbWVvdXQ6NTAwMCwKICAgIGNsYXNzX25hbWU6J+eVquWJpyblm73liJsm55S15b2xJueUteinhuWJpybnuqrlvZXniYcm57u86Im6JuWFqOmDqCbov73nlaom6L+95YmnJuaXtumXtOihqCcsCiAgICBjbGFzc191cmw6JzEmNCYyJjUmMyY3JuWFqOmDqCbov73nlaom6L+95YmnJuaXtumXtOihqCcsCiAgICBmaWx0ZXI6eyLlhajpg6giOlt7ImtleSI6InRpZCIsIm5hbWUiOiLliIbnsbsiLCJ2YWx1ZSI6W3sibiI6IueVquWJpyIsInYiOiIxIn0seyJuIjoi5Zu95YibIiwidiI6IjQifSx7Im4iOiLnlLXlvbEiLCJ2IjoiMiJ9LHsibiI6IueUteinhuWJpyIsInYiOiI1In0seyJuIjoi6K6w5b2V54mHIiwidiI6IjMifSx7Im4iOiLnu7zoiboiLCJ2IjoiNyJ9XX0seyJrZXkiOiJvcmRlciIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaSreaUvuaVsOmHjyIsInYiOiIyIn0seyJuIjoi5pu05paw5pe26Ze0IiwidiI6IjAifSx7Im4iOiLmnIDpq5jor4TliIYiLCJ2IjoiNCJ9LHsibiI6IuW8ueW5leaVsOmHjyIsInYiOiIxIn0seyJuIjoi6L+955yL5Lq65pWwIiwidiI6IjMifSx7Im4iOiLlvIDmkq3ml7bpl7QiLCJ2IjoiNSJ9LHsibiI6IuS4iuaYoOaXtumXtCIsInYiOiI2In1dfSx7ImtleSI6InNlYXNvbl9zdGF0dXMiLCJuYW1lIjoi5LuY6LS5IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiLTEifSx7Im4iOiLlhY3otLkiLCJ2IjoiMSJ9LHsibiI6IuS7mOi0uSIsInYiOiIyJTJDNiJ9LHsibiI6IuWkp+S8muWRmCIsInYiOiI0JTJDNiJ9XX1dLCLml7bpl7TooagiOlt7ImtleSI6InRpZCIsIm5hbWUiOiLliIbnsbsiLCJ2YWx1ZSI6W3sibiI6IueVquWJpyIsInYiOiIxIn0seyJuIjoi5Zu95YibIiwidiI6IjQifV19XX0sCiAgICBwbGF5X3BhcnNlOnRydWUsCiAgICAvLyBwbGF5X2pzb246W3tyZTonKicsIGpzb246e2p4OjEsIHBhcnNlOjAsaGVhZGVyOkpTT04uc3RyaW5naWZ5KHsidXNlci1hZ2VudCI6IlBDX1VBIn0pfX1dLAogICAgcGFnZWNvdW50OnsiMSI6MSwiMiI6MSwiMyI6MSwiNCI6MSwiNSI6MSwiNyI6MSwi5pe26Ze06KGoIjoxfSwKICAgIGxhenk6JycsCiAgICBsaW1pdDo1LAogICAg5o6o6I2QOicnLAogICAg5o6o6I2QOidqczpsZXQgZD1bXTtmdW5jdGlvbiBnZXRfcmVzdWx0KHVybCl7bGV0IHZpZGVvcz1bXTtsZXQgaHRtbD1yZXF1ZXN0KHVybCk7bGV0IGpvPUpTT04ucGFyc2UoaHRtbCk7aWYoam9bImNvZGUiXT09PTApe2xldCB2b2RMaXN0PWpvLnJlc3VsdD9qby5yZXN1bHQubGlzdDpqby5kYXRhLmxpc3Q7dm9kTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHZvZCl7bGV0IGFpZD0odm9kWyJzZWFzb25faWQiXSsiIikudHJpbSgpO2xldCB0aXRsZT12b2RbInRpdGxlIl0udHJpbSgpO2xldCBpbWc9dm9kWyJjb3ZlciJdLnRyaW0oKTtsZXQgcmVtYXJrPXZvZC5uZXdfZXA/dm9kWyJuZXdfZXAiXVsiaW5kZXhfc2hvdyJdOnZvZFsiaW5kZXhfc2hvdyJdO3ZpZGVvcy5wdXNoKHt2b2RfaWQ6YWlkLHZvZF9uYW1lOnRpdGxlLHZvZF9waWM6aW1nLHZvZF9yZW1hcmtzOnJlbWFya30pfSl9cmV0dXJuIHZpZGVvc31mdW5jdGlvbiBnZXRfcmFuayh0aWQscGcpe3JldHVybiBnZXRfcmVzdWx0KCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3dlYi9yYW5rL2xpc3Q/c2Vhc29uX3R5cGU9Iit0aWQrIiZwYWdlc2l6ZT0yMCZwYWdlPSIrcGcrIiZkYXk9MyIpfWZ1bmN0aW9uIGdldF9yYW5rMih0aWQscGcpe3JldHVybiBnZXRfcmVzdWx0KCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9yYW5rL3dlYi9saXN0P3NlYXNvbl90eXBlPSIrdGlkKyImcGFnZXNpemU9MjAmcGFnZT0iK3BnKyImZGF5PTMiKX1mdW5jdGlvbiBob21lX3ZpZGVvKCl7bGV0IHZpZGVvcz1nZXRfcmFuaygxKS5zbGljZSgwLDUpO1s0LDIsNSwzLDddLmZvckVhY2goZnVuY3Rpb24oaSl7dmlkZW9zPXZpZGVvcy5jb25jYXQoZ2V0X3JhbmsyKGkpLnNsaWNlKDAsNSkpfSk7cmV0dXJuIHZpZGVvc31WT0RTPWhvbWVfdmlkZW8oKTsnLAogICAg5LiA57qnOicnLAogICAg5LiA57qnOidqczpsZXQgZD1bXTtsZXQgdm1pZD1pbnB1dC5zcGxpdCgidm1pZD0iKVsxXS5zcGxpdCgiJiIpWzBdO2Z1bmN0aW9uIGdldF9yZXN1bHQodXJsKXtsZXQgdmlkZW9zPVtdO2xldCBodG1sPXJlcXVlc3QodXJsKTtsZXQgam89SlNPTi5wYXJzZShodG1sKTtpZihqb1siY29kZSJdPT09MCl7bGV0IHZvZExpc3Q9am8ucmVzdWx0P2pvLnJlc3VsdC5saXN0OmpvLmRhdGEubGlzdDt2b2RMaXN0LmZvckVhY2goZnVuY3Rpb24odm9kKXtsZXQgYWlkPSh2b2RbInNlYXNvbl9pZCJdKyIiKS50cmltKCk7bGV0IHRpdGxlPXZvZFsidGl0bGUiXS50cmltKCk7bGV0IGltZz12b2RbImNvdmVyIl0udHJpbSgpO2xldCByZW1hcms9dm9kLm5ld19lcD92b2RbIm5ld19lcCJdWyJpbmRleF9zaG93Il06dm9kWyJpbmRleF9zaG93Il07dmlkZW9zLnB1c2goe3ZvZF9pZDphaWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzppbWcsdm9kX3JlbWFya3M6cmVtYXJrfSl9KX1yZXR1cm4gdmlkZW9zfWZ1bmN0aW9uIGdldF9yYW5rKHRpZCxwZyl7cmV0dXJuIGdldF9yZXN1bHQoImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvd2ViL3JhbmsvbGlzdD9zZWFzb25fdHlwZT0iK3RpZCsiJnBhZ2VzaXplPTIwJnBhZ2U9IitwZysiJmRheT0zIil9ZnVuY3Rpb24gZ2V0X3JhbmsyKHRpZCxwZyl7cmV0dXJuIGdldF9yZXN1bHQoImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL3Jhbmsvd2ViL2xpc3Q/c2Vhc29uX3R5cGU9Iit0aWQrIiZwYWdlc2l6ZT0yMCZwYWdlPSIrcGcrIiZkYXk9MyIpfWZ1bmN0aW9uIGdldF96aHVpKHBnLG1vZGUpe2xldCB1cmw9Imh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2Jhbmd1bWkvZm9sbG93L2xpc3Q/dHlwZT0iK21vZGUrIiZmb2xsb3dfc3RhdHVzPTAmcG49IitwZysiJnBzPTEwJnZtaWQ9Iit2bWlkO3JldHVybiBnZXRfcmVzdWx0KHVybCl9ZnVuY3Rpb24gZ2V0X2FsbCh0aWQscGcsb3JkZXIsc2Vhc29uX3N0YXR1cyl7bGV0IHVybD0iaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0P29yZGVyPSIrb3JkZXIrIiZwYWdlc2l6ZT0yMCZ0eXBlPTEmc2Vhc29uX3R5cGU9Iit0aWQrIiZwYWdlPSIrcGcrIiZzZWFzb25fc3RhdHVzPSIrc2Vhc29uX3N0YXR1cztyZXR1cm4gZ2V0X3Jlc3VsdCh1cmwpfWZ1bmN0aW9uIGdldF90aW1lbGluZSh0aWQscGcpe2xldCB2aWRlb3M9W107bGV0IHVybD0iaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy93ZWIvdGltZWxpbmUvdjI/c2Vhc29uX3R5cGU9Iit0aWQrIiZkYXlfYmVmb3JlPTImZGF5X2FmdGVyPTQiO2xldCBodG1sPXJlcXVlc3QodXJsKTtsZXQgam89SlNPTi5wYXJzZShodG1sKTtpZihqb1siY29kZSJdPT09MCl7bGV0IHZpZGVvczE9W107bGV0IHZvZExpc3Q9am8ucmVzdWx0LmxhdGVzdDt2b2RMaXN0LmZvckVhY2goZnVuY3Rpb24odm9kKXtsZXQgYWlkPSh2b2RbInNlYXNvbl9pZCJdKyIiKS50cmltKCk7bGV0IHRpdGxlPXZvZFsidGl0bGUiXS50cmltKCk7bGV0IGltZz12b2RbImNvdmVyIl0udHJpbSgpO2xldCByZW1hcms9dm9kWyJwdWJfaW5kZXgiXSsi44CAIit2b2RbImZvbGxvd3MiXS5yZXBsYWNlKCLns7vliJciLCIiKTt2aWRlb3MxLnB1c2goe3ZvZF9pZDphaWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzppbWcsdm9kX3JlbWFya3M6cmVtYXJrfSl9KTtsZXQgdmlkZW9zMj1bXTtmb3IobGV0IGk9MDtpPDc7aSsrKXtsZXQgdm9kTGlzdD1qb1sicmVzdWx0Il1bInRpbWVsaW5lIl1baV1bImVwaXNvZGVzIl07dm9kTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHZvZCl7aWYodm9kWyJwdWJsaXNoZWQiXSsiIj09PSIwIil7bGV0IGFpZD0odm9kWyJzZWFzb25faWQiXSsiIikudHJpbSgpO2xldCB0aXRsZT12b2RbInRpdGxlIl0udHJpbSgpO2xldCBpbWc9dm9kWyJjb3ZlciJdLnRyaW0oKTtsZXQgZGF0ZT12b2RbInB1Yl90cyJdO2xldCByZW1hcms9ZGF0ZSsiICAgIit2b2RbInB1Yl9pbmRleCJdO3ZpZGVvczIucHVzaCh7dm9kX2lkOmFpZCx2b2RfbmFtZTp0aXRsZSx2b2RfcGljOmltZyx2b2RfcmVtYXJrczpyZW1hcmt9KX19KX12aWRlb3M9dmlkZW9zMi5jb25jYXQodmlkZW9zMSl9cmV0dXJuIHZpZGVvc31mdW5jdGlvbiBjYXRlX2ZpbHRlcihkLGNvb2tpZSl7aWYoTVlfQ0FURT09PSIxIil7cmV0dXJuIGdldF9yYW5rKE1ZX0NBVEUsTVlfUEFHRSl9ZWxzZSBpZihbIjIiLCIzIiwiNCIsIjUiLCI3Il0uaW5jbHVkZXMoTVlfQ0FURSkpe3JldHVybiBnZXRfcmFuazIoTVlfQ0FURSxNWV9QQUdFKX1lbHNlIGlmKE1ZX0NBVEU9PT0i5YWo6YOoIil7bGV0IHRpZD1NWV9GTC50aWR8fCIxIjtsZXQgb3JkZXI9TVlfRkwub3JkZXJ8fCIyIjtsZXQgc2Vhc29uX3N0YXR1cz1NWV9GTC5zZWFzb25fc3RhdHVzfHwiLTEiO3JldHVybiBnZXRfYWxsKHRpZCxNWV9QQUdFLG9yZGVyLHNlYXNvbl9zdGF0dXMpfWVsc2UgaWYoTVlfQ0FURT09PSLov73nlaoiKXtyZXR1cm4gZ2V0X3podWkoTVlfUEFHRSwxKX1lbHNlIGlmKE1ZX0NBVEU9PT0i6L+95YmnIil7cmV0dXJuIGdldF96aHVpKE1ZX1BBR0UsMil9ZWxzZSBpZihNWV9DQVRFPT09IuaXtumXtOihqCIpe2xldCB0aWQ9TVlfRkwudGlkfHwiMSI7cmV0dXJuIGdldF90aW1lbGluZSh0aWQsTVlfUEFHRSl9ZWxzZXtyZXR1cm5bXX19Vk9EUz1jYXRlX2ZpbHRlcigpOycsCiAgICDkuoznuqc6ewogICAgICAgIGlzX2pzb246dHJ1ZSwKICAgICAgICB0aXRsZToiLnJlc3VsdC50aXRsZTsucmVzdWx0LnNoYXJlX3N1Yl90aXRsZSIsCiAgICAgICAgaW1nOiIucmVzdWx0LmNvdmVyIiwKICAgICAgICBkZXNjOiIucmVzdWx0Lm5ld19lcC5kZXNjOy5yZXN1bHQucHVibGlzaC5wdWJfdGltZTsucmVzdWx0LnN1YnRpdGxlIiwKICAgICAgICBjb250ZW50OiIucmVzdWx0LmV2YWx1YXRlIiwKICAgICAgICB0YWJzOiJqczpwZGZhPWpzcC5wZGZhO1RBQlM9WydC56uZJ10iLAogICAgICAgIGxpc3RzOiIucmVzdWx0LmVwaXNvZGVzIiwKICAgICAgICBsaXN0X3RleHQ6J3RpdGxlJywKICAgICAgICBsaXN0X3VybDonY2lkJywKICAgIH0sCiAgICDkuoznuqc6JycsCiAgICDkuoznuqc6J2pzOmZ1bmN0aW9uIHpoKG51bSl7bGV0IHA9IiI7aWYoTnVtYmVyKG51bSk+MWU4KXtwPShudW0vMWU4KS50b0ZpeGVkKDIpKyLkur8ifWVsc2UgaWYoTnVtYmVyKG51bSk+MWU0KXtwPShudW0vMWU0KS50b0ZpeGVkKDIpKyLkuIcifWVsc2V7cD1udW19cmV0dXJuIHB9bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7bGV0IGpvPUpTT04ucGFyc2UoaHRtbCkucmVzdWx0O2xldCBpZD1qb1sic2Vhc29uX2lkIl07bGV0IHRpdGxlPWpvWyJ0aXRsZSJdO2xldCBwaWM9am9bImNvdmVyIl07bGV0IGFyZWFzPWpvWyJhcmVhcyJdWzBdWyJuYW1lIl07bGV0IHR5cGVOYW1lPWpvWyJzaGFyZV9zdWJfdGl0bGUiXTtsZXQgZGF0ZT1qb1sicHVibGlzaCJdWyJwdWJfdGltZSJdLnN1YnN0cigwLDQpO2xldCBkZWM9am9bImV2YWx1YXRlIl07bGV0IHJlbWFyaz1qb1sibmV3X2VwIl1bImRlc2MiXTtsZXQgc3RhdD1qb1sic3RhdCJdO2xldCBzdGF0dXM9IuW8ueW5lTogIit6aChzdGF0WyJkYW5tYWt1cyJdKSsi44CA54K56LWeOiAiK3poKHN0YXRbImxpa2VzIl0pKyLjgIDmipXluIE6ICIremgoc3RhdFsiY29pbnMiXSkrIuOAgOi/veeVqui/veWJpzogIit6aChzdGF0WyJmYXZvcml0ZXMiXSk7bGV0IHNjb3JlPWpvLmhhc093blByb3BlcnR5KCJyYXRpbmciKT8i6K+E5YiGOiAiK2pvWyJyYXRpbmciXVsic2NvcmUiXSsi44CAIitqb1sic3VidGl0bGUiXToi5pqC5peg6K+E5YiGIisi44CAIitqb1sic3VidGl0bGUiXTtsZXQgdm9kPXt2b2RfaWQ6aWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzpwaWMsdHlwZV9uYW1lOnR5cGVOYW1lLHZvZF95ZWFyOmRhdGUsdm9kX2FyZWE6YXJlYXMsdm9kX3JlbWFya3M6cmVtYXJrLHZvZF9hY3RvcjpzdGF0dXMsdm9kX2RpcmVjdG9yOnNjb3JlLHZvZF9jb250ZW50OmRlY307bGV0IGphPWpvWyJlcGlzb2RlcyJdO2xldCBwbGF5dXJsczE9W107bGV0IHBsYXl1cmxzMj1bXTtqYS5mb3JFYWNoKGZ1bmN0aW9uKHRtcEpvKXtsZXQgZWlkPXRtcEpvWyJpZCJdO2xldCBjaWQ9dG1wSm9bImNpZCJdO2xldCBsaW5rPXRtcEpvWyJsaW5rIl07bGV0IHBhcnQ9dG1wSm9bInRpdGxlIl0ucmVwbGFjZSgiIyIsIi0iKSsiICIrdG1wSm9bImxvbmdfdGl0bGUiXTtwbGF5dXJsczEucHVzaChwYXJ0KyIkIitlaWQrIl8iK2NpZCk7cGxheXVybHMyLnB1c2gocGFydCsiJCIrbGluayl9KTtsZXQgcGxheVVybD1wbGF5dXJsczEuam9pbigiIyIpKyIkJCQiK3BsYXl1cmxzMi5qb2luKCIjIik7dm9kWyJ2b2RfcGxheV9mcm9tIl09IkLnq5kkJCRiaWxpYmlsaSI7dm9kWyJ2b2RfcGxheV91cmwiXT1wbGF5VXJsO1ZPRD12b2Q7JywKICAgIOaQnOe0ojonJywKICAgIOaQnOe0ojonanM6bGV0IHVybDE9aW5wdXQrIm1lZGlhX2Jhbmd1bWkiO2xldCB1cmwyPWlucHV0KyJtZWRpYV9mdCI7bGV0IGh0bWw9cmVxdWVzdCh1cmwxKTtsZXQgbXNnPUpTT04ucGFyc2UoaHRtbCkubWVzc2FnZTtpZihtc2chPT0iMCIpe1ZPRFM9W3t2b2RfbmFtZTpLRVkrIuKeoiIrbXNnLHZvZF9pZDoibm9fZGF0YSIsdm9kX3JlbWFya3M6IuWIq+eCuSznvLrlsJFiaWxpX2Nvb2tpZSIsdm9kX3BpYzoiaHR0cHM6Ly9naHByb3h5Lm5ldC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaGpkaG54L2RyX3B5L21haW4vNDA0LmpwZyJ9XX1lbHNle2xldCBqbzE9SlNPTi5wYXJzZShodG1sKS5kYXRhO2h0bWw9cmVxdWVzdCh1cmwyKTtsZXQgam8yPUpTT04ucGFyc2UoaHRtbCkuZGF0YTtsZXQgdmlkZW9zPVtdO2xldCB2b2RMaXN0PVtdO2lmKGpvMVsibnVtUmVzdWx0cyJdPT09MCl7dm9kTGlzdD1qbzJbInJlc3VsdCJdfWVsc2UgaWYoam8yWyJudW1SZXN1bHRzIl09PT0wKXt2b2RMaXN0PWpvMVsicmVzdWx0Il19ZWxzZXt2b2RMaXN0PWpvMVsicmVzdWx0Il0uY29uY2F0KGpvMlsicmVzdWx0Il0pfXZvZExpc3QuZm9yRWFjaChmdW5jdGlvbih2b2Qpe2xldCBhaWQ9KHZvZFsic2Vhc29uX2lkIl0rIiIpLnRyaW0oKTtsZXQgdGl0bGU9S0VZKyLinqIiK3ZvZFsidGl0bGUiXS50cmltKCkucmVwbGFjZShcJzxlbSBjbGFzcz0ia2V5d29yZCI+XCcsIiIpLnJlcGxhY2UoIjwvZW0+IiwiIik7bGV0IGltZz12b2RbImNvdmVyIl0udHJpbSgpO2xldCByZW1hcms9dm9kWyJpbmRleF9zaG93Il07dmlkZW9zLnB1c2goe3ZvZF9pZDphaWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzppbWcsdm9kX3JlbWFya3M6cmVtYXJrfSl9KTtWT0RTPXZpZGVvc30nLAogICAgbGF6eTonJywKICAgIGxhenk6YGpzOgogICAgICAgIGlmICgvXmh0dHAvLnRlc3QoaW5wdXQpKSB7CiAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgang6IDEsCiAgICAgICAgICAgICAgICB1cmw6IGlucHV0LAogICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICBoZWFkZXI6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAgICAgICAidXNlci1hZ2VudCI6ICJNb3ppbGxhLzUuMCIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsZXQgaWRzID0gaW5wdXQuc3BsaXQoIl8iKTsKICAgICAgICAgICAgbGV0IGRhbiA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92MS9kbS9saXN0LnNvP29pZD0nICsgaWRzWzFdOwogICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307CiAgICAgICAgICAgIGxldCB1cmwgPSAiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9wbGF5ZXIvd2ViL3BsYXl1cmw/cW49MTE2JmVwX2lkPSIgKyBpZHNbMF0gKyAiJmNpZD0iICsgaWRzWzFdOwogICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsKTsKICAgICAgICAgICAgbGV0IGpSb290ID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgaWYgKGpSb290WyJtZXNzYWdlIl0gIT09ICJzdWNjZXNzIikgewogICAgICAgICAgICAgICAgcHJpbnQoIumcgOimgeWkp+S8muWRmOadg+mZkOaJjeiDveingueciyIpOwogICAgICAgICAgICAgICAgaW5wdXQgPSAiIgogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbGV0IGpvID0galJvb3RbInJlc3VsdCJdOwogICAgICAgICAgICAgICAgbGV0IGphID0gam9bImR1cmwiXTsKICAgICAgICAgICAgICAgIGxldCBtYXhTaXplID0gLTE7CiAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb24gPSAtMTsKICAgICAgICAgICAgICAgIGphLmZvckVhY2goZnVuY3Rpb24odG1wSm8sIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobWF4U2l6ZSA8IE51bWJlcih0bXBKb1sic2l6ZSJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICBtYXhTaXplID0gTnVtYmVyKHRtcEpvWyJzaXplIl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGxldCB1cmwgPSAiIjsKICAgICAgICAgICAgICAgIGlmIChqYS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdXJsID0gamFbcG9zaXRpb25dWyJ1cmwiXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVzdWx0WyJwYXJzZSJdID0gMDsKICAgICAgICAgICAgICAgIHJlc3VsdFsicGxheVVybCJdID0gIiI7CiAgICAgICAgICAgICAgICByZXN1bHRbInVybCJdID0gdXJsOwogICAgICAgICAgICAgICAgcmVzdWx0WyJoZWFkZXIiXSA9IHsKICAgICAgICAgICAgICAgICAgICBSZWZlcmVyOiAiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tIiwKICAgICAgICAgICAgICAgICAgICAiVXNlci1BZ2VudCI6ICJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTAwLjAuNDg5Ni4xMjcgU2FmYXJpLzUzNy4zNiIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXN1bHRbImNvbnRlbnRUeXBlIl0gPSAidmlkZW8veC1mbHYiOwogICAgICAgICAgICAgICAgcmVzdWx0WyJkYW5tYWt1Il0gPSBkYW47CiAgICAgICAgICAgICAgICBpbnB1dCA9IHJlc3VsdAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgYCwKfQ==
\ No newline at end of file
diff --git a/drpy_js/哔哩直播[官].js b/drpy_js/哔哩直播[官].js
deleted file mode 100644
index 95800a0..0000000
--- a/drpy_js/哔哩直播[官].js
+++ /dev/null
@@ -1 +0,0 @@
-LyoqCiAqIOW9seinhlRWIOW8ueW5leaUr+aMgQogKiBodHRwczovL3QubWUvZm9uZ21pX29mZmljYWwvCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Gb25nTWkvUmVsZWFzZS90cmVlL21haW4vYXBrCiAqIOearuearuiZvkRNQm94IOW8ueW5leaUr+aMgQogKiDorr7nva4gPiDnqpflj6PpooTop4ggPiDlvIDlkK8KICogaHR0cHM6Ly90Lm1lL3BpcGl4aWF3ZXJ1bgogKiB2b2RfYXJlYTonYmlsaWxpdmVkYW5tdScKICogQ29va2ll6K6+572uCiAqIENvb2tpZeiOt+WPluaWueazlSBodHRwczovL2docHJveHkubmV0L2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9VbmRDb3Zlci9QeXJhbWlkU3RvcmUvbWFpbi9saXN0Lm1kCiAqIENvb2tpZeiuvue9ruaWueazlTE6IERSLVBZIOWQjuWPsOeuoeeQhueVjOmdogogKiBDTVPlkI7lj7DnrqHnkIYgPiDorr7nva7kuK3lv4MgPiDnjq/looPlj5jph48gPiB7ImJpbGlfY29va2llIjoiWFhYWFhYWCIsInZtaWQiOiJYWFhYWFgifSA+IOS/neWtmAogKiBDb29raWXorr7nva7mlrnms5UyOiDmiYvliqjmm7/mjaJDb29raWUKICog5bqV5LiL5Luj56CBIGhlYWRlcnPnmoQKICogIkNvb2tpZSI6IiRiaWxpX2Nvb2tpZSIKICog5omL5Yqo5pu/5o2i5Li6CiAqICJDb29raWUiOiLlsIbojrflj5bnmoRDb29raWXpu4/otLTlnKjov5kiCiAqLwoKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WTlOWTqeebtOaSrVvlrphdJywKICAgIGhvc3Q6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbScsCiAgICBob21lVXJsOiAnL3hsaXZlL3dlYi1pbnRlcmZhY2UvdjEvc2Vjb25kL2dldFVzZXJSZWNvbW1lbmQ/cGFnZT0xJnBhZ2Vfc2l6ZT0zMCZwbGF0Zm9ybT13ZWInLC8v55So5LqOIuWIhuexu+iOt+WPliLlkowi5o6o6I2Q6I635Y+WIgogICAgdXJsOiAnL3hsaXZlL3dlYi1pbnRlcmZhY2UvdjEvc2Vjb25kL2dldExpc3Q/cGxhdGZvcm09d2ViJnBhcmVudF9hcmVhX2lkPWZ5Y2xhc3MmYXJlYV9pZD1meWZpbHRlciZzb3J0X3R5cGU9b25saW5lJnBhZ2U9ZnlwYWdlJywKICAgIGNsYXNzX25hbWU6ICfnlJ/mtLsm572R5ri4JuaJi+a4uCbljZXmnLrmuLjmiI8m5aix5LmQJueUteWPsCbomZrmi5/kuLvmkq0m6IGK5aSp5a6kJuefpeivhibotZvkuosm5biu5oiR546pJuS6kuWKqOeOqeazlSbotK3niaknLAogICAgY2xhc3NfdXJsOiAnMTAmMiYzJjYmMSY1JjkmMTQmMTEmMTMmMzAxJjE1JjMwMCcsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyX3VybDogJ3t7ZmwuYXJlYX19JywKICAgIGZpbHRlcl9kZWY6IHsKICAgICAgICAxMDoge2FyZWE6ICc2MjQnfSwKICAgICAgICAyOiB7YXJlYTogJzg2J30sCiAgICAgICAgMzoge2FyZWE6ICczNSd9LAogICAgICAgIDY6IHthcmVhOiAnMjM2J30sCiAgICAgICAgMToge2FyZWE6ICcyMSd9LAogICAgICAgIDU6IHthcmVhOiAnMTkwJ30sCiAgICAgICAgOToge2FyZWE6ICc3NDQnfSwKICAgICAgICAxNDoge2FyZWE6ICc4MTgnfSwKICAgICAgICAxMToge2FyZWE6ICczNzYnfSwKICAgICAgICAxMzoge2FyZWE6ICc1NjInfSwKICAgICAgICAzMDE6IHthcmVhOiAnMzAxMDAwJ30sCiAgICAgICAgMTU6IHthcmVhOiAnJ30sCiAgICAgICAgMzAwOiB7YXJlYTogJzMwMDAwMCd9CiAgICB9LAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQTYxYVcyOWkyWlgrS3lVLzl5aHd1THJlcXJ2aVRpYzlYWjJxVEJSTmxBZVAycHEwMHFuTTlLU2pHVVV0UVdFd0dIT3pzVEVHWHpEZ093YmIyTnhCeWs4Wm5YMDVUL2tMc3c2dzExNkh5cnhaOGtNVjY1eDlXWmZ2KzliZTU2OUw3cVdYdi8zcjBoL1cvbWZwNWRMcTkydXJTNThzdlYvOTR4cjhqOFZqYktzUC8vL0w2bmMvckUwZmUyLy9ITDJ3SWhmMnovQ2ZwUjgvbWYwcXMxdnNObXFkeHRqeDhkem04N2kwK1R4bW5lWlkvazZlaCtkbXc2MnQ4U1B5dXl1QUJ1dTB6RUxEdWNIdDllazMxdTlZcGlyT1EzTmIwQjljK3ZGM1AvN3VreVhqbWZhVHZMTks2ektjRjZWam5BT3R2SEFpZGpPc25oUDlzN25WWXl5aitiTjNMejkvbzk3U1A3LzYrcWUvbVkycnR1clZIdUt0THR1OGhvR3RRbnR1OXZ2MWpPSnlJcDgyUmZoYTlDZHE1Q0JhV1c0a0oxbSsxNU54OVA2eUh2djFtMSs5TXVhL0x4djZyV3pFNmxaa1pZdHRxdjBIOVV0V0tDTE9CcXlTRitjNVZydFdTL2JwOTgzaENhdHZxTVV1NitpOC9tcGwvbXVBckRGVjRja0VHdzNON2o1YXlXSjZ1eXlidHE3M2VTS3B6QUd2M24vK21EY0dJbGxrR3dPMUZWOUFUOG5iSlZqTHpMdXdMblNDOXI3WmpmQkMzZXp1aWQwdHRWdWZUalZlRG9sQm5QVUdQUExnOXFxVWMra0ZXaHNwV0lRYzk4UndINzJsaCtmN3gxWXh5dVA3SW4rUDRTWG0wek96bTJDbGtkcWIyK1hJdGNZSHM1ZGs4UWg2VTV0WklpZEdPWSthay9oL2tHYXhFdjZ1SjRPVTVxMmNyQlJFODFhWlNmRllPMkZZSkRpS1JSOXhQbDJOZksvRmFwZld1TWlpMTdveS9ENlBYdkJqaWJYeUxOUEJSQ1VsR3pxQnZjcjZoSGU3YUE0NjRoUk5pblJTdThMdjF5dTNDcmRXZUVjWkFzUkh6Wkk1S0RxaTUvZnA5R0MxYzlrOGRNNUtNdFZPalVudm4vOUZtWUllV25jOHZHMDd2NUpIc3g3NGw3OTBoTTBmMUc0MCszMm9WVlp1aWVRZHJsZzdnbzB1WmJISDdrdjRxbjhoVzNIL3hMT2RIUHhCcVpqZHNCeWQ0UlBlaFR4ajBSdUlNTzVVKy9mZGYvNncrZzFrSVM4M1dTdGo3Ui9qTXlROU1pa2V6b3I3TVNUZW0vZmZmZnQrVFQxRWN5aGVBbS9EU0hvWkFSY0I0R29VY2dqTVpqK2gzdllTaDkvR2VSa2lIYmZ5cXBxREpFZjJKNUEvdkpubjRVdjFza2RQTGJiUy9EREVtajBXZTFCbWwwNkZ6MVorOW5yK3N6ZWdwK1NOTTN0UlYyRjUyc0JCdGQ4OExwY0RlMG1NeFllRU9INEExSkJOQmIya0hPYmxCMVV2SDFYQ2V3bXVRSm14V2hzcVRXU3hla25oaThHUVplT3N0UTdBaFp0eGpoNVdWZWdqRHJZR09abTQ1L2RGam1qbTl4QUgxeTc1VTVQdnAzazV6dUtLQm4zTE9zZFliTnNxWHVyODh4RTB0VUl4Q0ozYURJMU1JOCtpSTRpcFZlNHF4SEVIM2FRY3JPb1JTVXlDWXZOWEhmaXFFL3VyVDE4WnYzanpKVUkzR2RNY1RZQy9XT2FHNVdzdllWbHprclpqNWliMGNYZ0d3T0VZM3UwbStBK0pHbTg1eklZM1NNMzJwa29kcXh6RHdmM1V6TmN6eWtDV2JWWFQvS0R0U0J5M2U3RVlaKzVDZ3ZXUUdnb0Jxc2lOSy9uWTRsVlZDQVpKZFhaU1lVZFQ5S21WMWZpMDJJK3VSUDFJOUsrUWZZbmJwcmdFaGFLY3JVMkEzVENrYkhWd3laUm5iWWF6R1FKeUIrSEJIU0RPQ0lWNDRSeHlYbU9wUWJRRzBBTVlXQ0lsamxSQ0c4dEI2aEk3aG9rVTdPanZ3d05ldk9BbDFFZ2V3aktQWVo0ZjI4dnNORlZTa04ydGZQME9jbCtVdGpIM0Z5RmJqbTVaNlVqbE1JRTNQZ25CQ2d3c05nTEowU2R6c09mWW1adVk1YzRobEJ4TFplU3RvczJBWHlmNHIzNi85bUxsMi9lcjMvMFhRb2gvTGpvOXp5TTZnUlpsS0NwVFZSbFNVZlhvRkdmYlc2ejNNSU50ekFkUzcrbGp5QlZVb3dSaTJwZnNNR1BIWXY5WVhQYUEvVFhGK2loUzNkeVkvVHl3R2o5QnlVMm9TUXdPWVNkVzZRbEpTU2ZWbDIrK0JObW12ZW9oWXRET3MwTGRvVTBOSDhVNVNNTzBQRTlZc1cxWW82M3p5cXIrdlFFQ3M2V2tPY2p6OWhoNEFSR05iRElhc1NWV0w2bHpPbWdROFZhNEFwLytmUmcyaC92bVpKTzFjcXl1dUNWSVVGY1VSeklWZzd4aWcwMk04ckpqbGxiZXVzcXg2aldrdUJhYVFSL1JhOUdFZFZDVTUxWFpiS0NaUU1yMkticy9RSU1Pb0Rrc1FBQWRPd3o2U2NFY2hSbUViZ3Evckh3QmZZQTRINEJ5RjRrNERrWVZ6d01NeG9ZZnJNS0FqWGJCczFDUG9MR3RScFNON25EblJFeU9ENjN5UGV0dUFUUFBjb1VYVlpZRVBiVDhtL1p6WTRVdGdXVlNYNmtJNjdYdElCU2lPSVdmT2hjV1llOGpxalJEZ0tJV2tGS3J6WnJiamxRS2tDQ0w5QVlySDl2akQzVERRdW8zVzdNYnBLdXdwdG9na1pCaTBMVExHMks3azhLTjBRWWd6c294QnhRYmhHRFlEdkRzSlg4NEZZa2UrQWZZamovc3p0SVdzMVVETnpRYlVFaU9CaWxvRUdMb0RiVGM5SkhjQWJmRENzUkpXenMvUUxTR3RaR3pkdTdoei9ZQkVyaVBNTklzczIxMDdrOE1XS2VjakFCbWNidEVMblh1eEdYZm5xeXNxdDFIWU56czE2eDgwVzVuZEw5SmlhbHd3c3ZIY3RLeFFxaWFTVGNtbjZKeVVtSmJleUp4Q1ZWZzRBaGsvdUlUUDlGQkRsQVhnSktDYm90bG0raTZvS082d2lpZGlYVGhsUWp2WjJGYnJMYk95d2x3UDd0OVFoK1NSSi95SnBzVWJOS3ZKblg1QkdndER1b0FHV2IvMXM2SGJBcWZJUG5RMm9kOEZtZGhMVmNDcE51MWJvYjhvZnBQckJObER5MUh0THdrSmEyem92eHc0aWg1UHprd2dHNVlSa1lPOVJFZzRvUUtKeWY4a2xaamh2NUt5NUVEQjVrL0FNTGpsU3F2b0FlSU8yMDI2RVpZNWw0MkMyZ21DZER0OG5nR0NNdEdsdGdEM3l0WU8yT2VydU04Z1k4ZlZhdHo2UzM4L09md0pyUlFabGRWYk1BZ01uVy9iZTAvc0s1YW40ZUlsSnRUczVmOTZHVTN3ZXJhRlNTNDFrY0JvdW10M1FtN1RjeWtrRElUakFNVUFaQmtreFN3c2NPeEJzbWpsZFUvci8wRWoza0lrTXdVL3pTMWxCVDErR2hIT2NOd3g4QnUyc3VDTytQN3dGWEE5ckJLczMrakhpTFJFOG1oemRTNE8rOC9FSWFML09BaC9DQk96MjI1RTcvUzllMTJFNEFhM2RuU0RFUHZKclV4SS9ScFlhU3hSYUFZbFpLVFBDOWY4Y002SklkN0dmQkxpU2tLNVUxWjJRS2VrSEdzTHBxMXZRRm9lYk9ibm5VeEtIRUpqVVl1WkhiRVl2ZUE5eS9Gd1FhN3JUbTZVVXJJOVRyMG10QUpPVnp1SjZ0aHc1NzlkL0lCazRFa1lTbkV6bFVJREFxMVVhaVFnWndjaWNITzI3V1hyNy85aStxalBlVGs4L1ZYSzg3YTlPbzlySHl4OGtvK1BRRGNPUTgyU0RBL1hYMy8rWXZYSUNuL2lOcEo1NmxNYlZzYmFiTjNCM1dnOG9BY3BueTJNRE9WMENEUk0xdXN1OHVHZFhNUXd2UW1HZUJzTUJmd2hlaXk4eXByeG1ZMXJ0WkFVRDZjRlBFN0ZoM3dlTmJ4akk4MkhBY0Y2SGFCOUFDb1FMUkEwcGpkRkMrck14Y3ZLVHA0RlBEV3B2aFNHd090elF2SEo4N2E5UlBSZVhoazgwUGpqSlVhR0ZsU0hNVXh5Q1pkdmdiSlRMRjFEVUpjaHNMVzhHUmhmSUk5aDJuSURsc254azZndzFjYm9RY2tVM0JoazZoVkdmREdRT0d6UWJBUjlDeVV3ZXhNYXlHRnlJN2pWL3l4QStBcUlnMVpDVGtLMnVmNng3b0FSVHBhUFM0WHE1MmJvN0ttS1Q4OVhpWXYyOUhwNTFocExHOHJMSzYwajg4Z2duOTR6UzdDSUFGRS85eFJrbDdDanp4M2FSOGg5dGNoQW83TmVZbktZTGVITE5PMC9WQTd0MG94cUROTUNaS29yY3dVNVM0ZDR0OGJjS1F5c0FUYnZMYTVxamRpeDRBcUtiUGJ4ckFFRjlidU9Icnl1U20wbHFHUllhTnRlUkVDVmEyZW9QSjRHalIrVWVISlkrMU1OOTE1NFFsNFNXeWxJUU05V1BHRTFhZndiVXUzVnBMZGdteS9OTHY2REkxdzJCUm5XZmVRbkU0U2ZEU0hPYXR3RDg1eGxKMC9RSnNadXh0Mk9KOElRSFozQjRsbDdaYmxKcllMdEtrRXI4ZGE4TGVnY1NtTnpjK2ZuSEtlbkZETlRoSmtjNTAvNHRrSTBkQjJGQjZLV2p0NjVzMjI3M21hN2RsbGxNZy9za3hMaFltY3VzdndKcmgrd1V3Z0l0OWgxWmJESEhRSDVpdjBQODhLZ1YyZ0YzYkV6eUFTYUJZL2x0clZEYk5Camd0RThrWmNKNTF2MDNQdjZTblB3dUJFdElXelBMVG5OQWNjL015aUkrQVA2ejZNQWFJZ1dRS3pROWQ2aUhpY1hWY1pPSzZlZHVYTjIzOTk5UUphUkt1WUZkZEhWa2pWczRlZ1BPQTdZRE1mM1lvMEtnT2luM2c4Snc3V25VZUI1S3pQMmduejVFTVFWMDJQaHk3WWFZUzF3bFkraklzamxXbVZ4bUJ4M0YwRUNlanpXZ3BRQ0tES0p0ZklJMnNoWHROcm9vTTlxNlNPODN6a01nZGtodFg0WVBVSHJLVk9LSU9VREVKWE1QZ01OWkJDU2J0R1dnSERoZUdtK1hvTTdSaEwzZWxrQ1pCeXRwZGNibGxWR0Y2eGxZODA5dnhrQ0JMRFNmSkVUWWo3c1FnL0lscXI2VW5YTnBPYk04SDkrYWR2TVdyazlLbC9DdDI1Ykp6eCtEYWUzUkdZRncySVozMUJRNUJ5VFl5QlQwUnhBRjA1YUV0c3JRa3RPVlhHLzBhcnFEdGRwT1Q2WmovR3NtT0k4aGRmb0c0bG9LazJDWHpFVTZkc21KbG5JMTFZd0NBdFhyME9NZzN6Y0ZHODJjeTJ1OGR1VHpIaERGSmxsU1BZbEJ5UEhYY1RIaGM5amFISGF1VFViY1lMd0RYbW9LcHVNMzFlbWpBNzhzTzkwNTNranVYMTZ2ZC9lTEg2L3BzWDlqL1d2a2Z3SnJkZkE3c1MxS285dEhmSVhFRjNndlh6LzBZQTJWTS9zZktab1JZYkpCb2F1bkcrclgxSXF1bWh4Wk1Ka1FNMWQ0QnBTd3IyS21kZGdraFBpNU9VYnBVOEJxV2dKaS9ld2hoV09JeGt2RXlRS3Q2SDJKaVRDaitzWUlCMFhkakMvSnNYUC92aC9iK2pqM3owSm5XcWZ1ZGl3T0Zxd2lUVG14RnNjSW5VbmI0QUNHaUYxTjc4anV2MEF6YnVnT2F4Q2hkcTVSNXlPMmxUeXVIcFRIL1o1M254ZlN0ZjgrRDhaSXVaTGJ1VGpHZWhIME5GcEQxazMvV21Ebmc1eWFKSnd3VlFyUnA4Z2kwUGUvSXVwb0hKUTY3VlpmakFoTmtkR3NUQllYcVYyT0FRUkI1M1dPY0lXTmJLNDFrUWJjMm1WL0ppRUpNUnZBZ2d3WlhqTEd1dEEydXB3SkZ6dHZnK3lVQXFpclo2c3RubnBSNVFpR3lsUWVjaHV4T3NuaDd1K0RERkNmZUVzMkFVaFEyTUNBSFJwN2dWT29SeFdUUWhON2YxVlpoZThkcy8vZHQzZi9wdlZXM2swSmdYVGtBTjJEMTN1WVc5QXBHNGN0d0Q2a0s4SXJEWlBtV3RJY1R1M1EvL3NmYjl1eit2cWp3TmtsWExTTVVxOUZqNmdzZDE3MEFPTkVvRjJSN2E4aG92UUQya1JmM0ZxN2V2MzJGMFNMbm5uMlM2d3d0MS9IU0JLR201MGJZSkszckRNb29tZ3o3MURjL3lNMzNEVXp5QXdudjNMYW5PQU4zMTFQdzVES3l0dmdVcmFEd1RQL2NJMExLWW1rRUYvaHBYNzE0d3dzNlo3dGtDaTJiN2F5QmtvT1VGNDljS0VRTDJxZXJVS1c3WE0xMHlnV1p0WlBuWmhjeW9jMjYvNGZ6UXBqMkFFYzIrK3ViSFQvYzlsY1ZtdjhZeTJKVFEzaStSWkoyNkdPeUxQTjUyRTd6a2tTaGZ4MDhTREhvZTBXRzFQVVJCd3BMMmQyVW5hQ0IrbW1UMVowdCtLalhHYWF1S3NwSElPeUJEMWpyQWVCQVN2VS93eHk0d29uV0ZOOWVHMHZMdVovcEFUdFRHNGp3SDZvU05rMndTRVZtOGh5YXkyZ2JpdlEyV2pyR00rb2dvUUlDV24xU2dYV2FOTTdPSExpRmZRTWp3Rml2My85YmhteUVaR2VFRHBKQmhBWnRJZytTODN2N0VxM0ZtbTR0NDgybC9wRER6d0RQZGJzNUlBUGpFN0t2VThmbnBad0MySWxrd2s4MU5EYk96VlRTcmx0RHRmYWFPeTVIWFJLeUpEejNvRjlGQW0raTJmS3BpMXJqVWdwNnBTWVVlQ0NJR2ZRNGtEczVPU2Q0K1dIT2E2VGVGMHpQb0JUUHgrUFNJWUdGd29vMnlSK0lteDNmYnNxVHZRZzExNCsxNnJycUlORURCc0M1cDVtQnNGOUdpcy9PRGo1OGdBbVI2by8veEUwU1RUcnZrajUvd1RyZno0LzhCRGUycjJBY3JBQUE9JywKICAgIGRldGFpbFVybDogJ2h0dHBzOi8vbGl2ZS5iaWxpYmlsaS5jb20vZnlpZCcsLy/kuoznuqfor6bmg4Xmi7zmjqXpk77mjqUoanNvbuagvOW8j+eUqCkKICAgIC8vIGRldGFpbFVybDonaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD1meWlkJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJywvL+S6jOe6p+ivpuaDheaLvOaOpemTvuaOpShqc29u5qC85byP55SoKQogICAgLy8gc2VhcmNoVXJsOicveC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP19fcmVmcmVzaF9fPXRydWUmcGFnZT1meXBhZ2UmcGFnZV9zaXplPTQyJm9yZGVyPW9ubGluZSZwbGF0Zm9ybT1wYyZoaWdobGlnaHQ9MSZzaW5nbGVfY29sdW1uPTAma2V5d29yZD0qKiZzZWFyY2hfdHlwZT1saXZlJmR5bmFtaWNfb2Zmc2V0PTAmcHJlbG9hZD10cnVlJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/c2VhcmNoX3R5cGU9bGl2ZSZrZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAiVXNlci1BZ2VudCI6ICJQQ19VQSIsCiAgICAgICAgIlJlZmVyZXIiOiAiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tIiwKICAgICAgICAvLyAiQ29va2llIjoiJGJpbGlfY29va2llIgogICAgICAgICJDb29raWUiOiAiaHR0cHM6Ly9naHByb3h5Lm5ldC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRm9uZ01pL0NhdFZvZFNwaWRlci9tYWluL3R4dC9jb29raWUudHh0IgogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBsaW1pdDogOCwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICAvLyBwbGF5X2pzb246W3tyZTonKicsIGpzb246e2p4OjAsIHBhcnNlOjEsaGVhZGVyOkpTT04uc3RyaW5naWZ5KHsidXNlci1hZ2VudCI6Ik1vemlsbGEvNS4wIChMaW51eDsgVTsgQW5kcm9pZCA5OyB6aC1DTjsgTUkgOSBCdWlsZC9QS1ExLjE4MTEyMS4wMDEpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS81Ny4wLjI5ODcuMTA4IFVDQnJvd3Nlci8xMi41LjUuMTAzNSBNb2JpbGUgU2FmYXJpLzUzNy4zNiJ9KX19XSwKICAgIC8vIHBsYXlfanNvbjpbe3JlOicqJywganNvbjp7ang6MCwgcGFyc2U6MSxoZWFkZXI6SlNPTi5zdHJpbmdpZnkoeyJ1c2VyLWFnZW50IjoidWNfdWEifSl9fV0sCiAgICAvLyBwbGF5X2pzb246MCwKICAgIGxhenk6IGBqczoKICAgICAgICBsZXQgaWRzID0gaW5wdXQuc3BsaXQoJ18nKTsKICAgICAgICBsZXQgZGFuID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YxL2RtL2xpc3Quc28/b2lkPScgKyBpZHNbMV07CiAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgIGxldCBpdXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjEvUm9vbS9wbGF5VXJsP2NpZD0nICsgaWRzWzFdICsgJyYnICsgaWRzWzBdOwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpdXJsKTsKICAgICAgICBsZXQgalJvb3QgPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgIGxldCBqbyA9IGpSb290WydkYXRhJ107CiAgICAgICAgbGV0IGphID0gam9bJ2R1cmwnXTsKICAgICAgICBsZXQgcHVybCA9ICcnOwogICAgICAgIGlmIChqYS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHB1cmwgPSBqYVswXVsndXJsJ10KICAgICAgICB9CiAgICAgICAgcmVzdWx0WydwYXJzZSddID0gMDsKICAgICAgICByZXN1bHRbJ3BsYXlVcmwnXSA9ICcnOwogICAgICAgIHJlc3VsdFsndXJsJ10gPSB1bmVzY2FwZShwdXJsKTsKICAgICAgICByZXN1bHRbJ2hlYWRlciddID0gewogICAgICAgICAgICBSZWZlcmVyOiAnaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbScsCiAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84Ni4wLjQyNDAuMTk4IFNhZmFyaS81MzcuMzYnCiAgICAgICAgfTsKICAgICAgICByZXN1bHRbJ2Rhbm1ha3UnXSA9IGRhbjsKICAgICAgICBpZiAoL2g1Ly50ZXN0KGlkc1swXSkpIHsKICAgICAgICAgICAgcmVzdWx0Wydjb250ZW50VHlwZSddID0gJyc7CiAgICAgICAgICAgIGlucHV0ID0gcmVzdWx0CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzdWx0Wydjb250ZW50VHlwZSddID0gJ3ZpZGVvL3gtZmx2JzsKICAgICAgICAgICAgaW5wdXQgPSByZXN1bHQKICAgICAgICB9CiAgICBgLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAogICAgLy8g5LiA57qnOidqc29uOmRhdGEubGlzdDt0aXRsZTtzeXN0ZW1fY292ZXI7dW5hbWU7cm9vbWlkJywKICAgIOS4gOe6pzogYGpzOgogICAgICAgIHZhciBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBodG1sID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLmxpc3Q7CiAgICAgICAgaHRtbC5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgbGV0IHBpYyA9IGl0LnN5c3RlbV9jb3ZlcjsKICAgICAgICAgICAgaWYgKHBpYy5zdGFydHNXaXRoKCcvJykpIHsKICAgICAgICAgICAgICAgIHBpYyA9IHVybGpvaW4yKGlucHV0LCBwaWMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aXRsZSwKICAgICAgICAgICAgICAgIGltZzogcGljLAogICAgICAgICAgICAgICAgZGVzYzogJ/CfkYEnICsgaXQud2F0Y2hlZF9zaG93LnRleHRfc21hbGwgKyAnICDwn4aZJyArIGl0LnVuYW1lLAogICAgICAgICAgICAgICAgdXJsOiBpdC5yb29taWQKICAgICAgICAgICAgfSkKICAgICAgICB9KTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICBgLAogICAgLy8g5LqM57qnOicqJywKICAgIOS6jOe6pzogImpzOmxldCBhaWQ9aW5wdXQubWF0Y2goL1xcLyhcXGQrKS8pWzFdO2xvZyhhaWQpO2xldCBodG1sPXJlcXVlc3QoJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjEvUm9vbS9nZXRfaW5mbz9yb29tX2lkPScrYWlkKTtsZXQgam89SlNPTi5wYXJzZShodG1sKS5kYXRhO2xldCB0aXRsZT1qb1sndGl0bGUnXTtsZXQgcGljPWpvWydrZXlmcmFtZSddO2xldCBkZXNjPWpvWydkZXNjcmlwdGlvbiddO2xldCBkaXJlPWpvWyd1aWQnXTtsZXQgdHlwZU5hbWU9am9bJ2FyZWFfbmFtZSddO2xldCByZW1hcms9J+WcqOe6v+S6uuaVsDonK2pvWydvbmxpbmUnXTtsZXQgdm9kPXt2b2RfaWQ6YWlkLHZvZF9uYW1lOnRpdGxlLHZvZF9waWM6cGljLHR5cGVfbmFtZTp0eXBlTmFtZSx2b2RfYXJlYTonYmlsaWxpdmVkYW5tdScsdm9kX3JlbWFya3M6cmVtYXJrLHZvZF9hY3Rvcjon55u05pKt6Ze0aWQtJythaWQsdm9kX2RpcmVjdG9yOmRpcmUsdm9kX2NvbnRlbnQ6ZGVzY307dm9kWyd2b2RfcGxheV9mcm9tJ109J0Lnq5knO3ZvZFsndm9kX3BsYXlfdXJsJ109J2Zsdue6v+i3r+WOn+eUuyRwbGF0Zm9ybT13ZWImcXVhbGl0eT00XycrYWlkKycjZmx257q/6Lev6auY5riFJHBsYXRmb3JtPXdlYiZxdWFsaXR5PTNfJythaWQrJyNoNee6v+i3r+WOn+eUuyRwbGF0Zm9ybT1oNSZxdWFsaXR5PTRfJythaWQrJyNoNee6v+i3r+mrmOa4hSRwbGF0Zm9ybT1oNSZxdWFsaXR5PTNfJythaWQ7Vk9EPXZvZDsiLAogICAgLy8g5pCc57SiOidqc29uOmRhdGEucmVzdWx0LmxpdmVfcm9vbTt0aXRsZTtjb3Zlcjt1bmFtZTtyb29taWQnLAogICAg5pCc57SiOiBganM6bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7bGV0IG1zZz1KU09OLnBhcnNlKGh0bWwpLm1lc3NhZ2U7aWYobXNnIT09IjAiKXtWT0RTPVt7dm9kX25hbWU6S0VZKyLinqIiK21zZyx2b2RfaWQ6Im5vX2RhdGEiLHZvZF9yZW1hcmtzOiLliKvngrks57y65bCRYmlsaV9jb29raWUiLHZvZF9waWM6Imh0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2hqZGhueC9kcl9weS9tYWluLzQwNC5qcGcifV19ZWxzZXtsZXQgdmlkZW9zPVtdO2xldCB2b2RMaXN0PUpTT04ucGFyc2UoaHRtbCkuZGF0YS5yZXN1bHQubGl2ZV9yb29tO3ZvZExpc3QuZm9yRWFjaChmdW5jdGlvbih2b2Qpe2xldCBhaWQ9dm9kWyJyb29taWQiXTtsZXQgdGl0bGU9IuebtOaSremXtO+8miIrdm9kWyJ0aXRsZSJdLnJlcGxhY2UoXCc8ZW0gY2xhc3M9ImtleXdvcmQiPlwnLCIiKS5yZXBsYWNlKCI8L2VtPiIsIiIpO2xldCBpbWc9Imh0dHBzOiIrdm9kWyJ1c2VyX2NvdmVyIl07bGV0IHJlbWFyaz12b2RbIndhdGNoZWRfc2hvdyJdWyJ0ZXh0X3NtYWxsIl0rIiAgIit2b2RbInVuYW1lIl07dmlkZW9zLnB1c2goe3ZvZF9pZDphaWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzppbWcsdm9kX3JlbWFya3M6cmVtYXJrfSl9KTtWT0RTPXZpZGVvc31gLAogICAgLy8g6aKE5aSE55CGOidpZihydWxlX2ZldGNoX3BhcmFtcy5oZWFkZXJzLkNvb2tpZS5zdGFydHNXaXRoKCJodHRwIikpe3J1bGVfZmV0Y2hfcGFyYW1zLmhlYWRlcnMuQ29va2llPWZldGNoKHJ1bGVfZmV0Y2hfcGFyYW1zLmhlYWRlcnMuQ29va2llKTtzZXRJdGVtKFJVTEVfQ0ssY29va2llKX07bG9nKHJ1bGVfZmV0Y2hfcGFyYW1zLmhlYWRlcnMuQ29va2llKScsCn0=
\ No newline at end of file
diff --git a/drpy_js/哔嘀影视.js b/drpy_js/哔嘀影视.js
deleted file mode 100644
index de6ac1a..0000000
--- a/drpy_js/哔嘀影视.js
+++ /dev/null
@@ -1 +0,0 @@
-BZTo/ywK4R454wRXy/7EWXv7JeTii3voWcbCmv+BlQdCN5hyFMti/Yc5qNrcTT/itHpVvTwCC6oRkZzlMeavowjiaSPCVbOle10s5FsHfB//8Zu7COmUJ/C4GVcePERSSDhQpntSw+RArV40h4pHV+LrDnOQvJAk0X+8w2KUMtRcKMnVtBJpb8oR+OV/dda5TA3BKf368mC47xgn9fYVTJzB+CGqp6qhDO2k5AYhthddAWLuv1tuO3Xobt0IK9IPvn0HOJGtV4UVNVmJSEJFgM3ubolfSt4GZFRvqx4cPXN0QoQIT1LYoeFg4ZqOC53QB1d343NaQMWOTGzlGszI32SSp+MPXWpNE3bQkQ+FRcW0wMjbqncGt1bKQiZExfX6Gq/DUgowjHw/7uq3h7AVWfDLlLvr7TDavHdA4x1S+o16h3qElFZDLo5YQ3oWOK7Gz0QTk3Ww4MgRpYCKfGvzM4kYXgSMTK2Kfl+z1xTmiefzocQRg4QPSS0dC9jpxbbOU7/Q8VGbAue5GinVT0LVSDck/bS8gGabiMavkPOtjavXBNr+2SLLLyWlSj4xsZptC4l0Y0jy8eCPH0vR56U+8URcuXKhA2Un/Ql7F2pjeLwxieXDm4oyM0cCUz4AiJsbDgFRZOgdV7ze14QVlnBMfKU88KZ8nvvDll1U0mAxfvbc7q5gYdDLWy2N7ycEyAqcG6BILGEWq4y58miU93YAMbhJRseHqWbG8Pdwm2XyeKF7iCML909VT8Rcq6WbKaMiKkcsbeKyBMdyiLlo3vo4dT3VTVfj90QwG9HYg775qANeJZjmuS3L24yAuG+6B+z/3PxvV/AtR1+RtGd6U9O7laxsv6usAOhe1DgkvFfSc3045Au2+G730eqSdusGX6/exRrzPh9GigBVMtBkx7wXvvZszHDSVeLJRPlnzMebgjpjKayP4l74m9Py2n/kYdV0HlrA6WYnHy6WajXCs6CjI7Ja0w3+Rip5TVwU8wGjQrgPoC/pZx7rUucYV0NStkZ2zcBp1Hh65SO55jR5ljQEIgaRh7RP6KBVSF5tcfV109tcMKk7EhBhXLAQCo0P/qY2LaJGljiGd41IHMg2ap6OcSgrkUFVrpjIIFhSv+1da4/DWXp4D3Br6Lic9myS2F0H0QxS2TgXQVJTPTsaWPeEb7TwXVULYQdRgwrYrmh/lZpi5rZ6TXDrc5Hp/Ok9am4ppzZ7mMc0k3sQ9/fSfzIf7ByODmgAT83Z10NovH/OZ6821yp+Cx3iemWrNkvAuHKMrLPI01IeF98AzrMfp7ptS+NaqRkxTPSzuJ6qApFyXlZJ85ktvMjhF3LbCum67exBxYGGqYFUtAJFcDCROkHaA5N//DRbXgBUOsOpSUYec6aMrjy5NBXzs1TK5hOI+Z3x3WnocTPNH/6t8TQuPmv6WujtA9jxGzYLII6c1zS8Ys9B4X1HckLdH5L0Sk71Se0Ts5po5jLywqsgN5HXYWmnZ33Z8GlhwDvkVgUz3busO5TBagN+Y22DHPu+nZCxQO/pGYyk31gNzqoAT0FdDCCOquWFXDzrNNa+riz431WjsBaxV2cgLomTmwXEWfM0Kgbrkpnur1awZ/WwB3GBmjoVexbQwBVENM9qaYHZ95ZHYYCeiVzSxsfgEFV+5u4Rb1px0S3C5HQKnJwyKgMBcsgDmV41dfY5GMpDGJvvixkYPVz4bYUAY8IaPiodrJ2o2HdMQf6dUBRJGpWPpb+pcM8T2oB7TQD1ahbMpGqm+6NG4ZKBBRZzK2GLBbPRL1J5i/9SxgJ1k1QvrTFZnSung5FpF1E995znfGYrjWZSduVPtEpRGgR8WE58Di0cNJacAWeO9BgrEYMWpmDbFqMFWCGFuZXsFCcrp7mO+Dd/O+z/zwLZSiJbf3xoX1D5Zyt8/m/HIUCTdZoplfPKpyyhmOtH9HT2P9xPiJoJMO/0XhuwVTPtsO4w90sz7wVbxiG8oAoZgmRacr++5MziwY8SRpNZkQVN8Fec3lmMWU1CGuQcx+HOHIDlnrBRfUW44d3Buy7iNrwF+Xa8dx/JH2Xq1023CiQdqrsZT2ZV8/0U3ljotY/Xzuq5VAqyHIms7Q7EeNDEkNRUBNeISr5gCAVXYopPtvreiKeXtotQfjeorOvHDJiC3zgtfm3P8OKlA5Be/bnVkmdmbVqBe2wlPkEzuqIZGhol/mD7dWMPxNGxK0AKf0t6HxEWVNOYonq13ebTAxTn0ssW+T9f8O2Xzp/rpJWrGoKFpKDEUpYTZloP9nsCsLYOPAdfyS4Q7Z3c6F8Vh1TlXom+vJER3oGHvbi/3IYxwmDfbAZ+oUD7+PoG3LLcDBBbgca20lI4trmvT4Isdo3D/kJaaRI5qLEN8cFxUu0KzcyHu+Nd6UnEHL3jCmyjKClsWb3kgSPFqmv3wWkfsmDTDDSNfrPQwb+DMXtqlIx2frDjeKKvGi91BVD+3WPar31ihTmVO+jyLu9BhGHH4UEX7QplxA3HFhreH7LNn3u+byG8NWZrqWpVUgPL7IfaUobwUNLSWuoMrwd9nBePtMYhvZVvmUbRL8DbPeHSyr30dWQyXYvbQBwosyB1dZfz6cRKRsFb8qKwHAPPbEDoVYg+xiw7SxWL4YOIwQl6Uz0L4sVId95Ey/1utE2LJL8rXQDs9r6CLLH1g+saWdRVUtP+xixKyNU+fRzKrXeR9sgS7IOe0dxBD72kLwwMJd0ejxrbWY89rBBujmaa3kNrjoeRf63mDLUC2E78eEkQjDVPmErqVM0f2s4bqr+K4NNkFRnkhRMdmhZT2yKdkI3RJMCJvgJM4sc1BLwZ7kPQBJu8lAJico/D7mDbhzo8eg8BkH03GZilRuwWVOWAm+AkIx+9K2Oil2OEoG6XOvVxegDj9sLmplar1vjtyTL6a3Cnf2k88mxjZnnEDeT6oMFPyaxizxLlNhSp6Z+UxDmzflKi4UGg6+o95eMlXF+6Xs20CLN2nSRdO5xSC4KI0K7bhWqDwuIgd1CuW0GQf9qki1bbdUE2M8Fyzo4yGxl2JsxrZ1pwQywaYExTaqJRQBQG9bGKUpb5mXYEn4O0z9QJ9zEqyxe1V/MqzkMV8by1/wkaxj798i0XH5AjiOSHGYKquGgsbpXa0eSEdzY210++ODoaYvqbsjzBWuk1+4wZy2t3V8XyDpy+eI7rpGXJ0WOzpbjWY2Q9Lky3BhDPzYTjUCBechatnghwsGwlvYL6zp+ur3/G2vnwg8s28A38gT+0BzlFXwIoQJZpECStFLOa2dSXYL5CezQxKB9P8eTtIfAUDtaqx4oOJTCH3mGhSnLv1N/wD/lEEis6DdHsE3jNfjuJauj+2g3ooVV5+KMbvjThr1GEBZk4H5FFQ1lMJIp6sTBQxJWQ77GX4SIaBHU0nh92p4Cfrtv6QjtYeuGnC8suxTupTBJTP9CieHnux9M2SwjLN6ntDiWLpuesriIMXEbq+f1Ly+M/QA3V5XrzGaOM801n9g3g/mv6qHk30mwF2lrLVMQasIO13Rl4Rgn9QK4/0jz56CSLUKTda3ExIPVux+Sla437q0DWngGpFhGo1LQOBprH+FCnyCDewr2L1xYG4hK+J0fOQPrJKKuiHKW6plYYZAggNxDGX0yW3Qs6X/BOnEDNfRBTUNaUmEwmFtS9H+RWD2HRCXskORcVLK4qHdPBjSFaceFVM4GiT1GPb+3mmZKa50juRMqWLk0cfK4JhECel+4j05kNSr6Xy7p/hR+sPH/0ltmrCvneooHfomoeYzIkVC7pfrc8t0h+DTeJuhsMtjmvFBma0emP+o8BUHRtApGHi5/oBG+QvuYG6IJaUOGgjoTWQzs3VrQMLc9K22l5oEBGqCWmQYLLCanIF7i1tXCRh+r6HhtA/6XELkCBYGLvuWVDUBQaW7Skq4Pf5bKV2QWPnJ/fLkD9mKLv2Jz0M7iMHKWl5Qt8AKjtTvQKqYxuGaE1G89o4Q5IhLRrmEKs/mgcxmc0Xpkuu6LJG+q45hZWqnncKr00gUX1VQjlLwSSARFZ97lGDoYn2ENx9bJXWHKOS1m8EHpzksZRkrqb7lYkVj81TIWDiP0E/KTJNetjqmHRCt6WL9pus2rd3tIci+2EXj6bsxAa0y5cYVaqr999AwXVOK7Glycfjf+T4nXyuFQD4q7ehUagcc6z5RS5M49e44jItj0XUvX6xZeLsOy27wIco1MBeukX6KOB69gWStO4vReJc6enuGCn4H3FSPjW7gYBeBXFsPdHBAnYljACWBc3ImJ8kMe6RsYkviNGAkoa5uRmOlQYcrea3ZYb4dq53p//Gg0bAxy+pxj+RK+stERuH8N5tCZfHN1aw9PYaexMHr8pJhN78AfnywoAeADFdwKo+WYGAMkCJqRm44G4svAHwr2C1XfyyWju558JzUC44wbfYepSAZEFn6sW0pE9XzbKRIPcV9r+j+6VMkEZKFd70UE5lge8go2sKY39m261aTBn+vmVX21YBACfdrpCJN/ski1PljE1S7/rfMiN/FrlmTWIzle27aymdwZsF98dkOprPwm5nrIkaVRTvtFW2tiNA0K+3zC/2SWAZ9swZEwrJW5t0Ljii8x4beo4hGDavZCNaMg0QpTBfiOrJg06POhA9t5rEc7zMl3CS24FG2AbIN+RiK0pjD6EZ1HbTXRJx+w5Gl5CcPPAOLQHFIsAJuGnejbgiVN053QBm+2cjOiqtuhhUtwcFc4FfAss1nuLusHB9RhCT1aJdHb0/AdAhGPzuaQwGFoMvQFxkdYwXXGDHnucM+LCzTT/2j4edyyHEeptMr61J9Y2CVYKMktYF1wuzoenHI4VT4lmFj27x4MpLvecbUTn4UAuHeyi5PPxI+Fou+VApof+Fgye2ls8XTFXnNNuvyFssvGDIcu/974hAV+mUrvA2lHS6ZpRyDLOY8tNldzV9C0OSbtrdzBt294ogwsdXMQidkg6uVKD6GBzOiWWbZs30CnydTfZLYMXI4DC9kBt7HPmL5RKjRuV8F5N2MaQkUH9pnmYE6XML2bIikLUZsDHljC8S4y9vlB0Y3TLDjOdkAY5eyLqhnt5WngfQdQCtJpzLZzjipbwTCPoCXVa37EQDePqNTJPtiH8T9vMmViStF/etmwnlANPLQ88xrtFrOE6R+lQxXmEjSr6STQwdXwBg766uumR/fgSLD+GKhYlctmDV0YKB2Xl1/U9Z3gY7qDh/x7FPSLMFXQoiaskkl3eFDEOGsdvre83k9ZE4Alv2T7O6d6RQWnwOA4zdl1JlRG/0IU2WxOwe1IRRUWPzdmXPgbTyCOv1fzoZPfG9aiQcrAJriqwzUD/rLNRGtl+gGpeePhB1Go45HWsGMMwhIPZsByPe8zD1nC4FgHpYe8sa+sITxDH8S5kjoatskLRtWLyylNXKjDkM0imdCvByYqzuNkQbyjetXwYSb+nY1wIegKwGGDyEJt/rZxk23X++mPDYPUZKcW/gIM/nWcWLroRg9ExMYnhtLGCw2EePva2jpI3A+YCpCGUgWCPZ8a71s8AgBCT2SqpPfdxmb8bh1W5cF3g3Fiklh02G7TJhBnSusdXYpfevO5ZLi2tq+tTlTQN4PZsZwge3Pkmd7EQM395KLUetfy0yF38F5si6CsWEeNUrm/xH4qw8k8YtXckOqpTS2JFMopRQd7o6ViXEDlk8rzoS3DS8YJsAoWPGECaIpfzTVLgtg3cAkml8i1XfYFi8jeGEInQIWEtsIeImoT8qvi5RF8PXQ128iiJg/pKFo7v0guI6ewP3JbpTjASrbJV58VCSzR5xeep3JEGiOjIhE53ekycdjCVwERqBulafsyYHyO9Xjby6gro3qEEvkD9Tovwes+oMd0aa6oLfVaenEqeawZcu5yKQDHhE6L0VJ16pc7MgXzuLkiZYr1wzTUXAT/HRU+MR0rEeiPx+JwNcSq2cEqTssoZmuPNbblpGt7UcPFZWufo/5V+5foTIb+1saqYSv00QUgeFocByrnqKWURBk8Sy3yp13hKsD5AVTB7MVMP5+44qzJaI5XCFhos3PFxhrSYFvDPLCIe+Z3kuKx2ZVv4ylOFThTzyKjKJQpEw1bnAv77mXgbaW5H4IWVpTk555CM602vE1eu85xrqF5uFljTtj7QDntc6eqnzrqOpN9kh4GcR0CHGXBVDuzKGCzm1X/rAS33//PtNeLEF2ZGM+4NDrmrS1E6BOuYy15Ll8vAFUCAG6tdpk2K7ndo4fBzZQkjWL8QzyhGvEVgOBuHleqn++6ARIG/SYkwou4ZQSp2j4O3Lh/1Cw6ommRJXeUT10y55Ne+bFefoavBfBs32LycHkW7d0HjUJf5/onFiF9YJ/ei6IRq+fMNmMnr4aY27V/VsNcThsHzUPX+jpYolCv8et4hjaqY3kOnhO2scZTyzZdY7Mwikm1tViASEq+1fhwpRVbkZ1S8EB0qEO1Lysm4opZb6pYSIV0NDsi/y1WnWOJwwV0g18+DmOoW6BSBObdA6fnQ8Femb+H87N/O7IFNs+xWhJ67xzRvlUJEAMjAq8OL1eeGDkjRT6rKrNT6mKEIMVLShLifofSuuNGpiKGFlFXU2dpT2Hev1ptClshQlFejYP/JmaZIU97Z3Rxt1QhrnkvtiP9NlaVCDWMLl1Akg0LeBBKG+yV42aOm/5clbf2s8nYDgGGShcqPpEsqHmC1hwa5CxWz6WT+H/s/nvhirX7UdwukRY2FsO3c+B3YTUWaF43FqY1E/sT5rMCggwgnekMyOUpQXdPIm9tqcDUDc1bM3x5oDrJdZkETmswsaZbevyWTEkOGFQdC41VregBpHEMh9LvdZe46sQyXoWK2m/J6Pco37xpv6Eo0zrdq55Le4TEVFn9iRQCJRY6ua7WGQ9aVQViwcBKuiRQZ0ukJnWv2VwVycOogK2XGeSxR/3JpWiotXBuVoUPfsdYseDsmiaWl1+Syo/KbdbCBiaAm2U6jszXTCtHjBAjuM9eqMrCPvO/oRDU/mqKG9kSYZ+BLaOuUI93+4H9Z7aMxZ4znZXr8hkN2npgM8ClJDOUoEe111P8MflFMKw9mflc61ZYBMk3n+j2zZa+ut07g
\ No newline at end of file
diff --git a/drpy_js/哔嘀影视[优].js b/drpy_js/哔嘀影视[优].js
deleted file mode 100644
index 02e7e49..0000000
--- a/drpy_js/哔嘀影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/啊哈DJ[听].js b/drpy_js/啊哈DJ[听].js
deleted file mode 100644
index 7bdd169..0000000
--- a/drpy_js/啊哈DJ[听].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WViuWTiERKW+WQrF0nLAogICAgaG9zdDogJ2h0dHBzOi8vbS5haGFkai5jb20nLAogICAgdXJsOiAnL211c2ljL2lkLWZ5Y2xhc3MtZnlwYWdlLmh0bWwnLAogICAgY2xhc3NfcGFyc2U6ICdib2R5JiYuc29ydCYmYTthJiZUZXh0O2EmJmhyZWY7KFxcZCspJywKICAgIGhpa2VyTGlzdENvbDogIm1vdmllXzIiLAogICAgaGlrZXJDbGFzc0xpc3RDb2w6ICJtb3ZpZV8yIiwKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDAsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBfdXJsID0gcGRmaChodG1sLCAndmlkZW8mJnNvdXJjZSYmc3JjJyk7CiAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogX3VybCwganM6ICcnfTsKICAgIH0pLAogICAg5o6o6I2QOiAnKicsCiAgICBzZWFyY2hVcmw6ICcvc2VhcmNoLz9rZXk9KiomcGFnZT1meXBhZ2UuaHRtbCcsCiAgICDkuIDnuqc6ICcueWlueXVlX2xpc3QmJmxpO2EtLXNwYW4tLXNwYW4tLXNwYW4mJlRleHQ7aW1nJiZzcmM7c3BhbiYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogJyonLAogICAg5pCc57SiOiAnKicsCn0=
\ No newline at end of file
diff --git a/drpy_js/喜马拉雅[听].js b/drpy_js/喜马拉雅[听].js
deleted file mode 100644
index 6c71a6e..0000000
--- a/drpy_js/喜马拉雅[听].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV+IpJMw5v95iw+CDIe0xhACYgBqbJXAWpBP3VXp92zy3dRCdcxRWtoilLA1l905lIMBokQUq2c0+4m8/SfQsK3Gd5S3AKVjSuSJkmlfiqmmuBNwiBCgyX08ja6sPRixjVSQxlTiRdmgBldbMWT2gI3eEVfzF3vbU9TMFH6G6xWpRy+g0724+NLMBNUQUiy9zUojBsNjcfcuTPnsXOtbgijZEcBLKWEL0jbadljppfmhzIzRdLmXqxLtaZzrt/gcToKnSiuSJSVW8mTdDPFTnDjt7LvgGmdKM95gz2DFrbBXC2GwuUiOXDr82HfYSwbksU+WfzZ07uEzxhMj7burQB2eowSPohmAYm/h5+OCXjUvBZYzK6occQ5+xoEKmmhanlvHuuNTZOnqXLdZmZDg+pJsZj60sPGxJR9wXhBROnNZ+fmbWlyyumoURzjV1vRY88C19PHAZuaphmN7rjXzpVmdEtUN3jOVRTvaf15Bzh+06FvmjogpgnYqK/N/JbBzZmGKjdX1oZvMT/dRxWWz6qYU2l5ZUy4ERvd5/UBbH5aSN5Fma9LWexzEX82a/vr+v4oK7qNH9gkEZvHnn/EEI6EnNW0V2P3pFRKga+ZxKZcAvDpbaaVV2ycRIlBJ0rLXXFsrSrwysj6lBt8u6hR7aSMsGqtxIzKvI1by/D3X3QuPNqzQTmelsNu0bemc29vzZLT2HRJFrG50+SRku2iHvtHTNilGNgJaUeRlskPpvdGKwwaPJE6GX+VR/q7VcoYWLLGVvEhg4oMmDGFjyC9ctvuAZzvcewSynGeOakFgT2SSH8a7E5xuoSi9WVkX9tHTg+vF6w+OF/uXn9aSMudU3PASUVsFXiW4pRKPBm+aqEVgoJIOSoLdPv2YBIR2WThWnIiMxk47KqI+V01Ef7E6MezHPHcVTTY++3o2Zud9icMpDkYvlj74u3ZVvP5nKJtTsN5kk48BHpo8ipasywv48c8qicvpipy8YfmjcYDbvTIy7/kKwJkyO90oSOsWcw8U6xjt6ph3wVy6w9v5AOd566EUWrGndXyEMmsc8BxJ8cbmUsLe5kaSk3xvlEF3WCkYLCwXdz5i9JoXqd3Ydb0Qo9lkq1SfSjddHGXs2gsg+VE6jqcsYNcwV/aeA4Rncp2eIrfywfldSHRHzmDoFRZMeqaN3qjwn1A1xcyc6HyDFX2N3a2y54sxuhO1P1gmzIbPiw0LfdqDVRouC16vZDqLH9cIEwXBvC1opZ0TIIGOs0/j2jg3QWoOY9FJkKcL/RRK56zB8nEsfBDMtmf4IyYvefq6HoDV1q+to/JvzGoAY01S4zOrFQnNqak0E2Ne01l7Qlkghnsf57fgTNFOHeQA/FS8gegZQiRg0k+UPtjhb/P3YcBqxRZYOLT1HcsPH7qtMz26bd48GHmkjGU3PIUQy3hF+Os0IX1Wkic7VMkdE1j9zhNcOTELMlruttC/SfP6+PfMoN1USLSZESnALBNKFmXlAAs0oCBxMtJBGzZuLh9pu6uWQ5jUiSJXXULkcd/CiGflZkgz2f1pQvZIrEI37Iec70yMr70KeFmcySwU5NSD4mLeMENtfoeDOPgQFOUn4qe6tWilRUZuQ89U/fP+15UkXqCNd5Yo625KJc3WaTXFotXzf4pbceDhsYRLrC+GlIvuKj7qzbxmsXVIX5243V3vL9cBHr/SU9DFYhH57XbZwl8+EjV1mtxSuv4MeZKGSVzHc8RGbao5y1zCHcPI08Hq2gdPlgW94HLJJPMJ5xsfcSX655qg3+B65vbG4WZtl8OObcgh4PAass9XjNKSo+6YZzrnmvhc8ydDK5s5CelG05gLipbZE6qgqaD2z40yYTZv2A7UudVCLtuZ5MlQhnYKZ0RuFu+cTxMGN01UTcL5nDpGY3VsAU9EdpvFbEfY0/wWs3nlJy/IQVKFTSNT+mf3SR/UPe63HotE+mgdVUsOyf84/hMtG16EAR95i4+WCafZQ/RENFlhaaJpc/JbVq+luNXK4GyEBSsYj0bglQRGA76EMVFDGJ3pCe8JnMeH3NHvcd6ckOQOS1gZDxNKZZlpzVwjF/sFdcq/vfsSBtZ+EUQa/vCJtALtZvs2OWqavgReCk9+F/o34fIvXtZao2Id79HVd5UfBTn3WAzgmHaY3OAXmSz7WdJ7LJ5QeedUIRDLQv+AR1SOKMALTqwh9VewpyyAXzsVzKVUtesCAS6PJHAq8uNUP7pzn783RLwqX6g8UrlUlVOscUMVH3hz4aciubIaLntWRBF3+P0u3gV8hPeHaIVxiYH8Khm3t/zf8gOax1H/JTLVI5P95I69Z2/ncJySB6BTbZUUlTG4GkgAjpBWZWct+XXWx9vG+hHwaUDBTy2bA1z95ZePAcnHX+NtUuu8tPVKXZZtbWqaXXq6VTaO2t0V8IqS6xiqMcrRo7x2GQDNwv3SfJbpR/1mgAYen4EK4agHmpEJeNNV6NHvO08NrgmgL6obD9jPXtwBnTN199EUqsLzVOXAvfRR2ZlMR4WG7+8hi7uCYOSRyC3aUwAIfRolbAkFqieuJ8XHIKfsuBVJq2jD9P758Z0/ISFHX9ePsfZlljN3n9IdUhz6ZhvqentM/WVwtlMwoZasKIx0BBFma1kf3sNvodqhnaeaKuprctSz4X+TrBhiZsIWZBlZ7/XkymQkwkNy6O0JNdEfCRWi8XMHaZJwPMz+buwJw25qsdORAuwxtnng/IzEuc0amfUSXw6XLx9p2AJ7ctNgFJgQmGNV6UEEthUQ2IW+QYjx848NRdpjMhAy+OaAqEu/EQpk/C5fv3HoPARMln1onkR9tyzMqkAbNHHuBIpTCTNgToBZhlaIriTpdYf7yXIE1kozGkc0OBpAQFmB3Bd/DWACiE+LS9464WMjbfYLO4T7pb3GiPemlKNqwPMt2CYNW40Sd6PTdUIrh4sNNS3/pkaAq61J9gippNAq4s7wOSEpdO/2wTpWc4K2Xaey23w/hWcQgBr7RwEaB/JGFQq9s2DyZ+BmSqX6BIKbdhLRjWwPwqomVUTe7yPSQ0kGvLu1R+O1qHmy/O6pyMYxM6YIy0ucflVpnMGPd5y7QC0phQSTN8GvE44U79YvP+hVFdEr8Sd/fuJRDSq+1j0fYOG4wiUhWsVvXGhm1EDiiNY9INR+Xm3Z35fTcLZN8Rl/otyGmnDqoJK3vrTtFj9G8dPhjQn+t2CH0SA2aMN+0L9jbY0gHSILsONtmYEzCklJFsO3rvJg5GryHvfGlifMhtj38ZHJnvswQ3l5f6LOptoUOirmcEgqMAnCUsyeYH0g3LEWyJ9Kw30c5FEbT73/uq9ur/8VUIIGK/6qgcXtHd/QJ4sEDz0UFtUB03ixzVK2Ug8WcDCHoWNv4THyPvJXe/jjJQhMtbHzO2iOZ1AJSSxV3MXo9U3SUtRpySXOelyzHKHlJkB90JxjE1c06wa3S4hvfRUAEs4ut7CZItGC6emGvtKdaupw+OhNAlSY6O8D3byFiRy9vGkTWFmjcU6c80sg/GhJljl+ukOJcEnqc3jK6lYvM15KKnlquzSEydjdzSh7JpqIyDHjODTW4SHPnzYKYWWyIwfIgp92f+hIlwbpq0M+PS1wZpMRwPKj5AMDzLw5rcshKTzpUYUJohGg4e/d06NFVRsmsUNnnkdW0On8=
\ No newline at end of file
diff --git a/drpy_js/嗷呜动漫.js b/drpy_js/嗷呜动漫.js
deleted file mode 100644
index 6d84a4c..0000000
--- a/drpy_js/嗷呜动漫.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPXsKICAgICAgICAgICAgdGl0bGU6ICcxJywKICAgICAgICAgICAgaG9zdDogJ2h0dHBzOi8vd3d3LmFvd3UudHYvJywKICAgICAgICAgICAgdXJsOiAnL3ZvZHNob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLycsCiAgICAgICAgICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLycsCiAgICAgICAgICAgIGNsYXNzX3BhcnNlOiAnLmhlYWQtbmF2IGxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS8nLAogICAgICAgICAgICBzZWFyY2hhYmxlOiAyLAogICAgICAgICAgICBxdWlja1NlYXJjaDogMCwKICAgICAgICAgICAgZmlsdGVyYWJsZTogMCwKICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgICAgICAgICAgbGF6eTogJycsCiAgICAgICAgICAgIGxpbWl0OiA2LAogICAgICAgICAgICDmjqjojZA6ICcuZmxleDsucHVibGljLWxpc3QtYm94O2EmJnRpdGxlOy5sYXp5JiZkYXRhLXNyYzsuZnQyJiZUZXh0O2EmJmhyZWYnLAogICAgICAgICAgICBkb3VibGU6IHRydWUsCiAgICAgICAgICAgIOS4gOe6pzogJ3VsLnZvZGxpc3QgbGk7YSYmdGl0bGU7YSYmZGF0YS1vcmlnaW5hbDsucGljX3RleHQmJlRleHQ7YSYmaHJlZicsCiAgICAgICAgICAgIOS6jOe6pzogewogICAgICAgICAgICAgICAgdGl0bGU6ICdoMyYmVGV4dDsuZGV0YWlsX2xpc3QmJnVsOmVxKDEpJiZsaSYmYTplcSgyKSYmVGV4dCcsCiAgICAgICAgICAgICAgICBpbWc6ICcudm9kbGlzdF90aHVtYiYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgICAgICAgICBkZXNjOiAnLmNvbnRlbnRfZGV0YWlsJiZsaTplcSgxKSYmVGV4dDsuZGV0YWlsX2xpc3QmJnVsOmVxKDEpJiZsaSYmYSYmVGV4dDsuZGV0YWlsX2xpc3QmJnVsOmVxKDEpJiZsaSYmYTplcSgxKSYmVGV4dDsuZGV0YWlsX2xpc3QmJnVsOmVxKDEpJiZsaTplcSgyKSYmVGV4dDsuZGV0YWlsX2xpc3QmJnVsOmVxKDEpJiZsaTplcSgzKSYmVGV4dCcsCiAgICAgICAgICAgICAgICBjb250ZW50OiAnLmNvbnRlbnRfZGVzYyYmc3BhbiYmVGV4dCcsCiAgICAgICAgICAgICAgICB0YWJzOiAnLm5hdi10YWJzIGEmJmhyZWYnLAogICAgICAgICAgICAgICAgbGlzdHM6ICcuc3R1aS1jb250ZW50X19wbGF5bGlzdDplcSgjaWQpIGEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICDmkJzntKI6ICcqJywKICAgICAgICB9
\ No newline at end of file
diff --git a/drpy_js/嘀哩嘀哩.js b/drpy_js/嘀哩嘀哩.js
deleted file mode 100644
index 75443c8..0000000
--- a/drpy_js/嘀哩嘀哩.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/ASdotKRYPNu8cLtwdABO3MDeyNp8SITwKEVrcmMRsD6s0DQiKXK91uXHy81Bhzh8xPZzDl/A9cOXQrBxH+Qn2Zl2eNL3Ogzx+kAqZMq7TDGW7Ndfho+4VAcQyAx6N07mJYHA4x94WwszBgxbsp7GcesErxMHMjHWXdbImOCfpVcqeg26DzBb3cpa28wYefQF2s+fbNlwlWJeQnLBSLuK1wKAMahZyys0ERilTj+fvCQ8zuZJVbNUihk76uwf3UQavFn1W7Yibs4uOA38Dj51sLDEiJ1PqwXYzqROsYmoyDpdY1sJaRwR7x0BaXYmWdOEh7L0Vhceq2evj8POwVz8IDWoWtid/DbhgheQm7605g96VV+C4FGYtYWcJ65Nj1XPiFWIRVgDVkkHHRXheO41qBtS/avLHDaCR7MTTGqg2cB0iYCKDum7FHVREC0obqjy/6p98w16Q87B0LE3ZT1VcAKVqaq9eN4bDH3Q0SPWx2h0MdMQM40iWh+BPIBGL91D1e2cQTz6fNAJRhN4k4t2rHv+6JIhzke1ABiy2JPzZvlcNJmpcZZASG/0iFtBscSaXEmplHb+7F1uwhM+Dof6ygZ857d7WdlpBEMF+MkiZfZ8jUfHr4xbdK/fjHBvAbLntFiaVQuoTWtwFOJvK2Z9EImQQKcrcGsgvK6ciouPOndiWdWXB/uhkekWBgSSqFRkmgPfjl8D55qxTHrK10Y6/Ba5c7JXte02gYYYmN8dC2wiqN63S3ss4Q7BBQHpIIz7vnBFgu1SW+ArR4YOpm4KVU/h3CaghPa1hj7k/VSyVy5eWrzH/r5F+VZgIxyhhOyOQjv+QuvRwJUsWDo8/v31c9qQMKFpREllODOPa8O8fBqVS/zaeYjSqLbIssLQyk9VdgIvvWZwroiussZfvYYcrzQy0dzR3/YhSQZEsIzFYNr0A5+E2xypU1JJ6L7H8fvoM7aLM5XlSIiRhB5NVfBrVtUZV7TC61pn4zVet55VnPbGzGMJ+AZxlaqj6BKiFCEmSkELk1OUY/g2oEGmDHNvBJbNzBYfHhUopYtfjGwWRavramw1nau28VDNn3eDjZQzFFFspx/TFeZJEj0mUfIsQlVlFHPct0q0o9aDe0E+mbVFLervzMiL6lCqp5LNQuDmABtzgPUKI+tnJDsawN1ooRxJVXGtdbse96sfMv2uHkd6S4lYx7m7QoS8Sj5BnW/iZyIKegaBS9pGTTLxfJ1BTF3A45/r7P9kDKhlx4/hoNkz/WSNlYP+KWuM0ljZ5pRnvrTMEIrOrfd6ngQMr0+uhqVdWJtkriSCGCttddxdAtl8V/K69rFaI27RYKSrW73H4sEz9sbQ+Fj9k8NvutV75ojXdxncNqLyAbf9uTd1T0sKK/s9+8/MPRR/EUH7GA8VsGux9poJKPuxhNDuFVCdZdWEfs5Qx7ZNc+1YYbIe5qUofNHW6g8Y7vVZj6DaFzx+2pdvmrABXQZyILxs+oiCd2bAKXR/pkBWFbe2jiSTJviSyq7/6y0qBR0Rc9moINlCbs0Znmab2GMtiaUYKWaT0LZJdws29r54AA9NHvpQZJua83Tei7Xu683zalMzXNhX7iFlbYDHU1iNJIVVnUqYO042/8UObnpGNa8uWW8e4ejJ/rM6jNDy+ELyV3b25p42IOiWyFm0/kS7HOM9DLPmk3qb/tUJsgzLnTuNGl1QcyZ
\ No newline at end of file
diff --git a/drpy_js/在线之家.js b/drpy_js/在线之家.js
deleted file mode 100644
index 1f2b052..0000000
--- a/drpy_js/在线之家.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/地瓜视频[密].js b/drpy_js/地瓜视频[密].js
deleted file mode 100644
index 306d03b..0000000
--- a/drpy_js/地瓜视频[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAAAAHVUW1PbRhR+dn6Fxg/Hl8GSLYFx7DKddJqHdtrmIeWp6ZBFXttKZVuRVsZuygzMtJALdk2SFpqagbrh0hCm0DDFGCe/RlrZ/6KrCwV6kTQrfUff+fbsOWe3hnRON1XMTXEPrnHsIgpRcZaL2J1D51lnuLs06q5GxrxfYWSSUlUPZ7lw3b3CvrlUNQhzKBGiGVlBmJub41MpsVbjZTlwNHWVEYRaNU8aGhYKDVlFhpEoNDRUxHyJlNWA6NlnKqjsRfDzW6u/60cAAVh+RZ80A2AvnrjAebvq9LtW74w+PQj+0FZ3+PgIaO87p/+7fbDjPN8E+3DV3lmmJ/v2zhnQ9RZd36TN7vDbXuBjDbbsV0/B6r+gx39YvWf2Sh/o2vZo8ze6tuVsLQJ9veu8awXA6h3QH5ftgzX79AcGHjmuwI7TXgK7+cto4YX9eI8O9sE+2bNO3zA3NoI96NvbPev0iDHBfvgn7TSt3saw2/Fi234zbG8MW49YBH0WorO0yUzgvHtp9V/a3//KRjcc2nntHG8xCoz219n67HbTGqyD8/zEbq8wBzZGxjhBGG38RBcW7YdLztEZ4zi7h/TJgLa2L2XZL0oaJiED10FKQyoJYgpS7BFBZI8E4jiIEyCmQZwEMQMioyVBSoEkgiSBNAlSBqTrQe0MjHS5NP13qX0sxOMJwS2z8O9q+ww06/ab6Jvum4r81W3PnuWSvq2gqATrPi112cQmilzGwZKu2vK4kOUezAetilEe60Y26HX3ikwbWE/cKOIKiTDnT2998NEnN2emb0Q8BvMLdkUZV03W5hPJZBCWIPh51JBuuO06W803AHijaiYIKo4lL75zCOBzXCfuu6TjwnmzI4JncF1WzTy+CFtTUeNck+gm9q0q+rqRvXvPyF4LhWpsy7pZZFv249u3PuM9clTH901skKhS0UwS48uIyKWooHt6LA18/P2pKBti7wmxL1JfxnKBEEsZ03HlePbpWpUCF/Uwrsh6QyPc1BQXSUViLGehUMjnmxVsyEjDUQZjzDzPYdXA3H+6iv/jOosMnB7/EMvVvK/jCQUBCHfu8GXJzHzjvrVxgSfu2jyWL+Yt0zu0GAjdq3vdEvJnybqr8lGQyKQL5i8CvZDw57zrZzlfNb0uu5R3paywqqfPS05be8Nmm1WL16tzAHk1V5oIistXEDF1zIyIoERVV4pKBam5fxTd6i2ws4KdoK5AopwwNCTjDICquETv8M0p5SKAocs5XiG4nEBmXVEVpDeudlFw+lr9FVcwHA8wbXec424Q4dUJ4v7NIpn/CyHaGxz3BQAA
\ No newline at end of file
diff --git a/drpy_js/墨点影视.js b/drpy_js/墨点影视.js
deleted file mode 100644
index 7a523bb..0000000
--- a/drpy_js/墨点影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICfloqjngrnlvbHop4YnLAogIGhvc3Q6ICdodHRwczovL3d3dy5tb2RpYW5keS5jb20vJywKICB1cmw6ICcvZnljbGFzcy9wYWdlL2Z5cGFnZScsCiAgc2VhcmNoVXJsOiAnL3NlYXJjaC8qKi9wYWdlL2Z5cGFnZScsCiAgc2VhcmNoYWJsZTogMiwKICBoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiAnUENfVUEnLH0sCiAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLW5hdiB1bC5saXN0IGxpO2EmJlRleHQ7YSYmaHJlZjsvKFxcdysvXFx3KyknLAogIC8vY2xhc3NfbmFtZTon55S15b2xJueUteinhuWJpybnu7zoibom5Yqo5ryrJue6quW9leeJhyblvq7nlLXlvbEnLAogIC8vY2xhc3NfdXJsOidkaWFueWluZyZkaWFuc2hpanUmem9uZ3lpJmRvbmdtYW4mamlsdXBpYW4md2VpZGlhbnlpbmcnLAogIHBsYXlfcGFyc2U6IHRydWUsCiAgbGF6eTonJywKICBsaW1pdDogNiwKICBkb3VibGU6IHRydWUsCiAg5o6o6I2QOiAnLm5ldy1saXN0O2xpOy5zdWJqZWN0JiZUZXh0O2ltZyYmX3NyYzsuc3RhdGUmJlRleHQ7YSYmaHJlZicsCiAg5LiA57qnOiAnLml0ZW07LnN1YmplY3QmJlRleHQ7aW1nJiZfc3JjOy5zdGF0ZSYmVGV4dDthJiZocmVmJywK5LqM57qnOiBganM6CmxldCBraHRtbCA9IHJlcXVlc3QoaW5wdXQpOwpsZXQga2RldGFpbCA9IHBkZmgoa2h0bWwsICcuaW5mbycpOwpWT0QgPSB7fTsKVk9ELnZvZF9pZCA9IGlucHV0OwpWT0Qudm9kX25hbWUgPSBwZGZoKGtkZXRhaWwsICcuc3ViamVjdCYmVGV4dCcpOwpWT0Qudm9kX3BpYyA9IHBkZmgoa2RldGFpbCwgJy5sYXp5LWxvYWQtaW1nJiZfc3JjJyk7ClZPRC50eXBlX25hbWUgPSBwZGZoKGtkZXRhaWwsICcucnN0eXBlJiZUZXh0Jyk7ClZPRC52b2RfcmVtYXJrcyA9IHBkZmgoa2RldGFpbCwgJy5ibG9jay13cmFwIGVtJiZUZXh0Jyk7ClZPRC52b2RfeWVhciA9IHBkZmgoa2RldGFpbCwgJy55ZWFyLS1sYWJlbCYmVGV4dCcpOwpWT0Qudm9kX2FyZWEgPSBwZGZoKGtkZXRhaWwsICcuYXJlYS0tbGFiZWwmJlRleHQnKTsKVk9ELnZvZF9kaXJlY3RvciA9IHBkZmgoa2RldGFpbCwgJ3AuZWxsaXBzaXMtb25lOmVxKDApLS1sYWJlbCYmVGV4dCcpOwpWT0Qudm9kX2FjdG9yID0gcGRmaChrZGV0YWlsLCAnLnBlcmZvcm1lcl9yb3ctLWxhYmVsJiZUZXh0Jyk7ClZPRC52b2RfY29udGVudCA9IHBkZmgoa2h0bWwsICcuY29udGVudCYmVGV4dCcpOwoKbGV0IGt0YWJzID0gW107CmxldCBpID0gMTsKcGRmYShraHRtbCwgJy5uYXYtdGFicyBhJykubWFwKChpdCkgPT4geyAKICAgIGt0YWJzLnB1c2goaSArIHBkZmgoaXQsICcudGFiLW5hdiYmdGl0bGUnKSk7CiAgICBpKysKfSk7ClZPRC52b2RfcGxheV9mcm9tID0ga3RhYnMuam9pbignJCQkJyk7CgpsZXQga3BsaXN0cyA9IFtdOwpsZXQgaHRtbHMgPSBwZGZhKGtodG1sLCAnLml0ZW0tbmFtZSBhJykubWFwKChpdCkgPT4geyByZXR1cm4gcmVxdWVzdChwZChpdCwgJ2EmJmhyZWYnLCBpbnB1dCksIHtoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJ319ICkgfSk7Cmh0bWxzLmZvckVhY2goKGh0KSA9PiB7CiAgICBpZiAoaHQpIHsKICAgICAgICBsZXQgcGxpc3QgPSBwZGZhKGh0LCAnLmVwaXNvZGVzLWxpc3Q6ZXEoMCkmJmEnKS5tYXAoKGl0KSA9PiB7IHJldHVybiBwZGZoKGl0LCAnYSYmVGV4dCcpICsgJyQnICsgcGQoaXQsICdhJiZocmVmJywgaW5wdXQpIH0pOwogICAgICAgIHBsaXN0ID0gcGxpc3Quam9pbignIycpOwogICAgICAgIGtwbGlzdHMucHVzaChwbGlzdCkKICAgIH0gZWxzZSB7CiAgICAgICAga3BsaXN0cy5wdXNoKCcnKQogICAgfQp9KTsKVk9ELnZvZF9wbGF5X3VybCA9IGtwbGlzdHMuam9pbignJCQkJykKYCwKICDmkJzntKI6ICcuaXRlbTsuc3ViamVjdCYmVGV4dDtpbWcmJl9zcmM7LnN0YXRlJiZUZXh0O2EmJmhyZWYnLAp9
\ No newline at end of file
diff --git a/drpy_js/夕云影视.js b/drpy_js/夕云影视.js
deleted file mode 100644
index 698517e..0000000
--- a/drpy_js/夕云影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/多多影音.js b/drpy_js/多多影音.js
deleted file mode 100644
index f5d4b0f..0000000
--- a/drpy_js/多多影音.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/多多追剧[优].js b/drpy_js/多多追剧[优].js
deleted file mode 100644
index 69c38eb..0000000
--- a/drpy_js/多多追剧[优].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV2K0eJ87PIqOB96v7xvVTNVQRlDDWF/qggkmgOoRYYsg8UKacyIU3TqKpvD2+foBwgo+sAvvQW2xKVNn5rme/lfcERrWK0kXJBBXPTxlr14W8QVkNR6y7DU6QjyPQHKpy4yjiLGnRQpQzijyseeAW6BPIeP6yGdX7FIw9HVuJIQhMf4ZNXQuNCGHRDReJWx0nl32FHGta2Qsf1ovZ42ryRs3azOWOpbMt/dPEdmEH99lABwLpvayrsXgKl5z6xEnQy2qXWM/SN23BCkW/LccW83htmx0nnKmPjg3TAMRu2JJmzuAb+39MYMkcbfkz6lKh1JUa2EolnRE7FGMJBJp6T/ohLTUBvuU4LI0R2qwPCx0LuBOXil59ZC52N2swZgULK4WRaMUPCJHLbbM8o+kXmYnfE81jA4wNPTxtrD2Z8iYxt2C+gwCSK+5FvUImdgqLxcDdmGhtA4ECyGkki2MNQhm/eTBgoKz7AusLRwco7SZ+AC7JSG9dhT4k+pMrq7sLA+y9aDLHe2nzNc3aMch0CP8rsHWVr4cOJfCYx3W0z6Oy4s8rLe+Kd/N34N30LfPOGw6NMljUUEIy3psn6XOSrmTW/ecsPTZsJLCLH9tG+S01jJTVX3J2f8QFf9TEHPHmiKUBFH8JM93F2YHIj0Ji1fn7cz/z6DZpJqPcdd075XDb3+rMNBbG9r/AZxHQ0elx6cwCjhzt8so8UNsEYFgPSUXyPLLF+SicmA2AXeHErNTcZneDeIT6by0aqiLMuyfhd08ekpAqyY281q0LdFQyBBpVZZFwP9D8x9ql4ghiQe2PgJ90I/OrCejvCImNYw32xXTTaE1xIxAm1wAmAKakF4=
\ No newline at end of file
diff --git a/drpy_js/大中国.js b/drpy_js/大中国.js
deleted file mode 100644
index a6e0e8f..0000000
--- a/drpy_js/大中国.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn5aSn5Lit5Zu9JywKICAgIGhvc3Q6ICdodHRwczovL3ZpZGVvLmFvMTQuY24vJywKICAgIHVybDogJy9pbmRleC5waHAvdm9kL3Nob3cvaWQvZnljbGFzcy9wYWdlL2Z5cGFnZS5odG1sJywKICAgIHNlYXJjaFVybDogJy9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyBsaTpndCgwKTpsdCg4KTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPylcLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAn5LuK5pel5pu05pawfOeDreamnCcsCn0=
\ No newline at end of file
diff --git a/drpy_js/大全[央].js b/drpy_js/大全[央].js
deleted file mode 100644
index a4d6215..0000000
--- a/drpy_js/大全[央].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/大全央视[央].js b/drpy_js/大全央视[央].js
deleted file mode 100644
index e0667b0..0000000
--- a/drpy_js/大全央视[央].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/大千视界.js b/drpy_js/大千视界.js
deleted file mode 100644
index d28d925..0000000
--- a/drpy_js/大千视界.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+Wkp+WNg+inhueVjCcsCiAgICBob3N0OiAiaHR0cHM6Ly93d3cuZHFzai50b3AiLAogICAgY2xhc3NfbmFtZTogIueDremXqOaWsOeVqibml6XmnKzliqjmvKsm5Zu95Lqn5Yqo5ryrJuasp+e+juWKqOa8qybliqjmvKvnlLXlvbEm5Ymn6ZuGJueUteW9sSbnu7zoiboiLAogICAgY2xhc3NfdXJsOiAiMjMmMjEmMjImMjUmMjQmMjcmMjgmMzEiLAogICAgLy9zZWFyY2hVcmw6ICcvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0qKiZsaW1pdD01MCcsCiAgICBzZWFyY2hVcmw6ICdodHRwczovL3d3dy5kcXNqLnRvcC9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHVybDogJy9pbmRleC5waHAvYXBpL3ZvZCN0eXBlPWZ5Y2xhc3NmeWZpbHRlciZwYWdlPWZ5cGFnZScsCiAgICBmaWx0ZXJhYmxlOiAwLAogICAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQU8yYlcwOGJSeFRIdjhzK1Uya1dRcUI1eS8xK3Y2ZktneHRaYlZSS0phQ1JVSVRrUUNDMlE0eUppaDBhQXlXdEV5ZkJOVGUxWURENU1wNzErbHRrN1RrM3EzVEZneC9pYU43Mi96c3pzL1AzenA0NU81SWZPOTJ1YytTN3g4NVAwVkhuaVBOZ0lESTg3SFE1ZzVHZm80R3NyZTNveGVlQmZoUVorRFhhYkRjWVlEMVpxRThVR2pnUXpsaVhvVjU2c2JZeUN4UUV4dnhQYVozRUhpQXdwcE5yK2xNV1lpQXdWcHNvK3NzeGlJR2crOFZmZVJuc0I0TDZmVnowa3RUUENPcjN4N0orWGNSK1JtQ3N2dkRTZTVXSEdBZ2FNNzdtVFV6aW1FYVFoNm1YOWZuMzZNRUlpcVZUK3UrUEdET0N4cHpmMCtrNGpta0V6WE45eDN1S01SRDBlNllYL0ZRQ2YwOGp5RVB4TjI5akRqMFlRV09PcjlReTlJeU1vRmlxVUV0UFljd0k4cEIvcHJkMzBJTVI1T0hkTE1kQTBKaGJXMTU4QnNjMGd2cmxGNFBaWVQ4anFOK1R0QmZMWUQ4anlQdHl6Si9FWndTQyt1WEt3VXJBZmthSTlWSXRKM2k5TkFUTkpWbXFWVDdnWEl3Zzc2a3BQYk9PM28yZ2ZuL3RWWGQveDM1RzBEeWZUT3RjR2VkcEJJMlplTWRyQ1FUR3Fyc2ZkQUU5Z0tBeFk1WGFYZ3JITklMWGZGNXZiOUthYndyeVBqZnZqNk1IRUhTLzhyb3VwdkYrUnRDWXVhVnFHVDJBb0RHTDAzNThFY2MwZ3VZNW5xak40ZThKZ3NiY1MrblZXWjNmd0dGSlUrL0tqbDZkOFV0b2hqVy9VMXZCazYrdjdOSnJoWnBjYmM4SFErbzBMbmJXTlArTjVmckNHNTRtYTJxeDhxYTZuZVl4V0kvZGI3UXhPVE15Rkkxd3l0UzVWVDFkUG1qS3pPYTkzQXFPYmdRWjJDcnExeFdjdlJIeXRxUFJ5SkM0N2ZabWRhZHl3TnQycSs1RHdKcVhndmN3NzVHOG0zbTM1QzV6VjNMRlhBbnVma3M4dUJTOG4zbS81SDNNK3lRL3pQeXc1TDNNZXlWbnY2NzA2N0pmVi9wMTJhOHIvYnJzMTVWK1hmYnJTcitLL1NycFY3RmZKZjBxOXF1a1g4VitsZlNyMksrU2ZoWDdWZEt2WXI5SytsWHNWMG0vaXYwcTZWZXgzK0JTTHN1QnlPQVB2Q3o5VXRFdnhBNytOZ1R0K1cxb0NQRTJlSmxuL0RZMFJNdHRveU1qVWZrK0ZMTmU2Y1VCYjN3VXdGRWl4NEFjSTNJY3lIRWlKNENjSUhJU3lFa2lwNENjSW5JYXlHa2laNENjSVhJV3lGa2k1NENjSTNJZXlIa2lGNEJjSUhJUnlFVWlsNEJjSW5JWnlHVWlWNEJjSVhJVnlGVWkxNEJjSTNJZHlIVWlONERjSUhJVHlFMGl0NERjSW5JYnlHMGlkNERjSVhJWHlGMGk5NERjSTZLK3dWZXZjU1dYeXZlanZFeTg3RC8xN09aL2xvazNuZkJ5TVMrekNrT01QQXhhMHpKdEJvTmlGSUkvUGh3WmxrRy85RlRIc1k0YWZ2RExVTFJ4Ky90ZFRwQTViYVZ0SzIxYmFkdEsyN0dWdHEyMGJhVnRLMjFiYWR0SzIxYmFiYSswZTJ5bGJTdHR4MWJhdHRKMmJLWGRPWlcyTFdsc1NXTkxtdjFMbWtPMnBMRWxqV05MR2x2U09MYWs2WnlTeGg0ZVBzSkx3ZTNob1dNUER4MWJhZHRLK3d1c3RIdmJWR25yVEM2b0dYRHJNeUswR212UGJ0WFlxR2xIQW1GM0pMc2pmYjA3a3Y5OGpYY2tFSGJYY2V5dTAwbTdUbCs3ZHAyUWIxYWRMRlFyT1l3WkVib2pZYitRYzRXd001V3c3M1Z2SXVtTjR6YzVDSXFGbkN1RW5ZMkU3cmdoNTBKKzhhMmVwdTlnSThSMld2OXppYmZUaG1qalRrM1RCU0dxYkk2QndGaDk2VDNIUUZDL3JaTG9ad1EvcXNsZ2Z2U29ta0xrVUs0YVFOZ2Nhbk5vUitYUS9uYmwwR1pxckNYd1M1WjFhNllSTFVpMzVodHV3Ym8xNDRvV3BGdnpJTGRnVFMyYUI2U2lCZW5XL1VETWxIU2JzdGkrSjJCaDN5S1l4ZDdPQi9rSnM1Z1JaR3RqanZ1QmtObVBZaUJFMXZ6Zms3cDlNeHorU0h2L2NneUV6WDQyKzNWUzl1dVJmK1MxQzlZdTJDOTd3WTU5QnRRRDQxdDdQZ0FBIiwKICAgIGZpbHRlcl91cmw6ICImY2xhc3M9e3tmbC5jbGFzc319JmFyZWE9e3tmbC5hcmVhfX0meWVhcj17e2ZsLnllYXJ9fSZsYW5nPXt7ZmwubGFuZ319JmxldHRlcj17e2ZsLmxldHRlcn19JmJ5PXt7ZmwuYnl9fSIsCiAgICBmaWx0ZXJfZGVmOiAiIiwKICAgIGZpbHRlcl9kZWY6IHt9LAogICAgZGV0YWlsVXJsOiAnL2luZGV4LnBocC92b2QvZGV0YWlsL2lkL2Z5aWQuaHRtbCcsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgc25pZmZlcjogMSwKICAgIGlzX3ZpZGVvOiAnb2JqL3Rvc3xiZC54aHNjZG58L3VnYy8nLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDEsCiAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgIC8vanM6J3RyeXtsZXQgdXJscz1BcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImlmcmFtZSIpKS5maWx0ZXIoeD0+eC5zcmMuaW5jbHVkZXMoIj91cmw9IikpO2lmKHVybHMpe2xvY2F0aW9uLmhyZWY9dXJsc1swXS5zcmN9fWNhdGNoe31kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJidXR0b24iKS5jbGljaygpJywKICAgICAgICAgICAganM6ICd0cnl7bG9jYXRpb24uaHJlZj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGxheWxlZnQgaWZyYW1lIikuc3JjfWNhdGNoe31kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJidXR0b24uc3dhbC1idXR0b24tLWNvbmZpcm0iKS5jbGljaygpJywKICAgICAgICAgICAgcGFyc2VfZXh0cmE6ICcmaXNfcGM9MSZjdXN0b21fcmVnZXg9JyArIHJ1bGUuaXNfdmlkZW8sCiAgICAgICAgfQogICAgfSksCiAgICBsaW1pdDogNiwKICAgIOaOqOiNkDogJy5ib3JkZXItYm94LnB1YmxpYy1yIC5wdWJsaWMtbGlzdC1ib3g7YSYmdGl0bGU7aW1nJiZkYXRhLXNyYzsucHVibGljLWxpc3QtcHJiJiZUZXh0O2EmJmhyZWYnLAogICAg5LiA57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBib2R5ID0gaW5wdXQuc3BsaXQoIiMiKVsxXTsKICAgICAgICBsZXQgdCA9IE1hdGgucm91bmQobmV3IERhdGUgLyAxZTMpLnRvU3RyaW5nKCk7CiAgICAgICAgbGV0IGtleSA9IG1kNSgiRFMiICsgdCArICJEQ0MxNDdEMTE5NDNBRjc1Iik7CiAgICAgICAgbGV0IHVybCA9IGlucHV0LnNwbGl0KCIjIilbMF07CiAgICAgICAgYm9keSA9IGJvZHkgKyAiJnRpbWU9IiArIHQgKyAiJmtleT0iICsga2V5OwogICAgICAgIHByaW50KGJvZHkpOwogICAgICAgIGZldGNoX3BhcmFtcy5ib2R5ID0gYm9keTsKICAgICAgICBsZXQgaHRtbCA9IHBvc3QodXJsLCBmZXRjaF9wYXJhbXMpOwogICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBWT0RTID0gZGF0YS5saXN0Lm1hcChmdW5jdGlvbiAoaXQpIHsKICAgICAgICAgICAgaXQudm9kX3BpYyA9IHVybGpvaW4yKGlucHV0LnNwbGl0KCIvaSIpWzBdLCBpdC52b2RfcGljKTsKICAgICAgICAgICAgcmV0dXJuIGl0CiAgICAgICAgfSk7CiAgICB9KSwKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnLnNsaWRlLWluZm8tdGl0bGUmJlRleHQ7LnNsaWRlLWluZm86ZXEoMyktLXN0cm9uZyYmVGV4dCcsCiAgICAgICAgaW1nOiAnLmRldGFpbC1waWMmJmRhdGEtb3JpZ2luYWwnLAogICAgICAgIGRlc2M6ICcuZnJhY3Rpb24mJlRleHQ7LnNsaWRlLWluZm8tcmVtYXJrczplcSgxKSYmVGV4dDsuc2xpZGUtaW5mby1yZW1hcmtzOmVxKDIpJiZUZXh0Oy5zbGlkZS1pbmZvOmVxKDIpLS1zdHJvbmcmJlRleHQ7LnNsaWRlLWluZm86ZXEoMSktLXN0cm9uZyYmVGV4dCcsCiAgICAgICAgY29udGVudDogJyNoZWlnaHRfbGltaXQmJlRleHQnLAogICAgICAgIHRhYnM6ICcuYW50aG9sb2d5Lndvdy5mYWRlSW5VcC5hbmltYXRlZCYmLnN3aXBlci13cmFwcGVyJiZhJywKICAgICAgICB0YWJfdGV4dDogJy5zd2lwZXItc2xpZGUmJlRleHQnLAogICAgICAgIGxpc3RzOiAnLmFudGhvbG9neS1saXN0LWJveDplcSgjaWQpIGxpJywKICAgIH0sCiAgICAvL+aQnOe0ojogJ2pzb246bGlzdDtuYW1lO3BpYzs7aWQnLAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gZmV0Y2goaW5wdXQpOwogICAgICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCAiLnB1YmxpYy1saXN0LWJveCIpOwogICAgICAgIFZPRFMgPSBsaXN0Lm1hcCh4ID0+IHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiBwZGZoKHgsICIudGh1bWItdHh0JiZUZXh0IiksCiAgICAgICAgICAgICAgICB2b2RfcGljOiBwZGZoKHgsICIubGF6eSYmZGF0YS1zcmMiKSwKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBwZGZoKHgsICIucHVibGljLWxpc3QtcHJiJiZUZXh0IiksCiAgICAgICAgICAgICAgICB2b2RfY29udGVudDogcGRmaCh4LCAiLnRodW1iLWJsdXJiJiZUZXh0IiksCiAgICAgICAgICAgICAgICB2b2RfaWQ6IHBkZmgoeCwgImEmJmhyZWYiKQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KSwKICAgIOWbvueJh+abv+aNojogJyZhbXA7PT4mJwp9
\ No newline at end of file
diff --git a/drpy_js/大师兄影视[优].js b/drpy_js/大师兄影视[优].js
deleted file mode 100644
index 1d66ab0..0000000
--- a/drpy_js/大师兄影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/大米动漫[漫].js b/drpy_js/大米动漫[漫].js
deleted file mode 100644
index 6621836..0000000
--- a/drpy_js/大米动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV2y7g637nkMoiC8thhxc2MRR1CZobGM4GGKKZ3T9nbHPyGNK/dkd60Q8PiHrQb/wQakP/zJDlBpMAutb9A48gZPTetFUQOCeNF79+YUZlDZ/AG8/TNVU+N9MIs+IQxGBE9rBKhdx5hl0bahLVuRtPRPZzMe0ATrN42MCfrcdM8SqiK1EdiqsWvhWOyW/ePEA1NwXoFFbGomANbZ9Gia3aRBr2VsJyhU1wM28eqsC+U4ZnFbcwYXl0wkPHmoQSVClfY6ocNiW1H0HbsT/y7/TEbtNz9X74rGxjDfp91UoX0R0m4bH7pxX1j5y1liuU0h9NrbUpW3KYVLrv/gZIpy0+rSFuQ8P2Wtox7HT4XOzFyXYvk7FCTOr+j6ZaGMqWt4kXeOJHphQqSIs1GkueWRZsEfV05AlfLaK665om6lPsIaraIQd4PccLAFGLUlETYA3tdQnZsDD5pKZr0dtjiTl7bTDN6Jh+V173dIRgctRuEwc0902IFPdYR76swf7F8+TBxcxox+T9V7FAxicdzptGEcREGHLFGei59xeiPcvLpEvsTc3c5S5o7cKkd96YgZg0LRNx9N9c0B3YfT3COIIQoO8y62TlYNH7WrGl+RjtZ2H+K2Qjt1EVH9fXtjxiZBv4gaxCnO3yiql6uCgJ5RdfzY5DbZc7D6knURhPVrvhW/Wg3C6wyfobZ/gup/esGcEAnEJZ+abzIb+F0+0qDhRHEFqKUnZTnSxJoZNjhgFnTGkTZU1E0KRHZXx925BPjOS1ILKBhoyB/l29NAt3g63OwBIzOLJVxML4k/h3O8uZ8P38GtvWEPVM3PiKkmFpXFZ1w==
\ No newline at end of file
diff --git a/drpy_js/大米星球.js b/drpy_js/大米星球.js
deleted file mode 100644
index 3aa23b8..0000000
--- a/drpy_js/大米星球.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/大米星球[V2].js b/drpy_js/大米星球[V2].js
deleted file mode 100644
index cb80516..0000000
--- a/drpy_js/大米星球[V2].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/天启.js b/drpy_js/天启.js
deleted file mode 100644
index 22fac30..0000000
--- a/drpy_js/天启.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV5e0sjfnYsSqn4yYxXGRvGWAO0B8/Cfy2aIUaqx+LGKkJJXCN3ewz5qGMkIGIUJ/ZUXAwtuHyGzkSaIreKvLPtI4FAs3y16d3k0Rn3uiCYzA1cLDp4JkbQVYIy1ghTA1JMskyIWGfPbKRpFWtJzDhy5qfnXaKzJ4cohKx/8zFvr5O60LSVthIV3USXuEUkucuRIPhlLKd6fWDsqRLXbtFwSZupXXNUHIintEwngsnbCmGJLJ4rw5VSvAh1Gr8zhWTLVJa0R/P+Qh75k58dtcxSbLZIPsi9AZCcsN1MTJ2AVAcUVICRkuv2zeZXBBeYH16LzQPDkZcXxzItKwxJkYnCfCxON9L97AHKCg80LhfvuvkdZAe4UnqP4xAQ7Dw13TIpqqvQHDioPUa0cWyWabtVhekj/VraP4JrA0wq2PEbEedzygs4Bm1EqK2JEvmOnmqb4eTQ+j3g6xivbXRWVPKwQGPB1qdj9DtcH/ts/RjwNiI4wPWoUksLuV8lpq3fQfycThVSdvnEYLruSuUa6ce+fu9lJzoF0H9QJVfp8N9NEz0CTxoGHvvOOpk0gs0uxL6Gqn3bq0dLLLkS0a1ogW1rsCH/3RJTZur2jGdkOrrP+HL6tVCrnWPteWWKEYTlIArx86+q9pOqtdTiHBxl+mWF0kqoGTudRcRNwDEGmel4Nur1r1DT0EGN3GMdlbccNKMDhy7I23wupHw0Bo7FAWcOU5HncBJgUCnV19wckhw0LIC/duiAXp0SYJVUa4qgvszl3jozzXSp1J9I3Pp+3sWgU7uOJiK+CL7XqA8ViBbXWDbi9TasD8nAsrMLHSvnOxQwS20RPFwpd5fMW74qapB3gMwF8tUlGh21kh0kXOz5QWIP1KqyJio/ZItUZKMERyOKoQk+IXXS1nq0gZuyJDmxtKXyiIvicpl+8hQJpNa0FbDjCTOO8x6zbvaAwKBnfWQETJElYh1+Wnhyy8x61FwSr1qlFAgRnh8QcC3u/5ff50YBBLSo6MJjENWpK1BTE4lh0nnf1mp8LoGAUiSy5SjWzgxdzNuCt5vUxFLw8UbO49pqngGlqeyBGXU7irMN0nKFaLoKjj5c4UctnqUK+PdO8OSy38qqUvG/hhoxH1ZxGZ0Pf36wZOdbFicqCGdl+5i6CY4dhGdLCcZryw5TZECOVMpLYTVMmrVBZMgQf33ddX3515oIErfsHbv3W8d3dbQ5TRGiuFpIQMtleJ8OLgq9Y7zaceWFFJq9h+HwzcILXTNJH1GK1iNdHIhsp73j1VO8U7P7Er+cfqGXID7ZLMV+ga6nAvyVlxkWvTBrkE9Thi0mIkUjZlhEVdoMfGhaTDy0hvedXw4g9ba57RD8XL51x1ejwYUPRasstphctfvRLgSvvP4/biBUZcNNVE6jAPMMwwZK9WCVZmzhWEkio5DSdzSty8iG+cjXKpXZs70bkfXIlB/K0lMtrlV2pvEPl783mj8k2qTWL52FUdKChMRxLRS1bGeIcXm7rg2+13sloZk23bKB6JpeF1/vSMhYV1sWHONcmTrl+TNCrLLhEpCH1ijX3szPKVXCqC6KDZcdgxxnqQhzqXQSaJ/MC0tvOgoSzLVmN8FokVGBQMCFnlifY1hF0+8AnK2S1RSKJBBop7kBv0O433O89+DPTO+WjcwDs207927OURydQLl7CVAgBOavRUJQoQO6FpvMgBHf6PVrIfum6CKnj/5RZUNv5jaQPNTY/vlUVuGWgpFcguJ1C2OFzfAdUiOzQIInNwZUELQrFVww47lOtsSRQxTxOCMTCoOd+I9hJCSscEYD3rbEnCL8LE3WSTroM3ezjMHCIkUYbF5+fRmP8NUA9G7hCmMuBmTdnhzHJZ32XEV7idj+5pGxnUbIArClZBp3/FsHB3SygQJiqgkaPH+dkpodjqr/38MNdWl8oi2x6cReI4Dja+2HVkgoGxcbq617uDHC6qJJFUX8slLkCSfRsaEX+5khj0ZohZSTDWw5IIFB/9loW98n3w/MTHbD//c6/Y5aOEMmm2vTch+DOZmMjj2Q0VwZhJ2AM7dJ1DQYfbjsbDAsTudMU6Mu/SUxLsVQizPc7nXuVxQzYY6FElHT0RNL8ZTmwse5Rqwrk/D8X/DJ+69/H93FvWgoBqG3b/5jlESCsxsLjAafII4FY95TPondHg9turcnNoEvQH4qmxeM0pZ476+eFZxiF2oWki91VTuY4RE7Ak4DYOBk+fBJ6gKaIcpt8G/Vjndczm2Og/WIKXVp4kFVEVDt5F0OdOykIQTKw2
\ No newline at end of file
diff --git a/drpy_js/天天影视.js b/drpy_js/天天影视.js
deleted file mode 100644
index b29e6cd..0000000
--- a/drpy_js/天天影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/6VTQWsTQRS++yuGCkkbkk0b9LJBpIIHQfGgOQ+TnZfd0dmd7cxsmlgCnrxUpT9APIhQPRY8SMV/Y5v+DOftzppNSlFwCGT3e99773vfm50yTXQhgdwjR7eIO8uzHxcfj0PSvvh5dnX6pt0tUSusBAQ/f8VfM5QoY10ksTY3Yb+fBnqaDoJIpT5eaOnCfWtj3p/MI8mM6fkzmecsBvcQJDaVnm+A6SgZ1VnVa7/T6fX+IY2NUeaggg4KEb18VuIh2a2wiZAWdEXba0KuW7v5Tivd6xiHSUiOFn5wYBy0Cb1xeNojA7q3H0Nm2y75ydMHjx4/pKN9X2VRm5mCKpxpd3d3vazSFpozbdDlIFEpTdWYSmEskWLIWq3nMLP4n2iYDINOfzvo3N9pGhAxCxRmkSw4rITnks3rulYXUKGSvZqHZOuFCUWWFxaX7zl73WphJd4ljuFKLbaqNK6K0rhVocv3X67enaDkqeJUq0MS5CzLQA4RQPn0UPgJyjuED5xZ1lNaxCJjjpiLiFo33fqMXv+v76+X56e+wf/UWwkyxbgK1S3O35YtVmusb3syWCPiEWmMYtBAqRjfaN4gcjARMjfUuA8js+560FRkbg43BdMx/IkmgnPI6Mxca+zzsGRdAls0GJaNTdkRV25UoSOgDiOswUEDTLMGkhEM4WD7tuA7rRZbL1mKdxljxefXRJV+/pVQfUnre20Gae5wMVtdWv+dXJ58WH771Ng9Lj65U3t1ww5uvgAbvi1+A2Wjf5b8BAAA
\ No newline at end of file
diff --git a/drpy_js/天龙影院.js b/drpy_js/天龙影院.js
deleted file mode 100644
index d0772d2..0000000
--- a/drpy_js/天龙影院.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/31UX2/TVhR/z6ewNMlJuvlf2q1ZsgoxaQ8gBg+sT9MUbuzrxmDHrn2NGrJIRUKFbECzrdtAoIlVbO00tqYS0yBJy5ep4+RbcO71depSUT9Y95zzO79z7rnnnJvIF/zQxsKS0M4J8KGQNFy/IuSj/ma0uXf0uqeUFtRFVVPiFy+OXq3H3Xv5jxiSWMTGFPj8r+nh4+hgf/p4m5vi/WH02/fUdrA/2dng2oYbENA1CPGCiqI4crnkIFfWXScDuBgAJJUxMrAPinZ+OcC+dH4FN0ke7F9e+fzCpS9qy+fzHR5w9Ev87DZYQmJK5VmCDnZDCPmxqqppBAcv+zYAFQ4KE+mSFRDFbJmWTbAvN4hjc3uiqSWwdtu0ZR0RfMHodCQmIR+j9FxvpSfdRkEAQiLZmAAHFSWz5aEVLHFDCyNQ80gGJsiyk+y4KgC73uAJX2WCMjcnzb4ZWzbjxAnV6eNoiWo1tPQbiX9FULMXm8GYjqVdayKHvmu89R88nxh1d6ZPNsR4OJp0B2L03e549DePlMCT0miLolYWS6q4UD5ZOQObFd5b9NMWQUpKyLzSF2S28glbOWsrqVlbSc3aFk74QQIdZurwW3k2atU85AdwK+KHOHFkCp48bUnoSN1oypo2X1r8RF5r3VL0QFPOWcYSv4+NbrUqwrXrQSV3E6bmhu4adGwuXr1yWWZkBR+vhjggBavphaQoO4jojYJCwTQFqIU8d26pAL/iZ0rxa+2bYjVhgiSAiBHKcK7mLFMoKM58WP7W8RYUmVBSiioWoZKMnc6rcH2NvqbArwYndhtG18l1BGwH+Ay8xvF0/OVZNT5M3a/x6tmWY8EMfcqb1A1Zx5gIyBPV+OHu5EEPqjjHC0W3xGAHFLINUyVZBDvVxrwofoXXSNVyVkQx8PVq4KFmBa8W1CK3IFFs+NhMSQb3GUk7pyhR70G8068mW2X26un+keswggYnka2m6UqSjerYpuwlzg6swPPkMO7enRFAKtTds3RRTNNiuKNXw8mft8ebm5M3/Wr0+uXR8KAaPe1H9wfV8Wgr+uFRNdobwWnGZOBAp1TvBJfS6KfSkrTiGQmjsyHvNajZy8b/rh8Nj6ulu00C25NmmSwayWoS351F8rKugzeT//fGP/fj4Z3jcqM6Xc22JcOJPWoW++zudPtRFlsjwAZ4E+JKknUqvfGP/4y3DpMYwnS9Czsmuvfr5PfdGQltHhpRhtVv4UCiMqX5wDJojRhL4vhOdApMw9ddo5WJmuCnPx2OH/5xEp8sguMeBCxDRc/vxL2NU9iaBzBrja7qdNewWeg9jV9u81nIbEHoYxip3Fsma0hzbgcAAA==
\ No newline at end of file
diff --git a/drpy_js/央视大全[优].js b/drpy_js/央视大全[优].js
deleted file mode 100644
index 6854f09..0000000
--- a/drpy_js/央视大全[优].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTon5aSu6KeG5aSn5YWoW+S8mF0nLAogICAgaG9zdDonaHR0cHM6Ly9hcGkuY250di5jbicsCiAgICBob21lVXJsOiAnL2xhbm11L2NvbHVtblNlYXJjaD8mZmw9JmZjPSZjaWQ9JnA9MSZuPTUwMCZzZXJ2aWNlSWQ9dHZjY3R2JnQ9anNvbicsCiAgICB1cmw6Jy9saXN0L2dldFZpZGVvQWxidW1MaXN0P2Z5ZmlsdGVyJmFyZWE9JmxldHRlcj0mbj0yNCZzZXJ2aWNlSWQ9dHZjY3R2JnQ9anNvbicsCiAgICBzZWFyY2hVcmw6JycsCiAgICBzZWFyY2hhYmxlOjAsCiAgICBxdWlja1NlYXJjaDowLAogICAgY2xhc3NfbmFtZTogJ+agj+ebruWkp+WFqCbnibnliKvoioLnm64m57qq5b2V54mHJueUteinhuWJpybliqjnlLvniYcnLAogICAgY2xhc3NfdXJsOiAn5qCP55uu5aSn5YWoJueJueWIq+iKguebribnuqrlvZXniYcm55S16KeG5YmnJuWKqOeUu+eJhycsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyX3VybDogJ2NoYW5uZWw9e3tmbC5jaGFubmVsfX0mc2M9e3tmbC5zY319JnllYXI9e3tmbC55ZWFyfX0nLAogICAgZmlsdGVyOiB7CgkJIue6quW9leeJhyI6WwogICAgICAgICAgICB7ImtleSI6ImNoYW5uZWwiLCJuYW1lIjoi6aKR6YGTIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiQ0NUVi0x57u85ZCIIiwidiI6IkNDVFYtMee7vOWQiCxDQ1RWLTHpq5jmuIUsQ0NUVi0x57u85ZCI6auY5riFIn0seyJuIjoiQ0NUVi0y6LSi57uPIiwidiI6IkNDVFYtMui0oue7jyxDQ1RWLTLpq5jmuIUsQ0NUVi0y6LSi57uP6auY5riFIn0seyJuIjoiQ0NUVi0z57u86Im6IiwidiI6IkNDVFYtM+e7vOiJuixDQ1RWLTPpq5jmuIUsQ0NUVi0z57u86Im66auY5riFIn0seyJuIjoiQ0NUVi005Lit5paH5Zu96ZmFIiwidiI6IkNDVFYtNOS4reaWh+WbvemZhSxDQ1RWLTTpq5jmuIUsQ0NUVi005Lit5paH5Zu96ZmFKOS6minpq5jmuIUifSx7Im4iOiJDQ1RWLTXkvZPogrIiLCJ2IjoiQ0NUVi015L2T6IKyLENDVFYtNemrmOa4hSxDQ1RWLTXkvZPogrLpq5jmuIUifSx7Im4iOiJDQ1RWLTbnlLXlvbEiLCJ2IjoiQ0NUVi0255S15b2xLENDVFYtNumrmOa4hSxDQ1RWLTbnlLXlvbHpq5jmuIUifSx7Im4iOiJDQ1RWLTflm73pmLLlhpvkuosiLCJ2IjoiQ0NUVi035Zu96Ziy5Yab5LqLLENDVFYtN+mrmOa4hSxDQ1RWLTflm73pmLLlhpvkuovpq5jmuIUifSx7Im4iOiJDQ1RWLTjnlLXop4bliaciLCJ2IjoiQ0NUVi0455S16KeG5YmnLENDVFYtOOmrmOa4hSxDQ1RWLTjnlLXop4bliafpq5jmuIUifSx7Im4iOiJDQ1RWLTnnuqrlvZUiLCJ2IjoiQ0NUVi0557qq5b2VLENDVFYtOemrmOa4hSxDQ1RWLTnnuqrlvZXpq5jmuIUifSx7Im4iOiJDQ1RWLTEw56eR5pWZIiwidiI6IkNDVFYtMTDnp5HmlZksQ0NUVi0xMOmrmOa4hSxDQ1RWLTEw56eR5pWZ6auY5riFIn0seyJuIjoiQ0NUVi0xMeaIj+absiIsInYiOiJDQ1RWLTEx5oiP5puyLENDVFYtMTHpq5jmuIUsQ0NUVi0xMeaIj+absumrmOa4hSJ9LHsibiI6IkNDVFYtMTLnpL7kvJrkuI7ms5UiLCJ2IjoiQ0NUVi0xMuekvuS8muS4juazlSxDQ1RWLTEy6auY5riFLENDVFYtMTLnpL7kvJrkuI7ms5Xpq5jmuIUifSx7Im4iOiJDQ1RWLTEz5paw6Ze7IiwidiI6IkNDVFYtMTPmlrDpl7ssQ0NUVi0xM+mrmOa4hSxDQ1RWLTEz5paw6Ze76auY5riFIn0seyJuIjoiQ0NUVi0xNOWwkeWEvyIsInYiOiJDQ1RWLTE05bCR5YS/LENDVFYtMTTpq5jmuIUsQ0NUVi0xNOWwkeWEv+mrmOa4hSJ9LHsibiI6IkNDVFYtMTXpn7PkuZAiLCJ2IjoiQ0NUVi0xNemfs+S5kCxDQ1RWLTE16auY5riFLENDVFYtMTXpn7PkuZDpq5jmuIUifSx7Im4iOiJDQ1RWLTE35Yac5Lia5Yac5p2RIiwidiI6IkNDVFYtMTflhpzkuJrlhpzmnZEs6auY5riFLOmrmOa4hSJ9XX0sCiAgICAgICAgICAgIHsia2V5Ijoic2MiLCJuYW1lIjoi57G75Z6LIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi5Lq65paH5Y6G5Y+yIiwidiI6IuS6uuaWh+WOhuWPsiJ9LHsibiI6IuS6uueJqSIsInYiOiLkurrniakifSx7Im4iOiLlhpvkuosiLCJ2Ijoi5Yab5LqLIn0seyJuIjoi5o6i57SiIiwidiI6IuaOoue0oiJ9LHsibiI6IuekvuS8miIsInYiOiLnpL7kvJoifSx7Im4iOiLml7bmlL8iLCJ2Ijoi5pe25pS/In0seyJuIjoi57uP5rWOIiwidiI6Iue7j+a1jiJ9LHsibiI6IuenkeaKgCIsInYiOiLnp5HmioAifV19LAogICAgICAgICAgICB7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiMjAyNCIsInYiOiIyMDI0In0seyJuIjoiMjAyMyIsInYiOiIyMDIzIn0seyJuIjoiMjAyMiIsInYiOiIyMDIyIn0seyJuIjoiMjAyMSIsInYiOiIyMDIxIn0seyJuIjoiMjAyMCIsInYiOiIyMDIwIn0seyJuIjoiMjAxOSIsInYiOiIyMDE5In0seyJuIjoiMjAxOCIsInYiOiIyMDE4In0seyJuIjoiMjAxNyIsInYiOiIyMDE3In0seyJuIjoiMjAxNiIsInYiOiIyMDE2In0seyJuIjoiMjAxNSIsInYiOiIyMDE1In0seyJuIjoiMjAxNCIsInYiOiIyMDE0In0seyJuIjoiMjAxMyIsInYiOiIyMDEzIn0seyJuIjoiMjAxMiIsInYiOiIyMDEyIn0seyJuIjoiMjAxMSIsInYiOiIyMDExIn0seyJuIjoiMjAxMCIsInYiOiIyMDEwIn0seyJuIjoiMjAwOSIsInYiOiIyMDA5In0seyJuIjoiMjAwOCIsInYiOiIyMDA4In1dfSwKICAgICAgICBdLAoJCSLnibnliKvoioLnm64iOlsKICAgICAgICAgICAgeyJrZXkiOiJjaGFubmVsIiwibmFtZSI6IumikemBkyIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IkNDVFYtMee7vOWQiCIsInYiOiJDQ1RWLTHnu7zlkIgsQ0NUVi0x6auY5riFLENDVFYtMee7vOWQiOmrmOa4hSJ9LHsibiI6IkNDVFYtMui0oue7jyIsInYiOiJDQ1RWLTLotKLnu48sQ0NUVi0y6auY5riFLENDVFYtMui0oue7j+mrmOa4hSJ9LHsibiI6IkNDVFYtM+e7vOiJuiIsInYiOiJDQ1RWLTPnu7zoibosQ0NUVi0z6auY5riFLENDVFYtM+e7vOiJuumrmOa4hSJ9LHsibiI6IkNDVFYtNOS4reaWh+WbvemZhSIsInYiOiJDQ1RWLTTkuK3mloflm73pmYUsQ0NUVi006auY5riFLENDVFYtNOS4reaWh+WbvemZhSjkupop6auY5riFIn0seyJuIjoiQ0NUVi015L2T6IKyIiwidiI6IkNDVFYtNeS9k+iCsixDQ1RWLTXpq5jmuIUsQ0NUVi015L2T6IKy6auY5riFIn0seyJuIjoiQ0NUVi0255S15b2xIiwidiI6IkNDVFYtNueUteW9sSxDQ1RWLTbpq5jmuIUsQ0NUVi0255S15b2x6auY5riFIn0seyJuIjoiQ0NUVi035Zu96Ziy5Yab5LqLIiwidiI6IkNDVFYtN+WbvemYsuWGm+S6iyxDQ1RWLTfpq5jmuIUsQ0NUVi035Zu96Ziy5Yab5LqL6auY5riFIn0seyJuIjoiQ0NUVi0455S16KeG5YmnIiwidiI6IkNDVFYtOOeUteinhuWJpyxDQ1RWLTjpq5jmuIUsQ0NUVi0455S16KeG5Ymn6auY5riFIn0seyJuIjoiQ0NUVi0557qq5b2VIiwidiI6IkNDVFYtOee6quW9lSxDQ1RWLTnpq5jmuIUsQ0NUVi0557qq5b2V6auY5riFIn0seyJuIjoiQ0NUVi0xMOenkeaVmSIsInYiOiJDQ1RWLTEw56eR5pWZLENDVFYtMTDpq5jmuIUsQ0NUVi0xMOenkeaVmemrmOa4hSJ9LHsibiI6IkNDVFYtMTHmiI/mm7IiLCJ2IjoiQ0NUVi0xMeaIj+absixDQ1RWLTEx6auY5riFLENDVFYtMTHmiI/mm7Lpq5jmuIUifSx7Im4iOiJDQ1RWLTEy56S+5Lya5LiO5rOVIiwidiI6IkNDVFYtMTLnpL7kvJrkuI7ms5UsQ0NUVi0xMumrmOa4hSxDQ1RWLTEy56S+5Lya5LiO5rOV6auY5riFIn0seyJuIjoiQ0NUVi0xM+aWsOmXuyIsInYiOiJDQ1RWLTEz5paw6Ze7LENDVFYtMTPpq5jmuIUsQ0NUVi0xM+aWsOmXu+mrmOa4hSJ9LHsibiI6IkNDVFYtMTTlsJHlhL8iLCJ2IjoiQ0NUVi0xNOWwkeWEvyxDQ1RWLTE06auY5riFLENDVFYtMTTlsJHlhL/pq5jmuIUifSx7Im4iOiJDQ1RWLTE16Z+z5LmQIiwidiI6IkNDVFYtMTXpn7PkuZAsQ0NUVi0xNemrmOa4hSxDQ1RWLTE16Z+z5LmQ6auY5riFIn0seyJuIjoiQ0NUVi0xN+WGnOS4muWGnOadkSIsInYiOiJDQ1RWLTE35Yac5Lia5Yac5p2RLOmrmOa4hSzpq5jmuIUifV19LAogICAgICAgICAgICB7ImtleSI6InNjIiwibmFtZSI6Iuexu+WeiyIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuaWsOmXuyIsInYiOiLmlrDpl7sifSx7Im4iOiLnu4/mtY4iLCJ2Ijoi57uP5rWOIn0seyJuIjoi57u86Im6IiwidiI6Iue7vOiJuiJ9LHsibiI6IuS9k+iCsiIsInYiOiLkvZPogrIifSx7Im4iOiLlhpvkuosiLCJ2Ijoi5Yab5LqLIn0seyJuIjoi5b2x6KeGIiwidiI6IuW9seinhiJ9LHsibiI6IuenkeaVmSIsInYiOiLnp5HmlZkifSx7Im4iOiLmiI/mm7IiLCJ2Ijoi5oiP5puyIn0seyJuIjoi6Z2S5bCRIiwidiI6IumdkuWwkSJ9LHsibiI6Iumfs+S5kCIsInYiOiLpn7PkuZAifSx7Im4iOiLnpL7kvJoiLCJ2Ijoi56S+5LyaIn0seyJuIjoi5YWs55uKIiwidiI6IuWFrOebiiJ9LHsibiI6IuWFtuS7liIsInYiOiLlhbbku5YifV19LAogICAgICAgIF0sCiAgICAgICAgIueUteinhuWJpyI6WwogICAgICAgICAgICB7ImtleSI6InNjIiwibmFtZSI6Iuexu+WeiyIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuiwjeaImCIsInYiOiLosI3miJgifSx7Im4iOiLmgqznlpEiLCJ2Ijoi5oKs55aRIn0seyJuIjoi5YiR5L6mIiwidiI6IuWIkeS+piJ9LHsibiI6IuWOhuWPsiIsInYiOiLljoblj7IifSx7Im4iOiLlj6Too4UiLCJ2Ijoi5Y+k6KOFIn0seyJuIjoi5q2m5L6gIiwidiI6IuatpuS+oCJ9LHsibiI6IuWGm+aXhSIsInYiOiLlhpvml4UifSx7Im4iOiLmiJjkuokiLCJ2Ijoi5oiY5LqJIn0seyJuIjoi5Zac5YmnIiwidiI6IuWWnOWJpyJ9LHsibiI6IumdkuaYpSIsInYiOiLpnZLmmKUifSx7Im4iOiLoqIDmg4UiLCJ2Ijoi6KiA5oOFIn0seyJuIjoi5YG25YOPIiwidiI6IuWBtuWDjyJ9LHsibiI6IuWutuW6rSIsInYiOiLlrrbluq0ifSx7Im4iOiLlubTku6MiLCJ2Ijoi5bm05LujIn0seyJuIjoi6Z2p5ZG9IiwidiI6IumdqeWRvSJ9LHsibiI6IuWGnOadkSIsInYiOiLlhpzmnZEifSx7Im4iOiLpg73luIIiLCJ2Ijoi6YO95biCIn0seyJuIjoi5YW25LuWIiwidiI6IuWFtuS7liJ9XX0sCiAgICAgICAgICAgIHsia2V5IjoieWVhciIsIm5hbWUiOiLlubTku70iLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiIyMDI0IiwidiI6IjIwMjQifSx7Im4iOiIyMDIzIiwidiI6IjIwMjMifSx7Im4iOiIyMDIyIiwidiI6IjIwMjIifSx7Im4iOiIyMDIxIiwidiI6IjIwMjEifSx7Im4iOiIyMDIwIiwidiI6IjIwMjAifSx7Im4iOiIyMDE5IiwidiI6IjIwMTkifSx7Im4iOiIyMDE4IiwidiI6IjIwMTgifSx7Im4iOiIyMDE3IiwidiI6IjIwMTcifSx7Im4iOiIyMDE2IiwidiI6IjIwMTYifSx7Im4iOiIyMDE1IiwidiI6IjIwMTUifSx7Im4iOiIyMDE0IiwidiI6IjIwMTQifSx7Im4iOiIyMDEzIiwidiI6IjIwMTMifSx7Im4iOiIyMDEyIiwidiI6IjIwMTIifSx7Im4iOiIyMDExIiwidiI6IjIwMTEifSx7Im4iOiIyMDEwIiwidiI6IjIwMTAifSx7Im4iOiIyMDA5IiwidiI6IjIwMDkifSx7Im4iOiIyMDA4IiwidiI6IjIwMDgifSx7Im4iOiIyMDA3IiwidiI6IjIwMDcifSx7Im4iOiIyMDA2IiwidiI6IjIwMDYifSx7Im4iOiIyMDA1IiwidiI6IjIwMDUifSx7Im4iOiIyMDA0IiwidiI6IjIwMDQifSx7Im4iOiIyMDAzIiwidiI6IjIwMDMifSx7Im4iOiIyMDAyIiwidiI6IjIwMDIifSx7Im4iOiIyMDAxIiwidiI6IjIwMDEifSx7Im4iOiIyMDAwIiwidiI6IjIwMDAifSx7Im4iOiIxOTk5IiwidiI6IjE5OTkifSx7Im4iOiIxOTk4IiwidiI6IjE5OTgifSx7Im4iOiIxOTk3IiwidiI6IjE5OTcifV19LAogICAgICAgIF0sCiAgICB9LAogICAgaGVhZGVyczp7CiAgICAgICAgJ1VzZXItQWdlbnQnOidQQ19VQScKICAgIH0sCiAgICB0aW1lb3V0OjEwMDAwLAogICAgcGxheV9wYXJzZTp0cnVlLAogICAgCiAgICAvL+a1t+mYlAogICAgLyoKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7IAogICBpbnB1dD1KU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vdmRuLmFwcHMuY250di5jbi9hcGkvZ2V0SHR0cFZpZGVvSW5mby5kbz9waWQ9JytpbnB1dCkpLmhsc191cmw7CiAgICBpZCA9IGlucHV0LnNwbGl0KCcvJylbOV07CiAgaW5wdXQgPSAnaHR0cHM6Ly9obHMuY250di5teWFsaWNkbi5jb20vL2FzcC9obHMvMjAwMC8wMzAzMDAwYS8zL2RlZmF1bHQvJyArIGlkICsgJy8yMDAwLm0zdTgnOwogIH0pLAogICovCi8v5b2x6KeGCmxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CmlucHV0PUpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly92ZG4uYXBwcy5jbnR2LmNuL2FwaS9nZXRIdHRwVmlkZW9JbmZvLmRvP3BpZD0nK2lucHV0KSkuaGxzX3VybC5yZXBsYWNlQWxsKCdtYWluJywnMjAwMCcpCi5yZXBsYWNlQWxsKCdjbnR2Lmx4ZG5zJywnY250di5teWFsaWNkbicpLnJlcGxhY2VBbGwoJ24uY24nLCduLmNvbScpLnJlcGxhY2VBbGwoJ215aHdjZG4nLCdteWFsaWNkbicpLnJlcGxhY2VBbGwoJ2tjZG52aXAnLCdteWFsaWNkbicpLnJlcGxhY2VBbGwoJ25ld2NudHYucWNsb3VkY2RuJywnY250di5teWFsaWNkbicpCjsKfSksCgogICAgbGltaXQ6NiwKICAgIGRvdWJsZTpmYWxzZSwKCiAgICDmjqjojZA6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgdmFyIGQgPSBbXTsKICAgICAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpLnJlc3BvbnNlLmRvY3M7CgogICAgICAgIGxpc3QuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgIC8vIOS4gOe6p+agh+mimAogICAgICAgICAgICBsZXQgdGl0bGUxID0gaXQuY29sdW1uX25hbWU7CiAgICAgICAgICAgIC8vIOS4gOe6p+aPj+i/sAogICAgICAgICAgICBsZXQgZGVzYzEgPSBpdC5jaGFubmVsX25hbWU7CiAgICAgICAgICAgIC8vIOS4gOe6p+WbvueJh1VSTAogICAgICAgICAgICBsZXQgcGljVXJsMSA9IGl0LmNvbHVtbl9sb2dvOwogICAgICAgICAgICAvLyDkuIDnuqdVUkzvvIhpZCDlnLDljLog57G75Z6LIOagh+mimCDmvJTlkZgg5bm05Lu9IOmikemBkyDnroDku4sg5Zu+54mHIOabtOaWsOiHs++8iQogICAgICAgICAgICBsZXQgdXJsMSA9IGl0Lmxhc3RWSURFLnZpZGVvU2hhcmVkQ29kZSArICd8JyArICcnICsgJ3wnICsgaXQuY29sdW1uX2ZpcnN0Y2xhc3MgKyAnfCcgKyBpdC5jb2x1bW5fbmFtZSArICd8JyArICcnICsgJ3wnICsgaXQuY29sdW1uX3BsYXlkYXRlICsgJ3wnICsgaXQuY2hhbm5lbF9uYW1lICsgJ3wnICsgaXQuY29sdW1uX2JyaWVmICsgJ3wnICsgaXQuY29sdW1uX2xvZ28gKyAnfCcgKyAnJyArICd8JyArIGl0Lmxhc3RWSURFLnZpZGVvVGl0bGU7CgogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgZGVzYyA6IGRlc2MxLAogICAgICAgICAgICAgICAgdGl0bGUgOiB0aXRsZTEsCiAgICAgICAgICAgICAgICBwaWNfdXJsIDogcGljVXJsMSwKICAgICAgICAgICAgICAgIHVybCA6IHVybDEKICAgICAgICAgICAgfSkKICAgICAgICB9KQogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAoKICAgIAogICAg5LiA57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHZhciBkID0gW107CiAgICAgICAgaWYoTVlfQ0FURT09PSfmoI/nm67lpKflhagnKSB7CiAgICAgICAgICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KEhPU1QrJy9sYW5tdS9jb2x1bW5TZWFyY2g/JmZsPSZmYz0mY2lkPSZwPScrTVlfUEFHRSsnJm49NTAwJnNlcnZpY2VJZD10dmNjdHYmdD1qc29uJykpLnJlc3BvbnNlLmRvY3M7CiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgICAgICAvLyDkuIDnuqfmoIfpopgKICAgICAgICAgICAgICAgIGxldCB0aXRsZTEgPSBpdC5jb2x1bW5fbmFtZTsKICAgICAgICAgICAgICAgIC8vIOS4gOe6p+aPj+i/sAogICAgICAgICAgICAgICAgbGV0IGRlc2MxID0gaXQuY2hhbm5lbF9uYW1lOwogICAgICAgICAgICAgICAgLy8g5LiA57qn5Zu+54mHVVJMCiAgICAgICAgICAgICAgICBsZXQgcGljVXJsMSA9IGl0LmNvbHVtbl9sb2dvOwogICAgICAgICAgICAgICAgLy8g5LiA57qnVVJM77yIaWQg5Zyw5Yy6IOexu+WeiyDmoIfpopgg5ryU5ZGYIOW5tOS7vSDpopHpgZMg566A5LuLIOWbvueJhyDmm7TmlrDoh7PvvIkKICAgICAgICAgICAgICAgIGxldCB1cmwxID0gaXQubGFzdFZJREUudmlkZW9TaGFyZWRDb2RlICsgJ3wnICsgJycgKyAnfCcgKyBpdC5jb2x1bW5fZmlyc3RjbGFzcyArICd8JyArIGl0LmNvbHVtbl9uYW1lICsgJ3wnICsgJycgKyAnfCcgKyBpdC5jb2x1bW5fcGxheWRhdGUgKyAnfCcgKyBpdC5jaGFubmVsX25hbWUgKyAnfCcgKyBpdC5jb2x1bW5fYnJpZWYgKyAnfCcgKyBpdC5jb2x1bW5fbG9nbyArICd8JyArICcnICsgJ3wnICsgaXQubGFzdFZJREUudmlkZW9UaXRsZTsKICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgZGVzYyA6IGRlc2MxLAogICAgICAgICAgICAgICAgICAgIHRpdGxlIDogdGl0bGUxLAogICAgICAgICAgICAgICAgICAgIHBpY191cmwgOiBwaWNVcmwxLAogICAgICAgICAgICAgICAgICAgIHVybCA6IHVybDEKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgY2hhbm5lbE1hcCA9IHsKICAgICAgICAgICAgICAgICLnibnliKvoioLnm64iOiAiQ0hBTDE0NjA5NTU5NTM4NzcxNTEiLAogICAgICAgICAgICAgICAgIue6quW9leeJhyI6ICJDSEFMMTQ2MDk1NTkyNDg3MTEzOSIsCiAgICAgICAgICAgICAgICAi55S16KeG5YmnIjogIkNIQUwxNDYwOTU1ODUzNDg1MTE1IiwKICAgICAgICAgICAgICAgICLliqjnlLvniYciOiAiQ0hBTDE0NjA5NTU4OTk0NTAxMjciLAogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCsnJmNoYW5uZWxpZD0nK2NoYW5uZWxNYXBbTVlfQ0FURV0rJyZmYz0nK01ZX0NBVEUrJyZwPScrTVlfUEFHRSkpLmRhdGEubGlzdDsKICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgICAgIC8vIOS4gOe6p+agh+mimAogICAgICAgICAgICAgICAgbGV0IHRpdGxlMSA9IGl0LnRpdGxlOwogICAgICAgICAgICAgICAgLy8g5LiA57qn5o+P6L+wCiAgICAgICAgICAgICAgICBsZXQgZGVzYzEgPSBpdC5zYyArICgodHlwZW9mIGl0LnllYXI9PT0ndW5kZWZpbmVkJyB8fCBpdC55ZWFyPT09JycpPycnOign4oCiJytpdC55ZWFyKSkgKyAoKHR5cGVvZiBpdC5jb3VudD09PSd1bmRlZmluZWQnIHx8IGl0LmNvdW50PT09JycpPycnOign4oCi5YWxJyArIGl0LmNvdW50ICsgJ+mbhicpKTsKICAgICAgICAgICAgICAgIC8vIOS4gOe6p+WbvueJh1VSTAogICAgICAgICAgICAgICAgbGV0IHBpY1VybDEgPSBpdC5pbWFnZTsKICAgICAgICAgICAgICAgIC8vIOS4gOe6p1VSTO+8iGlkIOWcsOWMuiDnsbvlnosg5qCH6aKYIOa8lOWRmCDlubTku70g6aKR6YGTIOeugOS7iyDlm77niYcg6ZuG5pWw77yJCiAgICAgICAgICAgICAgICBsZXQgdXJsMSA9IGl0LmlkICsgJ3wnICsgaXQuYXJlYSArICd8JyArIGl0LnNjICsgJ3wnICsgaXQudGl0bGUgKyAnfCcgKyBpdC5hY3RvcnMgKyAnfCcgKyBpdC55ZWFyICsgJ3wnICsgaXQuY2hhbm5lbCArICd8JyArIGl0LmJyaWVmICsgJ3wnICsgaXQuaW1hZ2UgKyAnfCcgKyBpdC5jb3VudCArICd8JyArICcnICsgJ3wnICsgTVlfQ0FURTsKICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgZGVzYyA6IGRlc2MxLAogICAgICAgICAgICAgICAgICAgIHRpdGxlIDogdGl0bGUxLAogICAgICAgICAgICAgICAgICAgIHBpY191cmwgOiBwaWNVcmwxLAogICAgICAgICAgICAgICAgICAgIHVybCA6IHVybDEKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAogICAgCiAgICDkuoznuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGluZm8gPSBpbnB1dC5zcGxpdCgifCIpOwogICAgICAgIAogICAgICAgIFZPRCA9IHsKICAgICAgICAgICAgdm9kX2lkOiBpbmZvWzBdLAogICAgICAgICAgICB2b2RfbmFtZTogaW5mb1szXSwKICAgICAgICAgICAgdm9kX3BpYzogaW5mb1s4XSwKICAgICAgICAgICAgdHlwZV9uYW1lOiBpbmZvWzJdPT09J3VuZGVmaW5lZCc/Jyc6aW5mb1syXSwKICAgICAgICAgICAgdm9kX3llYXI6IGluZm9bNV09PT0ndW5kZWZpbmVkJz8nJzppbmZvWzVdLAogICAgICAgICAgICB2b2RfYXJlYTogaW5mb1sxXT09PSd1bmRlZmluZWQnPycnOmluZm9bMV0sCiAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBpbmZvWzldPT09Jyc/KCfmm7TmlrDoh7MnK2luZm9bMTBdKTooJ+WFsScraW5mb1s5XSsn6ZuGJyksCiAgICAgICAgICAgIHZvZF9kaXJlY3RvcjogaW5mb1s2XT09PSd1bmRlZmluZWQnPycnOmluZm9bNl0sCiAgICAgICAgICAgIHZvZF9hY3RvcjogaW5mb1s0XT09PSd1bmRlZmluZWQnPycnOmluZm9bNF0sCiAgICAgICAgICAgIHZvZF9jb250ZW50OiBpbmZvWzddPT09J3VuZGVmaW5lZCc/Jyc6aW5mb1s3XSwKICAgICAgICB9OwogICAgICAgIHZhciBtb2RlTWFwID0gewogICAgICAgICAgICAi54m55Yir6IqC55uuIjogIjAiLAogICAgICAgICAgICAi57qq5b2V54mHIjogIjAiLAogICAgICAgICAgICAi55S16KeG5YmnIjogIjAiLAogICAgICAgICAgICAi5Yqo55S754mHIjogIjEiLAogICAgICAgIH07CiAgICAgICAgdmFyIGN0aWQgPSBpbmZvWzBdLnJlcGxhY2UoJ2h0dHBzOi8vYXBpLmNudHYuY24vbGFubXUvJywnJyk7CiAgICAgICAgdmFyIGxpbmsgPSAnaHR0cHM6Ly9hcGkuY250di5jbi9OZXdWaWRlby9nZXRWaWRlb0xpc3RCeUFsYnVtSWROZXc/aWQ9JytjdGlkKycmc2VydmljZUlkPXR2Y2N0diZwPTEmbj0xMDAmbW9kZT0nK21vZGVNYXBbaW5mb1sxMV1dKycmcHViPTEnOwogICAgICAgIHZhciBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGxpbmspKTsKICAgICAgICB2YXIgcGxheVVybHM7CiAgICAgICAgaWYoaHRtbC5lcnJjb2RlPT09JzEwMDEnKXsKICAgICAgICAgICAgdmFyIGd1aWQgPSBpbmZvWzBdLnJlcGxhY2UoJ2h0dHBzOi8vYXBpLmNudHYuY24vbGFubXUvJywnJyk7CiAgICAgICAgICAgIHZhciBsaW5rMSA9ICdodHRwczovL2FwaS5jbnR2LmNuL3ZpZGVvL3ZpZGVvaW5mb0J5R3VpZD9ndWlkPScrZ3VpZCsnJnNlcnZpY2VJZD10dmNjdHYnOwogICAgICAgICAgICBjdGlkID0gSlNPTi5wYXJzZShyZXF1ZXN0KGxpbmsxKSkuY3RpZC5yZXBsYWNlKCdodHRwczovL2FwaS5jbnR2LmNuL2xhbm11LycsJycpOwogICAgICAgICAgICB2YXIgbGluazIgPSAnaHR0cHM6Ly9hcGkuY250di5jbi9OZXdWaWRlby9nZXRWaWRlb0xpc3RCeUNvbHVtbj9pZD0nK2N0aWQrJyZkPSZwPTEmbj0xMDAmc29ydD1kZXNjJm1vZGU9MCZzZXJ2aWNlSWQ9dHZjY3R2JnQ9anNvbic7CiAgICAgICAgICAgIHBsYXlVcmxzID0gSlNPTi5wYXJzZShyZXF1ZXN0KGxpbmsyKSkuZGF0YS5saXN0OwoKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwbGF5VXJscyA9IGh0bWwuZGF0YS5saXN0OwogICAgICAgICAgICAvLyDojrflj5bmm7TlpJrmlbDmja7vvIzmmoLkuI3pnIDopoEKICAgICAgICAgICAgdmFyIGZsYWcgPSAnJzsKICAgICAgICAgICAgaWYocGxheVVybHM9PT0nJyl7CiAgICAgICAgICAgICAgICBmbGFnID0gJ3RydWUnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBwYWdlID0gMTsKICAgICAgICAgICAgd2hpbGUoZmxhZz09PScnKXsKICAgICAgICAgICAgICAgIHBhZ2UgPSBwYWdlKzE7CiAgICAgICAgICAgICAgICB2YXIgYnVybCA9ICdodHRwczovL2FwaS5jbnR2LmNuL05ld1ZpZGVvL2dldFZpZGVvTGlzdEJ5QWxidW1JZE5ldz9pZD0nK2N0aWQrJyZzZXJ2aWNlSWQ9dHZjY3R2JnA9JytwYWdlKycmbj0xMDAmbW9kZT0nK21vZGVNYXBbaW5mb1sxMV1dKycmcHViPTEnOwogICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QoYnVybCkpLmRhdGEubGlzdDsKICAgICAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCE9PTApewogICAgICAgICAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlVcmxzLnB1c2goaXQpOwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICBmbGFnPSd0cnVlJzsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBsZXQgcGxheUZyb20gPSBbXTsKICAgICAgICBsZXQgcGxheUxpc3QgPSBbXTsKICAgICAgICBwbGF5RnJvbS5hcHBlbmQoJ+WkruinhumikScpOwogICAgICAgIHBsYXlVcmxzLmZvckVhY2goaXQgPT4gewogICAgICAgICAgICBwbGF5TGlzdC5hcHBlbmQocGxheVVybHMubWFwKGZ1bmN0aW9uKGl0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaXQudGl0bGUgKyAiJCIgKyBpdC5ndWlkCiAgICAgICAgICAgIH0pLmpvaW4oIiMiKSkKICAgICAgICB9KTsKCiAgICAgICAgLy8g5pyA5ZCO5bCB6KOF5omA5pyJ57q/6LevCiAgICAgICAgbGV0IHZvZF9wbGF5X2Zyb20gPSBwbGF5RnJvbS5qb2luKCckJCQnKTsKICAgICAgICBsZXQgdm9kX3BsYXlfdXJsID0gcGxheUxpc3Quam9pbignJCQkJyk7CiAgICAgICAgVk9EWyd2b2RfcGxheV9mcm9tJ10gPSB2b2RfcGxheV9mcm9tOwogICAgICAgIFZPRFsndm9kX3BsYXlfdXJsJ10gPSB2b2RfcGxheV91cmw7CiAgICB9KSwKCiAgICDmkJzntKI6JycsCn0=
\ No newline at end of file
diff --git a/drpy_js/央视大全[官].js b/drpy_js/央视大全[官].js
deleted file mode 100644
index 08d0318..0000000
--- a/drpy_js/央视大全[官].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/央视少儿[漫].js b/drpy_js/央视少儿[漫].js
deleted file mode 100644
index 3e83639..0000000
--- a/drpy_js/央视少儿[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/夸克分享2[合].js b/drpy_js/夸克分享2[合].js
deleted file mode 100644
index 0291877..0000000
--- a/drpy_js/夸克分享2[合].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/夸克分享[合].js b/drpy_js/夸克分享[合].js
deleted file mode 100644
index 3abc179..0000000
--- a/drpy_js/夸克分享[合].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/奇珍异兽[官].js b/drpy_js/奇珍异兽[官].js
deleted file mode 100644
index e9adcc5..0000000
--- a/drpy_js/奇珍异兽[官].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/奇米动漫[漫].js b/drpy_js/奇米动漫[漫].js
deleted file mode 100644
index c0bea2e..0000000
--- a/drpy_js/奇米动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+Wlh+exs+WKqOa8qycsCiAgICBob3N0OiAnaHR0cDovL3d3dy5xaW1pcWltaS5uZXQnLAogICAgdXJsOiAnL3Nob3cvZnljbGFzc2Z5ZmlsdGVyLmh0bWwnLAogICAgZmlsdGVyYWJsZTogMSwvL+aYr+WQpuWQr+eUqOWIhuexu+etm+mAiSwKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmFyZWF9fXt7ZmwuYnl9fXt7ZmwuY2xhc3N9fXt7ZmwubGV0dGVyfX0vcGFnZS9meXBhZ2V7e2ZsLnllYXJ9fScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJXVzA4VFVSU0YvOHM4WTNxbWN2V04rLzEreC9CUXNHcVZTOUlXWTBOSVZMQlcwVklJVWdoUUpiRUJRaXVneEpRMjhHczZVL292bkhabWRuZFhYM2prNGJ3eDYxdnNQV2N4SjZ4bDVhMW40YmxyUVhueWRGbDU3UTRvVDVUWk9aZlBwMVFwQzY1NXQvR1l1OHhvc1hYaitZMXJic2xkOUJsdVJmdDRrbDg5S2NqR2c3SlNaYW5CcmZ6ZXFhVTZpcE1jbG1aYmNxdkp1Nk4zNVJaTG95bnhUOXAxQnFhWW1tM1IzNi9uUXBmbEZrc2p5ODhqYlQ4SkZsT2pSWkd3OXZzTUZwa2FUWW5FY29sTm1HSnFaUG1UMGRkQ1lERTFPblE4bGs5dXc2Rk56YllZUCt0L3Y1ZGJMSTJtN04xcUVWaGthZlF1NFpOY0pBanZZbW8wNVhpeklsMUxJOHRaVFArQ2Z5TlRvMFVmRXJrZHpNWFU2RVNIVy9wdUhFNWthalFsdEp0TmY0WXBwbVpiN2lLSGQyR3dXQnFMcnVKRWxzWVc2VHZSaWtVRmpTelJ1SlpLZ2NYVVZxWUxKdk42dUx4dVYrbDJhQWNYMnRmMFBXK0hNVTAvU05nYkNvTWNwdVFvZlpHL2p2Tjd3VEpMTnBYVTltOUtGajF4bkxzTmwwOHBTaVZML3NlcDhTdGxGbE5pVTFMbjJzWkYrWlNpNUNnN2JjRHQ4ckxUWGw5bE16ZjNQSzFUT0IvYjh3dGpIRVdCVVNkU0o2Y3FVcFZUZ1ZRd3FqWUFOUVJHNjVIV2MxcUh0STdUV3FTMW5OWWdyZUcwR21rMXA1aVZ5ck5TTVN1Vlo2VmlWaXJQU3NXc1ZKNlZ3S3dFejBwZ1ZvSm5KVEFyd2JNU21KWGdXUW5NU3ZDc0JHWWxlRllDc3hJOEs0RlpDWjZWd0t3RXowcGdWb2JBcjhPYzIrOTM4d3VSak9ybjN5b3ZCTW44UWpUYXM4MHBqa1lpVFVDYWlEUURhU2JTQXFTRlNDdVFWaUp0UU5xSXRBTnBKOUlCcElOSUo1Qk9JbDFBdW9oMEEra20wZ09raDBndmtGNGlmVUQ2aVBRRDZTY3lBR1NBeUNDUVFTSkRRSWFJREFNWkpqSUNaSVRJS0pCUkltTkF4b2lNQXhrbk1nRmtnc2dra0VraVUwQ21pSWhIRGNBS0NyOENNNEhTNTYrSHQ3VDBSc1hucjBmLzVhTlg5cHlaZ01Qdk1lejJpbXc2clY5c00vclM0L2VWL3QyZnIybWhJS08rMlVXdnUvQUcwMVdLMXpNdnF5cGJKS3VxcktxeXFzcXFLcXVxcktxeXFzcXFxc2lxK2xDcTZvdWxSZGxWWlZlVlhWVjJWZGxWWlZlVlhWVjJWZGxWWlZkOWtGMzExZXl6ZWRsVVpWT1ZUVlUyVmRsVVpWT1ZUVlUyVmRsVVpWTjlhRTExNVQvMjJ6RUhyaW9BQUE9PScsCiAgICBzZWFyY2hhYmxlOiAyLC8v5piv5ZCm5ZCv55So5YWo5bGA5pCc57SiLAogICAgaGVhZGVyczogey8v572R56uZ55qE6K+35rGC5aS0LOWujOaVtOaUr+aMgeaJgOacieeahCzluLjluKZ1YeWSjGNvb2tpZXMKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgICB9LAogICAgY2xhc3NfcGFyc2U6ICcjbmF2IGxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oXFx3KykuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICfnlarnu4TkuJPpoph85pyA6L+R5pu05pawJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnKjsqOyo7LnRleHQmJlRleHQ7KicsCiAgICDkuIDnuqc6ICcuaW1nLWxpc3QgbGk7YSYmdGl0bGU7aW1nJiZzcmM7aSYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgICJ0aXRsZSI6ICJoMSYmVGV4dDtkbC5mbi1sZWZ0OmVxKDMpJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5kZXRhaWwtcGljJiZpbWcmJnNyYyIsCiAgICAgICAgImRlc2MiOiAiZGwuZm4tbGVmdDplcSgyKSYmVGV4dDs7Oy5ueXpodXktLWR0JiZUZXh0Oy5mbi1yaWdodDplcSgwKS0tZHQmJlRleHQiLAogICAgICAgICJjb250ZW50IjogIi50anVxaW5nJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIuZG93bi10aXRsZSBoMiIsCiAgICAgICAgImxpc3RzIjogIi52aWRlb19saXN0OmVxKCNpZCkgYSIKICAgIH0sCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0qKiZsaW1pdD01MCcsCiAgICBkZXRhaWxVcmw6ICcvZGV0YWlsL2Z5aWQuaHRtbCcsIC8v6Z2e5b+F5aGrLOS6jOe6p+ivpuaDheaLvOaOpemTvuaOpQogICAg5pCc57SiOiAnanNvbjpsaXN0O25hbWU7cGljOztpZCcsCn0=
\ No newline at end of file
diff --git a/drpy_js/奈飞中文[自动].js b/drpy_js/奈飞中文[自动].js
deleted file mode 100644
index c91a4a2..0000000
--- a/drpy_js/奈飞中文[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfoh6rliqgnLAogICAg5qih5p2/5L+u5pS5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIG11YmFuLuiHquWKqC7kuoznuqcudGFicyA9ICcubW9kdWxlLXRhYi1pdGVtLnRhYi1pdGVtJzsKICAgICAgICBtdWJhbi7oh6rliqgu5LqM57qnLmltZyA9ICcubGF6eWxvYWQmJnNyYyc7CiAgICAgICAgbXViYW4u6Ieq5YqoLuS6jOe6py50YWJfdGV4dCA9ICdkaXYtLXNtYWxsJiZUZXh0JzsKICAgIH0pLAogICAgdGl0bGU6ICflpYjpo57kuK3mlodb6Ieq5YqoXScsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cubmFpZmVpLmlvJywKICAgIHVybDogJy92b2RzaG93L2lkL2Z5Y2xhc3MvcGFnZS9meXBhZ2UuaHRtbCcsCiAgICBjbGFzc19wYXJzZTogJy5uYXYmJnVsJiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL3Jzcy9pbmRleC54bWw/d2Q9KionLAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IGl0ZW1zID0gcGRmYShodG1sLCAncnNzJiZpdGVtJyk7CiAgICAgICAgLy8gbG9nKGl0ZW1zKTsKICAgICAgICBsZXQgZCA9IFtdOwogICAgICAgIGl0ZW1zLmZvckVhY2goaXQgPT4gewogICAgICAgICAgICBpdCA9IGl0LnJlcGxhY2UoL3RpdGxlfGxpbmt8YXV0aG9yfHB1YmRhdGV8ZGVzY3JpcHRpb24vZywgJ3AnKTsKICAgICAgICAgICAgbGV0IHVybCA9IHBkZmgoaXQsICdwOmVxKDEpJiZUZXh0Jyk7CiAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgJ3AmJlRleHQnKSwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgZGVzYzogcGRmaChpdCwgJ3A6ZXEoMykmJlRleHQnKSwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBkZmgoaXQsICdwOmVxKDQpJiZUZXh0JyksCiAgICAgICAgICAgICAgICBwaWNfdXJsOiAiIiwKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgfSksCn0=
\ No newline at end of file
diff --git a/drpy_js/奈飞中文影视.js b/drpy_js/奈飞中文影视.js
deleted file mode 100644
index 84a9b46..0000000
--- a/drpy_js/奈飞中文影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/奶狗影视[慢].js b/drpy_js/奶狗影视[慢].js
deleted file mode 100644
index 9ab2e81..0000000
--- a/drpy_js/奶狗影视[慢].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVx0m7uwstVbsPzuQmO9TORK5evh1xIqc7MSeeWNCFvgEA9Zubtc3uPlHdg1TZUcdPPmc7zbQaODomCXDq7JRqcwwz2zT759luI2oJwQk6SJzpO3KGN8gzgmam442Ft6BrnCj13OnDrCgvZ09SU+7ucWs0mzpESds3Fd1yS95GdRg/+nLFfKjHk8HvASi3wYkCfznkLuR5Sx5e+YymxQC9XDgnBAYWO44UqbVseaNqWLVx38iXWQWoc7ia8P8TV0pisFXXxIbvyfgQ4BqRnpY1fSUJi9DfC/rfX8ZXnaSiqZr
\ No newline at end of file
diff --git a/drpy_js/好趣网[播].js b/drpy_js/好趣网[播].js
deleted file mode 100644
index 05ea666..0000000
--- a/drpy_js/好趣网[播].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/如意影视.js b/drpy_js/如意影视.js
deleted file mode 100644
index d9b55df..0000000
--- a/drpy_js/如意影视.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV6Hb6rw112FEiIrtcuVJQlHC/yEPHavD96xgXon+pACO3WIgwWCSK92Wm84hG0Obddyibn78Rl5yeCicMsUjhLEOas06oSLs6frzNdPeLPONEvQH7zeyRZYaFnJuebzJ6XJI65Ott14ZOYsyp7jFBTr+zmpnrVXiMhf5eeJA5dbgoJRQQxHfajIil6n7MKCeyL5K0O6ErHLeW5OFjwkSU8ge4BmYmRtxc3Py3qjIOGlNwguyjQlhHs8YsRvnKvhrgf2SNNzJsuiwd3oJHDjyb2pnX7cdhHuyHK2O/r2HZhVdqQjaTEwfOn7LM+TTHjf6T90wDHYb/uXJzdOXZa2NP/MuuRECx1JIkjA61qjVtC/BoFHTgLKpkZkHUloHLe2eDAUMTr87SbKqs2OhkxtrjRd3cQRo98j1/HfLxHsb+w2xAtFVoGqsnnZUSo17uKC5InqK8U8ipVlSOTZdl/l+xJiUPyYoxHJJBvZY8PrzafG07iffVi1xuawhnLUZoAsAQuoozBFwnt1GjQ3YRnSkuiVf820345qeEp/IdZIDy+YTAhUZFO6NQ9/O23aKYXu+8RsIwDqVqCLZny4UcOCYaY2MIvET+gBLILsvDtBBuhLPDPgDROz6sQeZK95GUbLoVrSdjf8Dao7LtEK+CmhEJjHdpHbOAutoeJoN4VTSU654kM13vR5i975ZLvwQ3rD6EN7Jok+widUwPK+63wM+Kmz1rI1YUF312X1nT8EJK3CquQEzp8q6O8Q2UcogejugA11N/LfiDcJeY+hgAlNi+Y1qYN2uiH2FqeKHnd01iIv1WhgKrunofamLd397HcYXsrNmdAEt49AgpqrEFiS+xCknfCUurz05nmL4TPyuqgbUUwmtlxkzqcdf/bvWDtJC63YCaja8DdG+JDJg8I1DbT4/voeTGDJTxvkW+iXIp6XWOkJS8DxumSJrqWd1YdNQ8qP1DzhZ24zFkenI3Yni+dxRkKKN6fM5uZXH4c4VzTtGlmhN/Cl/rcct/DHwPtwpn6KP8hW4MGGuQKisRlU4ZRYbYWOZpUXRkYOsZpiJguOnwlZrUx1pU9oeW6N963k/xjNvbbk2Q9eUfXk+Q9/V+5K+Jgjxj2G3hBvP1/J1sP4YoHnQlrN6440CqHd+LFnXS2WXa4J3Kqgrz3RIhq6ZhJg5OPUrWOWqIgDbnLAXG1ZnN1jm4ewfntq98OcXK7P4ChVb37550vwMvmgOHijDJGK1Qi6YQohTI3Pb6Dk/DJgiG4UpkpK+14iHw4/or7lfNEsM/PGkz7P/oP1H/A7nYCI5e+3ileA0hlF5JQgXk/hqffQfqPCFor6RTL2A1YkohUCXB4vLQ+W2pbZJXTU9QBKaOgU4yFAuNYiE8XBAKDOhbFVFudsmcqLBkUDXuyfH9KfJ3KE0EV7WIPEWLH6H/kSJVDtY9sQKzeAhcuMJ9G87CDZ9KaOQ1Q/u8SPtzb68ExzQGqNzt/EUldBDk5AlidO/mmagHNFCsvz5RwpbhoNkU2pQx63T2y3JMbr752F37rAOIdZj9UBoXnre96wSMlV+IJSHOI6lpSxYVkMXtSc/rxBCQqi34G2cc5FdQ14pEq+7Z8aOfKCjCycN5I1zPUwJB3B6Puusi/UXsm9pdccs4YJt9zi9KsYtyCHHshmmTiRPv4gvr2cX5XoS45yOnCU=
\ No newline at end of file
diff --git a/drpy_js/妖狐影视[自动].js b/drpy_js/妖狐影视[自动].js
deleted file mode 100644
index e660035..0000000
--- a/drpy_js/妖狐影视[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogIHRpdGxlOiAi5aaW54uQ5b2x6KeGIiwKICDmqKHmnb86ICLoh6rliqgiLAogIGhvc3Q6ICJodHRwczovL3d3dy5taWRpYW5zaGkuY29tIiwKICB1cmw6ICIvdm9kc2hvdy9meWZpbHRlci5odG1sIiwKICBzZWFyY2hVcmw6ICIvdm9kc2VhcmNoKiovcGFnZS9meXBhZ2UuaHRtbCIsCiAgc2VhcmNoYWJsZTogMiwKICBxdWlja1NlYXJjaDogMCwKICBmaWx0ZXJhYmxlOiAxLAogIGZpbHRlcjogIkg0c0lBQUFBQUFBQUErMWEyMVlUU1JUOWx6dzdpdzZNMXpmdjkvdmRXVDYwa29GR1NNWmNSc0hsV2lna0pxZ0VXRWhrQ0NBakVFUkN3a1dFWU9CblV0M0pYMHdsVlRsVmRab3hjYUV6UHZSajc3MXpxdXJVNmU2eksvM0UxV3pvM2s3RDIrSTY5TnNUMXdOUHArdVF5MXJhSkJNdlhYdGNYcjNESTEvL3FiZUhQQldobDhJa1BGZnFtU3ZEOU1MdGVycUh3eU5KRWt0WnNSZWNlV3kwaGY2Z2d3aEIzMXdobnhTQ1pwKzNwU3ZrVXpSV2RNbnNDUXVOYmp5a2MxUWxxVUd5c1Nra0R6eXRJZDJyU014bkEyYjNpQ1NoSTkxRGs0bWxsSUhhUXJhQnpPamJRaTRtSkYydHVyZXIxWU5Wenhlc2tVRnAyYUZ5WHRVWjkyV3MvTHlRL0U3amhGUUppUXlWUmo4SVNZZnVlMnlnVmRIOFdjT2JhdjdvMHRYWjlQU1p6LytTbGtVWEZmQ2hLWk9aRjBvR0h4cTJERnE1ZVpKL0k4ZHA1L203VzVhd2VtRTVGUFVDMTErcEYxUXVIRzI0MzY0SEFnMGNVNHRCbFhCTTNXbFZ3akcxN05CQURGTkxDZzNFTUxWZVVCU0dxZldDNXNLd3FxU1luaVd2NWxVSng5UmlRWE5obUZvSXRoV1ZNWFdMa1lSaE1OMzBiR0hySFpvdXc5U3FSRkVZQmxFbTV1a2FVUlNHZmNNZXNac0lTUmltVmphU01BeFN0eGtuNFhXVU9vWlZKYVh4SWZQdGpDcmhHQXcwOHFJWXk2R0JHQVo1MlZxMGhqK1IvQkpLRGNBZ2pFOFgzK09xWVJoSStpTWt2b3drRElPcTJSNmcyNHVxaG1GaXA1TG0rQ0RlcVFvR2t0NXQ2eU5hT3NjZ2dmbEJhek81MDlJVVJua0dKTFBrVlU1NkJsU3Y2M29HVEtkS281SHFTTHJmb3pkd0NQWnJkdFJjenlnS0Rva1VaODJOTFRVR2cyQlZXLzFrTEs4b09BUmJ2dklHS3pnRVcvQnlDU3M0QkRFU00yWnlRWTNCSUZqTDVBY2NnME9pcmo1akJZZkVUTFAybVdhVkdLK3pKRGVyeG1BUXhPaU4weXlUNkFjMURLQ3c1cGx0SzU2MllxUHFzZ0VWajZOMzVzdHQrbU4xVUVCQkYxNHJiSTZvSWdiSkJWWE1wSXR6M2FLZzRMcXVnaHJMVTMxMWlIYmQyOUxBSVdranNZSkRVQzdMMDFqQklkaklSSjY4VG1DUlFLVU50NGtZSkJVTlZuQklLazJiZ2tGUzBkald6Q0FwOFdTeFIxVXdTTG1UTjFZTG0zbnBUcTVlMTVQNFJxM3gxK29BblI3ZDMxQUJKTFlKczAweTI0alpScGwxWTlZdHN4cG1OWWwxSDBRc0JTVDJBR1lQeU94K3pPNlgyWDJZM1NlemV6RzdWMlp4cnR4eXJ0dzRWMjQ1VjI2Y0s3ZWNLemZPbFZ2T2xSdm55aTNuU3NPNTB1UmNhVGhYbXB3ckRlZEtrM09sNFZ4cGNxNDBuQ3ROenBXR2MwVUJwV3pUQ1RQeldpcmI2alVxVzREbHNqME1ONFVuR1BUNEd3NERjd1F4UjRBNWlwaWp3QnhEekRGZ2ppUG1PREFuRUhNQ21KT0lPUW5NS2NTY0F1WTBZazREY3dZeFo0QTVpNWl6d0p4RHpEbGd6aVBtUERBWEVITUJtSXVJdVFqTUpjUmNBdVl5WWk0RGN3VXhWNEM1aXBpcndGeER6RFZncmlQbU9qQTNFSE1EbUp1SXVRbk1MY1RjQXVZMlltNERjd2N4ZDREUmZqbUl1RElpM3dKbS94REp4Y1V0QU5mcUxXQW0xa3FKVlVHV0k5N3JiQWdhOUVmVndRcTVuSmtkdG1sYWpXQkF2RUl6dlNRYXNXa0M5MzErVDNsZWQvZTRtZ050dXp4WEVBODErZ0l2NUZMQ0s3YUVmUGVwRTI4TGlYZmtRcXJjMElIQ0YrcndHREtmbUJHa1gyYksvUmN3S09oNlJocVR2ak1samphWWdndnF5bGdyLzA1OStreW1SK1R4akVlS3dJcm1xZEd3SnROQ0V5Zzc4NVpISG05emlNM3V1OW52MnM2a0RqL0xyQk41dGtaNjRxcFFZYjdCODVQRk5aSkxJd25EdnMwaDEvTDhkVGprT2p4L0hlNnREbGRhMkppeXVUZU9DZnNiTmtjemFETVlCbk41RTdGWmNZNUpCcysyQVJ6YnVVdm5VZXh0K3U1OFh5Uk05YW9UWUZEOVh1bDdPTVBhbnEwZTcxakxrZFhoSFVleTFDNlI4U2sxREtDT2c5cUZnM0xjaitOK1hJNzdjZHlQeERqdXgzRS9QODc5ZFBtOExaMkdaSUIyMWFtWHVtTldxaHQxMXd5VG04UGVTWHR6U0RHWTl1SjJNUnRWSlJ5REtFTnBzdy85UWNBeDhiWU5tK3VvbCtXWWVHV3ZGRFlHMEhRWkpqVlZwZmRvdWh3RFNXNmVMRTRnQ2NOZ0xtUEw5djlwR0FaUmhpZk5WZnkvSHNPRXpWczNvL0ZDYnNqMkQ0dkNRQnBYLzZhOU8wb2p3eURpMHZQaXMxY29Gc1Ard3dhNmJGL2pxb0pEVXVkRWV5bmMvSlloMVZlckNnWTU3YWJUYmpydHB0TnVPdTJteERqdHB0TnUvaStIN2JUZDdOQzl1enh3Rnc5RmZ1RGVOMmQrK2NoSmZ1WmVIVWx0SVJTbDM5aEp4dzdvWlYzbGpONm1xM1FvNnNqMEJSclU3VXAybGk0cjJYRTZDTC9YUVhrZHZYVWRuNDlaUGVuaUZHcmlPUVlEOWM5WkF4RTBFTU5BTWpCaExlRFBwQmdtT3NPYW4yd1ZCOGFML2VoY24yTXcwTHNwTW9aTzRUa0dBOVUrWWplVE9mdTNZUXlEdWRUK3RLbU92eUZJbGlaN0ZjMkZZYkprWnNVdW9SanMwZlJXNFF2NndveGpFS1Yva2tUSFVCU0dpWnQ2bWFTUi8rRVlERFRXWjQ0aTU4SXhrZDBsc3AzQTJhMWdVcVA1NHcvcUs0OEMxV2N3U0hvRTFEaEMvNHFMMkhFbHpyRzJ5L0VaanM5d2ZJYmpNeHlmNGZpTW44ZG4rRDBkOEIyS2RMYnQzS3JPcmVyY3FqL1hyUm8wT2tNQjNRaTBHcnM4RldnU2ZZaVZXYlFHcWcwbjdUY2ZHdUxMdGVMYWl1QzZRaFhLZVowN3p3am5HZkd6UGlPZS9nTkhjOUZzQWp3QUFBPT0iLAogIGZpbHRlcl91cmw6ICJ7e2ZsLuexu+Wei319e3tmbC7lnLDljLp9fXt7Zmwu5o6S5bqPfX17e2ZsLuWJp+aDhX19e3tmbC7or63oqIB9fXt7Zmwu5a2X5q+NfX0vcGFnZS9meXBhZ2V7e2ZsLuW5tOS7vX19IiwKICBmaWx0ZXJfZGVmOiB7CiAgICBkaWFueWluZzogewogICAgICDnsbvlnos6ICJkaWFueWluZyIKICAgIH0sCiAgICBkc2o6IHsKICAgICAg57G75Z6LOiAiZHNqIgogICAgfSwKICAgIHpvbmd5aTogewogICAgICDnsbvlnos6ICJ6b25neWkiCiAgICB9LAogICAgZG9uZ21hbjogewogICAgICDnsbvlnos6ICJkb25nbWFuIgogICAgfSwKICAgIHJlbWVuZHVhbmp1OiB7CiAgICAgIOexu+WeizogInJlbWVuZHVhbmp1IgogICAgfSwKICAgIHRpeXVzYWlzaGk6IHsKICAgICAg57G75Z6LOiAidGl5dXNhaXNoaSIKICAgIH0KICB9LAogIGhlYWRlcnM6IHsKICAgICJVc2VyLUFnZW50IjogIk1PQklMRV9VQSIKICB9LAogIHRpbWVvdXQ6IDUwMDAsCiAgY2xhc3NfcGFyc2U6ICIubmF2YmFyLWl0ZW1zJiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykuaHRtbCIsCiAgY2F0ZV9leGNsdWRlOiAi5pu05pawfOeDreamnCIsCiAgcGxheV9wYXJzZTogdHJ1ZSwKICBsYXp5OiRqcy50b1N0cmluZygoKT0+ewogICAgaW5wdXQgPSB7cGFyc2U6MSx1cmw6aW5wdXQsanM6Jyd9OwogIH0pLAogIGRvdWJsZTogdHJ1ZSwKICAvL+aOqOiNkDogIuWIl+ihqDE75YiX6KGoMjvmoIfpopg75Zu+54mHO+aPj+i/sDvpk77mjqU76K+m5oOFIiwKIC8vIOS4gOe6pzogIuWIl+ihqDvmoIfpopg75Zu+54mHO+aPj+i/sDvpk77mjqU76K+m5oOFIiwKIC8vIOS6jOe6pzogewogIC8vICB0aXRsZTogInZvZF9uYW1lO3ZvZF90eXBlIiwKICAvLyAgaW1nOiAi5Zu+54mH6ZO+5o6lIiwKICAgLy8gZGVzYzogIuS4u+imgeS/oeaBrzvlubTku6M75Zyw5Yy6O+a8lOWRmDvlr7zmvJQiLAogIC8vICBjb250ZW50OiAi566A5LuLIiwKICAgLy8gdGFiczogIiIsCiAgIC8vIGxpc3RzOiAiIiwKIC8vICAgdGFiX3RleHQ6ICJib2R5JiZUZXh0IiwKICAgLy8gbGlzdF90ZXh0OiAiYm9keSYmVGV4dCIsCiAgLy8gIGxpc3RfdXJsOiAiYSYmaHJlZiIKIC8vIH0sCiDmkJzntKI6ICdib2R5IC5tb2R1bGUtaXRlbTsubW9kdWxlLWNhcmQtaXRlbS10aXRsZSYmVGV4dDsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZjsubW9kdWxlLWNhcmQtaXRlbS1pbmZvLS1zdHJvbmcmJlRleHQnLAp9
\ No newline at end of file
diff --git a/drpy_js/子子影视.js b/drpy_js/子子影视.js
deleted file mode 100644
index 361a961..0000000
--- a/drpy_js/子子影视.js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8g562b6YCJ6aG15Yqf6IO95YWz6Zet5LitCm11YmFuLm14b25lNS7kuoznuqcuZGVzYyA9ICcudmlkZW8taW5mby1pdGVtczplcSg2KSYmVGV4dDs7Oy52aWRlby1pbmZvLWFjdG9yOmVxKDEpJiZUZXh0Oy52aWRlby1pbmZvLWFjdG9yOmVxKDApJiZUZXh0JzsKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WtkOWtkOW9seinhicsCiAgICDmqKHmnb86ICdteG9uZTUnLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3Lnppeml5cy5jb20nLAogICAgdXJsOiAnL2xpc3QvZnljbGFzcy9wYWdlL2Z5cGFnZS5odG1sJywKICAgIC8vIHVybDonL2xpc3QvZnlmaWx0ZXIvcGFnZS9meXBhZ2UuaHRtbCcsCiAgICAvLyBmaWx0ZXJhYmxlOjEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICAvLyBmaWx0ZXJfdXJsOid7e2ZsLmNhdGVJZH19JywKICAgIC8vIGZpbHRlcjogeyIxIjpbeyJrZXkiOiJjYXRlSWQiLCJuYW1lIjoi57G75Z6LIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiMSJ9LHsibiI6IuWKqOa8q+eJhyIsInYiOiIyMyJ9LHsibiI6IuaBkOaAlueJhyIsInYiOiIyNCJ9LHsibiI6IuWOhuWPsuS8oOiusOeJhyIsInYiOiIyNSJ9LHsibiI6IuaImOS6ieeJhyIsInYiOiIyNiJ9LHsibiI6IuaDheiJsueJhyIsInYiOiIyNyJ9LHsibiI6IuatpuS+oOWPpOijhSIsInYiOiIyOCJ9LHsibiI6IuiusOW9leeJhyIsInYiOiIyOSJ9LHsibiI6IueBvumavueJhyIsInYiOiIzMCJ9LHsibiI6Iumfs+S5kOatjOiIniIsInYiOiIzMSJ9LHsibiI6Iui/kOWKqOeJhyIsInYiOiIzMiJ9LHsibiI6IuenkeW5u+eJhyIsInYiOiIzMyJ9LHsibiI6IuWKqOS9nOeJhyIsInYiOiI2In0seyJuIjoi5Ymn5oOF54mHIiwidiI6IjcifSx7Im4iOiLllpzliaciLCJ2IjoiOCJ9LHsibiI6IueIseaDheeJhyIsInYiOiI5In0seyJuIjoi5oOK5oKa54mHIiwidiI6IjEwIn0seyJuIjoi5aWH5bm754mHIiwidiI6IjExIn0seyJuIjoi5oKs55aR54mHIiwidiI6IjEyIn1dfV0sIjIiOlt7ImtleSI6ImNhdGVJZCIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIyIn0seyJuIjoi5Zu95Lqn5YmnIiwidiI6IjEzIn0seyJuIjoi5qyn576O5YmnIiwidiI6IjE0In0seyJuIjoi5pel6Z+p5YmnIiwidiI6IjE1In0seyJuIjoi5rOw5YmnIiwidiI6IjE2In1dfV0sIjMiOlt7ImtleSI6ImNhdGVJZCIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIzIn0seyJuIjoi5Zu95ryrIiwidiI6IjIwIn0seyJuIjoi5pel5ryrIiwidiI6IjIxIn0seyJuIjoi5qyn576O5Yqo5ryrIiwidiI6IjIyIn1dfV19LAogICAgLy8gZmlsdGVyX2RlZjp7CiAgICAvLyAJMTp7Y2F0ZUlkOicxJ30sCiAgICAvLyAJMjp7Y2F0ZUlkOicyJ30sCiAgICAvLyAJMzp7Y2F0ZUlkOiczJ30KICAgIC8vIH0sCiAgICBjbGFzc19uYW1lOiAn5Yqo5ryr54mHJuaBkOaAlueJhybljoblj7LkvKDorrDniYcm5oiY5LqJ54mHJuatpuS+oOWPpOijhSborrDlvZXniYcm54G+6Zq+54mHJumfs+S5kOatjOiIniblm73kuqfliacm576O5YmnJuaXpemfqeWJpybms7Dliacm5Zu95ryrJuaXpea8qybmrKfnvo7liqjmvKsnLAogICAgY2xhc3NfdXJsOiAnMjMmMjQmMjUmMjYmMjgmMjkmMzAmMzEmMTMmMTQmMTUmMTYmMjAmMjEmMjInLAogICAgY2xhc3NfcGFyc2U6ICcnLAogICAgbGF6eTogYGpzOgoJCXZhciBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKCQl2YXIgdXJsID0gaHRtbC51cmw7CgkJaWYgKGh0bWwuZW5jcnlwdCA9PSAiMSIpIHsKCQkJdXJsID0gdW5lc2NhcGUodXJsKQoJCX0gZWxzZSBpZiAoaHRtbC5lbmNyeXB0ID09ICIyIikgewoJCQl1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSkKCQl9CgkJaWYgKC9tM3U4fG1wNC8udGVzdCh1cmwpKSB7CgkJCWlucHV0ID0gdXJsCgkJfSBlbHNlIHsKCQkJaW5wdXQKCQl9CglgLAogICAgLy8gc2VhcmNoVXJsOicvdnNlYXJjaC8qKi0tZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC9hamF4L3N1Z2dlc3Q/bWlkPTEmd2Q9KiombGltaXQ9NTAnLAogICAgZGV0YWlsVXJsOiAnL3ZkZXRhaWwvZnlpZC5odG1sJywgLy/pnZ7lv4Xloass5LqM57qn6K+m5oOF5ou85o6l6ZO+5o6lCiAgICDmkJzntKI6ICdqc29uOmxpc3Q7bmFtZTtwaWM7O2lkJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/孜然影视.js b/drpy_js/孜然影视.js
deleted file mode 100644
index 8581eaa..0000000
--- a/drpy_js/孜然影视.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV/hlLlgRAZRpYgav6+Iorl6nXTBPMTkWU2CKNWl82jk0UNZRfn4OK7WMaevl0z4yfqT2pKZiV7bKBSFXrGqEztz4MWeih/8TH+RlahwlrngWq/VQ5PC3kpkQIl2l722Bp+P8eqyjKR0u6sFk+HgWJ6sN//Wg6wzXmY/B1SeLwLtIdMU6dmT4AN0C2cdVjFILoiflmJ4S8NmsUowBH/V6eoL1DdhLfkq/6VJmA0chKJYjU4jf7099pCehE2EZTqmzFzGvUZ5RusFCmqmoHspMQwUXS0/xbEM3QnEt5sO1juodv0LGzUf/p6De4RII4gD9cgezWmDD7OD3kDJxtajwyw9uz+QPMSH96mq0VqOX0wn7jROxqHJc7K989d/XFkQKQIGy7TqmC+rb52GV4U3Lc2KabfQZRdFVqZ3G7woQ9dIY9yxHdAarbp7dl45I7DBFZUY8OhcEkaT7Z3neI/XiyAWI5Z4v5K7F0ceNVBgN7+BN6ecML+YyZVekaTNgZvWXuMu9foVgwneBSfZdeCF78B1URDguIHw2eHe5Db+QX+5J1su3jcC60rgQbGqDOR0SFhz8hDcikySCKsNfaw0N5RWgsJ8eVVjSk0kpdJYk55MV243A8CVYxJXzQxHvPn+su+jv796Cx9h4/qXzS5n7oIxTqd1S4GALvPfkdYXxK1HT5KUAJYg9S63lgPWMKGXRk7bSeFBJJr/16fKg8vEMG6Ro4vXKu+TKB/ZmhxZpeJPThcRw5zJwifCOxqVTJqnc/BPoc84QpPJBoS443hFmGDOI62SySveoX1JCAuZyH7Pqsgicn26MVf5FpeOHy7sLYhxiYnZpWJVTyrtXQ8iA18TDnLKDx6p1V1378ty3lm+cE2VPROM0ZZ67Nr39WBN1Jz5eJmzMSKs9vFByRgKnHEM89oXzmRC3PKOYX/nn3l2+tZm7O0TLe1kCgUfocqYMSKdQrztpYMvknE3+NhQDx9sAPsgm9XBF7S8L8W5BGXbhJKDzgiczGRqn6GQZYSOKIUAKY5+cqOnLJRgDqXf4VE6MxyBoyUCVu4oBArSdED1WL2RntJjw67mCJ6sfXL5OzqRS/6HomnOzDadt3sBy59/EaTcuxHQn/0s6VMnXjvOTREGGQJRhheosuTEledlRGck6Ndx9nrblY/QzpbbZzveB40uUTwbtluvZ57nNNRcsDfvofi9riiFCzeOEOTihZFAjcRgvNzOME5mBZoZ80vsUTEc2hJzSryVLSuF/0m9WXwqQyXkQRfIgJkQjPh6pkjU1k5+ya01bGQUxyzcsL2Do6UK4kD6DVtPNxZLtJL/t3LgLgE/19bHpNE904yDapcOxXwhU71XX34mLurB8dzyf4BGi2it59qMxmO4PrygNHGzRj2+P8zE45VfaH3capM/MVcWDl4AfkkOl5OTAXR2qTyIydCLQjzG+tmR8TIL67Rh9LiFBJ5cUCecycTYtW9MLhEcxUeUv/vYzAC8DuGUVdq/3rOw888puSMpoM1u7+K6dFL6zjSJmWFCRXidUimORznlnQGXXVK7g+1IOieYUnikk4l+anNhJ2ZGosCWY1hMBhASir6Cew9YZguxlBwlTEt2Q5Jxq7MhEIAPd7QdCkvbZG5QxD3B+09OLvuYAr+T6QBH5yBOXRG3yLvhdTDR4flUGybpTFza168cx8D/9G5dht/VWwas7jhKFul32
\ No newline at end of file
diff --git a/drpy_js/宇航影视.js b/drpy_js/宇航影视.js
deleted file mode 100644
index 1878859..0000000
--- a/drpy_js/宇航影视.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV1rUilFeFskkfZs2YVNfJLTgPjeCtnlxlbyLQaZtTrOqKRHRUo2GvTn/aQJZ2Fzfb+wiwYm7gEQQxLnYklTn4NPF3T5SEUxcKxkud2bI4swgKRBDpe9cDtVuim23WDBTEy2woNw+MHN6PR9CdmzQZk1eNVH/CM56sg3wNbmL8wXhR+fNAJRCrfU0EFRmEBRZMwcn0fnURUPefKNmh2x9GWTOlOoFKXHXc/pooWghACRhRnmGmbTRkggTAZf9hRbxhzDBqcHFv9X/VOs3WppcFqZWG9ciyg/uR8Gz4YGYr6xt6PmuvlPr+rW2S7RHjHVzWLEoaEGkjR+wbckBPTNowitD8qVvvGlw3SyikFheHles5T4qVUmEXZpgYiP3bNuw0M65ckrrAFWcdq0SC72grUineGy9tPciY3a/eyOMYlCAFIiv8nsB0o0vLICyJYV+5rruIcx6FJ43atNfigQnSfE9yq7qSrCGpi+pJDC+l7l7+BrGTAg4RE0cZBMGRo9VvD8cP7dplrNdQvGXhDVZbdo24YeBK5l6yovR/gBLQL/4aGfwISPIaFs2yIUcKgeaqhIgdq5xhD+4IvdrQuY9ImJeAkopDsDXi6PHgfqx4/N+vntg8FVo7IXNOmcqMqfI1YL8E1XavryH8rFg41ti57t1AWSKwii1iy/X3ZlJ8T9a3CvLMsw1bgUUtxLIOSIs92cKF2A63yNAHNCWEeH2iW04DwVplS2C4Q7BJXGXoWBJNVac7V+F/VeVfDZDoQZcE9ECWp4qsjxtNA2wMJq2tkqucmk4mOTFpO8sBbUmPMKD9M/Eur/WtGZHOhYgFSM6KZb3aAOYP4P0Ng2Jd8lqhrj8omzDdatqoYxUoB4G2ly6IjEuQVbca97wQJP9Oy1/umk10gMGXdwAXFt0n6eTyc085N7MZlzxvw6ZRPK1pYrX7bmTJqub8x3MyTjR1FA0OJKmbSovRhK9t9Qu35XshGck/eL3PZBSlTVqRSVd9gPQN7xMOY8HJYyMmORptj+LuwaBoD9IGaFVj5GDzLaFDddSfJBC26tzSlMOw8Dxb2+t6JgezLJsSRAiaDwuUueFK+n1XAsUvcnJFGJysI46yqzrXZs/goy+ocARIFAjWbkkGYbht0l913Erlpl1ca5yKmZScZlFyUggNRT/ycxxnpl3vmokKP+JxM4XuljFs5c7o463kjiqynuXXydyCaphNi7unndvLbYlyAIVkWbScS8lEUQqhOnqLMKhBQOpzOjUHXe+juGh1yTklxW79K7+pLUFb4pr1QYinGwwDmxdeKuqWTlfsRww96aaep+unMJ5RwEKR/ht2afFFM4iVSxIYxsPysi6pGeoi+G4AIzUgJ8SNR6jZm9T2ecGATbSUV4inE3kgIvB8S/FW7JZTC+3bESg4IDIMq99G0sInvGHtwVX/39ohyaWLTqK7q/EotkCj4Yy0K2FJ22Bu4tNPKgqCxGQOjp/LDNC+WPD1NgNNc3eI/qw0pkPyUN7QLql0Xnm
\ No newline at end of file
diff --git a/drpy_js/宝片视频.js b/drpy_js/宝片视频.js
deleted file mode 100644
index 7107ffa..0000000
--- a/drpy_js/宝片视频.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfmtbfonrozJywKICAgIHRpdGxlOiAn5a6d54mH6KeG6aKRJywKICAgIGhvc3Q6ICdodHRwczovL2liYW9waWFuLnBybycsCiAgICBzZWFyY2hVcmw6ICcvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICAgIHVybDogJy92b2Qvc2hvdy9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICcuaGwtZGMtdGl0bGUmJlRleHQ7LmhsLWRjLWNvbnRlbnQmJmxpOmVxKDYpJiZUZXh0JywKICAgICAgICBpbWc6ICcuaGwtbGF6eSYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJy5obC1kYy1jb250ZW50JiZsaTplcSgxMCkmJlRleHQ7LmhsLWRjLWNvbnRlbnQmJmxpOmVxKDQpJiZUZXh0Oy5obC1kYy1jb250ZW50JiZsaTplcSg1KSYmVGV4dDsuaGwtZGMtY29udGVudCYmbGk6ZXEoMikmJlRleHQ7LmhsLWRjLWNvbnRlbnQmJmxpOmVxKDMpJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnLmhsLWNvbnRlbnQtdGV4dCYmVGV4dCcsCiAgICAgICAgdGFiczogJy5obC10YWJzJiZhJywKICAgICAgICBsaXN0czogJy5obC1wbGF5cy1saXN0OmVxKCNpZCkmJmxpJywKICAgIH0sCn0=
\ No newline at end of file
diff --git a/drpy_js/家庭影视.js b/drpy_js/家庭影视.js
deleted file mode 100644
index 3c6d6af..0000000
--- a/drpy_js/家庭影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/42SvXITMRDHez+FCiaRjC3ZccLHGUNPQYpAhRmPfCf7ZHQfkVbOXYJbKl6Bgio0MEND4RmGl8GBx0BSjsllBma44rS3+v9/e9rV8XwlYqDcGLnMcWbnPKdZVeqC/ti++7m97KGLDnIP8PkMRAUR2k/kut83GVdqb++5S+33Ohsy7qy5RtoqgSaN5erjh6v3350h8JwqcCQo4XK7z19320+7b19+Xb5tthhLC+MLpABlxNhwMKIHhwd0RB8OoqN7R6zR3VbxIT2Vtra0qs/bKquVEzGZJ6KiZVqydZEwkxZnTCZsUcfKHZmVfCnch19oCplqvEZwHacv/koIW20jO0tYt9u2B/as5Nr4k9Kcr+dc9yWIzCAloyXgAYkU4PtkzK9b6NdUi8WY4ek0uUvatFLx+g8MtBXXWcXP6wjdWRkKxQlomS8xJmjyuOl9kAhAr+Mi8RN5enL8jAYI1uLUCgNY5qUFQjMOcYqZn56vJPSMdp9MsHuRR4y8HL5yo71FdI11wACmLr7ZlQuE2ZTibGQfvMnKQ8Io+ELeQUjrx4LYV/dXZVVFaNBDzQFdFAbnPZsb9AYJZcT/IYb/QIRoQ9xl/Q0uNqke9AIAAA==
\ No newline at end of file
diff --git a/drpy_js/小女18[密].js b/drpy_js/小女18[密].js
deleted file mode 100644
index b665017..0000000
--- a/drpy_js/小女18[密].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVzL/z7RpfAQrgUhoxVYx57LkFntzDK0+OOVuNeal2HmbJP6JfEmWO+k8KArawpGjh/acgMMs6If1EyJx2z/dt+/elHRT8Qh8F0XgNjrazED9ZF6CzCataXqlTqjMaBg2gang3CFyNrgFJ2hFPgF674ymAAEAqHy6NnYNi5O0aq6ohIomrv68bpS2WosR+QWcQO+6uzkUOn7TFcvVYgtekOiv0sNz8VmmGzDZdH9vjvsCKquamiw8QHO5FH032TqyrRSbNxKvnqRZuxDuWIORv9MO724RnFWqzDMldzO5pS4QXdggwbfDkby9l2iWmS35WhHLg7vqPqzzKhTNSDd2Oq8qY3bq+hF8akMff0fFwr7gRBISpejv9xyjT+qgWD638T4g04Q0JrdW/k9HQs8eh8gI9rs462MaUS8ACnmFOy2WRcTwm8ABuIfikcfUNudbvbdw/PFh86EAHXbOHKDsL9+6mBG//NVHtv7dkFj0ssp2izowXlod6oHCaKI6gUNKiMS0g21XygPMWQVh+O58CUt7o80ZUkgIQxnM6vosDBc0/E5DLqixy2mhV394L3FEBsMSzhBzXjZb7zZhjOxsr13Z9IO+dOlbyJMdH34qqbmpqfuEamB1iPhjWpkENqxhYLaOlj7MrX9Z6+0+jKNtguwb0tzpDJ1gDOjd++GHj3iPon4JmcrOj5Uk7HeStVG7aqKVDF5J0ZVXBunxFe9xKICZoUHNFwL3XfJjCmAqpIu1LZlTQszJ/rmchuPJ6xapY0ZfGtmrKbuNdmZLNa9cKOyPoTLCx84mqG1aTix8tSmCSYZLzPjN9DO3sR3E8CyRTWxdNd0ITjKIvKCODwEqUFLGPhXhW9zBV1gnypEGbgizcpIkGGuTE5QwQCmZ04B+nUSi3lVBPKvWU9xlG5fAyB+2txLB+LpOe0MureMPB1JwLDcvkQVWI8LvhIyFvppjYRUzX94Mc0JOa1b05E4MTg35Dqg17jerHHRF+zMsgHqqCnFmL7BfCHjZp//VZJjCKR2Lq742XQZv0A2c/F0/3A8DtQTm8YHFVr485WhrzewL92CD5vdber2zz4iLvF1ABqmkIDXrFj3ZIx77OWxV/UDtcWeNUMo6vPeKZCqRQfhpLIjl/wg6taRRC3x5FZhTv22YwtZlTMw6iIchV7BKrZOMsIcsMtYUO+Ht8C0kd+MZ
\ No newline at end of file
diff --git a/drpy_js/小宝影院.js b/drpy_js/小宝影院.js
deleted file mode 100644
index f088b88..0000000
--- a/drpy_js/小宝影院.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICLpppblm74iLAogICAgdGl0bGU6ICLlsI/lrp3lvbHpmaIiLAogICAgaG9zdDogImh0dHBzOi8vd3d3LnhpYW9iYW92b2QuY29tIiwKICAgIHVybDogIi92b2RzaG93L2Z5ZmlsdGVyLmh0bWwiLAogICAgc2VhcmNoVXJsOiAiL3ZvZHNlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCIsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQSsxWjIwNGJWeFQ5RjB2bmpUWnpmSjNKbTAzTVQxUjVpRm9rb2laQktqUlZGVVVpNFdaRGpLRWlkcTA0aENZR0ErVmlONFFFbTRHZjhaa1ovMFhQWE03WmV4d2ZpbHBaVGRYaGliV1c5L1paZS9ic1BSby9pZEhZN1crZXhMNmYvRGwyTzJhM3UyeHJOVFlXZTNUdjRTVEdqKzg5K0hIUysrQ2pFTTFCN09tWXo3TEZ2Zjc4WHNCU29GZjJlbWJkTGk0SFNocVVTcDBWbTZCa3BHSVgydGI4SWlnNktNME5kdDRGeFpDSzlXemRtcXVBUWpYNG9tSXpsSTZpMCswc2gvSWxJTW9xL05yckZGRlVIRTZ4Y21LYkJ5Q2xrdGl1ZGZHN3ZmbUJtVzJocHFUYXU5aTExNWZRMS9IQXU2N28xNS9WVyt4RkIrb3ZjYmorUUN2ckQyeWoyYTh0Qld3QWhOYmZyVm1mVGdJdEFES3UzTExPTDBXY0Q2VDl5elgyeWd5MEFNaXF2WDhKV2dDRTVxeTJRUXVBakt2dVdQVkRFZWNEZWM0Myt4QVhBSG5PeTQrZ0JRRE8wc0puYVlYaVNpM1cyUlZ4UHBCeEMyVmVLVmJZRjZFU1N5YzdWM2I1eUM3V2hCbUpvUSsycmRVckhpYStRbUs0WG1lOWJrWElQZ2cxdy9scHIydWlaaEI0b0Jray9kZk5FTmZpeVlEei9rVjhBdmdFNXVQQXh6RlBnYWVZMTREWEVFOE55Vk1EOHpyd091WXp3R2N3bndZK2pma1U4Q25NZzErSy9WTHdTN0ZmQ240cDlrdkJMOFYrS2ZpbDJLOEdmalhzVndPL0d2YXJnVjhOKzlYQXI0YjlhdUJYdzM0MThLdUZaNHR6Y3VUc3pVRTdTUnh1SjZCdk1GdGVtZnpqb29OOWdPNTEwQUlnNThjZkRkQUNnTzUxMEFLQVpnUm9BVUJ6QjJrK1FETUNuZE1INkM1a3gvTndGN29BbDgxYSs0VjF5bEEyaWNObEF4b1h5S3FlOWF1bkFUdDdueWVRaTZEVHNWcWJnVEoxZjNZR0NuZXl3QXBpWU05OE8vM0RwSHVldTJPeCtFZ1dkUnhmelY2bnlYZWwySGR3WC9ERndGY0FrcEw0bXJnVEdTVG9SdXV3NlM0SGtLQ0JyUThmV2FNQ1VnTHVLYnR6d015WHNDTGRNVExpRmJtMHlEOHVXc0FITjFrOWYzZDlYcmZxcmwrdDZuVjI3V3F0dFBqMllhOS9FNkVTUjZzb1drWFJLbEt1b3FySlNsVzBqU1QrcDh2cXY3TjBFaU5aT2dsODNmalNzYnNYVGxGTTYzZ0cxNUJYTmF4Q3EvcjdKYXdhLytheThOZWt1T1ErQ0Z1QmRuQkIySWpRZkJDTjMyajhSdVAzL3o1K2t5TVp2MGw4M2R4bmZ1K2RsV2lYejU3dFErcG5qL2NoTlQzeThlc2RHQnJOQlRkNXJoNDZZcU9uMzJqOFJ1TTNHci9LOFpzYXplTnZDajMvbGt1T2VXZ1hUSGdYa3NhL1RyenZ2OTJ3bnEzYUJmRmpRaHE5c0NrM25IZUx2VzZ0ZDdrdFZKVFpIVWZ2N1AwcjUyeEZxSERqT1FzYjF1bVc5ZnpRcm13SUZkclhYbXZ4MlA2OHlUNDlGK3JBYVBkK1VrRXpVZUNCbVNocFpURnVQWjcrYm1acStxZGJxY1JYOFBmMTFPekRCd05PaHdhUWZJcm9FeVNiSkhtZFpCTkVUeWxTTkVxOTdySXlCWS9YNzVCOGt1UnlSTThvVWx4MG5EbjFLWExqSkpkMVQ2RnJ5bE9FQ2o2WUlrMzBPTW1PazN5R0dHbGkwT0VwN00wNk85NVdwT0NSU1dLTWU0N3lKS3NwVXV4c09lMERaWXBzaWhoNTEwaU9rbXhXa1FMMzFaQVVCc2xOZUNtNEtVVUtwN2JPTzF1UlFpZUdRUXpOS3dvbGVtNTRpdjdja3ZQMlNKSEM4QzVFMnVzTFh0YzdpaFRMSlh2empUcEZ4dXNMdjY0VENpUHJMOWp4YTdVUmZncHhSWXpCVTN3aGp4bGY0UFI5K2lmVmVaVllteDRBQUE9PSIsCiAgICBmaWx0ZXJfdXJsOiAie3tmbC7nsbvlnot9fS17e2ZsLuWcsOWMun19LXt7Zmwu5o6S5bqPfX0tLXt7Zmwu6K+t6KiAfX0tLS0tZnlwYWdlLS0te3tmbC7lubTku719fSIsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgMToge+exu+WeizogMX0sCiAgICAgICAgMjoge+exu+WeizogMn0sCiAgICAgICAgMzoge+exu+WeizogM30sCiAgICAgICAgNDoge+exu+WeizogNH0sCiAgICAgICAgNTM6IHvnsbvlnos6IDUzfQogICAgfSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAiVXNlci1BZ2VudCI6ICJNT0JJTEVfVUEiCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX3BhcnNlOiAiLm5hdi1saXN0JiZsaTthJiZUZXh0O2EmJmhyZWY7KFxcZCspIiwKICAgIGNhdGVfZXhjbHVkZTogIiIsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHtwYXJzZTogMSwgdXJsOiBpbnB1dCwganM6ICcnfTsKICAgIH0pLAogICAgZG91YmxlOiB0cnVlLAp9
\ No newline at end of file
diff --git a/drpy_js/小猫电影院.js b/drpy_js/小猫电影院.js
deleted file mode 100644
index cad2476..0000000
--- a/drpy_js/小猫电影院.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/小白菜电影.js b/drpy_js/小白菜电影.js
deleted file mode 100644
index 6f9b532..0000000
--- a/drpy_js/小白菜电影.js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8g5pCc57Si5a6J5YWo6aqM6K+BCm11YmFuLummluWbvjIu5LqM57qnLnRpdGxlID0gJ2gxLS1zcGFuJiZUZXh0Oy5kYXRhLS1zcGFuOmVxKDApJiZUZXh0JzsKbXViYW4u6aaW5Zu+Mi7kuoznuqcuZGVzYyA9ICcuZGF0YTplcSgzKSYmVGV4dDs7Oy5kYXRhLS1zcGFuOmVxKDEpJiZUZXh0Oy5kYXRhLS1zcGFuOmVxKDIpJiZUZXh0JzsKbXViYW4u6aaW5Zu+Mi7kuoznuqcuY29udGVudCA9ICcuZGVzYy0tc3Bhbi0tYSYmVGV4dCc7Cm11YmFuLummluWbvjIu5LqM57qnLnRhYnMgPSAnLm5hdi10YWJzIGxpJzsKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+Wwj+eZveiPnOeUteW9sScsCiAgICDmqKHmnb86ICfpppblm74yJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy54YmNkeS5jb20nLAogICAgLy8gdXJsOiAnL3ZvZHNob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgdXJsOiAnL3ZvZHNob3cvZnlmaWx0ZXIuaHRtbCcsCiAgICBmaWx0ZXJhYmxlOiAxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJ3t7ZmwuY2F0ZUlkfX0te3tmbC5hcmVhfX0te3tmbC5ieSBvciAidGltZSJ9fS17e2ZsLmNsYXNzfX0te3tmbC5sYW5nfX0te3tmbC5sZXR0ZXJ9fS0tLWZ5cGFnZS0tLXt7ZmwueWVhcn19JywKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUErMWFXMU1UU1JUK0wzbjJ3ZUI2V2QrODMrOTN0M3dZTlFYeGt1d0MyVnF3ckFKQ01JQWt3Q0lSQVFHNVd3UVNSRFpNRFB5WmRNL2tYOWlaUG4xT3o2cFRLWTJXdXpWditiN1RwN3RQWCtaODZlNG5nZnRoSTlJV2pqUUdEdjcySlBBdzFCWTRHTGhudElaTzNRL3NDa1NNeHlHQnJYeVJ2ZTRYK0UvalVTemtGSXdJbWlXV0t2R2xLaTBBVnZOMEYxajdsc3FsQ2F2M21Tb1FqVFMyeDZLL2kzSlVablNDOVM1U21iL0NEMkt1QWxZeXorTUpLbUNFL3hCdHVJc3NEckd0SWhWNUdHcUtHUkZYRWQ0NXlEdEd0U0tpSzNmZERZbHV1QnA2RVB1a0laNThXVFo3cVVoN2t4RnBid3FwVW5lcTVXRDhIaGt0TFRSOHNtN3Y0Y05XS2wzdmVTNXRqYnhucFR6WVhKUzd3MUFDZ0h0WWxVMEM5N1FvbXdUdTBRWWJBSXcrM3NlN1hvRU5BUHIxclZtbHQ4cFBBdlRyV3JGR2g1U2ZCTzRSVlRZSjNOT3E2cFJBaThFYUtWSU1WZUNlYTFXbkJPaTN1c25NclBLVFFObktINmJ0MVJ6WUFLQmZ6M0JsYkZuNVNZQzIrV2ZVVHdEWWwreENlWHRhOVVVQzlFdjFzUFM2OHBOQTJleWRRUkVWMkFCUW5jL3Q1R3VzMHdHNGRxYmVsYmNHMWFxUkFNZlRmTXRLTDlSNFNrQ3hMMWlEUFJpN0E3QXY4enUwU2dIb2E5MW9EaG5hVXAvSXNlZG1qVXVkelMxV3hsU3pBRENVaFRGZVdGT2hTSUIrNlJ6ZjJsWitFbUNZMnlrMlhsSmhTb0JEOSs0RjJRQmdtUDE1c2dGQXY4dzhuMWhSZmhMUWtDK1RId0RzNS9ZL1pBTkFmY25wZmNtNS9BWnl6RnhRZmhLZ1gzZGFqQlJMcXRWSVdKc3dLNTIxZXNkb3pnRFQ5cG5tL1R2Q0RYZVF3bGdpc1ZrdXFrMEVRSi8wdHBEUnJFMzYxa2E1V0tweDBodDJOL3dDblBOVDQvY1F2MGZuRzRodjBQa2c4VUdkMzAzOGJvMFAvb3E4K0tueEI0Zy9vUFA3aWQrdjgvdUkzNmZ6ZTRuZnEvTVViMUNQTjBqeEJ2VjRneFJ2VUk4M1NQR0tuL3AwUERKRTNzWHBzTmV5OWxKSHJYdHd2Q1RLcTVtV1FOc1RaQU9BKzJ4OWptd0FjRTlrU213Z1EyYkMycTdSekJKb3U0MXNBTFFkck5razBIYWJGb2tFMm5wbXEzRmF6MVhnR3NCUWEydElYOUhaREY4YnFIRUlEd0Z4Q0puRHdCeEc1Z2d3UjVBNUNzeFJaSTRCY3d5WjQ4QWNSK1lFTUNlUU9Rbk1TV1JPQVhNS21kUEFuRWJtRERCbmtEa0x6RmxremdGekRwbnp3SnhINWdJd0Y1QzVDTXhGWkM0QmN3bVp5OEJjUnVZS01GZVF1UXJNVldTdUFYTU5tZXZBWEVmbUJqQTNrTGtKekUxa2JnRnpDNW5id054R0J1ZFlXeVIzMjJpQjhOUXdNOU9mTEJDZTJheGtOc0M1TlN5S1lvbzFUWjRiQVV0VHVMV0ZkdGxhTjB1cUxOaHlMOW9jcXJaNlo1ZWpxRnVhaENLdWd6S1g5V2lidm13dWtrUnNqRVh2Q1RHcmxSRHBWaVJXcllUNHdyUWFlaDFpWjFiVEhaWm9EdityaHBYRmF2cEZlelQyT09UNDEwa25zL1NjUFl2NlY0SmFkR1ZsY3BpL25HZWRteXllVmg4Z25hcEpRM3ZvU0M4dDdLVzl2WFNrcDliMzBKRldNYzBTQmRVWENYQkJiczN3U2FYTEFaRFdUL0F4SmI0QVlIc3Zlc1NJcXZZa3dQWktRelJtQUdxVkZOK2lJM3NTb2p6S2N3ZlVvcysrVm1ONjZVRnYvZmxsemVlcFAwZHpRcUt4eVJubGl0alhhNzVlKzVuMW1xKzdmTjMxMzlOZE1VZklhS0xyVzQ3ek9ucnNON2h6SktBY00yQ1hWQjRCZ0g3eEVpdDAyZDFEZkVNZDlyZ29qS0x6T1pzdzJmSXIzdG12ZHI1TzBTN2R0SmJOOGxZL3p5Z2g0YUpxa1RhZU1pUTlWNWxOa1J5ckFuY3M0dFBBQ2dWWExFRFZJa21rUm5NSk5vck40NGpSeVhXenFsOFNvTi8wREJ2SEw1Y0VhTXNOYWJsYUF2L1lxeVpaNVI5NytUTHFaNWRSbjhzenZoanh4VWpnWnhNajdkRklZMXU0VG1LRWZ4aGhJL255Qjd6R1EwemY5ZXFsMFRrMXBnaHhPVnd2Ri82R1ZLZERranU5MW1JSHloMEhZT3Z4Qk8rZVVrMUxnUEd2N3RpNXBQcDBTNEIrdzFuZXAxSS9BTXBSQ1k2aUFvQTdGbGNrZXI2c3pLcStBRUNiK1phdEt0RUZBTnNiWDdkN1ZmUUEwRzlraW0vZ2phVUU2RmNvOEdTNmJBN1R2WjZMd25IWWVHTVYxYmtVQUt3ajN5V2tuZktXNEFlY29NaWpRT3kwQXpTSklKSS9TWVFxUUp0ekFLaHNFdmpKOVArWVRQMHpDVjhHQkh3WjhGM1BKSVFNZUd4RTZxUURQTi9QZUdScHJ6YzVWanhyejZqTUR3RHJUQzNSK3hJQWFCdDhiYTNnbjNjSktDMTkrZDJOUFRocHA5UWREd0NzMCtPUHZkY2RESjh3Nlc0REFMYm45U2JINDc2SjVjUXdxV1VBUUxmTnY5TnNBdUI0em0yVFVBT0FmcWtwbGh4WGZoTFE0bHBuV2FWNkFHQ2Q0MzE4VEtrWEFEUXVlYmFUd1hGeGdQYkovRzUzTjg1VkpPV09LdEMrNGw4OGdQaXN1cWl4dTc3eThKV0hyeng4NWVFcmoxb09JSnJDZDZQMTBoMyttK1hQYTY2dmZMUDhvOThsMS9YdHNYK1pvdVVUL3pMRlYyRytDdlBmRVB2cXpWZHY5Vk52VHo4Q2UyNStNdDQzQUFBPScsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgZGlhbnlpbmc6IHtjYXRlSWQ6ICdkaWFueWluZyd9LAogICAgICAgIGRpYW5zaGlqdToge2NhdGVJZDogJ2RpYW5zaGlqdSd9LAogICAgICAgIGR1YW5qdToge2NhdGVJZDogJ2R1YW5qdSd9LAogICAgICAgIHpvbmd5aToge2NhdGVJZDogJ3pvbmd5aSd9LAogICAgICAgIGRvbmdtYW46IHtjYXRlSWQ6ICdkb25nbWFuJ30sCiAgICAgICAgemhpYm86IHtjYXRlSWQ6ICd6aGlibyd9CiAgICB9LAogICAgY2xhc3NfcGFyc2U6ICcuc3R1aS1oZWFkZXJfX21lbnUgbGk6Z3QoMCk6bHQoOCk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAgcGFnZWNvdW50OiB7InpoaWJvIjogMX0sCiAgICBsYXp5OiBganM6CiAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwogICAgICAgIHZhciB1cmwgPSBodG1sLnVybDsKICAgICAgICBpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykgewogICAgICAgICAgICB1cmwgPSB1bmVzY2FwZSh1cmwpCiAgICAgICAgfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7CiAgICAgICAgICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKQogICAgICAgIH0KICAgICAgICBpZiAoL20zdTh8bXA0Ly50ZXN0KHVybCkpIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlucHV0CiAgICAgICAgfQogICAgYCwKICAgIHNlYXJjaFVybDogJy9pbmRleC5waHAvYWpheC9zdWdnZXN0P21pZD0xJndkPSoqJmxpbWl0PTUwJywKICAgIGRldGFpbFVybDogJy92b2RkZXRhaWwvZnlpZC5odG1sJywgLy/pnZ7lv4Xloass5LqM57qn6K+m5oOF5ou85o6l6ZO+5o6lCiAgICDmkJzntKI6ICdqc29uOmxpc3Q7bmFtZTtwaWM7O2lkJywKfQo=
\ No newline at end of file
diff --git a/drpy_js/小站盘[搜].js b/drpy_js/小站盘[搜].js
deleted file mode 100644
index db7279d..0000000
--- a/drpy_js/小站盘[搜].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/41UTW/TQBC991esqsofbeykIC6uQlUBNxBVS0CoqqLFnsRL/ZXdcdoUIsEdCSSEBKInLiBx4cAB9dI/0xL1X7DrdVK7aVF9cOKZl+c3b95mSDnheQSkTV4tEHkhwwg8Yp79ej/5+WXy9fPO3w9Hu2ajaIapQNkLETPhNZv7+/vuwaFI3QSwWUIEUO6HHR5JXFM/rMMB9bHdo5EAI6N9aPdG6sMYtJeXDRFSDl1kMbQNHGXyngvg7RodfaE03dKlQc78ve2i7pFWKQxoAFx45RDqMjuSxtnoQ4Km1LJ5r9vZKEnHjXLUGNJcDnSn1Sp5soiOuhnlQr4OeQ66GtHDkUeWXgoX023kLOlblk3adytviwBJziNpI0uyHF2BlKN4xjC0zCwXoXTLtMm67hKpZ1okK7q2NqPSELmPUkeroZg9dRtr1NjWuppNcvrnzeT4u+QrRzs9flc8/1fs08f3Ff94rVpxh2nQZcF0grXaaCHGajYOgxwEWgXCrkOK4EhMFvRCS+EbMiirhvEEDtC8hNU7135V8a6AmDkyBWmf0ywcORFL9jwYWM6qbRjUMEIOvavJVHSuZAtA+JxlyNJEOEMa5aAIb9vzyqYmJDRWVMVA892M+bJpmvWOnyYokyY7s9nmf8ohpnxP3FDm9QKLlPZ4Gish528/nn86OTv6MTk+Ma/BaqcrRq0Qc0lFrxrDS8KnIZPHf/L72w3if4OMBBSpnp7Opuexow+5U3poGNoRkVEfnCFwZD6NLm9dBXVn96KmqN1eyh9QP7QY1uUVAFfNatWLlX+8YiUMpSSZs6Jmlg7UWOSaqlgpMqnnSbn6Wvk5DypSrFHzzCzue2Rxcb5RHP4smGkrzkCDPHre7Ww9tGvwsTRpofow/S4At0DkEVqBfbHe8T9al8gN/gUAAA==
\ No newline at end of file
diff --git a/drpy_js/小马影视[V2].js b/drpy_js/小马影视[V2].js
deleted file mode 100644
index 93481c4..0000000
--- a/drpy_js/小马影视[V2].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/小鱼影视.js b/drpy_js/小鱼影视.js
deleted file mode 100644
index 9984fe1..0000000
--- a/drpy_js/小鱼影视.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVx0m7uwstVbsPzuQmO9TORK5evh1xIqc7MSeeWNCFvgE+WvyiNo7AWPpKmtd1lUdwME6gLd1NoROcxkfNNuz6ptr64W47G2QR56dLZ8NI+gRKpunTlR4ma8aT5BCIFUv9VUAOF+spyi/DrXjUhhPV4cB/kwFcINfGCXYKjVWyTqsylG0tQ4XYuEIsSgxQEhoGSRAvxe1tr9uRcpgSlrcJ6s6OKPAhk8cFK29oZWmHJ5UleTEIUS1wPbUO1dyG+EF6LR3CXmRCytD8QBpyL4mJyBJEGJ4tW5IWXAIs0TsQx4tUcJFVKJyJ0fQXuBO3qAJOXbEmywnScnxl+IfSamg1m2x29kUb+eFphFqKdM5yuXzW/cIVBW1hppB/296IQj6lbBb5uaXY6jUa5vFDl1Vsyj4jvNOLfcMPtFUEKVULbWGbeAgRVhdh3yJRQqF/3FC0eMJ4vWuPVR6XE4tM/0h/12GM0Qj+wWpR4Sn7qdoqInV87xd3YKXPAyFr6GJtKZB1zrHllCFUZElK3Ql+t0nQBRlCCgPNzqhYqm0wjbaTEGyU0KUuWbOV5wtF4WanTxWjqoGH0Ojb8o0Qv7gAwBwdW9+6SoFt2xPsKB8h6V7ft17+T4lCJ+cm1ZtAjVkRGPgvZGnmQt4C8ZJQ9A6m9bI/rcxueNj2xrndkCzy5A1UayH9J1BbVYXJZeZ/p5xtLsNmYp/7FwGrP9FjkjA/OLUgi0Fe6hJVeqNAZ9Kue4su5AZt85SVLu5PiOT1lrg1Ia8VVmQ5364qDOslRf070plRvuKPyIv4Mm1xvhxjBvza4NS/iJgmQPFqu1Xwqrr3ZdsMmWG9tCyW0qT6/4M8A6Bjn8=
\ No newline at end of file
diff --git a/drpy_js/少儿央视[央].js b/drpy_js/少儿央视[央].js
deleted file mode 100644
index d8d1814..0000000
--- a/drpy_js/少儿央视[央].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV5tnH3X+j84vOA/ubbiVv9ta4vsnXQVsXZqC0nuNPdjIPQ/+gVqVMhI68dIhq9z8QSwxkwIe6U4y817i75AZdjWX+UrMrWOkgQK2u+0lnVKLKocakvuUvt/dZrle+hjJRGYQOARor5v8AtjjY4QeGmgB9/gikSyc8ybFDqwGjhjUmbc3ZB56MPsZG0FqMvr21akQOe9wNJI80V6pTZ+/I9yoAcDhP9R1CoPHs7MGl/mmJbR1c3sQAhs0bYQxq/3x/i3MiiMgfC/pV6TtKxiijSeGRAY01Nh5LTSbV88lIAlPDiBkYBYQlqljTsl3nnVBSFNPKgifzCxdxTqZwiXQlaZGiqWA/lBdY9pXlQZKCN6n7s24L3n5YibaKTZJNfSbbTs9hh89T2XkZl/fozOdS42SOdSC/JpEtrmXBYMbIQmKLddU3ZK9iKaDhj1aT2ZqXJJhTelCpcT7jNWdhXmJIlhtuPa1Rn9LbrYZ9BrPUo8hmyTia+1vfZFFNF4poyZj3PVk0coFhV4FoDFPwtYyp4lLu8V+CzaZtG90p+ni8HoKv8glF+ue3XGUVlyoB377DtESSm1GfKsAB7ZvSzHDr8CCwoGpYk8CnyfOrN9z+DxSzWlFlYobmmTyAtAqCMaC25Gc2meybblnRn6WvJU+ExbZK9EdIczLDBO5Kb8SDOulFck/2NDSewFt2O34jHJZExeDmQn5eTKBDF24w7xnqE+rncrfw09lb1dqKu8WGDvPo/0wHOXLQ4XgHP/rYkga6oaG93COn75FQtzpFqCery6yH91w8uK5lHoBiYiQwRRPuSfYeNVQnMynAHQzePGZyZ8LfnhlmIa76GIhe6kDe4EJHgfKsdh//qMDw7tav6ROASDGxJ7MvOa/yMpvtmtdjoB1M/hrF0tk5kQVmNn62tkOrMdo5Mc9K7/p50cmbeD6i2aeqzt+KK/L5PPYpGH8K3wYZE1ApLmLPdiSx/pkvSk8HJUTRnz7dOZPe1J4Egzreun8G6cEWl9OZwwPXq+S0Ip4r0GIVmDXPjEYmZoShkF7ZSQWS8NX8HP9P1NH+pOdmdNahFiA7Fi1Q3424t+SpWUoBUlgHfzvBeVOXB0MfALQkuBzsEfvFTY7S3KM++umgFTlr9LmYYLmoTYvMjWbD079tdUxQ7kdFcJIGjiftxhuTDOnWw/yGJhHlPWwBGLMleYmrHiI71dhD5kyMUcE0L8Rj/AOn7ZVoGfksbum8XibsD6GfKtc9xl4D9i7sMcT2DkvIuISW0VfP1slzofKE851GyuXcZaE1vw+a59Dbv3R6KPbZJDK4LOja1pn76csgFJuumACsya3wYxzMTzSOUFjTHABIuzEqsCY9syN3e4FxqfPPwa3DusTP1YWMHhvgxCx+J1jUnWI9OtaKwnlfyFgcVfiMCmGOpR/toAHWlxmOi22Lz4TiqkrmC7KaJGgKEAOUgrxSZ1u2mC4rL55iyHMgIJb0OZdivzirF76sMlfyVZVYmpEyopUuNUfoxHno1WU+BBllwMRhpLdM1ug+t/f/gu5TK0kqmLqn/kX5qQ9OSZU/AmR2lu9dtwVkJfhC8QW7xXrg+Zlq1kA4jyWi9rTeTtIMmev54luXbOzzEii79ukbdPKJwgp5VNtAW4y6zK5DQy9DMayXWXFaAgEPY9rbqzmyqxiNR52SQNQKTXwFybiB2UewSv1PGmhOenaKTlJX6oRMZuIR9izxy0pHyQHtB70c/9VjwRbLsi4s7HZRsmE+rQpfI/FgdKyZtl81py/VHDZ+YT5e/uUhcNGc2BJ7rrmpKKg00XeiddAfmuuCh+Z7etQX5zG1jD00kcRh5/RY6Ri+MSTg3cIZdVhU7fijD3GRinHRmqBi7MVSJe8+rZ5mflOkLSVwTsS4Y6+4rOkW4iWpPjLzBYd6SiSh1jkMnTJZ/yq9NxacJXieSq1vL6nYUm4mamxWNUpKdy+qw7lMR+nJX1zSN0PWO2IMt++WxabHvJ0gfESLvzRRdjNdBinW6y0f7G6saD1qIW7x3e/B9xkuzVLI9zZCFnECoYEqGgewQD2LiXRpEMwBYkgaY7BWb8EAhwlbao/98SXOHiGh6ET2LvKI02Z729+MBlHlIkQQkQAZ/0ZfrDhj8ZsXbfafjhGObq9IhvqhR7qrS5ardjW6O1dJC6Mjao/We2FCmuYw/oSRhUXpQcfaMqHR0+eOpDJ7/YbD2QgH/DQOb7A6LVtls+tWC75kfUoMznuqQU2hAM/EeGWfxNeA5FU/oYlIY6quXg9x0D3Jsqe1N7+lO69LBVLCGQu7vW4xlPu4dPOthZE0LTA+K3oxuDslDoBwwtb9kOzXpLt/umEF/htacobx5WkYrrLyq6uDkEVm4Xo2KY4WRDRorc5WzR1YAF0ob3Nb/EOIz1E3kaUIAuZKx75SjqkiSeyOPritMQU3wyBfeN5kpargWvfb+sq0FcjzB70B8ZY2W/Q8Y9yRrC6m7QEbIwG9z37nDGrLKAcE7f82TE1FoEE2om3FWToTHu8DEcBcWDcrVhDAWx+IlfkpCQj/DSZIR85F7HkC04B+Vea9tUy09ox1qiqzEsECW6gVR6cFgd2wR15Bp8Vkax2eEKwD/yPLNWDi0xz2/Sn+PKUeXRc5sFup/9RgQPS/z1Y7XT24+2bRY7bt8z7sWsU8KAntKAH4pZoOWxANLDKj48d/194L/PsezwT1n3wb0GCYcHQgGydOedtU0NfnDDzE6V43tl5ts/PXTO4rJGP22/eDrZlTwCe5LgcDXFmXWDyyN1hOAdq4zL8lStBA5UrrunLSUVFEqpuuVPrGoFXjdLYmkuK/v6j8/7RmCLFGUpPrtAqhjRY/xSC4SXqsSlTHCtfyDb3vB+ofsOyKqo0Lo57NJ2eaIaXVca19tpro1p5D9YVcIUg8CEibdqVYAH/GbQlO0hja/eq9MzpRe7IjiK05nb54H30MEstYBNycME6tFFlb3+jYYJgnuoRym3JzbrD/2vldUFPPgPPaxBfVFdKpoSmvQGTeimLpGcOr8G8VpbxZMCXuZ31BS+aiRJXuii+O7VwRLfqszniwIyfwVg7xxSCZRciRIVfmClS6NaHhoH4aSKcqwQM7bOIkqL344mQd43HwEiO5ZKHNb3bJBSA0uOef2UJzEhv3QDTRhcVdVIDun9kHwQzGqniP/I70dTKthadl9td7bBcuvoNqhPTur0LlQDbKo4Do8Y3iFb5LOCA0vq3cvrqXuPXPlAmO5miGjaW0z9P2s/43cowD/uQLgsr7cEQ6mltd81+BZiwT7La4AQoMMPWlGpvEQi6CfcY6gtcBq7gbCnwgC6Rm1BRrVY5YQglZ90NrBDggUJ2x0uhnPtJ4xiO2+Gx/bdexVlvlQxnZWSRtjEWcdPhvDZdHUTdG/84v1pwnJpLy5dJW7E/nkzEYLuj4EZPLITCfvPwgOKAF9hVQ2WbN2FmbFSDIeff9TyJF5YLz5njNd2smQRJOQwoGI+rBvHX/AKFw8psMsrYA17p7SrFZOTA/rfJQjiJr81iPAdErkSDNjCiv8JJUSl/1nQ7p+4gjOrZtsBxkC9pZmvdZ1ueZ4/+/d054b6MKLCeFF7vaSjA3R+0t31FW8739OCjPpj3qwP3KrJQGb22UE577JL1cV3N1aaH5rY3DfBNaP3iuR6caSjWM5lQ0Zb1om/so+5rqPsDd7n+pXFNo/UGmFLPl42vIc5RFuL99+ZUKlnWXRLg83q+Tsxk7x8W97YWVYsZBPS4tPlxMrAshj9wYGlLPCz4GWWvx58KVkiVuuNV2fk+LdKwJtRP0V827l27P5N//0RaZe47lPkeDIGcyZalKwcLREEX+rwOQJ9LJ4QT2k4fgRK2EJUlnu9PSlyv3SI6F6TaD32ufjQrWJGDrMwr4iL2Oj6MMid7fC/bxY95GqRoVYmjjg91ZiqSzPU2ebiMNUCcUcemvKSNItgWSK7Cqy3lryMbu2Uj0kmaUIvVK+SZ9bskTd10kjFMTWxWM4oRjaLH/Tqix4GU4In9UbqgDCNuzX2BBvztbdcOwtyHXNZMxhm7KiqYe8ve9MnkYrcKAj2SLraqZPLDVsv6k9gHbm4Py6kl43RlKoaWIsbBxX2ffQImzmi8SzyD7B0vfUIskcMO8Vc6sBW471/JkOgcT79sIEOLgnwM/Z/vZ1mkJCda/wpdsL1zHpZsFr2sx6Ua9qzsH5OD5wIZQY2hjsnfPU9ld0DIKv0YyUjqSb1GvY/U05U74uIsW0u10pC4cAoJ+l4xzGC5WYf73yM5ddHbqa4y4hSaTYyU5E4kNtRe8bJ8bYScf7JLUvp/xWyk1wkFVN3yWBd7qLwe/wGZKLPlj4HeHmoCL2xCCWWz7DhOj3raXfoeDFjlb+SX8LvrFpJA+3Xw+NTUEGtnNW+jDkc4Nr8o5BUqRRGa0TGfLYwWQGfdc+BVdkUziO8gEZ2JFrRYmNRxFOD3EKS9kMFVi0Luz2ZO2gTW8PEkpfnSOnggPCLqH7ku3c+B2cqkGdMWLYylyfb5K1WYHAXwu9vvDDlyQJqF/m+IKj60MN8qwuSG9vrUaOSoh+cuodR8Lj8XD0J9lQtzDCegsIbIuFs/SutC6asIr3X7xuxfttayMOJzyfhmVGDkP8T6BOH4e67ptJQLHKM9001gwxaKoazKTop4FmnDUJS2ICTCN4nM4/PXm3PDdMJSlloaLk3LoUpMWSxVSd8u8ezpUrC6sWjwneR1mLi5iSHEO0xqa8YLNrMHA6eat2zPt5ibW4c2GjirRqrfCpG9Yx3ukYAUvmcwxlhYLdrPs6fr+VNsZEWsjt9aYMctC4Sh6EsBdptSdVF5eDxGmKtrNjGyxBEEgA5as3qA7vquecSgNkeSZw5TMdCSDd/n30nFXjs5tQo4R9JHy79hN/upTbN98LC4hSexy4UVzFNoMbeJLrscWJA7G3E0GnltyA/XEVY6zsNnGVxnJOqfaxnV2ckeH9xnvfJYtAcGSPTD0QWSNB0ZSW01kMxB68T2fJsg2LKPt2J0TxEbUYfgk+2nuI0lTfj3sNNCtXsrYqND/wwsbdEvNv9hO8W3ymh1+51RkCDTh+I4hEmkQgl+hyD8BPk6M6XnZwdh2ry7Z6wEOWVtDjkpxDVmHTZMLri/86ogTxAYHaDHC93tEsb26Dr2LqZvDAl3h/MsZc7SusRPwC88R0dCWonqnYP64tTbpMaAGHuCSWWppL7lubI95X1JEXsvFg+sVx7PVWZAv4amZT6ul1qfSfekNEsXs40=
\ No newline at end of file
diff --git a/drpy_js/干饭影视.js b/drpy_js/干饭影视.js
deleted file mode 100644
index 620ff09..0000000
--- a/drpy_js/干饭影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/广播迷FM[听].js b/drpy_js/广播迷FM[听].js
deleted file mode 100644
index 1e2ba75..0000000
--- a/drpy_js/广播迷FM[听].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7Cgl0aXRsZTon5bm/5pKt6L+3Rk1b5ZCsXScsCglob3N0OidodHRwOi8vd3d3Lmd1YW5nYm9taS5jb20nLAogICAg57yW56CBOidnYjE4MDMwJywKICAgIOaQnOe0oue8lueggTonZ2IxODAzMCcsCgl1cmw6ICcvZnlmaWx0ZXIuaHRtbD9wYWdlPWZ5cGFnZScsCglmaWx0ZXJfdXJsOid7e2ZsLmNhdGVJZH19JywKCWZpbHRlcjp7CgkJImxpdmUiOlt7ImtleSI6ImNhdGVJZCIsIm5hbWUiOiLmjInnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuaWsOmXu+e7vOWQiCIsInYiOiJmbWxpc3QyMCJ9LHsibiI6IuS6pOmAmiIsInYiOiJmbWxpc3Q1OCJ9LHsibiI6Iumfs+S5kCIsInYiOiJmbWxpc3Q1NyJ9LHsibiI6Iue7j+a1jiIsInYiOiJmbWxpc3Q1NiJ9LHsibiI6IueUn+a0uyIsInYiOiJmbWxpc3Q1OSJ9LHsibiI6IuaWh+iJuiIsInYiOiJmbWxpc3Q2MCJ9LHsibiI6IumDveW4giIsInYiOiJmbWxpc3Q2MSJ9LHsibiI6IuaVheS6iyIsInYiOiJmbWxpc3Q2MiJ9LHsibiI6IuaXhea4uCIsInYiOiJmbWxpc3Q2MyJ9LHsibiI6IuS5oeadkSIsInYiOiJmbWxpc3Q2NCJ9LHsibiI6IuWoseS5kCIsInYiOiJmbWxpc3Q2NSJ9LHsibiI6IuaIj+absiIsInYiOiJmbWxpc3Q2NiJ9LHsibiI6IuS9k+iCsiIsInYiOiJmbWxpc3Q2NyJ9LHsibiI6IuivhOS5puebuOWjsCIsInYiOiJmbWxpc3Q2OSJ9LHsibiI6IumdkuWwkeenkeaVmSIsInYiOiJmbWxpc3Q3MCJ9LHsibiI6Iue9kee7nOWPsCIsInYiOiJmbWxpc3QxMTMifSx7Im4iOiLmsb3ovaYiLCJ2IjoiZm1saXN0MTM0In0seyJuIjoi5YW25LuWIiwidiI6ImZtbGlzdDEzNSJ9XX1dLAoJCSJ0diI6W3sia2V5IjoiY2F0ZUlkIiwibmFtZSI6IuaMieexu+WeiyIsInZhbHVlIjpbeyJuIjoi5Y2r6KeG5Y+wIiwidiI6InR2bGlzdDIwMCJ9LHsibiI6IuecgeWPsCIsInYiOiJ0dmxpc3QyMjAifSx7Im4iOiLluILlj7AiLCJ2IjoidHZsaXN0MjIxIn0seyJuIjoi5Yy65Y6/5Y+wIiwidiI6InR2bGlzdDIyMiJ9LHsibiI6IuaWsOmXu+e7vOWQiCIsInYiOiJ0dmxpc3QyMDEifSx7Im4iOiLotKLnu48iLCJ2IjoidHZsaXN0MjAyIn0seyJuIjoi57u86Im6IiwidiI6InR2bGlzdDIwMyJ9LHsibiI6IuS9k+iCsiIsInYiOiJ0dmxpc3QyMDQifSx7Im4iOiLlvbHop4YiLCJ2IjoidHZsaXN0MjA1In0seyJuIjoi5YWs5YWxIiwidiI6InR2bGlzdDIwNiJ9LHsibiI6IumDveW4giIsInYiOiJ0dmxpc3QyMDcifSx7Im4iOiLlsJHlhL8iLCJ2IjoidHZsaXN0MjA4In0seyJuIjoi56eR5pWZIiwidiI6InR2bGlzdDIwOSJ9LHsibiI6IuiusOW9lSIsInYiOiJ0dmxpc3QyMTEifSx7Im4iOiLliqjmvKsiLCJ2IjoidHZsaXN0MjEyIn0seyJuIjoi55Sf5rS7IiwidiI6InR2bGlzdDIxMyJ9LHsibiI6IuazleWItiIsInYiOiJ0dmxpc3QyMTQifSx7Im4iOiLlhpvkuosiLCJ2IjoidHZsaXN0MjE1In0seyJuIjoi5paH5peFIiwidiI6InR2bGlzdDIxNiJ9LHsibiI6IuWGnOenkSIsInYiOiJ0dmxpc3QyMTcifSx7Im4iOiLmlbDlrZfnlLXop4YiLCJ2IjoidHZsaXN0MjE4In1dfV0KCX0sCglmaWx0ZXJfZGVmOnsKCQlsaXZlOntjYXRlSWQ6J2ZtbGlzdDIwJ30sCgkJdHY6e2NhdGVJZDondHZsaXN0MjAxJ30KCX0sCglzZWFyY2hVcmw6ICcvaW5kZXgucGhwP209c2VhcmNoJmM9aW5kZXgmYT1pbml0JnNpdGVpZD0xJnR5cGVpZD01NCZxPSoqJnBhZ2U9ZnlwYWdlJywKCXNlYXJjaGFibGU6MiwKCXF1aWNrU2VhcmNoOjAsCglmaWx0ZXJhYmxlOjEsCgloZWFkZXJzOnsKCQknVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnCgl9LAoJdGltZW91dDo1MDAwLAogICAgY2xhc3NfbmFtZTon5ZCs5bm/5pKtJueci+eUteinhicsCiAgICBjbGFzc191cmw6J2xpdmUmdHYnLAoJcGxheV9wYXJzZTp0cnVlLAoJbGF6eTonanM6dmFyIHB1cmw9anNwLnBkZmgocmVxdWVzdChpbnB1dCksICIucGxheWNvZGUmJmlmcmFtZSYmc3JjIik7aWYoL3Rpbmd0aW5nZm0vLnRlc3QocHVybCkpe3B1cmw9Imh0dHA6Ly93d3cuZ3Vhbmdib21pLmNvbSIrcHVybH07aW5wdXQ9IHtqeDowLHVybDpwdXJsLHBhcnNlOjEsaGVhZGVyOkpTT04uc3RyaW5naWZ5KHsicmVmZXJlciI6Imh0dHA6Ly93d3cuZ3Vhbmdib21pLmNvbS8ifSl9JywKCWxpbWl0OjYsCgnmjqjojZA6ICcuYXgtc3BsaXQtMzt1bCYmLmF4LWdyaWQtYmxvY2s7KjsucmFkaW8taWNvbiYmc3JjOy5yYWRpby1pY29uJiZhbHQ7KicsCglkb3VibGU6IHRydWUsCgnkuIDnuqc6ICcuYXgtc3BsaXQtMiYmbGk7LnJhZGlvLXRpdGxlJiZUZXh0Ozs7YSYmaHJlZicsCgnkuoznuqc6IHsKCQkidGl0bGUiOiAiaDEmJlRleHQ7LmF4LWJyZWFkY3J1bWI6ZXEoMSkmJlRleHQiLAoJCSJpbWciOiAiIiwKCQkiZGVzYyI6ICI7Ozs7LmF4LWRlczplcSgwKSYmVGV4dCIsCgkJImNvbnRlbnQiOiAiLmF4LWlnbm9yZTplcSgwKSYmVGV4dCIsCgkJIumHjeWumuWQkSI6ICJqczpsZXQgdXJsID0ganNwLnBkKGh0bWwsJyNwbGF5JiZpZnJhbWUmJnNyYycpO2xvZygn6YeN5a6a5ZCR5YiwOicrdXJsKTtodG1sID0gcmVxdWVzdCh1cmwpIiwKCQkidGFicyI6ICJqczpUQUJTPVsn5L+h5Y+35rqQJ10iLAoJCSJsaXN0cyI6ICJkaXY6ZXEoMSkmJmEiCgl9LAoJ5pCc57SiOiAnYm9keSAuYXgtaXRlbS1ibG9jazsuYXgtdGl0bGUmJlRleHQ7LmF4LWltZyYmc3R5bGU7LmF4LWNvbG9yLWRlczplcSgxKSYmVGV4dDsqJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/影剧星球.js b/drpy_js/影剧星球.js
deleted file mode 100644
index 683ffd9..0000000
--- a/drpy_js/影剧星球.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV3E1QjBRtIxqFXsya+ai00kyM59zyoC+VjB36X4ftlYBc/a9XMcC5Kf/4qJIpiHbQH2PQQc5xGfaJRgTXWF9CGFiEr5KW65a3hs3ekgU14YM4H9Yr8qIa7cHl2QU5Uh0UrbjF38Brqig+Nxl9BpqOOCxcRHhAtmw2YxsFNim1Av0W63G5dpnvtBcx8wmcNk1sS9axcBU62j3SzamX+QFKqyopzOIcKEl59i6iCc2HjzpHhaSwbmT1F1owQ8QPCYFnn5tURa6gvB5a9eAiFrQd4pR80Ra8FboKxWBlAbybkjo9KyXDgWj4prKMmgyJyd/XKy1RWdnLtndP3NxyyWjmWt1XQw55D7rwNC77EQPmaC8VJrF2+eZHVkgCKs02bo8zbwBt4P2B7LgAKHxeu1z/trZFo5/o47GOf2hjPVMwEKX13JjZedj1pdqVcc2+DDcBNLKffG4XiaGC/XC7kelzJHLTu3NQYRnaIVqEixmlOuurqHPTOH+l4epnIOpuGZzezqG/4sOIHfYoCAQ7FVxNGadywGbpwdhwL/pxWiJ2R8lvOed4W7+C3O8AaHn6moNp4M0rQaewiyvECYfYxN3EDaBwSOyFQdR0hdA27QsPRyKWok1F6I+PZSrzW8plpkMfTOoC7uEilwCiY3KEvg6Sn+WK7gfcvyX72ugaFxXQ82iBFYTux2V6RsM7icVYh/SZXN9q/kmeG6ZWbZj6+D+mUNfBWeKEa2S1Th3zv1yskVR
\ No newline at end of file
diff --git a/drpy_js/影剧星球[自动].js b/drpy_js/影剧星球[自动].js
deleted file mode 100644
index 683ffd9..0000000
--- a/drpy_js/影剧星球[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV3E1QjBRtIxqFXsya+ai00kyM59zyoC+VjB36X4ftlYBc/a9XMcC5Kf/4qJIpiHbQH2PQQc5xGfaJRgTXWF9CGFiEr5KW65a3hs3ekgU14YM4H9Yr8qIa7cHl2QU5Uh0UrbjF38Brqig+Nxl9BpqOOCxcRHhAtmw2YxsFNim1Av0W63G5dpnvtBcx8wmcNk1sS9axcBU62j3SzamX+QFKqyopzOIcKEl59i6iCc2HjzpHhaSwbmT1F1owQ8QPCYFnn5tURa6gvB5a9eAiFrQd4pR80Ra8FboKxWBlAbybkjo9KyXDgWj4prKMmgyJyd/XKy1RWdnLtndP3NxyyWjmWt1XQw55D7rwNC77EQPmaC8VJrF2+eZHVkgCKs02bo8zbwBt4P2B7LgAKHxeu1z/trZFo5/o47GOf2hjPVMwEKX13JjZedj1pdqVcc2+DDcBNLKffG4XiaGC/XC7kelzJHLTu3NQYRnaIVqEixmlOuurqHPTOH+l4epnIOpuGZzezqG/4sOIHfYoCAQ7FVxNGadywGbpwdhwL/pxWiJ2R8lvOed4W7+C3O8AaHn6moNp4M0rQaewiyvECYfYxN3EDaBwSOyFQdR0hdA27QsPRyKWok1F6I+PZSrzW8plpkMfTOoC7uEilwCiY3KEvg6Sn+WK7gfcvyX72ugaFxXQ82iBFYTux2V6RsM7icVYh/SZXN9q/kmeG6ZWbZj6+D+mUNfBWeKEa2S1Th3zv1yskVR
\ No newline at end of file
diff --git a/drpy_js/影探[V2].js b/drpy_js/影探[V2].js
deleted file mode 100644
index 3892c20..0000000
--- a/drpy_js/影探[V2].js
+++ /dev/null
@@ -1,276 +0,0 @@
-var rule = {
- title: '影探[V2]', // csp_AppYsV2
- // host: 'http://ytcms.lyyytv.cn/api.php/app/',
- host: 'http://cms-yt.lyyytv.cn/api.php/app/',
- url: 'video?tid=fyclassfyfilter&limit=20&pg=fypage',
- filter_url:'&class={{fl.class}}&area={{fl.area}}&lang={{fl.lang}}&letter={{fl.letter}}&year={{fl.year}}&by={{fl.by}}',
- filter: {
- "32":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"篮球","v":"篮球"},{"n":"足球","v":"足球"},{"n":"网球","v":"网球"},{"n":"斯洛克","v":"斯洛克"}]}],
- "20":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "21":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"韩国","v":"韩国"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]}],
- "47":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "48":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "50":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "46":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "53":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"韩国","v":"韩国"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "58":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"韩国","v":"韩国"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "5":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "44":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "51":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"国漫","v":"国漫"},{"n":"日本","v":"日本"},{"n":"港台","v":"港台"},{"n":"欧美","v":"欧美"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "45":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "52":[{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]}],
- "3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"选秀","v":"选秀"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"},{"n":"财经","v":"财经"},{"n":"求职","v":"求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]}],
- "1":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}],
- "2":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"韩国","v":"韩国"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]}]
- },
- detailUrl:'/detail?vod_id=fyid',
- searchUrl: '/search?text=**&pg=fypage',
- searchable: 2,
- quickSearch: 0,
- filterable:1,//是否启用分类筛选,
- headers:{
- 'User-Agent':'okhttp/4.1.0'
- },
- timeout:5000,
- // 分类筛选 /api.php/app/nav || /xgapp.php/v1/nav || /api.php/v1.vod/types
- class_name:'新电影4K&新剧4K&动漫4K&好莱坞4K&少儿动画4K&明星专辑4K&港台经典4k&国剧盛典4K&怀旧TVB&邵氏老电影4K&国产老电影4K&合拍经典4K&恐怖片精选4K&体育赛事&动漫&综艺&电影综合&电视剧综合',
- class_url:'20&21&58&47&50&45&48&46&53&5&44&51&52&32&4&3&1&2',
- play_parse:true,
-// lazy:'js:input=input.split("?")[0];log(input);',
-
- lazy:`js:
- let play_Url = '';
- if (/\\.m3u8|\\.mp4/.test(input)) {
- input = {
- jx: 0,
- url: input,
- parse: 1
- }
- } else if (/,/.test(input) && /url=/.test(input)) {
- input = input.split('url=');
- play_Url = input[0].split(',')[0];
- input = {
- jx: 0,
- url: input[1],
- playUrl: play_Url,
- parse: 1
- }
- } else if (/url=|id=/.test(input)) {
- input = {
- jx: 1,
- url: JSON.parse(request(input)).url,
- parse: 1
- }
- } else if (/youku|iqiyi|v\\.qq\\.com|pptv|sohu|le\\.com|1905\\.com|ffm3u8|mgtv|bilibili|ixigua/.test(input)) {
- // play_Url = /bilibili/.test(input) ? 'https://jx.xmflv.com/?url=' : 'https://jx.777jiexi.com/player/?url='; // type0的parse
- play_Url = /bilibili/.test(input) ? 'https://jx.xmflv.com/?url=' : 'json:http://pandown.pro/app/kkdy.php?url='; // type1的parse可加'json:'直接解析url (除了蜂蜜的'影视TV',其它的壳皆可用)
- input = {
- jx: 1,
- url: input,
- playUrl: play_Url,
- parse: 1,
- header: JSON.stringify({
- 'user-agent': 'Mozilla/5.0',
- }),
- }
- } else {
- input
- }
- `,
-
- limit:6,
- // 图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
- 推荐:`js:
- let d = [];
- let jsondata = [];
- let videoList = [];
- if (/v1\\.vod/.test(HOST)) {
- if(HOST.endsWith('/')){
- jsondata = JSON.parse(request(HOST + 'vodPhbAll'));
- } else {
- jsondata = JSON.parse(request(HOST + '/vodPhbAll'));
- }
- videoList = jsondata.data.list;
- } else {
- if(HOST.endsWith('/')){
- jsondata = JSON.parse(request(HOST + 'index_video'));
- } else {
- jsondata = JSON.parse(request(HOST + '/index_video'));
- }
- videoList = /xgapp/.test(HOST) ? jsondata.data : jsondata.list;
- }
- // log('videoList =========> '+stringify(videoList));
- videoList.forEach((it,idex) => {
- let vlist = /v1\\.vod/.test(HOST) ? videoList[idex].vod_list : videoList[idex].vlist ;
- vlist.forEach(it => {
- d.push({
- url:it.vod_id,
- title:it.vod_name,
- img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
- desc:it.vod_remarks,
- });
- });
- });
- setResult(d);
- `,
- 一级:`js:
- let d = [];
- let jsondata = [];
- let videoList = [];
- if (/v1\\.vod/.test(HOST)) {
- input = input.replace('video','v1.vod').replace('tid','type').replace('pg=','page=');
- jsondata = JSON.parse(request(input));
- videoList = jsondata.data.list;
- } else {
- input = HOST + '/'+ input.split('/')[4];
- jsondata = JSON.parse(request(input));
- videoList = jsondata.list || jsondata.data;
- }
- // log('videoList =========> '+stringify(videoList));
- videoList.forEach(it => {
- d.push({
- url:it.vod_id,
- title:it.vod_name,
- img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
- desc:it.vod_remarks,
- });
- });
- setResult(d);
- `,
-
- 二级:'js:let html=JSON.parse(fetch(input,fetch_params));let data=html.data;let tilte=data.title;let img=data.cdncover;let vod_type=data.moviecategory.join(",");let area=data.area.join(",");let director=data.director.join(",");let actor=data.actor.join(",");let content=data.description;let base_vod={vod_id:input,vod_name:tilte,type_name:vod_type,vod_actor:actor,vod_director:director,vod_content:content,vod_remarks:area,vod_pic:urljoin2(input,img)};let delta=200;let vod_play={};let sites=data.playlink_sites;sites.forEach(function(site){let playList="";let vodItems=[];if(data.allupinfo){let total=parseInt(data.allupinfo[site]);for(let j=1;j0){playList=vodItems.join("#")}if(playList.length<1){return}vod_play[site]=playList});let tabs=Object.keys(vod_play);let playUrls=[];for(let id in tabs){print("id:"+id);playUrls.push(vod_play[tabs[id]])}if(tabs.length>0){let vod_play_from=tabs.join("$$$");let vod_play_url=playUrls.join("$$$");base_vod.vod_play_from=vod_play_from;base_vod.vod_play_url=vod_play_url}VOD=base_vod;',
-
- 二级:`js:
- if (/v1\\.vod/.test(HOST)) {
- input = HOST + '/'+ input.split('/')[3];
- } else {
- input = HOST + '/'+ input.split('/')[3].replace('detail','video_detail').replace('vod_id','id');
- }
- try {
- let html = request(input);
- html = JSON.parse(html);
- let node = /xgapp/.test(HOST) ? html.data.vod_info : html.data;
- VOD = {
- vod_id: node.vod_id,
- vod_name: node.vod_name,
- vod_pic: node.vod_pic,
- type_name: node.vod_class,
- vod_year: node.vod_year,
- vod_area: node.vod_area,
- vod_remarks: node.vod_remarks,
- vod_actor: node.vod_actor,
- vod_director: node.vod_director,
- vod_content: node.vod_content.strip()
- };
- if (typeof play_url === 'undefined') {
- var play_url = ''
- }
- var name = {
- 'bfzym3u8': '暴风',
- '1080zyk': '优质',
- 'kuaikan': '快看',
- 'lzm3u8': '量子',
- 'ffm3u8': '非凡',
- 'haiwaikan': '海外看',
- 'gsm3u8': '光速',
- 'zuidam3u8': '最大',
- 'bjm3u8': '八戒',
- 'snm3u8': '索尼',
- 'wolong': '卧龙',
- 'xlm3u8': '新浪',
- 'yhm3u8': '樱花',
- 'tkm3u8': '天空',
- 'jsm3u8': '极速',
- 'wjm3u8': '无尽',
- 'sdm3u8': '闪电',
- 'kcm3u8': '快车',
- 'jinyingm3u8': '金鹰',
- 'fsm3u8': '飞速',
- 'tpm3u8': '淘片',
- 'lem3u8': '鱼乐',
- 'dbm3u8': '百度',
- 'tomm3u8': '番茄',
- 'ukm3u8': 'U酷',
- 'ikm3u8': '爱坤',
- 'hnzym3u8': '红牛资源',
- 'hnm3u8': '红牛',
- '68zy_m3u8': '68',
- 'kdm3u8': '酷点',
- 'bdxm3u8': '北斗星',
- 'qhm3u8': '奇虎',
- 'hhm3u8': '豪华',
- 'mgtv': '芒果TV',
- 'YT4K-VIP': '影探4K',
- 'kbm3u8': '快播'
-
- };
- let episodes = /v1\\.vod/.test(HOST)?node.vod_play_list:node.vod_url_with_player;
- if (episodes != '') {
- let playMap = {};
- episodes.forEach(ep => {
- let from = [];
- if (/v1\\.vod/.test(HOST)) {
- from = ep.player_info.from||ep.player_info.show||ep.from||ep.show;
- } else {
- from = ep.code||ep.name;
- }
- if (!playMap.hasOwnProperty(from)) {
- playMap[from] = []
- }
- let parse_api = '';
- if (/v1\\.vod/.test(HOST)) {
- // parse_api = ep.player_info.parse != null ? ep.player_info.parse : ep.player_info.parse2;
- parse_api = /,/.test(parse_api) ? parse_api.split(',')[1] : parse_api;
- } else {
- parse_api = ep.parse_api;
- }
- log('parse_api =========> '+parse_api);
- if (parse_api != null && !/\\.m3u8|\\.mp4/.test(ep.url)) {
- parse_api = parse_api.replaceAll('..','.') ;
- ep.url = ep.url.replaceAll('$','$'+parse_api);
- }
- if (from != null) playMap[from].push(ep.url)
- });
- let playFrom = [];
- let playList = [];
- Object.keys(playMap).forEach(key => {
- playFrom.push(name[key] ? name[key] : key);
- playList.push(playMap[key])
- });
- VOD.vod_play_from = playFrom.join('$$$');
- VOD.vod_play_url = playList.join('$$$');
- } else {
- VOD.vod_play_from = node.vod_play_from;
- VOD.vod_play_url = node.vod_play_url;
- }
- } catch (e) {
- log("获取二级详情页发生错误:" + e.message);
- }
- `,
-
- 搜索:`js:
- let d = [];
- let jsondata = [];
- let videoList = [];
- if (/v1\\.vod/.test(HOST)) {
- input = (HOST + '/'+ input.split('/')[3]).replace('/search','').replace('text=','wd=').replace('pg=','page=');
- jsondata = JSON.parse(request(input));
- videoList = jsondata.data.list;
- } else {
- input = HOST + '/'+ input.split('/')[3]
- jsondata = JSON.parse(request(input));
- videoList = jsondata.list || jsondata.data;
- }
- // log('videoList =========> '+stringify(videoList));
- videoList.forEach(it => {
- d.push({
- url:it.vod_id,
- title:it.vod_name,
- img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
- desc:it.vod_remarks,
- });
- });
- setResult(d);
- `,
-}
\ No newline at end of file
diff --git a/drpy_js/影搜[搜].js b/drpy_js/影搜[搜].js
deleted file mode 100644
index 185244c..0000000
--- a/drpy_js/影搜[搜].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV4ejY4RCFGaq4VlpFoQSnyzNUfIDu2Zef+vEI2B5B40D7vJuOy4ITAzX8kSx0JpPvdeFBQO9CMPZ3jEMAAhe3fu4MOhuSMA1pQ+FB1CkVYPe8hs7P/KoKx8Y7lUI/B55pFz6Yn057QuaoKF28q+iJb3hPlFFMhlVGbn1C60pVX4x40oXAo1uJEifbtdFA66KYuy+KfyEW5oS+nrxaq9k/TsqPBVfbX6Xdu9iCoDFw4nNksoSIabVSSZ2wTRPw44lH3XpiFTq9mVdtXRhwKs8tLpIYKFSGqvqRa/zXmwNTfadG6+GRRv60VcgpbH4Y9ypCybIMvUjaSaquBbpG4ah5sHCBbH1+EA8zATT3FwN0C/oShqRGXWxI/p21cLU4BuBBSii6MTotx2NecysU0MfBOn5uJeEYIifLCCWHf0vdd5r/Je80EjqNZuaUQ0W2l2haQjOXZXhni5PGtHLg/1d6AIS8oz9sy3LguwOFQYZnP9/lY0CQjDnSMimltj1XMExczN7E8kWdNB+fB4jH6b1j2WOwZeJfBRPf9QGcaRZLnD7Llif9PIvXEwh4AKn+UWCEpUNcKa8czCrQctHYAk0lfbinecxmm58Y4Jue73cKpZZIziDZlghB7RXOc9y93N/lVODlxkYcj0zvf9YIG6gcHix3EB2rCFDe41vDZFjduAfqhhrubOAO29u1Q8QCI6O1qLcIdYzv+G+Y0a3n+QOFzPiRmjzjsY5w+Ki8+ncQ2Mk20EBgYlErWKXQLB17/zwYXzqJQhOEFcZYoN6yJjafvCgj4N+AZYxdWkcXBTaIp1XaCa3TuzSk/I/bBa4HCPoDde3v7yPFUzT/wEpk0JGdeiDFIQDs/6/j5QJawT0Q3jNMh2U14Y3PbAJ1HL/ti4HuSiMVsLbGKcmNBr8ARsA/uwulGZz4oZ5FwcYfNFP1UE86orrqlC7CVJ09qXXLEflubQVifEu8An/y0/OTzJk3c2UxuYxYn2uZDVl5WW2V888qdkDGPpRRgFOvYw7JilzS+ZwbwsvrxTsOTQQfe1pg5MFWGrRxsO3WZhbr1BxVZe/2Kb+tgQV2i3LI5pOsl6yJZTysjUsh5HHwk4fC7lkaX3Lhg+SVoJCLlQt1votK4Oycs/fbc0M0CXB5QkPbTH/yd1YIrStBCXOP4XSXUr9g4aNrsvobUSGzMymOcwgdqpAmp0gYJTy2+c2YGsh9A5Pwcw8y8jqXLVsneNki+H3ghugu6xSXNxHtvdnLGexoQQiIglrOy8GqnEbEmnrmVtvYw0eaDai5OV9yqcu8AF9ot/9JkQIbRhxdZsCk0uGpl2wjkeBLDtr/JO6hPTleR8ffAxUg8aCBZ6fbmK6MbMbGrw5TQDp/v9t3O+zCozoDUtaXx9KMxJ71s15mpD9zVXX3fl80ks5LJxk7SJ4BDZVDo2gMonhPq8chUFLzs+lXG4K34sjmlS4lI8vZxRGLKYOo/cv2w2svcuR+/YEViiDdgq61QjU5QLrFh1j8svKI38Pkt5Cf7Td2tRfFJp6GkeVPWGhXq7D73m5vpaJB3Rz5RBoP5P4xWEc/DeBIGbaasZcywYqH8SIcNU6NpAMaYEAM9D5YpBLHOfDmrXm5+AmA0MuJ+oE4w54h3NZYsBOoYP/bVj3Rm0pnb+uZUQdAVT0LCdXA/CmXwvLmLt4dXfOG7opqLPpEqJ4K4LtX3/s9wft
\ No newline at end of file
diff --git a/drpy_js/影梦影视.js b/drpy_js/影梦影视.js
deleted file mode 100644
index f32da02..0000000
--- a/drpy_js/影梦影视.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teG9uZTUu5LqM57qnLCB7CiAgICB0YWJzOiAnLm1vZHVsZS10YWItaXRlbS50YWItaXRlbScsCn0pOwp2YXIgcnVsZT17CiAgdGl0bGU6ICLlvbHmoqblvbHop4YiLAogIOaooeadvzogIm14b25lNSIsCiAgaG9zdDogImh0dHBzOi8vbS55aW5nbWVuZy5uZXQiLAogIHVybDogIi92b2RzaG93L2Z5ZmlsdGVyLmh0bWwiLAogIHNlYXJjaFVybDogIi92b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwiLAogIGZpbHRlcmFibGU6IDEsCiAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQSsxYldVOWJSeFQrTDM1T3BXc2JROGhiOW4zZlUrVWhxcEFhdFUybEpxMVVSWkZDTUdBMkd4Q3h3eElnWWpFa2VHRU4yTmo4R2MvYzYzL1JhOCtaYzg0WXgzSXFTRk4wWHlLKzc4dkJjODdNbWZudStQTFM1L2VkK1BHbDc1ZU92MzBuZktKN3FkeTFaSy9teGZTQTc1anYyWlBmT3ZhemZ6MzU5YytPYXRDek9xSkwrWDJ2am9IWXYxUXFUTmw5dmFDMGtoS2ZFbjFKVXRwUXNaTWpZaWRQeW5GVVpPZXdmQjBucFoxaUlxdXlxNXNVdjRXU2s4Nkt3bHNtMGVqc3ptSjVvc2lrQUgzVW14VTdQc0lHVHBMZG43RUxINW5FMGwzb05ZWWVhdUdWc01lNFJJT1hrWGVsWEI5SndTQkY5U1dOdklMc0YzWnZsZkp4L2R2Y2tNY1ZoVStqQ3E2ZFJtVHJUU09KTGxVelY4QUNNQ3NQR2dCejluV2NBbVk5U0tzQWM1NUJBNEJhVjc5OE02RTFCVkNiL3VqV1Vtc0ttQk9xTlFYTUZhZHpVTUNjSEIybmdMa1NkSndDNWxMUStTbGd6cXJXRk5CYStmMm9mTGNBR2dDTTZ4a3RqeS9yT0FWUVMyK0pYRXByQ21BTHBCYkZvQjRuQUl5TDlvalltbzVUQUhOUExaYUtzenAzQlRBdXZHZC8wdU1FWVBhVnJvc0NXaXZ0enJvZENSb0EwaGJ0NFI3VXFnQnoyQnQyVjRuT1FRR3MyY3g2YVdkWTEwd0IxRkpqTkE4QUtMOUJKektOK1ZVQnpYdE1UcTdodkZjQjVoY05zL1dpQUk1elljL3RJejFPQldnTnJsRWZBY0I2eHRhY1RFTFhVNEc2clE2Z1RydFBaY1ZnYmwrN2E3WnV1Nk5vdFB0OHNqeXVwd0VBbG5OeFhHNW5kRGtWb0JTeWNxZUlLVlFCbHF3WUZaTUZYVElGc0N6cmIwa0RnT1VjV0NVTkFNWWxGdVRVaW81VGdKYkVNc1VCd0hFV1A1TUdnTWFTNVdQSkduRkRXWkZiMUhFS1lGdzQ1bFpLUkhSM0VtWUx3NDZsN0w1eFdodUFhVXVjbFFON2JoanVpaHAvM1VKd01pbG42WFh0UWtDMjNrSWcwVmdJa3dWWDBCK25BSnNZMGdEZ1pLL05rd1lBSnlaUkVFTUprZ216cVdPeUFtektTUVBBbGhIVEZHQlR6akpSZ0JWVnBMdW9xQld3djZneXNWVk9iTlFXRmRsNlJTV1JGelZnQlZxQXEvN0krQ0R4UWM0SGlBOXczays4bi9NVzhSYmovZTNJKzlzNWY1ejQ0NXh2STc2Tjg2M0V0M0krUkh5STg1U3ZuK2ZycDN6OVBGOC81ZXZuK2ZvcFh6L1AxMC81Vm53Zm43cFVRbWFHNU15QzdDdXlxVFBabXFtckVmblVuUVRpSkRLbmdEbUZ6R2xnVGlOekJwZ3p5SndGNWl3eTU0QTVoOHg1WU00amN3R1lDOGhjQk9ZaU1wZUF1WVRNWldBdUkzTUZtQ3ZJWEFYbUtqTFhnTG1HekhWZ3JpTnpBNWdieU53RTVpWXl0NEM1aGN4dFlHNGpjd2VZTzhqY0JlWXVNdmVBdVlmTWZXRHVJL01BbUFmSVBBVG1JVEtQZ0htRWpQV0Q3Z3B6NmFqbWxkRlJrWXZSMHFsaHphVlRLN3JVaTZkdUdOcWJYRTVteHd6OTU2Y3ZudE9XbWdtTFNJK2hQLy9wOXo4Nkt1TjZmTXdYT1BEbk5Hb3VkM012NVpKa1RsaWZxa09lU2RTcTZzeGxFblY5NWVna25uWUp1WktzblA0b2hXakRVYWMwazJqUFVXYUNTZXdYYm40VzgzR1MyRTVvbkphVm5mUHducEFhUGdYRjVwMDVkUHNLTlBOVVV1NHFpTzAzK2h4VW9CbTMzK2hwelRYYzdyTUl1ZThLYU1ydDkwektCT2FnQU1hOTczS3lla2tCb0tlWlpUR0NOa3dCY3RGWmtkYnVHMEF6VDBIMllKUnlBTkRNazV6OWFWcjJhNDhEb0tHalAwU0gzZFB0Q2xqT0ttakd1ZjViOTkzSUtUZDI1bDkyd3cyZGVUenJtbGZ4L29NT1JldzUyU2Fjck9kSWo1WWpSZDZpZkMyZXIwWDVXanhmaS9LeWVGNFc1V1h4dkN6S3kvM1JjOEkrendrZlJTY2NQSEFuekc3Y2xSUHVYNUs3bjNRejdYTzhoa29iQ0poYlEyV1cySFhSc2F5cHN1OURETFBhZHBobXRaU2JKN01Eb0JrRDFkZ2dmdmxxV2tiZXliaSsyZ1NBMnZDMHZZSUdXQUhVT2dkY0s2MDFCZkJvYlhDdDI4am9OVExjN3VTSzdXMDZraXNBdGRrUFloS1Bhd1h3ODZabTNBV3RQMDhCaklzdTBaVTJBS3haZzZ0M094OFQzWG9zQUw3T08zMFRzNnJXdEU1UEFWWk8xL05RT1N2QTdCU3RLZURaUDgvK2VmYlBzSCtVcjhYejlXeWh6N09Gbmkyc3RZVXRCMjRMMmRzV1ZWdG81M2VkUG4xQUJ0aUxLZFhUelZUWit4M1Y4ODFRZzdRdHFGUFRWTDl3aHhrODFEdE11YjB0STdxdUFMRHk0VlVSbTdPVCttUWxUSWRkNVd0M0p6Sk5mc0NnOEZPNnVtVjRSbitLQW5qY2pzM0lEVFNmQ3VBSU9nZkZsQzRRQUN4U28vZFRpdEh5blA0OEFEaVdRbHB1ZGhwdkZoaFVNNFpTRkZhZEpINVpyZ0RscytuK2I4eW5DcG94aGs1Nno4bEdkSzRLVUkrc2laUisxd0VBL3M1NHJ4akU5MllVb0xoUnloSUF4bzFQbEhieG5Sb0ZjQ3liWVNldHJ4d0IvRmRHdE5xRDVPSXF3SHd3SXovRmJ6anJtczJ2U3NFem9wNFI5WXlvL3RFem9qN1BpSHBHdE1IOVpPamdMeWlwamNxOVF4VnZsQjJocjk5YVNMV1g5NXl0ZnJHelVjclBhWlZhMDQ1bVhkNDltTWovdGZDdjJZZWN3b29kS2JqZVFhdTBEWWlGZGRrNUlGL25uYmxPcmRMbVVVNThGTXNUOW1MZS9SZlVFRzA1NnV0ckp6d2lON1FmQ2pHVFcvMVN2SlFmcCt2RlVEMnIrLzJjTk43TzVlMWNSM0xuYWovNG5ZdjJDR2RyM1I3V2ZyS0ZkZ2M3azJZOCsvdU13Z2pqMlI5bnhETk9KaWU2OFRHZE90WFpuQ3psTkI4S2ZkZWJ5R0hiVlcrVDhqYXBvN2hKdGV5LzZQdi9OclhYcEY2VEhzVW1iYlVPdFVucGdpSEFMeGk4RTlscmRxL1p2M0d6di9vSFd5SVNBa1ErQUFBPSIsCiAgZmlsdGVyX3VybDogInt7Zmwu5YWo6YOo57G75Z6LfX0te3tmbC7lhajpg6jlnLDljLp9fS17e2ZsLuaXtumXtOaOkuW6j319LXt7Zmwu5YWo6YOo5Ymn5oOFfX0te3tmbC7lhajpg6jor63oqIB9fS17e2ZsLuWtl+avjeafpeaJvn19LS0tZnlwYWdlLS0te3tmbC7lhajpg6jml7bpl7R9fSIsCiAgZmlsdGVyX2RlZjogewogICAgMTogewogICAgICDlhajpg6jnsbvlnos6ICIxIgogICAgfSwKICAgIDI6IHsKICAgICAg5YWo6YOo57G75Z6LOiAiMiIKICAgIH0sCiAgICAzOiB7CiAgICAgIOWFqOmDqOexu+WeizogIjMiCiAgICB9LAogICAgNDogewogICAgICDlhajpg6jnsbvlnos6ICI0IgogICAgfSwKICAgIDM1OiB7CiAgICAgIOWFqOmDqOexu+WeizogIjM1IgogICAgfSwKICAgIDM5OiB7CiAgICAgIOWFqOmDqOexu+WeizogIjM5IgogICAgfSwKICAgIDQ0OiB7CiAgICAgIOWFqOmDqOexu+WeizogIjQ0IgogICAgfSwKICAgIDYwOiB7CiAgICAgIOWFqOmDqOexu+WeizogIjYwIgogICAgfQogIH0sCiAgY2xhc3NfcGFyc2U6ICIubmF2LW1lbnUtaXRlbXMgbGk7YSYmVGV4dDthJiZocmVmOyhcXGQrKSIsCiAgY2F0ZV9leGNsdWRlOiAi5paw6Ze76LWE6K6vIiwKfQ==
\ No newline at end of file
diff --git a/drpy_js/影渣渣影视.js b/drpy_js/影渣渣影视.js
deleted file mode 100644
index d31224b..0000000
--- a/drpy_js/影渣渣影视.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/ASdotKRYPNu8cLtwdABO3MDeyNp8SITwKEVrcmMRsD6s0DQiKXK91uXHy81Bhzh8xPZzDl/A9cOXQrBxH+Qn2Zl2eNL3Ogzx+kAqZMq7TDGW7Ndfho+4VAcQyAx6N07mIfmizz7IZzZqSt6Cx0eK4iX8zACXotUbdPgmNmpqcEFsKxgnLPzAAFKyrF8s8iW1Y+SAb77SL5lVdkxQFRRbpZobi0QgxAJRsfjnOloG2s7rQUwFTbtUi5TqwCI/kChaKfGJKn0pBPJGIBEzPGalCwM7VPz+q2F2fR3SkJvL0M1jx5yVlBgX8NeH6df9rX6BCIrQPrakywgjkFVGfQhI93tcFppoKmbTSs+mi9fTxYFa1Y/5naZeR83cm1Fm6n68jEnBxE+2MYDEGFBV+1FXXUJytpazZTkfd0S5wMFUwa0wrMBT7yOfDoCRGA+i+3zdbxJaxDc2caEb1xhTMKHQ4M=
\ No newline at end of file
diff --git a/drpy_js/影视大全.js b/drpy_js/影视大全.js
deleted file mode 100644
index a01d771..0000000
--- a/drpy_js/影视大全.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/3VTTWvbQBC991eIFGRbWJITCKUSpaTQQ6Glh9Zns9aOrG1XWmV3ZVsNhl7SSz/IDyg9lIJzDfRQUvpv6jg/o7vSKpadZiUQ++bN88yb8RRxixcUrEfWyT1LnfXF79W3j4HVWf25uF5+6PQrVBJJ4QZc/ViuTs9NKGFCqkgiZS4C35/NZp7AgsvSi1hqOAWniuKTDMPcy5PcnzLsi4TNfIL9uIwoEsLP0QTURX+8RKbU5ApAPEqG/1WoQu1Ef4Z9x7mdjsa6/IMaOi5I9PZVhQfWoMZiQiXwmrbfhtSvdtr3Ud3LNoYhDqyThTEEEAYuAmOoPp2hAO4eTSCTHZX84uWTZ8+fjoZHRmXRmJwCK5SZh4OBKatyZpQjLrT7XoamLiVC2jYlAZXdB70Q2fZrmEv9TTjEoef4Xc953Gt7ECEJI5hHtMCwqT2nqGykJS+gRil6VwbW3hsRkCwvpN4Lw9nv13Os8L6lGEpqsVenYVZU3m2Err6cX38+U5yCelrUpQzhm+pD9Tr1Y8r5++v9+nJ5J1/1Vy1hSNKJbWMkkcs4mZAM0dATUnW4bUSjevmpUt3MolnlSgdRGXoSTYTrUjQGWmuYXH0Uq+EKHrUCGESkRwI5EUxdtgRCr1TrtQNFrMgkL3fQHHjMeAq7bEw4RJLxuwqLWCbVOukSRJGmSAkr6BZNorEwm1Ntj76rtlsM7bDY6kQjARx37xPc23DNkl6dfV3//F6Pqf5vbWaUHJrqHd0tdUXqPrTtXGu5B70mpvQW/wC2eMEOdwQAAA==
\ No newline at end of file
diff --git a/drpy_js/影视工厂.js b/drpy_js/影视工厂.js
deleted file mode 100644
index ed3cb51..0000000
--- a/drpy_js/影视工厂.js
+++ /dev/null
@@ -1 +0,0 @@
-bXViYW4u6aaW5Zu+LuS6jOe6py5kZXNjID0gJzs7Oy5teXVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDQpJiZUZXh0Oy5teXVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDIpJiZUZXh0JzsKbXViYW4u6aaW5Zu+LuS6jOe6py5jb250ZW50ID0gJy50ZXh0LWNvbGxhcHNlIHAmJlRleHQnOwp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAn5b2x6KeG5bel5Y6CJywKICAgIOaooeadvzogJ+mmluWbvicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cueXNnYzMuY2MnLAogICAgdXJsOiAnL3ZvZHNob3cvZnljbGFzc2Z5ZmlsdGVyLmh0bWwnLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1BDX1VBJwogICAgfSwKICAgIGZpbHRlcl91cmw6ICcte3tmbC5hcmVhfX0te3tmbC5ieX19LXt7ZmwuY2xhc3N9fS0tLS0tZnlwYWdlLS0te3tmbC55ZWFyfX0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyWVcwL2JTQlRIdjR1ZmVSaUgzci9LcWcvWkt0Sld2YXdFM1pWUWhWVElwU0dGSkZTVVFCTklLd2lCbGhCVFVBaE9rM3daejloOGl6cWVPUmRwSzh0dDBWWnE4NWJmK1h2T3pIOHlQc2YyYzh1Mjd2M3gzSHFVV2JEdVdROGVwK2ZuclJucmFmcEpKa1M1MGxiWmZNai9waC8vazRtdWV6b0o1dyt2c29lVGNBalc0b3lKbGc2OVljTkVEYUMyMlFoemdhWUJOTDk0YWlZaFFLMjlMaThIb0drQVRTMVYxWXROb3hsQWJmblkzMXdIVFFOcTJaSmFmZ3VhQnB5djFQV0hIMkErRGVnQk40TUFjeGEzUEhjRmNtcGcrK0p2REdoZkpvQmE2eVg1TTRBNU93ZmU2QjNrMUlEakt2dkJIcTVGQTJxRjExZmJSNkJwUUsxY2tKVlBvR21nK1ZhRDRpN09Gd0dPTytsSnR3UGpOT0NlRGRmOUFmenZCaGJ2VDFSOXB0SnptVFE3VWcxSHJycEpqMVFoSDE2UFZpSUE3ZXBnVy9XN1JqTkEyK09veXhGdVR3Um9zOVpTaldPd3FRRnpObzlrZlFnNU5lQzRNNGMwQTdnRm96SnBCbkF0YTQ1MEQyQXRHaWpuRzU3ekRSOFh2RG9selFCbzNqam5EMnRxRSt3VDQ2eWpDeHB0QURPM3huNmw0NjlzUTNKa1hGZXVJdmZic2dpbmlCaXZHSjNwaU9maXJjUkRPTmZhaGN6RFAyaUFINDZGVEhxT0hZN0xjMjh3VEhnNFVpSjF3OFNpbnl3K1MvRlpIazlSUE1Yak5zVnRIaGNVRnl4dTM4VjQrSlBGNzFEOERvL2Zwdmh0SHI5RjhWczhmcFBpTjNtYy9OcmNyMDErYmU3WEpyODI5MnVUWDV2N3RjbXZ6ZjBLOGl1NFgwRitCZmNyeUsvZ2ZnWDVGZHl2SUwrQyt4WGtWM0MvZ3Z3SzdsZVFYOEg5Q3ZJcnVGOUJmc09mL0ZqK3VVQ0hVcFZmUzdmeW4wT3BhcjJyMnJsSjhPeGhlQ25lbmE2cm5BMmovUFh3MlR6ZERkMmNMQmFNTXYvZzc3bk1aTmI3TTFicW1ucHdYQytONnhuZjJ5L2plbkJjdi9UTGpqZllnM1Zxd0NLY0hjcitNaFJoRFpoenFTZXpGY2lwSVlrSFdXaW9IZEFNSk9tSlFlZEFyc0x6Z0lFa1BmRjcrM3JjODA3Y3MwbmdySVZQSGJCT0RUanVhQnowU2pCT0EzbjRLQWNYNkNFQ0hOZmFEYm83TUU0RDYvbjBQR2RnMnZNVDlmeTR6dnpWNTRGcHQvekZ1K1dQZGNXZjJMVm1yNmxycWVxdWY0eVZXd1BlWm8xbXVESy8vUUx1TkdSYzN0S3FiTGhRK3pUZzZJKzdxb1JETmVDTmVQUldMYjJDRzFFRDlieTh5ald4NTBWQXhTU3YrbjBzSmhIZ2ZCdE5kWTcxV3dNV21scFg1cytnMEdqQW5QMitLa0pmTTRBNTNRL3lCTjdMRE9DNHJiTGF3blZxd0gwNUdRZE9FZlpGQTJxNVUxblpvMTBsL2grcWVGaTF3L3FNWmlOZ2xUcXN3VlNwSjREYWNUdXNzNkJwbUZiSFg3MDZUdDhsdnJFcTM3aXVxaHhUQTJPZlU3T2Q0RDNXWEEyWXMzem9WMkhSQnBKMGdiaHZXa0YxSnlqRHR6Y0RtUFBkZTFtSFozUURtRFBtZTZWcXVQUThiUURuRzFmRHEyRStEVGd1N2p1Z0UyNFQvTWtHdU5ZNlkxcUxlb08vUC9JK3cvdVhBWHAzYWNwaUhkOWRJcUNqODBsMnFrWXpnRG5ySmJVTlBkTUE3Y3VwSE5kd1h5SkFMZC96QnZDK1orQzZPa1o5NkxuNGlWaERrdWYzcjNhRmhNdWRkb3hweC9qdE84YmlGeUhVOUFvREdnQUEnLAp9
\ No newline at end of file
diff --git a/drpy_js/影视工场.js b/drpy_js/影视工场.js
deleted file mode 100644
index bf28ec7..0000000
--- a/drpy_js/影视工场.js
+++ /dev/null
@@ -1 +0,0 @@
-bXViYW4u6aaW5Zu+LuS6jOe6py5kZXNjID0gJzs7Oy5teXVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDQpJiZUZXh0Oy5teXVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDIpJiZUZXh0JzsKbXViYW4u6aaW5Zu+LuS6jOe6py5jb250ZW50ID0gJy50ZXh0LWNvbGxhcHNlIHAmJlRleHQnOwp2YXIgcnVsZSA9IHsKCXRpdGxlOiflvbHop4blt6XlnLonLAoJ5qih5p2/Oifpppblm74nLAoJaG9zdDonaHR0cHM6Ly93d3cueXNnYy5mdW4nLAoJdXJsOicvdm9kc2hvdy9meWNsYXNzZnlmaWx0ZXIuaHRtbCcsCglmaWx0ZXJhYmxlOjEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCglmaWx0ZXJfdXJsOicte3tmbC5hcmVhfX0te3tmbC5ieSBvciAidGltZSJ9fS17e2ZsLmNsYXNzfX0tLS0tLWZ5cGFnZS0tLXt7ZmwueWVhcn19JywKCWZpbHRlcjogewoJCSIxIjpbeyJrZXkiOiJjbGFzcyIsIm5hbWUiOiLliafmg4UiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLliqjkvZwiLCJ2Ijoi5Yqo5L2cIn0seyJuIjoi5Zac5YmnIiwidiI6IuWWnOWJpyJ9LHsibiI6IueIseaDhSIsInYiOiLniLHmg4UifSx7Im4iOiLnp5HlubsiLCJ2Ijoi56eR5bm7In0seyJuIjoi5oGQ5oCWIiwidiI6IuaBkOaAliJ9LHsibiI6IuaCrOeWkSIsInYiOiLmgqznlpEifSx7Im4iOiLmg4rmgpoiLCJ2Ijoi5oOK5oKaIn0seyJuIjoi54qv572qIiwidiI6IueKr+e9qiJ9LHsibiI6IuWJp+aDhSIsInYiOiLliafmg4UifSx7Im4iOiLmiJjkuokiLCJ2Ijoi5oiY5LqJIn0seyJuIjoi5Yqo55S7IiwidiI6IuWKqOeUuyJ9LHsibiI6IuWlh+W5uyIsInYiOiLlpYflubsifSx7Im4iOiLmrabkvqAiLCJ2Ijoi5q2m5L6gIn0seyJuIjoi5Y+k6KOFIiwidiI6IuWPpOijhSJ9LHsibiI6IuWGkumZqSIsInYiOiLlhpLpmakifSx7Im4iOiLljoblj7IiLCJ2Ijoi5Y6G5Y+yIn0seyJuIjoi5q2M6IieIiwidiI6IuatjOiIniJ9LHsibiI6IuWutuW6rSIsInYiOiLlrrbluq0ifSx7Im4iOiLnvZHnu5wiLCJ2Ijoi572R57ucIn1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi5YaF5ZywIiwidiI6IuWGheWcsCJ9LHsibiI6Iummmea4ryIsInYiOiLpppnmuK8ifSx7Im4iOiLlj7Dmub4iLCJ2Ijoi5Y+w5rm+In0seyJuIjoi5pel5pysIiwidiI6IuaXpeacrCJ9LHsibiI6IumfqeWbvSIsInYiOiLpn6nlm70ifSx7Im4iOiLms7Dlm70iLCJ2Ijoi5rOw5Zu9In0seyJuIjoi576O5Zu9IiwidiI6Iue+juWbvSJ9LHsibiI6IuWNsOW6piIsInYiOiLljbDluqYifSx7Im4iOiLms5Xlm70iLCJ2Ijoi5rOV5Zu9In0seyJuIjoi6Iux5Zu9IiwidiI6IuiLseWbvSJ9LHsibiI6IuS/hOe9l+aWryIsInYiOiLkv4TnvZfmlq8ifSx7Im4iOiLlvrflm70iLCJ2Ijoi5b635Zu9In0seyJuIjoi6KW/54+t54mZIiwidiI6Iuilv+ePreeJmSJ9LHsibiI6IuaEj+Wkp+WIqSIsInYiOiLmhI/lpKfliKkifSx7Im4iOiLmvrPlpKfliKnkupoiLCJ2Ijoi5r6z5aSn5Yip5LqaIn0seyJuIjoi6I235YWwIiwidiI6IuiNt+WFsCJ9XX0seyJrZXkiOiJ5ZWFyIiwibmFtZSI6IuW5tOS7vSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IjIwMjQiLCJ2IjoiMjAyNCJ9LHsibiI6IjIwMjMiLCJ2IjoiMjAyMyJ9LHsibiI6IjIwMjIiLCJ2IjoiMjAyMiJ9LHsibiI6IjIwMjEiLCJ2IjoiMjAyMSJ9LHsibiI6IjIwMjAiLCJ2IjoiMjAyMCJ9LHsibiI6IjIwMTkiLCJ2IjoiMjAxOSJ9LHsibiI6IjIwMTgiLCJ2IjoiMjAxOCJ9LHsibiI6IjIwMTciLCJ2IjoiMjAxNyJ9LHsibiI6IjIwMTYiLCJ2IjoiMjAxNiJ9LHsibiI6IjIwMTUiLCJ2IjoiMjAxNSJ9LHsibiI6IjIwMTQiLCJ2IjoiMjAxNCJ9LHsibiI6IjIwMTMiLCJ2IjoiMjAxMyJ9LHsibiI6IjIwMTIiLCJ2IjoiMjAxMiJ9LHsibiI6IjIwMTEiLCJ2IjoiMjAxMSJ9LHsibiI6IjIwMTAiLCJ2IjoiMjAxMCJ9LHsibiI6IjIwMDkiLCJ2IjoiMjAwOSJ9LHsibiI6IjIwMDgiLCJ2IjoiMjAwOCJ9LHsibiI6IjIwMDciLCJ2IjoiMjAwNyJ9LHsibiI6IjIwMDYiLCJ2IjoiMjAwNiJ9LHsibiI6IjIwMDUiLCJ2IjoiMjAwNSJ9LHsibiI6IjIwMDQiLCJ2IjoiMjAwNCJ9LHsibiI6IjIwMDMiLCJ2IjoiMjAwMyJ9LHsibiI6IjIwMDIiLCJ2IjoiMjAwMiJ9LHsibiI6IjIwMDEiLCJ2IjoiMjAwMSJ9LHsibiI6IjIwMDAiLCJ2IjoiMjAwMCJ9XX0seyJrZXkiOiJieSIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtCIsInYiOiJ0aW1lIn0seyJuIjoi5Lq65rCUIiwidiI6ImhpdHMifSx7Im4iOiLor4TliIYiLCJ2Ijoic2NvcmUifV19XSwKCQkiMiI6W3sia2V5IjoiY2xhc3MiLCJuYW1lIjoi5Ymn5oOFIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi54ix5oOFIiwidiI6IueIseaDhSJ9LHsibiI6IuWPpOijhSIsInYiOiLlj6Too4UifSx7Im4iOiLmgqznlpEiLCJ2Ijoi5oKs55aRIn0seyJuIjoi5oOK5oKaIiwidiI6IuaDiuaCmiJ9LHsibiI6IuaBkOaAliIsInYiOiLmgZDmgJYifSx7Im4iOiLliafmg4UiLCJ2Ijoi5Ymn5oOFIn0seyJuIjoi546w5LujIiwidiI6IueOsOS7oyJ9LHsibiI6IumDveW4giIsInYiOiLpg73luIIifSx7Im4iOiLlgbblg48iLCJ2Ijoi5YG25YOPIn0seyJuIjoi5oKs55aRIiwidiI6IuaCrOeWkSJ9LHsibiI6IuWGnOadkSIsInYiOiLlhpzmnZEifSx7Im4iOiLljoblj7IiLCJ2Ijoi5Y6G5Y+yIn0seyJuIjoi6K2m5YyqIiwidiI6IuitpuWMqiJ9LHsibiI6IuWutuW6rSIsInYiOiLlrrbluq0ifSx7Im4iOiLlpYflubsiLCJ2Ijoi5aWH5bm7In0seyJuIjoi5q2m5L6gIiwidiI6IuatpuS+oCJ9LHsibiI6IuenkeW5uyIsInYiOiLnp5HlubsifSx7Im4iOiLniq/nvaoiLCJ2Ijoi54qv572qIn0seyJuIjoi6LCN5oiYIiwidiI6IuiwjeaImCJ9LHsibiI6Iuepv+i2iiIsInYiOiLnqb/otooifSx7Im4iOiLlrqvlu7ciLCJ2Ijoi5a6r5bu3In0seyJuIjoi56We6K+dIiwidiI6IuelnuivnSJ9LHsibiI6Iue9keWJpyIsInYiOiLnvZHliacifV19LHsia2V5IjoiYXJlYSIsIm5hbWUiOiLlnLDljLoiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLlhoXlnLAiLCJ2Ijoi5YaF5ZywIn0seyJuIjoi6aaZ5rivIiwidiI6Iummmea4ryJ9LHsibiI6IuWPsOa5viIsInYiOiLlj7Dmub4ifSx7Im4iOiLml6XmnKwiLCJ2Ijoi5pel5pysIn0seyJuIjoi6Z+p5Zu9IiwidiI6IumfqeWbvSJ9LHsibiI6IuazsOWbvSIsInYiOiLms7Dlm70ifSx7Im4iOiLnvo7lm70iLCJ2Ijoi576O5Zu9In0seyJuIjoi5Y2w5bqmIiwidiI6IuWNsOW6piJ9LHsibiI6IuW+t+WbvSIsInYiOiLlvrflm70ifSx7Im4iOiLms5Xlm70iLCJ2Ijoi5rOV5Zu9In1dfSx7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiMjAyNCIsInYiOiIyMDI0In0seyJuIjoiMjAyMyIsInYiOiIyMDIzIn0seyJuIjoiMjAyMiIsInYiOiIyMDIyIn0seyJuIjoiMjAyMSIsInYiOiIyMDIxIn0seyJuIjoiMjAyMCIsInYiOiIyMDIwIn0seyJuIjoiMjAxOSIsInYiOiIyMDE5In0seyJuIjoiMjAxOCIsInYiOiIyMDE4In0seyJuIjoiMjAxNyIsInYiOiIyMDE3In0seyJuIjoiMjAxNiIsInYiOiIyMDE2In0seyJuIjoiMjAxNSIsInYiOiIyMDE1In0seyJuIjoiMjAxNCIsInYiOiIyMDE0In0seyJuIjoiMjAxMyIsInYiOiIyMDEzIn0seyJuIjoiMjAxMiIsInYiOiIyMDEyIn0seyJuIjoiMjAxMSIsInYiOiIyMDExIn0seyJuIjoiMjAxMCIsInYiOiIyMDEwIn0seyJuIjoiMjAwOSIsInYiOiIyMDA5In0seyJuIjoiMjAwOCIsInYiOiIyMDA4In0seyJuIjoiMjAwNiIsInYiOiIyMDA2In0seyJuIjoiMjAwNSIsInYiOiIyMDA1In0seyJuIjoiMjAwNCIsInYiOiIyMDA0In1dfSx7ImtleSI6ImJ5IiwibmFtZSI6IuaOkuW6jyIsInZhbHVlIjpbeyJuIjoi5pe26Ze0IiwidiI6InRpbWUifSx7Im4iOiLkurrmsJQiLCJ2IjoiaGl0cyJ9LHsibiI6IuivhOWIhiIsInYiOiJzY29yZSJ9XX1dLAoJCSIzIjpbeyJrZXkiOiJjbGFzcyIsIm5hbWUiOiLliafmg4UiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLmkJ7nrJEiLCJ2Ijoi5pCe56yRIn0seyJuIjoi55yf5Lq656eAIiwidiI6Iuecn+S6uuengCJ9LHsibiI6IuiBjOWcuiIsInYiOiLogYzlnLoifSx7Im4iOiLnq57mioAiLCJ2Ijoi56ue5oqAIn0seyJuIjoi5ama5oGLIiwidiI6IuWpmuaBiyJ9LHsibiI6IuaDheaEnyIsInYiOiLmg4XmhJ8ifSx7Im4iOiLml4XmuLgiLCJ2Ijoi5peF5ri4In0seyJuIjoi55Sf5rS7IiwidiI6IueUn+a0uyJ9LHsibiI6IumXr+WFsyIsInYiOiLpl6/lhbMifSx7Im4iOiLmuLjmiI8iLCJ2Ijoi5ri45oiPIn0seyJuIjoi57qq5a6eIiwidiI6Iue6quWuniJ9LHsibiI6IuaYjuaYnyIsInYiOiLmmI7mmJ8ifSx7Im4iOiLorr/osIgiLCJ2Ijoi6K6/6LCIIn0seyJuIjoi6ISx5Y+j56eAIiwidiI6IuiEseWPo+engCJ9XX0seyJrZXkiOiJhcmVhIiwibmFtZSI6IuWcsOWMuiIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuWGheWcsCIsInYiOiLlhoXlnLAifSx7Im4iOiLmuK/lj7AiLCJ2Ijoi5riv5Y+wIn0seyJuIjoi5pel6Z+pIiwidiI6IuaXpemfqSJ9LHsibiI6Iuasp+e+jiIsInYiOiLmrKfnvo4ifV19LHsia2V5IjoieWVhciIsIm5hbWUiOiLlubTku70iLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiIyMDI0IiwidiI6IjIwMjQifSx7Im4iOiIyMDIzIiwidiI6IjIwMjMifSx7Im4iOiIyMDIyIiwidiI6IjIwMjIifSx7Im4iOiIyMDIxIiwidiI6IjIwMjEifSx7Im4iOiIyMDIwIiwidiI6IjIwMjAifSx7Im4iOiIyMDE5IiwidiI6IjIwMTkifSx7Im4iOiIyMDE4IiwidiI6IjIwMTgifSx7Im4iOiIyMDE3IiwidiI6IjIwMTcifSx7Im4iOiIyMDE2IiwidiI6IjIwMTYifSx7Im4iOiIyMDE1IiwidiI6IjIwMTUifSx7Im4iOiIyMDE0IiwidiI6IjIwMTQifSx7Im4iOiIyMDEzIiwidiI6IjIwMTMifSx7Im4iOiIyMDEyIiwidiI6IjIwMTIifSx7Im4iOiIyMDExIiwidiI6IjIwMTEifSx7Im4iOiIyMDEwIiwidiI6IjIwMTAifSx7Im4iOiIyMDA5IiwidiI6IjIwMDkifSx7Im4iOiIyMDA4IiwidiI6IjIwMDgifSx7Im4iOiIyMDA3IiwidiI6IjIwMDcifSx7Im4iOiIyMDA2IiwidiI6IjIwMDYifSx7Im4iOiIyMDA1IiwidiI6IjIwMDUifSx7Im4iOiIyMDA0IiwidiI6IjIwMDQifSx7Im4iOiIyMDAzIiwidiI6IjIwMDMifSx7Im4iOiIyMDAyIiwidiI6IjIwMDIifSx7Im4iOiIyMDAxIiwidiI6IjIwMDEifSx7Im4iOiIyMDAwIiwidiI6IjIwMDAifV19LHsia2V5IjoiYnkiLCJuYW1lIjoi5o6S5bqPIiwidmFsdWUiOlt7Im4iOiLml7bpl7QiLCJ2IjoidGltZSJ9LHsibiI6IuS6uuawlCIsInYiOiJoaXRzIn0seyJuIjoi6K+E5YiGIiwidiI6InNjb3JlIn1dfV0sCgkJIjQiOlt7ImtleSI6ImNsYXNzIiwibmFtZSI6IuWJp+aDhSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuaDheaEnyIsInYiOiLmg4XmhJ8ifSx7Im4iOiLnp5HlubsiLCJ2Ijoi56eR5bm7In0seyJuIjoi54Ot6KGAIiwidiI6IueDreihgCJ9LHsibiI6IuaOqOeQhiIsInYiOiLmjqjnkIYifSx7Im4iOiLmkJ7nrJEiLCJ2Ijoi5pCe56yRIn0seyJuIjoi5YaS6ZmpIiwidiI6IuWGkumZqSJ9LHsibiI6IuiQneiOiSIsInYiOiLokJ3ojokifSx7Im4iOiLmoKHlm60iLCJ2Ijoi5qCh5ZutIn0seyJuIjoi5Yqo5L2cIiwidiI6IuWKqOS9nCJ9LHsibiI6IuacuuaImCIsInYiOiLmnLrmiJgifSx7Im4iOiLov5DliqgiLCJ2Ijoi6L+Q5YqoIn0seyJuIjoi5oiY5LqJIiwidiI6IuaImOS6iSJ9LHsibiI6IuWwkeW5tCIsInYiOiLlsJHlubQifSx7Im4iOiLlsJHlpbMiLCJ2Ijoi5bCR5aWzIn0seyJuIjoi56S+5LyaIiwidiI6IuekvuS8miJ9LHsibiI6IuWOn+WImyIsInYiOiLljp/liJsifSx7Im4iOiLkurLlrZAiLCJ2Ijoi5Lqy5a2QIn0seyJuIjoi55uK5pm6IiwidiI6IuebiuaZuiJ9LHsibiI6IuWKseW/lyIsInYiOiLlirHlv5cifSx7Im4iOiLlhbbku5YiLCJ2Ijoi5YW25LuWIn1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi5Zu95LqnIiwidiI6IuWbveS6pyJ9LHsibiI6IuaXpeacrCIsInYiOiLml6XmnKwifSx7Im4iOiLmrKfnvo4iLCJ2Ijoi5qyn576OIn0seyJuIjoi5YW25LuWIiwidiI6IuWFtuS7liJ9XX0seyJrZXkiOiJ5ZWFyIiwibmFtZSI6IuW5tOS7vSIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IjIwMjQiLCJ2IjoiMjAyNCJ9LHsibiI6IjIwMjMiLCJ2IjoiMjAyMyJ9LHsibiI6IjIwMjIiLCJ2IjoiMjAyMiJ9LHsibiI6IjIwMjEiLCJ2IjoiMjAyMSJ9LHsibiI6IjIwMjAiLCJ2IjoiMjAyMCJ9LHsibiI6IjIwMTkiLCJ2IjoiMjAxOSJ9LHsibiI6IjIwMTgiLCJ2IjoiMjAxOCJ9LHsibiI6IjIwMTciLCJ2IjoiMjAxNyJ9LHsibiI6IjIwMTYiLCJ2IjoiMjAxNiJ9LHsibiI6IjIwMTUiLCJ2IjoiMjAxNSJ9LHsibiI6IjIwMTQiLCJ2IjoiMjAxNCJ9LHsibiI6IjIwMTMiLCJ2IjoiMjAxMyJ9LHsibiI6IjIwMTIiLCJ2IjoiMjAxMiJ9LHsibiI6IjIwMTEiLCJ2IjoiMjAxMSJ9LHsibiI6IjIwMTAiLCJ2IjoiMjAxMCJ9LHsibiI6IjIwMDkiLCJ2IjoiMjAwOSJ9LHsibiI6IjIwMDgiLCJ2IjoiMjAwOCJ9LHsibiI6IjIwMDciLCJ2IjoiMjAwNyJ9LHsibiI6IjIwMDYiLCJ2IjoiMjAwNiJ9LHsibiI6IjIwMDUiLCJ2IjoiMjAwNSJ9LHsibiI6IjIwMDQiLCJ2IjoiMjAwNCJ9LHsibiI6IjIwMDMiLCJ2IjoiMjAwMyJ9LHsibiI6IjIwMDIiLCJ2IjoiMjAwMiJ9LHsibiI6IjIwMDEiLCJ2IjoiMjAwMSJ9LHsibiI6IjIwMDAiLCJ2IjoiMjAwMCJ9XX0seyJrZXkiOiJieSIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtCIsInYiOiJ0aW1lIn0seyJuIjoi5Lq65rCUIiwidiI6ImhpdHMifSx7Im4iOiLor4TliIYiLCJ2Ijoic2NvcmUifV19XQoJfSwKCXNlYXJjaFVybDogJy9pbmRleC5waHAvcnNzL2luZGV4LnhtbD93ZD0qKicsCgljbGFzc19wYXJzZTogJy5uYXYtbGlzdCBsaTpndCgwKTpsdCg4KTthJiZUZXh0O2EmJmhyZWY7LyhcXGQrKS5odG1sJywKCWNhdGVfZXhjbHVkZTon5bCR5YS/JywKICAgIHRhYl9yZW1vdmU6WydMR+a6kCcsJ0xa5rqQJ10sCgnmkJzntKI6YGpzOgoJCXBkZmggPSBqc3AucGRmaCwgcGRmYSA9IGpzcC5wZGZhLCBwZCA9IGpzcC5wZDsKCQlsZXQgZCA9IFtdOwoJCXZhciBodG1sID0gcmVxdWVzdChpbnB1dCk7CgkJbGV0IGxpc3QgPSBwZGZhKGh0bWwsICJyc3MmJml0ZW0iKTsKCQlmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHsKCQkJdmFyIHRpdGxlID0gbGlzdFtpXS5tYXRjaCgvXFw8dGl0bGVcXD4oLio/KVxcPFxcL3RpdGxlXFw+LylbMV07CgkJCXZhciBkZXNjID0gcGRmaChsaXN0W2ldLCAnZGVzY3JpcHRpb24mJlRleHQnKTsKCQkJdmFyIGNvbnQgPSBwZGZoKGxpc3RbaV0sICdwdWJkYXRlJiZUZXh0Jyk7CgkJCXZhciB1cmwgPSBsaXN0W2ldLm1hdGNoKC9cXDxsaW5rXFw+KC4qPylcXG4vKVsxXTsKCQkJZC5wdXNoKHsKCQkJCXRpdGxlOiB0aXRsZSwKCQkJCWRlc2M6IGRlc2MsCgkJCQljb250ZW50OiBjb250LAoJCQkJdXJsOiB1cmwKCQkJfSkKCQl9CgkJc2V0UmVzdWx0KGQpCglgLAoKCS8v5piv5ZCm5ZCv55So6L6F5Yqp5ZeF5o6iOiAxLDAKCXNuaWZmZXI6MSwKCS8vIOi+heWKqeWXheaOouinhOWImWpz5YaZ5rOVCglpc1ZpZGVvOmBqczoKCQlsb2coaW5wdXQpOwoJCWlmICgvbTN1OFxcP3NpZ249Ly50ZXN0KGlucHV0KSkgewoJCQlpbnB1dCA9IHRydWUKCQl9IGVsc2UgaWYgKC9pbmRleFxcLm0zdTgvLnRlc3QoaW5wdXQpKSB7CgkJCWlucHV0ID0gdHJ1ZQoJCX0gZWxzZSB7CgkJCWlucHV0ID0gZmFsc2UKCQl9CglgLAp9
\ No newline at end of file
diff --git a/drpy_js/影视控.js b/drpy_js/影视控.js
deleted file mode 100644
index 526528b..0000000
--- a/drpy_js/影视控.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/影视看吧.js b/drpy_js/影视看吧.js
deleted file mode 100644
index 13bbd56..0000000
--- a/drpy_js/影视看吧.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/往往影视[慢].js b/drpy_js/往往影视[慢].js
deleted file mode 100644
index a1a2aa1..0000000
--- a/drpy_js/往往影视[慢].js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/ASdotKRYPNu8cLtwdABO3MDeyNp8SITwKEVrcmMRsD6s0DQiKXK91uXHy81Bhzh8xPZzDl/A9cOXQrBxH+Qn2Zl2eNL3Ogzx+kAqZMq7TDGW7Ndfho+4VAcQyAx6N07mDm7vJ0FCmOwYSuEzBXqGfzY12xWPhZTM7NZ/L/EBsUoTawiA3ikLzXmA7JWjaUj+oDAQvZHrfeyUkFs34pH/KjLmwmfiRUvblCbe9TI6bfBWjVf1fU5KDDh7lMhq4TBx9t4Rl5c1/CN7IKZoyqv2NvpiujocyheUmQdHdA4Hpe0KLp/JYH9FRULahkOEc3dH55dzJF6xGB4Sq5pfwnHUklZrTsP/wwzOEh0x6jf/WVppmw9b1P9RHrmqky8v9BRbBZuZQ83uK9rNR1LKiTcEmAci5rDhQprrFzzvOOFO7qUA3bt5r+M65BTK0GWM7HVcfRjD3gpTRZ6yvsFOEj2EByF0K0o0r7PsAObRDhUSmSeJ3dv9nyoSGv4Ddi+u2ytF9yi15vZcaYBYxwDBsEXGnU=
\ No newline at end of file
diff --git a/drpy_js/忍者影视.js b/drpy_js/忍者影视.js
deleted file mode 100644
index f8460c8..0000000
--- a/drpy_js/忍者影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/快看影视.js b/drpy_js/快看影视.js
deleted file mode 100644
index d53dbb9..0000000
--- a/drpy_js/快看影视.js
+++ /dev/null
@@ -1 +0,0 @@
-zhUSrbj/T9p0Gi66u4r7+V1fcPu2g4woY2WdwIJcvxxEiygHMb5TCRalGSEreG/0OxhaijR4BsYe2JmAV4G58FadXTMtQDX5/hKwVfs6P2QmXIQMAepvwgTlmQTgWe3F7onT/+CgUVLc7sS7OxkJW+yyNpFHKmTqXqrdNCNQLaARAnhhECW0N8YFH1ZfBei0gYZby440YthXWUyl0lJXzFef33tv3wRpTKDw7tAF9lqFqSGGrRPYK2G3F9Cg86jenRLWFf50vgKrvgOu8D34XFqB5TRmL1mBmd2yBkY1iSEf7pnfauNHBhukTIO8+dJonexx1hc/ZqdE0KgFJS68jtBlHZinNB6EBRqs4ml30McrlAj6B47pGDtjWhyXxB1I6rxrJmC/H828+Iy1LqTMfA==
\ No newline at end of file
diff --git a/drpy_js/思古影视[V2].js b/drpy_js/思古影视[V2].js
deleted file mode 100644
index 5c125eb..0000000
--- a/drpy_js/思古影视[V2].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/怡萱动漫[漫].js b/drpy_js/怡萱动漫[漫].js
deleted file mode 100644
index 9180957..0000000
--- a/drpy_js/怡萱动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/恒大影视[密].js b/drpy_js/恒大影视[密].js
deleted file mode 100644
index c4419aa..0000000
--- a/drpy_js/恒大影视[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAA9hcGYC/6VSzW4TMRC+8xQ+bZu0a5eicsiKpwBOFFXO2sla+Gdrj5MmqBJcegJUceaEkMINIXFAlXibpu1j1F47EEjVCz54d+ab+b7xzEyoRdZLjp6g1w9QOCBA8gHaunr7cfllsfz1/WZx9mL57ezl1m6HN8ZBgBuA1g0ImU6nuGHjKRzgoZ/Pc5C3MsQQoRk/wW3TkolhBGYtJ4KR0ayW1DnS0jEPRvzgBpTMuY5TWzfPE0MySL9f/j4pI/xsJtFhLH0/uY69qF897fwDtJd8IyGB2xSWXV0tRy21Lr4aazpBUlS0KJ7xE4jfxvJRhftk+/CQ7fSyXivpbJUE1vPklXQ+CyQ5RgolQqseJ+vqw9eb9+dRQgrNUXeXSjAmeYW9RFgAV1GvG0CFI1dRMAq0NFaMhaaywrVRimsotVd/F5glmfHd2/6UdPnzzfXFYiWbBRGGxqvh/6pdXrzruNPirC8P5prFKRVFmzOxojbQlmCCJ3c308Qj1DikhbsonK3XAMZdHQkngnFTCj0KV2iUG/Dj7b3eivwu9OG96P696KPeRoW10RCa0dVi2FE2N8KADl2MiQtSSuHWsWjeCZ7mFTn/dP3j8z+zWhvSqj0b2xloTm8BbVg63ckDAAA=
\ No newline at end of file
diff --git a/drpy_js/悠悠影视.js b/drpy_js/悠悠影视.js
deleted file mode 100644
index 2ed9737..0000000
--- a/drpy_js/悠悠影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/3WQvU7DMBSF9zxFpjaJGoeVRIhHYIE5unHc2Mj5ke38FNSFgQExw4CQYEBlBImpFeJlSuAxsEMqJixLV/f6O+ce+Sg5JVghkJJlhZPXCRQo7ypRou36+mu9mtnnlq2PgiRWpFOhPU1Z4/syB84nk2M9ms6spRtZDQhb1JzYB6Okf37s7z+0YPDT1ODDFCd61l886Pv5/vq9uhyfaCmNPVWqkmEQtG2LOraoz6gOVSJc5iNXC66xoClTScs2mC8w1/GDCjKiG1MQVTkfaUlAYHrypxl6z/uPx6BITDrM69Tk3G6u+tun/u6tv3nZEWZdXIGQBkAFNAkInymSS5uzMFPOnhty5ey7Efz+kKlUkHmEvMBB3qG7W7j8ARzbaY1/AQAA
\ No newline at end of file
diff --git a/drpy_js/想看影院.js b/drpy_js/想看影院.js
deleted file mode 100644
index edafb0a..0000000
--- a/drpy_js/想看影院.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOSw++yJ8kLPZGH7bSG3+EXPt4QIAb8pNoprEt1UZ1T/V4W/sp4A5sfUtLeuACMYWQe1KwhJN9KGVLad9F06m3DJf4UKGy2nF6D8SlobdUjU7Wf7L1Gidlkw2eAoI0TXu4lCXFALX/aidXUhAtLQnhjx2AMtad4uyWu7IAscYcbPXv8SQWiw5CRlPbawD2MRLCFGYWK5qsC2rcgZVgX2jc4nedV6yH1RvxMFxU7pAlBEHmVbcGaZxNtV+/0pGtKp0JxdQrraccKVfvNPbkr4F6CQg7aynAaGAUo+mDqTHyIHxwoKH/kj3s8URkcrDqoEjfsX8nUKqEWYQBoB/6Ue5Y5+qrbUWmi8IUdF5uHGsOyB4DJR4W5hCxicyAVHGVZHoFEgRTP8tICGa9mkivi2O6tBg9ekPxEHjAoTZ3THFEHoFQHQ+vES2g3eicbWdANnjJQ9Ih5+59vsANQJMaDHltWildWmkoLkMxRzCvcFLj85Hnzb4XoTl8Xuod1BUkW8h44ZlGd+5zQls5+2q/IXEjvsy3qYlxKySUv1eOZmlEf6zoBIL4+8YyGZ7KgfymjU/FGoFTLMxqEssLpGGNU3f+R6RLs7MJEaxYbivsO+1dUZoZqcI+rz5f9U8wxHanCO0kiLC7jSYJe8tG+rePuunRcNAh1CbKt56t4aenHhV58kyt1EFypdzbm1XbgHXMsf7og=
\ No newline at end of file
diff --git a/drpy_js/我播.js b/drpy_js/我播.js
deleted file mode 100644
index 33db221..0000000
--- a/drpy_js/我播.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICdteG9uZTUnLAogICAgdGl0bGU6ICfmiJHmkq0nLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LndvYm90di5jYy8nLAogICAgY2xhc3NfcGFyc2U6ICcubmF2LW1lbnUtaXRlbXMmJmxpOmx0KDgpO2EmJlRleHQ7YSYmaHJlZjt0eXBlLyguKj8pLycsCiAgICB1cmw6ICcvc2hvdy9meWNsYXNzL3BhZ2UvZnlwYWdlLycsCiAgICBzZWFyY2hVcmw6ICcvc2VhcmNoLyoqLS0vcGFnZS9meXBhZ2UvJywKICAgIOaQnOe0ojogJy5tb2R1bGUtaXRlbXMgLm1vZHVsZS1zZWFyY2gtaXRlbTthJiZ0aXRsZTtpbWcmJmRhdGEtc3JjOy52aWRlby1zZXJpYWwmJlRleHQ7LnZpZGVvLXNlcmlhbCYmaHJlZicsCn0=
\ No newline at end of file
diff --git a/drpy_js/我爱跟剧.js b/drpy_js/我爱跟剧.js
deleted file mode 100644
index 2677209..0000000
--- a/drpy_js/我爱跟剧.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV0RGhrB8sUI4jM8BWLcNCBrMBelWSOzMChntoc+xDkvJzycsPkAk/Yk1Yl1Gh5Xsk7TPBVoCev1fMBMAMWgBsFb/uw4V6vPohJNBYHxmEzArfO3AekGAxfLC9N1wKprwrJQuilkokjKXwUzxUsPQgFWzrd7jxdKSR/nQhwlbCnWC5o8mD9DHlKkijD/t8wzhpFYJ4MQSjFQTuZToYx4Qz4Il4DIJeah/vEmwwLqjzv3Q6ks8cptxHrJUZXr5iMWgsSNWo2AXpNXlm5YuKNQgXW896KLsIoF0Dpi5L4QhwIWqLKafa6n0rpPiFA4FvSBF9EG50DUp3fIIK7wxHpFxTia7J+MyKCMbgGCrrl0wEyFq6KzyipXBmj6GyRoHhly20vPd17/Wc0MS8jxvbzMaCXoJ37SNpJiT13PGcrbjoBVjQu09knqCHOob3zZ2KiofW/ldw+CSaz32wlIuDQ6W4OLCccy3qB6wQYypQF6/Ho8NxEEEC/oRTaPCQN+QimJT14VzhjAEfQNPdOv8tt5AbUDhD3d5rLgb1xrCbpKK/T+SZrLvsBFcHuzWDkVRh+kej3xA4bs2m4/R3LVc6FLUBTqCrXMnNFCDM+sIFK+iJm0d/H18FW9+BrXf9kpwpWKs3dfXAv9aWq8rwVE/gc9sgJ0IP93N0jscfyTJy35YuwwYQzDOlCE+pjJg/6lUFVvz5uj5KCKBLn3jr0TFJ0rSMI0uDbg7SP7l2Rd+4EdLn8FDPOs+ACxdG2Xw45vrD+aEU54dAUT/TbYE+GSnWrv6GW+rLyGOrG+tNvMnBiaKTXXBMbvf55y7npV38tuIK6kGSz8wSzJAGN2k0DFnOu7NO/L27jqG+Qp+L8m8K00Gao6/UP2JMT7jCEevgYBS4vN4VuaUSB1yUFlpkrsXnyJMzJgCbt2ASolxoEJDk27u0clu4jeV6HSSaBAhFtrh1BsTRaA/ygOtBOE+vFlalA6XVZfCoPaMV/YAKVOccMTeucJLP1w6L9PhhortZ1khKtEbQEdaQKx/DFmdUA9zVNS2uSf6wnZtjRI1QL98BBpbDYII7cwKo8GIDagDnUVeOX0fpQ3fV+C1ou44ya9loJdGvXMuwySTDqIO4/DBnZ1ufWVpqqPTb5T52cm99z/mWQNczN16AxvayHwmYP4D/LN5COwEwm5+Yr+lMUf92ZQRE7/oNDt84+FgmAhcgKmasznJXUoQyHGbbM88ff4V9x+oer0GGE8i7wmGAm7ejm2AMXQlCzGBOFQ8Wc4x7s1Nfeum6kHoe6EpBaU1MjpGt/YbLfWxqvQ2XDQBfoDopwjRVHjZpQt4Ak6QocTLSPYXFWWaG3LDs9LwqQplMwSGqw+LKqyktdHHJy4Iu9A3UFCnY0aI5chK/H15h5BxYX8wGr/ezCVarz1SrDkPfNqoH17y7ZLAdj66nJpKOgCJWCWE/0gJCQL2/pP/wYEdDkDqCeMDQe6WwP0QWQHbLFcYISOGjuzYmUpZS7yqeOSdrT92cSj5q0UiMMDQVQZylU49zdYzfEkU9TSkOA3S224CNvsWVrK+bxiyvpkopiNfBqFHelnM7fm8XPs8QR/dNaQrDhsiwJgElMo9hfCSVnb7PHZVWIIb1Vwfc+1Qc4nfjf89XhKq8MkintChsqvXFRLZ1KDWya+CWQ/8A+Fa+z+OFuUL9LU=
\ No newline at end of file
diff --git a/drpy_js/我的哔哩[官].js b/drpy_js/我的哔哩[官].js
deleted file mode 100644
index 09a6040..0000000
--- a/drpy_js/我的哔哩[官].js
+++ /dev/null
@@ -1 +0,0 @@
-LyoqCiAqIOW3suefpemXrumimO+8mgogKiBb5o6o6I2QXemhtemdou+8mifpm7fnlLXmqKHmi5/lmagn5pKt5pS+6YOo5Lu95b2x54mH5Lya5Ye66ZSZ77yMJ+aSreaUvuWZqCfmlLnmiJAnaWprJyAmICfop6PnoIHmlrnlvI8n5pS55oiQJ+i9r+inoyfvvIzljbPlj6/mraPluLjmkq3mlL4KICog5b2x6KeGVFYg6LaF6YCj57WQ6Lez6L2J5pSv5oyBCiAqIOW9seinhlRWIOW8ueW5leaUr+aMgQogKiBodHRwczovL3QubWUvZm9uZ21pX29mZmljYWwvCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Gb25nTWkvUmVsZWFzZS90cmVlL21haW4vYXBrCiAqIOearuearuiZvkRNQm94IOW8ueW5leaUr+aMgQogKiDorr7nva4gPiDnqpflj6PpooTop4ggPiDlvIDlkK8KICogaHR0cHM6Ly90Lm1lL3BpcGl4aWF3ZXJ1bgogKiB2b2RfYXJlYTonYmlsaWRhbm11JwogKiBDb29raWXorr7nva4KICogQ29va2ll6I635Y+W5pa55rOVIGh0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1VuZENvdmVyL1B5cmFtaWRTdG9yZS9tYWluL2xpc3QubWQKICogQ29va2ll6K6+572u5pa55rOVMTogRFItUFkg5ZCO5Y+w566h55CG55WM6Z2iCiAqIENNU+WQjuWPsOeuoeeQhiA+IOiuvue9ruS4reW/gyA+IOeOr+Wig+WPmOmHjyA+IHsiYmlsaV9jb29raWUiOiJYWFhYWFhYIiwidm1pZCI6IlhYWFhYWCJ9ID4g5L+d5a2YCiAqIENvb2tpZeiuvue9ruaWueazlTI6IOaJi+WKqOabv+aNokNvb2tpZQogKiDlupXkuIvku6PnoIEgaGVhZGVyc+eahAogKiAiQ29va2llIjoiJGJpbGlfY29va2llIgogKiDmiYvliqjmm7/mjaLkuLoKICogIkNvb2tpZSI6IuWwhuiOt+WPlueahENvb2tpZem7j+i0tOWcqOi/mSIKICog5a6i5oi356uv6ZW/5pyfQ29va2ll6K6+572u5pWZ56iLOgogKiDmipPljIXlk5Tlk6nmiYvmnLrnq6/mkJzntKJhY2Nlc3Nfa2V5LOWPluS7u+aEj+mTvuaOpemHjOeahGFjY2Vzc19rZXnlkoxhcHBrZXnlnKhkcnB5546v5aKD5Y+Y6YeP5Lit5aKe5Yqg5ZCM5ZCN55qE546v5aKD5Y+Y6YeP5Y2z5Y+vCiAqIOatpOaXtuWTlOWTqS5qc+i/meS4quino+aekOWPr+eUqOS6juatpOa6kOeahOino+aekOe6v+i3r+eUqAogKiDkvKDlj4IgP3JlbmRlcj0xJnR5cGU9dXJsJnBhcmFtcz0uLi9qc29uL+WTlOWTqeaVmeiCsi5qc29uQOWTlOWTqeaVmeiCslvlrphdCiAqIOS8oOWPgiA/cmVuZGVyPTEmdHlwZT11cmwmcGFyYW1zPS4uL2pzb24v5ZOU5ZOp5aSn5YWoLmpzb25A5ZOU5ZOp5aSn5YWoW+WumF0KICovCnZhciBydWxlID0gewogICAgdGl0bGU6ICfmiJHnmoTlk5Tlk6lb5a6YXScsCiAgICBob3N0OiAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tJywKICAgIGhvbWVVcmw6ICcveC93ZWItaW50ZXJmYWNlL3JhbmtpbmcvdjI/cmlkPTAmdHlwZT1vcmlnaW4nLAogICAgLy8gdXJsOicveC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP3NlYXJjaF90eXBlPXZpZGVvJmtleXdvcmQ9ZnljbGFzcyZwYWdlPWZ5cGFnZScsCiAgICB1cmw6ICcveC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP3NlYXJjaF90eXBlPXZpZGVvJmZ5ZmlsdGVyJywKICAgIGZpbHRlcl91cmw6ICdrZXl3b3JkPWZ5Y2xhc3N7e2ZsLnRpZH19JnBhZ2U9ZnlwYWdlJmR1cmF0aW9uPXt7ZmwuZHVyYXRpb259fSZvcmRlcj17e2ZsLm9yZGVyfX0nLAogICAgY2xhc3NfcGFyc2U6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgLy8gbGV0IGh0bWwgPSByZXF1ZXN0KCd7e2hvc3R9fS9maWxlcy9qc29uL+WTlOWTqeaVmeiCsi5qc29uJyk7CiAgICAgICAgbG9nKCdydWxlLnBhcmFtczonICsgcnVsZS5wYXJhbXMpOwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChydWxlLnBhcmFtcyk7CiAgICAgICAgbGV0IGpzb24gPSBkZWFsSnNvbihodG1sKTsKICAgICAgICBpbnB1dCA9IGpzb24uY2xhc3NlczsKICAgICAgICBob21lT2JqLmZpbHRlciA9IGpzb24uZmlsdGVyOwogICAgICAgIC8vIGxvZyhpbnB1dCk7CiAgICB9KSwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBkZXRhaWxVcmw6ICcveC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD1meWlkJywKICAgIHNlYXJjaFVybDogJy94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/c2VhcmNoX3R5cGU9dmlkZW8ma2V5d29yZD0qKiZwYWdlPWZ5cGFnZScsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICAvLyBwYXJhbXM6ICc/cmVuZGVyPTEmdHlwZT11cmwmcGFyYW1zPS4uL2pzb24v5ZOU5ZOp5pWZ6IKyLmpzb25A5ZOU5ZOp5pWZ6IKyW+WumF0nLAogICAgLy8gcGFyYW1zOiAnP3JlbmRlcj0xJnR5cGU9dXJsJnBhcmFtcz0uLi9qc29uL+WTlOWTqeWkp+WFqC5qc29uQOWTlOWTqeWkp+WFqFvlrphdJywKICAgIGhlYWRlcnM6IHsKICAgICAgICAiVXNlci1BZ2VudCI6ICJQQ19VQSIsCiAgICAgICAgIlJlZmVyZXIiOiAiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tIiwKICAgICAgICAiQ29va2llIjogImJ1dmlkMz02NjYiCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGxpbWl0OiA4LAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICBsYXp5OiBganM6CiAgICAgICAgbGV0IGlkcyA9IGlucHV0LnNwbGl0KCdfJyk7CiAgICAgICAgbGV0IGRhbiA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92MS9kbS9saXN0LnNvP29pZD0nICsgaWRzWzFdOwogICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICBsZXQgaXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb206NDQzL3gvcGxheWVyL3BsYXl1cmw/YXZpZD0nICsgaWRzWzBdICsgJyZjaWQ9JyArIGlkc1sxXSArICcmcW49MTE2JzsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaXVybCk7CiAgICAgICAgbGV0IGpSb290ID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBsZXQgam8gPSBqUm9vdC5kYXRhOwogICAgICAgIGxldCBqYSA9IGpvLmR1cmw7CiAgICAgICAgbGV0IG1heFNpemUgPSAtMTsKICAgICAgICBsZXQgcG9zaXRpb24gPSAtMTsKICAgICAgICBqYS5mb3JFYWNoKGZ1bmN0aW9uKHRtcEpvLCBpKSB7CiAgICAgICAgICAgIGlmIChtYXhTaXplIDwgTnVtYmVyKHRtcEpvLnNpemUpKSB7CiAgICAgICAgICAgICAgICBtYXhTaXplID0gTnVtYmVyKHRtcEpvLnNpemUpOwogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBpCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBsZXQgcHVybCA9ICcnOwogICAgICAgIGlmIChqYS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gLTEpIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMAogICAgICAgICAgICB9CiAgICAgICAgICAgIHB1cmwgPSBqYVtwb3NpdGlvbl0udXJsCiAgICAgICAgfQogICAgICAgIHJlc3VsdC5wYXJzZSA9IDA7CiAgICAgICAgcmVzdWx0LnBsYXlVcmwgPSAnJzsKICAgICAgICByZXN1bHQudXJsID0gdW5lc2NhcGUocHVybCk7CiAgICAgICAgcmVzdWx0LmhlYWRlciA9IHsKICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbScsCiAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84Ni4wLjQyNDAuMTk4IFNhZmFyaS81MzcuMzYnCiAgICAgICAgfTsKICAgICAgICBpZiAoL1xcLmZsdi8udGVzdChwdXJsKSkgewogICAgICAgICAgICByZXN1bHQuY29udGVudFR5cGUgPSAndmlkZW8veC1mbHYnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdC5jb250ZW50VHlwZSA9ICcnOwogICAgICAgIH0KICAgICAgICByZXN1bHQuZGFubWFrdSA9IGRhbjsKICAgICAgICBpbnB1dCA9IHJlc3VsdAogICAgYCwKICAgIOaOqOiNkDogYGpzOgogICAgICAgIGZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKICAgICAgICAgICAgcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHR1cm5ESE0oZHVyYXRpb24pIHsKICAgICAgICAgICAgbGV0IG1pbiA9ICcnOwogICAgICAgICAgICBsZXQgc2VjID0gJyc7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBtaW4gPSBkdXJhdGlvbi5zcGxpdCgnOicpWzBdOwogICAgICAgICAgICAgICAgc2VjID0gZHVyYXRpb24uc3BsaXQoJzonKVsxXTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgbWluID0gTWF0aC5mbG9vcihkdXJhdGlvbiAvIDYwKTsKICAgICAgICAgICAgICAgIHNlYyA9IGR1cmF0aW9uICUgNjA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlzTmFOKHBhcnNlSW50KGR1cmF0aW9uKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAn5peg5pWI6L6T5YWlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobWluID09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWMgKyAn56eSJwogICAgICAgICAgICB9IGVsc2UgaWYgKDAgPCBtaW4gJiYgbWluIDwgNjApIHsKICAgICAgICAgICAgICAgIHJldHVybiBtaW4gKyAn5YiGJwogICAgICAgICAgICB9IGVsc2UgaWYgKDYwIDw9IG1pbiAmJiBtaW4gPCAxNDQwKSB7CiAgICAgICAgICAgICAgICBpZiAobWluICUgNjAgPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGxldCBoID0gbWluIC8gNjA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggKyAn5bCP5pe2JwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBsZXQgaCA9IG1pbiAvIDYwOwogICAgICAgICAgICAgICAgICAgIGggPSAoaCArICcnKS5zcGxpdCgnLicpWzBdOwogICAgICAgICAgICAgICAgICAgIGxldCBtID0gbWluICUgNjA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggKyAn5bCP5pe2JyArIG0gKyAn5YiGJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmIChtaW4gPj0gMTQ0MCkgewogICAgICAgICAgICAgICAgbGV0IGQgPSBtaW4gLyA2MCAvIDI0OwogICAgICAgICAgICAgICAgZCA9IChkICsgJycpLnNwbGl0KCcuJylbMF07CiAgICAgICAgICAgICAgICBsZXQgaCA9IG1pbiAvIDYwICUgMjQ7CiAgICAgICAgICAgICAgICBoID0gKGggKyAnJykuc3BsaXQoJy4nKVswXTsKICAgICAgICAgICAgICAgIGxldCBtID0gbWluICUgNjA7CiAgICAgICAgICAgICAgICBsZXQgZGhtID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoZCA+IDApIHsKICAgICAgICAgICAgICAgICAgICBkaG0gPSBkICsgJ+WkqScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChoID49IDEpIHsKICAgICAgICAgICAgICAgICAgICBkaG0gPSBkaG0gKyBoICsgJ+Wwj+aXticKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChtID4gMCkgewogICAgICAgICAgICAgICAgICAgIGRobSA9IGRobSArIG0gKyAn5YiGJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGRobQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIENvbnZlcnROdW0obnVtKSB7CiAgICAgICAgICAgIGxldCBfd3MgPSBNYXRoLnBvdygxMCwgMSk7CiAgICAgICAgICAgIGxldCBfYiA9IDFlNDsKICAgICAgICAgICAgaWYgKG51bSA8IF9iKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVtLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IF9yID0gJyc7CiAgICAgICAgICAgIGxldCBfc3RyQXJnID0gWycnLCAn5LiHJywgJ+S6vycsICfkuIfkur8nXTsKICAgICAgICAgICAgbGV0IF9pID0gTWF0aC5mbG9vcihNYXRoLmxvZyhudW0pIC8gTWF0aC5sb2coX2IpKTsKICAgICAgICAgICAgaWYgKF9pID4gMykgewogICAgICAgICAgICAgICAgX2kgPSAzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIF9yID0gTWF0aC5mbG9vcihudW0gLyBNYXRoLnBvdyhfYiwgX2kpICogX3dzKSAvIF93cyArIF9zdHJBcmdbX2ldOwogICAgICAgICAgICByZXR1cm4gX3I7CiAgICAgICAgfQogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IHZvZExpc3QgPSBKU09OLnBhcnNlKGh0bWwpLmRhdGEubGlzdDsKICAgICAgICBsZXQgdmlkZW9zID0gW107CiAgICAgICAgdm9kTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHZvZCkgewogICAgICAgICAgICBsZXQgYWlkID0gdm9kLmFpZDsKICAgICAgICAgICAgbGV0IHRpdGxlID0gc3RyaXBIdG1sVGFnKHZvZC50aXRsZSk7CiAgICAgICAgICAgIGxldCBpbWcgPSB2b2QucGljOwogICAgICAgICAgICBpZiAoaW1nLnN0YXJ0c1dpdGgoJy8vJykpIHsKICAgICAgICAgICAgICAgIGltZyA9ICdodHRwczonICsgaW1nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCByZW1hcmsgPSB0dXJuREhNKHZvZC5kdXJhdGlvbikgKyAnIOKWticgKyBDb252ZXJ0TnVtKHZvZC5zdGF0LnZpZXcpICsgJyDwn4aZJyArIHZvZC5vd25lci5uYW1lOwogICAgICAgICAgICB2aWRlb3MucHVzaCh7CiAgICAgICAgICAgICAgICB2b2RfaWQ6IGFpZCwKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiB0aXRsZSwKICAgICAgICAgICAgICAgIHZvZF9waWM6IGltZywKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiByZW1hcmsKICAgICAgICAgICAgfSkKICAgICAgICB9KTsKICAgICAgICBWT0RTID0gdmlkZW9zCiAgICBgLAogICAg5LiA57qnOiBganM6CiAgICAgICAgaWYgKGNhdGVPYmoudGlkLmVuZHNXaXRoKCdfY2xpY2tsaW5rJykpIHsKICAgICAgICAgICAgY2F0ZU9iai50aWQgPSBjYXRlT2JqLnRpZC5zcGxpdCgnXycpWzBdOwogICAgICAgICAgICBpbnB1dCA9IEhPU1QgKyAnL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvdHlwZT9zZWFyY2hfdHlwZT12aWRlbyZrZXl3b3JkPScgKyBjYXRlT2JqLnRpZCArICcmcGFnZT0nICsgTVlfUEFHRTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gc3RyaXBIdG1sVGFnKHNyYykgewogICAgICAgICAgICByZXR1cm4gc3JjLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCAnJykucmVwbGFjZSgvJi57MSw1fTsvZywgJycpLnJlcGxhY2UoL1xcc3syLH0vZywgJyAnKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gdHVybkRITShkdXJhdGlvbikgewogICAgICAgICAgICBsZXQgbWluID0gJyc7CiAgICAgICAgICAgIGxldCBzZWMgPSAnJzsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIG1pbiA9IGR1cmF0aW9uLnNwbGl0KCc6JylbMF07CiAgICAgICAgICAgICAgICBzZWMgPSBkdXJhdGlvbi5zcGxpdCgnOicpWzFdOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBtaW4gPSBNYXRoLmZsb29yKGR1cmF0aW9uIC8gNjApOwogICAgICAgICAgICAgICAgc2VjID0gZHVyYXRpb24gJSA2MDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VJbnQoZHVyYXRpb24pKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICfml6DmlYjovpPlhaUnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtaW4gPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlYyArICfnp5InCiAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA8IG1pbiAmJiBtaW4gPCA2MCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG1pbiArICfliIYnCiAgICAgICAgICAgIH0gZWxzZSBpZiAoNjAgPD0gbWluICYmIG1pbiA8IDE0NDApIHsKICAgICAgICAgICAgICAgIGlmIChtaW4gJSA2MCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGggPSBtaW4gLyA2MDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCArICflsI/ml7YnCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBoID0gbWluIC8gNjA7CiAgICAgICAgICAgICAgICAgICAgaCA9IChoICsgJycpLnNwbGl0KCcuJylbMF07CiAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSBtaW4gJSA2MDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCArICflsI/ml7YnICsgbSArICfliIYnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKG1pbiA+PSAxNDQwKSB7CiAgICAgICAgICAgICAgICBsZXQgZCA9IG1pbiAvIDYwIC8gMjQ7CiAgICAgICAgICAgICAgICBkID0gKGQgKyAnJykuc3BsaXQoJy4nKVswXTsKICAgICAgICAgICAgICAgIGxldCBoID0gbWluIC8gNjAgJSAyNDsKICAgICAgICAgICAgICAgIGggPSAoaCArICcnKS5zcGxpdCgnLicpWzBdOwogICAgICAgICAgICAgICAgbGV0IG0gPSBtaW4gJSA2MDsKICAgICAgICAgICAgICAgIGxldCBkaG0gPSAnJzsKICAgICAgICAgICAgICAgIGlmIChkID4gMCkgewogICAgICAgICAgICAgICAgICAgIGRobSA9IGQgKyAn5aSpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGggPj0gMSkgewogICAgICAgICAgICAgICAgICAgIGRobSA9IGRobSArIGggKyAn5bCP5pe2JwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG0gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZGhtID0gZGhtICsgbSArICfliIYnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGhtCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gQ29udmVydE51bShudW0pIHsKICAgICAgICAgICAgbGV0IF93cyA9IE1hdGgucG93KDEwLCAxKTsKICAgICAgICAgICAgbGV0IF9iID0gMWU0OwogICAgICAgICAgICBpZiAobnVtIDwgX2IpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudW0udG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgX3IgPSAnJzsKICAgICAgICAgICAgbGV0IF9zdHJBcmcgPSBbJycsICfkuIcnLCAn5Lq/JywgJ+S4h+S6vyddOwogICAgICAgICAgICBsZXQgX2kgPSBNYXRoLmZsb29yKE1hdGgubG9nKG51bSkgLyBNYXRoLmxvZyhfYikpOwogICAgICAgICAgICBpZiAoX2kgPiAzKSB7CiAgICAgICAgICAgICAgICBfaSA9IDM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgX3IgPSBNYXRoLmZsb29yKG51bSAvIE1hdGgucG93KF9iLCBfaSkgKiBfd3MpIC8gX3dzICsgX3N0ckFyZ1tfaV07CiAgICAgICAgICAgIHJldHVybiBfcjsKICAgICAgICB9CiAgICAgICAgbGV0IGRhdGEgPSBbXTsKICAgICAgICBsZXQgdm9kTGlzdCA9IFtdOwogICAgICAgIGlmIChNWV9DQVRFID09PSAn5o6o6I2QJykgewogICAgICAgICAgICBpbnB1dCA9IEhPU1QgKyAnL3gvd2ViLWludGVyZmFjZS9pbmRleC90b3AvcmNtZD9wcz0xNCZmcmVzaF9pZHg9JyArIE1ZX1BBR0UgKyAnJmZyZXNoX2lkeF8xaD0nICsgTVlfUEFHRTsKICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpLmRhdGE7CiAgICAgICAgICAgIHZvZExpc3QgPSBkYXRhLml0ZW07CiAgICAgICAgfSBlbHNlIGlmIChNWV9DQVRFID09PSAn5Y6G5Y+y6K6w5b2VJykgewogICAgICAgICAgICBpbnB1dCA9IEhPU1QgKyAnL3gvdjIvaGlzdG9yeT9wbj0nICsgTVlfUEFHRTsKICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpLmRhdGE7CiAgICAgICAgICAgIHZvZExpc3QgPSBkYXRhOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKS5kYXRhOwogICAgICAgICAgICB2b2RMaXN0ID0gZGF0YS5yZXN1bHQ7CiAgICAgICAgfQogICAgICAgIGxldCB2aWRlb3MgPSBbXTsKICAgICAgICB2b2RMaXN0LmZvckVhY2goZnVuY3Rpb24odm9kKSB7CiAgICAgICAgICAgIGxldCBhaWQgPSB2b2QuYWlkP3ZvZC5haWQ6dm9kLmlkOwogICAgICAgICAgICBsZXQgdGl0bGUgPSBzdHJpcEh0bWxUYWcodm9kLnRpdGxlKTsKICAgICAgICAgICAgbGV0IGltZyA9IHZvZC5waWM7CiAgICAgICAgICAgIGlmIChpbWcuc3RhcnRzV2l0aCgnLy8nKSkgewogICAgICAgICAgICAgICAgaW1nID0gJ2h0dHBzOicgKyBpbWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IHBsYXkgPSAnJzsKICAgICAgICAgICAgbGV0IGRhbm1ha3UgPSAnJzsKICAgICAgICAgICAgaWYgKE1ZX0NBVEUgPT09ICfmjqjojZAnKSB7CiAgICAgICAgICAgICAgICBwbGF5ID0gQ29udmVydE51bSh2b2Quc3RhdC52aWV3KTsKICAgICAgICAgICAgICAgIGRhbm1ha3UgPSB2b2Quc3RhdC5kYW5tYWt1OwogICAgICAgICAgICB9IGVsc2UgaWYgKE1ZX0NBVEUgPT09ICfljoblj7LorrDlvZUnKSB7CiAgICAgICAgICAgICAgICBwbGF5ID0gQ29udmVydE51bSh2b2Quc3RhdC52aWV3KTsKICAgICAgICAgICAgICAgIGRhbm1ha3UgPSB2b2Quc3RhdC5kYW5tYWt1OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcGxheSA9IENvbnZlcnROdW0odm9kLnBsYXkpOwogICAgICAgICAgICAgICAgZGFubWFrdSA9IHZvZC52aWRlb19yZXZpZXc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IHJlbWFyayA9IHR1cm5ESE0odm9kLmR1cmF0aW9uKSArICcg4pa2JyArIHBsYXkgKyAnIPCfkqwnICsgZGFubWFrdTsKICAgICAgICAgICAgdmlkZW9zLnB1c2goewogICAgICAgICAgICAgICAgdm9kX2lkOiBhaWQsCiAgICAgICAgICAgICAgICB2b2RfbmFtZTogdGl0bGUsCiAgICAgICAgICAgICAgICB2b2RfcGljOiBpbWcsCiAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogcmVtYXJrCiAgICAgICAgICAgIH0pCiAgICAgICAgfSk7CiAgICAgICAgVk9EUyA9IHZpZGVvcwogICAgYCwKICAgIOS6jOe6pzogYGpzOgogICAgICAgIGZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKICAgICAgICAgICAgcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CiAgICAgICAgfQogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IGpvID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLlZpZXc7CiAgICAgICAgLy8g5Y6G5Y+y6K6w5b2VCiAgICAgICAgbGV0IGNvb2tpZXMgPSBydWxlX2ZldGNoX3BhcmFtcy5oZWFkZXJzLkNvb2tpZS5zcGxpdCgnOycpOwogICAgICAgIGxldCBiaWxpX2pjdCA9ICcnOwogICAgICAgIGNvb2tpZXMuZm9yRWFjaChjb29raWUgPT4gewogICAgICAgICAgICBpZiAoY29va2llLmluY2x1ZGVzKCdiaWxpX2pjdCcpKSB7CiAgICAgICAgICAgICAgICBiaWxpX2pjdCA9IGNvb2tpZS5zcGxpdCgnPScpWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKGJpbGlfamN0ICE9PSAnJykgewogICAgICAgICAgICBsZXQgaGlzdG9yeVJlcG9ydCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9oaXN0b3J5L3JlcG9ydCc7CiAgICAgICAgICAgIGxldCBkYXRhUG9zdCA9IHsKICAgICAgICAgICAgICAgIGFpZDogam8uYWlkLAogICAgICAgICAgICAgICAgY2lkOiBqby5jaWQsCiAgICAgICAgICAgICAgICBjc3JmOiBiaWxpX2pjdCwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcG9zdChoaXN0b3J5UmVwb3J0LCBkYXRhUG9zdCwgJ2Zvcm0nKTsKICAgICAgICB9CgogICAgICAgIGxldCBzdGF0ID0gam8uc3RhdDsKICAgICAgICBsZXQgdXBfaW5mbyA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5DYXJkOwogICAgICAgIGxldCByZWxhdGlvbiA9IHVwX2luZm8uZm9sbG93aW5nID8gJ+W3suWFs+azqCcgOiAn5pyq5YWz5rOoJzsKICAgICAgICBsZXQgYWlkID0gam8uYWlkOwogICAgICAgIGxldCB0aXRsZSA9IHN0cmlwSHRtbFRhZyhqby50aXRsZSk7CiAgICAgICAgbGV0IHBpYyA9IGpvLnBpYzsKICAgICAgICBsZXQgZGVzYyA9IGpvLmRlc2M7CgogICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoam8ucHViZGF0ZSAqIDEwMDApOwogICAgICAgIGxldCB5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpOwogICAgICAgIGxldCBtbSA9IGRhdGUuZ2V0TW9udGgoKSsxOwogICAgICAgIG1tID0gbW0gPCAxMCA/ICgnMCcgKyBtbSkgOiBtbTsKICAgICAgICBsZXQgZGQgPSBkYXRlLmdldERhdGUoKTsKICAgICAgICBkZCA9IGRkIDwgMTAgPyAoJzAnICsgZGQpIDogZGQ7CgogICAgICAgIGxldCB1cF9uYW1lID0gam8ub3duZXIubmFtZTsKICAgICAgICBsZXQgdHlwZU5hbWUgPSBqby50bmFtZTsKICAgICAgICAvLyBsZXQgcmVtYXJrID0gam8uZHVyYXRpb247CiAgICAgICAgbGV0IHZvZCA9IHsKICAgICAgICAgICAgdm9kX2lkOiBhaWQsCiAgICAgICAgICAgIHZvZF9uYW1lOiB0aXRsZSwKICAgICAgICAgICAgdm9kX3BpYzogcGljLAogICAgICAgICAgICB0eXBlX25hbWU6IHR5cGVOYW1lLAogICAgICAgICAgICB2b2RfeWVhcjogeXkrbW0rZGQsCiAgICAgICAgICAgIHZvZF9hcmVhOiAnYmlsaWRhbm11JywKICAgICAgICAgICAgLy8gdm9kX3JlbWFya3M6IHJlbWFyaywKICAgICAgICAgICAgdm9kX3RhZ3M6ICdtdicsCiAgICAgICAgICAgIC8vIHZvZF9kaXJlY3RvcjogJ/CfhpkgJyArIHVwX25hbWUgKyAn44CA8J+RpSAnICsgdXBfaW5mby5mb2xsb3dlciArICfjgIAnICsgcmVsYXRpb24sCiAgICAgICAgICAgIHZvZF9kaXJlY3RvcjogJ/CfhpkgJyArICdbYT1jcjonICsgSlNPTi5zdHJpbmdpZnkoeydpZCc6dXBfbmFtZSArICdfY2xpY2tsaW5rJywnbmFtZSc6dXBfbmFtZX0pICsgJy9dJyArIHVwX25hbWUgKyAnWy9hXScgKyAn44CA8J+RpSAnICsgdXBfaW5mby5mb2xsb3dlciArICfjgIAnICsgcmVsYXRpb24sCiAgICAgICAgICAgIHZvZF9hY3RvcjogJ+KWticgKyBzdGF0LnZpZXcgKyAn44CAJyArICfwn5KsJyArIHN0YXQuZGFubWFrdSArICfjgIAnICsgJ/CfkY0nICsgc3RhdC5saWtlICsgJ+OAgCcgKyAn8J+SsCcgKyBzdGF0LmNvaW4gKyAn44CAJyArICfirZAnICsgc3RhdC5mYXZvcml0ZSwKICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IGRlc2MKICAgICAgICB9OwogICAgICAgIGxldCBqYSA9IGpvLnBhZ2VzOwogICAgICAgIGxldCB0cmVlTWFwID0ge307CiAgICAgICAgbGV0IHBsYXl1cmxzID0gW107CiAgICAgICAgamEuZm9yRWFjaChmdW5jdGlvbih0bXBKbykgewogICAgICAgICAgICBsZXQgY2lkID0gdG1wSm8uY2lkOwogICAgICAgICAgICBsZXQgcGFydCA9IHRtcEpvLnBhcnQucmVwbGFjZUFsbCgnIycsICfvuZ8nKS5yZXBsYWNlQWxsKCckJywgJ++5qScpOwogICAgICAgICAgICBwbGF5dXJscy5wdXNoKAogICAgICAgICAgICAgICAgcGFydCArICckJyArIGFpZCArICdfJyArIGNpZAogICAgICAgICAgICApCiAgICAgICAgfSk7CiAgICAgICAgdHJlZU1hcFsnQuermSddID0gcGxheXVybHMuam9pbignIycpOwogICAgICAgIGxldCByZWxhdGVkRGF0YSA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5SZWxhdGVkOwogICAgICAgIHBsYXl1cmxzID0gW107CiAgICAgICAgcmVsYXRlZERhdGEuZm9yRWFjaChmdW5jdGlvbihyZCkgewogICAgICAgICAgICBsZXQgY2NpZCA9IHJkLmNpZDsKICAgICAgICAgICAgbGV0IHRpdGxlID0gcmQudGl0bGUucmVwbGFjZUFsbCgnIycsICfvuZ8nKS5yZXBsYWNlQWxsKCckJywgJ++5qScpOwogICAgICAgICAgICBsZXQgYWFpZCA9IHJkLmFpZDsKICAgICAgICAgICAgcGxheXVybHMucHVzaCgKICAgICAgICAgICAgICAgIHRpdGxlICsgJyQnICsgYWFpZCArICdfJyArIGNjaWQKICAgICAgICAgICAgKQogICAgICAgIH0pOwogICAgICAgIHRyZWVNYXBbJ+ebuOWFs+aOqOiNkCddID0gcGxheXVybHMuam9pbignIycpOwogICAgICAgIHZvZC52b2RfcGxheV9mcm9tID0gT2JqZWN0LmtleXModHJlZU1hcCkuam9pbigiJCQkIik7CiAgICAgICAgdm9kLnZvZF9wbGF5X3VybCA9IE9iamVjdC52YWx1ZXModHJlZU1hcCkuam9pbigiJCQkIik7CiAgICAgICAgVk9EID0gdm9kOwogICAgYCwKICAgIOaQnOe0ojogYGpzOgogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgZnVuY3Rpb24gc3RyaXBIdG1sVGFnKHNyYykgewogICAgICAgICAgICByZXR1cm4gc3JjLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCAnJykucmVwbGFjZSgvJi57MSw1fTsvZywgJycpLnJlcGxhY2UoL1xcc3syLH0vZywgJyAnKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gdHVybkRITShkdXJhdGlvbikgewogICAgICAgICAgICBsZXQgbWluID0gJyc7CiAgICAgICAgICAgIGxldCBzZWMgPSAnJzsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIG1pbiA9IGR1cmF0aW9uLnNwbGl0KCc6JylbMF07CiAgICAgICAgICAgICAgICBzZWMgPSBkdXJhdGlvbi5zcGxpdCgnOicpWzFdOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBtaW4gPSBNYXRoLmZsb29yKGR1cmF0aW9uIC8gNjApOwogICAgICAgICAgICAgICAgc2VjID0gZHVyYXRpb24gJSA2MDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VJbnQoZHVyYXRpb24pKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICfml6DmlYjovpPlhaUnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtaW4gPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlYyArICfnp5InCiAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA8IG1pbiAmJiBtaW4gPCA2MCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG1pbiArICfliIYnCiAgICAgICAgICAgIH0gZWxzZSBpZiAoNjAgPD0gbWluICYmIG1pbiA8IDE0NDApIHsKICAgICAgICAgICAgICAgIGlmIChtaW4gJSA2MCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGggPSBtaW4gLyA2MDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCArICflsI/ml7YnCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBoID0gbWluIC8gNjA7CiAgICAgICAgICAgICAgICAgICAgaCA9IChoICsgJycpLnNwbGl0KCcuJylbMF07CiAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSBtaW4gJSA2MDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCArICflsI/ml7YnICsgbSArICfliIYnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKG1pbiA+PSAxNDQwKSB7CiAgICAgICAgICAgICAgICBsZXQgZCA9IG1pbiAvIDYwIC8gMjQ7CiAgICAgICAgICAgICAgICBkID0gKGQgKyAnJykuc3BsaXQoJy4nKVswXTsKICAgICAgICAgICAgICAgIGxldCBoID0gbWluIC8gNjAgJSAyNDsKICAgICAgICAgICAgICAgIGggPSAoaCArICcnKS5zcGxpdCgnLicpWzBdOwogICAgICAgICAgICAgICAgbGV0IG0gPSBtaW4gJSA2MDsKICAgICAgICAgICAgICAgIGxldCBkaG0gPSAnJzsKICAgICAgICAgICAgICAgIGlmIChkID4gMCkgewogICAgICAgICAgICAgICAgICAgIGRobSA9IGQgKyAn5aSpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGggPj0gMSkgewogICAgICAgICAgICAgICAgICAgIGRobSA9IGRobSArIGggKyAn5bCP5pe2JwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG0gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZGhtID0gZGhtICsgbSArICfliIYnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGhtCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CiAgICAgICAgbGV0IHZpZGVvcyA9IFtdOwogICAgICAgIGxldCB2b2RMaXN0ID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLnJlc3VsdDsKICAgICAgICB2b2RMaXN0LmZvckVhY2goZnVuY3Rpb24odm9kKSB7CiAgICAgICAgICAgIGxldCBhaWQgPSB2b2QuYWlkOwogICAgICAgICAgICBsZXQgdGl0bGUgPSBzdHJpcEh0bWxUYWcodm9kLnRpdGxlKTsKICAgICAgICAgICAgbGV0IGltZyA9IHZvZC5waWM7CiAgICAgICAgICAgIGlmIChpbWcuc3RhcnRzV2l0aCgnLy8nKSkgewogICAgICAgICAgICAgICAgaW1nID0gJ2h0dHBzOicgKyBpbWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IHJlbWFyayA9IHR1cm5ESE0odm9kLmR1cmF0aW9uKTsKICAgICAgICAgICAgdmlkZW9zLnB1c2goewogICAgICAgICAgICAgICAgdm9kX2lkOiBhaWQsCiAgICAgICAgICAgICAgICB2b2RfbmFtZTogdGl0bGUsCiAgICAgICAgICAgICAgICB2b2RfcGljOiBpbWcsCiAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogcmVtYXJrCiAgICAgICAgICAgIH0pCiAgICAgICAgfSk7CiAgICAgICAgVk9EUyA9IHZpZGVvcwogICAgYCwKfQo=
\ No newline at end of file
diff --git a/drpy_js/我看书斋[书].js b/drpy_js/我看书斋[书].js
deleted file mode 100644
index c5d335c..0000000
--- a/drpy_js/我看书斋[书].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflsI/or7QnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+aIkeeci+S5puaWi1vkuaZdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy41Y2NjLm5ldC8nLAogICAgdXJsOiAnL2NsYXNzL2Z5Y2xhc3NfZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC8qKicsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAnJywKICAgIGZpbHRlcl91cmw6ICcnLAogICAgZmlsdGVyX2RlZjoge30sCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICcubmF2LW1lbnUtaXRlbXMmJmxpO2EmJlRleHQ7YSYmaHJlZjtjbGFzcy8oLio/KVwuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICcnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGh0bWwsICdoMSYmVGV4dCcpLnNwbGl0KCcoJylbMF0udHJpbSgpOwogICAgICAgIC8vIGxldCBjb250ZW50ID0gcGRmaChodG1sLCAnI2NoYXB0ZXJjb250ZW50JiZIdG1sJykucmVwbGFjZSgvPGJyPi9nLCAnXG4nKS5yZXBsYWNlKC9cblxuL2csICdcbicpOwogICAgICAgIGxldCBjb250ZW50ID0gcGRmaChodG1sLCAnI2NoYXB0ZXJjb250ZW50JiZIdG1sJykucmVwbGFjZSgvXG4vZywgIiIpLnNwbGl0KCI8YnI+IikuZmlsdGVyKHYgPT4gdikuc2xpY2UoMCkuam9pbigiXG4iKTsKCiAgICAgICAgbGV0IG5leHRVcmwgPSBwZChodG1sLCAnLmJvdHRlbTEmJmE6Y29udGFpbnMo5LiL5LiA6aG1KSYmaHJlZicsIE1ZX1VSTCk7CiAgICAgICAgLy9sb2cobmV4dFVybCk7CiAgICAgICAgaWYgKG5leHRVcmwgJiYgbmV4dFVybCAhPSBNWV9VUkwpIHsKICAgICAgICAgICAgbGV0IG5leHRIdG1sID0gcmVxdWVzdChuZXh0VXJsKTsKICAgICAgICAgICAgbGV0IG5leHRDb250ZW50ID0gcGRmaChuZXh0SHRtbCwgJyNjaGFwdGVyY29udGVudCYmSHRtbCcpLnJlcGxhY2UoL1xuL2csICIiKS5zcGxpdCgiPGJyPiIpLmZpbHRlcih2ID0+IHYpLnNsaWNlKDApLmpvaW4oIlxuIik7CiAgICAgICAgICAgIGNvbnRlbnQgKz0gbmV4dENvbnRlbnQ7CiAgICAgICAgfQogICAgICAgIGxldCByZXQgPSBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAgIHRpdGxlLAogICAgICAgICAgICBjb250ZW50CiAgICAgICAgfSk7CiAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogJ25vdmVsOi8vJyArIHJldCwganM6ICcnfTsKICAgIH0pLAogICAgZG91YmxlOiB0cnVlLAogICAg5o6o6I2QOiAnLmNvbnRlbnQmJmRpdi5tb2R1bGU7ZGl2Lm1vZHVsZS1pdGVtOyo7KjsqOyo7KicsCiAgICDkuIDnuqc6ICcubW9kdWxlLWxpc3Q6ZXEoLTEpJiZkaXYubW9kdWxlLWl0ZW07YSYmdGl0bGU7aW1nJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1jYXB0aW9uJiZUZXh0O2EmJmhyZWY7LmJvb2stdGV4dCYmVGV4dCcsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJ2gxJiZUZXh0Oy5ib29rLXRhZy1pY29uJiZUZXh0JywKICAgICAgICBpbWc6ICdpbWcubGF6eWxvYWQmJnNyYycsCiAgICAgICAgZGVzYzogJy5ib29rLWluZm8taXRlbSYmVGV4dCcsCiAgICAgICAgY29udGVudDogJy52b2RfY29udGVudCYmVGV4dCcsCiAgICAgICAgdGFiczogJ2gxJywKICAgICAgICBsaXN0czogJyNjaGFwdGVybGlzdCYmYScsCiAgICAgICAgdGFiX3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3VybDogJ2EmJmhyZWYnLAogICAgICAgIGxpc3RfdXJsX3ByZWZpeDogJycsCiAgICB9LAogICAg5pCc57SiOiAnLm1vZHVsZS1saXN0JiZkaXYubW9kdWxlLXNlYXJjaC1pdGVtO2gzJiZUZXh0Oyo7LmJvb2staW5mby1hY3RvciYmYSYmVGV4dDsqOyonLAp9
\ No newline at end of file
diff --git a/drpy_js/掌心世界.js b/drpy_js/掌心世界.js
deleted file mode 100644
index 31ad9c1..0000000
--- a/drpy_js/掌心世界.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/61WTWsTQRi++ytWLLubttlpFC8JFSp4ECqCbQ9iJUx3J9nVze52Z8YkSkDoQQutVEEF6UUP6sXiwUPppX+mSeu/cL422c1uTCxuocu+87xfz/vMZJ7BWIupj7Rl7cUVjT3EIz6qasbgzV7/dOfs+MP5+z1jUSy5ISZsxSUkwlUA2u229dyFQbPjBU7XssOWwtHYZzDArKhjRW4EnoUOwG7YBp4DGl3bhxiDCDYR++AvyyUtX/liBGPb3SiMIJbSjqDtgPn5vDvc4i1cl6Zt6tlP14S9qi1JW8PzCYolrJI2saxG+rsue8naHNSoai96ihQEHRTjqqKPP8YGRnF5pYkCYjDne/dv3129U99YUVGUI/FaKKSM0JtLS6oswUw9gjHmE7BaKKC67ns1qOvrqEP4241Ro8Z5NDc3nYWSCmlDguqoY/vU4Z7nOz8G734Mvh6q5ciH3SQsiSmSVh8+71a1uSfYIuEaib2gaZolbflWqhMviCjh0lDOlUU5XGFf1J5gzk2vJtsqybBOSAWvo0SDN98v9g8YlPoWkwEltMzm6XuY1KgvGpyXf6rcs+OX5yffOANZtOSiirbNcqWkKPFaTV13IIHlMPaaXgD9mkXYQpYxFRgA7exkj8W+ODr9/fGov7v/l/4ZWLAUNs17D+sbD1ZLtYwdEY0Lj7ETo22KMCmESRsDRY7J4YusKz6OLRLo+rA6rTBDQeaEZNlGWnQAJDvXrajmLddzHBSUcUvXI5GNmxUX6b0+8lCE22FAmHqLfBjhqckMgfk5pHwAcBC2mVuuJD7M4SyLFq+XchWoWLkSIovnTzsV9DPD8o18SgUYnQSKcbiFM7Lmk+VKZYehX274qMMlm3L5/Wq/f/Spf/B2yr5Lxm8Mdr9dfN4buRnaQlYro2KmKjJ5LiPJTFFSfMOi+q9/Tq5rWkGJoIUcBZ2zESOwMtrk5Osrt9dY8kePx5pgRHF/QUEDJiRMG2MBFTzKmJmbrEYY34G2a3okX35SQZ0QWQCHsfRbodNVwhsLmbRiRRS7JvMbW+9N4JO3MAuhq3fX1ot4AoD3KM76Up5BEb0yxuE4g5I4qwWjf+ICTiZCwCmV8k3Af5Msf2JEaByINAuaMccFw2LkSMyzIimXrRZwwK8HeAoFw9+rqUyoKmfsqzf2ndQi3pa8qqhU7P/V5eIoCq30avLP0uQ5je1mgS4e0f9SxyUUcmmVzKiUIvJnEcykbcq2mdiohcq55jlMOtDInJJ1fsOpZo6M7K6fDpD32oSU9L10cHB4/usLW+TXsd4f0ducOSAMAAA=
\ No newline at end of file
diff --git a/drpy_js/播客[听].js b/drpy_js/播客[听].js
deleted file mode 100644
index fbc793d..0000000
--- a/drpy_js/播客[听].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/文才2[资].js b/drpy_js/文才2[资].js
deleted file mode 100644
index 14deb53..0000000
--- a/drpy_js/文才2[资].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgIOaooeadvzogJ+mHh+mbhjEnLAogICB0aXRsZTogJ+aWh+aJjTJb6LWEXScsCiAgIGhvc3Q6ICdodHRwczovL2FwaS56ZXFhaHQuY29tJywKICAgaG9tZVRpZDogJzc1JywKICAgdXJsOiAnL2luZGV4LnBocC9hamF4L2RhdGE/bWlkPTEmdGlkPWZ5ZmlsdGVyJnBhZ2U9ZnlwYWdlJmxpbWl0PTIwJywKICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC9hamF4L3N1Z2dlc3Q/bWlkPTEmd2Q9KiombGltaXQ9MTAwJywKICAgZGV0YWlsVXJsOiAnaHR0cHM6Ly93d3cuY2Zrajg2LmNvbS9kZXRhaWwvZnlpZCcsCiAgIGZpbHRlcl91cmw6ICd7e2ZsLuWIhuexu319JywKICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQTdXU3dVNkRRQkNHN3o0RjJUT0hGaWhVWDhWNDZJR1QycHNtcG1saVM2akFRYTB4cUxXSnB3YXFUV292UnFIdDA4Q3V2SVdGVkliWjdyV0VBL0Q5dXp2Zk1KMERhWHVST2ptU2pqc1NPVFd2Tms4a2RRWnNFUk5aSXUzV3VWbDhjUU5xMmZtWHk5YlpoYm1OdHd0a2g1a1ZGaWgvSlZKWGxrcm1qemNyUzZZb21IcGhzaG9EVlJGbHdURDlpVXVxMWpCMUZ2OEZGV3QxUkdsL3h2d2hVQU9mTzdtcDd0emtLS2dXNTJKS2UvZjAyZ2VLejJYZW5LM2VnVFo0WC9aWU1jSysxUEpvZndSVXc5UjVUaUlYakxpZEJ3L1p5eFRXMW5GVnZYVTJXb012cHFuOWxjUmdwT1ZWbld4dUdjWkQyZGQ0dks2U0tLaE9TSjJ6bmdWc2ZZc0NXSngrejlPN1R4VGdKdUZwa3IxTnF3RmRFZWlqUUhPM0ErcGVPOERpNWE4YlFRR0hBa2N1WTlRRW1ueEdFVFNUejZpQ2J2QVpiYmNoMm41SHdndnA4Z01LYUlqK0taZlJSWlBEWll5dFNPSFIvUVAvc2NXTEFRVUFBQT09JywKICAgZmlsdGVyX2RlZjogewogICAgIDE6IHsg5YiG57G7OiAnMScgfSwyOiB7IOWIhuexuzogJzInIH0sMzogeyDliIbnsbs6ICczJyB9LDQ6IHsg5YiG57G7OiAnNCcgfQogICAgfSwKICAgaGVhZGVyczogewogICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmNma2o4Ni5jb20vJwogICB9LAogICDmkJzntKI6ICdqc29uOmxpc3Q7bmFtZTtwaWM7O2lkJywKICAg5Zu+54mH5pu/5o2iOiAnaHR0cHM6Ly9hcGkuemVxYWh0LmNvbT0+aHR0cHM6Ly9vYnMuZ2R1YW1vZS5jb20nLAogICDkuoznuqc6IHsKICAgICAgdGl0bGU6ICcudGl0bGUmJlRleHQ7JywKICAgICAgaW1nOiAnJywKICAgICAgZGVzYzogJzs7OzsnLAogICAgICBjb250ZW50OiAnLndyYXBwZXJfbW9yZV90ZXh0JiZUZXh0JywKICAgICAgdGFiczogJy5wbGF5ZXJfbmFtZScsCiAgICAgIGxpc3RzOiAnLmxpc3RpdGVtIGEnLAogICB9LAogICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICBsZXQgdXJsX2lkID0gaW5wdXQuc3BsaXQoJy8nKVs1XTsKICAgICAgbGV0IGppc2h1X2lkID0gaW5wdXQuc3BsaXQoJy8nKVs3XTsKICAgICAgbGV0IHQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgICAgZXZhbChnZXRDcnlwdG9KUyk7CiAgICAgIGxldCBzaWdua2V5ID0gJ2lkPScgKyB1cmxfaWQgKyAnJm5pZD0nICsgamlzaHVfaWQgKyAnJmtleT1jYjgwODUyOWJhZTZiNmJlNDVlY2ZhYjI5YTQ4ODliYyZ0PScgKyB0OwogICAgICBsZXQga2V5ID0gQ3J5cHRvSlMuU0hBMShDcnlwdG9KUy5NRDUoc2lnbmtleSkudG9TdHJpbmcoKSkudG9TdHJpbmcoKTsKICAgICAgbGV0IGpzb25fZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly93d3cuY2Zrajg2LmNvbS9hcGkvbXctbW92aWUvYW5vbnltb3VzL3ZpZGVvL2VwaXNvZGUvdXJsP2lkPScgKyB1cmxfaWQgKyAnJm5pZD0nICsgamlzaHVfaWQsIHsKICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAnVXNlci1BZ2VudCc6IFBDX1VBLAogICAgICAgICAgICAnZGV2aWNlaWQnOiAnNThhODBjNTItMTM4Yy00OGZkLThlZGItMTM4ZmQ3NGQxMmM4JywKICAgICAgICAgICAgJ3NpZ24nOiBrZXksCiAgICAgICAgICAgICd0JzogdAogICAgICAgICB9CiAgICAgIH0pKTsKICAgICAgbGV0IHVybCA9IGpzb25fZGF0YS5kYXRhOwogICAgICBsb2codXJsKTsKICAgICAgaWYgKHVybCkgewogICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICBoZWFkZXI6IHJ1bGUuaGVhZGVycwogICAgICAgICB9OwogICAgICB9CgogICB9KSwKICAgY2xhc3NfbmFtZTogJ+eUteW9sSbnlLXop4Ym57u86Im6JuWKqOa8qycsCiAgIGNsYXNzX3VybDogJzEmMiYzJjQnLAogICBjbGFzc19wYXJzZTogJycKfQ==
\ No newline at end of file
diff --git a/drpy_js/文才[资].js b/drpy_js/文才[资].js
deleted file mode 100644
index 7002e8a..0000000
--- a/drpy_js/文才[资].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfph4fpm4YxJywKICAgIHRpdGxlOiAn5paH5omNW+i1hF0nLAogICAgaG9zdDogJ2h0dHBzOi8vYXBpLnplcWFodC5jb20nLAogICAgaG9tZVRpZDogJzMzJywgLy8g5Yqo5ryrCiAgICB1cmw6ICcvYXBpLnBocC9wcm92aWRlL3ZvZC8/YWM9ZGV0YWlsJnBnPWZ5cGFnZSZ0PWZ5ZmlsdGVyJywKICAgIGZpbHRlcmFibGU6IDEsLy/mmK/lkKblkK/nlKjnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5jYXRlSWR9fScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBNjJSejA2RFFCREczMlhQSE1xZlF1MGIrQXltQjZLYzFKN1V4RFFrdGdRdEhOUWFnMXFiZUdxZzJxUjZNUXFGcDRGZGVRdWhZWmxsenh6bjkwMW12bTltaEVUVVB4aWhZK01TOWRHaGZtYnNIeUVCRGZWVG82Z3p4OGVXWGRRWCtzbTVzV3NjbHRnT2Npc29jVkVnVTZpb3R5ajZLeXBKd04wZ2pSZVV5elVuL2l6N2pTb3VkNEJQdjZxbFpiOWFjenhaRTI5R3VRYnpsemN3cDhmdzJudzVIemdlMytNcmozS1lUOXdOaWQ4cDc3TCt5V1B0RS94ank4V1RPZVVLOE9sekdqclVKelBuK2lGL1dkRitFZmFPazN5ZVVQL0FNL3M3amFoUHBkZzdNQWNDa2xwNzEydWNoajU4VEdRU3JIMlMzRElTaE1BL20renVrNUdZL3p3dDg3Y1ZTS3JFUldHa1hwVkdiamNOaWJaL1RraVg3SEd1RzZyVzRZdzNWWWs3UmxPVnVXUk5WYW5DS1MyL3lnM3c5b011NmZKM2I2Z3EvOHVHcXUwTW12K2ZmVS8zL0FNQUFBPT0nLAogICAgZmlsdGVyX2RlZjogewogICAgICAgIDE6IHtjYXRlSWQ6ICcxJ30sCiAgICAgICAgMjoge2NhdGVJZDogJzE0J30sCiAgICAgICAgNDoge2NhdGVJZDogJzQnfSwKICAgICAgICAzOiB7Y2F0ZUlkOiAnNjknfQogICAgfSwKICAgIGNsYXNzX25hbWU6ICfnlLXlvbEm55S16KeG5YmnJue7vOiJuibliqjmvKsnLAogICAgY2xhc3NfdXJsOiAnMSYyJjMmNCcsCiAgICAvLyDmuIXnqbrnu6fmib/mqKHmnb/ph4znmoTliqjmgIHnrZvpgIkKICAgIGNsYXNzX3BhcnNlOiAnJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/斗鱼直播[官].js b/drpy_js/斗鱼直播[官].js
deleted file mode 100644
index e4f55cd..0000000
--- a/drpy_js/斗鱼直播[官].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/新茶杯狐.js b/drpy_js/新茶杯狐.js
deleted file mode 100644
index 9461a42..0000000
--- a/drpy_js/新茶杯狐.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/新视觉.js b/drpy_js/新视觉.js
deleted file mode 100644
index 02ec652..0000000
--- a/drpy_js/新视觉.js
+++ /dev/null
@@ -1 +0,0 @@
-bXViYW4ubXhvbmU1LuS6jOe6py5kZXNjID0gJy52aWRlby1pbmZvLWl0ZW1zOmVxKDQpJiZUZXh0Ozs7LnZpZGVvLWluZm8tYWN0b3I6ZXEoMSkmJlRleHQ7LnZpZGVvLWluZm8tYWN0b3I6ZXEoMCkmJlRleHQnOwptdWJhbi5teG9uZTUu5LqM57qnLnRhYl90ZXh0ID0gJ2JvZHktLXNtYWxsJiZUZXh0JzsKdmFyIHJ1bGU9ewoJdGl0bGU6J+aWsOinhuinieW9seinhicsCgnmqKHmnb86J214b25lNScsCglob3N0OidodHRwczovL2thbjgwLmFwcCcsCglob3N0SnM6J3ByaW50KEhPU1QpO2xldCBodG1sPXJlcXVlc3QoSE9TVCx7aGVhZGVyczp7IlVzZXItQWdlbnQiOlBDX1VBfX0pO2xldCBzcmM9anNwLnBkZmgoaHRtbCwiLmdvOmVxKDApJiZhJiZocmVmIik7cHJpbnQoc3JjKTtIT1NUPXNyYycsCgl1cmw6Jy92b2RzaG93L2Z5ZmlsdGVyLmh0bWwnLAogICBmaWx0ZXJfdXJsOid7e2ZsLmNhdGVJZH19LXt7ZmwuYXJlYX19LXt7ZmwuYnl9fS17e2ZsLmNsYXNzfX0te3tmbC5sYW5nfX0te3tmbC5sZXR0ZXJ9fS0tLWZ5cGFnZS0tLXt7ZmwueWVhcn19JywKICAgZmlsdGVyOidINHNJQUFBQUFBQUFBKzJaVzI4YVJ4VEhuNTJQd2JNZlpuRnV6VmVwOGtBajFFWjFYY2xPSzFtUkpkdUFBOWpoNGhJd0FSdEhzUTFPd0Y0UzE4V2dOVitHbVlWdjBZV1pjeUZWVjl2V1VsdHAzL1ozenN6cytjL3RISmFYOXhZV0lsYmt5ZGN2STkvSDF5TlBJcytXWTJ0cmtjWElTdXlIdUljeTAxU0psTWMveDVaL2lzL2FyVXpOcWRZazBacWFQWWhzTEJwcnVlNjFOMVlENEhQVFhUTVFBZmpVVmtGdGxvM1BBSTZaYlkyY09veXBBY2RzRnVYTkFNYlVnUDB3Y0FKOFgvcGcxTS9BK3pTQWI5dzVrM3Nmak04QXZpOTc2VHJnTThEaWRFc0Rpbk1LNkR0OVJYRWF3Rmc2WjZQYlk0aEZBL2JiMlo5VXo2R2ZCdXgzOU1HTEhQcHBDREtmYXJ2dGxvdmcwNEMrUkZadHZ3V2ZCdFEreU10VUQ3UnJBTi9rY0Y4ZG5CcWZBUnl6L0dxYzZjT1lHbERmN1lWYitsVTZYWkNJakMzeUorUDN1SW9hMEpmYmtmbFA0Tk9BcXpnc2VHc0FxNmlCWnJXdURvczRxek5BWDNMb2ZnUWxCbkFHbktJN3FNOEZQR2ZhZURwdHFVOVJiRFVlWTRlb2JzdTlmc0JETk9wMVpNMlJKODFKZGNmNDVreno3U1puVmRXN25HdG5URitNbDdmVnplMzhlTnFFOG01em5oR0VhY0JGL1B5R2ZBWndxbmU3NURPQS9TcW5xdDZHZmhwdzB6VE9xWjhCMmhpL2tjOEF4V0x6V095NWZxOXQyVCtEZmhxd1h6THZ6YUJNdzNraVJpV25RemZmY1ROVkVJTk1oL3hZN1E2OWJuak9nYkZGNmxwZUpNQ3RnVytNNWRqS3Q3UXh4cGVkY1dzejZPMWFjN3oyTUxRR3RnamtNNEFMKyttRWZBWndFU3FPZkYwaE56RmJKdWJXd0phWGZBYllsbUUrRFd4NW1SSU5RU2R3UFI1YlpTZnI1bW8wY0FKT1lGUkU3eHZiN0pIWmw4aSt4TzFSc2tlNTNTSzd4ZTJDN0lMWnJhL1E3ajB5KzJPeVArYjJSMlIveE8wUHlmNlEyeCtRL1FHM2sxNkw2N1ZJcjhYMVdxVFg0bm90MG10eHZSYnB0YmhlUVhvRjF5dElyK0I2QmVrVlhLOGd2WUxyRmFSWGNMMkM5QXF1VjVCZXdmVUswaXU0WGtGNkJkY3JTSy8zeUxmbE4rdTBLVlZ1WC9iemY5aVVxbkk5cVZ5WkFWNDg5NXJpRmQzdks3dGtQTjg5ZjdGRzUvb3lLZE9RQnRhZS9iZ2FuNzcxNmVLMGFvdmVVZFhtVjVuNTVWKy9TbUtTY0dSdkcyNE5EVUdxUkwvS3pLK2k4NnRBL09vRUw0RlRMQWFDVkcxK2xabk1kdVd3Z2hsaUJvRXF5RGM3Vk5FWkNGTFJ1ZWZEOFhVV3h0UVFwTmJ4ZHAyYkFRMEdXQ3lqM2x1S1pRcjR2bEpEWFdIVnJRRjlqUTZiVHcxQmIvYi9ZYzNrVjhQNDFUNyt0ZGFmMXplK3RWYlo5c29SZWZnT2EyM2dzRGI1b2pZSmE0eXd4Z2hyakNBMXh0SWQxUmlxMTFQcFBKeEdEZmorWkZmbTM3dk5UYmdpa09tY2Z4N2RGUENjendCSFRxUlVzZ0VqYXdpU3FjWmJlN0lPM3lVTVlMOTZZNW9QTVNKaWZHdmh5RzFqN2FPQmJwZTJXNE44YkFEZm11bXJPcVFlQStpN0dJN3ROUGcwWUVTMXJLcEN0QVp3WloxZnh0dFEzeGpBV095aVRBNGhGZzEwUTE1TEc3LzJhQWhVRy96N2VkekwxVjRteHUwMGcwQTV1ZDMwc2kzMDB4Qm14ekE3d21PWUhjUHMrQmV5NC8yNyt0L0U3enQvK2tDVjRkZWtnU0JaeU85N3ZkLy9KbTR1eVh3YThFYnBsTWhuQUdQeCtSOURiZTI2YWZobWJnQjl1WlpiZ1BrMXdHNHAyUU1OQnRCMy9FN1c4QWJUZ0Q2Zkx4TTZsODhsZGxvSHZ5OEZINDlVRmdzQ0RmK2xqUGczdjdTSEdUSE1pR0ZHRERQaVA4K0k5eFkyZmdkbDdKWGtUU0FBQUE9PScsCiAgICBmaWx0ZXJfZGVmOnsKICAgICAgICAxOntjYXRlSWQ6JzEnfSwKICAgICAgICAyOntjYXRlSWQ6JzInfSwKICAgICAgICAzOntjYXRlSWQ6JzMnfSwKICAgICAgICA0OntjYXRlSWQ6JzQnfQogICAgfSwKICAgY2F0ZV9leGNsdWRlOifnuqrlvZXniYcnLAogICB0YWJfcmVuYW1lOnsn6auY5riF57q/6Lev4pGhJzon6YeP5a2QJywn6LaF5riF57q/6LevMyc6J+S5kOinhicsJ+mrmOa4hee6v+i3r+KRoic6J+mdnuWHoScsJ+mrmOa4hee6v+i3r+KRoyc6J+S8mOi0qCcsJ+mrmOa4hee6v+i3r+KRpCc6J+e0ouWwvCcsJ+i2hea4hee6v+i3rzInOiczNjAnfSwKCXNlYXJjaFVybDonL3ZvZC1zLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKCXRhYl9yZW1vdmU6WyflpLjlhYs0SyddLAoJbGF6eTpganM6CgkJdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwoJCXZhciB1cmwgPSBodG1sLnVybDsKCQlpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykgewoJCQl1cmwgPSB1bmVzY2FwZSh1cmwpCgkJfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7CgkJCXVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKQoJCX0KCQlpZiAoL1xcLm0zdTh8XFwubXA0Ly50ZXN0KHVybCkpIHsKCQkJaW5wdXQgPSB7CgkJCQlqeDogMCwKCQkJCXVybDogdXJsLAoJCQkJcGFyc2U6IDAKCQkJfQoJCX0gZWxzZSB7CgkJCWlucHV0CgkJfQoJYCwKfQ==
\ No newline at end of file
diff --git a/drpy_js/新闻央视[央].js b/drpy_js/新闻央视[央].js
deleted file mode 100644
index 4329b18..0000000
--- a/drpy_js/新闻央视[央].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/旋风视频.js b/drpy_js/旋风视频.js
deleted file mode 100644
index 3330b07..0000000
--- a/drpy_js/旋风视频.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/5VU62/bVBT/zl8Riclulia28+xDBeXRtGnjJc1zKaDq2rl+JI7t+l4nTrZKCKShMRhFTEKIiQ8D0UkgwWAg6Nb/pq/9F7t+lCbrpA1/sn+Pc+49PucMgRWybA2GVkK33gmR5+zJs5Mf7i2F6JOjJ+cHd+h5hvHfbp/s/3r878+3T5//cvbg2e2T3786/+2pZ8Eq1iBxnH5778WP94n0xaOv6XmPUgyECaNgbKIlhhmowOBYLiYaAyZQ2JZGBAwGMiONJVXD0AoYBIElKk2f9z/e3125fn2GBoKbOu5Du7Yq9usevhRifcwP6cu4aYhEXU+iUvbiScUbYzaT38rV1xLplqUbuZt83emgYnkbtDf41WRrBJr91WGxVjMUeyTz9Xxuo5WH27vx5mImz/UzTEWE3XJ5YZJgJ4wY305bhi5sw8INLE1y9s3tTgVXxwNTHcoR2NZwddOBfD3VrapsUzdb48l6SsyKkVZKWitxfUVYg/2k0CqMxsJapcCv8lyqvcmaW5NV3nZsxKGtbHI8LOR6fHOUVqRMwux1jOyklJkgJQfbvNIo7G6YSmp7tdPJqa1dIZ92svlecZGvJYwGm+1v10WnZiewwm+I/EgodBxH7NWkaq4rR7aypaSYyQujTF+uoCJTy5f1fq3filcbi5les+GkhgOkt+PNBbEqOIk2GjLroGnUemvjSQ/W5NGobU5AR7e1At/sNBOobVmdfs5R9ESWKTBmXcx2gDMor4qq3e5w5rAkVmGHFQtwEZpjnHTW6+OakihYk3ZWg9VyJt5bt1lnU1qrtsxNm92VEjeSCT2SGmipSBsWrQGqlYe6brOLFRHzpUg7mY8zsrFe9PQMXByke+MFibGNhUgxXWxodq08sif6EPTZPGeN7HYT5dQ6q4t4LHPIUmWzgiIyU1HV4k1bbpIGWVmhp/tnx+/cW7ckLeYPzd4eaWETyHBW14XSUjBc3oA9+IsMFEEuJ+3zx8dHD8/ufkbvzU/LyCSd3D2YUX5/dHx4QMAZ5bPn53cPZ2Q/Hbz47o6PTytJIjK9rwno4dPK46Nvzj/5Y1p5/vefZ/uf0nueJFAqEHShhaZvRzcRtKJZGeqYJi6+kiuVV3ea2aAkgRGrA2jYZDOkWDaYU1EDCO3oYOBuEr9G1H81oPy7UP5BKf909LTR/xn/ywcw3IGOqNldN2WAmhoY75jAQgTDlg19VAOT8VLoWg/FsFHHlqrLc3Ph0Mp7UxdXddPG7hYNzNy8v9o8fD7UQ26OvWW/CmE/bNewvb0kAQ0FmU7vPz7/cp9oL9bc8T8fnx2SJqBjcjROUV11SLanFk0vx0RgdaPe7o1GkQl0impABy+rA5mikCUux5AtBBigKMWC0kXIwy+8kJeHv9jgSjowxCxjFBsI0cQS3J3jwhQVE0BXhj5LX/YJSUZsFymniC5EonvoK3EuD+VxpmLoJGxM0qATlQkS5SjKdNWJ8Nvpkm+p495SFw9fuaVo6Jg0tHsfTJioYEHQv6LCQECXjeS1jYowekPfeDqIQ6R863igkQ4yu5Iyp5D3+RD9rpsaqDq0SIFFSzUxRbkyOrw8E4FhNEOeC2K8wrnRuwADtzn3Zik4BNqFKxQJ0R/qrnBlaCxfTRByM7j0a8K7F+VIfJeOiZpqotgAmHOqe1U11jNUfY6+RodfcZZL9UaduD7w7B9dkhfzEVR1xy06qaxgdMdXqu563yzw18PsGEyTOybBVefy9wWL6nT/4dnTR8E47r0EQ6Iuny0JAAA=
\ No newline at end of file
diff --git a/drpy_js/无忧影视.js b/drpy_js/无忧影视.js
deleted file mode 100644
index f0bf6f5..0000000
--- a/drpy_js/无忧影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/21QPUsDMRje+ytuSrX0kkFcevgbXHQuuSRtIsndkeS+UFdFcBBBHFRQl4rQQehUKP0z9s6fYe56QgezhPf5epPnODxjxEJsjJhGeyoNcQRVEUfsEH4vb+vlbOid9zx3LA7HlhV25PWpyHzfKCwlACcO6g97l/tBL8Pa06lk3lFnqT7eqpe1M2wDnawNElYyB1aPr5v1bLP6+plddRSPTZPPrU1GCOV5DvOyNJBMUCdItXQ8EhFlBUx4grKYIsPjHAmKJiWR7h8owVPmhuaC3CrZeQ3DmvDTfxNaateIcooGg107wZaNWUFkSpvX18vPzeqhvrm+qJ8W1f28U1V3z/Xi3fFQxdR14QvLlPH+pu2iFgwwAG0VgVBTACi22DeaBDATlMVOqQXu+g34AQBOzjWbNF3/AnAz0iG0AQAA
\ No newline at end of file
diff --git a/drpy_js/时光影院.js b/drpy_js/时光影院.js
deleted file mode 100644
index 3d1604d..0000000
--- a/drpy_js/时光影院.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/61Ty4oUMRTd+xUFQs10YyrzABfdiB+hrodMcrsTJqnUJKkuWxlw40JQmZ0IrmajW0FEBvybeehfmFdrelpnZW3CvffcnHNyby2IqUwvoXpQPb9T+c8JJ2FSbV29+3r58tXl988/359t3Yslrq3zFe5cZycYD8PQOKEAUS7oEbQN1SojeyM9EC80w5brAQuGZ0sqibW4I3PwQTga7pTMHRaIofxJ0RcTJRwPDI/Hm03kMAjeS6nj3mt5FPOTaiflZkI6MAmWU1HLQUeMDV6bliyQgrZHwoGydS3FlNT1Y3jqwskNzKbNGG8344ejkr+TZLm6xJkeUlaSZ0t/acZIoYR/tfspunr76ceb00CpNPPPjqSwbroKMnsZBv44kqlQ87pmxBFkDV1rQc4LXZebyZnuo+s/4i6+vbg+/1gIiJzV/6O8OH8dCdI2lRvFd3ND48jcG2+PUpwbw+cJb0hDnaB1vSakwDOwNDQsBAONRDvTyc8Ejrd3Riu6v1V3b63u3VrdH20Ip7p10LqoRbODHG7AHDm0hUEfJpPIKiJlAQxrUSLDpoGJ2xIU3BXMa2gsNVpK9JuN5BtO8rKdfrj+cvbPWae/J42c72fDN0ae7FswgsiNcZ/8Ah2xSPE9BAAA
\ No newline at end of file
diff --git a/drpy_js/旺旺影视.js b/drpy_js/旺旺影视.js
deleted file mode 100644
index c301fb4..0000000
--- a/drpy_js/旺旺影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+aXuuaXuuW9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cud3dnei5jbicsCiAgICB1cmw6ICcvdm9kLXR5cGUtaWQtZnljbGFzcy1wZy1meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvdm9kLXNlYXJjaC1wZy1meXBhZ2Utd2QtKiouaHRtbCcsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnUENfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19wYXJzZTogJy5uYXZfYyBhOmd0KDApOmx0KDYpO2EmJlRleHQ7YSYmaHJlZjsvdm9kLXR5cGUtaWQtKFxcZCspLXBnLTEuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICcnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgIHBhcnNlOiAxLAogICAgICAgICAgICB1cmw6IGlucHV0LAogICAgICAgICAgICBqczogJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwbGF5bGVmdCBpZnJhbWUiKS5jb250ZW50V2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwbGF5ZXIiKS5jbGljaygpJywKICAgICAgICB9CiAgICB9KSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICDmjqjojZA6ICcubGlzdF8wNiBsaTthLmJfYSYmdGl0bGU7aW1nJiZzcmM7YS5iX2EgZm9udCYmVGV4dDthJiZocmVmOy5mX2MmJlRleHQnLAogICAg5LiA57qnOiAnLmxpc3RfMDEgbGk7YS5iX2EmJnRpdGxlO2ltZyYmc3JjOy5uYW0mJlRleHQ7YSYmaHJlZicsCiAgICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICdoMSYmVGV4dDsuZF96X3kgZm9udDplcSgyKSYmVGV4dCcsCiAgICAgICAgaW1nOiAnaW1nJiZzcmMnLAogICAgICAgICBkZXNjOiAnLmNvbnRlbnRfZGV0YWlsOmVxKDEpJiZsaTplcSgxKSYmVGV4dDsuZF96X3kgZm9udDplcSg1KSYmVGV4dDsuZF96X3kgZm9udDplcSgyKSYmVGV4dDsuZF96X3kgZm9udDplcSgxKSYmVGV4dDsuZF96X3kgZm9udDplcSgwKSYmVGV4dCcsCiAgICAgICAgY29udGVudDogJy5qamllJiZUZXh0JywKICAgICAgICB0YWJzOiAnaDIgc3BhbicsCiAgICAgICAgbGlzdHM6ICcuc295dXJsOmVxKCNpZCkgbGknLAogICAgICAgICAgICB9LAogICAg5pCc57SiOiAnKicsCn0=
\ No newline at end of file
diff --git a/drpy_js/易搜[搜].js b/drpy_js/易搜[搜].js
deleted file mode 100644
index b14ddff..0000000
--- a/drpy_js/易搜[搜].js
+++ /dev/null
@@ -1 +0,0 @@
-LyoqCiAqIOino+Wvhmpzb27mlbDmja7kuK3nmoR1cmwKICogQHBhcmFtIHVybAogKiBAcmV0dXJucyB7Kn0KICovCmZ1bmN0aW9uIGRlY3J5cHQodXJsKSB7CiAgICBsZXQga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoIjRPVG9TY1VGT2FlVlRySEUiKTsKICAgIGxldCBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKCI5Q0xHYW8xdkhLcW0xN096Iik7CiAgICBsZXQgZW5jcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoewogICAgICAgIGNpcGhlcnRleHQ6IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2UodXJsKQogICAgfSwga2V5LCB7CiAgICAgICAgaXY6IGl2LAogICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLAogICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzNwogICAgfSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpOwogICAgcmV0dXJuIGVuY3J5cHRlZDsKfQoKLyoqCiAqIOiHquWKqOi+k+WFpemqjOivgeeggeW5tueZu+W9leaIkOWKn+iOt+WPlmNvb2tpZQogKiBAcmV0dXJucyB7YHNhdG9rZW49JHsqfTske3N0cmluZ31gfHN0cmluZ30KICovCmZ1bmN0aW9uIHZlcmlmeUxvZ2luKCkgewogICAgbGV0IGNudCA9IDA7CiAgICBsZXQgY29va2llID0gJyc7CiAgICBsZXQgeXptX3VybCA9ICdodHRwczovL3lpc28uZnVuL2FwaS91c2VyL2xvZ2luL2NhcHRjaGEnOwogICAgbG9nKGDpqozor4HnoIHpk77mjqU6JHt5em1fdXJsfWApOwogICAgbGV0IHN1Ym1pdF91cmwgPSAnaHR0cHM6Ly95aXNvLmZ1bi9hcGkvdXNlci9sb2dpbic7CiAgICBsb2coYHBvc3TnmbvlvZXpk77mjqU6JHtzdWJtaXRfdXJsfWApOwogICAgd2hpbGUgKGNudCA8IE9DUl9SRVRSWSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCB7Y29va2llLCBodG1sfSA9IHJlcUNvb2tpZSh5em1fdXJsLCB7dG9CYXNlNjQ6IHRydWV9KTsKICAgICAgICAgICAgbGV0IGNvZGUgPSBPY3JBcGkuY2xhc3NpZmljYXRpb24oaHRtbCk7CiAgICAgICAgICAgIGxvZyhg56ysJHtjbnQgKyAxfeasoemqjOivgeeggeivhuWIq+e7k+aenDoke2NvZGV9YCk7CiAgICAgICAgICAgIGh0bWwgPSBwb3N0KHN1Ym1pdF91cmwsIHsKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtDb29raWU6IGNvb2tpZX0sCiAgICAgICAgICAgICAgICBib2R5OiB7CiAgICAgICAgICAgICAgICAgICAgInVzZXJOYW1lIjogJ2hqZGhueDEnLAogICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCI6ICdEekBoamRobngxJywKICAgICAgICAgICAgICAgICAgICAiY29kZSI6IGNvZGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGh0bWwgPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgICAgICBpZiAoaHRtbC5jb2RlID09PSAyMDApIHsKICAgICAgICAgICAgICAgIGxldCB0b2tlblZhbHVlID0gaHRtbC5kYXRhLnRva2VuVmFsdWU7CiAgICAgICAgICAgICAgICBsb2coYOesrCR7Y250ICsgMX3mrKHpqozor4HnoIHmj5DkuqTmiJDlip9gKTsKICAgICAgICAgICAgICAgIGNvb2tpZSA9IGBzYXRva2VuPSR7dG9rZW5WYWx1ZX07JHtjb29raWV9YAogICAgICAgICAgICAgICAgcmV0dXJuIGNvb2tpZSAvLyDpnIDopoHov5Tlm55jb29raWUKICAgICAgICAgICAgfSBlbHNlIGlmIChodG1sLmNvZGUgIT09IDIwMCAmJiBjbnQgKyAxID49IE9DUl9SRVRSWSkgewogICAgICAgICAgICAgICAgY29va2llID0gJyc7IC8vIOmcgOimgea4heepuui/lOWbnmNvb2tpZQogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBsb2coYOesrCR7Y250ICsgMX3mrKHpqozor4HnoIHmj5DkuqTlpLHotKU6JHtlLm1lc3NhZ2V9YCk7CiAgICAgICAgICAgIGlmIChjbnQgKyAxID49IE9DUl9SRVRSWSkgewogICAgICAgICAgICAgICAgY29va2llID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY250ICs9IDEKICAgIH0KICAgIHJldHVybiBjb29raWUKfQoKZ2xvYmFsVGhpcy5kZWNyeXB0ID0gZGVjcnlwdDsKZ2xvYmFsVGhpcy52ZXJpZnlMb2dpbiA9IHZlcmlmeUxvZ2luOwoKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+aYk+aQnFvmkJxdJywKICAgIGhvc3Q6ICdodHRwczovL3lpc28uZnVuJywKICAgIHNlYXJjaFVybDogJy9hcGkvc2VhcmNoP25hbWU9KionLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgaGVhZGVyczogeydVc2VyLUFnZW50JzogJ1BDX1VBJ30sCiAgICB0aW1lb3V0OiAxMDAwMCwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCB1cmwgPSBpbnB1dC5zdGFydHNXaXRoKCdwdXNoOi8vJykgPyBpbnB1dCA6ICdwdXNoOi8vJyArIGlucHV0OwogICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6IHVybH07CiAgICB9KSwKICAgIC8vIOS4gOe6pzogJycsCiAgICDkuoznuqc6ICcqJywKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgY29va2llID0gZ2V0SXRlbShSVUxFX0NLLCAnJyk7CiAgICAgICAgbG9nKCflgqjlrZjnmoRjb29raWU6JyArIGNvb2tpZSk7CiAgICAgICAgbGV0IHJldCA9IHJlcXVlc3QoTVlfVVJMLCB7CiAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgIFJlZmVyZXI6IGVuY29kZVVybChgaHR0cHM6Ly95aXNvLmZ1bi9pbmZvP3NlYXJjaEtleT0ke0tFWX1gKSwKICAgICAgICAgICAgICAgIENvb2tpZTogY29va2llLAogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKC/nmbvlvZXnlKjmiLfml6DpmZDliLYvLnRlc3QocmV0KSkgewogICAgICAgICAgICBsb2cocmV0KTsKICAgICAgICAgICAgY29va2llID0gdmVyaWZ5TG9naW4oKTsKICAgICAgICAgICAgaWYgKGNvb2tpZSkgewogICAgICAgICAgICAgICAgbG9nKGDmnKzmrKHmiJDlip/ov4fpqozor4EsY29va2llOiR7Y29va2llfWApOwogICAgICAgICAgICAgICAgc2V0SXRlbShSVUxFX0NLLCBjb29raWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbG9nKGDmnKzmrKHoh6rliqjov4fmkJzntKLpqozor4HlpLHotKUsY29va2llOiR7Y29va2llfWApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldCA9IHJlcXVlc3QoTVlfVVJMLCB7CiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogZW5jb2RlVXJsKGBodHRwczovL3lpc28uZnVuL2luZm8/c2VhcmNoS2V5PSR7S0VZfWApLAogICAgICAgICAgICAgICAgICAgIENvb2tpZTogY29va2llLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShyZXQpLmRhdGEubGlzdDsKICAgICAgICBhcnIuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgIGxldCB1ID0gZGVjcnlwdChpdC51cmwpOwogICAgICAgICAgICBpZiAodSAmJiB1LmluY2x1ZGVzKCdhbGknKSkgewogICAgICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXQuZmlsZUluZm9zWzBdLmZpbGVOYW1lLAogICAgICAgICAgICAgICAgICAgIHVybDogdSwKICAgICAgICAgICAgICAgICAgICBkZXNjOiAoaXQuZ210U2hhcmUgfHwgaXQuZ210Q3JlYXRlKSArICJcbiIgKyAodSksCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgfSksCn0=
\ No newline at end of file
diff --git a/drpy_js/易点看影院[自动].js b/drpy_js/易点看影院[自动].js
deleted file mode 100644
index 7d99d20..0000000
--- a/drpy_js/易点看影院[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfoh6rliqgnLAogICAg5qih5p2/5L+u5pS5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIE9iamVjdC5hc3NpZ24obXViYW4u6Ieq5YqoLuS6jOe6pywgewogICAgICAgICAgICB0YWJzOiAnI3ktcGxheUxpc3QmJi50YWItaXRlbScsCiAgICAgICAgfSk7CiAgICB9KSwKICAgIHRpdGxlOiAn5piT54K555yL5b2x6ZmiW+iHquWKqF0nLAogICAgaG9zdDogJ2h0dHA6Ly93d3cuZWRrdHYuY29tJywKICAgIHVybDogJy92b2RzaG93X2Z5Y2xhc3MtLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyYmbGk7YSYmVGV4dDthJiZocmVmOy90eXBlXyguKj8pLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3ZvZHNlYXJjaF8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCn0=
\ No newline at end of file
diff --git a/drpy_js/易看影视.js b/drpy_js/易看影视.js
deleted file mode 100644
index bf3ee73..0000000
--- a/drpy_js/易看影视.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV2y7g637nkMoiC8thhxc2MSZ6RmiWSUPmNoqWHGp4tSSkcEjQvgN2mY0LrpKciFfLaCg39omApN7xCP98xdcLmzavejizVZdQRY6Z5syPDC08CxHtCa5rbkgBLXGYm7z5CZY4t0mMMNxOfEe4GOl21rREmR/kpxwrKZGqjki2Qf2pdWG6xy/yceNrEpivsHHievjmrUjPVYpYWOaTaF5lvI6mA0Z5SQhsHtxpxKyIJqm3U7gxutDJZvTm8nUuZdb+yOk9GPtRdAg4QyQtPAGgU4z4XlwMcL5ySQgM9AECFS2aayEyTcelDtER7EMhvlR1z62JrwbY2YFTUyFnn2hXGIcuBynyZMRjdlH81OfevqshEkHzlTtZh6/+hcQjhVKsXpYSPpMreEFiJHwCujOK+F82xUZNAEFMVWVHes25WlM
\ No newline at end of file
diff --git a/drpy_js/星云影视.js b/drpy_js/星云影视.js
deleted file mode 100644
index acaa397..0000000
--- a/drpy_js/星云影视.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOSw++yJ8kLPZGH7bSG3+EXPt4QIAb8pNoprEt1UZ1T/V4W/sp4A5sfUtLeuACMYWQe1KwhJN9KGVLad9F06m3DJf4UKGy2nF6D8SlobdUjU7SuGIIdN1MaCwSVxnbW14ZK5QtqicNMWCNSWuq9hgBaxUqyLjWUtaBZKY0laLqhrXuuA8LLMxYysxQi2FTaJoK6pm8ECQtvG7NgmE/62j2FGTXnb+f574ISQPof8eBUmsa6qCWFuMV4GOmC/l2I8t0aX5PPdpQ/56tTOZL0EnsvjeqfXAxAKnPgHjVuAQsHa/vL41DguETMScSWq8ymMm6/480y9afY9zkDwk9wknXWfm5ifUDpYaGSr3qJAzoFKC0n0XmPcVkWj+d2J1iwkJSjEYMU2aFSxb30+LAo8LKDVXYTDdG+rHvh/qBy92266Hw==
\ No newline at end of file
diff --git a/drpy_js/星空影院.js b/drpy_js/星空影院.js
deleted file mode 100644
index a92aa30..0000000
--- a/drpy_js/星空影院.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/32PPQrCQBCFe0+xlf/J1ireQjtBxmTjBjdu2J3EBPEKClZaiGilpa0gnsaIt3ANAa2cZmbex3vMxKCIigQjXTIvEVPZ6ZDt7m1SCZJQyUozF9FHwYyWbfbP8/Vxu7y2xwJxqdEQjhjqNqXJJE1btiODAkdKGEpj6WouZ9RLHQFaW0V5aQhjZgabYyAKi2agHN7/GvOd1uuW9deXJw9DUPpzqj2FeATK8pEFmgi/A+VyjyX46Vwxr0Org4HbqP0mIIyGLHFE5ObPLteP68qgxRt4sUvsJQEAAA==
\ No newline at end of file
diff --git a/drpy_js/星芽短剧[优].js b/drpy_js/星芽短剧[优].js
deleted file mode 100644
index 0fb3701..0000000
--- a/drpy_js/星芽短剧[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/星辰CT.js b/drpy_js/星辰CT.js
deleted file mode 100644
index 839a27e..0000000
--- a/drpy_js/星辰CT.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOTiFO3SByehBPSvazONySnJ+cy4Z5zzNV21STWbhkMY82erN8XvpCmd61Tt7V9r0X7Oa/3lXwfiEHq4rbiZ+KZUdeO03/VMDLOQOfyWLSkpOz1SbGYl4ywmVvdOyrDuvyyboefMPR7+JFFPvnbBnwuTahhxxgcnPquOTD/37U9/d2kuQOkzPgqLYKKYRfeoTfGPCxfPsmjJV0dJXPW2UMi4aX8Y9m47dh1SN2JsR7NdFSI/WZ7vjXVlI0TAyhP/x8goA+qO8hpy2jKB1JrSOFvU544Rtoh7oYl7aZ5aiYLbJzp5BJh52HmDju1TAMusUneOekZ8/2urAjf6fmBi5p04uWp2sz+dTfSqATyKMYYckifY+P99SJYrcGfX7b6cXvAvLW+Xjy6DULsmbq7PcNkG9uWnPgNYGS69h2DGNRJjajjEQ/DyFVKCnjxsMx/scHjmpbdlF/rs1gpQi5Mefzwdq5MtEThnudopJNDhw2D8ijboAw8fYdaqm4YJL/s3z1OTb4V2vg3MfeXa+iGAt/Gnagpwy+eL1aS3KnGQcEzcu42kdgKqYydoGKC5kP6u7C2+m5SAGM1GbTTzfuuyptxP1/4XIggQlvsehJLcees7zX231RxUBlr5DqtGb7kqBeLeGJQWI6twudxiWat0vucRNNkgIzu3Zd5nR2iN7qWr/1POJRa6xugENWOBZGuY6LFYXSye8kTegWlHqI03KdMHLM4o4gSm6ZJ0lVq5dKPXHAvBKjEDtDdQdqY1LWk63eQ+6n1G715YBQCWC/zh9umQvFtrNp5aVwI0RfkitlhJ/AVC4hpLyYTEyQFxjBPPFGBf+sdukzRVCfoXF2acg3l/4oL4t7uYy/d7SXDb+oWqug7IJssUNqXs9GW264VPwbKUS34PvP529kzf7HPCLdw/U/9AIHYQ0x+qTE8uLfgIP23SAiRckupPESoWYdTghUYoNOEM+ML27RayXJwOuIrwcTPC+mT8WQIh0qWxkLcvgObX0evF4TUpyMiTT1vkGETMzSfi+6ZOlujyb0ac0264ID+ECmOTfClrGNN2GJ8DLF4aUSwt8pGy5ceJ5jEcs5kz1C+mdn3aRGOi61qgzEHb6p7prBctZM2e6Gaw5I2IT9v+3p8yv/kbNiLmv7/UYrr1yWqUfSjREEjTgaC2OaaG6Q1JRaY23xeLVOvbXoa84eRc4fmPvsviK6YaP7L0VkVG+pUz9zGEPrPRmA7FlR4HtyiQ9FL4UH9keQ6IVuy2pw==
\ No newline at end of file
diff --git a/drpy_js/星辰[优].js b/drpy_js/星辰[优].js
deleted file mode 100644
index fb26de4..0000000
--- a/drpy_js/星辰[优].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/3VVbW8aRxD+nl9xTSPf4ZA7wI5DQCQCYsyrwQbspFFElrs9bvG9sbeHARcpaqU2kSrFkaLEVVL1RVXqSk0TS5UiuW3yZwzY/6J7xxGD4+4XuGeemdmd3ZmnWG9CkfDAslBD5zS7DnT+5NWzwYv3If7o8LvR4W9+ZucCQ5cELTHCsLwECIjAFhfwzc1VYIdEo1EXu3LFMoHuWEITyxk86OGs3w1IQN1yAlrERlcoRYdqraZAIDHKAqX0fdELbYAZbKuQiXmbIIiokDoN9348fv/27tE/e/e8aMP9n4c/fKAmb/cerBgWoaBCiBkRhO3tbb6D9IaoQH3b5kVD82iCwNhYjbCC3BVVWgwB6RLsyF0TNCCvEE29O2txsUlqx5NxXGWkEojP9Z02zTiPDaDuHCvoF4Th3pvB7qvB7pvR0/3Bw29GB3+PXr84efBoml0bZ9zZkVVeBARmpH7/tKg12BFVW3LL9PKPwZP90devT57vfzl8+eD4w5Phi7+Gz97OJKfE9KKViU/WEtksW2qhl2sXesvktmW07A3LLOKNcre6ZRbzy3qwkkqXq6KZ7y0HUmHzeojcWpDtRDuTD7QLuWoglQtv30rWoQ1XtXAcrRWuFpKrLWkz0dXpdvPZhV67VJRMlBTyvUCL5MPxVnzJzmI9vW7Lq3URBZPrWqqRW11LbXblYr6i1631Ms5WCgGjEg4mq6UVWwznOsqKmSkby8GsWVZy+tZSPXxtvVesZrPrm3c2NSNfvFpu2N2ymbKT5dCqeid9LS+gW7l4KGesVTqJ7mKwXlooES2YLjbirQwOBNq9rWZhLZxN3C5JrY4QwuGEATJbhfLl69lE+ovmioTVpiAHF6W1rY3LQFs0UGlhwewKW3hZzqa0jXi9kV7CibWEUQxUQSLulDUWm6l3TYJyxHvQbmchoHfpq6TY+DbphUwwtu+f4VkKatpniS44zewZeqOLpmljZCYaRTTamNOxxhDbd0keVwW9boS51LR4YpQJpnviOB8TuzF1ANo9g4PHx0//pY03evStoUOMDTx8/tPJ97vHb94ND746ef7nyS970w4qJAzSEak1Ldrd96dNTtcjrVFBGsTUZkGS0WnZ2kDlZFsXCTJ0zjeT3VlI5kjXhIbMXfJ9FmNt2mky0qHEfkp1j0Xzi5aT+xLH8s4hVQNId4FKYheHD3ePDg+H7w4Gv74cvXo8ePj7xXssHUfnhKFZaRRehXqDKMwNJnB+Nmc5PEAI5livQKyfJQqyeO8zptuq+j9pXH8VAvyxEpMCnc/vnwVngL4/FAjMOt4//TpzM8WxQoyrWcKGCTFB0OJ00EYNQAxMBcJUAZENrNHH1IB03o4fCItKCj0b26ejfCo+0k2bfJzok2UCbLkjcAZ1B53rMIs3HeVg/Z9GoMOPYECNc+4RLBEjk8RY5jIDddGQYHU9kzQ0k25LJ1wdWHBpcdk1cN6Rfb7TqF4f+D5qhEVvQFSqrlKM//OmYt50Jn1sPPDnxvC2gaXY/Lz35bzLyQg4DcFMx/h8xi9qUtnyHFzVqXnl8dTSUUk6R2oa1G1GRZEGoXIcUQl3zRcFnvjSXwVDOcrPCxw/f9Mn8POO7jjK+h/zbyy/9QcAAA==
\ No newline at end of file
diff --git a/drpy_js/星辰影视.js b/drpy_js/星辰影视.js
deleted file mode 100644
index 29ebfe9..0000000
--- a/drpy_js/星辰影视.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOSw++yJ8kLPZGH7bSG3+EXPHtsnVBmFYEG//5tWToijkzWBCLFrkz8xhSCoDQxM/LACy+ot+RbbWKWcLCUBPdxy64BHQe9l450Nvi1w6UJf0K+e7WB944wQwu/5v0r/aMEITbNSDpQVdrK8O2ZaLi+AWrwk2GGq8HCuBTidtQd2jC7Cpi6PYkrAY5ISTvkJtRbUhEg6O0O2CnJtq9jFJT0T7CrpVV7769IDeINx4Fktj7YrhsFFKZUR29XWjdTKcgpx1Dc9wlP0IY/KI+owc0KjQ7a1QOVkrLzMEGvcqOe1d4wcUFiVZFlUwNkZDz+6l4HOSdeCqhtG6rS5sD6MTvzVdq/oUptFmI+AB3nmcu+KeSxhdrPZc85sjVHZ0RF4Zn+Df/hLwB6KLtkOWCFxzlVhNUvaN+kwA+HFerFAlhzVCkUbq+3AkQUTNN76eSpIItv+wL2gq5p9vy4oDQ6ZkxYIhAAoFHxgQPm7N0xweQJgAHxhpk5Bgfyds3H07QVfYLIhOuxtPxzNMcL7KDC8EY+jbEhC2g6QpuIuHkIZnOQS49jivaRlaFOcmajBezf+irrQ28LD5pB3VgB064+rfxq+gf01L6QDF23stCfvJ2Iqnp14tPKCnHYZLe5Pv+yepE93Ao3YMIZ/ncSDngJZ3yFB47csOLWsMAFwO7ngYKW7UQ==
\ No newline at end of file
diff --git a/drpy_js/映播TV.js b/drpy_js/映播TV.js
deleted file mode 100644
index d176b7e..0000000
--- a/drpy_js/映播TV.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV60UlGcBdEiOOJVmPhdiVT7vhHCa/0mDJWeUj61uFKY6xJfr8+vOcq7peQia5D2mQiLa1d239DVacSLPePmEK3ar5UEqLWOh/LEbPWADeU0BSI7oOcES7V7VI5TGe7mtf1GYk6L8vsn4B3oS9WmU4MhDikDSc5nQdK4dLSKPNAJrxwtUxZtvl1kUGcprVYfYXio40j5+0D57u9IfMgWxHXDviV0+Myw3oki5NX7IhPqY15n/Upnv7aORbUBeVlU0Y3LjZsUgXJqU2d+B9z838n/OQlMILCKSj70nQD/gdTdeNDpv7cL2lA4Fm6S7oiHlSwsXoehv7pAWz24FAoUPLt/lfaiBYiADz5+SVzKociGcY78ppIxeCGa0JiZm0J2UC3a7ou2usapl+YEQiVGp5pZHB9pX5fCXgne1ERZIknwZf1PjNiKBsdn6djthc1B0/oK3W9SKk8b2qowWZE/k3GmbEhPCDTA4YjYdssaoqedz3/Sc/VxxWoWwyzH5go1C9wBlosS4urLv+gMSb6IR8Fb5L4apdv0LzqGzjw5BOzmUIGhHFVF8xroQRg6PaXydyJYtuGN6dI6+i4bYSe08obY1XeTy6Lvzg17yCZSWYK2moLvrTjj6YiyGVvDFZUibCJqzuKIiwsVRvMgkL8adKTasKvWryU3qp2aREH+lPT1n+Mbi0h1EN525CBqXUVhdfGUqDJ9W1uaokGkiDMZC15+/CkUB3hrZjokeNHIfHuvOhLtFvlt/edWv1gZZKu240ObJGeXED5a+v5y2MUgbuvI2QMU8P3h/6gQDG380nM70cP1rUwjcd5OEHg5nAKkL9yxjxYEdTNU0iSV69DVKBr5dyqRcRlB+jm12T9wc8PBlwxEH8W1Cjuz2ZU3BX5kD9PDEIco/GTx+nAz7Ry5fo9khaUzaNqkLehjrRlikfMRHTus6LkX00hoLMG7bDP2hVmBKX9yy1GR+Owb+GsDSS6/KUhxE224XXsFydS2FzuksRGavHvrA8phFAjoNOhhUYJVCimmWNUS94UxIdBITQbnj5UkGXuRXVl7UZ7TfEvHoks8skkZQOA3CIftdzqvr3H6cfM5MaQsJ/2tNnvVG0p9wUafEiwgsza7i4P56pfmf3INRLvweG9ohAqsgN9XQznkYi+68bzCZAYYpQrmao/cc9nShiDfwIH8h1paIzPeCSHX1PHnSP5IOA527UBLbMJM1NB9RlSGsU+5108/BCqsrCQ1qTsN+UJ0RU9FJ/4BqOjXHzKFj/bGfoYawbV4Q2Xmkvuodw2i2HfBRYraZPgRX9Bal4GXI7Q4E9yVCZURTraQJ4JVxIcRmO4+xKxOJO40GBubtmQDstbliRdimbYI3VSGdVKIkta+jogG0YNFquUfPwghsYAOPhfhy9CL28NsuBLbUuoW5wBQgKEwey9mBapbLfAoIXPOFr5kEnrnisHOWuUgV4PFmvBHtlANP1IhdC9bCXK/VCBdJeN45RoB3iKg+HZ3dWekY6MOt4yIaBEDMX+Mp7yxPM9udOKCRfWDM1LLTQKZ1HUvaq/sjoPBt+0xA9H9sk7zfRCz4rVYjnSIgdxFHzC/k8l+Vi8cAeWAwnApZK92yEANWpGgk0a8AMLYyrCBIrPVZ9h+j5jEeMViDsXRsZItjCwLBeVkNIEUmvbalADHYOmi5nSQX8MFrMg5KbtH10C0k0YW4Rq49vJP3zv3hPpr8IEOXmRRAMMhk2HPY+rTpnx+9jqKvWveCDrKGK3kYclfDUgmDR1P7uPFGAZ40vPhVIaH4pHmGfA==
\ No newline at end of file
diff --git a/drpy_js/暖光影视.js b/drpy_js/暖光影视.js
deleted file mode 100644
index 7267c62..0000000
--- a/drpy_js/暖光影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/5VTz2vUQBS++1cECrubYCbbBT0kLKWCB6HiQfccZjOTZOjkR2dedjeVghcFQaUnD+LJS70KHqTgf9Nu+2c4k5l1U6sUJ4eZee973/fem5cFFo5oOHWmzst7jlrAgNPQGa4/fbx8/fby57frszfD+50rryQoTw5QyzAIlsslmvPJ7hit2uPAYhrBFSRIBSuCtE04ltJP2xpnFOVQcIuSFIsknxmsuaA6r/c0bmrgA2NeVoJMPc/eoK3p9AYHnutsJ8Z01LDk8HlnD52xsaWMAxUGZk05xYQKGdqK9RrOJBX+fkZLGKqcnj579OTgcTzbt1onZuvKiWsspO4QKtqG+YYsjgtaNg5nKGeE0NKXRZjBaOyGHEYP3AgPBi/oCvSeC5pGyAtGyNtz+02pOW435CAaaqwcH7dKzGI4K5h6g4fmtv7w9fr9qfI23CSzqAhnElDCVRNStoo4izzzWQJSNV0rtgIXP15dnZ/9rsdSKCWdbDcN+kAwYL8SLGMl5hGqWeKDKuhmWVbj4vxdx7ht72aojERSlaAaHceEAmbcQZ3bUv0dUju2g1ZCL1Zktykhb4q5g3TXeIXJH4n3ogmViQr/t15Ij0YT966sNGr3DpTvyxqX/4fcKPcytmhdszykkOS3EIDnUrtLvPC7syIau+opexj9uB1IQj8DPXzapUN2GOkF2dlfn36++v5FBe6YH+/ADsl2vE5+AVK3PNlMBAAA
\ No newline at end of file
diff --git a/drpy_js/暴风资源[资].js b/drpy_js/暴风资源[资].js
deleted file mode 100644
index a0e7e1c..0000000
--- a/drpy_js/暴风资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/9PXV8goKSkottLXT0qrqkwsyNRLzs/VB9EFGQX6BUX5ZZkpqfpl+Sn69onJtjmZxSVcXGWJRQpFpTmpCrYK1VwKQPBsxcJnc/dbKai/bG9/ObvNUF0HLFySWZKTChR9NmvLy8V9L7a2PNs1IRpIxULlM/KLS4DSWBwAVaAPdF1+bmpIZgpQmaExXBtMCCqQnFiSGp9akZxTmgKy7vmUrU/3bnze2V7zYv+857vXPu1cXvN8954XnbtAYk+7VjzbsxrEgqh7sXzxi/Vbap7snfyiaVPNsz1Tnk6cUfNs2oaX03cDnfpi3XqoJQWJRcWp8aVFORB7awGBFCwJOgEAAA==
\ No newline at end of file
diff --git a/drpy_js/最新4K.js b/drpy_js/最新4K.js
deleted file mode 100644
index d82f6a5..0000000
--- a/drpy_js/最新4K.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/2VUzW7TQBC+5ylWAmXt1vG2iANyCBXiwk+hFS2nUkWLPY4dbWJ3d50moEg8AhJShUQ50APiyIEDJ3gZCOpbMLs2qe3uwdqdb+abn2/XMy6JLASQAXnTIbhWXz+vPv0KCL38cvbn489b1LNmnWoBaF2dv12dfbv9pDInmdJoTbTOVcDY6empv711Z8sHqBwKKRBnsyzSixxYvAgFV6oXL3I+Aj/RE1E5KuAyTF6s3csz29jorVcZhJt6XMg1DGEeiiIy9f3+8f7y4kOFrd6d//1+gdZC+EoXaQ95Rar0cDiBKOVey+zdKJPu4p6ItM+7Xdt23xf89UJkPOp2I655L5PpKJ1y0fc1zHVvUmhA6BD3JiaRENeRAE6c3rZbOlSVGcKA3BwrX2cHWqbTkeO4ZHCvEsG6gCamT1RGwkkBSjvpNC+021+7VPDjg71nfs6lAsdY/AnXYeIwSXLBFyCH/sbOwMGPe5e5R9vHNQKTAxVCDhuI2yuMMSKykUONgnQTv624MJvG6cjcm2UTGKswi6BW9sO9g0OyibIqzXUasrFiZWUlhT9W1L2et6TB1OWm5gEzLpwqC9K+nJY8g6c83Le8D+y5T1sVj+dYVJWzGo2R/cj2HstsclxO8SoqjYljogaEUremjVkNNhO2Rpedhs947kvAfCE4lDFGPZwEa9Rm250HFLsZz1tF58hgNBgYtCGQQWdpBFnzCvyfej3tjiXAxPf3H/l5klPXa3WTAI9AqqBlNos+hxgkSBoQo2QDX3qN46sswmudN40T0EkW4Svcx2h6NSXXbV44Mwbbj9sUoLS1CrNPYf3TauoSkC3vmtn+iCzVdcwODqOarbX0XLpeZ9n5B5bZ5bMwBQAA
\ No newline at end of file
diff --git a/drpy_js/有声听书网[听].js b/drpy_js/有声听书网[听].js
deleted file mode 100644
index 4bc56f4..0000000
--- a/drpy_js/有声听书网[听].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflkKzkuaYnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+acieWjsOWQrOS5pue9kVvlkKxdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy55c3RzLmNjLycsCiAgICB1cmw6ICcvYm9vay9meWNsYXNzL2xhc3R1cGRhdGUvZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC5odG1sP3NlYXJjaHR5cGU9bmFtZSZzZWFyY2h3b3JkPSoqJnBhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICcnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX3BhcnNlOiAnLm5hdi1vbCBsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPylcL2xhc3R1cGRhdGUnLAogICAgY2F0ZV9leGNsdWRlOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlucHV0ID0ge3BhcnNlOiAxLCB1cmw6IGlucHV0LCBqczogJyd9OwogICAgfSksCiAgICBkb3VibGU6IHRydWUsCiAgICAvL+aOqOiNkDon5YiX6KGoMTvliJfooagyO+agh+mimDvlm77niYc75o+P6L+wO+mTvuaOpTvor6bmg4UnLAogICAg5LiA57qnOiAnLmxpc3Qtd29ya3MgbGk7YSYmdGl0bGU7aW1nJiZkYXRhLW9yaWdpbmFsO3NwYW4mJlRleHQ7YSYmaHJlZjtkZCYmVGV4dCcsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJy5jb250ZW50JiZhJiZ0aXRsZTsuY29udGVudCYmYTplcSgxKSYmVGV4dCcsCiAgICAgICAgaW1nOiAnLmNvbnRlbnQmJmltZyYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJ+S4u+imgeS/oeaBrzsuY29udGVudCYmZGQ6ZXEoMykmJlRleHQ75Zyw5Yy6Oy5jb250ZW50JiZkZDplcSg0KSYmVGV4dDvlr7zmvJQnLAogICAgICAgIGNvbnRlbnQ6ICcuY29udGVudCYmLmJvb2stZGVzJiZUZXh0JywKICAgICAgICB0YWJzOiAnLnBsYXlsaXN0LXRvcCYmaDInLAogICAgICAgIC8vdGFiczogJy5jaGFwdGVyLWxpc3QtYmxvY2smJmxpJywKICAgICAgICAvLyDliJfooajmnInliIbpobXvvIzmmoLml7bop6PlhrPkuI3kuobjgILov5nnp43ogIE2572R56uZCiAgICAgICAgbGlzdHM6ICcucGxheWxpc3QmJmxpJywKICAgICAgICB0YWJfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RfdXJsOiAnYSYmaHJlZicsCiAgICAgICAgbGlzdF91cmxfcHJlZml4OiAnJywKICAgIH0sCgogICAg5pCc57SiOiAnLmxpc3Qtd29ya3MgbGk7KjsqOyo7Kjvor6bmg4UnLAp9
\ No newline at end of file
diff --git a/drpy_js/有声小说吧[听].js b/drpy_js/有声小说吧[听].js
deleted file mode 100644
index f0c5bb4..0000000
--- a/drpy_js/有声小说吧[听].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflkKzkuaYnLAogICAgdGl0bGU6ICfmnInlo7DlsI/or7TlkKcnLAogICAg57yW56CBOiAnZ2IxODAzMCcsCiAgICAvLyBob3N0OiAnaHR0cDovL20ueXN4czgudmlwJywKICAgIGhvc3Q6ICdodHRwOi8vbS55c3hzOC50b3AnLAogICAgdXJsOiAnL2Rvd25saXN0L2Z5Y2xhc3NfZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC5hc3A/cGFnZT1meXBhZ2Umc2VhcmNod29yZD0qKiZzZWFyY2h0eXBlPS0xJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIC8vIGhvbWVVcmw6Jy9mZW5sZWkvJywKICAgIC8vIGNsYXNzX3BhcnNlOiAnLnBkLWNsYXNzOmVxKDApIGRkO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS5odG1sJywKICAgIGNsYXNzX25hbWU6ICfnvZHnu5znjoTlubsm5oGQ5oCW5oKs55aRJuS8oOe7n+atpuS+oCbpg73luILoqIDmg4Um5a6Y5Zy65YiR5L6mJuWOhuWPsuWGm+S6iybmjqLpmannm5flopMm6IGM5Zy65ZWG5oiYJuaYjuacnemCo+S6m+S6i+WEvybor4TkuabkuIvovb0m55u45aOw5oiP5puyJuS6uueJqeS8oOiusCblub/mkq3liacm55m+5a626K6y5Z2bJuWkluivreivu+eJqSbmnInlo7DmloflraYm5YS/56ul6K+754mpJueuoeeQhuiQpemUgCcsCiAgICBjbGFzc191cmw6ICdyNTImcjE3JnIxMiZyMTMmcjE0JnIxNSZyNDUmcjgxJnIzNiZyMyZyNyZyMTYmcjE4JnIzMiZyMzUmcjQxJnI0JnI2JywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAgLy8gZG91YmxlOnRydWUsCiAgICDmjqjojZA6ICcubGlzdC11bCAubGlzdC1saTsubGlzdC1uYW1lJiZUZXh0Oyo7Lm1vZHVsZS1zbGlkZS1hdXRob3ImJlRleHQ7KicsCiAgICDkuIDnuqc6ICcuYm9vay1vbCYmbGk7aDQmJlRleHQ7aW1nJiZkYXRhLW9yaWdpbmFsOy5ib29rLW1ldGEmJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICAvLyB0aXRsZTonaDImJlRleHQ7LmJvb2stY2VsbCAuYm9vay1yYW5kLWE6ZXEoMikmJlRleHQnLAogICAgICAgIHRpdGxlOiAnaDEmJlRleHQ7LmJvb2stY2VsbCAuYm9vay1yYW5kLWE6ZXEoMCkmJmEmJlRleHQnLAogICAgICAgIGltZzogJy5ib29rIGltZyYmc3JjJywKICAgICAgICAvLyBkZXNjOic7Ozs7LmJvb2stZGVzIHAmJlRleHQnLAogICAgICAgIGRlc2M6ICc7OzsuYm9vay1yYW5kLWE6ZXEoMikmJlRleHQ7LmJvb2stZGVzIHAmJlRleHQnLAogICAgICAgIGNvbnRlbnQ6ICcuYm9vay1kZXMtLXAmJlRleHQnLAogICAgICAgIHRhYnM6ICcucGxheWxpc3QtdG9wJiZoMicsCiAgICAgICAgLy8gbGlzdHM6J2pzOnBkPWpzcC5wZDtsZXQgdXJsPXBkKGh0bWwsIi5ib29rYnV0dG9uJiZhJiZocmVmIik7bG9nKHVybCk7aHRtbD1yZXF1ZXN0KHVybCk7bGV0IHY9cGQoaHRtbCwiLmJvb2tzaXRlJiZzY3JpcHQmJkh0bWwiKTt2YXIgZG9jdW1lbnQ9e307dmFyIFZpZGVvTGlzdEpzb247VmlkZW9MaXN0SnNvbj1ldmFsKHYuc3BsaXQoIlZpZGVvTGlzdEpzb249IilbMV0uc3BsaXQoIix1cmxpbmZvIilbMF0pO2xvZyh0eXBlb2YgVmlkZW9MaXN0SnNvbik7bGV0IGxpc3QxPVZpZGVvTGlzdEpzb25bMF1bMV07TElTVFM9W2xpc3QxXTtsb2coTElTVFMpOycsCiAgICAgICAgLy8g5pyJ5aOw5bCP6K+05pyJ6Ziy55uX6ZO+LOaIkeacjeS6hijkuIrpnaLnmoTliJfooajmlbDmja7mraPluLjmi7/liLDkuoYs5rKh5rOV5pKt5pS+KQogICAgICAgIC8vICBsaXN0czonI3BsYXlsaXN0OmVxKCNpZCkmJnVsJiZsaScsCiAgICAgICAgbGlzdHM6ICcjcGxheWxpc3QgdWwgbGknLAogICAgfSwKICAgIOaQnOe0ojogJyonLAp9
\ No newline at end of file
diff --git a/drpy_js/有声绘本网[听].js b/drpy_js/有声绘本网[听].js
deleted file mode 100644
index 6f53883..0000000
--- a/drpy_js/有声绘本网[听].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/21RTWvbQBC951cIApLt2JJoSQISJqTQQ6Elh9Y3g9moY2nxSlZ2V1VMCITSHEo/cHKJW0wPSakNCXEMxU1j+m8iyf0XXX34UMjsYdk3b9/MvHmDqEQDAlJdOliRRCTTefTtgyEpUf/q/vcPpZqhHHMCAoyH76OLm2Q+iIdXyZ+TIut0GRdJh3OfGZoWhqHa6wbMAc92ArwLnmp13YIbUCKoWrtnEcSYuH1kQ5FjgKjlNHJG/lB9x9+S9+qVipwS6w/w0W7a2qMc2guw1XmZ4Yak51gbEw40pxWQA+g1UGYUQ6ehNBjQ2rYNHldE/Rc7T549f9pqbCsZ43DpgwvdQAy7rut6VdOEB8nll+Tru+h4HE2PFpNf8fTtYnYcn82qf+eDxfX3eDB5LLjx5DIZnWYa2eAtH1GWOrrqghfUXIQ9WSbYsHlJLxuElzbLJpLlV7DP09uh0DaFiVqp2QzXysX8PkG9pRCnAeQowS4WHW7kr/jzePGpLwpVik/3t0fJ3UgAiHJsEVBh3wLq85q1nlbKNm1i15ZlRi1T9cVuawR34P9mlmJ3H3OxpXrcHyY/zx9Q56FZESc1sFBKvxz+A+3Iko+AAgAA
\ No newline at end of file
diff --git a/drpy_js/木偶哥哥[盘].js b/drpy_js/木偶哥哥[盘].js
deleted file mode 100644
index 1ffea94..0000000
--- a/drpy_js/木偶哥哥[盘].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/木瓜影视.js b/drpy_js/木瓜影视.js
deleted file mode 100644
index 0e5bd03..0000000
--- a/drpy_js/木瓜影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/朴樱影视.js b/drpy_js/朴樱影视.js
deleted file mode 100644
index 6efa984..0000000
--- a/drpy_js/朴樱影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/来看点播[自动].js b/drpy_js/来看点播[自动].js
deleted file mode 100644
index 2af7289..0000000
--- a/drpy_js/来看点播[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICfmnaXnnIvngrnmkq0nLAogIGhvc3Q6ICdodHRwczovL2xrdm9kLm1lLycsCiAgdXJsOiAnL3Nob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogIHNlYXJjaFVybDogJy9pbmRleC5waHAvcnNzL2luZGV4LnhtbD93ZD0qKicsCiAgc2VhcmNoYWJsZTogMiwKICBxdWlja1NlYXJjaDogMCwKICBmaWx0ZXJhYmxlOiAwLAogIGZpbHRlcjogJycsCiAgZmlsdGVyX3VybDogJycsCiAgZmlsdGVyX2RlZjoge30sCiAgaGVhZGVyczogewogICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICB9LAogIHRpbWVvdXQ6IDUwMDAsCiAgY2xhc3NfcGFyc2U6ICcuZmxleC5hcm91bmQmJmxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS5odG1sJywKICBjYXRlX2V4Y2x1ZGU6ICcnLAogIHBsYXlfcGFyc2U6IHRydWUsCiAgbGF6eTogImpzOlxuICBpbnB1dCA9IHsgcGFyc2U6IDEsIHVybDogaW5wdXQsIGpzOiAnJyB9OyIsCiAgZG91YmxlOiB0cnVlLAogIOaOqOiNkDogJyonLAogIOS4gOe6pzogJ2JvZHkmJi5wdWJsaWMtbGlzdC1ib3g7YSYmdGl0bGU7aW1nJiZkYXRhLXNyYzsucHVibGljLWxpc3Qtc3VidGl0bGUmJlRleHQ7YSYmaHJlZicsCiAg5LqM57qnOiB7CiAgICB0aXRsZTogJ2gzJiZUZXh0Oy5obC1tYTAmJlRleHQnLAogICAgaW1nOiAnLm1hc2stMSYmZGF0YS1zcmMnLAogICAgZGVzYzogJy5kZXRhaWwtaW5mbyAuc2xpZGUtaW5mbzplcSgxKS0tc3Ryb25nJiZUZXh0Oy5kZXBsb3ltZW50Lm5vbmUuY29yNSYmc3BhbiYmVGV4dDsuZGVwbG95bWVudC5ub25lLmNvcjUmJnNwYW46ZXEoMikmJlRleHQ7LmRldGFpbC1pbmZvIC5zbGlkZS1pbmZvOmVxKDMpLS1zdHJvbmcmJlRleHQ7LmRldGFpbC1pbmZvIC5zbGlkZS1pbmZvOmVxKDIpLS1zdHJvbmcmJlRleHQnLAogICAgY29udGVudDogJyNoZWlnaHRfbGltaXQmJlRleHQnLAogICAgdGFiczogJy5hbnRob2xvZ3ktdGFiIGEnLAogICAgbGlzdHM6ICcuYW50aG9sb2d5LWxpc3QtcGxheTplcSgjaWQpJiZsaScsCiAgICB0YWJfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgbGlzdF90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICBsaXN0X3VybDogJ2EmJmhyZWYnLAogIH0sCiAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBpdGVtcyA9IHBkZmEoaHRtbCwgJ3JzcyYmaXRlbScpOwogICAgICAgIC8vIGxvZyhpdGVtcyk7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgaXQgPSBpdC5yZXBsYWNlKC90aXRsZXxsaW5rfGF1dGhvcnxwdWJkYXRlfGRlc2NyaXB0aW9uL2csICdwJyk7CiAgICAgICAgICAgIGxldCB1cmwgPSBwZGZoKGl0LCAncDplcSgxKSYmVGV4dCcpOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsICdwJiZUZXh0JyksCiAgICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsICdwOmVxKDMpJiZUZXh0JyksCiAgICAgICAgICAgICAgICBjb250ZW50OiBwZGZoKGl0LCAncDplcSgyKSYmVGV4dCcpLAogICAgICAgICAgICAgICAgcGljX3VybDogIiIsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAp9
\ No newline at end of file
diff --git a/drpy_js/极客资源[资].js b/drpy_js/极客资源[资].js
deleted file mode 100644
index b5b8221..0000000
--- a/drpy_js/极客资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-tAUuTIQCctAP+llHViSqcJB7gsitOEwbqrKwlWXwoazgJ6MVu44FKFj/HutaeUHf0o/9UrNEwUtvVp7DPOrSleE5DPnlIM913B7g8hv1e8e7tIiu35cZ9oiDCvM6zac4ZawFkMqMrWnMHPiIBBsvGjkHdaHgZBUECLKYd+G055lj8aNGW+/kcuf/y/gocqjrU6rYYyVz2gezIGMytydLZRNKSxYT4GXrE/ErP9rUebKrf9WwhWEmQlaz4byybnj6Ba5K0aVzLmfoxYJKqX+W/6vp6iHNnKu8ycpHBSCImod27Yhyiie+wENc1FG0JpH4bXbXBI7Q5EVK9JZY+fSrufT2aRRi7PitsUr2DmOdD3g=
\ No newline at end of file
diff --git a/drpy_js/极点影视.js b/drpy_js/极点影视.js
deleted file mode 100644
index 747145e..0000000
--- a/drpy_js/极点影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+aegeeCueW9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly9ubnN2aXAuc2JzJywKICAgIHVybDogJy92b2QvaW5kZXguaHRtbD9wYWdlPWZ5cGFnZSZ0eXBlX2lkPWZ5Y2xhc3MnLAogICAgc2VhcmNoVXJsOiAnL3B1YmxpYy9hdXRvL3NlYXJjaDEuaHRtbD9rZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDAsCiAgICBmaWx0ZXI6ICcnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19wYXJzZTogJy5zd2lwZXItd3JhcHBlciYmYTpsdCg1KTthJiZUZXh0O2EmJmhyZWY7KFxcZCspJywKICAgIGNhdGVfZXhjbHVkZTogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJycsCiAgICBkb3VibGU6IHRydWUsCiAgICDmjqjojZA6ICcqJywKICAgIOS4gOe6pzogJy5saXN0LWl0ZW1zJiYudmVydGljYWwtYm94Oy50aXRsZSYmVGV4dDsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICcudGl0bGUmJlRleHQ7dm9kX3R5cGUnLAogICAgICAgIGltZzogJ2ltZyYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJy5kZXNjJiZsYWJlbDplcSgxKSYmVGV4dDtsYWJlbDplcSgzKSYmVGV4dDvlnLDljLo7bGFiZWw6ZXEoNCkmJlRleHQ7LmRlc2MmJmxhYmVsJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnbGFiZWw6ZXEoNSkmJlRleHQnLAogICAgICAgIHRhYnM6ICcucGxheWxpbmUtdGFicy10aXRsZSBsaScsCiAgICAgICAgbGlzdHM6ICcucGxheWxpbmUtdGFiLWl0ZW06ZXEoI2lkKSYmYScsCiAgICAgICAgdGFiX3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3VybDogJ2EmJmhyZWYnLAogICAgfSwKICAgIOaQnOe0ojogJyonLAp9
\ No newline at end of file
diff --git a/drpy_js/极速资源[资].js b/drpy_js/极速资源[资].js
deleted file mode 100644
index ed9eba7..0000000
--- a/drpy_js/极速资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV5hJyHcdj7f1dyct+hTD1Zm4tlENfmYNijfZ7CkdPOKtdeghkfuazcpspRIpG3KrE6WPCrqF1aMcmLq0UGhJZBEwb3LcLiruuR4GT6zrWcyivTNR7nyirC8ZsgrUQuljbS9PBlcDfUPpOZYwNrYaB5OfuU9dUCJOI/mTmVhFYsng51wj69LQIUS04wwXi37J6vW31K/mVlQu1QnmGw/kz3YpbGuJViWGCDXZnoeNBtALMIuViXBSZsHZd7Q+QQ0bIylhIK/EBTYWzt2o+4D7/IzckXAZG3Kl5Iw0sRWwe+WlZa92eOCQSDVLgXibBZtOeRRR5otgiaPmdbapTpnIyqtXfW6lsRyIvQ5ai1ZR+M6FFonsK0gLwSoinzubycBIDg==
\ No newline at end of file
diff --git a/drpy_js/柠檬影视[V2].js b/drpy_js/柠檬影视[V2].js
deleted file mode 100644
index 75dc9d4..0000000
--- a/drpy_js/柠檬影视[V2].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+afoOaqrOW9seinhltWMl0nLCAvLyBjc3BfQXBwWXNWMgogICAgaG9zdDogJ2h0dHA6Ly9tZi5zb25nc2h1LmN5b3UvYXBpLnBocC9hcHAvJywKICAgIHVybDogJ3ZpZGVvP3RpZD1meWNsYXNzZnlmaWx0ZXImbGltaXQ9MjAmcGc9ZnlwYWdlJywKICAgIGZpbHRlcl91cmw6ICcmY2xhc3M9e3tmbC5jbGFzc319JmFyZWE9e3tmbC5hcmVhfX0mbGFuZz17e2ZsLmxhbmd9fSZsZXR0ZXI9e3tmbC5sZXR0ZXJ9fSZ5ZWFyPXt7ZmwueWVhcn19JmJ5PXt7ZmwuYnl9fScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJZM1c0YVJ4VEgzNFZyWCt3UzU2TjVsU29YcUVLOWlPdUxSSzBVUlpac1l3Z1F4MkRMd2FIZ3I4WVk0aG9NdHVQQ1V1QmxkbmFYdCtpd1o4NEhVYjFhdFZhdXVPTjN6cDdaT1dlWTg1L1p0d2s3OGZ6SHQ0bVg2VGVKNTRtZlZsS3ZYeWVXRXF1cFg5SWFWYUhwWmJLYWYwdXQvSm9PbjF1ZG1iT3RhYVkxTTJ0SXJDMFphNld1bnpkV0Erano4ejB6RUFQNnZJMnl0MTR4UGdNMFpySGxqdW80SmdDTjJkeFZneUdPQ1VCeE5IRUdlbC8raytzVThIMEE2QXZhNTJyN3d2Z00wUHVLVi80SWZRYkVQUDM5SWM5ekJ1UnJ2T041R3FDNXRNL2Q4UW5PQllEaWNudlQ2aGVNQTZDNG93czljNHdEaUZOUGIvUFNyK3lpRDRCOG1hSzMrVHY2QUNqM1lVbGwrNWc3QVBxbWgzdmVwNGJ4R2FBeEsrK0Nnb05qQWxCKzQ0Ni8vMVdOZXBnaU1UMVJPZ3MrMHlvQ2tHOG5wMHJYNkFPZ1ZaeVU5UnJnS2dKd1ZldmU0UzVWTlFUeWJVMzhQekVUQTFTQjBhNC9yTTlOZU02MDltTDJKT3lpMUt0MFNteWllbGR0TzNFMzBWbHpXczNoRkFDbzBPZFZyMytGaFFiZ1VuVzl3WmhLRlFKTmZieWphaU9jTkFBdDBNMUg5aG1nTXI3dnNjOEF4UjAwdlBvbHhnSFFQSSsvY0p3Qlh2Uy8yR2VBNTlLVmMrbk94WDNvS3VjYzR3QW9icXVrSzZYeXVGZVlLWlBHeEMrMS9VSVZreUhtRFh6aXZaL29NTnJEeVBSRTlzNGQ0cll5SUJkOUpiWDZNeTk2Y05VT1d1dHhGNzAyMHMvajBBQmlFZGhuZ0JiMitveDlCbWdSRGticXd3RzdtY1V5Q1RlQVdGNzJHUkIvR2VFREVNc3JNZ0VRQlZTZERCZHdCcktBYjlLcFYyTFhERzdkNFNobUFaTlc4cEd4aFQrRlBjbjJwTFRiYkxlbDNXSzdKZXoyRDJUWFA0WDlHZHVmU2Z0VHRqK1Y5aWRzZnlMdGo5bitXTnFYMmI0czdaeXZMZk8xT1Y5YjVtdHp2cmJNMStaOGJabXZ4ZmxhTWwrTDg3Vmt2aGJuWmNtOExNN0xrbmxabkpmK3FmOEdMNVlTeVljNmlFVElScFQ0ZzNhcGpUdVZLYzNKbVRIRk9laW96cDF5YUFNQXhEeEEzSHZRaVRwQVJCMTBvaVF5U3REZHdTbExwQUUrSkdTOUttcVFBWHJmeHh3ZlNnd0krZVNhR1lqYldmK1BuT2F5K25sUyt4RGl5TlIvbGRvb1dZeVc0ZnVsTDFLR0sxMnRWT3J3bEk1WXlBdlora2EyRnZLemtKOUkrWG4wUVBJelhTLzR6WFg4Z3dMSTlybDFMTnFuQnRveW5VblF6ZU9XQWFDNHZiWlh4SnVKQWY3VFo3MStuLzcwSWZCbXVYRUhaZG9zSVloK05QMk1jekZBUHVkQ2RZN1FCMER2cTEyTE94MEF4ZTBmZTdkMEp3ZWd1SDdmeTVkY1o0L3Zabk1tcXNQdEgxcVFzQTRBTkVadk05all4bWlBN3lBVnV2M3JSaytURGtIMEhOMkZ1T2ZNZ0h5WFRWMVk5QUVzbXUraStTNmE3N2ZOZC9tQm1tOVVnNDM2WU9objJzRXBObTBETk9aT3l5L2pOeGtENUNzZitaZjBRUTJBTzhyOUgvQ0M4bUd3Zy9jUUF6VG15YW1xMFVZQ2lITlA4T3FPK0NnSVFPK0wrQ1FXZFNkU1hWMm1XM3dmZ1BRMWJvUlBBOVh6Yk96K2pSOFREZkM5NUZqbGEzUXZDWUh1SHM2MWFxTmdHYUF4YTBXdmlzSmpnT3ZTVTVNRHFrc0kzK04rVVJ1NURsMEZBZUxjQmY1VkdCWW45b1ZvTEVRanRtaXMvUU4xZWdSMHV4b0FBQT09JywKICAgIGRldGFpbFVybDogJy9kZXRhaWw/dm9kX2lkPWZ5aWQnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaD90ZXh0PSoqJnBnPWZ5cGFnZScsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgaGVhZGVyczogeydVc2VyLUFnZW50JzogJ29raHR0cC80LjEuMCd9LAogICAgdGltZW91dDogNTAwMCwKICAgIC8vIOWIhuexu+etm+mAiSAvYXBpLnBocC9hcHAvbmF2IHx8IC94Z2FwcC5waHAvdjEvbmF2IHx8IC9hcGkucGhwL3YxLnZvZC90eXBlcwogICAgY2xhc3NfbmFtZTogJ+eUteW9sSbnlLXop4bliacm57u86Im6JuWKqOa8qycsCiAgICBjbGFzc191cmw6ICcxJjImMyY0JywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiBganM6CiAgICAgICAgbGV0IHBsYXlfVXJsID0gJyc7CiAgICAgICAgaWYgKC9cXC5tM3U4fFxcLm1wNC8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgICAgICBwYXJzZTogMAogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICgvLC8udGVzdChpbnB1dCkgJiYgL3VybD0vLnRlc3QoaW5wdXQpKSB7CiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc3BsaXQoJ3VybD0nKTsKICAgICAgICAgICAgcGxheV9VcmwgPSBpbnB1dFswXS5zcGxpdCgnLCcpWzBdOwogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiBpbnB1dFsxXSwKICAgICAgICAgICAgICAgIHBsYXlVcmw6IHBsYXlfVXJsLAogICAgICAgICAgICAgICAgcGFyc2U6IDEKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoL3VybD18aWQ9Ly50ZXN0KGlucHV0KSkgewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKS51cmwsCiAgICAgICAgICAgICAgICBwYXJzZTogMAogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICgveW91a3V8aXFpeWl8dlxcLnFxXFwuY29tfHBwdHZ8c29odXxsZVxcLmNvbXwxOTA1XFwuY29tfG1ndHZ8YmlsaWJpbGl8aXhpZ3VhLy50ZXN0KGlucHV0KSkgewoJCQlwbGF5X1VybCA9IC9iaWxpYmlsaS8udGVzdChpbnB1dCkgPyAnaHR0cHM6Ly9qeC54bWZsdi5jb20vP3VybD0nIDogJ2h0dHBzOi8vanguNzc3amlleGkuY29tL3BsYXllci8/dXJsPSc7IC8vIHR5cGUw55qEcGFyc2UKCQkJLy8gcGxheV9VcmwgPSAvYmlsaWJpbGkvLnRlc3QoaW5wdXQpID8gJ2h0dHBzOi8vangueG1mbHYuY29tLz91cmw9JyA6ICdqc29uOmh0dHA6Ly9wYW5kb3duLnByby9hcHAva2tkeS5waHA/dXJsPSc7IC8vIHR5cGUx55qEcGFyc2Xlj6/liqAnanNvbjon55u05o6l6Kej5p6QdXJsICjpmaTkuobonILonJznmoQn5b2x6KeGVFYn77yM5YW25a6D55qE5aOz55qG5Y+v55SoKQoJCQlpbnB1dCA9IHsKCQkJCWp4OiAwLAoJCQkJdXJsOiBpbnB1dCwKCQkJCXBsYXlVcmw6IHBsYXlfVXJsLAoJCQkJcGFyc2U6IDEsCgkJCQloZWFkZXI6IEpTT04uc3RyaW5naWZ5KHsKCQkJCQkndXNlci1hZ2VudCc6ICdNb3ppbGxhLzUuMCcsCgkJCQl9KSwKCQkJfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlucHV0CiAgICAgICAgfQogICAgYCwKICAgIGxpbWl0OiA2LAogICAgLy8g5Zu+54mH5p2l5rqQOidAUmVmZXJlcj1odHRwczovL2FwaS5kb3ViYW4uY29tL0BVc2VyLUFnZW50PU1vemlsbGEvNS4wJTIwKFdpbmRvd3MlMjBOVCUyMDEwLjA7JTIwV2luNjQ7JTIweDY0KSUyMEFwcGxlV2ViS2l0LzUzNy4zNiUyMChLSFRNTCwlMjBsaWtlJTIwR2Vja28pJTIwQ2hyb21lLzExMy4wLjAuMCUyMFNhZmFyaS81MzcuMzYnLAogICAg5o6o6I2QOiBganM6CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBsZXQganNvbmRhdGEgPSBbXTsKICAgICAgICBsZXQgdmlkZW9MaXN0ID0gW107CiAgICAgICAgaWYgKC92MVxcLnZvZC8udGVzdChIT1NUKSkgewogICAgICAgICAgICBpZihIT1NULmVuZHNXaXRoKCcvJykpewogICAgICAgICAgICAgICAganNvbmRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoSE9TVCArICd2b2RQaGJBbGwnKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBqc29uZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChIT1NUICsgJy92b2RQaGJBbGwnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmlkZW9MaXN0ID0ganNvbmRhdGEuZGF0YS5saXN0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmKEhPU1QuZW5kc1dpdGgoJy8nKSl7CiAgICAgICAgICAgICAgICBqc29uZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChIT1NUICsgJ2luZGV4X3ZpZGVvJykpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAganNvbmRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoSE9TVCArICcvaW5kZXhfdmlkZW8nKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmlkZW9MaXN0ID0gL3hnYXBwLy50ZXN0KEhPU1QpID8ganNvbmRhdGEuZGF0YSA6IGpzb25kYXRhLmxpc3Q7CiAgICAgICAgfQogICAgICAgIC8vIGxvZygndmlkZW9MaXN0ID09PT09PT09PT4gJytzdHJpbmdpZnkodmlkZW9MaXN0KSk7CiAgICAgICAgdmlkZW9MaXN0LmZvckVhY2goKGl0LGlkZXgpID0+IHsKICAgICAgICAgICAgbGV0IHZsaXN0ID0gL3YxXFwudm9kLy50ZXN0KEhPU1QpID8gdmlkZW9MaXN0W2lkZXhdLnZvZF9saXN0IDogdmlkZW9MaXN0W2lkZXhdLnZsaXN0IDsKICAgICAgICAgICAgdmxpc3QuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgIHVybDppdC52b2RfaWQsCiAgICAgICAgICAgICAgICAgICAgdGl0bGU6aXQudm9kX25hbWUsCiAgICAgICAgICAgICAgICAgICAgaW1nOml0LnZvZF9waWMuc3RhcnRzV2l0aCgnaHR0cCcpID8gaXQudm9kX3BpYyA6IGl0LnZvZF9waWMuc3RhcnRzV2l0aCgnLy8nKSA/ICdodHRwczonICsgaXQudm9kX3BpYyA6IGl0LnZvZF9waWMuc3RhcnRzV2l0aCgnLycpID8gZ2V0SG9tZShIT1NUKSArIGl0LnZvZF9waWMgOiBnZXRIb21lKEhPU1QpICsgJy8nICsgaXQudm9kX3BpYywKICAgICAgICAgICAgICAgICAgICBkZXNjOml0LnZvZF9yZW1hcmtzLAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIGAsCiAgICDkuIDnuqc6IGBqczoKICAgICAgICBsZXQgZCA9IFtdOwogICAgICAgIGxldCBqc29uZGF0YSA9IFtdOwogICAgICAgIGxldCB2aWRlb0xpc3QgPSBbXTsKICAgICAgICBpZiAoL3YxXFwudm9kLy50ZXN0KEhPU1QpKSB7CiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgndmlkZW8nLCd2MS52b2QnKS5yZXBsYWNlKCd0aWQnLCd0eXBlJykucmVwbGFjZSgncGc9JywncGFnZT0nKTsKICAgICAgICAgICAganNvbmRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKTsKICAgICAgICAgICAgdmlkZW9MaXN0ID0ganNvbmRhdGEuZGF0YS5saXN0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlucHV0ID0gSE9TVCArICcvJysgaW5wdXQuc3BsaXQoJy8nKVs0XTsKICAgICAgICAgICAganNvbmRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKTsKICAgICAgICAgICAgdmlkZW9MaXN0ID0ganNvbmRhdGEubGlzdCB8fCBqc29uZGF0YS5kYXRhOwogICAgICAgIH0KICAgICAgICAvLyBsb2coJ3ZpZGVvTGlzdCA9PT09PT09PT0+ICcrc3RyaW5naWZ5KHZpZGVvTGlzdCkpOwogICAgICAgIHZpZGVvTGlzdC5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgIHVybDppdC52b2RfaWQsCiAgICAgICAgICAgICAgICB0aXRsZTppdC52b2RfbmFtZSwKICAgICAgICAgICAgICAgIGltZzppdC52b2RfcGljLnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IGl0LnZvZF9waWMgOiBpdC52b2RfcGljLnN0YXJ0c1dpdGgoJy8vJykgPyAnaHR0cHM6JyArIGl0LnZvZF9waWMgOiBpdC52b2RfcGljLnN0YXJ0c1dpdGgoJy8nKSA/IGdldEhvbWUoSE9TVCkgKyBpdC52b2RfcGljIDogZ2V0SG9tZShIT1NUKSArICcvJyArIGl0LnZvZF9waWMsCiAgICAgICAgICAgICAgICBkZXNjOml0LnZvZF9yZW1hcmtzLAogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICBgLAogICAg5LqM57qnOiBganM6IAoJCWlmICgvdjFcXC52b2QvLnRlc3QoSE9TVCkpIHsKCQkJaW5wdXQgPSBIT1NUICsgJy8nKyBpbnB1dC5zcGxpdCgnLycpWzNdOwoJCX0gZWxzZSB7CgkJCWlucHV0ID0gSE9TVCArICcvJysgaW5wdXQuc3BsaXQoJy8nKVszXS5yZXBsYWNlKCdkZXRhaWwnLCd2aWRlb19kZXRhaWwnKS5yZXBsYWNlKCd2b2RfaWQnLCdpZCcpOwoJCX0KCQl0cnkgewoJCQlsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwoJCQlodG1sID0gSlNPTi5wYXJzZShodG1sKTsKCQkJbGV0IG5vZGUgPSAveGdhcHAvLnRlc3QoSE9TVCkgPyBodG1sLmRhdGEudm9kX2luZm8gOiBodG1sLmRhdGE7CgkJCVZPRCA9IHsKCQkJCXZvZF9pZDogbm9kZS52b2RfaWQsCgkJCQl2b2RfbmFtZTogbm9kZS52b2RfbmFtZSwKCQkJCXZvZF9waWM6IG5vZGUudm9kX3BpYywKCQkJCXR5cGVfbmFtZTogbm9kZS52b2RfY2xhc3MsCgkJCQl2b2RfeWVhcjogbm9kZS52b2RfeWVhciwKCQkJCXZvZF9hcmVhOiBub2RlLnZvZF9hcmVhLAoJCQkJdm9kX3JlbWFya3M6IG5vZGUudm9kX3JlbWFya3MsCgkJCQl2b2RfYWN0b3I6IG5vZGUudm9kX2FjdG9yLAoJCQkJdm9kX2RpcmVjdG9yOiBub2RlLnZvZF9kaXJlY3RvciwKCQkJCXZvZF9jb250ZW50OiBub2RlLnZvZF9jb250ZW50LnN0cmlwKCkKCQkJfTsKCQkJaWYgKHR5cGVvZiBwbGF5X3VybCA9PT0gJ3VuZGVmaW5lZCcpIHsKCQkJCXZhciBwbGF5X3VybCA9ICcnCgkJCX0KICAgICAgICAgICAgdmFyIG5hbWUgPSB7CiAgICAgICAgICAgICAgICAnYmZ6eW0zdTgnOiAn5pq06aOOJywKICAgICAgICAgICAgICAgICcxMDgwenlrJzogJ+S8mOi0qCcsCiAgICAgICAgICAgICAgICAna3VhaWthbic6ICflv6vnnIsnLAogICAgICAgICAgICAgICAgJ2x6bTN1OCc6ICfph4/lrZAnLAogICAgICAgICAgICAgICAgJ2ZmbTN1OCc6ICfpnZ7lh6EnLAogICAgICAgICAgICAgICAgJ2hhaXdhaWthbic6ICfmtbflpJbnnIsnLAogICAgICAgICAgICAgICAgJ2dzbTN1OCc6ICflhYnpgJ8nLAogICAgICAgICAgICAgICAgJ3p1aWRhbTN1OCc6ICfmnIDlpKcnLAogICAgICAgICAgICAgICAgJ2JqbTN1OCc6ICflhavmiJInLAogICAgICAgICAgICAgICAgJ3NubTN1OCc6ICfntKLlsLwnLAogICAgICAgICAgICAgICAgJ3dvbG9uZyc6ICfljafpvpknLAogICAgICAgICAgICAgICAgJ3hsbTN1OCc6ICfmlrDmtaonLAogICAgICAgICAgICAgICAgJ3lobTN1OCc6ICfmqLHoirEnLAogICAgICAgICAgICAgICAgJ3RrbTN1OCc6ICflpKnnqbonLAogICAgICAgICAgICAgICAgJ2pzbTN1OCc6ICfmnoHpgJ8nLAogICAgICAgICAgICAgICAgJ3dqbTN1OCc6ICfml6DlsL0nLAogICAgICAgICAgICAgICAgJ3NkbTN1OCc6ICfpl6rnlLUnLAogICAgICAgICAgICAgICAgJ2tjbTN1OCc6ICflv6vovaYnLAogICAgICAgICAgICAgICAgJ2ppbnlpbmdtM3U4JzogJ+mHkem5sCcsCiAgICAgICAgICAgICAgICAnZnNtM3U4JzogJ+mjnumAnycsCiAgICAgICAgICAgICAgICAndHBtM3U4JzogJ+a3mOeJhycsCiAgICAgICAgICAgICAgICAnbGVtM3U4JzogJ+mxvOS5kCcsCiAgICAgICAgICAgICAgICAnZGJtM3U4JzogJ+eZvuW6picsCiAgICAgICAgICAgICAgICAndG9tbTN1OCc6ICfnlarojIQnLAogICAgICAgICAgICAgICAgJ3VrbTN1OCc6ICdV6YW3JywKICAgICAgICAgICAgICAgICdpa20zdTgnOiAn54ix5Z2kJywKICAgICAgICAgICAgICAgICdobnp5bTN1OCc6ICfnuqLniZvotYTmupAnLAogICAgICAgICAgICAgICAgJ2hubTN1OCc6ICfnuqLniZsnLAogICAgICAgICAgICAgICAgJzY4enlfbTN1OCc6ICc2OCcsCiAgICAgICAgICAgICAgICAna2RtM3U4JzogJ+mFt+eCuScsCiAgICAgICAgICAgICAgICAnYmR4bTN1OCc6ICfljJfmlpfmmJ8nLAogICAgICAgICAgICAgICAgJ3FobTN1OCc6ICflpYfomY4nLAogICAgICAgICAgICAgICAgJ2hobTN1OCc6ICfosarljY4nLAogICAgICAgICAgICAgICAgJ2tibTN1OCc6ICflv6vmkq0nCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGxldCBlcGlzb2RlcyA9IC92MVxcLnZvZC8udGVzdChIT1NUKT9ub2RlLnZvZF9wbGF5X2xpc3Q6bm9kZS52b2RfdXJsX3dpdGhfcGxheWVyOwoJCQlpZiAoZXBpc29kZXMgIT0gJycpIHsKCQkJCWxldCBwbGF5TWFwID0ge307CgkJCQlsZXQgYXJyID0gW107CgkJCQllcGlzb2Rlcy5mb3JFYWNoKGVwID0+IHsKCQkJCQlsZXQgZnJvbSA9IFtdOwoJCQkJCWlmICgvdjFcXC52b2QvLnRlc3QoSE9TVCkpIHsKCQkJCQkJZnJvbSA9IGVwLnBsYXllcl9pbmZvLmZyb218fGVwLnBsYXllcl9pbmZvLnNob3d8fGVwLmZyb218fGVwLnNob3c7CgkJCQkJfSBlbHNlIHsKCQkJCQkJZnJvbSA9IGVwLmNvZGV8fGVwLm5hbWU7CgkJCQkJfQoJCQkJCWlmICghcGxheU1hcC5oYXNPd25Qcm9wZXJ0eShmcm9tKSkgewoJCQkJCQlwbGF5TWFwW2Zyb21dID0gW10KCQkJCQl9CgkJCQkJLy8gbGV0IHBhcnNlX2FwaSA9ICcnOwoJCQkJCS8vIGlmICgvdjFcXC52b2QvLnRlc3QoSE9TVCkpIHsKCQkJCQkvLyAJcGFyc2VfYXBpID0gZXAucGxheWVyX2luZm8ucGFyc2UgIT0gbnVsbCA/IGVwLnBsYXllcl9pbmZvLnBhcnNlIDogZXAucGxheWVyX2luZm8ucGFyc2UyOwoJCQkJCS8vIAkvLyBwYXJzZV9hcGkgPSAvLC8udGVzdChwYXJzZV9hcGkpID8gcGFyc2VfYXBpLnNwbGl0KCcsJylbMV0gOiBwYXJzZV9hcGk7CgkJCQkJLy8gfSBlbHNlIHsKCQkJCQkvLyAJcGFyc2VfYXBpID0gZXAucGFyc2VfYXBpOwoJCQkJCS8vIH0KCQkJCQkvLyBsb2coJ3BhcnNlX2FwaSA9PT09PT09PT0+ICcrcGFyc2VfYXBpKTsKCQkJCQkvLyBpZiAocGFyc2VfYXBpICE9IG51bGwgJiYgIS9cXC5tM3U4fFxcLm1wNC8udGVzdChlcC51cmwpKSB7CgkJCQkJLy8gCXBhcnNlX2FwaSA9IHBhcnNlX2FwaS5yZXBsYWNlQWxsKCcuLicsJy4nKSA7CgkJCQkJLy8gCWVwLnVybCA9IGVwLnVybC5yZXBsYWNlQWxsKCckJywnJCcrcGFyc2VfYXBpKTsKCQkJCQkvLyB9CgkJCQkJaWYgKGZyb20gIT0gbnVsbCkgcGxheU1hcFtmcm9tXS5wdXNoKGVwLnVybCkKCQkJCX0pOwoJCQkJZm9yICh2YXIga2V5IGluIHBsYXlNYXApIHsKCQkJCQlpZiAoJ2JmenltM3U4JyA9PSBrZXkpIHsKCQkJCQkJYXJyLnB1c2goewoJCQkJCQkJZmxhZzogbmFtZVtrZXldLAoJCQkJCQkJdXJsOiBwbGF5TWFwW2tleV0sCgkJCQkJCQlzb3J0OiAxCgkJCQkJCX0pCgkJCQkJfSBlbHNlIGlmICgnMTA4MHp5aycgPT0ga2V5KSB7CgkJCQkJCWFyci5wdXNoKHsKCQkJCQkJCWZsYWc6IG5hbWVba2V5XSwKCQkJCQkJCXVybDogcGxheU1hcFtrZXldLAoJCQkJCQkJc29ydDogMgoJCQkJCQl9KQoJCQkJCX0gZWxzZSBpZiAoJ2t1YWlrYW4nID09IGtleSkgewoJCQkJCQlhcnIucHVzaCh7CgkJCQkJCQlmbGFnOiBuYW1lW2tleV0sCgkJCQkJCQl1cmw6IHBsYXlNYXBba2V5XSwKCQkJCQkJCXNvcnQ6IDMKCQkJCQkJfSkKCQkJCQl9IGVsc2UgaWYgKCdsem0zdTgnID09IGtleSkgewoJCQkJCQlhcnIucHVzaCh7CgkJCQkJCQlmbGFnOiBuYW1lW2tleV0sCgkJCQkJCQl1cmw6IHBsYXlNYXBba2V5XSwKCQkJCQkJCXNvcnQ6IDQKCQkJCQkJfSkKCQkJCQl9IGVsc2UgaWYgKCdmZm0zdTgnID09IGtleSkgewoJCQkJCQlhcnIucHVzaCh7CgkJCQkJCQlmbGFnOiBuYW1lW2tleV0sCgkJCQkJCQl1cmw6IHBsYXlNYXBba2V5XSwKCQkJCQkJCXNvcnQ6IDUKCQkJCQkJfSkKCQkJCQl9IGVsc2UgaWYgKCdzbm0zdTgnID09IGtleSkgewoJCQkJCQlhcnIucHVzaCh7CgkJCQkJCQlmbGFnOiBuYW1lW2tleV0sCgkJCQkJCQl1cmw6IHBsYXlNYXBba2V5XSwKCQkJCQkJCXNvcnQ6IDYKCQkJCQkJfSkKCQkJCQl9IGVsc2UgaWYgKCdxaG0zdTgnID09IGtleSkgewoJCQkJCQlhcnIucHVzaCh7CgkJCQkJCQlmbGFnOiBuYW1lW2tleV0sCgkJCQkJCQl1cmw6IHBsYXlNYXBba2V5XSwKCQkJCQkJCXNvcnQ6IDcKCQkJCQkJfSkKCQkJCQl9IGVsc2UgewoJCQkJCQlhcnIucHVzaCh7CgkJCQkJCQlmbGFnOiBuYW1lW2tleV0gPyBuYW1lW2tleV0gOiBrZXksCgkJCQkJCQl1cmw6IHBsYXlNYXBba2V5XSwKCQkJCQkJCXNvcnQ6IDgKCQkJCQkJfSkKCQkJCQl9CgkJCQl9CgkJCQlhcnIuc29ydCgoYSwgYikgPT4gYS5zb3J0IC0gYi5zb3J0KTsKCQkJCWxldCBwbGF5RnJvbSA9IFtdOwoJCQkJbGV0IHBsYXlMaXN0ID0gW107CgkJCQlhcnIubWFwKHZhbCA9PiB7CgkJCQkJaWYgKCEvdW5kZWZpbmVkLy50ZXN0KHZhbC5mbGFnKSkgewoJCQkJCQlwbGF5RnJvbS5wdXNoKHZhbC5mbGFnKTsKCQkJCQkJcGxheUxpc3QucHVzaCh2YWwudXJsKTsKCQkJCQl9CgkJCQl9KQoJCQkJVk9ELnZvZF9wbGF5X2Zyb20gPSBwbGF5RnJvbS5qb2luKCckJCQnKTsKCQkJCVZPRC52b2RfcGxheV91cmwgPSBwbGF5TGlzdC5qb2luKCckJCQnKTsKCQkJfSBlbHNlIHsKCQkJCVZPRC52b2RfcGxheV9mcm9tID0gbm9kZS52b2RfcGxheV9mcm9tOwoJCQkJVk9ELnZvZF9wbGF5X3VybCA9IG5vZGUudm9kX3BsYXlfdXJsOwoJCQl9CgkJfSBjYXRjaCAoZSkgewoJCQlsb2coIuiOt+WPluS6jOe6p+ivpuaDhemhteWPkeeUn+mUmeivrzoiICsgZS5tZXNzYWdlKTsKCQl9CglgLAogICAg5pCc57SiOiBganM6CgkJbGV0IGQgPSBbXTsKCQlsZXQganNvbmRhdGEgPSBbXTsKCQlsZXQgdmlkZW9MaXN0ID0gW107CgkJaWYgKC92MVxcLnZvZC8udGVzdChIT1NUKSkgewoJCQlpbnB1dCA9IChIT1NUICsgJy8nKyBpbnB1dC5zcGxpdCgnLycpWzNdKS5yZXBsYWNlKCcvc2VhcmNoJywnJykucmVwbGFjZSgndGV4dD0nLCd3ZD0nKS5yZXBsYWNlKCdwZz0nLCdwYWdlPScpOwoJCQlqc29uZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpOwoJCQl2aWRlb0xpc3QgPSBqc29uZGF0YS5kYXRhLmxpc3Q7CgkJfSBlbHNlIHsKCQkJaW5wdXQgPSBIT1NUICsgJy8nKyBpbnB1dC5zcGxpdCgnLycpWzNdCgkJCWpzb25kYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KSk7CgkJCXZpZGVvTGlzdCA9IGpzb25kYXRhLmxpc3QgfHwganNvbmRhdGEuZGF0YTsKCQl9CgkJLy8gbG9nKCd2aWRlb0xpc3QgPT09PT09PT09PiAnK3N0cmluZ2lmeSh2aWRlb0xpc3QpKTsKCQl2aWRlb0xpc3QuZm9yRWFjaChpdCA9PiB7CgkJCWQucHVzaCh7CgkJCQl1cmw6aXQudm9kX2lkLAoJCQkJdGl0bGU6aXQudm9kX25hbWUsCgkJCQlpbWc6aXQudm9kX3BpYy5zdGFydHNXaXRoKCdodHRwJykgPyBpdC52b2RfcGljIDogaXQudm9kX3BpYy5zdGFydHNXaXRoKCcvLycpID8gJ2h0dHBzOicgKyBpdC52b2RfcGljIDogaXQudm9kX3BpYy5zdGFydHNXaXRoKCcvJykgPyBnZXRIb21lKEhPU1QpICsgaXQudm9kX3BpYyA6IGdldEhvbWUoSE9TVCkgKyAnLycgKyBpdC52b2RfcGljLAoJCQkJZGVzYzppdC52b2RfcmVtYXJrcywKCQkJfSk7CgkJfSk7CgkJc2V0UmVzdWx0KGQpOwoJYCwKfQ==
\ No newline at end of file
diff --git a/drpy_js/桃子影视.js b/drpy_js/桃子影视.js
deleted file mode 100644
index 5d9b3d5..0000000
--- a/drpy_js/桃子影视.js
+++ /dev/null
@@ -1,357 +0,0 @@
-import {load} from 'cheerio';
-import CryptoJS from 'crypto-js';
-import axios from "axios";
-
-
-let url = 'https://www.taozi007.com';
-
-global = {
- location: true,
- navigator: {
- webdriver: false
- }
-};
-
-var oooo = 992212, ooe;
-if (oooo = oooo >> 12 ^ 213, ooe = global.location && global.navigator.webdriver) {
- var i = 9;
- for (oooo = oooo ^ i; i < oooo | 9; i > 0) {
- ooe.href = ooe.href + "?" + i;
- }
-}
-
-function b(input) {
- return btoa(input);
-}
-
-function x(input, _0x56ee7b) {
- let output = "";
- var _0x56ee7b = _0x56ee7b + "PTNo2n3Ev5";
- for (let _0x4e905d = 0; _0x4e905d < input.length; _0x4e905d++) {
- const charCode = input.charCodeAt(_0x4e905d) ^ _0x56ee7b.charCodeAt(_0x4e905d % _0x56ee7b.length);
- output += String.fromCharCode(charCode);
- }
- return output;
-}
-
-function setRet(_0x132031) {
- var _0x1db96b = _0x132031.substr(0, 8);
- var _0x6339b6 = parseInt(_0x132031.substr(12));
- typeof global === "undefined" && (_0x6339b6 = 2);
- var _0x56549e = _0x6339b6 * 2 + 18 - 2;
- var encrypted = x(_0x56549e.toString(), _0x1db96b);
- var guard_encrypted = encrypted.toString();
- return "guardret=" + b(guard_encrypted);
-}
-async function setcookie() {
- let res = await axios({url:url});
- let guard = res.headers['set-cookie'][0].replace(/;.*/, "");
- let ret = setRet(guard.replace("guard=", ""))
- let resp = await axios({url:url ,
- headers: {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
- 'Cookie': `${guard}; ${ret}`
- }
- });
- return resp.headers['set-cookie'][0];
-}
-let cookie = ''
-
-async function init(inReq, _outResp) {
- cookie = await setcookie();
- return {};
-}
-
-async function request(reqUrl,headers) {
- let resp = await axios({url:reqUrl ,
- headers: headers===undefined?{
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
- 'Cookie': cookie
- }:headers
- });
- return resp.data;
-
-}
-
-async function home(inReq, _outResp) {
- let classes = [{
- type_id: '1',
- type_name: '电影',
- },{
- type_id: '2',
- type_name: '剧集',
- },{
- type_id: '3',
- type_name: '动漫',
- },{
- type_id: '4',
- type_name: '综艺',
- },{
- type_id: '5',
- type_name: '短剧',
- }];
- return JSON.stringify({
- class: classes,
- });
-}
-
-
-async function category(inReq, _outResp) {
- const tid = inReq.body.id;
- let pg = inReq.body.page;
- if (pg <= 0) pg = 1;
- const html = await request(`${url}/show/${tid}--------${pg}---.html`);
- let videos = [];
- const $ = load(html)
- for (const it of $('div.content .module-item')) {
- const img = $(it).find('.module-item-pic img')[0]
- videos.push({
- vod_id: it.attribs.href,
- vod_name: it.attribs.title,
- vod_pic: img.attribs['data-original'],
- })
- }
-
- const hasMore = $('.page > a:contains(下一页)').length > 0;
- const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg);
- return JSON.stringify({
- page: parseInt(pg),
- pagecount: pgCount,
- limit: 24,
- total: 24 * pgCount,
- list: videos,
- });
-}
-
-async function detail(inReq, _outResp) {
- const id = inReq.body.id;
- const html = await request(`${url}${id}`);
- const $ =load(html)
- var vod = {
- vod_id: id,
- vod_name: $('h1').text().trim(),
- vod_pic: $('div.module-item-pic img')[0].attribs['data-original'],
- vod_content:$('div.module-info-introduction-content p').text(),
- vod_remarks:$('div.module-info-item-content')[2].children[0].data
- };
- let playlist=$('div.module-play-list-content')
- let tabs = $('div.module-tab-item:gt(0) span')
- let playmap={};
- tabs.each((i,tab)=>{
- const form = tab.children[0].data
- const list = playlist[i]
- const a = $(list).find('a')
- a.each((i,it)=>{
- let title =it.children[0].children[0].data;
- let urls = it.attribs.href;
- if(!playmap.hasOwnProperty(form)){
- playmap[form]=[];
- }
- playmap[form].push(title+"$"+urls);
- });
- });
-
- vod.vod_play_from = Object.keys(playmap).join('$$$');
- const urls = Object.values(playmap);
- const playUrls=urls.map((urllist)=>{
- return urllist.join("#")
- });
- vod.vod_play_url = playUrls.join('$$$');
- return JSON.stringify({
- list: [vod],
- });
-}
-
-function decryptVideoUrl(encryptedUrl, uid) {
- const key = CryptoJS.enc.Utf8.parse('2890' + uid + 'tB959C');
- const iv = CryptoJS.enc.Utf8.parse('2F131BE91247866E');
- const decrypted = CryptoJS.AES.decrypt(encryptedUrl, key, {
- iv: iv,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- });
- return CryptoJS.enc.Utf8.stringify(decrypted);
-}
-
-function js_decrypt(str, key, iv) {
- var keydata = CryptoJS.enc.Utf8.parse(key);
- var ivdata = CryptoJS.enc.Utf8.parse(iv);
- var decrypted_data = CryptoJS.AES.decrypt(str, keydata, {
- iv: ivdata,
- padding: CryptoJS.pad.Pkcs7
- }).toString(CryptoJS.enc.Utf8);
- return decrypted_data
-}
-
-async function play(inReq, _outResp) {
- const id = inReq.body.id;
- const html = await request(url+id);
- const $ = load(html);
- const js = JSON.parse($('script:contains(player_)').html().replace('var player_aaaa=', ''));
- if (js.encrypt === '1') {
- url = unescape(js.url);
- return JSON.stringify({
- parse: 0,
- url: url,
- });
- } else if (js.encrypt === '2') {
- url = unescape(atob(js.url));
- return JSON.stringify({
- parse: 0,
- url: url,
- });
- }
- if(/feidaozy|1080zyk|subm3u8/.test(js.from)){
- return JSON.stringify({
- parse: 0,
- url: js.url,
- });
- }else if (/qiyi|qq|youku|mgtv|ffm3u8|heimuer/.test(js.from)){
- let api="https://jx.taozi007.com/player/ec.php?code=tz&if=1&url="
- let req=await request(api+ js.url,{
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
- })
- let config={};
- let link =req.match(/let ConFig.*}/)[0]
- eval(link + '\nconfig=ConFig');
- let video = decryptVideoUrl(config.url,config.config.uid)
- return JSON.stringify({
- parse: 0,
- url: video,
- header:{
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0',
- }
- });
- } else if (/ty/.test(js.from)){
- let api = 'https://www.taozi007.com/player/?url='+js.url;
- let reqty=await request(api)
- let rand= reqty.match(/var rand = "(.*?)";/)[1];
- let player= reqty.match(/var player = "(.*?)";/)[1];
- const ur = JSON.parse(js_decrypt(player, 'VFBTzdujpR9FWBhe', rand)).url;
- if(ur.startsWith('https')){
- return JSON.stringify({
- parse: 0,
- url: ur,
- });
- }else {
- return JSON.stringify({
- parse: 0,
- url: 'https://m.m3u8.cloud'+ur,
- });
- }
- }else if(/yy/.test(js.from)){
- let api = 'https://www.taozi007.com/player/?url='+js.url;
- let content = await request(api)
- const $ = load(content)
- const src = $('#myiframe').attr('src').split('=')[1]
- return JSON.stringify({
- parse: 0,
- url: src,
- });
-
- }
-
-}
-
-
-async function search(inReq, _outResp) {
- const wd = inReq.body.wd;
- let html = await request(`${url}/dm/search/q-${wd}`);
- const $ = load(html);
- let videos = [];
- for (const item of $('.stui-vodlist__box')) {
- const a = $(item).find('a')[0];
- videos.push({
- vod_id: a.attribs.href,
- vod_name: a.attribs.title,
- vod_pic: a.attribs['data-echo-background']
- });
- }
- return JSON.stringify({
- list: videos,
- });
-}
-
-async function test(inReq, outResp) {
- try {
- const printErr = function (json) {
- if (json.statusCode && json.statusCode === 500) {
- console.error(json);
- }
- };
- const prefix = inReq.server.prefix;
- const dataResult = {};
- let resp = await inReq.server.inject().post(`${prefix}/init`);
- dataResult.init = resp.json();
- printErr(resp.json());
- resp = await inReq.server.inject().post(`${prefix}/home`);
- dataResult.home = resp.json();
- printErr(resp.json());
- if (dataResult.home.class.length > 0) {
- resp = await inReq.server.inject().post(`${prefix}/category`).payload({
- id: dataResult.home.class[0].type_id,
- page: 1,
- filter: true,
- filters: {},
- });
- dataResult.category = resp.json();
- printErr(resp.json());
- if (dataResult.category.list.length > 0) {
- resp = await inReq.server.inject().post(`${prefix}/detail`).payload({
- id: dataResult.category.list[0].vod_id, // dataResult.category.list.map((v) => v.vod_id),
- });
- dataResult.detail = resp.json();
- printErr(resp.json());
- if (dataResult.detail.list && dataResult.detail.list.length > 0) {
- dataResult.play = [];
- for (const vod of dataResult.detail.list) {
- const flags = vod.vod_play_from.split('$$$');
- const ids = vod.vod_play_url.split('$$$');
- for (let j = 0; j < flags.length; j++) {
- const flag = flags[j];
- const urls = ids[j].split('#');
- for (let i = 0; i < urls.length && i < 2; i++) {
- resp = await inReq.server
- .inject()
- .post(`${prefix}/play`)
- .payload({
- flag: flag,
- id: urls[i].split('$')[1],
- });
- dataResult.play.push(resp.json());
- }
- }
- }
- }
- }
- }
- resp = await inReq.server.inject().post(`${prefix}/search`).payload({
- wd: '爱',
- page: 1,
- });
- dataResult.search = resp.json();
- printErr(resp.json());
- return dataResult;
- } catch (err) {
- console.error(err);
- outResp.code(500);
- return {err: err.message, tip: 'check debug console output'};
- }
-}
-
-export default {
- meta: {
- key: 'tao',
- name: '桃子影视',
- type: 3,
- },
- api: async (fastify) => {
- fastify.post('/init', init);
- fastify.post('/home', home);
- fastify.post('/category', category);
- fastify.post('/detail', detail);
- fastify.post('/play', play);
- fastify.post('/search', search);
- fastify.get('/test', test);
- },
-};
\ No newline at end of file
diff --git a/drpy_js/桃子影视[优].js b/drpy_js/桃子影视[优].js
deleted file mode 100644
index c616a81..0000000
--- a/drpy_js/桃子影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-bXViYW4ubXhwcm8u5LqM57qnLnRpdGxlID0gJ2gxJiZUZXh0Oy5tb2R1bGUtaW5mby10YWcmJlRleHQnOwptdWJhbi5teHByby7kuoznuqcuZGVzYyA9ICcubW9kdWxlLWluZm8taXRlbTplcSg0KSYmVGV4dDs7Oy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQ6ZXEoMSkmJlRleHQ7Lm1vZHVsZS1pbmZvLWl0ZW0tY29udGVudDplcSgwKSYmVGV4dCc7Cm11YmFuLm14cHJvLuS6jOe6py50YWJzID0gJyN5LXBsYXlMaXN0JiZzcGFuJzsKbXViYW4ubXhwcm8u5LqM57qnLmxpc3RzID0gJy5tb2R1bGUtcGxheS1saXN0OmVxKCNpZCkmJmEnOwp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAn5qGD5a2Q5b2x6KeGW+S8mF0nLCAvL+WOnzkxZnJlZQogICAg5qih5p2/OiAnbXhwcm8nLAogICAgaG9zdDogJ2h0dHBzOi8vaW9zLnRhb3ppMDA3LmNvbScsCiAgICAidXJsIjogIi9zaG93L2Z5ZmlsdGVyLmh0bWwiLAogICAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zJiZhW2hyZWYqPXR5cGVdO2EmJnRpdGxlO2EmJmhyZWY7KFxcZCspLmh0bWwnLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMzsgUEpCMTEwIEJ1aWxkL1RQMUEuMjIwOTA1LjAwMTsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS8xMDMuMC41MDYwLjEyOSBNb2JpbGUgU2FmYXJpLzUzNy4zNicsCiAgICAgICAgJ0Nvb2tpZSc6ICdfXzUxdXZzY3RfX0tPZkN2NEU3bTZzR1BLUzA9MTsgX181MXZja2VfX0tPZkN2NEU3bTZzR1BLUzA9OTQ0OGJkY2EtY2NiMC01ZjcxLWE3YmItNzk4ZjI4MTVjOTc2OyBfXzUxdnVmdF9fS09mQ3Y0RTdtNnNHUEtTMD0xNzIwMzQ5MDA4NjAyOyBteF9zdHlsZT1ibGFjazsgX192dGluc19fS09mQ3Y0RTdtNnNHUEtTMD0lN0IlMjJzaWQlMjIlM0ElMjAlMjI4ZjA4NjFhNC0zZDU1LTU3NmMtOTFmOS0yYTM5MWM3YTI0MGElMjIlMkMlMjAlMjJ2ZCUyMiUzQSUyMDUlMkMlMjAlMjJzdHQlMjIlM0ElMjAzMTY5MyUyQyUyMCUyMmRyJTIyJTNBJTIwMTI2MjMlMkMlMjAlMjJleHBpcmVzJTIyJTNBJTIwMTcyMDM1MDg0MDI2NiUyQyUyMCUyMmN0JTIyJTNBJTIwMTcyMDM0OTA0MDI2NiU3RDsgZ3VhcmRvaz1yWVRMaE5qQ3ozalpsZDJBYTBVV09HNFkrb1RWK2hGd2svd2NMUXBNNmRIRkNiS0dqc2E4OWRZUGU0KzhueHRKdHdMVlRHQXAvRGt4dzJRZjV2R255QT09OyBzaG93QnRuPXRydWUnLAogICAgfSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwogICAgICAgIHZhciB1cmwgPSBodG1sLnVybDsKICAgICAgICBpZiAoaHRtbC5mcm9tICE9ICd0eScpIHsKICAgICAgICAgICAgaWYgKC9cLm0zdTh8XC5tcDQvLnRlc3QodXJsKSkgewogICAgICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKQogICAgICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnN0IGtleSA9IHsKICAgICAgICAgICAgICAgICJ3b3JkcyI6IFsKICAgICAgICAgICAgICAgICAgICAxNDQ3NDQ1MDc2LAogICAgICAgICAgICAgICAgICAgIDIwNTM0MDQwMTAsCiAgICAgICAgICAgICAgICAgICAgMTg4NDQzNjgwNiwKICAgICAgICAgICAgICAgICAgICAxNDYzOTY5ODkzCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInNpZ0J5dGVzIjogMTYKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBpdiA9IHsKICAgICAgICAgICAgICAgICJ3b3JkcyI6IFsKICAgICAgICAgICAgICAgICAgICA5NDI5NDU4NDcsCiAgICAgICAgICAgICAgICAgICAgOTU5OTE4NjQyLAogICAgICAgICAgICAgICAgICAgIDg3NTk2NzU0MSwKICAgICAgICAgICAgICAgICAgICA4NDI2MTAyMzMKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAic2lnQnl0ZXMiOiAxNgogICAgICAgICAgICB9CiAgICAgICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMpCiAgICAgICAgICAgIGxldCBkYXRhID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dCwga2V5LCB7CiAgICAgICAgICAgICAgICAnaXYnOiBpdgogICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7CiAgICAgICAgICAgIGxldCBkYXRhX2pzb24gPSBKU09OLnBhcnNlKGRhdGEpOwogICAgICAgICAgICBsZXQgdXJsID0gZGF0YV9qc29uLnVybDsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgIGhlYWRlcjogcnVsZS5oZWFkZXJzLAogICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICBwYXJzZTogMAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSksCiAgICDmjqjojZA6ICcqJywKICAgIGRvdWJsZTogZmFsc2UsIC8vIOaOqOiNkOWGheWuueaYr+WQpuWPjOWxguWumgogICAgZGV0YWlsVXJsOiAnL2RldGFpbC9meWlkLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC9hamF4L3N1Z2dlc3Q/bWlkPTEmd2Q9KionLAogICAg5pCc57SiOiAnanNvbjpsaXN0O25hbWU7cGljO2VuO2lkJywKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICJINHNJQUFBQUFBQUFBKzJaYTA4YlZ4Q0cvOHQrcHRLeVFOTGtXKzczK3oxVlBrUVZVcU8ycWRTa2xhb0lpY1RZTlNUWWdBaU9hd2lod1lGRUdNeEZGSllhL296UDJ2NFhYZnZNdkROdWcyV2xKR3FxL2Vibm5aM2RjK2Fzejd3Nis4anBkQTUrOWNqNXR2Y1g1NkJqQnVlQ1dOenBjTzdmL2I1WDg4OTN2L3VwdDNIaC9ib2NuNi9GNXV0eUNFNWZCNmtUaytIMXBCSWdOalJmTGsxeXpBTEhndVNMc2o5SU1RS09WWkxMTkFBQjVEMVpxRXlNY3A0RjVNMk5tczB0enJPQXNTVEdhdG0zUEJZTGFweVY4UzBaWngzNjd0U2pWS0RKb25ubXF3SXh0MVdnMmJsYU5zRTN0OEN4MnB0c3NMRkVNUUxrcFl2QjVqYm5XY0JFdDFNbVYrS0pXa0NCVnA5TGpJQmoxYWZMRWlOQVhpWWZUQzV3bmdXTWMvcXQ1QkZnbk50L1NJeEF4bExVWXlrMjVRMFhqZitHOHl3Z2J5QWRWc29rZWIyRU1aUDhUaVZkcUF4bWVUSmdXZFJYd2RPZE1BM3J5b3dyNHV2bHJRa09XOURMWGwwcVZPZjdaZG5CYlMxN3JoUmV6emUzb0paQllnUlkycFZaaVJGZ0dUSWxNNXlSc0xCYUtCVzJvQlpZWWdUcXBWRXhDMnFCMVV3c3FCS2F4WmlVc0E1Ti81ek50ZkpXU2Yxem1Oc3BvZWQyZmtsYTQ2ZlM5NHUrWCt2N1JOK245UjdSZTdUZUxYcTMxcnRFNzlLNko3cW45VTdSTzdYdWl1NDJGNmFRQ1phR1ZXR1kvMVlZeUxvd2gwZzRCT1V3S1llaEhDSGxDSlNqcEJ5RmNveVVZMUNPazNJY3lnbFNUa0E1U2NwSktLZElPUVhsTkNtbm9ad2g1UXlVczZTY2hYS09sSE5RenBOeUhzb0ZVaTVBdVVqS1JTaVhTTGtFNVRJcGw2RmNJZVVLbEt1a1hJVnlqWlJyVUs2VGNoM0tEVkp1UUxsSnlrMG90MGk1QmVVMktiZWh1RjhjSUszNVJRbFNZOFpQeTRzQ2JuNVJnc3g2TGJNbXdWQjZlQzlNNE51WGZUOG9qamZGdjduMzhJRnNTVXNESnBsb2lqLzQrb2NmZSt0anVkUGhlSHRtRjlLejFkZmMyZ25hc1FTMXFiSGdSZDQ4WGpjeEhsK1QxSllkV1Z3M1BqWXlDOWgyaDVZcXBYZTg3VnBveDhhWS9LOWlPUWdRUTJFRUVFc2xUSHFGWXhZd2xxMjBpVy93V0N4Z0hUZG5naW0yUHdTb1h5d2VaTmxORU9CNXp4TmhSZmw1RnZDODBxalVqS0RkSHZudnJGRWlIbDRQVDlhQWRpekhoOXFtVmhhbnRhWGEzY2EwdEZRVHhkQjFtS2taVGdWSEZ1UWZGdVFqV3dsUFdyMm5XNzBucmQ3VHJkNlRWdS9wVnU5SnEvZWFXdjBCNk9IUC82MkZnZTdLZkYwOVgxZm02K3I1dWpKZlY4L1hsZm02ZXI2dXpOZlY4M1ZsdnVIUHlGSTVrYVg2UEMxVjExNVpxbHIvWUdXdW56ZGNDOW9TREV3clN4QUN4cmU0VXkwbXVRVllRTjVZSVJqS2M1NEYyY1Rqd1FiYkV3TFovRmZMbXlQWS9CdWdPbXp0TlkrRkFESC9uVmw4eVRFTGVGNXVwVHJvOC9Nc0lHOThPbGpEaVk4RjVHMXNCTWwwMlI4TExSdG5hd2wxV1BzOU5GbGNCd3U0eC9LVDZ1Tm5uRzNoazlpZjBOS0U1Z1hEYm9EcW9tRmZsUzVhQjhRVzVzTFNjc3hDWkNpaXN3a25hdXhSWTQ4YSs2ZG83TjE3MWRoYk5lOVduem9xc1VKMWhnMEJBZTZabXErTThOY0lBc1JHWGxZVzhHbkZndlNxM1QrZlZFZW1xaWsrdHlIQVBWL05tQncyYUF1NFo2dlBRNU8rbkZjUTRIazdJOUxTQ1pEWDRnekpGTU15cmZIekxPaFlmbFhGUWtBOVo3ZkxmLzdHOWJTQXZOUzBTZVk0ejRLOFJ5dW13R2FJQVBmTURRVlpOalVFVXBkbHM1TkJYUnFnbXRwSFBJL0psY28rRHM4c3FFNjc2OW5KZTAxSG13T09ETWxlR1pMb2hDTXlRcEVSY2lJajlGOHhRajNhQ0VXdmJ2VHFmaTZ2YnQ5ZnNKM3p3eUFsQUFBPSIsCiAgICBmaWx0ZXJfdXJsOiAie3tmbC7nsbvlnot9fS17e2ZsLuWcsOWMun19LXt7Zmwu5o6S5bqPfX0te3tmbC7liafmg4V9fS17e2ZsLuivreiogH19LXt7Zmwu5a2X5q+NfX0tLS1meXBhZ2UtLS17e2ZsLuW5tOS7vX19IiwKICAgIGZpbHRlcl9kZWY6IHsKICAgICAgICAiMSI6IHsi57G75Z6LIjogIjEifSwKICAgICAgICAiMiI6IHsi57G75Z6LIjogIjIifSwKICAgICAgICAiMyI6IHsi57G75Z6LIjogIjMifSwKICAgICAgICAiNCI6IHsi57G75Z6LIjogIjQifSwKICAgICAgICAiNSI6IHsi57G75Z6LIjogIjUifQogICAgfSwKfQ==
\ No newline at end of file
diff --git a/drpy_js/榜一短剧.js b/drpy_js/榜一短剧.js
deleted file mode 100644
index e695827..0000000
--- a/drpy_js/榜一短剧.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/61UwW7TQBC98xVWkNwmiu22SBwcRf0I4Fxt7E28dO1Nd9cpAVWKkFpRqYUcOCCoVIlDGwm1VSQOUIT4mTimf8Hu2gGv6+TEXuzxzJt58/TWA0ANGmNotF89MAqHI46ha6zNL85m30bp+VVyfLnW1EoCwrioCDjvM9dx/BhEz+PY9khYKowpFnXOgPgsIPtOd+hhwJiVn+6wD3pQvNgBD3EJyiCgXvDsXwMVO1bxKNz2vt9uNEwWd0LE25VdQEdutNV0nPmHm2R8kYxv0veT5HCSTEfz8Vn69bOO2ouRt/tEQV1jowz79eVudF4F6yLMIc2G3UO9OUqnP9KrT3ejYx2lJNnpA8qk6nYEBlYIo9hCHIbMNDFqAdN8Cl9w+Qwo7LbshrNuN7brVbL1MRgumnEaQz2LwcuhGFLCYCSUc43H+tf528nv07GkFBJf+MTCiPHWIsjZFUPJT5mnhcKeafqAA4tRT4NYXCyir1Mi45NYCajIG46T80iODpPr77mi706S6evk+uPs56mGlX69vSxQViyN/09ydnuiBuk3R56aal5zjVqwmbewOegJ8aLdLK4174MEFwnRSPSRZ5oaySqkD5mnoAPkQ2KhqEuyrV24t75RX1Coym6uzG6tzD6qL1/GIxGHEc9YEX8nj5cDOOiw4voiVpOqaqUJtWJpeEiVOSWxh8gX1GzmUYKx9Xc0qGmtDkpWV5d5qW+yn8hq+2QiMUgRwEutc/AHQOzfKHQFAAA=
\ No newline at end of file
diff --git a/drpy_js/樱花动漫[漫].js b/drpy_js/樱花动漫[漫].js
deleted file mode 100644
index afda7f4..0000000
--- a/drpy_js/樱花动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfpppblm74nLAogICAgdGl0bGU6ICfmqLHoirHliqjmvKtb5ryrXScsCiAgICBob3N0OiAnaHR0cHM6Ly9rYXRlZG0uY29tLycsCiAgICB1cmw6ICcvbGlzdC9meWNsYXNzLWZ5cGFnZS5odG1sJywKICAgIHNlYXJjaFVybDogJy9zZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAg5pCc57SiOiAnI3NlYXJjaExpc3QgbGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5waWMtdGFnJiZUZXh0O2EmJmhyZWYnLAp9
\ No newline at end of file
diff --git a/drpy_js/橘子柚[盘].js b/drpy_js/橘子柚[盘].js
deleted file mode 100644
index 05c2d89..0000000
--- a/drpy_js/橘子柚[盘].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+apmOWtkOafmlvnm5hdJywKICAgIGhvc3Q6ICdodHRwczovL2p1eml5b3UudmlwLycsCiAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICAvL3VybDogJy9pbmRleC5waHAvdm9kc2hvdy9meWZpbHRlci5odG1sJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vanV6aXlvdS52aXAvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDAsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCgogICAgZmlsdGVyX2RlZjogewogICAgICAgIDIwOiB7Y2F0ZUlkOiAnMjEnfSwKICAgICAgICAyMToge2NhdGVJZDogJzIyJ30sCiAgICAgICAgMjM6IHtjYXRlSWQ6ICcyMyd9LAogICAgICAgIDIyOiB7Y2F0ZUlkOiAnMjQnfQogICAgfSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnCiAgICB9LAogICAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zJiZsaTtzcGFuJiZUZXh0O2EmJmhyZWY7LiovKC4qPykuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICfku4rml6V854Ot5qacJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICAvL+aOqOmAgemYv+mHjOaSreaUviAg5pSv5oyB5b2x6KeG5aOzCiAgICBsYXp5OiBganM6CiAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CiAgICB2YXIgdXJsID0gaHRtbC51cmw7CiAgICBpZiAodXJsLmluY2x1ZGVzKCJ3d3cuYWxpcGFuLmNvbSIpIHx8IGlucHV0LmluY2x1ZGVzKCJ3d3cuYWxpeXVuZHJpdmUuY29tIikpewogICAgaW5wdXQgPSAncHVzaDovLycrdXJsLnRyaW0oKTsKICAgIH0KICBgLAogICAgbGltaXQ6IDYsCiAgICDmjqjojZA6ICcubW9kdWxlLW1haW47Lm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1wb3N0ZXItaXRlbTthJiZ0aXRsZTtpbWcmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZicsCiAgICBkb3VibGU6IHRydWUsCiAgICDkuIDnuqc6ICcubW9kdWxlLWl0ZW1zJiYubW9kdWxlLXBvc3Rlci1pdGVtO2EmJnRpdGxlO2ltZyYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnLm1vZHVsZS1pbmZvLWhlYWRpbmcmJmgxJywKICAgICAgICBpbWc6ICcubW9kdWxlLWl0ZW0tcGljJiZpbWcmJmRhdGEtb3JpZ2luYWwnLAogICAgICAgIGRlc2M6ICc7Lm1vZHVsZS1pbmZvLWl0ZW0tY29udGVudDplcSgyKSYmVGV4dDsubW9kdWxlLWluZm8tdGFnLWxpbms6ZXEoMSkmJlRleHQ7Lm1vZHVsZS1pbmZvLWl0ZW0tY29udGVudDplcSgxKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbS1jb250ZW50OmVxKDApJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbi1jb250ZW50JiZUZXh0JywKICAgICAgICB0YWJzOiAnLm1vZHVsZS10YWItaXRlbScsCiAgICAgICAgbGlzdHM6ICcubW9kdWxlLXBsYXktbGlzdC1jb250ZW50JiZhJywKICAgIH0sCiAgICDmkJzntKI6ICcubW9kdWxlLWl0ZW1zIC5tb2R1bGUtY2FyZC1pdGVtO2ltZyYmYWx0O2ltZyYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/橙汁影视.js b/drpy_js/橙汁影视.js
deleted file mode 100644
index b17c318..0000000
--- a/drpy_js/橙汁影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+apmeaxgeW9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cub3Jhbmdlay5jbicsCiAgICB1cmw6ICcvc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcnLAogICAgc2VhcmNoYWJsZTogMCwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcjogJycsCiAgICBmaWx0ZXJfdXJsOiAnJywKICAgIGZpbHRlcl9kZWY6IHt9LAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScsCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX3BhcnNlOiAnLmhsLW5hdiYmbGk7YSYmVGV4dDthJiZocmVmOy4qXC8oLio/KVwuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICcnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgIHBhcnNlOiAxLAogICAgICAgICAgICB1cmw6IGlucHV0LAogICAgICAgICAgICAvLyBqczogInRyeXtsb2NhdGlvbi5ocmVmID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaWZyYW1lJylbMF0uc3JjO31jYXRjaChlcnIpIHt9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmVjLW5vJykuY2xpY2soKSIsCiAgICAgICAgfTsKICAgIH0pLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJ2xpLmhsLWxpc3QtaXRlbTsqOyo7OyonLAogICAg5LiA57qnOiAnLmhsLXZvZC1saXN0JiZsaTthJiZ0aXRsZTsuaGwtbGF6eSYmZGF0YS1vcmlnaW5hbDs7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJy5obC1tb2ItbmFtZSYmVGV4dCcsCiAgICAgICAgaW1nOiAnLmhsLWxhenkmJmRhdGEtb3JpZ2luYWwnLAogICAgICAgIGRlc2M6ICcuaGwtdGV4dC1jb25jaCYmVGV4dCcsCiAgICAgICAgY29udGVudDogJy5obC10ZXh0LW11dGVkJiZUZXh0JywKICAgICAgICB0YWJzOiAnYm9keSYmLmhsLW5vdGljZS1ib3gmJi5obC10ZXh0LXNpdGUnLAogICAgICAgIGxpc3RzOiAnLmhsLXBsYXlzLWxpc3Q6ZXEoI2lkKSYmbGknLAogICAgICAgIHRhYl90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF91cmw6ICdhJiZocmVmJwogICAgfSwKICAgIOaQnOe0ojogJ+WIl+ihqDvmoIfpopg75Zu+54mHO+aPj+i/sDvpk77mjqU76K+m5oOFJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/次元城动漫[漫].js b/drpy_js/次元城动漫[漫].js
deleted file mode 100644
index f5a6678..0000000
--- a/drpy_js/次元城动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/61WW1PbRhR+51foybeqFtBMJ2Pq5KVP7UzzkDR9IDQIW2AFXxRJDkNbZhzANg42uA0wmHAPYE9JbejABMztx0S7kp76F3p2VxAbTIYw8QyDdPac73zntkcvRJVTk1GJC3K/t3Hw02U9KgU4N363htJjaGUKvarg4+1u+Otx84JglcfRRAmvZu31eR7/u4YXc6i6bJfSxsmiOVPhjZMMnq+h6ZpxtAki46Aeimnm7hEqFszyjnG6hAtV6sg8njNXX4IngmocFNDaNtrZtY/mrepGUu//+i7VwsVFc2+9le5ECR7YwX/HeWZnj52Ac5zPUQA/YXE8j9ITRn0KpStoN8X00e4yTpX9uDaDtkbNkz/ttX1cL8IBOwaIgb5B3jor2dk8iwTns6i6QFEdRpPvzO1Jpv8hNYo2FvDsDh5Lo8w+2BkHfzMfjCuemLNSaUI6UwJkVJ9BtUMzd4irr8yFcSBgbpcYLI05ktB0iDWi64oWEIShoSF/aDgkxuWY5A8lYiQHjDQYo5UVyCxePeRRPo2K28QIbexBXFyDPd8nyuEkMaYOBCGpRsGDICqyX4kogqImXshhSXiRCN8XQ8GwpIty1KUH+4dDUVHTXMoAPCrigOTqDzrugTJxP5GB2gIVe2ndfn2Kpzapg0/Au74EviDcAptaUtnTuBgjPf7oMTS3OXPkQrkyWqybuQnXnR+Ng9coXycs7KUSTr1kFFj74snjcwoMiAXa2e7q7HB1fnvZCKbEqmUajCKJmPTzDVLflAN7a44kgEbPO+0IE1bN49k9630NnY6z/jLfHEBbMQkPo0iantKwpt6j6Tn0Vx5PVaxCkb1yTn4I1DlZ859TjuUKpGQoZncobU0S1VDkJsRdQ+Ggz/cx524easVamwXAfbkAfD7j6K21VmHwVq3gcGfSBvqM2o3oy2ENmMthytteWkZnZGx5o54362WrtgUTzsrplAOPr1jlHFyDaHYTFfaBdEPCxD5yk3ZCLUm4xS1UrIECu4gYaZ5qP0/KocGH1CTAtV9WP9u2UyuN6kpUHH6qiKoG4LqalBwpETj9eD75RFNSmy4P4T6owIxRm6j423CA632mBeir3O8Rnjzxe2LfJO/+EVPueAW/Lmm6R44rSd3rZfuh8UcPyOZgbNp54p4KR5p0R6SoJrUw7/eQ1eO/oO7XdFHVtV9kPeJxP9MS8YC7lVtKXdI5BUzA+yUMVYKwQ9I5AO92e7+inLquBYroMQokPU+SeAmut7V2y4h/ePjgJ0bAQ5C8fhCOXDG/JgkXqJcDuY70pdQ2vfWyusaSUV0OcB1OleWYDPukk3QWxy4TNkd4/tTcqMOU2NlptmypGBqIpi4qa3oXjAe9LemDIofof1WKieqgRp+dWeHCiSRtd9qRRMDAUCaNqodOQ0/n0e4o7FHjpED9GQcpGKvP98d2gM/HYvdx1v447G87m7XfZODOhM8BNrBsSK3yW7xcdHQFZ38wBdr8n+HayW+DcaDtE43EBqerSYW4ApUrPUMptDWMBhH4o1J8QI8Eg8GO5jl4/OB7ACEq3e09zT0CR37Cti+aVPtAqen9YjqED6mUMMDDF5X3o+y77l/v9fjuOfLWsKFEXJfiegOwI7kdNOvf3isldS51WjrOOsviI/i4q8A6YLVuqibTvUUbtY38D9BR2mj/CgAA
\ No newline at end of file
diff --git a/drpy_js/歪片星球[资].js b/drpy_js/歪片星球[资].js
deleted file mode 100644
index 01fc478..0000000
--- a/drpy_js/歪片星球[资].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/毒蛇电影[优].js b/drpy_js/毒蛇电影[优].js
deleted file mode 100644
index 1b1b8b5..0000000
--- a/drpy_js/毒蛇电影[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/河狸影视[V2].js b/drpy_js/河狸影视[V2].js
deleted file mode 100644
index 2e85953..0000000
--- a/drpy_js/河狸影视[V2].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/泡泡影院.js b/drpy_js/泡泡影院.js
deleted file mode 100644
index 395b389..0000000
--- a/drpy_js/泡泡影院.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/泥巴影院.js b/drpy_js/泥巴影院.js
deleted file mode 100644
index 82e7a2e..0000000
--- a/drpy_js/泥巴影院.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/51Sy0rDQBRd61cMCBlbTIaWrlJcFH/AhV2Hm2RMBibJmJmKsfQPXAsiLhR8bEVBKKg/Yyv9CzNJWopNFb2rm5zHPQfmGFKUDjhFu2i4ifKZPlxPr95thGd355PLtzbeKX4rpji18fTpdvLyPHl9nF3cVEiYSJXTQ6WEtAmJ3UxaIESObhQwBZ+m0i7d9eC+pKnZC2issI3395x+DxfgqDQcpNzGJIdTSg4zj4OUpmkeZgICStyMKBZRK1QRrwJICqkX9gtVuZNm01xMKcyXZc3yfIzPPsf3NhquIGVphC2pBsz0kljlmR3HpwoYR1YBG8YBPVFdYfmgAEH5WXOFRcGqkwoHkYssDqcZT8A3DG1iJikLWAx1WX0qvbWBRJWlFjUMYdOjbbPdMAzQm17+QG/9SEfid8uSM/epKUeIrtda30/rO/Mb3X9eqfj6yrzqGqYCVy7CCIhjyh1Hv2cUdmronEklV8MLDpmGdKwt5jdy3jdx/u5HX8ni/PuIAwAA
\ No newline at end of file
diff --git a/drpy_js/泥视频.js b/drpy_js/泥视频.js
deleted file mode 100644
index 685058b..0000000
--- a/drpy_js/泥视频.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CmF1dGhvcjogJ+Wwj+WPr+S5kC8yNDA4L+esrDLniYgnLAp0aXRsZTogJ+azpeinhumikScsCuexu+WeizogJ+W9seinhicsCmhvc3Q6ICdodHRwczovL25pdm9kLnZpcCcsCmhvc3RKczogJycsCmhlYWRlcnM6IHsnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnfSwK57yW56CBOiAndXRmLTgnLAp0aW1lb3V0OiA1MDAwLAoKaG9tZVVybDogJy8nLAp1cmw6ICcvay9meWZpbHRlci8nLApmaWx0ZXJfdXJsOiAne3tmbC5jYXRlSWR9fS17e2ZsLmFyZWF9fS17e2ZsLmJ5fX0te3tmbC5jbGFzc319LS0tLS1meXBhZ2UtLS17e2ZsLnllYXJ9fScsCmRldGFpbFVybDogJy9pbmRleC5waHAvdm9kL2RldGFpbC9pZC9meWlkLmh0bWwnLApzZWFyY2hVcmw6ICcvaW5kZXgucGhwL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCcsCnNlYXJjaGFibGU6IDEsIApxdWlja1NlYXJjaDogMSwgCmZpbHRlcmFibGU6IDEsIAoKY2xhc3NfbmFtZTogJ+eUteW9sSbliafpm4Ym57u86Im6JuWKqOa8qycsCmNsYXNzX3VybDogJzEmMiYzJjQnLApmaWx0ZXJfZGVmOiB7CjE6IHtjYXRlSWQ6ICcxJ30sCjI6IHtjYXRlSWQ6ICcyJ30sCjM6IHtjYXRlSWQ6ICczJ30sCjQ6IHtjYXRlSWQ6ICc0J30KfSwKcGxheV9wYXJzZTogdHJ1ZSwKbGF6eTogYGpzOgpsZXQga2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC92YXIgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CmxldCBrdXJsID0ga2NvZGUudXJsOwppZiAoL1xcLihtM3U4fG1wNCkvLnRlc3Qoa3VybCkpIHsKICAgIGlucHV0ID0geyBqeDogMCwgcGFyc2U6IDAsIHVybDoga3VybCB9Cn0gZWxzZSB7CiAgICBpbnB1dCA9IHsgang6IDAsIHBhcnNlOiAxLCB1cmw6IGlucHV0IH0KfQpgLAoKbGltaXQ6IDksCmRvdWJsZTogZmFsc2UsCuaOqOiNkDogJy5tb2R1bGUtaXRlbXMubW9kdWxlLXBvc3Rlci1pdGVtcy1iYXNlO2EmJnRpdGxlOy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmJywK5LiA57qnOiAnLm1vZHVsZS1pdGVtcyBhO2EmJnRpdGxlOy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmJywK5LqM57qnOiB7CnRpdGxlOiAnaDEmJlRleHQ7Lm1vZHVsZS1pbmZvLXRhZyYmVGV4dCcsCmltZzogJy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcsCmRlc2M6ICcubW9kdWxlLWluZm8tdGFnJiZUZXh0Oy5tb2R1bGUtaW5mby10YWctbGluayYmYTplcSgwKSYmVGV4dDsubW9kdWxlLWluZm8tdGFnLWxpbmsmJmE6ZXEoMikmJlRleHQ7Lm1vZHVsZS1pbmZvLWl0ZW0tdGl0bGU6ZXEoMSkmJlRleHQ7Lm1vZHVsZS1pbmZvLWl0ZW0tdGl0bGU6ZXEoMCkmJlRleHQnLApjb250ZW50OiAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbi1jb250ZW50JiZUZXh0JywKdGFiczogJy5tb2R1bGUtdGFiLWl0ZW0nLAp0YWJfdGV4dDogJ2JvZHkmJlRleHQnLApsaXN0czogJy5tb2R1bGUtcGxheS1saXN0OmVxKCNpZCkmJmEnLApsaXN0X3RleHQ6ICdib2R5JiZUZXh0JywKbGlzdF91cmw6ICdhJiZocmVmJywKfSwK5pCc57SiOiAnLnB1YmxpYy1saXN0LWV4cDthJiZ0aXRsZTtpbWcmJmRhdGEtc3JjOy5wdWJsaWMtbGlzdC1wcmImJlRleHQ7YSYmaHJlZicsCgpmaWx0ZXI6J0g0c0lBQUFBQUFBQUErMlkzVTVpU1JDQTczME1ycjN3SEJSMTNtQ2ZZVElYN0N6SlRIWjJObEZuRTJOTVVBUkJYVUhqejdEZzM0Nkt6SWlDT2thUEE3d00zUWZlWWx1NzY2ZGQ5b1NNWmk0MjNQRlZuZjZwcXE2cWJtWUdRazdveGN1Qm1kQ3ZzZW5RaTlEcjZGVHNwMTlDZzZIMzBkOWlpdjNhbmRoZFZ2eEg5TjBISlhnNUUzcXZ4Q0o1MGttYzNJc1ZPS0haUVNQT2xHUWk2V2NXUWVPU2FxdW90S1FhSmMzU1NhdGVKRTBFTlg2NlprMDNoaG81bDVQeExiWVE3Y0V2clluYk8xS04wMEpIaTBvREk0YjRCdndOTnNLTjlLS1M2WTh0TDhOVU5LR2NQL1czMWtCT1B2RHJhLzVkMGNpSGxUV3ZaZ2ZKOCsraWs1UGtlTzNLWU1jLzhydVJHckFkRHpvTnR1dEJwd0dOU0N6SitiK016b0FkR0tNellJY0d4bW5BY1V2bmZ2MHpqTk9BZTBtdGQvSmwySXVHcnBFejBOWFpCdXl6QU90cHdEblByb1ZYZ1RrMTJHRW52OXdENmxaVEluc0JPZzI0bnZkWjFEZnBUQkRicHdaMnF3RjA3Y3F4V0FIdkdNQnhsZU5XWXgvR2FlakpBM2Raa2J5QjdXZ0FYV2RuWFg0OE1qb0RPT2ZXWWp2andad2EwQU9OTTMvanE2alh3QW5JK0VYMnNQMEp6Nk1HdExLWlV4NEZLelhRR1NqS25UVThBdzlnSjQrMXNDWENPUmFhL2hld3lvQ1ZhTkdKV0pUbFdiRXFWcndlODZ4MVV4R0ZPc3g5V09ya1U3Uy94aXJwREtDbjk4cWtNNEM2NDd5OE9RZWRCdkpqVmQ0MjBJOFBnQkhhUHBMRlU0aVFCdlR4Y28zV000RGpMcXVrTTREampwcCt0dUpuOGpBVW1USmpYeTQzbGVtWUhNQTAveWFmZjVQUEwvNnNDdThZaG1yQWNZMUxOWTFJbDFzZVZoMHVzbUk0SFl0T1VBemw5blZuKzZySEdMcEQ3akNXYlBXVHljTWtEM081UzNLWHl4MlNPMXcrUlBJaEpuZkdVZTZNYy9rWXljZTRmSlRrbzF3ZUlYbUV5MGRJUHNMbFpLL0Q3WFhJWG9mYjY1QzlEcmZYSVhzZGJxOUQ5dDUzVlI2bm42ZFpsRmJYaFpmOVY1UmtNUzYzcW1hR3FiZnFVendSeGJpZmdBcjk1dTNVSkozVDh3V1JUaG5ONU92ZkoyTDN5dzY4R2h3SXVVKzl6YkFyUzZGT25aTjVTSjZXVkg2RFBNSXprbjFQRVZBWnJYSVg1TU5XVmNEdncyRXJRMGxPM3lzM2RjcW5URVZMaU9TMU9FdUFCU1BQZUxNSXFPUkJ2VXkzRXpGM0xSSlpxOE1ZMFZOdkxvRTNpWUFPSFhTVENMb05CZDE0Z200U1FmMDN5SCt0MndQcWhBWnd2YzJVK2hyVzA4QzZKUG5NUUMrM0lXV1B6RU1YTXREMWNCbm9kOVQvUVVmdE5iNzlidHZ2dHQyN2JmaXAzZlkvdW1xWXZjNTFVVEEyVTJTc3J1cU9kYzlpbHlKdlZZeHdwUHZwRHovam83d1R6L2lsT0pRaERiemNMdXl4Y3FzQTNYM1diRmZUVUM4MDRMajFpbHlDeDQwQjFOWG0yM01yb05OQVRrbktHMmhEQmxpWjdYeUN2UmpnRDlxelhkQnB3RGtMRit5SnFBSEhiZXpKSzJ3MUdpZ1FsNjNiSEpidUIwRGJyLzVXVFJKczEwQUJ2NUhwYk10YnArZWpKZnJ4N1NxVlZJTzdIMkFEWFErckFYWmcxZG1rdG5NUC9kTGNMODFQTE0zRFR5M041Q0YxNUZ0ZVNlV1kvUFlGQ3FYRHp5K1R1eXpQeTB3Ky9paFByTm1HM1VlWlltdUhIdVdEclEwL1g4a09Lc3RCdDJjVm5mWUJsSG9ET09mcWlaK0RFQmxBWFc3WFA4Vi83alNncVFIL2g3WnpPKzFWZURrWXdEbjNEMFFCRG91QlhsNDRzdWpScThJQXJoZnduMTNRSzBaVWxadXVZRDBOWEhkMHlYUUswSitIamRZM3VMTWFvTmZkbmtnWFlKd0dMTS9laGFoQWF6R0FjeGFXWkI3YWxRSHlTMDAwdDlFdkQvRGoyOGxEbHZYV1RyN3pwZEp2Si8xMjhqM3RaR0QySDBYQWJkTW9IQUFBJwp9
\ No newline at end of file
diff --git a/drpy_js/泥视频[资].js b/drpy_js/泥视频[资].js
deleted file mode 100644
index 0bdceff..0000000
--- a/drpy_js/泥视频[资].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/海外剧汇.js b/drpy_js/海外剧汇.js
deleted file mode 100644
index a10bfbc..0000000
--- a/drpy_js/海外剧汇.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+a1t+WkluWJp+axhycsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuaHdqaC5jYycsCiAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICcnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19wYXJzZTogJy5obC1tZW51cyBsaTthJiZzcGFuJiZUZXh0O2EmJmhyZWY7LiovKC4qPylcLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAn5pyA5pawfOaOkuihjCcsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHtwYXJzZTogMSwgdXJsOiBpbnB1dCwganM6ICcnfTsKICAgIH0pLAogICAgZG91YmxlOiB0cnVlLAogICAg5o6o6I2QOiAnYm9keSYmLmNvbnRhaW5lcjsqOyo7KjsqOyonLAogICAg5LiA57qnOiAnLmhsLXZvZC1saXN0JiZsaTsuaGwtaXRlbS10aXRsZSYmVGV4dDsuaGwtbGF6eSYmZGF0YS1vcmlnaW5hbDsucmVtYXJrcyYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDImJlRleHQnLAogICAgICAgIGltZzogJy5obC1sYXp5JiZkYXRhLW9yaWdpbmFsJywKICAgICAgICBkZXNjOiAnLmhsLWRjLXN1YiYmVGV4dDsuaGwtZGF0YS1tZW51JiZzcGFuJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnLmhsLWNvbnRlbnQtdGV4dCYmVGV4dCcsCiAgICAgICAgdGFiczogJy5obC1wbGF5cy1mcm9tJiZhJywKICAgICAgICBsaXN0czogJy5obC1wbGF5cy1saXN0OmVxKCNpZCkmJmxpJywKICAgICAgICB0YWJfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RfdXJsOiAnYSYmaHJlZicKICAgIH0sCiAgICDmkJzntKI6ICcuaGwtb25lLWxpc3QmJmxpOy5obC1pdGVtLXRpdGxlJiZUZXh0Oyo7KjsqJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/海洋听书[听].js b/drpy_js/海洋听书[听].js
deleted file mode 100644
index 2a261c0..0000000
--- a/drpy_js/海洋听书[听].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/3VVUU/bVhR+76+wmHSTsODgJLQoUTR1UqV1Ypo0yl4QSh37Jnbr2Mb3Oms2IUHLWBEdpZvGVoVtiGm01QrtULdBUto/E9vpv9i5ttPYSfBDZJ/zne+ce853TxqixVm2hrkS980lDh7v747z21aBSzg7z7tnh4m0b6Uq1TAY3X/+c19txVze611vfw18tYowO52bDs2KQSgYFUrNQiZT55uS0uQl6b23jhcsDQCZCiaUV2hdC112YNZUQjPVpqSJhJSrTVOs4SiKYNGSlJAi+OBFYn7EcKUAjgLzV4YllyYnwy/aNHFpSoixiBV2tmxgWrZV6fa8by9w02G1WJSxRQphi9iTWCDYmrpawzpNQAmfff7x9blr5YWrCR+xEsQFxetinbXOO3/kdfa87XXnrIPctR13dde9+9zbfYR6L9ahnd3Trd75OXLW33p//dl70fE2nyGvder88dK9/9BtnaDu632v87t7dNh9s4/e3Tt3Tu/2nq66975FzvaG8/DE2Wh121uo225DKIB7xy+Rc/bW/eHI2XyCvMdvnON/e8cnzq8t5O5tMt7d75yjQ+RuH7x7/Mxr/ewc/Ih6aw+cvbbz04Z7/5dE9BTBWGaySLiCciiPriAB3nNImEHCZSTMolwW5QWUn0Gz/e6amtgsm6JF4PjUsnFg1cSvm8AUYjS1roJOLgdfsmH7sxig3e2nve93AD8ZBnRPV732EzDwTCFTtgYURR70idANfIcW1XoNIWJJRZMjpqgX8HJyOhX6RIQUC1f7TO0HPtNgqH2VK9kwgFf1qsHJaoPR5EOaMJw9kIxVUjGM2/DK9XNHEDImEoNEiXL9eorxBNnUuLTCaFrJ0CkIr5+6rOrUMkZQVKwQBiF2pQwni3hY55jrAzYh9gGWiDuT6SNu3iKFqNmfqgy74hYxeVMuDvs0TNn9BYApJ9ltTXMTfokVm1JDRyicwERqJJQlNWpJiB71MSbgtPCyDctiPIalbowmJirFMBPJUk1QyCfgGZO7AUtQNiS7Dk1li3BlLOJLVcbGHDTmU2LoI4iYF0hwQ9SSDZ6YmkqTEzFvaSK1KCz1XWk4Dps3GKeXLuwL21tGNZ5lfBPY6AQoIAYFakg5gp+7Pn9jHrCLftDSRcl9WDzbzXR00bk7e96rgyG9sGKYVhYjvKZcVd7Lp6oU4UccfIvFi8TFqlB106aRKhj/kDKGIWxsvr6ZLqpiqIzw1hDmQSjQp3EnEaUGD181rGuipCSrti5R1dCTKk1FloV/u3nTJkoyboxsEnZGCIOUSj68n6n0CDjYEQMsb5uyyGR7UYCpSsE+BrH7Ef7iMawa2z1j8MHuHvorNuoZdvJMgvswmjvsBkL+UpMTKXAngn/eGO9K6tLgddA5gukXmNgaTcqhFZSy8j+2a7lFZggAAA==
\ No newline at end of file
diff --git a/drpy_js/清风DJ[听].js b/drpy_js/清风DJ[听].js
deleted file mode 100644
index 9161088..0000000
--- a/drpy_js/清风DJ[听].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/游子视频.js b/drpy_js/游子视频.js
deleted file mode 100644
index 4acba92..0000000
--- a/drpy_js/游子视频.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+a4uOWtkOinhumikScsCiAgICDmqKHmnb86ICfmtbfonrozJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy55b3V6aXNwLnR2JywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgdXJsOiAnL3ZvZHNob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAp9
\ No newline at end of file
diff --git a/drpy_js/漫小肆[画].js b/drpy_js/漫小肆[画].js
deleted file mode 100644
index 3103115..0000000
--- a/drpy_js/漫小肆[画].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/漫画走廊[画密飞].js b/drpy_js/漫画走廊[画密飞].js
deleted file mode 100644
index 31b203c..0000000
--- a/drpy_js/漫画走廊[画密飞].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIF8weDUyODEgPSBbIlx4NjZceDcyXHg2Rlx4NkRceDQzXHg2OFx4NjFceDcyXHg0M1x4NkZceDY0XHg2NSIsICJceDZDXHg2NVx4NkVceDY3XHg3NFx4NjgiLCAiXHg2M1x4NjhceDYxXHg3Mlx4NDNceDZGXHg2NFx4NjVceDQxXHg3NCIsICJceDYxIiwgIlx4NDEiLCAiXHg2M1x4NjhceDYxXHg3Mlx4NDFceDc0IiwgIiIsICJceDZBXHg2Rlx4NjlceDZFIiwgIlx4NjMiLCAiXHgzQ1x4NjRceDY5XHg3Nlx4M0VceDNDXHg2OVx4NkRceDY3XHgyMFx4NjNceDZDXHg2MVx4NzNceDczXHgzRFx4MjJceDZDXHg2MVx4N0FceDc5XHgyMlx4MjBceDY0XHg2MVx4NzRceDYxXHgyRFx4NkZceDcyXHg2OVx4NjdceDY5XHg2RVx4NjFceDZDXHgzRFx4MjIiLCAiXHgyMlx4MjBceDczXHg3Mlx4NjNceDNEXHgyMiIsICJceDIyXHgyMFx4NzNceDc0XHg3OVx4NkNceDY1XHgzRFx4MjJceDZEXHg2MVx4NzhceDJEXHg3N1x4NjlceDY0XHg3NFx4NjhceDNBXHgzOFx4MzBceDI1XHgyMlx4M0VceDNDXHgyRlx4NjRceDY5XHg3Nlx4M0UiLCAiXHg2OVx4NkVceDZFXHg2NVx4NzJceDQ4XHg1NFx4NERceDRDIiwgIlx4NjQiLCAiXHg2N1x4NjVceDc0XHg0NVx4NkNceDY1XHg2RFx4NjVceDZFXHg3NFx4NDJceDc5XHg0OVx4NjQiLCAiXHgzQ1x4NjlceDZEXHg2N1x4MjBceDYzXHg2Q1x4NjFceDczXHg3M1x4M0RceDIyXHg2Q1x4NjFceDdBXHg3OVx4MjJceDIwXHg2NFx4NjFceDc0XHg2MVx4MkRceDZGXHg3Mlx4NjlceDY3XHg2OVx4NkVceDYxXHg2Q1x4M0RceDIyIiwgIlx4MjJceDNFIl07CgpmdW5jdGlvbiBlZTEoXzB4NjAxZHgyLCBfMHg2MDFkeDMsIF8weDYwMWR4NCkgewogICAgcmV0dXJuIFN0cmluZ1tfMHg1MjgxWzBdXSgoKF8weDYwMWR4MiAtIF8weDYwMWR4MyArIF8weDYwMWR4NCkgJSAoXzB4NjAxZHg0ICogMikpICsgXzB4NjAxZHgzKQp9CgpmdW5jdGlvbiBlZTIoXzB4NjAxZHg2KSB7CiAgICB2YXIgXzB4NjAxZHg3ID0gW10sIF8weDYwMWR4OCwgXzB4NjAxZHg5ID0gXzB4NjAxZHg2W18weDUyODFbMV1dLCBfMHg2MDFkeGEgPSBfMHg1MjgxWzNdW18weDUyODFbMl1dKCksCiAgICAgICAgXzB4NjAxZHhiID0gXzB4NjAxZHhhICsgMjYsIF8weDYwMWR4YyA9IF8weDUyODFbNF1bXzB4NTI4MVsyXV0oKSwgXzB4NjAxZHhkID0gXzB4NjAxZHhjICsgMjY7CiAgICB3aGlsZSAoXzB4NjAxZHg5LS0pIHsKICAgICAgICBfMHg2MDFkeDggPSBfMHg2MDFkeDZbXzB4NTI4MVsyXV0oXzB4NjAxZHg5KTsKICAgICAgICBpZiAoXzB4NjAxZHg4ID49IF8weDYwMWR4YSAmJiBfMHg2MDFkeDggPCBfMHg2MDFkeGIpIHsKICAgICAgICAgICAgXzB4NjAxZHg3W18weDYwMWR4OV0gPSBlZTEoXzB4NjAxZHg4LCBfMHg2MDFkeGEsIDEzKQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChfMHg2MDFkeDggPj0gXzB4NjAxZHhjICYmIF8weDYwMWR4OCA8IF8weDYwMWR4ZCkgewogICAgICAgICAgICAgICAgXzB4NjAxZHg3W18weDYwMWR4OV0gPSBlZTEoXzB4NjAxZHg4LCBfMHg2MDFkeGMsIDEzKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgXzB4NjAxZHg3W18weDYwMWR4OV0gPSBfMHg2MDFkeDZbXzB4NTI4MVs1XV0oXzB4NjAxZHg5KQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgOwogICAgcmV0dXJuIF8weDYwMWR4N1tfMHg1MjgxWzddXShfMHg1MjgxWzZdKQp9CgpmdW5jdGlvbiBkZDAoXzB4NjAxZHhmLCBfMHg2MDFkeDEwKSB7CiAgICB0cnkgewogICAgICAgIHZhciBfMHg2MDFkeDExID0gZWUyKF8weDYwMWR4Zik7CiAgICAgICAgdmFyIF8weDYwMWR4MTIgPSBhdG9iKF8weDYwMWR4MTEpOwogICAgICAgIHZhciBfMHg2MDFkeDEzID0gZWUyKF8weDYwMWR4MTIpOwogICAgICAgIHJldHVybiBfMHg2MDFkeDEzCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICByZXR1cm4gXzB4NjAxZHgxMAogICAgfQp9CgpnbG9iYWxUaGlzLl8weDUyODEgPSBfMHg1MjgxOwpnbG9iYWxUaGlzLmRkMCA9IGRkMDsKdmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICfmvKvnlLsnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ1vmvKtd5ryr55S76LWw5buKJywKICAgIGhvc3Q6ICdodHRwczovL21oemwuZnVuJywKICAgIHVybDogJy9ib29rbGlzdD9wYWdlPWZ5cGFnZSZ0YWc9ZnlmaWx0ZXInLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaD9rZXl3b3JkPSoqJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiBQQ19VQX0sCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBjbGFzc19uYW1lOiAn5YWo6YOoJumfqeWbvSbml6XmnKwm6aaZ5rivJuWPsOa5vibkuprmtLIm5Lit5Zu9JywKICAgIGNsYXNzX3VybDogJy0xJjExJjEyJjEzJjE0JjE1JjE2JywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLnRhZ319JmFyZWE9ZnljbGFzcyZlbmQ9e3tmbC5lbmR9fScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJZelVvQ1VSVEgzK1d1Rlpxc0ZpNmpSWXZlSUZ3TU5iVElMT2dEUkFSRHRMRVBHOE9NVURUcFF5TVZoQWdhVTEvR3VYZDhpMmE4OTV5eFRTL2cyZms3LzNQT25Udk1iMk9LYVJxTGJxZll2cEZrVVhhaTc3RVFTK2dIaGdlT21SZjlnY2RuZXZ6VW1IVWwvSEt1UGMyMi9YSUE2WkRLQ2kyZXpVRW1BVEorZmlYTXZzb1U0RnorYnZyNERuTVNJRnZmVW5YdkIrNnk2cUpUZ2wwU2duTXNucW5nT1RQQTdLbnBWTHVRU2NCbnVHeFBoalY0QmdtWTViNG1nd3JlZVFhUWlWYkorUjZvVEFITzNiNU1uNHN3SndIbnpIN3dyaFJnVm03d1Q5d3BBWGRhUmFmM0FUc2w0RnkyNnpZek1DY0JzMXBqWXR1UVNjQ2ROL2U4MXRua1A3ZzNLR0RQaFMwS0puOTRuZXVhTDBIZnp1SHhVVnhQaWxIUnFZNVU0OThhZEVZMnZEbFJobnNpcG1OK2gvd2lqY1J1OEVXNjQ2cGp2LzMvUllZMTNPK082KzV3cU9wTHdVVjYxOXkwVkZuelQ0dUZtTFpNR3BBR3BFR0VOQ0FOU0lNVjBvQTBJQTFXU1FQU2dEUllJdzFJZzRYWElFei9GSkVHaTY1QitoZGdrc0VLTWhVQUFBPT0nLAogICAgbGltaXQ6IDYsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgX3VybCA9IGlucHV0OwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChfdXJsKTsKICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgY29uZiA9IGh0bWwubWF0Y2goL3ZhciBfY29uZiA9KC4qPyk7LylbMV07CiAgICAgICAgICAgIC8vIGxvZyhjb25mKTsKICAgICAgICAgICAgbGV0IGpzb24gPSBKU09ONS5wYXJzZShjb25mKTsKICAgICAgICAgICAgbGV0IGltZ3MgPSBqc29uLmEubWFwKGl0ID0+IHVybGpvaW4oX3VybCwgZGQwKGl0LCBqc29uLmMpKSk7CiAgICAgICAgICAgIGxvZyhpbWdzKTsKICAgICAgICAgICAgaW5wdXQgPSB7dXJsOiAncGljczovLycgKyBpbWdzLmpvaW4oJyYmJyl9OwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgaW5wdXQgPSB7dXJsOiAnJywgbXNnOiBlLm1lc3NhZ2UudG9TdHJpbmcoKX0KICAgICAgICB9CiAgICB9KSwKICAgIGRvdWJsZTogdHJ1ZSwKICAgIOaOqOiNkDogJ3VsLm1oLWxpc3Q7bGk7aDImJmEmJlRleHQ7Kjs7KjsuY2hhcHRlciYmVGV4dCcsCiAgICDkuIDnuqc6ICcuYm94LWJvZHkmJnVsJiZsaTthJiZ0aXRsZTsubWgtY292ZXImJnN0eWxlOzthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnLmluZm8mJmgxJiZUZXh0Oy50aXA6ZXEoMSkmJi5ibG9jayYmVGV4dCcsCiAgICAgICAgaW1nOiAnLmJhbm5lcl9ib3JkZXJfYmcmJmltZyYmc3JjJywKICAgICAgICBkZXNjOiAnLnRpcCYmLmJsb2NrOmVxKDApJiZUZXh0Oy50aXAmJi5ibG9jazplcSgyKSYmVGV4dDsudGlwJiYuYmxvY2s6ZXEoMSkmJlRleHQ7Oy5pbmZvJiYuc3VidGl0bGU6ZXEoMSkmJlRleHQ7LnRpcCYmLnN1YnRpdGxlOmVxKDEpJiZUZXh0OycsCiAgICAgICAgY29udGVudDogJy5pbmZvJiYuY29udGVudCYmVGV4dCcsCiAgICAgICAgdGFiczogJycsCiAgICAgICAgbGlzdHM6ICd1bCNkZXRhaWwtbGlzdC1zZWxlY3QmJmxpJywKICAgIH0sCiAgICDmkJzntKI6ICcqJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/火狐影视.js b/drpy_js/火狐影视.js
deleted file mode 100644
index fc215b2..0000000
--- a/drpy_js/火狐影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICdteCcsCiAgICB0aXRsZTogJ+eBq+eLkOW9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuaHVvaHV0di5uZXQnLAogICAgdXJsOiAnL3ZvZC1zaG93LWlkLWZ5Y2xhc3MtcGFnZS1meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvdm9kLXNlYXJjaC1wYWdlLWZ5cGFnZS13ZC0qKi5odG1sJywKICAgIGNsYXNzX3BhcnNlOiAnLnRvcF9uYXYgbGk7YSYmVGV4dDthJiZocmVmOy8uKj8oXFxkKikuaHRtbCcsCiAgICDlm77niYfmnaXmupA6ICdAUmVmZXJlcj1odHRwczovL3d3dy5odW9odXR2Lm5ldC8nLAp9
\ No newline at end of file
diff --git a/drpy_js/烧火影视[优].js b/drpy_js/烧火影视[优].js
deleted file mode 100644
index 35e1c59..0000000
--- a/drpy_js/烧火影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/热播之家.js b/drpy_js/热播之家.js
deleted file mode 100644
index ff36aa2..0000000
--- a/drpy_js/热播之家.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eDreaSreS5i+WuticsCiAgICBob3N0OiAnaHR0cHM6Ly9yZWJvemoucHJvJywKICAgIC8vdXJsOiAnL3R5cGUvZnljbGFzcy1meXBhZ2UuaHRtbCcsCiAgICB1cmw6ICcvc2hvdy9meWZpbHRlci5odG1sJywKICAgIGZpbHRlcmFibGU6IDEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5jYXRlSWR9fS17e2ZsLmFyZWF9fS17e2ZsLmJ5IG9yICJ0aW1lIn19LXt7ZmwuY2xhc3N9fS17e2ZsLmxhbmd9fS17e2ZsLmxldHRlcn19LS0tZnlwYWdlLS0te3tmbC55ZWFyfX0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsxWjcwNGJSeEIvbC92TWh6dUREZVFOK2d4VlByaXAxVWFsVkFKYUNVVklKTWJVTnNRMlVXT1hRUG1qWXV3VURBWlNFbXhzWHNaN1o3OUZ6OTdkbVZseW1WNngyeXFTdi9uM205dTltZG1kM2QrY24xbU85ZWpMWjlaM2lXWHJrZlVrdnBUNDRtdHJ3cHFQZjUvd3NidVo4UzZhWW0vRHAzNkt6LzJZR0R3NzcxdEVxdHBMVnZ1MER4eHJaVUxSMldxbnRhdm9HTkxGWFpHcEtIb2FhQzk5NFNaVGlwNUJ1cklsYnBxS25nWGFmVjV3VjR2NmxUWk9ucW5nTEE3NjRxWi83VFF5bW85WUs0LzdGaFhvWEh4eDBZZ1RaL2wwbk1HdlZDQXdWZ1VDMDZOQVlESVVnRkNTV2ZmRkcyVlRJREF0Q3NDYzJYT3Y5WWVlVXdJWTkrTFVLMjdwY1JLQW4rdXZldHR2dFo4U0JLNk9BakN1L0RQYUZBaGNEZ1ZnM05tMWFOVDBPQW5BbGxzWCtVdHRrd0JzK2FQdTc3QU9FbWhiNS9hZ2UxWlhOZ1hBbDlweHAzMmdmWkZBMjNyN1Y1MmJncklwb0czZHU0Sy9hc3FtQU02NTJVM3Z3WndEQU9QS2Q3aUxGSUI4UG0vMzNyUjFQaVdnV3pXK2tJaWJPM1czTGpZYllYZnFVYVczdmE0ekpBRkVlcnp0ZmpqWGtVcUFtYTI3TjIzSTdBQ0F4KzJjMkdscGp5V0FMRnk5UnBzQ2tJV05DN1FwQU9OS1pYZjNWSStUQUZma0xZNVRBUHhzdjBlYkF1aExuZnBTTjhhOXJJdkdzUjRuQVl4YnkvdVpFbWxkQUlqSmVucjVtcGZaeGlWVkdDdjl3TjI0ODRkQnNXc01UNlN1TzAxZHR3clFkVjlPeEJmTWRiOTUxMm0yUXE1N3hJNU1LVzd3ay9DVHlFOVNQb0o4aFBJTzhnN2xiZVJ0d2p1endEdXpsSjlCZm9ieTA4aFBVejZHZkl6eVVlU2psTWQ0SFJxdmcvRTZORjRINDNWb3ZBN0c2OUI0SFl5M2YvbVFsWnFMejM5anJGVDN2TmF0cm9hdDBKMlcvN3plQnhLUWlrR2JBbENGbDBkb1V3QXFwdFFTTDB0b1JreHFpcGdsSUxXSU5nVklmUk9iQktRV1NTUVNrTjB1enBLNDIvdUE1dkNyWlpMQjNDdlJ5SCtVUHJkMDNTdTlVMU1zUGZVZmhhTyswWERydnlqTHQwK1hGakdCNTJzaXJZKy94U2MvTENUNmIzMDhZVVdHVnowUnVvU2RSZ1Z2ZmJMUC9EUFZQejJKYVlxbXVYK1lvUWwzcy92bmUzRlVKS2JZS05VTHB6UTRaY1BkRjZ6U1lHNStUb1Z3eW9hNytibmJuVk0ybkRyamxBMm4rRGpsOWxEVnd5cXd3VmJFMDZRUHdKZlRpbjliYTE4a0dQYitsVHRWajVNZzFQMGJwQzlHcDNyV1UvN3pzTW9ERUNhYWh5b2lMbnU4V3ZwMGhsaTFWS3o3Z2tMOGRxaUhBaDZyaTdHNnNENWJkZkdQVk1KbTVyOFFDcFBEQzRYSlVWN2VmaHNyV3EvMW9ra1FwdVhsTHBTSHRyemVQdXlRZmJKMU9Da0Eyc0w0dk1GOUd1QStSZnk3clROemlVaFpwejJXd05SMXVNSDdnTDJDeDhmeXFJN2xRY1ZPRFYreG1Eb2w3Yk5WOS9aRXYrb2pDVzlZby9jMmlXbU4zZHNLcG5WNmxDZEZnSE1HeFlSb1VJekRCc1dFYlZEM21oempPVXFGa3V5Y0xPYyt0bklTK29FZmQ5bTJpcFA2YTNmZVNWbmJKQWpUSGdXZnZ1d25TcVlaNGU0QXJoRmp6MjZtU1dOdkNhYUI0ejZ6c2sxVE15OVNIL1Q3SklBNUMzdmVLV1JaZ2pEUzNnL1hMWll3OWo0QTI4R2gyQUdaSXdINGtxeDFEMWUxTHhKQURJV2NPSU02bENCTUEyZlc3NzFLUzZhNm1VdFk5d0dBY2ZVdFViN1M0eVFBUDAvMjNDejRLUUhNZWRsMDE5SjZUZ25BbHF0NkJTMm1GQmpodmN5MXVOeHFjZGtidDB2V3VGMGF0MHREdDB2UjRjVVg3aVA1ZjVYWHZPMW1Hc3BJZHFVVUZhWjFodWJOejZSaEpaVWh5OSswT2lNUVg5Ry9teVBFUVJjZG56eWZ6OGtEdkkzeDJqUmVHK08xYWJ3MnhtdlRlRzJNMTZieDJoaXZUZU8xTVY1N2FoUW40Zi8ycDh6S1h5R24rZTJNSWdBQScsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgMToge2NhdGVJZDogJzEnfSwKICAgICAgICAyOiB7Y2F0ZUlkOiAnMid9LAogICAgICAgIDM6IHtjYXRlSWQ6ICczJ30sCiAgICAgICAgNDoge2NhdGVJZDogJzQnfSwKICAgICAgICA1OiB7Y2F0ZUlkOiAnNSd9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL3R5cGUvaWQtLmh0bWw/d2Q9KionLAogICAgc2VhcmNoYWJsZTogMiwvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHF1aWNrU2VhcmNoOiAwLC8v5piv5ZCm5ZCv55So5b+r6YCf5pCc57SiLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1VDX1VBJywKICAgIH0sCiAgICBjbGFzc19wYXJzZTogJy5zdHVpLWhlYWRlcl9fbWVudSBsaTpsdCg2KTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykuaHRtbCcsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgdGFiX3JlbW92ZTpbJ+iTneWFieS4k+S6qzEnLCflpLjlhYs0SycsJ+aegemAn+acieW5v+KRoCcsJ+aegemAn+acieW5v+KRoSddLAogICAgbGF6eTogJycsCiAgICBsaW1pdDogNiwKICAgIOaOqOiNkDogJ3VsLnN0dWktdm9kbGlzdC5jbGVhcmZpeDtsaTthJiZ0aXRsZTsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7LnBpYy10ZXh0JiZUZXh0O2EmJmhyZWYnLAogICAgZG91YmxlOiB0cnVlLCAvLyDmjqjojZDlhoXlrrnmmK/lkKblj4zlsYLlrprkvY0KICAgIOS4gOe6pzogJy5zdHVpLXZvZGxpc3QgbGk7YSYmdGl0bGU7YSYmZGF0YS1vcmlnaW5hbDsucGljLXRleHQmJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICAidGl0bGUiOiAiLnN0dWktY29udGVudF9fZGV0YWlsIC50aXRsZSYmVGV4dDsuc3R1aS1jb250ZW50X19kZXRhaWwgcDplcSgtMikmJlRleHQiLAogICAgICAgICJpbWciOiAiLnN0dWktY29udGVudF9fdGh1bWIgLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsIiwKICAgICAgICAiZGVzYyI6ICIuc3R1aS1jb250ZW50X19kZXRhaWwgcDplcSgwKSYmVGV4dDsuc3R1aS1jb250ZW50X19kZXRhaWwgcDplcSgxKSYmVGV4dDsuc3R1aS1jb250ZW50X19kZXRhaWwgcDplcSgyKSYmVGV4dCIsCiAgICAgICAgImNvbnRlbnQiOiAiLmRldGFpbCYmVGV4dCIsCiAgICAgICAgInRhYnMiOiAiLm5hdi5uYXYtdGFicyBsaSIsCiAgICAgICAgImxpc3RzIjogIi5zdHVpLWNvbnRlbnRfX3BsYXlsaXN0OmVxKCNpZCkgbGkiCiAgICB9LAogICAg5pCc57SiOiAnKicsCn0=
\ No newline at end of file
diff --git a/drpy_js/热片网.js b/drpy_js/热片网.js
deleted file mode 100644
index e994929..0000000
--- a/drpy_js/热片网.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV5e0sjfnYsSqn4yYxXGRvGVHRuH33NvKHFrTZ7g0DIqsfaeIqUHiVuz0rGJPuwJZcyWw6kQmptTz6gAJ0o1tTRnoQIxUi2bt1UT9pTxuJHXTDGswvC7WcRNGvLivAC2c9Z+zviohVNPwfddBSwQIvavbxpMdxk9amZvyCQeYEFHiwTwkQsyPVvdS4a6qUtNj7ZGC3iF52Dc0jCEdjFkoVXZOOBOMfNuUs8qWLPNoeqALdpt2V23I2qQNVaVOtBgTytHwfkYTuNb2BF7NcnHynnc5mSXIKL54APSsC4j7dcBWn2hX2jzVyi0Pt3dYZBahPStwk6GuS4opVfwNCvcKT72SezpQhHtQQQeNbB5qy2f+lM+9IRVrrGwbL0+YTCl+K34Bih/7q/isi1UFeBRh+TvhJqDKeOMroAGjrtSNlMHlbJ44YORG+FOzPLbI/c/Rc3D245nEC9O/y0/kXl3DyAYLCqUd1EyLcStMJ1JwOO4FWUuV3XKtbiGsFn+nsHxeMHHPdrAzo47N2DEfLKzR76ahlckoB9ISYV8seEeab1V4v+dDOvwkxns9+ghKs9n56He0SdZKxIIGFqEiddqSYGLc/i4y0BwwjVXtqncBhYq9VVfASjnCVmls+bTr1ZF4LjXAE9eSUmc9qmR+/49s8nackUYH25aVDG6ZQedAnYNqztnXG5zAH2dOP/JsogA9ETbzVYB3g9/zyUrJtq4pM3MyvQuO2OELK/gn8OqRjijoj7au/1Dq5pcHXR6xoiVPrzE3Avd4WJoQElll5Rx66b/WqCHHToKU8DeYpoRMJQ+ENVm+nP8wpYavL0k8VVPLB6uRE644Ux8+TCp7cVeTRrlzSeAXaf1ls8G13DvBvLSmNQjmW+9Ti+b7/Y45g9le0LvreXct8RnpGO7Nk/0voZMjbvU3tbxpa8uBac5pUu229NcbQqCASQiMWqWH13q5V4K9O4aM0PtG3zDU+oXc3rfAt4n4NhsjG/XiSzOWfz1LFJ56GtOPqQEcdr4N1Llqm2Eo4pQ/vfPM+2dSwvDE5SVfTLgKoMobHXvxukJdllVrvyTdKejQChdzw7jFZjSkXNml8FSV9AJTBsfNtlG/DUknBrdvCGs2GODk2AxdzxRk28RQ74vQwzwnhtvispmBX3DKoFbgfROo6kfK3FXdBNzE1YNmcD2Ujuw77jwEUXHkQ+ogJ3DLNiBis8kX4YcsoUudjgS6x1F6+DyRyF5cjdm6Le9/kW1d+Q3B6G4Gt+tifw4CIXwVyVHsRTT6Xl3T0ZlVXGNHNxywu6jZga1ZzfehBwMrBSlhO7tC1jjcwNf8u6AEdQLd0d9XkfiCrLDNE4Rb5UovPNQtPmMsAeFbZYIzwLmnfabTEUIJM5rN9HzhXC8pUgI/1aNdPwbfoeoQi8EwqC1BYQJl5z+ojBjECvbMJWxSZizGBAdBJUk32cXDKhqf0wZwYEqwVnYiEnt6yjFNbeUScdDKcZ324tXij8ir3TAPaRf9bVRm3Ho2DYU2QHG/AwJtczy4CihjkRupd8ta1LITJEm45+bbPqIN6183Ahw3cWprrHQKXgnjxbT/47JoOS666HcsQNxYGviCV/581Yla+MNIoSBH/O1W7VvTeKrIe04f2ml02SwK2eGp1fcWCVpmiXdfEb9PFZ5p0T/DjHb2TJFMXaTfEoBGj77acpew0nn35ruhL3btBdxT7d3tT7PmL6bt1vsZ4UCux5dArY1fhr6RImN2U+hzS7o1LgDa+JnnaueiphcPZYtbYy1Mm4I3WQ7TdLMGhxmS2GxvLbAABG5UqoJuwAh+1WxrnpEXPcHYi/5UzT7oY8D4ZfPJcjefglqlYqt0HYMs+c1zYnAdwfTmB1YQ9eO4616NCbjOg9ugI49+TY8X2qbM
\ No newline at end of file
diff --git a/drpy_js/焱淼4kapp[优].js b/drpy_js/焱淼4kapp[优].js
deleted file mode 100644
index cb4f298..0000000
--- a/drpy_js/焱淼4kapp[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/熊猫TV.js b/drpy_js/熊猫TV.js
deleted file mode 100644
index f2aea94..0000000
--- a/drpy_js/熊猫TV.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/爱上你听书网[听].js b/drpy_js/爱上你听书网[听].js
deleted file mode 100644
index 4a7404b..0000000
--- a/drpy_js/爱上你听书网[听].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV+IpJMw5v95iw+CDIe0xhADvrmZPbNGl3pHrLR0SlUQ/x8bysAHc0AOe7Ww7zTupRECCDb1qb8H08ZXA8C3i7oxC98IZf00JKNmPIYYB6koE2v1Z2sX9RXjjlIzVQbXb89H6xKgdfaLMBKXcx1xMbzf6V8qTnaHVkuqMFN2MQcwfVlAR6d9x7axlwjkdF9NOtvydnsNgV8K1r1kuj3LQ2qonwv/DY/yj21D6xtj3y51pRFx/dXCsgZpjUz2MbzPdumr4dRU5hOa4dJpEWi9eQMF0DxlUrPSQLd0yIpvVK2fet+jqZIyoDZJpsF+F49/XTewjum8TIy28ykD2KSRe66SGB19AgbTVNcwoUcrLw2GNZxKlii9ojPDwyc7j5jilu7GipsK+QpIpmcm6f9Ei1r4aEZwsXvIm3xkF31eU8H0RXIur+p5E/HtrSLsjVE3cu8YXV8HAihEn7HoDN/Lplre4nkcWngO510a76A3M/bwj+cxDx2LsnFEfDL09CXa8kQ9+EdtI+GrIuPiFsnCZXDoQ+yc7b8dCw2cz8OPg0bhp2a0tYdci1aiAIZhuTjyew8HU6UmATCxInqbray3ecQLE2HuUAFOWqaL3K1f3tLdNoujSLTCsVP8lLGe+P8D+DDLeDPW0XnOmbDvPL8YGKadsETi5mCM8eFxQWro9vuMCllOtPFSEwnwXphRFnso88xKfD8mUdZQ3Gbz8Q8kyODbSpzHQXKDHQPGNtVgYM0Jod4qgZFhL1qYUDrWtrnhsDYUyvduwSwXRjRQ9pU2hd4sCTo2tVr1ZgZiFgMqvXWva1kJ7rU0qxkSFDzgBDFNfb98uq2uA7P8tyI7tMKCEp2KYneU1pdgw7oZf2mRCkofDOoFgyDODSrn8vDR6C0KH/f8Qo+2prjsfsW/la2btpc3PiQXSt6IF5MKFILtdTBB23/8vZsZ7X7CwdvEDhJsxVuB12U8gTzC+d0XihnoL61bjfeEpS3zopIHdu+td5a7hY0dP0Y9zz/esVBx+4/DmPr6VvD6rQcOcmCtMVK8bxj7g5cyZeLGXM8lvaLbT8RxIUS020+2a1TRnk2dim/OU1GYzGe23yettjeU0IlbyC6FIKmugBU0C5iHhtroLo2CFwvA44WU0UZYoXTkUuJsYkqlx6ya5uLhdUT57rZM0GvcJmS+63Q91dvnD1kYDFPkDLeelhRCyeebKuo1fau4L3rOF2ypMEcrc/YJJWP79/NhpiibWunThmqHk2Tk9ICwf5rarfZBWNmTRgJt7lhBjhk6KG0iPA98QKAE//ZAAkUee4Vmh5NrrW5KQrkc2pA9vRfj8fdyhlxoRRbX8rcrQc9xBYgyqILwKi/526IGYEK+hNUrr+IUBEfEiUR+zJGwE
\ No newline at end of file
diff --git a/drpy_js/爱优影视[自动].js b/drpy_js/爱优影视[自动].js
deleted file mode 100644
index 69a8d05..0000000
--- a/drpy_js/爱优影视[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/爱你短剧.js b/drpy_js/爱你短剧.js
deleted file mode 100644
index 6b81031..0000000
--- a/drpy_js/爱你短剧.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teG9uZTUu5LqM57qnLCB7CiAgICB0YWJfdGV4dDogJ2Rpdi0tc21hbGwmJlRleHQnLAp9KTsKdmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICdteG9uZTUnLAogICAgdGl0bGU6ICfniLHkvaDnn63liacnLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LmFpbmlkai5jb20nLAogICAgdXJsOiAnL3ZvZHNob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3ZvZHNlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHZhciBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKICAgICAgICB2YXIgdXJsID0gaHRtbC51cmw7CiAgICAgICAgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMScpIHsKICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKQogICAgICAgIH0gZWxzZSBpZiAoaHRtbC5lbmNyeXB0ID09ICcyJykgewogICAgICAgICAgICB1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSkKICAgICAgICB9CiAgICAgICAgaWYgKC9cLm0zdTh8XC5tcDQvLnRlc3QodXJsKSkgewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICBwYXJzZTogMAogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW5wdXQKICAgICAgICB9CiAgICB9KSwKCn0=
\ No newline at end of file
diff --git a/drpy_js/爱弹幕[漫].js b/drpy_js/爱弹幕[漫].js
deleted file mode 100644
index 2c44cec..0000000
--- a/drpy_js/爱弹幕[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/爱爱影院[密].js b/drpy_js/爱爱影院[密].js
deleted file mode 100644
index cf2aee3..0000000
--- a/drpy_js/爱爱影院[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAAAA3VTSW/bRhS+61cQPlCWrYiLdrlGoZ3aLGuhtqJwRuJQXEWKHGqhK6C5FC2Qtk43oECAFrkkl6II0EPqLvkzsR3f+hM6FOXGKFqCIOd9773vrbMAFmE5GiSOifMAcJBkWBkiePvbk6svf37z60UwHEAy0iDGbj59id+rP17efv8Mw5JhI4xKCJl2hqJYdgkiUxlJzjgiG1hcCGBnVbWxnQYRISFdO7bg3IE22ueanW74XIJAgJadOd/jbWg9yE7hDO1lGs1cpV4847ObTejI87StyTGh2GbEFERp3+MJ740NYU2SjkaSIAPn+0yIJCULinuhI4/6GLt48Xf8xHnwXYAgzuefEMFNOHDz+3c3Pz7CqIPEB6ltzTo0HFxfnKbpcACXoUPe0rAFhbWOf5JnAlxFTMmkFoZAobUJKVmgxLUoawhalAmmEEveL+JljB19zZnvf34uapEJQLAibDZYKUAEZM2PgkUbAmsi8f8VylfdD0AtBerg4C6Mrwdjb2xMmAjMHXmidragD/h5vDMITDRg22czoHuDfvv8k9tnT968+vjq8SW5Ey4f3xNefYYFHMf38qthSJaMvitRgCLueYDBH79Ez8RrNXsfYT0keh+JBjcBjAUQGJ9Z0E/oPHj76Ovbb19fPX1xc/naG95fP1xc+tL1Vz9df/OnR2NqYH1mAsvGHshyIEY8YZcezkwD7jpDPFTsTGCBl16dGIK39dVO8ySyNd2/W015ZjooFNEBmkj7lGfskeOqIgfvH+/jT+g9KvQB82HoyGfCITDRljCCz0cBWST2KT3qpD7SzRgVQR6pZxUK4Z5s2b3rRiirDEGHiV3S+LTNdUuHu0BAzYb/b878y/wh7pom6zJe2jReJsPZTlcEmCQcuP7ixdvPL3AfDnAj8GRvLp9jIWIZy8jE0OKEgI4ASW5v+pGsT0lSAAg8wFfoSCbJLlxt1d7t8twvH/vuHtf1xdObX57thN3wscTF7Er27kmwnTWdzLdynXI6yjb642arguJsfabmTmKtEt8bwZ5uyvmKepKVq+teq1jIqiVT5ucteVkpwZHV1MVKvzAvc3PgjrpcvamlG/EUxZ927HY1ba06am7JWfYUNsWOmHNX3KrINanaJDewTpt6adhZ1JP0jHGXkiJU3Jk8bptzd8KdwviUrzbBykkIYuukJXEupwyGGqrnK3xZKxxKfLnBrIb18TyZnZSiuVl+yEh5qrJiZatFjxolITVQzRTQa2BqpLPF2ayNZCNp691CfCiwc6WrFmdNnW4oPY7Ta1JlxJfGtZlj2ygxjEpDO+HU3IVZUCe0VByYh4yQKzulkdk/bLedWM9crVUzva73W+OpkQC5ucJJYrabaDutfpoyqkuaXdGVUbxc41I1uSdYRnlsNnvj1SBq5aqKeyLE2Oqwapi8XjhRkvFchdcH2L+bj9ZjnDobuCNDKaJxV++bNnOYS7aQu+R5Jm/HFJqtM+kRpQzdFFvTY6oi1OjESWfIHsbjBbA4Xel6LyEqeJYiPZyrtkF13NPopMbmVDU3lw+tyWgRF0d6p82IdIGP2gwbZRpqMp9eN9Mp4PbLvVJ8qNJViivGYslEq4A35TgY2PwNuKSYrZEGAAA=
\ No newline at end of file
diff --git a/drpy_js/爱看hd.js b/drpy_js/爱看hd.js
deleted file mode 100644
index 7cee15c..0000000
--- a/drpy_js/爱看hd.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICAgICAgICAgIHRpdGxlOiAn54ix55yLaGQnLAogICAgICAgICAgICBob3N0OiAnaHR0cHM6Ly93d3cuYWlrYW5oZC52aXAnLAogICAgICAgICAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0vJywKICAgICAgICAgICAgc2VhcmNoVXJsOiAnL3Jzcy54bWw/d2Q9KionLAogICAgICAgICAgICBzZWFyY2hhYmxlOiAyLAogICAgICAgICAgICBxdWlja1NlYXJjaDogMCwKICAgICAgICAgICAgZmlsdGVyYWJsZTogMCwKICAgICAgICAgICAgZmlsdGVyOiAnJywKICAgICAgICAgICAgZmlsdGVyX3VybDogJycsCiAgICAgICAgICAgIGZpbHRlcl9kZWY6IHt9LAogICAgICAgICAgICBoZWFkZXJzOiB7CidVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjYuMC4wLjAgU2FmYXJpLzUzNy4zNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRpbWVvdXQ6IDUwMDAsCiAgICAgICAgICAgIGNsYXNzX3BhcnNlOiAndWwudG9wLWJhci1tZW51JiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKFxcZCspLycsCiAgICAgICAgICAgIGNhdGVfZXhjbHVkZTogJ+eIseeci+WKqOa8q+WFrOWRinzkvKbnkIbliacnLAogICAgICAgICAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgICAgICAgICBsYXp5OiBganM6aW5wdXQgPSB7cGFyc2U6IDEsIHVybDogaW5wdXQsIGpzOiAnJ31gLAogICAgICAgICAgICBkb3VibGU6IHRydWUsCiAgICAgICAgICAgIOaOqOiNkDogJyonLAogICAgICAgICAgICDkuIDnuqc6ICdib2R5JiYudmlkZW8tY29udGVudC1pdGVtOy50ZXh0LW92ZXJmbG93JiZUZXh0Oy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsudmlkZW8tdGl0bGUmJlRleHQ7YSYmaHJlZjsudGV4dC1tdXRlZCYmVGV4dCcsCiAgICAgICAgICAgIOS6jOe6pzogewogICAgICAgICAgICAgICAgdGl0bGU6ICdoMSYmVGV4dDsuZXdhdmUtY29sbGFwc2UtaXRlbSYmbGkmJlRleHQnLAogICAgICAgICAgICAgICAgaW1nOiAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJywKICAgICAgICAgICAgICAgIGRlc2M6ICcuZXdhdmUtY29sbGFwc2UtaXRlbSYmbGk6ZXEoMSkmJlRleHQ7LnJvdzplcSgyKSYmbGk6ZXEoMSkmJlRleHQ7LnJvdzplcSgyKSYmbGkmJlRleHQ7LmRldGFpbC1pbmZvLXRleHQmJnAmJlRleHQ7LmV3YXZlLWNvbGxhcHNlLWl0ZW0mJnAmJlRleHQnLAogICAgICAgICAgICAgICAgY29udGVudDogJy5tYi0wOmVxKC0xKSYmVGV4dCcsCiAgICAgICAgICAgICAgICB0YWJzOiAnLmV3YXZlLXBsYXlsaXN0LXRhYiBhJywKICAgICAgICAgICAgICAgIGxpc3RzOiAnLmV3YXZlLXBsYXlsaXN0LWNvbnRlbnQ6ZXEoI2lkKSYmbGknLAogICAgICAgICAgICB9LAogICAgICAgICAgICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBpdGVtcyA9IHBkZmEoaHRtbCwgJ3JzcyYmaXRlbScpOwogICAgICAgIC8vIGxvZyhpdGVtcyk7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgaXQgPSBpdC5yZXBsYWNlKC90aXRsZXxsaW5rfGF1dGhvcnxwdWJkYXRlfGRlc2NyaXB0aW9uL2csICdwJyk7CiAgICAgICAgICAgIGxldCB1cmwgPSBwZGZoKGl0LCAncDplcSgxKSYmVGV4dCcpOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsICdwJiZUZXh0JyksCiAgICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsICdwOmVxKDMpJiZUZXh0JyksCiAgICAgICAgICAgICAgICBjb250ZW50OiBwZGZoKGl0LCAncDplcSgyKSYmVGV4dCcpLAogICAgICAgICAgICAgICAgcGljX3VybDogIiIsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAogICAgICAgIH0=
\ No newline at end of file
diff --git a/drpy_js/爱看农民2[优].js b/drpy_js/爱看农民2[优].js
deleted file mode 100644
index a59ba14..0000000
--- a/drpy_js/爱看农民2[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/爱看农民[优].js b/drpy_js/爱看农民[优].js
deleted file mode 100644
index 0f79769..0000000
--- a/drpy_js/爱看农民[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/爱看影院.js b/drpy_js/爱看影院.js
deleted file mode 100644
index 7b5eac1..0000000
--- a/drpy_js/爱看影院.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/31VV2/bVhR+z68Q9OAlS9SglgW1oKxFSrKsQYkSAhjX5KVIcYpDEm0YcBqkTZO0cZCi6MgumgYdcIPWSJvR/JiGkv0vSq3UQYPeB+Ke853Nc85FEJd951f77qF985b9x+WzhycuzjBUfQNBeMGyfEBVkQsI4hod3Rn//ujsxxunx5cuSOYukH2jk2en956HfG+e3xg//8Fn8IYIXUnXso8TvQztndJLS3U4NBJTFjCAd6jPOMuJ9xthoE4vbNCK6Mh7A8EN2FsJrs5NJRLvYF4vlCZ4aPWcq/+g6Opbt32guTRzGun+BZdzpnFuuJbHV5+O71y3Xz09+/rR8voUGj15OLr72sHmUc7ZTjk4RTcc/julMvpz/H2gU8dzKKE7uKrxsrGSL9fqqwkRGk7dJTGpwZ4J9Rl7fZ+DgIGavrHvJnWoebEOlA33xvbmDokdHMy0dG1SsK6u+lSG5VYmRtbdvo4ySdvvpA2WljgNsu7VxMyf+3yep89+O33186wBXMnJ+cDldnkmRlcTkxCSzm15HUHGr245rWHfv28ffTZ68Kd97cno8NLo2m375pdd/c2L78YPLv19+NHZ4Tenrz+Z6p2eXLcPXy7KZWqikzDS39E5ZYCwFi0CXffOD2upoAOdi28S/LxK79VgLZYXDaidF5xxwO7kHwacSEdfHdtHj+2j4/EXT+yrH4+fvhj/8u3Z4afnpXdm1r37+6zoAxoEBwez+67lUjSX2+Al6F7wpp4XhAjkzts7NBxbDnUuhSlgQeCw34nP8ZZHdRxbHE+INEklTVYrOTQPw0xLo3nKlIdyiEWVdlbMZLNdkKpupvAKlUplUo2cpBdTVR6ncmm6gbMpVa5vRTd5dnu7TDL6sKTxjFz2INYut5fZ86RBozHw1HJNDdvrCVkxWq4V+B5H0rocJBBWjLHBQKSEaBZNBjweo9XT8ajJEk1NL3qUYqFaKQSVRoWKmlwFttA4YcQ7RqStMjXUY1VRSoNyESHlDgPDIX+z3waROqVvMQUtCEwxFg2DaM8IU1YoFNi1+mLf6IVEtsjWqX4kEJdUSyViRKcpRMQ2K1gikidVA5GLQ08NZtnQHokNuYbRQ9DBMC3lQzQV2szh9F6hbmTidLorSWSEplABzZWKJdpCwwN/uj2IyHhHyQQhpTelQSXdrhvbUT3QlDAqbQwNRY2Xg+xWuZ+vxZFYydgNYpxC5KTNLSLjr4RVAlUxtFYxBQ5UGn5Bq6UkoQta0C+EqlhZ6ETwtl+g2pgpSGF8yy9sqzgUsnGi6O+wKu6R8nGiVKpgbTzF59JEplzB2wRnpdPEZq6WIbAsIeDDzaog5/BcSUDDqaHQkfFhEVKtrpYuotUQLA+aXTkSyxDRvUa+BWNQ9vfzMT9S0kIVPRfdJjPWVjgOw1S8wRp9JuhvWmWtHGuJjIep9fhithxT5S4C2BzAumTWY8aKW7lWIZCqKYVGqq4U2hgSAJ0GaGP11kwGdDR/cdAESKUqmQLNb1dJpzGTyXnfTtt+RwWaPlmOk60qQdl01jdI6CqQ59t2vl0SvjVk5eJFxrO6GM3F5OvOLNAc6czbdJinFLK25vX+7/T/q+XsAF5m4NCncioCumCI6Gan42zIDyWeSQaWBkxybW1J5CXeSIb9c3UGGoAXycUKmZHOEuGZuRMnsrO79+zXV+yHP63Pnp7T48ejy1dG11+OPv/+7PZfznf2BEzfPcdOV1fkDZHXjYQMJJhQeTqR4BnH4cE/5GBXmEMHAAA=
\ No newline at end of file
diff --git a/drpy_js/爱看机器人[虫].js b/drpy_js/爱看机器人[虫].js
deleted file mode 100644
index 48e4f4a..0000000
--- a/drpy_js/爱看机器人[虫].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTon54ix55yL5py65Zmo5Lq6W+iZq10nLAogICAgLy8gaG9zdDonaHR0cHM6Ly92LmlrYW5ib3QuY29tJywKICAgIGhvc3Q6J2h0dHBzOi8vdi5haWthbmJvdC5jb20nLAogICAgdXJsOicvaG90L2luZGV4LWZ5Y2xhc3MtZnlmaWx0ZXItcC1meXBhZ2UuaHRtbFsvaG90L2luZGV4LWZ5Y2xhc3MtZnlmaWx0ZXIuaHRtbF0nLAogICAgLy9odHRwczovL3d3dy5pa2FuYm90LmNvbS9zZWFyY2g/cT0lRTYlOTYlOTclRTclQkQlOTclRTUlQTQlQTcmcD0yCiAgICAvLyBzZWFyY2hVcmw6Jy9zZWFyY2g/cT0qKiZwPWZ5cGFnZScsCglzZWFyY2hVcmw6Jy9zZWFyY2g/cT0qKiZwPWZ5cGFnZVsvc2VhcmNoP3E9KipdJywKICAgIHNlYXJjaGFibGU6MiwKICAgIHF1aWNrU2VhcmNoOjAsCiAgICBmaWx0ZXJhYmxlOjEsCiAgICBmaWx0ZXJfdXJsOid7e2ZsLnRhZ319JywKICAgIOWbvueJh+adpea6kDonQFJlZmVyZXI9aHR0cHM6Ly92LmlrYW5ib3QuY29tL0BVc2VyLUFnZW50PU1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTguMC4wLjAgU2FmYXJpLzUzNy4zNicsCiAgICBmaWx0ZXI6ewogICAgICAgICJtb3ZpZSI6W3sia2V5IjoidGFnIiwibmFtZSI6Iuagh+etviIsInZhbHVlIjpbeyJuIjoi54Ot6ZeoIiwidiI6IueDremXqCJ9LHsibiI6IuacgOaWsCIsInYiOiLmnIDmlrAifSx7Im4iOiLnu4/lhbgiLCJ2Ijoi57uP5YW4In0seyJuIjoi6LGG55Oj6auY5YiGIiwidiI6IuixhueTo+mrmOWIhiJ9LHsibiI6IuWGt+mXqOS9s+eJhyIsInYiOiLlhrfpl6jkvbPniYcifSx7Im4iOiLljY7or60iLCJ2Ijoi5Y2O6K+tIn0seyJuIjoi5qyn576OIiwidiI6Iuasp+e+jiJ9LHsibiI6IumfqeWbvSIsInYiOiLpn6nlm70ifSx7Im4iOiLml6XmnKwiLCJ2Ijoi5pel5pysIn0seyJuIjoi5Yqo5L2cIiwidiI6IuWKqOS9nCJ9LHsibiI6IuWWnOWJpyIsInYiOiLllpzliacifSx7Im4iOiLniLHmg4UiLCJ2Ijoi54ix5oOFIn0seyJuIjoi56eR5bm7IiwidiI6IuenkeW5uyJ9LHsibiI6IuaCrOeWkSIsInYiOiLmgqznlpEifSx7Im4iOiLmgZDmgJYiLCJ2Ijoi5oGQ5oCWIn0seyJuIjoi5rK75oSIIiwidiI6Iuayu+aEiCJ9LHsibiI6IuixhueTo3RvcDI1MCIsInYiOiLosYbnk6N0b3AyNTAifV19XQogICAgICAgICwidHYiOlt7ImtleSI6InRhZyIsIm5hbWUiOiLmoIfnrb4iLCJ2YWx1ZSI6W3sibiI6IueDremXqCIsInYiOiLng63pl6gifSx7Im4iOiLnvo7liaciLCJ2Ijoi576O5YmnIn0seyJuIjoi6Iux5YmnIiwidiI6IuiLseWJpyJ9LHsibiI6IumfqeWJpyIsInYiOiLpn6nliacifSx7Im4iOiLml6XliaciLCJ2Ijoi5pel5YmnIn0seyJuIjoi5Zu95Lqn5YmnIiwidiI6IuWbveS6p+WJpyJ9LHsibiI6Iua4r+WJpyIsInYiOiLmuK/liacifSx7Im4iOiLml6XmnKzliqjnlLsiLCJ2Ijoi5pel5pys5Yqo55S7In0seyJuIjoi57u86Im6IiwidiI6Iue7vOiJuiJ9LHsibiI6Iue6quW9leeJhyIsInYiOiLnuqrlvZXniYcifV19XQogICAgfSwKICAgIGZpbHRlcl9kZWY6ewoJCW1vdmllOnt0YWc6J+eDremXqCd9LAoJCXR2Ont0YWc6J+WbveS6p+WJpyd9LAoJfSwKICAgIGZpbHRlcuiOt+WPluaWueazlTpgCiAgICBsZXQgdmFsdWUgPSBbXTsKICAgICQoJ3VsJykuZXEoMikuZmluZCgnbGknKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAvLyBjb25zb2xlLmxvZygkKHRoaXMpLnRleHQoKSk7CiAgICAgIGxldCBuID0gJCh0aGlzKS50ZXh0KCkudHJpbSgpOwogICAgICB2YWx1ZS5wdXNoKHsKICAgICAgJ24nOiBuLCAndic6IG4KICAgICAgfSk7CiAgICB9KTsKICAgIC8vIOeUteW9seaJp+ihjDoKICAgIGxldCBkYXRhID0geydtb3ZpZSc6IFt7J2tleSc6ICd0YWcnLCAnbmFtZSc6ICfmoIfnrb4nLCAndmFsdWUnOiB2YWx1ZX1dfTsKICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKICAgIAogICAgLy/liafpm4bmiafooYw6CiAgICBsZXQgZGF0YSA9IHsndHYnOiBbeydrZXknOiAndGFnJywgJ25hbWUnOiAn5qCH562+JywgJ3ZhbHVlJzogdmFsdWV9XX07CiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICBgLAogICAgaGVhZGVyczp7J1VzZXItQWdlbnQnOidQQ19VQScsfSwKICAgIGNsYXNzX25hbWU6J+eUteW9sSbliafpm4YnLAogICAgY2xhc3NfdXJsOidtb3ZpZSZ0dicsCglwbGF5X3BhcnNlOnRydWUsCglkb3VibGU6dHJ1ZSwKCXRhYl9yZW1vdmU6Wyd3am0zdTgnLCdpa20zdTgnLCdzZG0zdTgnLCdNM1U4JywnamlueWluZ20zdTgnLCdmc20zdTgnLCd1a20zdTgnXSwvL+enu+mZpOafkOS4que6v+i3r+WPiuebuOWFs+eahOmAiembhgoJdGFiX29yZGVyOlsnYmZ6eW0zdTgnLCcxMDgwenlrJywna3VhaWthbicsJ2x6bTN1OCcsJ2ZmbTN1OCcsJ3NubTN1OCcsJ3FobTN1OCcsJ2dzbTN1OCcsJ3p1aWRhbTN1OCcsJ2JqbTN1OCcsJ3dvbG9uZycsJ3hsbTN1OCcsJ3lobTN1OCddLC8v57q/6Lev6aG65bqPLOaMiemHjOmdoueahOmhuuW6j+S8mOWFiO+8jOayoeWGmeeahOS+neasoeaOkuWQjumdogoJdGFiX3JlbmFtZTp7J2JmenltM3U4Jzon5pq06aOOJywnMTA4MHp5ayc6J+S8mOi0qCcsJ2t1YWlrYW4nOiflv6vnnIsnLCdsem0zdTgnOifph4/lrZAnLCdmZm0zdTgnOifpnZ7lh6EnLCdzbm0zdTgnOifntKLlsLwnLCdxaG0zdTgnOiflpYfomY4nLCdoYWl3YWlrYW4nOifmtbflpJbnnIsnLCdnc20zdTgnOiflhYnpgJ8nLCd6dWlkYW0zdTgnOifmnIDlpKcnLCdiam0zdTgnOiflhavmiJInLCd3b2xvbmcnOifljafpvpknLCd4bG0zdTgnOifmlrDmtaonLCd5aG0zdTgnOifmqLHoirEnLCd0a20zdTgnOiflpKnnqbonLCdqc20zdTgnOifmnoHpgJ8nLCd3am0zdTgnOifml6DlsL0nLCdzZG0zdTgnOifpl6rnlLUnLCdrY20zdTgnOiflv6vovaYnLCdqaW55aW5nbTN1OCc6J+mHkem5sCcsJ2ZzbTN1OCc6J+mjnumAnycsJ3RwbTN1OCc6J+a3mOeJhycsJ2xlbTN1OCc6J+mxvOS5kCcsJ2RibTN1OCc6J+eZvuW6picsJ3RvbW0zdTgnOifnlarojIQnLCd1a20zdTgnOidV6YW3JywnaWttM3U4Jzon54ix5Z2kJywnaG56eW0zdTgnOifnuqLniZvotYTmupAnLCdobm0zdTgnOifnuqLniZsnLCc2OHp5X20zdTgnOic2OCcsJ2tkbTN1OCc6J+mFt+eCuScsJ2JkeG0zdTgnOifljJfmlpfmmJ8nLCdoaG0zdTgnOifosarljY4nLCdrYm0zdTgnOiflv6vmkq0nfSwvL+e6v+i3r+WQjeabv+aNouWmgjpsem0zdTjmm7/mjaLkuLrph4/lrZDotYTmupAKICAgIOaOqOiNkDonLnYtbGlzdDtkaXYuaXRlbTsqOyo7KjsqJywgLy/ov5nph4zlj6/ku6XkuLrnqbrvvIzov5nmoLfngrnmkq3kuI3kvJrmnInlhoXlrrkKICAgIC8vIOS4gOe6pzonLnYtbGlzdCYmZGl2Lml0ZW07cCYmVGV4dDtpbWcmJnNyYzs7YSYmaHJlZicsIC8v5LiA57qn55qE5YaF5a655piv5o6o6I2Q5oiW6ICF54K55pKt5pe25YCZ55qE5LiA57qn5Yy56YWNCgnkuIDnuqc6Jy52LWxpc3QmJmRpdi5pdGVtO3AmJlRleHQ7aW1nJiZkYXRhLXNyYzs7YSYmaHJlZicsIC8v5LiA57qn55qE5YaF5a655piv5o6o6I2Q5oiW6ICF54K55pKt5pe25YCZ55qE5LiA57qn5Yy56YWNCiAgICAvLyDkuoznuqc65LqM57qnLAogICAg5LqM57qnOidqczpldmFsKHVuZXNjYXBlKGJhc2U2NERlY29kZSgiYW5NNkNpQWdJQ0FnSUNBZ2NHUm1hQ0E5SUdwemNDNXdaR1pvT3dvZ0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUdkbGRGUnZhMlZ1S0doMGJXd3hLU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0JqZFhKeVpXNTBTV1FnUFNCd1pHWm9LR2gwYld3eExDQW5JMk4xY25KbGJuUmZhV1FtSm5aaGJIVmxKeWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0JsVkc5clpXNGdQU0J3Wkdab0tHaDBiV3d4TENBbkkyVmZkRzlyWlc0bUpuWmhiSFZsSnlrN0NpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFkzVnljbVZ1ZEVsa0lIeDhJQ0ZsVkc5clpXNHBJSEpsZEhWeWJpQW5KenNLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2xrVEdWdVozUm9JRDBnWTNWeWNtVnVkRWxrTG14bGJtZDBhRHNLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSE4xWWtsa0lEMGdZM1Z5Y21WdWRFbGtMbk4xWW5OMGNtbHVaeWhwWkV4bGJtZDBhQ0F0SURRc0lHbGtUR1Z1WjNSb0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHdGxlWE1nUFNCYlhUc0tJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCemRXSkpaQzVzWlc1bmRHZzdJR2tyS3lrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR04xY2tsdWRDQTlJSEJoY25ObFNXNTBLSE4xWWtsa1cybGRLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCemNHeHBkRkJ2Y3lBOUlHTjFja2x1ZENBbElETWdLeUF4T3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYTJWNWMxdHBYU0E5SUdWVWIydGxiaTV6ZFdKemRISnBibWNvYzNCc2FYUlFiM01zSUhOd2JHbDBVRzl6SUNzZ09DazdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxWRzlyWlc0Z1BTQmxWRzlyWlc0dWMzVmljM1J5YVc1bktITndiR2wwVUc5eklDc2dPQ3dnWlZSdmEyVnVMbXhsYm1kMGFDazdDaUFnSUNBZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHdGxlWE11YW05cGJpZ25KeWs3Q2lBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUhSeWVTQjdDaUFnSUNBZ0lDQWdJQ0FnSUZaUFJEMTdmVHNLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2gwYld3eElEMGdjbVZ4ZFdWemRDaHBibkIxZENrN0NpQWdJQ0FnSUNBZ0lDQWdJRlpQUkM1MmIyUmZhV1FnUFNCd1pHWm9LR2gwYld3eExDQW5JMk4xY25KbGJuUmZhV1FtSm5aaGJIVmxKeWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lGWlBSQzUyYjJSZmJtRnRaU0E5SUhCa1ptZ29hSFJ0YkRFc0lDZG9NaVltVkdWNGRDY3BPd29nSUNBZ0lDQWdJQ0FnSUNCV1QwUXVkbTlrWDNCcFl5QTlJSEJrWm1nb2FIUnRiREVzSUNjdWFYUmxiUzF5YjI5MEppWnBiV2NtSm1SaGRHRXRjM0pqSnlrN0NpQWdJQ0FnSUNBZ0lDQWdJRlpQUkM1MmIyUmZZV04wYjNJZ1BTQndaR1pvS0doMGJXd3hMQ0FuTG0xbGRHRTZaWEVvTkNrbUpsUmxlSFFuS1RzS0lDQWdJQ0FnSUNBZ0lDQWdWazlFTG5adlpGOWhjbVZoSUQwZ2NHUm1hQ2hvZEcxc01Td2dKeTV0WlhSaE9tVnhLRE1wSmlaVVpYaDBKeWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lGWlBSQzUyYjJSZmVXVmhjaUE5SUhCa1ptZ29hSFJ0YkRFc0lDY3ViV1YwWVRwbGNTZ3lLU1ltVkdWNGRDY3BPd29nSUNBZ0lDQWdJQ0FnSUNCV1QwUXVkbTlrWDNKbGJXRnlhM01nUFNBbkp6c0tJQ0FnSUNBZ0lDQWdJQ0FnVms5RUxuWnZaRjlrYVhKbFkzUnZjaUE5SUNjbk93b2dJQ0FnSUNBZ0lDQWdJQ0JXVDBRdWRtOWtYMk52Ym5SbGJuUWdQU0J3Wkdab0tHaDBiV3d4TENBbkkyeHBibVV0ZEdsd2N5WW1WR1Y0ZENjcE93b2dJQ0FnSUNBZ0lDQWdJQ0F2THlCc2IyY29WazlFS1RzS0lDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhaZmRHdHpJRDBnWjJWMFZHOXJaVzRvYUhSdGJERXBPd29nSUNBZ0lDQWdJQ0FnSUNCc2IyY29KM1pmZEd0eklEMDlQVDRnSnlBcklIWmZkR3R6S1RzS0lDQWdJQ0FnSUNBZ0lDQWdhVzV3ZFhRZ1BTQklUMU5VSUNzZ0p5OWhjR2t2WjJWMFVtVnpUajkyYVdSbGIwbGtQU2NnS3lCcGJuQjFkQzV6Y0d4cGRDZ25MeWNwTG5CdmNDZ3BJQ3NnSnladGRIbHdaVDB5Sm5SdmEyVnVQU2NyZGw5MGEzTTdDaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQm9kRzFzSUQwZ2NtVnhkV1Z6ZENocGJuQjFkQ3dnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUdWaFpHVnljem9nZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZFZjMlZ5TFVGblpXNTBKem9uVFc5NmFXeHNZUzgxTGpBZ0tHbFFhRzl1WlRzZ1ExQlZJR2xRYUc5dVpTQlBVeUF4TTE4eVh6TWdiR2xyWlNCTllXTWdUMU1nV0NrZ1FYQndiR1ZYWldKTGFYUXZOakExTGpFdU1UVWdLRXRJVkUxTUxDQnNhV3RsSUVkbFkydHZLU0JXWlhKemFXOXVMekV6TGpBdU15Qk5iMkpwYkdVdk1UVkZNVFE0SUZOaFptRnlhUzgyTURRdU1TY3NDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjFKbFptVnlaWEluT2lCTldWOVZVa3dzQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSUNBZ0lIMHBPd29nSUNBZ0lDQWdJQ0FnSUNCd2NtbHVkQ2hvZEcxc0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnYUhSdGJDQTlJRXBUVDA0dWNHRnljMlVvYUhSdGJDazdDaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQmxjR2x6YjJSbGN5QTlJR2gwYld3dVpHRjBZUzVzYVhOME93b2dJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NHeGhlVTFoY0NBOUlIdDlPd29nSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIQnNZWGxmZFhKc0lEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSEJzWVhsZmRYSnNJRDBnSnljS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNCc1pYUWdiV0Z3SUQwZ2UzMEtJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHRnljaUE5SUZ0ZENpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCdVlXMWxJRDBnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjJKbWVubHRNM1U0SnpvZ0orYWF0T21qamljc0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBbk1UQTRNSHA1YXljNklDZmt2SmpvdEtnbkxBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0oydDFZV2xyWVc0bk9pQW41YityNTV5TEp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHNlbTB6ZFRnbk9pQW42WWVQNWEyUUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZG1abTB6ZFRnbk9pQW42WjJlNVllaEp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZG9ZV2wzWVdscllXNG5PaUFuNXJXMzVhU1c1NXlMSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkbmMyMHpkVGduT2lBbjVZV0o2WUNmSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkNmRXbGtZVzB6ZFRnbk9pQW41cHlBNWFTbkp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZGlhbTB6ZFRnbk9pQW41WVdyNW9pU0p5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHpibTB6ZFRnbk9pQW41N1NpNWJDOEp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDNiMnh2Ym1jbk9pQW41WTJuNmI2Wkp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDRiRzB6ZFRnbk9pQW41cGF3NXJXcUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDVhRzB6ZFRnbk9pQW41cWl4NklxeEp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDBhMjB6ZFRnbk9pQW41YVNwNTZtNkp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHFjMjB6ZFRnbk9pQW41cDZCNllDZkp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDNhbTB6ZFRnbk9pQW41cGVnNWJDOUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHpaRzB6ZFRnbk9pQW42WmVxNTVTMUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHJZMjB6ZFRnbk9pQW41YityNkwybUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHFhVzU1YVc1bmJUTjFPQ2M2SUNmcGg1SHB1YkFuTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjJaemJUTjFPQ2M2SUNmcG81N3BnSjhuTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjNSd2JUTjFPQ2M2SUNmbXQ1am5pWWNuTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjJ4bGJUTjFPQ2M2SUNmcHNiemt1WkFuTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjJSaWJUTjFPQ2M2SUNmbm1iN2x1cVluTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjNSdmJXMHpkVGduT2lBbjU1V3E2SXlFSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkMWEyMHpkVGduT2lBblZlbUZ0eWNzQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuYVd0dE0zVTRKem9nSitlSXNlV2RwQ2NzQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuYUc1NmVXMHpkVGduT2lBbjU3cWk1NG1iNkxXRTVycVFKeXdLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2RvYm0wemRUZ25PaUFuNTdxaTU0bWJKeXdLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2MyT0hwNVgyMHpkVGduT2lBbk5qZ25MQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKMnRrYlROMU9DYzZJQ2ZwaGJmbmdya25MQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKMkprZUcwemRUZ25PaUFuNVl5WDVwYVg1cGlmSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkeGFHMHpkVGduT2lBbjVhV0g2Sm1PSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkb2FHMHpkVGduT2lBbjZMR3E1WTJPSndvZ0lDQWdJQ0FnSUNBZ0lDQjlPd29nSUNBZ0lDQWdJQ0FnSUNCbGNHbHpiMlJsY3k1bWIzSkZZV05vS0daMWJtTjBhVzl1S0dWd0tTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnWkdGMFlTQTlJRXBUVDA0dWNHRnljMlVvWlhCYkozSmxjMFJoZEdFblhTazdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtZWFJoTG0xaGNDaDJZV3dnUFQ0Z2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0NGdFlYQmJkbUZzTG1ac1lXZGRLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0Z3VzNaaGJDNW1iR0ZuWFNBOUlGdDJZV3d1ZFhKc0xuSmxjR3hoWTJWQmJHd29KeU1qSnl3bkl5Y3BYUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoY0Z0MllXd3VabXhoWjEwdWNIVnphQ2gyWVd3dWRYSnNMbkpsY0d4aFkyVkJiR3dvSnlNakp5d25JeWNwS1FvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBDaUFnSUNBZ0lDQWdJQ0FnSUgwcE93b2dJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJyWlhrZ2FXNGdiV0Z3S1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9KMkptZW5sdE0zVTRKeUE5UFNCclpYa3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGNuSXVjSFZ6YUNoN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdac1lXYzZJRzVoYldWYmEyVjVYU3dLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCdFlYQmJhMlY1WFN3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzI5eWREb2dNUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tDY3hNRGd3ZW5sckp5QTlQU0JyWlhrcElIc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoY25JdWNIVnphQ2g3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1pzWVdjNklHNWhiV1ZiYTJWNVhTd0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RYSnNPaUJ0WVhCYmEyVjVYU3dLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjMjl5ZERvZ01nb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBwQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0NkcmRXRnBhMkZ1SnlBOVBTQnJaWGtwSUhzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhjbkl1Y0hWemFDaDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnNZV2M2SUc1aGJXVmJhMlY1WFN3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZFhKc09pQnRZWEJiYTJWNVhTd0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MyOXlkRG9nTXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLQ2RzZW0wemRUZ25JRDA5SUd0bGVTa2dld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdGeWNpNXdkWE5vS0hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm14aFp6b2dibUZ0WlZ0clpYbGRMQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjFjbXc2SUcxaGNGdHJaWGxkTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6YjNKME9pQTBDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNrS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb0oyWm1iVE4xT0NjZ1BUMGdhMlY1S1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZWEp5TG5CMWMyZ29ld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iR0ZuT2lCdVlXMWxXMnRsZVYwc0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhWeWJEb2diV0Z3VzJ0bGVWMHNDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITnZjblE2SURVS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlLUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2duYzI1dE0zVTRKeUE5UFNCclpYa3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGNuSXVjSFZ6YUNoN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdac1lXYzZJRzVoYldWYmEyVjVYU3dLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCdFlYQmJhMlY1WFN3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzI5eWREb2dOZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tDZHhhRzB6ZFRnbklEMDlJR3RsZVNrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0Z5Y2k1d2RYTm9LSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabXhoWnpvZ2JtRnRaVnRyWlhsZExBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMWNtdzZJRzFoY0Z0clpYbGRMQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpiM0owT2lBM0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2tLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWVhKeUxuQjFjMmdvZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYkdGbk9pQW9ibUZ0WlZ0clpYbGRLU0EvSUc1aGJXVmJhMlY1WFNBNklHdGxlU3dLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCdFlYQmJhMlY1WFN3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzI5eWREb2dPQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUNpQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ1lYSnlMbk52Y25Rb0tHRXNJR0lwSUQwK0lHRXVjMjl5ZENBdElHSXVjMjl5ZENrN0NpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCd2JHRjVSbkp2YlNBOUlGdGRPd29nSUNBZ0lDQWdJQ0FnSUNCc1pYUWdjR3hoZVV4cGMzUWdQU0JiWFRzS0lDQWdJQ0FnSUNBZ0lDQWdZWEp5TG0xaGNDaDJZV3dnUFQ0Z2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0V2ZFc1a1pXWnBibVZrTHk1MFpYTjBLSFpoYkM1bWJHRm5LU2tnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnNZWGxHY205dExuQjFjMmdvZG1Gc0xtWnNZV2NwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnNZWGxNYVhOMExuQjFjMmdvZG1Gc0xuVnliQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSUNBZ0lIMHBDaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQjJiMlJmY0d4aGVWOW1jbTl0SUQwZ2NHeGhlVVp5YjIwdWFtOXBiaWduSkNRa0p5azdDaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQjJiMlJmY0d4aGVWOTFjbXdnUFNCd2JHRjVUR2x6ZEM1cWIybHVLQ2NrSkNRbktUc0tJQ0FnSUNBZ0lDQWdJQ0FnVms5RVd5ZDJiMlJmY0d4aGVWOW1jbTl0SjEwZ1BTQjJiMlJmY0d4aGVWOW1jbTl0T3dvZ0lDQWdJQ0FnSUNBZ0lDQldUMFJiSjNadlpGOXdiR0Y1WDNWeWJDZGRJRDBnZG05a1gzQnNZWGxmZFhKc093b2dJQ0FnSUNBZ0lDQWdJQ0F2THlCc2IyY29WazlFS1RzS0lDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdDaUFnSUNBZ0lDQWdJQ0FnSUd4dlp5Z242STYzNVkrVzVMcU01N3FuNksrbTVvT0Y2YUcxNVkrUjU1U2Y2WlNaNksrdk9pY2dLeUJsTG0xbGMzTmhaMlVwQ2lBZ0lDQWdJQ0FnZlE9PSIpKSknLAogICAgLy8g5pCc57SiOicjc2VhcmNoLXJlc3VsdCYmLm1lZGlhO2g1JiZhJiZUZXh0O2EmJmltZyYmZGF0YS1zcmM7LmxhYmVsJiZUZXh0O2EmJmhyZWYnLC8v56ys5LiJ5Liq5piv5o+P6L+w77yM5LiA6Iis5pi+56S65pu05paw5oiW6ICF5a6M57uTCgnmkJzntKI6Jy5jb2wtbWQtOCYmLm1lZGlhO2g1JiZhJiZUZXh0O2EmJmltZyYmZGF0YS1zcmM7LmxhYmVsJiZUZXh0O2EmJmhyZWYnLC8v56ys5LiJ5Liq5piv5o+P6L+w77yM5LiA6Iis5pi+56S65pu05paw5oiW6ICF5a6M57uTCiAgICBsYXp5OmAKICAgIGlmKC9cXC5tM3U4JC8udGVzdChpbnB1dCkpewogICAgICAgIGlucHV0ID0gewogICAgICAgICAgICBwYXJzZTowLAogICAgICAgICAgICB1cmw6Z2V0UHJveHlVcmwoKSsnJnVybD0nK2lucHV0LAogICAgICAgICAgICBqeDowCiAgICAgICAgfQogICAgfQogICAgYCwKICAgIHByb3h5X3J1bGU6IGBqczoKICAgIGxldCB1cmwgPSBpbnB1dC51cmw7CiAgICBsZXQgbTN1OCA9IGZpeEFkTTN1OEFpKHVybCk7CiAgICBpbnB1dCA9IFsyMDAsJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJyxtM3U4XQogIGAKfQ==
\ No newline at end of file
diff --git a/drpy_js/爱看短剧[盘].js b/drpy_js/爱看短剧[盘].js
deleted file mode 100644
index ca42271..0000000
--- a/drpy_js/爱看短剧[盘].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflvbHop4YnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+eIseeci+efreWJp1vnm5hdJywKICAgIGhvc3Q6ICdodHRwczovL3lzLjExMHQuY24vJywKICAgIGhvbWVVcmw6ICcvYXBpL2FqYXgucGhwP2FjdD1yZWNvbW1lbmQnLAogICAgaG9tZVVybDogJy9hcGkvYWpheC5waHA/YWN0PURhaWx5JywKICAgIHVybDogJy9hcGkvYWpheC5waHA/YWN0PWZ5Y2xhc3MnLAogICAgc2VhcmNoVXJsOiAnL2FwaS9hamF4LnBocD9hY3Q9c2VhcmNoJm5hbWU9KionLAogICAgc2VhcmNoYWJsZTogMSwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIGhpa2VyTGlzdENvbDogInRleHRfMSIsCiAgICBoaWtlckNsYXNzTGlzdENvbDogInRleHRfMSIsCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfbmFtZTogJ+WFqOmDqCcsCiAgICBjbGFzc191cmw6ICd5aW5nc2hpbGlzdCcsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9ICJwdXNoOi8vIiArIGlucHV0OwogICAgfSksCiAgICBkb3VibGU6IGZhbHNlLAogICAg5o6o6I2QOiAnKicsCiAgICDkuIDnuqc6ICdqc29uOmRhdGE7bmFtZTs7YWRkdGltZTt1cmwnLAogICAg5LqM57qnOiAnKicsCiAgICDmkJzntKI6ICcqJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/爱车MV[听].js b/drpy_js/爱车MV[听].js
deleted file mode 100644
index dc42775..0000000
--- a/drpy_js/爱车MV[听].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTon54ix6L2mTVZb5ZCsXScsCiAgICBob3N0OidodHRwczovL3d3dy5pY2hlbXYuY29tJywKICAgIGhvbWVVcmw6Jy9tdi8nLAogICAgdXJsOicvbXYvZnljbGFzc19meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hVcmw6Jy9zZWFyY2gucGhwP2tleT0qKiZwYWdlcz1meXBhZ2UnLAogICAgc2VhcmNoYWJsZToyLAogICAgcXVpY2tTZWFyY2g6MCwKICAgIGNsYXNzX3BhcnNlOicubGVpX2ZsJiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKFxcZCspXzEuaHRtbCcsCiAgICBoZWFkZXJzOnsKICAgICAgICAnVXNlci1BZ2VudCc6J01PQklMRV9VQScKICAgIH0sCiAgICB0aW1lb3V0OjUwMDAsCiAgICBwbGF5X3BhcnNlOnRydWUsCiAgICBsYXp5OicnLAogICAgbGltaXQ6NiwKICAgIGRvdWJsZTpmYWxzZSwKICAgIOWbvueJh+adpea6kDonQFJlZmVyZXI9aHR0cHM6Ly93d3cuaWNoZW12LmNvbS8nLAogICAg5o6o6I2QOicqJywKICAgIOS4gOe6pzogJy5tdl9saXN0JiZsaTthJiZ0aXRsZTtpbWcmJmRhdGEtc3JjOzthJiZocmVmJywKICAgIOS6jOe6pzonKicsCiAgICDmkJzntKI6Jy5zcF9saXN0JiZsaTthJiZ0aXRsZTtpbWcmJmRhdGEtc3JjOy5zaW5nZXImJlRleHQ7YSYmaHJlZjsuaGl0cyYmVGV4dCcsCn0K
\ No newline at end of file
diff --git a/drpy_js/爱迪影视.js b/drpy_js/爱迪影视.js
deleted file mode 100644
index 4875d0d..0000000
--- a/drpy_js/爱迪影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogICAgdGl0bGU6J+eIsei/quW9seinhicsCiAgICBob3N0OidodHRwczovL2FkeXMudHYnLAogICAgLy9ob3N0OidodHRwczovL2FkeXMxMjMuY29tJywgIC8v572R5Z2A5Y+R5biD56uZCiAgICAvLyB1cmw6Jy9zaG93L2Z5Y2xhc3MtLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHVybDonL3Nob3cvZnlmaWx0ZXIuaHRtbCcsCiAgICBmaWx0ZXJhYmxlOjEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOid7e2ZsLmNhdGVJZH19LXt7ZmwuYXJlYX19LXt7ZmwuYnl9fS17e2ZsLmNsYXNzfX0te3tmbC5sYW5nfX0te3tmbC5sZXR0ZXJ9fS0tLWZ5cGFnZS0tLXt7ZmwueWVhcn19JywKICAgIGZpbHRlcjonSDRzSUFBQUFBQUFBQSsxYVdWTlRTUlQrTDNuMndlQzRqRy91K3pidVR2bHd4UlFFTVZGSUxNR3lDb0ZnUUNWQUljc2tiQ09iUWtKWWhvR0V3Si9KdlRmNUY5TkpuejduTk1LdDFJQXpvM1BmOG4zbjlIYTZUL2ZYbmZ2Szg5aHZCSnI4Z1JyUDhWOWZlWjc0bWp6SFBkVkd5SGZoc2VlQUoyQTg5UWxzUmp2c3hhekFMNHo2c0svc0dDalJrZGxpMjJ5SkZnQ3JlWDBBckYyeitWekM3bnlySElLQm11Wnc4Sm53STUrQmhOazVRejR2L1hWaHpjR09MbHB0RVhJdy9NOUZHN3JMVEsrNW5pV1hKNzdhc0JIUVhLdzNQVmJMQUhNUlhYbWtOeVM2b1RWVUYvNnFJU3M2bE05MGtrdHpyUkZvcnZWdDg4cHZqQmRTYVhRUlhhbnplMTQvTEpraHVQVkdZeVBGVmdUV0hIM25ITnR0OFFJV2dCNHFzQUhRQXdBMkFQbzhxVG9sMEdPcjZwUkFqNWdxSjRFZUt0V2VCTXBXU0U2Yjc3K0FEUUMyMTdWZzU1UU5BT3VuM1orbGZwWUEycWJlVWo4QllGK1MwL25OY2RVWENiQmNSMTl4K0xNcUp3R1dHLzBpZXE3S1NWQkpQSzNXZVh1Z1Y5a2tRRnRibDlYNm03SkpnR1BQeHN6SW1ocTdCTXBXSE9temhxYkFCZ0RySEhoYjZNeW9PaVhBOFcybTdQNC96TnlpR2lKaTlJaE5GajdoTEVxQXR1NE9NN2FrYkJMZ0xHNzFpRGxRc3lnQlJUVmhqZlJpVk1zQWJlMWI5cHdhQ1FDTVFLN1h6aWEwRG1zVVJURlM2RnpDS0pZQnp6Q2p3V2V3elN1Uk50OW5LazJ3eVpuaWNJZnFuZ1E0Q2RQRDF0cUNtZ1FKS0l4cGEzMFR3MWdHT0t6TmJqT2VVd09TQUlleS9KRnNBRERFN3hiSkJnRExEVTVaaVhsVlRnTHM1OWhuS2dlQUZzU2ZaQU5BZlVuenZxUzFjaC9TWm1aYWxaTUF5N1hIUktUTXFNb2p3amlTcVMwN2xyUTdoOVZnRUZOeWoxdnZ0a1F4ekcrRjBTT3ltcytxbEFQQUo3M0paelN3U1Y5ZnlXZHpGVTU2MWNHcW40QXIvMlQ4SWVJUGNiNksrQ3JPZTRuM2N2NGc4UWNaNy8wWmVmR1Q4Y2VJUDhiNW84UWY1ZndSNG85dy9qRHhoemxQNC9YeThYcHB2RjQrWGkrTjE4dkg2Nlh4ZXZsNHZUUmU4Wk5QVTcwaEpBSk9VMkVoV1podHFUUTM0em5ocjFhQUJDeFh5QVlBODI5cGttd0FNRmNHYythSFFUSVRadG5FekJLd0xDUWJBSmJaekNZQnkwSTJFZ25ZT2pkVGJiVE9TMEFMb0M4VTh2R1ZuaHkwRmo1VUdNSVRRSnhBNWlRd0o1RTVCY3dwWkU0RGN4cVpNOENjUWVZc01HZVJPUWZNT1dUT0EzTWVtUXZBWEVEbUlqQVhrYmtFekNWa0xnTnpHWmtyd0Z4QjVpb3dWNUc1QnN3MVpLNERjeDJaRzhEY1FPWVhZSDVCNWlZd041RzVCY3d0Wkc0RGN4dVpPOERjUWVZdU1IZVJ1UWZNUFdUdUEzTWZtUWZBUE5BV3hhTW1XaEJXZDUrWmlYMjFJS3hFaXpXUXpxOTFXVU5LRElYOG9nQm0wR3FrT0NlRVdzWks5NE85MWg5cVpPdHl0blFZdHlXdFByVnl3ODhvUythR3hDWEJuQkpKMlE3V3h1cGdnNi9VeTRjSFBQVkNJYjhNMTRYM2VNZkFhdGlXa00vTWtDU3VDUWVyaFNwbkh1S1FGc2N4OHhEN1Q4andNNC9TQ1lsbXZYRHBzRWJUVXg4dkpiS2RUQTNjVWpxcDBWSzZFZkZTeTZ3cmVqZmtrVWJXNS82UXNYLzNCZ2VWNTZUVnBkUTAzNnlhYlRGTmZRSlZ5YjNFVEsyYUdkenNKS2hRNys5NkwzSFMrMDczRWlkRjY2Uy84K3NUcEdnQk1EVnFEU3RaQ0FEYis5aEJkd2dBVE8xU3pBQlVLbmErbGNKMVVJNS9WLzA2S1ZWblpieTdHblZVeGdOcElSN05rUWxWRkxHckpGMGwrVDBxU1ZjUnVvcndoMU9FemNGQVRaTi9qM29RS3NFT2RVVEVVV2huTitnOUxQQzR1V21iRnRUc05TRm1seWVldEJlNld1MTRDcnhlR0ExK1g0aFZORDhqVGl1dG9tQlk2TU50L1pHbm5lYlc0SC9rQ3lpM2ZSSjN4WlpPZTZaRjdTc1NjSEhTUHNiRWlRQTR2Nm10UWpxcWRqb0pzRnhmMHVwU3ozUUFhRmdSYTAwSkpRQVV3dVg4ZWcvdWNXWEFUdnZpSjlVWEFHakxmREZUbzhvbUFiWVhYMklQbkJKZ3VmNHhhd1VmcUNXZzZWNnpvckY4cG84ZUtqVUs0N0R5dTVCN0tnNFNZQjJMcllVMzcxVnBDZlpMaUpWWHE5cldKZEJYS25hNkROaXFFZ3VWam9vUzBCZW1za25nU2h0WDJyalN4cFUycnJUNWg2Uk5yY2plY0hDSHY5WDNjRmpzZUROM04vYi8wY2ErNHhiN0hXVkY2Zk9QcDBaZ3IxK1pRQzI2R0JKcXp0cVlRNGxkeTcvcmtDL0UzRUVrcDFaRldTWnBIbVV4VDFXVVRkcmYwdFZHUXlnWURPeWJoSGVTNlU3ZllJaTVLRXdvNlE4QTYreWV0WHZVUXg4QXRQV00ydlA0allJRXBFdDMveWFpMEROUzZGWnZ4UUN3enZFSk00N252QVFzaEx1KzVWcUpEUHZPUWdKc3orRXJBNmQzYXpNdHdyU2kycE9BMjZhV21VMEFqT2ZrWm41RGZaOEJBTXQxajVuUnVDb25nYkxsTTB0bVVsMTdBR0NkOFM1cldGMWZBRkJjRnMydFFZeExHVEJ0OU0zZWdNdEpRU0t4QlBSTEs4azEvbDY3NC9XaXd1NjZKOVNQZmtLNVZ3LzM2dUZ4cng3L3BzaXE4OWZ6LzlqZFBkZmRjNytuUGZlL25WNnYvd0toOUltd0xDOEFBQT09JywKICAgIGZpbHRlcl9kZWY6ewogICAgICAgIGRpYW55aW5nOntjYXRlSWQ6J2RpYW55aW5nJ30sCiAgICAgICAgbGlhbnh1anU6e2NhdGVJZDonbGlhbnh1anUnfSwKICAgICAgICB6b25neWk6e2NhdGVJZDonem9uZ3lpJ30sCiAgICAgICAgaGFuZ3VvZGlhbnlpbmc6e2NhdGVJZDonaGFuZ3VvZGlhbnlpbmcnfSwKICAgICAgICBkb25nbWFuOntjYXRlSWQ6J2RvbmdtYW4nfQogICAgICAgIC8vamlsdTp7Y2F0ZUlkOidqaWx1J30KICAgIH0sCiAgICAvLyBzZWFyY2hVcmw6Jy92c2VhcmNoLy0tLS0tLS0tLS0tLS0uaHRtbD93ZD0qKiZzdWJtaXQ9JywKICAgIHNlYXJjaFVybDonL3ZzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgc2VhcmNoYWJsZToyLAogICAgcXVpY2tTZWFyY2g6MCwKICAgIGhlYWRlcnM6eyAnVXNlci1BZ2VudCc6J01PQklMRV9VQScsIH0sCiAgICAvLyBjbGFzc19wYXJzZTogJy50b3BfbmF2IGxpOmd0KDApOmx0KDUpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS5odG1sJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdl9saXN0IGxpOmd0KDApOmx0KDcpO2EmJnRpdGxlO2EmJmhyZWY7LiovKC4qPykuaHRtbCcsCgljYXRlX2V4Y2x1ZGU6ICfnuqrlvZUnLAogICAgdGFiX3JlbW92ZTpbJ1ZJUOe6v+i3ryddLCAvLyBWSVDnur/ot68g6ZyA55m75b2V5Lya5ZGYCiAgICBwbGF5X3BhcnNlOnRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pLnVybDsKICAgICAgICB1cmwuaW5kZXhPZignaHR0cCcpID09IC0xID8gaW5wdXQgPSByZXF1ZXN0KCdodHRwczovL2FkeXMudHYvcGxheWVyLz91cmw9JyArIHVybCwge30pLm1hdGNoKC91cmwiOi4qP1snIl0oLio/KVsnIl0vKVsxXSA6aW5wdXQgPSB1cmwKCiAgICB9KSwKICAgIOaOqOiNkDonKicsCiAgICAvLyDkuIDnuqc6Jy52b2RsaXN0LnZvZGxpc3Rfd2kgbGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5waWNfdGV4dCYmVGV4dDthJiZocmVmJywKICAgIOS4gOe6pzonLnZvZGxpc3Qudm9kbGlzdF93aSBsaTthJiZ0aXRsZTsubGF6eWxvYWQmJmRhdGEtYmFja2dyb3VuZC1pbWFnZTsueHN6eGomJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6ewogICAgICAgICJ0aXRsZSI6ImgxJiZUZXh0O2xpLmRhdGEtLXNwYW46ZXEoMCkmJlRleHQiLAogICAgICAgIC8vICJpbWciOiIubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWwiLAogICAgICAgICJpbWciOiIuYmdpLmxhenlsb2FkJiZkYXRhLWJhY2tncm91bmQtaW1hZ2UiLAogICAgICAgIC8vICJkZXNjIjoiOy5jb250ZW50X21pbiBsaTplcSgxKSYmVGV4dDs7LmNvbnRlbnRfbWluIGxpOmVxKDIpJiZUZXh0Oy5jb250ZW50X21pbiBsaTplcSgzKSYmVGV4dDsuZGF0YTplcSg0KSYmVGV4dCIsCiAgICAgICAgImRlc2MiOiJsaS5kYXRhOmVxKDQpJiZUZXh0Ozs7bGkuZGF0YS0tc3BhbjplcSgzKSYmVGV4dDtsaS5kYXRhLS1zcGFuOmVxKDIpJiZUZXh0IiwKICAgICAgICAvLyAiY29udGVudCI6Ii5jb250ZXh0LmNsZWFyZml4JiZUZXh0IiwKICAgICAgICAiY29udGVudCI6Ii5mdWxsX3RleHQmJnNwYW4mJlRleHQiLAogICAgICAgICJ0YWJzIjoiLnBsYXlfc291cmNlX3RhYi0taSYmYSIsCiAgICAgICAgImxpc3RzIjoiLmNvbnRlbnRfcGxheWxpc3QubGlzdF9zY3JvbGw6ZXEoI2lkKSBsaSIKICAgIH0sCiAgICDmkJzntKI6Jy52b2RsaXN0LmNsZWFyZml4IGxpLnZvZGxpc3RfaXRlbTsqOyo7KjsqJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/片多多[优].js b/drpy_js/片多多[优].js
deleted file mode 100644
index 6b1eab7..0000000
--- a/drpy_js/片多多[优].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/6VVzW7TQBC+8xSrVnLsKLbjNlTIpqoquFAhOJSIQ1tFG3sdb1n/1LtOk7aRuCEkQD0ixAkhwQNwQBWPU1oeg9m13aahAQpK4l3PfPPN7PgbZ4hzlBeMoFV0eAshQQUjLmqcv3zx/eM7+G6dfnu702iBK0q5AE8kRMZd297f37cikvcxM/2IJtjy09hWwCJngLPj1DwguMPtcOwzzLnt2O3qE44zPCAKzAnO/ahbhnBShTSbpjPlxn1Z1JI07BXUf7aprC5qS0tImSB5CVGGiOCA5NxVB0Ko0eUkN9cHJBENSNK91+uuK+6JvKjSehnOuTy2xUVBzZKg14tJUiBG3YHQ24bLhL5ieFjTnpCRkGuUk9CzmrZuNdeM8ugZw+OaTOQFkTaGD8YuWtjl7nYCd0SgSMQM+p2TvYJwodMkK4ThXXj9NAnBLVFWjIUf6XaumKEmSLWq8t21jS1n5yJol6cJxGxsPn5021IF6IrnkhaeCgAkzoKtMtMQ6cpAEj8fZwKtrqKG0zDQofSiKqRICPdxRnS4LekmiDBOrg9fmhvex5ysdO4TPw1KroqsrsTe3rb0eLm4cxRnnaO4g2FdNmxLyB4pfE2sGiYFW95C28uOt1u1YXc0facECZfKMJk+xAylrFnT5AJSwLngT6mIdCV6OBh4BGHsAd8YqYrQGjosc7dbkNJpyUzwm7iKr8yzoERAYwrTsyL3QVoosdYCOXvz+cfrY1BfwUr9DdOAUS4sn4HOQzryGJV6U7PpWVJPLMWBpgVYYDPN6QDGj3nQqJEwRZqZjITiqkyVOE+/Pj8/+XSh8ioLmibHNyc9eaVIy1mrXx9lBhCggKnr9QIiMGXIUu6K5FqIpmUu2dPNJUPTqklTWSpm5/+orxDSeCDZ5nSzAgWg3bk5s78+idzJzQ3gzm/hKPszZYmpeaYONL+LKqJTs3o34K0wklkpJi4ECWZbLnCfKwTuaxqjU9bLkjKcJIT1+gGKnAogVSrjAjq0ho4JiyxgkQYGwpcv8rPj9+dfPvw6RfI1HlDcmjG3Fsu/loezI/BP8+VZ9WOsjjv5CVYheO9YBwAA
\ No newline at end of file
diff --git a/drpy_js/牌牌影院.js b/drpy_js/牌牌影院.js
deleted file mode 100644
index 086b7bd..0000000
--- a/drpy_js/牌牌影院.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/狗狗盘[搜].js b/drpy_js/狗狗盘[搜].js
deleted file mode 100644
index 65a285c..0000000
--- a/drpy_js/狗狗盘[搜].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV+J2+X2NlPlM0rFgp5LIjVxGX+q/HrmcAJ7tj9jQxXxBFGC0OVHb/oauXDmZapRZ3FIRCiJYi56FMfxEsMzsL0jzqruKmHHL5NXSUGFaR2jkJALAMe1CaergdxvQ4Hzr2+0e6CVs3W3AVO0IYVzPoDXFScmfcBJPrGP2Z82qi1RmnGexp62CIs4VbXNeQOMnV9a04G8gIQrxePuthe3VJugn2AnSTlcAynd1NSdGMtwPe9uF7l1lVeKpY4nkEh+qRcx+0rRJa6SNYxcUQmdinBwvg0GwifepfbfSReXK8KsWDGopTU16lgiuNyhLdzLyGG3RcS8pvfKeAntIoR5ddd5urrHcRxemO2vaVP2rzYnIBK9fUPOqsC+BqMSwupDPwofpK04tF+P1xdxijT+AOM9khnoTRFuYiZ4JYfwLJXh5UOtpkG9mWsj/H+biql7kQYWnn4zQmNTD4vjFJ3JleC9dJgcVxm6AO95Wkym1b46e3Z4U6V+iUbZU5+7wISISkPdFcCMDFYpGyICnMEPhSMi6V3vj46kDawtFn/ooQ0urAe5Y1QUkb+ZFq8rzPrXqaWa7bM2cmiqcBNUw7kTl1rsO6VUlpyeOkxSm+pPgeHhTeKSJZQso5iGhiOYgkLosRBp8q6Mm/bpmym486X7g7vVr1chZ+P8VBYuwS0uKalvg7N45y2Zp5syOIy5ExhohViFm37f4Zow/Efr8Tg/476rHlE1wAAWR0jdOlbE9QWCJuA6agwIW/RasNgL8MXOBFJdk9nnZT2dMR5Zxkus4CUnj+lHdwKoT/ylftRnSSFF4U2u6lc5geVph0IXc42xL8gXNVYCcS9G9LXbUapwkyvWl07ZFv108s9ZLS1CB+m6TkwXwVCOT53SdkKq8Z3lWJpIemgGitx9vOERp/UYKjOX2muDtXA6Ht67uVuHTyNKMRzZjn6oMKrDk8lf6deSw62KqtF4q9NXcMvb55WkS2Nm6Ik05v5S+jWASrzDIuyHgnjLcLN0d1xxch58uUwdXBCkGfulW9QBNj/yzGk1saam2xgHkSV0mpT7mgyyEYT2Q
\ No newline at end of file
diff --git a/drpy_js/猫视界.js b/drpy_js/猫视界.js
deleted file mode 100644
index 111f30e..0000000
--- a/drpy_js/猫视界.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/ASdotKRYPNu8cLtwdABO3MDeyNp8SITwKEVrcmMRsD6xBflGUPgmgT/JAj2oOoLNb6e9HfMTdgXYJQpioql5nfqHbf6zYj/6dZcvKo1uMD05oMSxln1Qx1Rr7+l2qMNnZ6+Ut5M3VUV3qm2gTvezgevP097fwfCo/rvkIa2xO0K/9S0xWBndpvV3a1qCQZ5LmbWSOXi8mh4P96Fdd4l5tjwNvOWX42ZxTkOOapy2CMwu2RByfnzd+nWtIbJdtASws/kr00v5ITIop5F6m7V0d+h1naAD0Znt4wjcxAUeaiQkmVVoxTAHgk3kSGhoZtVt9gdACO//yapeYp/sjQpmZ8=
\ No newline at end of file
diff --git a/drpy_js/玩偶哥哥[盘].js b/drpy_js/玩偶哥哥[盘].js
deleted file mode 100644
index 27fdb80..0000000
--- a/drpy_js/玩偶哥哥[盘].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/瓜子视频.js b/drpy_js/瓜子视频.js
deleted file mode 100644
index 6570b87..0000000
--- a/drpy_js/瓜子视频.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/电影先生.js b/drpy_js/电影先生.js
deleted file mode 100644
index 92a6c9b..0000000
--- a/drpy_js/电影先生.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV2y7g637nkMoiC8thhxc2MTHM8V5zFVJ3Kfp9HMHk+XBCLXss69MvvD7DUOUNMHw9czZtTkwRe+nf24nepINguO5frz+yzSaAXKVHlLG1Q6gd0cZUhdjFhjoy2hF4NXf0WuRZP9ZVw8GFB0o2npdBhQYFIWmSPl3iMtCENDUghIbTJg6DifKzjV1EcML+kzjj/2X8KXtMqlf0+9MzM0+mcIwuU1UTPsCmqUzNPthy+fEvY1mH2ae8yGwhsjCjNNUbJsXNqcq8V+qoaGGk839X7xLxIgX4mgzE2snvMG3drLkBEMzDiY3nv0Ep8o8ZO33o+skc3nNEvWvX7Knr8VloCMM4FpzErrZnhLbBBM+6fnZt2ID1aJDSvKtm5TxIH9B/ZPFcJw/kIXNSNMRzvaoXC8=
\ No newline at end of file
diff --git a/drpy_js/电影兔.js b/drpy_js/电影兔.js
deleted file mode 100644
index e4024f6..0000000
--- a/drpy_js/电影兔.js
+++ /dev/null
@@ -1 +0,0 @@
-bOHh4qyJ30YH+RrYfWhs9mrnZDMGDt3iZhelKSPI6FOh/lkHtdrlq23UmlE/55TGEjZ2wIWGgZeJBqDgXyLRe0UvEAbgkNe+rTN0p5edG5kZbWgLA6hbFNObEJun2DAAQCyZAXcUiwWgIPXXTkcyvqhLjpNan5I2L8tvbfkaCCVvtBkgbjBrrM+XmuMpznT0xr0aOGoJYha4Q7j1+yEKp15V4nem9n1Rcd112LmHt185mOQQwwda8cKg4Sm4V2OBbhdvZ7UW5MbOip1rF778zOpnwNWaSWslPByL28nqrEDsMTUr6CXNGFAgrTf3alcRcUMLabY4TvU5mjUnVphAzXehT+SVjX54n1NJ8/BVgJeGO8sP2dsSVUgIcXyu/7T1XhPnOWhlt9IkA8hA1RUYaAtuepcqMWNtlXZEaY1HdRrW+KzniktH5J0AmM4AOaPc/RqmE+rVetTASolWLgNfr0oz6uanJNlsnSpHBru3NACuHzyLHvTP7itLQ/Wx+AnYBwXNF6pT45RliX0CaRHhr7qDoDQIZh13bR71TeQRKwWMKk5OiA19zDR41WdtlcAgJlI3Omil+Z7ibfdcbpXZVqm3pnIQmgwLtdqQBDJDlBA6ahbLYdyLSV9rx11fAU3uwinQqiJpxTbi+rfJz89vNe70RfmWD8Kcma+XQ1cM6wAZ8gsca4+BMbogRy+vBAtO0eUan6loQf8kJ9SRHaabj7mq3G2umnTBT/szvnlI3wyrDkkBo/PSV3sPDpEDfvn5nZF+Nx48aleck4Fvowm4Lq0B+h0FGhFaFkDqwletcCo3ONjMDF7GCyp2jVjckqEofwDMjdYIzEy99NGtnKei+bX6U1ECqPsOMjKWo5wwIPjOcKPEWjuUFoMETMYgrFkW0PY9u7Zs2W6NcugPJVVANCmEepvXjlzHSWZDjQcUMYo3foVrAnoQ2L4CDdFa+cpAbolsbJKzEQK7LsYz4PgfV5amFFz6BlftZcoZNZK27SJdSTsr/LO4OovZ+GGa4RDtaYXAoHfaHn51qiZ2Lf9t3vO+2O9bSACO3Hh3Q0vGU9Nbt/ccFyyhMaXfUEMkbfXwnqsXIBUfho9BcenV6xrJiEhPJEbZX2CaL97w8b83sE0nIcUiRT+4LXAAXMi9D8qdHZXUiweGZgykBRqOfdu2gW2YmGzkBX4OQnEqb7v5dn/13n0D42pORzGVjjsYUWKXZ9yDpUdp1YqvgRS8P90Ff/UuGnHNJbpPDr2WFXyGvL7fezKiY63MZ85egugkQwSsdyf6NcqnYXNgs2KSXzWMGVkhppSFq1IOpFfW1mjQfHOi7/QWNURie+EqfC/AHT3a48Na4alfnI0JYSQuGBfXko8iZiwAWCD2drLH+/Qy3PLKcTWv8Yt6Es4lR7d9y+lZOzqJcLQM1tgtDUSewu0i1A==
\ No newline at end of file
diff --git a/drpy_js/电影天堂.js b/drpy_js/电影天堂.js
deleted file mode 100644
index adcc6d5..0000000
--- a/drpy_js/电影天堂.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV1EAw0AReVKkvtcVRvGmIbZaCDgC05Tx7REBWD5sE1+93yEWy1+KfiPiVNm47RorWKQEes3k3zK3lJhdRdJVRGQq2x3WeM4mAwTiX85um7bFPhApIqUB7wMxP6gT8D7ENh0t/DtsDleUh9fgxBxgLCJ/Z/Qkvq2aQucIvmUIfK3U0P7J81cmI/tyRQ1kqs6rrFyyeJX6YFX8HvLkBGgUI2zd7zyERaeNbDh+RQjlyKTP61P8/eTLIkmDBtDqgg/dlPgq8cUK98026Ob5eAoeoJQmSyK2SLh9PV2W6XKg71dNtYXpDqLheTqkRIInHF3N9ZuWMhW6HaHnwHWewixJ5NiyysLyV4MEYTzO7bf4gcZxpFG7RPcmgfu4dC8LpVbBUSDIoxy+h7/JEq/Y5lb+oswVPnc9PL/W6Pfim8gGfNOFtBGHMJ2abdLTTCVBNJyw+RqHcgt/k5Vq6PtLKjdYnA5CXz2zs/beBfjaVSG6DYfzRByO32yA4dEhHurQKvyNbR1G2QV7Jywb4niidzwcRR8ew0dknewWy9keX7RJ5lTgiFLxDiHS8ObUeAxr3011/k57habUmn8Uii1S3VY9EDofAekMNTeqyFxx5za/IeSsIDtO22c0pc6sEmeQh8ZfjK9gBQEl4+rbenPll4bUypok/WhdB7QFE/8EtqtiOb7LDttAqB5G64jRogUY9uVIlEMM2SwKD9gtkyW8XdrNwmEXbQhmHpF5dKYPqpe2bEEVogY1yATXdMJ4nfy0ntxVRuMVwzOqvSuDPhb1OmutnS0mnWb3GnsWxj1jDI+ku8ScBAeyBDm8SfLz/Ty9T0+uG6uFyxDslkjsMdTP56CSRpEU6liP6FjpiEM6UFfr9IUmiZTt5FtIOCo6w63d2omsG0I3N/rzUNTOhuvcO7EFROrF00wJT9WX2EKqalWSyWCpU+21E1Ydh5YUPqqH3KKwbNsxRvWeaU02XlRnQXZ3wULuYxAxo/LZL1LwF5dqcWd9arcTlu62BdTS1payZVKpMYdCQZs64VIj/d1Uq4Eo2xrShATVuOlERJqePNpayiTsoRyZZmpwvBf91PFphHkaFIapY2OinaFP4MyYNdihG1Hvp6HxZzpAs8URq57LjsjqOtdiSpyolh9Ppj3Yx10XKDzFrouF2hKP8Hi2+YiRI67prJuCIvF4S/dC3XHASyvtkL5+uD4Y/vUlk9obKHpqlJqFEqc84KhJMKI6LjGmWVkwFjO0O3SqgX/jwFd7i4tbCpK52YfNfo6SasYWB8u1nTG5OWmfBlyFuQROQB4YktlH9q37l47YYouw45xCjpSi
\ No newline at end of file
diff --git a/drpy_js/电影狗.js b/drpy_js/电影狗.js
deleted file mode 100644
index 65f5f31..0000000
--- a/drpy_js/电影狗.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/电影猎手[自动].js b/drpy_js/电影猎手[自动].js
deleted file mode 100644
index d9136bf..0000000
--- a/drpy_js/电影猎手[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogIHRpdGxlOiAi55S15b2x54yO5omLIiwKICDmqKHmnb86ICLoh6rliqgiLAogIGhvc3Q6ICJodHRwczovL2R5bHN0di5jb20iLAogIHVybDogIi92b2Qvc2hvdy9pZC9meWNsYXNzZnlmaWx0ZXIuaHRtbCIsCiAgc2VhcmNoVXJsOiAiL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCIsCiAgZmlsdGVyYWJsZTogMSwKICBmaWx0ZXI6ICJINHNJQUFBQUFBQUFBKzJiV1ZNYlJ4dUYvNHV1bldna25NVGt6dGwzWjNHY3JYSkJFaVYyZmRpdU1tUnhwVktGamNCaUZUaUFBc2pnaGQwSUJPYXpRYktrUDZPZWtmNUZSdDJhMXVrekpJd2Nrb3BUY3puUE9YVDN2Tk05ZXQvdTRlZEkzSXE4K01YUGtmOGxya1plaklpaFZidC9JSElpY3FucllnS3ZmK2pxL2o0aGpaY2FlR0N0M3IvV3dPNUY5SWZMMzBSN3psLytNWHJobTJqY2V2Wjg3OFh1eUM4bmxQTzlSTyszM1JkKzhxeGZkM2YxOUVTYk1LcGRyVzVhSnNWYUhtZDFVaHdVVFk5aTBNN3dXcldVcFhZa0E4OU0xbTJhUEpKQlg2a2QzM2dVZzNZR2I5Wm4xNmtkeWNDVHJEajNsOGtqV2N0ajUwWnJxUVhUbzFqTFUxOThVRDJZTUQyS1FWL0xOM3p4VWN5SWp6UEZIc2xnUE5jbTdMNFpHbzlrNE9rZnRxL1BrVWN5OEtSK3F4YUd5Q05aeTFOOWZMdTJsVGM5aXNHektHeUkwalE5QzhuQU03enRsRGJJSXhtTTUvcW1Nek5KNDVHczVha3RWMkJlSzQ5aTBOZTFjbjJ1VEgxSkJuRk9MOVh1OFh5V0RKLzdTclY4bTU5N2cwRTdXdzlGSVVmdFNBYmpXY3c1UXpkb1BKSkJYN2Z2aUhscVJ6SHd6TnlvRFJYSUl4bkVwekxoVGhlS2oyUXdWMi9kdEgrak9hOFkzTmZFcU4zSGExQXluS3M3b3BMaHVkcGc0QmtmRk9sZDhram1lcjVzdUpxdnRXeGVqQmJndGVaZFArbHJUU3l0MW1jSFBXZlhsVVJYVkNHSXc4cXN2Yjl0V0JUQ2FaSzNEOHBtS3hMQjB5MlBpL21TWVZFSUhseG0yYzV1R2hhRjhQMnh6cTBvQkk5MlpJY3RDa0ZIRDZiWm9oRGNVZmtSV3hRQ3kxaGVGRlpNaTBUWVVkN2ZVZDVvcGJwL1VLZFdGSUxRVFM2SWdYMHpkQkxCV0I3dHVjdmJISXRFT0ExdjJ5TVY5K0dhTG8vQ2lDcEpwNVN4Wjh4SHJpbmNYVEx0L3FGSXJaczM2RkV3YmsrNTEzYm1vV24wcVBGekpmSlRZaUJ2M3F4SGpmZWJrM1pmRGJQbWMvWW9kRjErb0VaVExjeVp2WU1BUVJwNEtMYjZ6UWhKWkM3RDJuYXV0dGJYV29iNitrK1dJVTVRMSsvMTBkMTE2YnRvRThIOFpFY1Q2WEhPbDlqUlJEcVV1MHZzYUNKWWJyNWVGSUxWeG80bWdnbnVIMm5lR0duNWtXK2tDc0Y4WTBjVDZYRmtTbUlzNHh1S3B1WmE4aldtYVd2VWQ5M1o1Qis0UjgyRjV3dWpwdmdteVByYWExSGQ3K2lHV0x2bTYxZFQzOEx5V1ZId3JRWGZyRUxCK0JVNTJLc1dTL0FyNGwwSG1iNXhLMzdTNitacW91dEtWQUpRTzFqdFFEWE9haHpWR0tzeFZDMVdMYTNHTEhrVDl3eUhocDdMT3N4bHNhdnpNRmNudTA0ZDVqckZMbnQrejg2c0c1NG1NaDVJTG1Odmo4RUQ4YTdwZ1dpTUQrUzBmdWlKM3Q3RWxlaHByYnhFeWt0YWVabVVsN1h5Q2ltdmFPVlZVbDdWeW11a3ZLYVYxMGw1WFN0dmtQS0dWdDRrNVUydHZFWEtXMXA1bTVTM3RmSU9LZTlvNVYxUzNtM1ZlcVM4cDVVenBKelJ5dnVrdksrVkQwajVRQ3Nma3ZLaFZqNGk1U090bkNYbHJGWStKdVZqclp3ajVaeFdQaUhsRTYxOFNzcW5Xdm1NbE0rMDhqa3BuN2NXM2pPZHBEVUlMZ0Y3L0tZb3BGdExRRitiUzhCTkYrcVp2WmJvb3ErdVJuc3ZYRXhBQWxNbzJQa3A5cHkvME5zRENjUjJVcVFHMmRQejllVXJDZmxULytXSmlQdnVPYzc5aE5pVDdDZlltNnR1bGt5MWpHUkczZVRiQjFEc2I2ampndFF5QVdxOUlQc2tRZlkzZ3RUbVFmWmJBdTBEQk5sUENGQ2JCNm54QSszL0JObTMrYk82TWtnTmU2eTFaK3p2cUQwRGxJVEhVM3NHcUJvRDFKNUJDc3VqcStrQWhXV0E4dFF0YmFyRkdkTWlVVFJNRjhOME1Vd1h3M1F4VEJlRHA0dnhZMDBYNDArU0xqcjl1ZHFkUGtvdEpHc3ZIV3I4T3VZbnhmSURzbmtZZm4xelU3N1dGSVBXaW1uWXYydzJKVm1iaWFYYmQ3SkNIc25hUzRyc2lRVm5rNU0weWNBenZ1Wk1ESkpITWt3SVI1elVEaWVFRFFhZTNhS2RUSkZITWhqelFkSHVwMUFyMXQ3QlIrTUFiSWp2WFRKb0oxdHc4Mk5xUnpKY0VMc2lSNGQwaWhrSGduWnVsUHFTckwxRGxpQUpzOTIzNGJzdnhkb3NCT2FIN1ZrNkdGS3N2VU1mNS81eWJmc1d0U01aZWhic1lWNkprcldYNUR0TDVlcGpLa3dVdzN4eHhGOU1TUWJ0WkJmZDk1d3pSRk5SWTNCTy9WK1VkdnhPRDdlY1o4NmQ5dGtVYTNuT252TlpKTUxqdXJ3enZYSFlnUzRxV0Y2T09zVmZEejBBQnVXNFM1ZDQyNlZMa0lyQ3FPNlZoWXI3Z0NuNlh6cVFPUG93NGVnamk2T1BHNEp1NGdjNGREank0TUk4eGxGM3BOQi92SzZKVzdGT1VsMEE2aWxXVDZINkFxc3ZvUG84cTgraitoeXJ6NkhLc1lwaHJHSWNxeGpHS3NheGltR3NZaHlyR01ZcXhyR0tZYXdzanBXRnNiSTRWaGJHeXVKWVdSZ3JpMk5sWWF3c2pwV0ZzYkk0VmxZclZtRjlHTmFIWVgzNGROYUhIY2RhSDNZOFNYMVlTKzZJOUQxbmxSSlRqWDM1SWpzMWhveTViOGhuVXd5em1QdGliTVgwS0FaajI2clU4cFFxS29iYjlBTjJjcEd5Uk1rd2YxMjA5N2krbFF6YW1aM3paZFdLdFZjbEJ2bWMwWjFpSXM5OVNRYWUvWDA3bFNhUFpPMVZ2OVhTcjdYcnROMnZHTVNuc0NHMjZETk54WXc5QW50NmxqeVN3WmpuZC8yZjJVbUdSMHBIZnhKYTI3dnJGT25lRllOMmRrcTFFczBmeGNCek0yY1BVK1dtMkI5bDA5NDhQR1RIK3kvWEN4M3RIM1VjZlk3eGozMko5MDk4QmhWV0hXSFZFUW1yanFlaDZuQXZPRllXeHNyaVdGa1lLNHRqWldHc0xJNlZCYWQwbloxbXJDUUlLNTJ3MGdrcm5YOXpwWFB5V0N1ZGs1UktwWmZnR0YxL3l1UXlTSEhHOHo2UFl1QlpyOVFlRHBOSE1td242VDhya3d5U3N1eSszY2NuWUpJWjM0WFU1NVAyOUtUdll5NVU4SlJtUTZ6UGlSWGVFUGN3WkdyN0tiRktGWWhpZVA1Mnk5ZXZZbGpGRGRidTB2bVNZbWJpZU5pUklKNEhCdm1ITTJjcUs3Ym9RelBGSUdLekUvYTFFWXFWWk5oWHlmL2htMlJ0bnZVRnFDckY4SnI5K0Q3RldUSVk4OFNvMktKekljVWd6djBsc1grZDRpd1p0TFBXNTR1aFl0RE9qVEczcUtWMkpJUGxmSERIdmtYM3JoakVjSGxCalBJTWw2eTk4MG1SSHF1Vk5ubFZOaGg0bHNhcVJmb0hMOFZnekpXdGFwRXFUOFd3cjZNL1puU21IdFh2VHZJY2E3RGpydlQ0OVJSKzFCWisxQlorMUJaKzFCYW04bUVxLzVTbjhyLzhEbmp1VGROVlFRQUEiLAogIGZpbHRlcl91cmw6ICJ7e2ZsLuWcsOWMun19e3tmbC7mjpLluo99fXt7Zmwu5Ymn5oOFfX17e2ZsLuivreiogH19e3tmbC7lrZfmr419fS9wYWdlL2Z5cGFnZXt7Zmwu5bm05Lu9fX0iLAogIGNsYXNzX3BhcnNlOiAiLm5hdmJhci1pdGVtcyYmbGk7YSYmVGV4dDthJiZocmVmOyhcXGQrKSIsCiAgY2F0ZV9leGNsdWRlOiAi5Zue5a625Zyw5Z2AIiwKICDmkJzntKI6ICIubW9kdWxlLWl0ZW1zJiYubW9kdWxlLWl0ZW07c3Ryb25nJiZUZXh0O2ltZyYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmOy5tb2R1bGUtY2FyZC1pdGVtLWluZm8tLXN0cm9uZyYmVGV4dCIsCn0=
\ No newline at end of file
diff --git a/drpy_js/畅梦影视[优].js b/drpy_js/畅梦影视[优].js
deleted file mode 100644
index ae0bd16..0000000
--- a/drpy_js/畅梦影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/番号资源[密].js b/drpy_js/番号资源[密].js
deleted file mode 100644
index d3f93b8..0000000
--- a/drpy_js/番号资源[密].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICdb8J+SlV3nlarlj7fotYTmupAnLAogIOaooeadvzogJ+mHh+mbhjEnLAogIGhvc3Q6ICdodHRwOi8vZmhhcGk5LmNvbS9hcGkucGhwL3Byb3ZpZGUvdm9kLycsCn0=
\ No newline at end of file
diff --git a/drpy_js/番茄小说[书].js b/drpy_js/番茄小说[书].js
deleted file mode 100644
index abdfaf8..0000000
--- a/drpy_js/番茄小说[书].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/白嫖者联盟.js b/drpy_js/白嫖者联盟.js
deleted file mode 100644
index 5795a51..0000000
--- a/drpy_js/白嫖者联盟.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/ytLLFIoKs1JVbBVqOZSAIKSzJKcVCsF9ecz9z5dPe1FQ+uLxinPZ89X1wHLPlux8Nnc/UDpl8umPZ29DyqakV9cAhTLKCkpKLbS1y8vL9crrKxKs7DQS87PhaopLcoBKtEvrCzLTynOyC/XT6tMzkksLtaFgrTKgsT0VCBDL6MkNweqqTg1sSg5IxRZK1hEX0tLV5cInYlJIL8YQYTSMnNKUosgQgYQIbAL4gsSi4pBXtbLrSzN1M1ITUxJLYqPz03NK1XIybRKL9Ew0LTKKdEw1bROVFMLSa0oAdEZRalp1voaMTEp2powi2sBCVr7ok4BAAA=
\ No newline at end of file
diff --git a/drpy_js/百忙无果[官].js b/drpy_js/百忙无果[官].js
deleted file mode 100644
index 1a9ab4a..0000000
--- a/drpy_js/百忙无果[官].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eZvuW/meaXoOaenFvlrphdJywKICAgIGhvc3Q6ICdodHRwczovL3BpYW5rdS5hcGkuJTZkJTY3JTc0JTc2LmNvbScsCiAgICBob21lVXJsOiAnJywKICAgIC8vIHNlYXJjaFVybDogJ2h0dHBzOi8vbW9iaWxlc28uYnouJTZkJTY3JTc0JTc2LmNvbS9wYy9zZWFyY2gvdjE/cT0qKiZwbj1meXBhZ2UmcGM9MTAnLAogICAgLy8g5paw54mI5o6l5Y+j5pCc57Si5Y+Y5oiQdjLlubbkuJTliqDkuobpqozor4HvvIzom4vnlrwKICAgIC8vIHNlYXJjaFVybDogJ2h0dHBzOi8vbW9iaWxlc28uYnoubWd0di5jb20vcGMvc2VhcmNoL3YyP2FsbG93ZWRSQz0xJnNyYz1tZ3R2JmRpZD1jZjAzYjk1OS02OTQ1LTRjYjYtYmNiMy04ODc2MjQ1OTM1NGQmdGltZXN0YW1wPTIwMjQtMDYtMjFUMTUlM0E1MiUzQTU1WiZzaWduVmVyc2lvbj0xJnNpZ25Ob25jZT04ZGFlNjdhMWZhZmM0YmRhOTg0ZWM4ZGViNDc2NjZhZCZxPSoqJnBuPWZ5cGFnZSZwYz0xMCZjb3JyPTEmX3N1cHBvcnQ9MTAwMDAwMDAmc2lnbmF0dXJlPTRlMjdmZGRjZDJhMWE2NmQ2YzE3NjRlZDZiNzRiYWI3JywKICAgIC8vIOeUqOaJi+acuueahOWQp++8jOaQnuS4jeWumui/meS4qgogICAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9tb2JpbGVzby5iei4lNmQlNjclNzQlNzYuY29tL21zaXRlL3NlYXJjaC92Mj9xPSoqJnBuPWZ5cGFnZSZwYz0xMCcsCiAgICBkZXRhaWxVcmw6ICdodHRwczovL3Bjd2ViLmFwaS5tZ3R2LmNvbS9lcGlzb2RlL2xpc3Q/cGFnZT0xJnNpemU9NTAmdmlkZW9faWQ9ZnlpZCcsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgbXVsdGk6IDEsCiAgICAvLyDliIbnsbvpk77mjqVmeXBhZ2Xlj4LmlbDmlK/mjIEx5LiqKCnooajovr7lvI8KICAgIC8vIGh0dHBzOi8vd3d3Lm1ndHYuY29tL2xpYi8zP2xhc3RwPWxpc3RfaW5kZXgma2luZD1hMSZ5ZWFyPWFsbCZjaGFyZ2VJbmZvPWExJnNvcnQ9YzIKICAgIHVybDogJy9yaWRlci9saXN0L3Bjd2ViL3YzP3BsYXRmb3JtPXBjd2ViJmNoYW5uZWxJZD1meWNsYXNzJnBuPWZ5cGFnZSZwYz04MCZodWRvbmc9MSZfc3VwcG9ydD0xMDAwMDAwMCZraW5kPWExJmFyZWE9YTEnLAogICAgZmlsdGVyX3VybDogJ3llYXI9e3tmbC55ZWFyIG9yICJhbGwifX0mc29ydD17e2ZsLnNvcnQgb3IgImFsbCJ9fSZjaGFyZ2VJbmZvPXt7ZmwuY2hhcmdlSW5mbyBvciAiYWxsIn19JywKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfbmFtZTogJ+eUteinhuWJpybnlLXlvbEm57u86Im6JuWKqOa8qybnuqrlvZXniYcm5pWZ6IKyJuWwkeWEvycsCiAgICBjbGFzc191cmw6ICcyJjMmMSY1MCY1MSYxMTUmMTAnLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyWHZVckRVQlNBMytYT0hjNjVhZHJhTitqbTVDSWRZb2svR0Z1cFdpaWxJQmFsSUZZb0loMUVCeEVLSWloME1PWjFtc1MraGJjMXlUbmk0bUttczZYZklibm5DL21HOWhTcTZtWlA3YnRkVlZXTlhhZTk0OWFhMnkxVlVFM253RFZzSGt3K1ozNzhGb1QzbDRaMkhPL0VYZDNTTk1Qd2ZMb1lUSmZZL0hBOFQvVUw2ZURLM0pVTXRqRGpuYjNERk9vTWJ0VFc0NXRwT0h4UFIxWTJTazQvODZQeFN6b3RxbjU5T2YvZSthalZQcVp0bzlFNC9Mait0V2QwZHhyZHZpWVBhTkE2aHNlRDlNRU4yaWgrZUpyN284WHpKQnhlcE5PZngzWmRwMDNIaHY1c0hqeisvZlZvME1VRXJ5NFp0NGhibkd2aW1uTWtqcHdEY1dBYzF6SnVMaG12RUs5d1hpWmU1cnhFdk1TNVRkem1uSHlSK3lMNUl2ZEY4a1h1aStTTDNCZkpGN2t2a0M5d1h5QmY0TDVBdnNCOWdYeUIrd0w1QXZjRjhvWFZsMU12S0MycFNXcVNXaDZwV1pLYXBDYXA1WkdhRGRLYXRDYXQ1ZEthL0Z1VDFxUzFYRnBEODBZa05vbE5ZdnYzMlBwZkNMa25lSWNVQUFBPScsCiAgICBsaW1pdDogMjAsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgLy8g5omL5Yqo6LCD55So6Kej5p6Q6K+35rGCanNvbueahHVybCzmraRsYXp55LiN5pa55L6/CiAgICAvLyBsYXp5OidqczpwcmludChpbnB1dCk7ZmV0Y2hfcGFyYW1zLmhlYWRlcnNbInVzZXItYWdlbnQiXT1NT0JJTEVfVUE7bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7bGV0IHJ1cmw9aHRtbC5tYXRjaCgvd2luZG93XFwub3BlblxcKFwnKC4qPylcJywvKVsxXTtydXJsPXVybERlYWwocnVybCk7aW5wdXQ9e3BhcnNlOjEsdXJsOnJ1cmx9OycsCiAgICAvLyDmjqjojZA6Jy5saXN0X2l0ZW07aW1nJiZhbHQ7aW1nJiZzcmM7YSYmVGV4dDthJiZkYXRhLWZsb2F0JywKICAgIOS4gOe6pzogJ2pzb246ZGF0YS5oaXREb2NzO3RpdGxlO2ltZzt1cGRhdGVJbmZvfHxyaWdodENvcm5lci50ZXh0O3BsYXlQYXJ0SWQnLAogICAgLy8g5LiA57qnOidqc29uOmRhdGEuaGl0RG9jczt0aXRsZTtpbWc7dXBkYXRlSW5mbztwbGF5UGFydElkJywKICAgIOS6jOe6pzogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBmZXRjaF9wYXJhbXMuaGVhZGVycy5SZWZlcmVyID0gImh0dHBzOi8vd3d3Lm1ndHYuY29tIjsKICAgICAgICBmZXRjaF9wYXJhbXMuaGVhZGVyc1siVXNlci1BZ2VudCJdID0gVUE7CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIHBkZmEgPSBqc3AucGRmYTsKICAgICAgICBwZCA9IGpzcC5wZDsKICAgICAgICBWT0QgPSB7fTsKICAgICAgICBsZXQgZCA9IFtdOwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgIGxldCBob3N0ID0gImh0dHBzOi8vd3d3Lm1ndHYuY29tIjsKICAgICAgICBsZXQgb3VybCA9IGpzb24uZGF0YS5saXN0Lmxlbmd0aCA+IDAgPyBqc29uLmRhdGEubGlzdFswXS51cmwgOiBqc29uLmRhdGEuc2VyaWVzWzBdLnVybDsKICAgICAgICBpZiAoIS9eaHR0cC8udGVzdChvdXJsKSkgewogICAgICAgICAgICBvdXJsID0gaG9zdCArIG91cmwKICAgICAgICB9CiAgICAgICAgZmV0Y2hfcGFyYW1zLmhlYWRlcnNbIlVzZXItQWdlbnQiXSA9IE1PQklMRV9VQTsKICAgICAgICBodG1sID0gcmVxdWVzdChvdXJsKTsKICAgICAgICBpZiAoaHRtbC5pbmNsdWRlcygid2luZG93LmxvY2F0aW9uID0iKSkgewogICAgICAgICAgICBwcmludCgi5byA5aeL6I635Y+Wb3VybCIpOwogICAgICAgICAgICBvdXJsID0gcGRmaChodG1sLCAibWV0YVtodHRwLWVxdWl2PXJlZnJlc2hdJiZjb250ZW50Iikuc3BsaXQoInVybD0iKVsxXTsKICAgICAgICAgICAgcHJpbnQoIuiOt+WPluWIsG91cmw6IiArIG91cmwpOwogICAgICAgICAgICBodG1sID0gcmVxdWVzdChvdXJsKQogICAgICAgIH0KICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZGV0YWlscyA9IHBkZmgoaHRtbCwgIi5tLWRldGFpbHMmJkh0bWwiKS5yZXBsYWNlKC9oMT4vLCAiaDY+IikucmVwbGFjZSgvZGl2L2csICJiciIpOwogICAgICAgICAgICBwcmludChkZXRhaWxzKTsKICAgICAgICAgICAgbGV0IGFjdG9yID0gIiIsCiAgICAgICAgICAgICAgICBkaXJlY3RvciA9ICIiLAogICAgICAgICAgICAgICAgdGltZSA9ICIiOwogICAgICAgICAgICBpZiAoL+aSreWHuuaXtumXtC8udGVzdChkZXRhaWxzKSkgewogICAgICAgICAgICAgICAgYWN0b3IgPSBwZGZoKGh0bWwsICJwOmVxKDUpJiZUZXh0Iikuc3Vic3RyKDAsIDI1KTsKICAgICAgICAgICAgICAgIGRpcmVjdG9yID0gcGRmaChodG1sLCAicDplcSg0KSYmVGV4dCIpOwogICAgICAgICAgICAgICAgdGltZSA9IHBkZmgoaHRtbCwgInA6ZXEoMykmJlRleHQiKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYWN0b3IgPSBwZGZoKGh0bWwsICJwOmVxKDQpJiZUZXh0Iikuc3Vic3RyKDAsIDI1KTsKICAgICAgICAgICAgICAgIGRpcmVjdG9yID0gcGRmaChodG1sLCAicDplcSgzKSYmVGV4dCIpOwogICAgICAgICAgICAgICAgdGltZSA9ICLlt7Llroznu5MiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IF9pbWcgPSBwZChodG1sLCAiLnZpZGVvLWltZyYmaW1nJiZzcmMiKTsKICAgICAgICAgICAgbGV0IEpKID0gcGRmaChodG1sLCAiLmRlc2MmJlRleHQiKS5zcGxpdCgi566A5LuL77yaIilbMV07CiAgICAgICAgICAgIGxldCBfZGVzYyA9IHRpbWU7CiAgICAgICAgICAgIFZPRC52b2RfbmFtZSA9IHBkZmgoaHRtbCwgIi52dC10eHQmJlRleHQiKTsKICAgICAgICAgICAgVk9ELnR5cGVfbmFtZSA9IHBkZmgoaHRtbCwgInA6ZXEoMCkmJlRleHQiKS5zdWJzdHIoMCwgNik7CiAgICAgICAgICAgIFZPRC52b2RfYXJlYSA9IHBkZmgoaHRtbCwgInA6ZXEoMSkmJlRleHQiKTsKICAgICAgICAgICAgVk9ELnZvZF9hY3RvciA9IGFjdG9yOwogICAgICAgICAgICBWT0Qudm9kX2RpcmVjdG9yID0gZGlyZWN0b3I7CiAgICAgICAgICAgIFZPRC52b2RfcmVtYXJrcyA9IF9kZXNjOwogICAgICAgICAgICBWT0Qudm9kX3BpYyA9IF9pbWc7CiAgICAgICAgICAgIFZPRC52b2RfY29udGVudCA9IEpKOwogICAgICAgICAgICBpZiAoIVZPRC52b2RfbmFtZSkgewogICAgICAgICAgICAgICAgVk9ELnZvZF9uYW1lID0gVk9ELnR5cGVfbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgbG9nKCLojrflj5blvbHniYfkv6Hmga/lj5HnlJ/plJnor686IiArIGUubWVzc2FnZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdldFJqcGcoaW1nVXJsLCB4cykgewogICAgICAgICAgICB4cyA9IHhzIHx8IDM7CiAgICAgICAgICAgIGxldCBwaWNTaXplID0gL2pwZ18vLnRlc3QoaW1nVXJsKSA/IGltZ1VybC5zcGxpdCgianBnXyIpWzFdLnNwbGl0KCIuIilbMF0gOiBmYWxzZTsKICAgICAgICAgICAgbGV0IHJqcGcgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKHBpY1NpemUpIHsKICAgICAgICAgICAgICAgIGxldCBhID0gcGFyc2VJbnQocGljU2l6ZS5zcGxpdCgieCIpWzBdKSAqIHhzOwogICAgICAgICAgICAgICAgbGV0IGIgPSBwYXJzZUludChwaWNTaXplLnNwbGl0KCJ4IilbMV0pICogeHM7CiAgICAgICAgICAgICAgICByanBnID0gYSArICJ4IiArIGIgKyAiLmpwZyIKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgaW1nID0gL2pwZ18vLnRlc3QoaW1nVXJsKSAmJiByanBnID8gaW1nVXJsLnJlcGxhY2UoaW1nVXJsLnNwbGl0KCJqcGdfIilbMV0sIHJqcGcpIDogaW1nVXJsOwogICAgICAgICAgICByZXR1cm4gaW1nCiAgICAgICAgfQoKICAgICAgICBpZiAoanNvbi5kYXRhLnRvdGFsID09PSAxICYmIGpzb24uZGF0YS5saXN0Lmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICBsZXQgZGF0YSA9IGpzb24uZGF0YS5saXN0WzBdOwogICAgICAgICAgICBsZXQgdXJsID0gImh0dHBzOi8vd3d3Lm1ndHYuY29tIiArIGRhdGEudXJsOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEudDQsCiAgICAgICAgICAgICAgICBkZXNjOiBkYXRhLnQyLAogICAgICAgICAgICAgICAgcGljX3VybDogZ2V0UmpwZyhkYXRhLmltZyksCiAgICAgICAgICAgICAgICB1cmw6IHVybAogICAgICAgICAgICB9KQogICAgICAgIH0gZWxzZSBpZiAoanNvbi5kYXRhLmxpc3QubGVuZ3RoID4gMSkgewogICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBqc29uLmRhdGEudG90YWxfcGFnZTsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoaSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShmZXRjaChpbnB1dC5yZXBsYWNlKCJwYWdlPTEiLCAicGFnZT0iICsgaSksIHt9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGpzb24uZGF0YS5saXN0LmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gImh0dHBzOi8vd3d3Lm1ndHYuY29tIiArIGRhdGEudXJsOwogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzSW50YWN0ID09ICIxIikgewogICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEudDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBkYXRhLnQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogZ2V0UmpwZyhkYXRhLmltZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybAogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwcmludChpbnB1dCArICLmmoLml6DniYfmupAiKQogICAgICAgIH0KICAgICAgICBWT0Qudm9kX3BsYXlfZnJvbSA9ICJtZ3R2IjsKICAgICAgICBWT0Qudm9kX3BsYXlfdXJsID0gZC5tYXAoZnVuY3Rpb24gKGl0KSB7CiAgICAgICAgICAgIHJldHVybiBpdC50aXRsZSArICIkIiArIGl0LnVybAogICAgICAgIH0pLmpvaW4oIiMiKTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICB9KSwKCiAgICAvLyDmkJzntKI6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAvLyAgICAgZmV0Y2hfcGFyYW1zLmhlYWRlcnMuUmVmZXJlciA9ICJodHRwczovL3d3dy5tZ3R2LmNvbSI7CiAgICAvLyAgICAgZmV0Y2hfcGFyYW1zLmhlYWRlcnNbIlVzZXItQWdlbnQiXSA9IFVBOwogICAgLy8gICAgIGxldCBkID0gW107CiAgICAvLyAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgIC8vICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAvLyAgICAganNvbi5kYXRhLmNvbnRlbnRzLmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHsKICAgIC8vICAgICAgICAgaWYgKGRhdGEuZGF0YS5zb3VyY2VMaXN0IHx8IGRhdGEuZGF0YS55ZWFyTGlzdCkgewogICAgLy8gICAgICAgICAgICAgbGV0IGxpc3QgPSBkYXRhLmRhdGEuc291cmNlTGlzdCA/IGRhdGEuZGF0YS5zb3VyY2VMaXN0IDogZGF0YS5kYXRhLnllYXJMaXN0WzBdLnNvdXJjZUxpc3Q7CiAgICAvLyAgICAgICAgICAgICBsZXQgZGVzYyA9ICIiOwogICAgLy8gICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdCkgewogICAgLy8gICAgICAgICAgICAgICAgIGRlc2MgKz0gaXQubmFtZSArICJcdCIKICAgIC8vICAgICAgICAgICAgIH0pOwogICAgLy8gICAgICAgICAgICAgbGV0IGZ5Y2xhc3MgPSAnJzsKICAgIC8vICAgICAgICAgICAgIGlmIChsaXN0WzBdLnNvdXJjZSA9PT0gImltZ28iKSB7CiAgICAvLyAgICAgICAgICAgICAgICAgbGV0IGltZyA9IGRhdGEuZGF0YS5waWMgPyBkYXRhLmRhdGEucGljIDogZGF0YS5kYXRhLnllYXJMaXN0WzBdLnBpYzsKICAgIC8vICAgICAgICAgICAgICAgICB0cnkgewogICAgLy8gICAgICAgICAgICAgICAgICAgICBmeWNsYXNzID0gZGF0YS5kYXRhLmRlc2MuZmluZChpdCA9PiBpdC5sYWJlbCA9PT0gJ+exu+WeiycpLnVybC5tYXRjaCgvbGliXC8oXGQrKS8pWzFdICsgJyQnOwogICAgLy8gICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgZnljbGFzcyA9ICcnOwogICAgLy8gICAgICAgICAgICAgICAgIH0KICAgIC8vICAgICAgICAgICAgICAgICBsb2coZnljbGFzcyk7CiAgICAvLyAgICAgICAgICAgICAgICAgZC5wdXNoKHsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuZGF0YS50aXRsZSA/IGRhdGEuZGF0YS50aXRsZSA6IGRhdGEuZGF0YS55ZWFyTGlzdFswXS50aXRsZSwKICAgIC8vICAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWcsCiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRhdGEuZGF0YS5zdG9yeSA/IGRhdGEuZGF0YS5zdG9yeSA6IGRhdGEuZGF0YS55ZWFyTGlzdFswXS5zdG9yeSwKICAgIC8vICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGF0YS5kYXRhLnBsYXlUaW1lLAogICAgLy8gICAgICAgICAgICAgICAgICAgICB1cmw6IGZ5Y2xhc3MgKyBsaXN0WzBdLnZpZAogICAgLy8gICAgICAgICAgICAgICAgIH0pCiAgICAvLyAgICAgICAgICAgICB9CiAgICAvLyAgICAgICAgIH0KICAgIC8vICAgICB9KTsKICAgIC8vICAgICBzZXRSZXN1bHQoZCk7CiAgICAvLyB9KSwKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBmZXRjaF9wYXJhbXMuaGVhZGVycy5SZWZlcmVyID0gImh0dHBzOi8vd3d3Lm1ndHYuY29tIjsKICAgICAgICBmZXRjaF9wYXJhbXMuaGVhZGVyc1siVXNlci1BZ2VudCJdID0gVUE7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBqc29uLmRhdGEuY29udGVudHMuZm9yRWFjaChmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICBpZiAoZGF0YS50eXBlICYmIGRhdGEudHlwZSA9PSAnbWVkaWEnKSB7CiAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IGRhdGEuZGF0YVswXTsKICAgICAgICAgICAgICAgIGxldCBkZXNjID0gaXRlbS5kZXNjLmpvaW4oJywnKTsKICAgICAgICAgICAgICAgIGxldCBmeWNsYXNzID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoaXRlbS5zb3VyY2UgPT09ICJpbWdvIikgewogICAgICAgICAgICAgICAgICAgIGxldCBpbWcgPSBpdGVtLmltZyA/IGl0ZW0uaW1nIDogJyc7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgZnljbGFzcyA9IGl0ZW0ucnB0Lm1hdGNoKC9pZHg9KC4qPykmLylbMV0gKyAnJCc7CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgICAgZnljbGFzcyA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsb2coZnljbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUucmVwbGFjZSgvPEI+fDxcL0I+L2csICcnKSwKICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGZ5Y2xhc3MgKyBpdGVtLnVybC5tYXRjaCgvLipcLyguKj8pXC5odG1sLylbMV0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgfSksCn0=
\ No newline at end of file
diff --git a/drpy_js/皮皮影视.js b/drpy_js/皮皮影视.js
deleted file mode 100644
index 9e324ef..0000000
--- a/drpy_js/皮皮影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/盘搜.js b/drpy_js/盘搜.js
deleted file mode 100644
index 4075235..0000000
--- a/drpy_js/盘搜.js
+++ /dev/null
@@ -1 +0,0 @@
-bOHh4qyJ30YH+RrYfWhs9vobRnk94tD/CEqHZ3ymE9PAxNuiPJ9Xq+CtzNW7wtvmSYzoGu8CrxMZitKeogr+C7lQMzfzCRi6i5FT9ILEkkKrVJDW58W2bhqbQglT8BDYu3A8TeLqoYk556mhdzJ5MDnLSd3pk0n9D+O2B7Khy5wCp1zaKhR5ObOIs20IA11WWBtZVrHQBXzyU+0c09vERTImt2lAIW3b2bdYBTTb+KfJ04PmvQnKHYjsmQbeY8SqzN1BGaLxFqsY0cO1jk/pkQpEsjGZRTW00N7xs5/Vu1s+C1+shBj0WVULzleU80biGw0/TkxozgAoVB1ThdeRfkBH25m87c15uYzBm3Q3Gv6yS+9m4gAyB+GwsIsBXj0LUGUbMUz+yAvrIWIgjP7Kx7QlRp7HEZEk3uUnzScrgl2EuwsfZ/7rH6D7pDIkZtr3axbY9kbtCqRVKvCJ58I4ryS4UaFy46o8U0OiJEt6feAWPDkuCzc54VHdn+4jlWVL+5or3itPhcxXCvpMPhg6hfFS0c8dN0ZH4q4tceSuv85c0C6FHdBwwAyXGvwEnFHKy4GAvJzm803lZrkPrSbKxbSKMGq4HegGj9VHURhXMKRdOEKhXs0p6g/hYq8/zXP1zt9BnHZe6rWr7nE5mpq6xMFbepnny52dgJz31/8CLkSbn8s7veYi7jPnxWYb9bBHx1um4p86hOy10mMBFZpYg77hc9GlL0CZs+q+vbSRP3/SDxgQUnru/vjXQyN8geBf1slO03nt5QtQZAlQqEpbJUJ1lDT8pagTAn0HY6G/w+inqoBjUPqoNj5b1EmKFeQEXOMbtSBEEhGVShBkaVmLOu9xkrP/PaL6JKX1y8/3Z6WWFapJPzi0e6JuW9NiGd8Jo2spYZVGhUiFrPTpiWXJKxq+KQbnXelwf7uD4DdSGQjs1ZQ7KyNjuJi/Ql1Tl6eaq85GN2zyNkW7yRIqcaafmjROXpqW/tfuGxfjQymFM7jmBBSb+BJIhcG6fPLk/aafl5Q7rumZjZGq2YXod3YYPqCqf6EjNQtK8g6XTqY6hbP4nHIQ8yNBlSUTuIard8J8feBiRUpsie652XrKlbIUt14ISo+BOOyXPC1+Fs8bT9LM5G0ciqiWVHnWixjDLejhuZg/eog+12wrTG/spDG5mhR0qkMPOYCukpj5161ahuAKbwTePyhylNSXXdYmr4Iirzge4R/8Qx1Ne2X3Jg1vYKu4xSqNpTojb7qFrRHYOOE4az3XbPvzSngisJcuUHdImcvJnBNJ5mbP3SfZRF4yobPwIWjNiSLXv/zkz1nmT3flae2kQQZO0vNjtqzgO1k1FGQQYXIUPR7wSQHXEPS/tiol4BuC7Ahc/kCa9n4TlCoYB9MW2ebC7POd0dHdCb26
\ No newline at end of file
diff --git a/drpy_js/直播转点播[合].js b/drpy_js/直播转点播[合].js
deleted file mode 100644
index e287242..0000000
--- a/drpy_js/直播转点播[合].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/相声随身听[听].js b/drpy_js/相声随身听[听].js
deleted file mode 100644
index 5291f0b..0000000
--- a/drpy_js/相声随身听[听].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+ebuOWjsOmaj+i6q+WQrFvlkKxdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy54c21wMy5jb20nLAogICAgLy8gdXJsOicvZnljbGFzcy9meXBhZ2UuaHRtbCcsCiAgICB1cmw6ICcvZnlmaWx0ZXIvZnlwYWdlLmh0bWwnLAogICAgZmlsdGVyYWJsZTogMSwvL+aYr+WQpuWQr+eUqOWIhuexu+etm+mAiSwKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmNhdGVJZH19JywKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUE2V1NYMDdDUUJERzc3TFBjQUZ1NEJrTUQwZ3JCQXFSZ0phRmtLaEV3QmlMbUtBa1JFRkJnakVZaEFkbHhaNm0yMlZ2NFJTUWp0SSsrVGF6KzhzMy83NGlpU2t4RXRvdGtxUktTWWhFSXpsMVJ5RUJrbzZrVk1oNXJTTGVQaUUvaW1pSDZoSk1PODluUTFrZU9zK1FPQXFsd09wRGxrZmNmQmRzd2krYnZONXppYUNTM0lZc1ppekdBd1RSaklmU3ZHdmZWT1VEUTF4QnoyNkQ5cDJ4cUo4Z1NrdDRxSmxYRUZqc0ZYRjVSZlBvN2F0cHNZWTE3eUF3VG5XUHN1MFpnTExhUUdDVWVwUVd4b1V3bnV6cEl3SjF1dWNKd3NUMi9TMEdkZWd4WEFvSGlFS3ovenlZby9CVGRMbU1odWliWW1MSzQzT1hDQ2J5Ym1jdkxUNGRpL1lINzQwZHBYWUZjYkY5VjJ3eWRWWXhxL3VnbEI3Z2FTVzdscXpqSjV0eGp3SVdrTE8rTlIvNHNJVTRZa2NkWUhuMzFJZE54WE5vK0xVWi9tNGNITEhhK0JyY21PR1h4OEFPMkdNYkkvQmFDd0xlZjE1ejRJYWdSblBMKzVXK0FRV1dhZVZ5QXdBQScsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgZ2RnOiB7Y2F0ZUlkOiAnZ2RnJ30sCiAgICAgICAgZHlzOiB7Y2F0ZUlkOiAnZHlzJ30sCiAgICAgICAgeHN4c2w6IHtjYXRlSWQ6ICd4c3hzbCd9LAogICAgICAgIHFxczoge2NhdGVJZDogJ3Fxcyd9LAogICAgICAgIG1zbDoge2NhdGVJZDogJ21zbCd9LAogICAgICAgIGhibDoge2NhdGVJZDogJ2hibCd9LAogICAgICAgIGxicjoge2NhdGVJZDogJ2xicid9LAogICAgICAgIG1qOiB7Y2F0ZUlkOiAnbWonfSwKICAgICAgICBoeXc6IHtjYXRlSWQ6ICdoeXcnfSwKICAgICAgICBzc2o6IHtjYXRlSWQ6ICdzc2onfSwKICAgICAgICBqazoge2NhdGVJZDogJ2prJ30sCiAgICAgICAgbXptOiB7Y2F0ZUlkOiAnbXptJ30sCiAgICAgICAgeXpoOiB7Y2F0ZUlkOiAneXpoJ30sCiAgICAgICAgc3dtOiB7Y2F0ZUlkOiAnc3dtJ30KICAgIH0sCiAgICBzZWFyY2hVcmw6ICcvc28vKipfZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICcubGlzdC1uYXZpJiZsaTthJiZUZXh0O2EmJmhyZWY7LyhcXHcrKS5odG1sJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnanM6aW5wdXQ9e2p4OjAsdXJsOmlucHV0LHBhcnNlOjB9JywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnKicsCiAgICDkuIDnuqc6ICcjcG9zdF9saXN0X2JveCYmbGk7aDImJlRleHQ7aW1nJiZzcmM7LmZfciYmc3BhbjplcSgzKSYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDEmJlRleHQ7LnZpZXcmJlRleHQnLAogICAgICAgIGltZzogJ2ltZyYmc3JjJywKICAgICAgICBkZXNjOiAnLnZpZXcmJlRleHQ7OzsubG1uYW1lJiZUZXh0Oy5hdXRob3ImJlRleHQnLAogICAgICAgIGNvbnRlbnQ6ICcuakFzclB5ZjQmJnA6ZXEoMSkmJlRleHQnLAogICAgICAgIC8vIHRhYnM6J2pzOlRBQlM9WyLnm7jlo7Dpmo/ouqvlkKwiXScsCiAgICAgICAgbGlzdHM6ICdqczp2YXIgVmlkZW9MaXN0SnNvbjtWaWRlb0xpc3RKc29uPWV2YWwoaHRtbC5zcGxpdCgiYXVkaW86ICIpWzFdLnNwbGl0KCJ9XCkiKVswXSk7bGV0IGxpc3QxPVtdO1ZpZGVvTGlzdEpzb24uZm9yRWFjaChmdW5jdGlvbihpdCl7bGlzdDEucHVzaChpdC5uYW1lLnN0cmlwKCkrIiRodHRwczoiK2l0LnVybCl9KTtMSVNUUz1bbGlzdDFdOycsCiAgICB9LAogICAg5pCc57SiOiAnKicsCn0=
\ No newline at end of file
diff --git a/drpy_js/看57.js b/drpy_js/看57.js
deleted file mode 100644
index 7270a28..0000000
--- a/drpy_js/看57.js
+++ /dev/null
@@ -1 +0,0 @@
-bOHh4qyJ30YH+RrYfWhs9iLk3wRJr60oo4tIYwSK5Owtcoalu4pZ09cOTrZU8jQvvpUqFv98DxpS/Y3TSRC1kXz4mQLCSufc1xdK7i1q9TJr/4WWFhpiWSfLi5jm7nnbaMWi+3PAzkLQ8/wq+KmbIt6OI2Gh7Na8TFdKUnd4MM8FUgHNEWMduemp32a+HQiExYeueAqElCwjPTbs0OxhtCqqKO7Rpxprmov0ejf/+0J5Nvq41N9k0Hq9jyAY7R6YtgL+PlL9+0pNZMNXpFbrmnnQu3Nzgc4LkuDWZwT1AM9Ng/N/RmQUu6YamqaSP9PKQGyzI+zXoiC7UyLuXiLqbFoxZ0NfkWkW9/WLX1mtCgXdxBD0OE1WAsZNxbMfhwzOl81OtPfo3BLpNtuFI0LFI0f1SOsqojfPM2rY4wKAaWFKEct2u5rO6zvHqrf0zonvYbsRvX5LtgHLXk/ItI7CfEHdkE70qeMyvm12sRaRLIOkTZfEJk+GhbvrhMOatshyy3nf3BPu1DpjJdwzAGB+ccT4KSxS5az6FGJdLjCaOIpYXX5xILTb9xumPh3kzLEIAolfEB6l4eMdmWJ65UQJQcb/k13HymmDM9ygF4R5I+IpyEPSdmfP3ypkcj+V4nax152uatwQEVO5AHsP9RlWB/QzJsLmuiJvpjdDsm/KCFkfKCinzsLabBFtIrovmadrifrVnrwdHwnpnoezggV5iXxS488GEFoqG4+dTaykarytuuyNCxWNbo+PJwE935On508MmI3IjinKT3UVOJSJ6+Mz20sXmXxtPWeJCxYe8lz3hnovEXzK8BBrYiZpKVk4zVAkQGZh1XnN1yo8GkGqnRC0dzo3UZyWATpk3Zj7PzFqdFQN8ZiJj872+HDDKEcnioRtPoW2wz+jNVOzZcmtJeATCizpMpV9VeIpfNzpotB2GF8fwYhiUFg3ARTQENyBWeWicSwTl4ncmzLc0IxbIUT8bE+/w/1ugPxX1KQTw8VvmNj/iOEADQUBJDVlXrc+voKqtD2py1wMXeCVg+pyw+Jxgdz4gnmdLUl+7oKuvvyjSfG88M87vWXvumZ/HVCe3bMKZ/71ZcuTzi30jxLCzz8iMQMlProy7h1n6XeWLQt+cSr/i989rm4MTsOOXNpR4e0/DNWbGiJDRG9+kRQ8DTHeJ9e8bbcB9thwNsXAFutGS/wR9SRdi+li/ag+cRCxpUmnOX1vlBQhT7id536SU6BaTeuvG0k7pCJ8NpDYnSigFcsAHlwus4sKHUaWhMoPA5KN/ETKNvrpR7T+MAGdlJafMva17KQ1X1jQR1VRqCqRmgyjaQ7WN2nAZ6yuy2RxTox9bL4lkQWlctHcn/szvG4uERgtzWrBldX96b13xpCOXlEt7cIen/6UsFJWHdijwdIUgXfdpnc6D55ImVCll3cQ8ZxmNcEDuKsGngg/P2RMWaTqS//C51RhzYnWNNN4HT3IHXrTF8mBo2ZI3H0Y2HSlCNVysVHHQBSTkYDKYbh6yXOeAXCnWpiD0jYxKJVRpOJ1sstNctiyfg/yCcTA2Q==
\ No newline at end of file
diff --git a/drpy_js/看了么.js b/drpy_js/看了么.js
deleted file mode 100644
index bdefbdb..0000000
--- a/drpy_js/看了么.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV5e0sjfnYsSqn4yYxXGRvGVHRuH33NvKHFrTZ7g0DIqsfaeIqUHiVuz0rGJPuwJZcyZ5FEfPGslTkYs+Furm56txqZI56prQM4EnKXq4dLDpepmFDbkLbTtWnTBQEHl6NsoLZOoT+/LCwkHaN5iJpSgK73239Z1v/LH5BwUxgYcOCzpH5d29fPeuDhsDMqdFfPYCQeUL6BNd9RJVF/Sh7DK8ntbIcHA+hIxefH6xpzRaNfwJbimsEsGOMxScMjhfEgC1wS0Gyg3bhnI50PLJ8yyBE8aU6z1kEvPb2MY22bW3jXhB/8Bo4u+ZifsTZz5ALdrP3UoyzYCWNpsqF2XLMLGyi6JrvUfi87FkZlUyYKbxQzinHhPbj3gmsAI8t1jJ1QWZ3Ccm0Aids+5Hgt6G8RrCETIxrlylBYvAseTD6q2xB/VQD62E+wh2hy1nduD7ZQ8LPuG1pBF91EIScJnjhkp4kSeurUUSYbmjKJCD6hf86Gieeg0ww8u+kNE2syNJf2bJ2Zf78BBhXICma31tiTDRPrgLGTmBntgRjfYJQIcOba+EavZ0X5oeNwZ+2HWXPdY9dMEO0rOG7c/++c40EGI7GnRtsXG15CFX8HGvGNH+958KMwJO7j67r7Itsq1BxEoS7PlDJBSqH6I0++7a00qzY33LT2BaDJZcbCkmOeCqGIBFpTaGkdsSsUw13Zar1SUbgOBkFr4QFlzVG42Pj859/Uep7F12nhxIkUNgOtUi2RLDIQWP5uYzsgj343cCvTrA48GlZihYpxWYAC5VqGnsYiyYEijJiXMw4mPV9UN1vvbbKbYDmshUONH7aHPdBKhfh1n8cAcKCM8iXQoaqfWVq5oOafCqdR0gCAtBEcXCIlojmqfy8y8/k2I7gzUoZfZxvcIpTPpTuoVhlP+/zv6kHMCX98QwAiIpkp96PtD0mlVMCRxxYruvc2kn90kR803nHcRa/xhzGWt6foipo43uLOSvG0+5CsGSta1SEPVP0pZnwTOxFoSm52XU/n8AuFM0+2g+mB2mm86ppohdQOD7CylttK/g+Bt6RNWwsoN6s+I4kHBdUm3HrAv/za9pGjhIXDpt4Zm1fJwaH+SpxSa4kF3Hj2JUuHugtjhVQMdK8EHDX5PAfxYcfAVXJZvmxldKbTnfsAAvZzu5mgOzRS6XENevFo/PVQmREJOGu+wLZhjBtVryado0Vv9vR1zf4ogTz/0BTUaf4lzkTz9XZPF8F4Mx/6DoO7nYQ20HIoxVpfnY9z+wj9eSM20Hz2Ut1CN32BJWAPFUiTsAVGpl/Oz2Qr+LQTJ2VP3PrGGYHviqse0AQUfMS51L3eTGRmaqBBzqeg9MukIXg2E9TNOLHZQUjgyQAimADtvAYWFe3r/77EtgEMg5Ep1+OZZoDVFotHgBCX/FgM5zQRWP24zL+Xns1HPhCnfUVHYuDbWp9iHknbcHzFa8TfapmrA68kkRc/hc3ZqGiqK/XY6J+Fg5g8hWJoqQeXvSUMFX/dDK2j0cvujCON2cXqs0h+XKZTqYN2Hqdi4MqleP73EP55DyHoaTcGQ1dzp7L1TMorfVFpU9DKxS/X9N+TcagnTC+RPJCUak+b5120ildXhPbhHXt/jVebpgqtrif31NlWAQhV4a2kxMkxfQ2w0BlYGDGPb0j0zZ2hUQ8LSc0mzeWhuKhedNT01HY5SQd/IRVKl5S5wMUD/a43BCSJ1ws2fphzkJnslazTGwoRjY0t979YkTNdqjw64bSB40JQqthhSzO0VlLu5znyBR5kwCFwCxM3Oj+HbFlqamZcRVU2shINHbqjCJkTM3JZtfwqGGzV/fkrB0VuUsjBgDcYgI1j3MOP7sL40pB8y+cuYNUksxslphNQc8iCqm/bXHxgPxVJ4Fxa5MT7pN9y/Agxy+VnZvPwpVsNunKxCxcRAgC2ylcLebAwTA+fgGW8iubHmKV9UQjnUZV+wse+DlDSUgQI5ZKONnoYSrEk+IBpuH5t/np4tUx2uS1lVH/oCj3JzCHLn+KUgKPQjZg/4Gk0Nx2SdcsQDR6cRkJlQyLpbrIZYk/np0UTC+AOVT2cT0FpmH2E6b2xzhEwxZQ/I1T6O3R8DJZKssv5y26xytTAjApuMo66APcea90iOK9FLKD2j3UF27Bp3hhaiG070gi8ZOnmOHy8SkXIGjQmmucOLnA8Etck9mWuL4y/+JbstcjXSNxHgtdWYOjmk5p40jne6aUl28KffFPhNbz5MVCFEht9HJfc+ZY6joqgy19yVU9Dx8NhtxwpFa4ACV8JJ7wvb2fkn4euY05bczroiMlvXjBear/R3Rh+E3hQPCWSKEDxUYNBYKU8AE9wYTvuXO+IqdUjpeyLRFcvbBsWZqObWQx1oerAGWCdx6ZvBG1Qf6EuQGnguaFMTmQFoWrhxqZ4MlAuqlotrpKYxaCHu7xWsYG9ro6qkfi0VsVSoWUbgwn7zJaH0r6fTESJFsqLPmvvoqBzicm5LMo+SEkgo4Bie0uAjIWXC0YqGGUKPPMq0JLiUHwu66jgpyIJ13gjK739Xk8ctqFuUGgQ6rW1QzWJmH8NWnj3X+L+jeLQbjhW5EaRbgkPLeY7aLAGq9BHeibh7aakaTvYCBS1Z9eCE7Q0TMnePNa4+bY4PvTofjO7jgUdn6Es78/wxJxPjBqyq3Q5niDc9H3l49xD6sMdt1fLCqprDua4ieYafwemmMrT/Vn3fEN06tIdqqGL7oLH1tDYCPqMa4iz60mYZay1myRB0L5SJAtCVL4OpbJYmTakdiTA2O4jdK93wLtSYVtWdl46kL1vJNPloGeVl3APzcjECLBDEZWdbOnbygVPq9w2v2SkFr56+NFHcATl4/sK5qaIf+GUn6BaZm7Xj7v4Ws8T9zYZ7xW8fk9xnWH/dE83LotnDLymj19FQcbBQ7qu646Hdizc4r1P55PL/cm5j6riJnNtS3I4jmXXPbZDgg5TPRwy9U+AW83uCUPhW2tIRIEF9zthXOr1/bmjdpdsWIz0NkqYrxYdDUxKxlsKCvfAQ1lvttZX3FVI95GxKcf+2KiLQXdsrQc75nGp2OaQvC8THKDEBieqNJvUScRApaaKu+8nkbkX/lqmuHaWD5CpLYaEL+MtyzROo61PotdkSI1Wy2+7GIRC80pP0apc9jB3+3yopkiDwvQJQ9zyMTvg0AC7NLnJ5Ul4AoBZGefXYpb4w7VYQJobiEvhML8/TBSOi/TOTh6T2EYNeq3M5GZryqskSKaNYq+1vz/VLOr+5wxvx2v/riUn+u4TWf64dJi/1A2dlnEH81+qWKaRry4phAIrFlPs6kN33uHQWWAt924anje5djDkJXFlOLhxSxw2K7j/ejLhVw1EEsPE9A99P2J9i+aalUrepHZi1WEbUnQaj2lnyZ+0rPQ5B/bmNRQhnRz9KsZ0VQABb8HKiRGfYJ2lpFOOOGN9WivG0BM2t7cCgBv74VwrtISzZjCDtibFS2V3DN+X73I104xhDSd+vd7ccc+G1W74PlaREL3KMwAiQe0ph5vtz4dc/xSelwhh/EIoqXxn3SVsooEm7s3Szqt6jaLUuJY2c1OGcMGGeer888dEjkAF+FuiwSlj20tennWFAPmcfwHii+h/weMTJiFK/J/Qam0zPHDBD/0fpam5cuahxlfDyAJ3XPUKiji7wKKhJG6OGtsOWTyqjnvz2WFYHjFCs6uDk6QCMmcjKJ76h5w6OX3KTFYIjDvaegCSL8a78qw+UoV42MlRgqOlq8l4zKPv/QWUdLTyDGfzgJU0oj8HW3c/JxRO9mbbyEo3M2854X2LC8e7yPm2uKD2NxWhlqQp0kGWN9AuXr6Xi4B3U0fEuE7BgxI3stB9VGcgdRGLQ7/5yDhb23zyWyvr0+gxusL5XiLLeLmMew5/+wIG7VWo80ZaVFujLW3mDAjDQ/5Z3AbdPW3a0QelWff6T3dINoFsmoxCusR9rNtEwiqM9vsCekz2UZEJJtn8p4bvUkjVmmNdrSGR1ML+E8LsmwDoyt5hOcTb3rUg==
\ No newline at end of file
diff --git a/drpy_js/看呀看.js b/drpy_js/看呀看.js
deleted file mode 100644
index 9e4d358..0000000
--- a/drpy_js/看呀看.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogIueci+WRgOeciyIsCiAgICBob3N0OiAiaHR0cHM6Ly9rYW5rYW4tdHYuY29tIiwKICAgIHVybDogIi9meWNsYXNzL2Z5ZmlsdGVyIiwKICAgIHNlYXJjaFVybDogIiIsCiAgICBzZWFyY2hhYmxlOiAxLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQU8xV1hVOGFRUlQ5TC92WThEQ0Q5UVAvU3VNRER6eVFWa3lxSldrTWlVcEVGbW1SeHRDaXhMN1VybHBhTVAwSXNNS3ZZWGZsWDNSMWR1ODlGKzJMdnRpRXR6M25ucDJaTTN2bnpHNWFxMnY1YkdiZFduNnhhYjNNdkxXV3JlRFM5VTcycllTVlM2OW1FT2ZUcjk1a2JvVzVrUGJ0TGI5bGU4UEx3TjY3S1liVU02dVFNRVhQZHZ6aUxsY1lrNkp5Tmg2MlFFR1lGS1VQaytZNUtBaVQ0cURxYnptZ0lFeUtSaXVjR2hTRVNYRzY1L1ZkVUJDT0ZmNzJnYi9WWUFWalV1eTBnMFlkRklSSlVhejRPMGVnSUJ3cmd1M1I1R2pFQ3Nha0tGK0tQV1ZNaWtvbkdGNkFnakFwbkxwd3l4aStTM0RvQm9lL3d5L0xuNFlwY3ZTOWVsMCtBVWVFU1ZIK05CN1lvQ0JNcTNGcjNtNFBWa09ZRk1ONjRMYkVhZ1JWV0xsUm1yNzFXbDJ2T3VDK0pYeHYzMUpSOUszZmRvTFIrM2pCQnRET2ZIRW16Vks4SndiRXRjblhwdC9yUkxVSTBKZ2ZULzFXT3g3VEFIcnY4N2wzUEl6Zk00RG1xM1g5L2lpZXp3QWFzOUdkbk5PWUJsRHRaNWZIakFDTnVmdkgrMUdNeHpSQTdHSC8xOWdkd2g3RytONDlwS0xZdzZSS1BvL0kyMGZnNTVpZlF6N0pmQko1emJ4R1hqR3ZnTmNwNHNOSDRKZVlYMEora2ZsRjVCZVlYMEIrbnZsNTVObXZScithL1dyMHE5bXZScithL1dyMHE5bXZScitLL1NyMHE5aXZRcitLL1NyMHE5aXZRcitLL1NyMHE5aXZRcitLL1NyMHE5aXZRcitLL1NyMHE5aXZFbjdWdUwvdjJlK2lxazZsVWpmZHU1S3cxak92SDNPSjJjN2t1SFNua2NPRE14NDRZVEUrTDRUcHFQVTZYSTRBSG0ycVJRQWlBZDR6QUk4djF3eUFTSURsMUVUTnBCVzhTbGlHQmlnSVF6eU0zUVpNUVhnV0VyT1ErTjlESXA4T1EyTGpFVGtSdUZmWDl0MmZCcE1Mb2lnb1RJdGFWK2dFSlg4S2hFNVE4c2RDam9lVVRBYXBRMHJtUXhnNVVqckZ5cXlRcnBHYUpjYVRTWXlrT0JFbU4yNVBSRHFYWFUxdlpOZHlENzg2SzJmKzFiZC8vRWVMb3FCa0Mwc2RVdkpJQ0oyZ3BxNXMxQWxLSGtVNUwxSlRGNklZRDZsWmt6K1pKcDlkaXcrNkZndC9BV2sreiswQ0VnQUEiLAogICAgZmlsdGVyX3VybDogInt7Zmwu57G75Z6LIG9yICcqJ319L3t7Zmwu5Zyw5Yy6IG9yICcqJ319L3t7Zmwu5bm05Lu9IG9yICcqJ319P3BhZ2U9ZnlwYWdlIiwKICAgIGZpbHRlcl9kZWY6IHt9LAogICAgaGVhZGVyczogewogICAgICAgICJVc2VyLUFnZW50IjogIk1PQklMRV9VQSIKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICIudG9wLW1lbnUgYTthJiZUZXh0O2EmJmhyZWY7LyhcXHcrKSQiLAogICAgY2F0ZV9leGNsdWRlOiAi6LGG55OjIiwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBtM3U4ID0gL3VybDonKC4qPyknL2cuZXhlYyhmZXRjaChpbnB1dCkpWzFdOwogICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6IG0zdTh9OwogICAgfSksCiAgICBkb3VibGU6IGZhbHNlLAogICAg5o6o6I2QOiAiYm9keSYmLm1vZHVsZTplcSgwKTsqOyo7KjsqOyoiLAogICAg5LiA57qnOiAiLnZpZGVvLWZyYW1lOy50aXRsZSYmVGV4dDtpbWcmJmRhdGEtc3JjOy5sYWJlbC1yZW1hcmtzJiZUZXh0O2EmJmhyZWYiLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICIudGl0bGUmJlRleHQ7dHI6ZXEoNCkmJlRleHQiLAogICAgICAgIGltZzogIi5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCIsCiAgICAgICAgLy/kuLvopoHkv6Hmga875bm05LujO+WcsOWMujvmvJTlkZg75a+85ryUCiAgICAgICAgZGVzYzogInRyOmVxKDcpJiZUZXh0O3RyOmVxKDYpJiZUZXh0O3RyOmVxKDIpJiZUZXh0O3RyOmVxKDApJiZUZXh0O3RyOmVxKDEpJiZUZXh0O3RyOmVxKDApJiZUZXh0IiwKICAgICAgICBjb250ZW50OiAiLnZvZC1zdG9yeSYmVGV4dCIsCiAgICAgICAgdGFiczogIiIsCiAgICAgICAgbGlzdHM6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgICAgIExJU1RTID0gW107CiAgICAgICAgICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCAiLnZvZC1wbGF5bGlzdCYmb3B0aW9uIik7CiAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgICAgICBMSVNUUy5wdXNoKFsiMSQiICsgTVlfVVJMICsgIi8xIl0pCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBsaXN0ID0gbGlzdC5tYXAoaXQgPT4gcGRmaChpdCwgJ1RleHQnKSArICIkIiArIHBkKGl0LCAnb3B0aW9uJiZ2YWx1ZScsIE1ZX1VSTCkpOwogICAgICAgICAgICAgICAgTElTVFMucHVzaChsaXN0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGxvZyhMSVNUUyk7CiAgICAgICAgfSksCiAgICB9LAogICAg5pCc57SiOiAiKiIKfQ==
\ No newline at end of file
diff --git a/drpy_js/看客影院.js b/drpy_js/看客影院.js
deleted file mode 100644
index 7e23463..0000000
--- a/drpy_js/看客影院.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/8stTUrM03u2dfuLebuM9Z7s6nm+a7leSWZJTqqCrYJ6hpGaWkhqRYm1XkaObgmQoZucn5ecARFUt+YqSyxSKCoFq63mUgCCZysWPpu730pBHWqiug5YGGwgUPT5nO6n6xY93bvx5cxFUKmM/OISoExGSUlBsZW+fnZiXnaqXnIyVLY4NbEoOSO0KAeoRD8YzNHX0tKFg7TKgsT0VCBDH6qhFKI0pLIgVT+tMjknsbgYqgimAiwWX5BYVAxyUVJ+SqWaGsh7eYllCjmZVuklGgaa1olQfwPpjKLUNGuweRp6WvaaIGNqAYRhlPs2AQAA
\ No newline at end of file
diff --git a/drpy_js/看客视频.js b/drpy_js/看客视频.js
deleted file mode 100644
index 8c34015..0000000
--- a/drpy_js/看客视频.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi7mtbfonrozLuS6jOe6pywgewogICAgInRpdGxlIjogIi5obC1mdWxsLWJveCYmbGk6ZXEoMCkmJlRleHQ7LmhsLWZ1bGwtYm94JiZsaTplcSg2KSYmVGV4dCIsCiAgICAiZGVzYyI6ICIuaGwtZnVsbC1ib3gmJmxpOmVxKDEpJiZUZXh0Ozs7LmhsLWZ1bGwtYm94JiZsaTplcSgyKSYmVGV4dDsuaGwtZnVsbC1ib3gmJmxpOmVxKDMpJiZUZXh0Igp9KQp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogIua1t+ieujMiLAogICAgdGl0bGU6ICLnnIvlrqLop4bpopEiLAogICAgaG9zdDogImh0dHBzOi8vd3d3LmthbmtlLmNjIiwKICAgIHVybDogIi9TaG93L2Z5Y2xhc3NmeWZpbHRlciIsCiAgICBzZWFyY2hVcmw6ICJodHRwczovL3d3dy5rYW5rZS5jYy9TZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLyIsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQU8yVzcwOVNVUmpILzVmN21qWXEzK1E3U1RHVS9JbWFPbCt3eHBhcmJFdHJOY2RHSWhDb29HN2hxRnVXeS9neEdWak5LUXo3WnpqbnduL1J2WnpuZVE1WG5jTUZiV3ozM2ZsK3ZzK0J3N25QOCtXdUtyZVYzdmxWNWFudnJkS3JhTWRsOW1WRHNTbEwzdWUrWnYzYSsreVZyMUc0cEdNV3l0U0RHUVByUXZIYkJCMFo4RGpkcmtlQVVhSHJjTndIeDFnaGZlQVlCV3FzaUU2NXB4QWJTK1NqSXdPQWpSWFNoOTQzUUkwVlVwWlVXVFFOQmdqMHRGaEJxK1RBQTBIN29ta2VET0UrSWREandSaGYrd2dlQ1BMZWJmTkFFajBoeUZzNzBwSTc2QWxCMzNjWVlXZGwvRDRoeUl0bHFoVVZQU0hvTjZSMzVENFF0Qys4VzA5bGNaOFEvZ1hERlkrWnFVVzJXWktQbVhRcmo3bStuMldmS2tCQjBLSE80OUlEUVpmd3F5ZzlFT2pWTm82bEJ3Szk2bWxlbC9VZktYNWFnQW9UTXRleFJKR2ZuWnZxQU5FNTlnNjVlb1RuRUlJdTdudTZuZ3JqeFFsaHVyajhIaTlzTlYwYzZsWXVyZzlBbjV3Sm5BZ2lPQ055UXZxQjlCUEJHWkFUNEFUaUpESUlaRkRPRkE0VUVSY1FGNUVoSUVORWhvRU1FM0VEY2N2NXcrbVRTWUFaSUNjWDU1YklHSkF4SXVOQXhvbE1BSmtnTWdsa2tvZ0hpSWNJUm9mTWpXa2cwMFJtZ013UXdkeVNpVFVMWkpiSUhKQTVJdlpiOTREWlRZM0M0N3VzbEpDTlF0cmNLSHd6eXRVQVR4YmhRMVlXOVdwcTFJYXBCZk5nUGxsY1dXNDJhNFYxOWg2YmRmbnhpNWMrNHdnTE51VnV1eEpkVS9lcnBaS1dEdUJFazZhS1VvNVZQbWpSQ0ZhUXZsUmg3SXhtTDlZQi9aZi9rRm9rcDYyZllIZ0lRUU1kRDdQRVR4eG9JZWdLNHdmYTd3TU1BaUhhbHBKWEpnbkZjMGovTElybmhtZ2xYVTBaZUNIOVRMbDNnOFRyUkdMci9jeGlYOW5uYjdpVk5KMDJkRkl0NDU4bENDdG5yWnp0cnB6dCtUOXZ6cDE0azczeURiSEwzbkpyZjdiMWFvd2dJZHFXM3pkK1MreGdmbCtYMFIzSTRldlMzOHBvSzZPN0txUHYySnRDMm1wWnEyVzdvR1Y3ckphMVdyYUxXdGIvRjM5U2NUeEZGZ0FBIiwKICAgIGZpbHRlcl91cmw6ICIte3tmbC7lnLDljLp9fS17e2ZsLuaOkuW6j319LXt7Zmwu57G75Z6LfX0tLXt7Zmwu5a2X5q+NfX0tLS1meXBhZ2UtLS0vIiwKICAgIGNsYXNzX3BhcnNlOiAiYm9keSYmLmhsLW5hdiBsaTpndCgwKTthJiZUZXh0O2EmJmhyZWY7LiovVHlwZS8oLio/KS8iLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHtwYXJzZTogMSwgdXJsOiBpbnB1dCwganM6ICcnfTsKICAgIH0pLAp9
\ No newline at end of file
diff --git a/drpy_js/看戏网.js b/drpy_js/看戏网.js
deleted file mode 100644
index e8355bb..0000000
--- a/drpy_js/看戏网.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOSw++yJ8kLPZGH7bSG3+EXPHtsnVBmFYEG//5tWToijkxfdHGHVqoK2oq34UXrPH4XoX01t+fZJ6skrjGglXWQ6LCr4BaZYYaeSeiEhk66XaJFMJALOYxtGcyoh/KcSqFFNBA4VCcO2qVtwBlBbwR2IYyI3sqzHUfD/2U4PVG/9i7hoSOl4rhYkb6VupTYDkHDCvWGQXC+lL6p1ZvaBDdNljxtb1jkwaO92DCydyDjtClWnW5RVR+DeoCt0AoO8SHt2lIg6Uxv5Gmupcu5GyIibEl0kSE+B1Jzi4lABZ0rQS6ibXjRwUUBiIKSywRqGOa4LbVIc9zAMnAQFmNHivUGsIDl0bL437dN1WN6TYyXOadEn/pZOOSUxvMh8Jxi1EF4=
\ No newline at end of file
diff --git a/drpy_js/看看影视.js b/drpy_js/看看影视.js
deleted file mode 100644
index 4b34b38..0000000
--- a/drpy_js/看看影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eci+eci+W9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cua2t5cy5wcm8nLAogICAgdXJsOiAnL3ZvZHNob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLycsCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS8nLAogICAgY2xhc3NfcGFyc2U6ICcudG9wX25hdiBsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykvJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDAsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJycsCiAgICBsaW1pdDogNiwKICAgIOaOqOiNkDogJy5jYm94X2xpc3Q7KjsqOyo7KjsqJywKICAgIGRvdWJsZTogdHJ1ZSwKICAgIOS4gOe6pzogJ3VsLnZvZGxpc3QgbGk7YSYmdGl0bGU7YSYmZGF0YS1vcmlnaW5hbDsucGljX3RleHQmJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJ2gyJiZUZXh0Oy5kZXRhaWxfbGlzdCYmdWw6ZXEoMSkmJmxpJiZhOmVxKDIpJiZUZXh0JywKICAgICAgICBpbWc6ICcudm9kbGlzdF90aHVtYiYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJy5jb250ZW50X2RldGFpbCYmbGk6ZXEoMSkmJlRleHQ7LmRldGFpbF9saXN0JiZ1bDplcSgxKSYmbGkmJmEmJlRleHQ7LmRldGFpbF9saXN0JiZ1bDplcSgxKSYmbGkmJmE6ZXEoMSkmJlRleHQ7LmRldGFpbF9saXN0JiZ1bDplcSgxKSYmbGk6ZXEoMikmJlRleHQ7LmRldGFpbF9saXN0JiZ1bDplcSgxKSYmbGk6ZXEoMykmJlRleHQnLAogICAgICAgIGNvbnRlbnQ6ICcuY29udGVudF9kZXNjJiZzcGFuJiZUZXh0JywKICAgICAgICB0YWJzOiAnLnBsYXlfc291cmNlX3RhYiYmYScsCiAgICAgICAgbGlzdHM6ICcuY29udGVudF9wbGF5bGlzdDplcSgjaWQpIGxpJywKICAgIH0sCiAgICDmkJzntKI6ICcqJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/真不卡.js b/drpy_js/真不卡.js
deleted file mode 100644
index cd36ba7..0000000
--- a/drpy_js/真不卡.js
+++ /dev/null
@@ -1,24 +0,0 @@
-muban.首图2.二级.desc = ';;;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text';
-//muban.首图2.二级.tabs = '.stui-pannel__head.bottom-line.active.clearfix h3';
-muban.首图2.二级.tabs = 'ul.nav-tabs.active&&li';
-var rule = {
- title:'真不卡',
- 模板:'首图2',
- host:'http://www.hootop.com/',
- //发布地址 http://52kan.info/
-// hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src=jsp.pdfh(html,"li:eq(0)&&a:eq(0)&&href");print(src);HOST=src',
- url:'/films/fyclass_fypage.html',
- class_name:'电影&剧集&综艺&动漫',
- class_url:'1&2&4&3',
- headers:{
- 'User-Agent' : 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/537.36',
- 'searchword' : '**',
- 'Referer': 'http://www.hootop.com/search.php',
- 'Origin': 'http://www.hootop.com',
- 'Cookie':'__51cke__=; every_24h_tips=true; __tins__21745431={"sid": 1722093845023, "vd": 3, "expires": 1722095681560}; __51laig__=17',
-
-
- },
- //class_parse:'.stui-header__menu .dropdown li:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
- searchUrl:'/search.php',
-}
\ No newline at end of file
diff --git a/drpy_js/短剧TV网.js b/drpy_js/短剧TV网.js
deleted file mode 100644
index bb078f3..0000000
--- a/drpy_js/短剧TV网.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi7pppblm74yLuS6jOe6pywgewogICAgdGFiczogJy5zdHVpLXBhbm5lbF9faGVhZCBoMycsCiAgICBpbWc6ICcuc3R1aS1jb250ZW50X190aHVtYiBpbWcmJnNyYycsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ+mmluWbvjInLAogICAgdGl0bGU6ICfnn63liadUVue9kScsCiAgICBob3N0OiAnaHR0cDovL3d3dy5kdWFuanV0di5jYycsCiAgICB1cmw6ICcvdm9kdHlwZS9meWNsYXNzLWZ5cGFnZS5odG1sJywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAg5o6o6I2QOiAndWwuc3R1aS12b2RsaXN0LmNsZWFyZml4O2xpOyo7KjsqOyonLAogICAgZG91YmxlOiB0cnVlLAogICAgdGFiX3JlbW92ZTpbJ2dzeXVuJywn5YWJ6YCfbTN1OCddLAogICAg5LiA57qnOiAnLnN0dWktdm9kbGlzdCBsaTthJiZ0aXRsZTtpbWcmJnNyYzsucGljLXRleHQmJlRleHQ7YSYmaHJlZicsCiAgICDmkJzntKI6ICd1bC5zdHVpLXZvZGxpc3RfX21lZGlhOmVxKDApLHVsLnN0dWktdm9kbGlzdDplcSgwKSwjc2VhcmNoTGlzdCBsaTthJiZ0aXRsZTsqOy50ZXh0LW11dGVkJiZUZXh0O2EmJmhyZWY7LnRleHQtbXV0ZWQ6ZXEoLTEpJiZUZXh0JywKfQ==
\ No newline at end of file
diff --git a/drpy_js/短剧在线.js b/drpy_js/短剧在线.js
deleted file mode 100644
index 944f0d4..0000000
--- a/drpy_js/短剧在线.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/61VP2/TQBTf+RQngWI7xHZTqg4JgYUBMcBQmBCKLvZzfO3Z596dU0IVqVupBKgfoAiJpV2QGBhQF75MQ/gY3J2dxk5CYeCW+P37vd97995lhDniOQXUQ4e3kDqSSAodZM0+fZmenE/PLmaXP6yWMcVMSGWJpcxEx/fDHKe7uTcAIUuHnFNl90csFDE78KNxQLEQbnmicYaHoD68WCa0DBGAeRC/WAQa2W82Xfcf4vBAc90sVPs5CfZ2jL6DNgpdRKgEXriVKsOpn2EudJleikduAmnuEgmJaDQo6eJG4zm8lvo35hB1vaZve82HTjV/RvF4DiJ5DoWW4jfjDrqzKzzJdiQn6dC2HdR7UPbWuIBEGkc1/MnOs6eewbA57OeqjzZJs1w6XoJlENs+N2mA91X2nqFw33detl85NTTVdQWmMT31WTNFnCVzm/6+NpII2UYLacDHmUS9HrLallMhWl6oCs9TEAHOwFai0712mCCgAtZDbf4NaoAFbG89goCFBW4VeFEDG9rW9O3x7OR4evZ1+vGoY6G7qE5D51caj6QBzUMQtuUl2ZblLBPQ/dDtXN94hdBaCpgfDiHhEKjRj7AquLXW6YDI+DHgELgoBmLFa1LTOI5HWYAlYWm3ZvB9XbQm6tT0ZjL0lu6+1qNc7Jp2a6FyDDcmy1dzuIqw1OSJUw4uSYgqcLuQfn64+PX+VG9HwkL1OLiUCNmdC+WiVEW9Kubh6JJk2GiEWGJX8KAW4kq1U/XNKncpZLlZ0MUeXX0/ml2eVwiYnOj/pby6fGcSLDo0f/fidhngSTxUhad7hWwt7l0lXKLmZiRoNGpEKv5qKAMdMCIhMJekESvq6cC+veHM062ztm+0bt5oveesEA9YKiGVhgsL+6W44ibxQFQKVKJBrXv0dW+VV0hGrisSTOkKjp6aKlDxmJlh0gRvk1BR9ETAGaXuNRlcIkzKWTw9m337/MdRKP4Hbp6IojsCOMF0ZRomvwHsX6eZAgcAAA==
\ No newline at end of file
diff --git a/drpy_js/短剧天堂.js b/drpy_js/短剧天堂.js
deleted file mode 100644
index 6f22d25..0000000
--- a/drpy_js/短剧天堂.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICBhdXRob3I6ICflsI/lj6/kuZAvMjQwNTI1L+esrOS4gOeJiCcsCiAgICB0aXRsZTogJ+efreWJp+WkqeWggicsCiAgICBob3N0OiAnaHR0cHM6Ly9kdWFuanV0dC50dicsCiAgICBob3N0SnM6ICcnLAogICAgaGVhZGVyczogeydVc2VyLUFnZW50JzogJ01PQklMRV9VQSd9LAogICAg57yW56CBOiAndXRmLTgnLAogICAgdGltZW91dDogNTAwMCwKCiAgICBob21lVXJsOiAnLycsCiAgICB1cmw6ICcvdm9kc2hvdy9meWZpbHRlci0tLWZ5cGFnZS0tLS5odG1sJywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmNhdGVJZH19LS17e2ZsLmJ5fX0tLS17e2ZsLmxldHRlcn19JywKICAgIGRldGFpbFVybDogJycsCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaGFibGU6IDEsCiAgICBxdWlja1NlYXJjaDogMSwKICAgIGZpbHRlcmFibGU6IDEsCgogICAgY2xhc3NfbmFtZTogJ+mAhuiirSgx57uEKSbpg73luIIoMue7hCkm56We5Yy7KDPnu4QpJuiEkea0nig057uEKScsCiAgICBjbGFzc191cmw6ICcxJjIwJjI1JjMwJywKICAgIGZpbHRlcl9kZWY6IHsKICAgICAgICAxOiB7Y2F0ZUlkOiAnMSd9LAogICAgICAgIDIwOiB7Y2F0ZUlkOiAnMjAnfSwKICAgICAgICAyNToge2NhdGVJZDogJzI1J30sCiAgICAgICAgMzA6IHtjYXRlSWQ6ICczMCd9CiAgICB9LAoKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBwYXJzZV91cmw6ICcnLAogICAgbGF6eTogYGpzOgp2YXIga2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwp2YXIga3VybCA9IGtjb2RlLnVybDsKaW5wdXQgPSB7CnBhcnNlOiAwLCB1cmw6IGt1cmwsIGhlYWRlcjogeyJVc2VyLUFnZW50IjogJ01PQklMRV9VQScsICJSZWZlcmVyIjoiaHR0cHM6Ly9kdWFuanV0dC50diJ9Cn1gLAoKICAgIGxpbWl0OiA5LAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyo7KjsqOyo7KicsCiAgICDkuIDnuqc6ICcubXl1aS12b2RsaXN0IGxpO2EmJnRpdGxlO2EmJmRhdGEtb3JpZ2luYWw7LnRleHQtcmlnaHQmJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKLy/lkI3np7A757G75Z6LCiAgICAgICAgInRpdGxlIjogImgxJiZUZXh0Oy5kYXRhOmVxKDApJiZhOmVxKDApJiZUZXh0IiwKLy/lm77niYcKICAgICAgICAiaW1nIjogIi5waWN0dXJlJiZpbWcmJmRhdGEtb3JpZ2luYWwiLAovL+S4u+imgeaPj+i/sDvlubTku7075Zyw5Yy6O+a8lOWRmDvlr7zmvJQKICAgICAgICAiZGVzYyI6ICIuZGF0YTplcSgxKSYmVGV4dDsuZGF0YTplcSgwKSYmYTplcSgtMSkmJlRleHQ7LmRhdGE6ZXEoMCkmJmE6ZXEoLTIpJiZUZXh0Oy5kYXRhLS1zcGFuOmVxKDIpJiZUZXh0Oy5kYXRhLS1zcGFuOmVxKDMpJiZUZXh0IiwKLy/nroDku4sKICAgICAgICAiY29udGVudCI6ICIuZGF0YTplcSgtMSkmJlRleHQiLAovL+e6v+i3r+aVsOe7hAogICAgICAgICJ0YWJzIjogIi5uYXYtdGFiczpoYXMobGkpJiZhIiwKLy/nur/ot6/moIfpopgKICAgICAgICAidGFiX3RleHQiOiAiYm9keSYmVGV4dCIsCi8v5pKt5pS+5pWw57uEIOmAiembhuWIl+ihqAogICAgICAgICJsaXN0cyI6ICIubXl1aS1jb250ZW50X19saXN0OmVxKCNpZCkmJmEiLAovL+mAiembhuagh+mimAogICAgICAgICJsaXN0X3RleHQiOiAiYm9keSYmVGV4dCIsCi8v6YCJ6ZuG6ZO+5o6lCiAgICAgICAgImxpc3RfdXJsIjogImEmJmhyZWYiCiAgICB9LAogICAg5pCc57SiOiAnLm15dWktdm9kbGlzdF9fbWVkaWEgLnRodW1iOyo7KjsqOyonLAoKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUErM1dXMHNiUVJRSDhQZjlHUE9jUWt4TXJiNTVOOTd2VjN4STdVSkZhMEhYZ29SQTJrMVVxb2xXZ3JGUVkxc1ZZaUZld0lZMmkvaGxNcnVUYitHRy91ZU1KVzk1Qyt6YnptOTJ6OHpEK1hNMnFyRW0xcmFnUmRtS3ZzWGEyRkxFME1Odm1JK3RSZDdwN3RxNXMzaHV6MTEvaUt4dXVyQVFaV3N1VitMYjRtZWh5dTZpaWNWOC85akpmT1BYMzhFQll2SDEwUDY0Qnc2cXQ2OGVSZkV6dUptNHNwTnlNbWZnRUlzdHhueDB2VlhkTVBSMWRUMWV5Tm8zcVpycjhXUytZdVpSZ2dxM0E5cEpPaUFkSkoyUVRwSXVTQmRKTjZTYnBBZlNROUlMNlNYcGcvU1JoQ0Zoa241SVA4a0FaSUJrRURKSU1nUVpJaG1HREpPTVFFWklSaUdqSkdPUU1aSnh5RGpKQkdTQ1pCSXlTVElGbVNLWmhreVR6RUJtU0dZaHN5UnprRG1TZWNnOGlmOUZLNno2OUYrdnZONVNmV0tuajNqcG9LWlA3R3l4a3IxSEFXUFpmVlhXTFpkSzltMEdPMitYalEzVnpEY0p2cnVOblkybDkrdDY5Vmh0MGFleGdMK2VLSmtQL004bm1SbS9Ta2Y2dG15ZGkzemNOcE55VnlXTkgxeUljL0xBYzYvNVNpWE8zajF4TG5QU203MXNlZGxxbUd5RjZzaVcyK3g4MzVMOUhsTFp1c3lKdTEvU1g2cnppMGxoUGtodlVYNjR6NjlQcGI5U2FidElsYTBkNmExZW5ydzhOVXFlZ3ZYTUtwSDRZdC9MK1JGVXMwcjhQdUZYajlLZi9RK21FL3l2ekY5UVRTbkhMSWdmY2VscVB2RmtzV3dkUy9mbWs1ZW54c2lURm5zQzhVbnZia2dOQUFBPScKfQ==
\ No newline at end of file
diff --git a/drpy_js/矮人影视.js b/drpy_js/矮人影视.js
deleted file mode 100644
index 104f4f5..0000000
--- a/drpy_js/矮人影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/石榴影院.js b/drpy_js/石榴影院.js
deleted file mode 100644
index e5eee31..0000000
--- a/drpy_js/石榴影院.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var rule={
- title:'石榴电影',
- //host:'https://hei19.com',
- host:'https://hei17.com',
- // url:'/catalog?column=fyclass&sort=1&per_page=72&page=fypage',
- url: '/catalog?column=fyclassfyfilter&per_page=72&page=fypage&sort=1',
- // https://hei17.com/catalog?column=2&type=8&area=1&year=52&sort=1
- filterable:1,//是否启用分类筛选,
- filter_url:'&{{fl.class}}&{{fl.area}}&{{fl.year}}',
- filter: {
- "1":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"剧情","v":"type=1"},{"n":"惊悚","v":"type=2"},{"n":"动作","v":"type=5"},{"n":"科幻","v":"type=9"},{"n":"奇幻","v":"type=11"},{"n":"爱情","v":"type=24"},{"n":"喜剧","v":"type=26"},{"n":"冒险","v":"type=27"},{"n":"犯罪","v":"type=28"},{"n":"战争","v":"type=29"},{"n":"动画","v":"type=34"},{"n":"同性","v":"type=44"},{"n":"历史","v":"type=45"},{"n":"恐怖","v":"type=47"},{"n":"悬疑","v":"type=48"},{"n":"传记","v":"type=49"},{"n":"纪录片","v":"type=53"},{"n":"古装","v":"type=57"},{"n":"家庭","v":"type=58"},{"n":"古装","v":"type=57"},{"n":"伦理","v":"type=85"}]},{"key":"area","name":"地区","value":[{"n":"不限","v":""},{"n":"中国大陆","v":"area=1"},{"n":"中国香港","v":"area=3"},{"n":"美国","v":"area=6"},{"n":"韩国","v":"area=9"},{"n":"日本","v":"area=10"},{"n":"印度","v":"area=11"},{"n":"英国","v":"area=12"},{"n":"法国","v":"area=13"},{"n":"俄罗斯","v":"area=16"},{"n":"丹麦","v":"area=22"},{"n":"澳大利亚","v":"area=23"},{"n":"德国","v":"area=24"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"year=50"},{"n":"2022","v":"year=51"},{"n":"2021","v":"year=52"},{"n":"2020","v":"year=53"},{"n":"2019","v":"year=54"},{"n":"2018","v":"year=55"},{"n":"2017","v":"year=56"},{"n":"2016","v":"year=57"},{"n":"2015","v":"year=58"},{"n":"2014","v":"year=59"},{"n":"2013","v":"year=60"},{"n":"2012","v":"year=61"},{"n":"2011","v":"year=62"}]}],
- "2":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"爱情","v":"type=7"},{"n":"喜剧","v":"type=8"},{"n":"犯罪","v":"type=10"},{"n":"奇幻","v":"type=15"},{"n":"悬疑","v":"type=17"},{"n":"剧情","v":"type=18"},{"n":"科幻","v":"type=21"},{"n":"恐怖","v":"type=22"},{"n":"惊悚","v":"type=23"},{"n":"历史","v":"type=25"},{"n":"动作","v":"type=31"},{"n":"同性","v":"type=32"},{"n":"战争","v":"type=35"},{"n":"传记","v":"type=38"},{"n":"运动","v":"type=42"},{"n":"音乐","v":"type=43"},{"n":"冒险","v":"type=50"},{"n":"纪录片","v":"type=52"},{"n":"家庭","v":"type=59"},{"n":"古装","v":"type=76"}]},{"key":"area","name":"地区","value":[{"n":"不限","v":""},{"n":"中国大陆","v":"area=1"},{"n":"中国台湾","v":"area=2"},{"n":"中国香港","v":"area=3"},{"n":"美国","v":"area=6"},{"n":"韩国","v":"area=9"},{"n":"日本","v":"area=10"},{"n":"英国","v":"area=12"},{"n":"法国","v":"area=13"},{"n":"乌克兰","v":"area=17"},{"n":"西班牙","v":"area=18"},{"n":"泰国","v":"area=25"},{"n":"加拿大","v":"area=32"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"year=50"},{"n":"2022","v":"year=51"},{"n":"2021","v":"year=52"},{"n":"2020","v":"year=53"},{"n":"2019","v":"year=54"},{"n":"2018","v":"year=55"},{"n":"2017","v":"year=56"},{"n":"2016","v":"year=57"},{"n":"2015","v":"year=58"},{"n":"2014","v":"year=59"},{"n":"2013","v":"year=60"},{"n":"2012","v":"year=61"},{"n":"2011","v":"year=62"}]}],
- "3":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"选秀","v":"type=12"},{"n":"情感","v":"type=61"},{"n":"美食","v":"type=62"},{"n":"音乐","v":"type=63"},{"n":"真人秀","v":"type=77"},{"n":"喜剧","v":"type=79"},{"n":"奇幻","v":"type=80"},{"n":"冒险","v":"type=81"},{"n":"脱口秀","v":"type=82"},{"n":"爱情","v":"type=83"},{"n":"家庭","v":"type=84"},{"n":"歌舞","v":"type=88"}]},{"key":"area","name":"地区","value":[{"n":"不限","v":""},{"n":"中国大陆","v":"area=1"},{"n":"中国台湾","v":"area=2"},{"n":"美国","v":"area=6"},{"n":"韩国","v":"area=9"},{"n":"日本","v":"area=10"},{"n":"西班牙","v":"area=18"},{"n":"巴西","v":"area=20"},{"n":"德国","v":"area=24"},{"n":"墨西哥","v":"area=29"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"year=50"},{"n":"2022","v":"year=51"},{"n":"2021","v":"year=52"},{"n":"2020","v":"year=53"},{"n":"2019","v":"year=54"},{"n":"2018","v":"year=55"},{"n":"2017","v":"year=56"},{"n":"2016","v":"year=57"},{"n":"2015","v":"year=58"},{"n":"2014","v":"year=59"},{"n":"2009","v":"year=32"},{"n":"2008","v":"year=33"},{"n":"2007","v":"year=34"}]}],
- "4":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"国漫","v":"type=13"},{"n":"日漫","v":"type=60"},{"n":"美漫","v":"type=65"},{"n":"动画","v":"type=66"},{"n":"奇幻","v":"type=67"},{"n":"冒险","v":"type=68"},{"n":"喜剧","v":"type=69"},{"n":"动作","v":"type=70"},{"n":"剧情","v":"type=71"},{"n":"古装","v":"type=72"},{"n":"同性","v":"type=73"},{"n":"武侠","v":"type=84"},{"n":"爱情","v":"type=75"},{"n":"惊悚","v":"type=92"}]},{"key":"area","name":"地区","value":[{"n":"不限","v":""},{"n":"中国大陆","v":"area=1"},{"n":"美国","v":"area=6"},{"n":"日本","v":"area=10"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"year=50"},{"n":"2022","v":"year=51"},{"n":"2021","v":"year=52"},{"n":"2020","v":"year=53"},{"n":"2019","v":"year=54"},{"n":"2018","v":"year=55"},{"n":"2017","v":"year=56"},{"n":"2016","v":"year=57"},{"n":"2015","v":"year=58"},{"n":"2014","v":"year=59"},{"n":"2013","v":"year=60"},{"n":"2012","v":"year=61"},{"n":"2011","v":"year=62"}]}]
- },
- class_name:'电影&连续剧&综艺&动漫',
- class_url:'1&2&3&4',
- searchUrl:'/search?type=1&keywords=**&page=fypage',
- searchable:2,//是否启用全局搜索,
- quickSearch:0,//是否启用快速搜索,
- headers:{//网站的请求头,完整支持所有的,常带ua和cookies
- 'User-Agent':'Dalvik/2.1.0 (Linux; U; Android 6.0; NEM-AL10 Build/HONORNEM-AL10) iPhone/8.0',
- 'Cookie':'_ga=GA1.1.514069628.1721637839; _ga_KE8Y66ZM58=GS1.1.1721637839.1.1.1721639171.0.0.0'
- // "Cookie": "searchneed=ok"
- },
-// class_parse:'.nav li;a&&Text;a&&href;./(\\d+)',
- play_parse:true,
- play_json:[{re:'*', json:{jx:0, parse:0}}],
-// lazy:'',
- lazy:'js:let ep=input.match(/ep=(\\d+)/)[1];let html=request(input);let jsonA=jsp.pdfh(html,"#__NEXT_DATA__&&Html");let data=JSON.parse(jsonA).props.pageProps.videoDetail.videoepisode.data;let realUrl=data.filter(function(it){return it.episode==ep})[0].url;input=realUrl;',
- limit:6,
- // double:true, // 推荐内容是否双层定位
- 推荐:'.media-list-1 li;a&&title;img&&src;.tag&&Text;a&&href',
- // 推荐:'js:let d=[];let html=request(input);let jsonA=JSON.parse(html.match(/__NEXT_DATA__.*?({.*})/)[1]);print(jsonA);jsonA=jsonA.props.pageProps.rankSectionData;jsonA.forEach(function(it){d.push({title:it.name,img:it.cover,url:"https://hei17.com/detail/"+it.id,desc:it.tag})});setResult(d);',
- 一级:'.media-list-2 li;a&&title;img&&src;.tag&&Text;a&&href',
- // 一级:'js:let d=[];let html=request(input);let jsonA=JSON.parse(html.match(/__NEXT_DATA__.*?({.*})/)[1]);print(jsonA);jsonA=jsonA.props.pageProps.mediaData.data;jsonA.forEach(function(it){d.push({title:it.name,img:it.cover,url:"https://hei17.com/detail/"+it.id,desc:it.tag})});setResult(d);',
- 二级:{
- "title":".video-name&&Text;.video-desc-item div:lt(3)&&Text",
- "img":"img&&src",
- "desc":";;;.video-desc-starring&&Text;.video-desc-director&&Text",
- "content":".video-desc-single&&Text",
- "tabs":".play-box-mobile h2",
- "lists":".play-list:eq(#id) li"
- },
- // 搜索:'.hl-list-wrap&&ul&&li;.hl-item-thumb&&title;.hl-lazy&&data-original;.hl-pic-text&&Text;a&&href',
- 搜索:'js:let d=[];let html=request(input);let jsonA=JSON.parse(html.match(/__NEXT_DATA__.*?({.*})/)[1]);print(jsonA);jsonA=jsonA.props.pageProps.searchMovieList.data;jsonA.forEach(function(it){d.push({title:it.name,img:it.pic,url:"https://hei17.com/detail/"+it.id,desc:it.resolution})});setResult(d);',
-}
\ No newline at end of file
diff --git a/drpy_js/磁力熊[磁].js b/drpy_js/磁力熊[磁].js
deleted file mode 100644
index f9cf7cf..0000000
--- a/drpy_js/磁力熊[磁].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/神仙影视.js b/drpy_js/神仙影视.js
deleted file mode 100644
index c5f93a0..0000000
--- a/drpy_js/神仙影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/神马影院[自动].js b/drpy_js/神马影院[自动].js
deleted file mode 100644
index 229076e..0000000
--- a/drpy_js/神马影院[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogIHRpdGxlOiAi56We6ams5b2x6ZmiIiwKICDmqKHmnb86Im14cHJvIiwKICBob3N0OiAiaHR0cDovL2Jpc28uY2MiLAogIHVybDogIi9zaG93L2Z5ZmlsdGVyLmh0bWwiLAogIHNlYXJjaFVybDogIi9zZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwiLAogIGZpbHRlcmFibGU6IDEsCiAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQSsxWlcwOGJSeGo5TDM1T3BWMFRrcEMzM08vM2U2bzhSQlZTbzdhcDFLU1ZxaWdTTnhPYkpCZ1FzVU14RUJyQWhHQXdoQkJZeC9qUGVHYnRmNUcxNTd0TldsWldJVldWN3B2UE9mNW01L3ZtZG5iMlVjeU5IZnoyVWV5SHp0OWpCMlArU2tsTlBvM3RpZDIvKzFPbnhML2QvZkhYenVZZjd3ZTBTc3pYZStjYmRBRGMyT005UUEvTVY4czVQL1VFbEgyc1pISXFsV2RsUHlsK2NrWDNKbGc1d0VwK1dHMldXT2tnUlhjUDZhNE1LNjdERDBybHJlWmM3cDFPdnF4NktTSEYrVkhlZ2lxL1lDa3VjdHBhOGtmZnEvSUtTa0hVbllab0NtYWV4d1VqSEZLd3o2b0NMQUM3THFBQnNQTUhEWUE5QnRpbUFYWkZzVTBEN01KaG5BRjI1ZkI1QnFCV0s4eXBad3VnQWFEbkRTejdaZFFBaUg3Nm95WHVad09RTnZ1RSt3bUErbEtZcTI2OXdyNFlRSEg5SS9XeE54aG5BTVZOTGdROXh6Z0RXcW1uN2xuME04T29HVUJhNzREdStRTTFBeWozVWxvbE5qQjNBMUNyVDR6b2w3T2dBYUEyTTA5cUtRL2JOR0M3dWNpWS9wR2VxYjJtVVRTQXRNRitsVjVGelFBYXhjcFFNQVk0aWdad1ZYTjZZcGlxMmdTazlWWDh0NWdKQUtwQWVkZ3Y1YXdPVzVTMWpISkY5Y3dUeXdoeFM4dG9KbDhmNjhkT0dFQ2xuaHZURzh0WWFnTzRXRVc5dVVYRmFnTHEvTmFnR2k5anR3MmdJWHIzZ2pVQVZNaW5LNndCb0xqc3JNNHRZcHdCMU0rcE54d0hnSWY5QTJzQXVDOUYyWmVpRmZlOHFMdzVqRE9BNHZyU1FhVlVFbGNMWThwa3R1S25DMzVxREpNaHpFdjRsWDVhQ2NKb0ZTUEdmMVFyZlg0NXF6TTRBSXlwamNSNnRZUkxENENjR0xYbFFtMitpeWNHNFpZbXhuZzUrRDgyYm9BWUtOWUEwT0N2enJBR2dBWXFXMWJQc3l3ekZrTXBaQVBFRkdBTmdKaFdRak5BVEFHUmlRR2loR3FwbDB2WUFOYmEybHlybHNwaWJTRnVwWVJ4Sjc0WFQ3N0dUOEczTWQ4bStUanpjY203ekx1U2Q1aDNCTzkyRU85MlNQNEE4d2NrdjUvNS9aTGZ4L3creWJjejN5NTV6dGVWK2JxY3J5dnpkVGxmViticmNyNnV6TmZsZkYyWnI4UDVPakpmaC9OMVpMNE81K1hJdkJ6T3k1RjVPWnhYOE5PYUlJV3NYbjR1SmdqaXp5WUkwWEtDSEFMaUVER0hnVGxNekJGZ2poQnpGSmlqeEJ3RDVoZ3h4NEU1VHN3SllFNFFjeEtZazhTY0F1WVVNYWVCT1UzTUdXRE9FSE1XbUxQRW5BUG1IREhuZ1RsUHpBVmdMaEJ6RVppTHhGd0M1aEl4bDRHNVRNd1ZZSzRRY3hXWXE4UmNBK1lhTWRlQnVVN01EV0J1RUhNVG1KdkUzQUxtRmpHM2dibE5qUE1OemtYSG1paDZjRVI1YVo0b2hPMkpvclByOWV3YWl3SDE4RjRRUUtlQzUrbmlxS1YvZisvaEE5NmFsL3RVc3QvU0gzejM4eStkamI3YzJST0w3L0I5UmRqK3FRTDc3elplMU1GUlVmWHlMSW4xSHZpSHdDa0lpYmVJWUR0dkhOd3M4ZXJUaS9tR2gyQ0pGNngrLzBITlpGaUtPN3Y0ZmhIaUJzTTh2YkdrcW50ZDllSUFXRlFyN3k5cWFWMTVkR0laME9KN3diYnZMMkh2QldIdkwySE9OOHluVnplbjJma0NZTytmMEdQb2F3RFE4MTcwODdzR0FPR0t1V1lBV2pWRE8zUEovWW5nLzJUam02QVY5L2xQSFhTWTJ3MTMxOXM3MmxCM25Ta0dCbFJOVEdNbzRjaHIvc1ZyUnA0eEZubkd5RE5HbnZGLzRobmJkdWdaTFc4WUhKNSs2U1BmMG9tdHpIaEFXeFVPc1drZWJWVTR3YVpKdE5YMjNUT0Q5YTZVbisvQ284SUFhV2I2cG9TWkNRQlZkcWxTS3lieDhES0E0a1lLZWdDdi93QndLUko2QTQwVkFENjIzbFUzaCtqWWFnTGhEZXF2c1M4QVNQTVcxTklrYWdiUTg4Wlh4Y1dwQVJRM09xWFg2T0xiQUI2VURaMU1WNzBSdmdDMUtLckQycCtCUGNRNkdFQnRyUFRVdXA5aHRBSC9pbkV6TTRxNjNRVDJYT1R6dndIc3VZYWFBWkVWaXF3US9veXNVR1NGSWl2MFZWcWh2VHUwUXJ5b2pSVUt6a2o5OFMwdUR0NDZ6Q3UvcmZJQ05CdXRyWGJzbnRrSk16UmhYOEg5M2tKdEdrMFNBR3B6Y040ZndzK01BRWdibXZRWDZTdXhBWHgrYi85VnVqWTBVUnZFV3pnQTFPYXJhVFZPaDVZQjFHYklMWm5PZWVKTHR3SDB2SkR2dkdFM2dxb1lsR2tObjJlQTFHYmZDUzBBVk0rWnJlcEgvRUlPZ09JR3AxUnlIT01NNERtK3FncG9FQUZRbStNRGVneU5IZ0N1eTRxcVpLa3VUU0NtM0JlOFhXdGVHYlBuYVFCN0piRDdrRGRoZjJ2RVd1eHdaTklpa3hhWnRNaWt4U0tUOXJXWnRIWmgwbmE2dDBWN1ZiUlhSWHRWdEZkOXNidjErQzV1VnBFUml6YTNhSE9MTnJmL3h1YjIrQk0xMS85ZUhqTUFBQT09IiwKICBmaWx0ZXJfdXJsOiAie3tmbC7nsbvlnot9fS17e2ZsLuWcsOWMun19LXt7Zmwu5o6S5bqPfX0te3tmbC7liafmg4V9fS17e2ZsLuivreiogH19LXt7Zmwu5a2X5q+NfX0tLS1meXBhZ2UtLS17e2ZsLuW5tOS7vX19IiwKICBmaWx0ZXJfZGVmOiB7CiAgICAxOiB7CiAgICAgIOexu+WeizogIjEiCiAgICB9LAogICAgMjogewogICAgICDnsbvlnos6ICIyIgogICAgfSwKICAgIDM6IHsKICAgICAg57G75Z6LOiAiMyIKICAgIH0sCiAgICA0OiB7CiAgICAgIOexu+WeizogIjQiCiAgICB9LAogICAgNTogewogICAgICDnsbvlnos6ICI1IgogICAgfSwKICAgIDMyOiB7CiAgICAgIOexu+WeizogIjMyIgogICAgfQogIH0sCiAgY2xhc3NfcGFyc2U6ICIubmF2YmFyLWl0ZW1zJiZsaTthJiZUZXh0O2EmJmhyZWY7KFxcZCspIiwKICBjYXRlX2V4Y2x1ZGU6ICLotYTorq985piO5pifIiwKICB0YWJfZXhjbHVkZTogIuaOkuW6jyIsCiAg5pCc57SiOiAnYm9keSAubW9kdWxlLWl0ZW07Lm1vZHVsZS1jYXJkLWl0ZW0tdGl0bGUmJlRleHQ7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0O2EmJmhyZWY7Lm1vZHVsZS1jYXJkLWl0ZW0taW5mbyYmVGV4dCcsCn0=
\ No newline at end of file
diff --git a/drpy_js/神马电影[搜].js b/drpy_js/神马电影[搜].js
deleted file mode 100644
index d2c7da1..0000000
--- a/drpy_js/神马电影[搜].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/1WQwUrEMBCG7z5FTl1dbYPIIrQs+xJ6ckVCM22yJk1I0m0X8R08eFRBQVDwIuhRfBpbfAuz3aJ1LsnMfF9+yJIYZEoBaIoutpCv5um+uf2M0UjWqoDJaK+bOu4E+GH7ePf9/NJev399vJ40Vzen/Z4p6/yaOadtjHFVVdHB4eRcRqmSPVIa4Qm8VNQyVeFslQpibdhXttIkB3+JmJOiVzriTBNj19mliHLDacgdSBsEgickCI6gduuTGciS7fmc7u4MX6DgCBfHv9Gb3odzOsQwRhaISdkfuelxOKxOmVV0Oh734j+LFxTqSDONyYLU2JZ5DtbNJKfT/WBo+Y9r3x68srCqiAW3LimIhETzNIEi4dRzlz/B8Te4mgEAAA==
\ No newline at end of file
diff --git a/drpy_js/种子音乐[听].js b/drpy_js/种子音乐[听].js
deleted file mode 100644
index d8f76cd..0000000
--- a/drpy_js/种子音乐[听].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/31Ty24TMRTd8xUWqmYmIbH7kFjMaChFYgECKlG6aqvKnblJ3HoetT2kSRWJHUKiKHtASEioLGAFC+iCr2kT+AvssZtGqsAb29fH597jc/2cCiQqDihGxzeQHoopDiHyp6cnF1/Hfz58O/853roYf9nxW/V5r5BKH/eUKmVISL/fx8Ph0vIKTopsBslgU3CNIpxJRTI5zHBPZasl7UK85FCVRXQGCadSXp13BmZyIAlUJD26Z0patqHDiiUHG3U8RIsuI9AUhAydBjP8TQmivdaFXPk6z+P1ew8e3d/dXHPENURABwQI/196iAOP7FQXultSIc0DYSpZCu0M8qptZGJdZ54D97ytniZuxia4E1HPewZHyswmHOGgBjcbRrHjLzkdXPIqUYGNcjochGhhX2JVbCjB8m4QNFB8Z04ky8tKaevqGQvQRAkExPBtk2C7f6uxbdKQFvLpPj0iqzRRsSzyLss7hcfSeGHJ4zTvxn4jmpHyohvUhPMxUCgrV3SqhxvrT3BdayDgsAKpHLiBU6oo1qjoWn3HTtxiy9quQS1nWli3H3YOjuzdUcM9AcuY7rbbdkcIQhdvf01fvZy8/zQ5G4f+3afWwfi/9k3efP59Mg7RzeZNGzj/8WJ6dmo8zIo9xqH2z/Pmd22mIIuweaucZuBMxMYTXtDU84zYthRJhGmleoWYQzmrXfbzs9c2WdOfybBtbf6IT+yarB7AIG42vet/QOMn43fT7x/DGcXVff2D5pytw55jssbaCykoyri7YNpD/zuWmt7gl49kUyB/X2sOjbooM5qikiWRrFcs1djRX63TH1EyBAAA
\ No newline at end of file
diff --git a/drpy_js/童趣[儿].js b/drpy_js/童趣[儿].js
deleted file mode 100644
index 35fbb7d..0000000
--- a/drpy_js/童趣[儿].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/笔趣阁13[书].js b/drpy_js/笔趣阁13[书].js
deleted file mode 100644
index b3b919b..0000000
--- a/drpy_js/笔趣阁13[书].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflsI/or7QnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+eslOi2o+mYgTEzW+S5pl0nLAogICAgaG9zdDogJ2h0dHBzOi8vbS4xM2JxZy5jYycsCiAgICB1cmw6ICcvZnljbGFzcy9meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvdXNlci9obS5odG1sP3E9KionLAogICAgc2VhcmNoYWJsZTogMCwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMCwKICAgIGZpbHRlcjogJycsCiAgICBmaWx0ZXJfdXJsOiAnJywKICAgIGZpbHRlcl9kZWY6IHt9LAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScsCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX3BhcnNlOiAnZGl2Lm5hdiYmdWwmJmxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS8nLAogICAgY2F0ZV9leGNsdWRlOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IHRpdGxlID0gcGRmaChodG1sLCAndGl0bGUmJlRleHQnKS5zcGxpdCgnXycpWzBdOwogICAgICAgIC8vIGxldCBjb250ZW50ID0gcGRmaChodG1sLCAnI2NoYXB0ZXJjb250ZW50JiZIdG1sJykucmVwbGFjZSgvPGJyPi9nLCAnXG4nKS5yZXBsYWNlKC9cblxuL2csICdcbicpOwogICAgICAgIGxldCBjb250ZW50ID0gcGRmaChodG1sLCAnI2NoYXB0ZXJjb250ZW50JiZIdG1sJykucmVwbGFjZSgvXG4vZywgIiIpLnNwbGl0KCI8YnI+IikuZmlsdGVyKHYgPT4gdikuc2xpY2UoMCwgLTEpLmpvaW4oIlxuIik7CiAgICAgICAgbGV0IHJldCA9IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgdGl0bGUsCiAgICAgICAgICAgIGNvbnRlbnQKICAgICAgICB9KTsKICAgICAgICBpbnB1dCA9IHtwYXJzZTogMCwgdXJsOiAnbm92ZWw6Ly8nICsgcmV0LCBqczogJyd9OwogICAgfSksCiAgICBkb3VibGU6IHRydWUsCiAgICAvLyDmjqjojZA6ICfliJfooagxO+WIl+ihqDI75qCH6aKYO+WbvueJhzvmj4/ov7A76ZO+5o6lO+ivpuaDhScsCiAgICDkuIDnuqc6ICdkaXYuaXRlbTtpbWcmJmFsdDtpbWcmJnNyYztzcGFuJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAg6YeN5a6a5ZCROiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgICAgICBsb2coJ+aJp+ihjOmHjeWumuWQkTonICsgTVlfVVJMKTsKICAgICAgICAgICAgLy8gbGV0IGh0bWwgPSByZXF1ZXN0KE1ZX1VSTCk7CiAgICAgICAgICAgIE1ZX1VSTCA9IHBkKGh0bWwsICcuYm9va19tb3JlJiZhJiZocmVmJywgTVlfVVJMKTsKICAgICAgICAgICAgbG9nKCfkuoznuqfph43lrprlkJHliLA6JyArIE1ZX1VSTCk7CiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KE1ZX1VSTCk7CiAgICAgICAgfSksCiAgICAgICAgdGl0bGU6ICdbcHJvcGVydHkkPWJvb2tfbmFtZV0mJmNvbnRlbnQnLAogICAgICAgIGltZzogJ2Rpdi5jb3ZlciYmaW1nJiZzcmMnLAogICAgICAgIGRlc2M6ICfkuLvopoHkv6Hmga87W3Byb3BlcnR5JD11cGRhdGVfdGltZV0mJmNvbnRlbnQ75Zyw5Yy6O+a8lOWRmDtbcHJvcGVydHkkPWF1dGhvcl0mJmNvbnRlbnQnLAogICAgICAgIGNvbnRlbnQ6ICdbcHJvcGVydHkkPWRlc2NyaXB0aW9uXSYmY29udGVudCcsCiAgICAgICAgdGFiczogJy50aXRsZScsCiAgICAgICAgbGlzdHM6ICdkbCYmZGQ6Z3QoMCkmJmEnLAogICAgICAgIHRhYl90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF91cmw6ICdhJiZocmVmJywKICAgICAgICBsaXN0X3VybF9wcmVmaXg6ICcnLAogICAgfSwKLy8gICDmkJzntKI6J+WIl+ihqDvmoIfpopg75Zu+54mHO+aPj+i/sDvpk77mjqU76K+m5oOFJywKfQ==
\ No newline at end of file
diff --git a/drpy_js/笔趣阁[书].js b/drpy_js/笔趣阁[书].js
deleted file mode 100644
index 30b347f..0000000
--- a/drpy_js/笔趣阁[书].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflsI/or7QnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+eslOi2o+mYgVvkuaZdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5icWthLmNjJywKICAgIHVybDogJy9qc29uP3NvcnRpZD1meWNsYXNzJnBhZ2U9ZnlwYWdlJywKICAgIGNsYXNzX25hbWU6ICfnjoTlubsm5q2m5L6gJumDveW4gibljoblj7Im572R5ri4JuenkeW5uyblpbPnlJ8m5a6M5pysJywKICAgIGNsYXNzX3VybDogJzEmMiYzJjQmNSY2JjcmMCcsCiAgICBzZWFyY2hVcmw6ICcvdXNlci9zZWFyY2guaHRtbD9xPSoqJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICcnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNhdGVfZXhjbHVkZTogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgLy8g5Zu+54mH5pu/5o2iOiRqcy50b1N0cmluZygoKSA9PiB7bG9nKGlucHV0KTtpbnB1dCA9IGdldFByb3h5VXJsKCkrICcmdXJsPScraW5wdXQrJyZ0eXBlPWltZyc7fSksCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IHRpdGxlID0gcGRmaChodG1sLCAnLmNvbnRlbnQmJmgxJiZUZXh0Jyk7CiAgICAgICAgLy8gbGV0IGNvbnRlbnQgPSBwZGZoKGh0bWwsICcjY2hhcHRlcmNvbnRlbnQmJkh0bWwnKS5yZXBsYWNlKC88YnI+L2csICdcbicpLnJlcGxhY2UoL1xuXG4vZywgJ1xuJyk7CiAgICAgICAgbGV0IGNvbnRlbnQgPSBwZGZoKGh0bWwsICcjY2hhcHRlcmNvbnRlbnQmJkh0bWwnKS5yZXBsYWNlKC9cbi9nLCAiIikuc3BsaXQoIjxicj4iKS5maWx0ZXIodiA9PiB2KS5zbGljZSgwLCAtMikuam9pbigiXG4iKTsKICAgICAgICBsZXQgcmV0ID0gSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICB0aXRsZSwKICAgICAgICAgICAgY29udGVudAogICAgICAgIH0pOwogICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6ICdub3ZlbDovLycgKyByZXQsIGpzOiAnJ307CiAgICB9KSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICDmjqjojZA6ICd1bDpndCgwKSYmbGk7YSYmVGV4dDs7c3BhbjplcSgtMSkmJlRleHQ7YSYmaHJlZicsCiAgICDkuIDnuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgLy9sZXQgY29va2llID0gZ2V0SXRlbShSVUxFX0NLLCAnJyk7CiAgICAgICAgLy9sZXQgY29va2llID0gJyc7CiAgICAgICAgLy9sZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQse2hlYWRlcnM6e0Nvb2tpZTpjb29raWV9fSk7CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBqc29uLmZvckVhY2goaXQgPT4gewogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IGl0LmFydGljbGVuYW1lLAogICAgICAgICAgICAgICAgZGVzYzogaXQuYXV0aG9yLAogICAgICAgICAgICAgICAgaW1nOiBpdC51cmxfaW1nLAogICAgICAgICAgICAgICAgdXJsOiBpdC51cmxfbGlzdCwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0LmludHJvLAogICAgICAgICAgICB9KQogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICdoMSYmVGV4dCcsCiAgICAgICAgaW1nOiAnLmNvdmVyJiZpbWcmJnNyYycsCiAgICAgICAgZGVzYzogJ3NwYW4ubGFzdDplcSgtMSkmJlRleHQ7c3Bhbi5sYXN0JiZUZXh0Ozs7LnNtYWxsJiZzcGFuJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnLmludHJvJiZkZCYmVGV4dCcsCiAgICAgICAgdGFiczogJy5ybCcsCiAgICAgICAgbGlzdHM6ICcubGlzdG1haW4mJmRkOm5vdCgubW9yZSkmJmEnLAogICAgICAgIHRhYl90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF91cmw6ICdhJiZocmVmJywKICAgICAgICBsaXN0X3VybF9wcmVmaXg6ICcnLAogICAgfSwKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICAvL2xldCBjb29raWUgPSBnZXRJdGVtKFJVTEVfQ0ssICcnKTsKICAgICAgICAvL2xvZygn5YKo5a2Y55qEY29va2llOicgKyBjb29raWUpOwogICAgICAgIGxldCBjb29raWUgPSAnJzsKICAgICAgICBpZiAoIWNvb2tpZSkgewogICAgICAgICAgICBsZXQge2Nvb2tpZSwgaHRtbH0gPSByZXFDb29raWUoJ2h0dHBzOi8vd3d3LmJxa2EuY2MvdXNlci9obS5odG1sP3E9JyArIEtFWSwge30sIHRydWUKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbG9nKGNvb2tpZSk7CiAgICAgICAgICAgIC8vc2V0SXRlbShSVUxFX0NLLCBjb29raWUpOwogICAgICAgIH0KICAgICAgICBldmFsKHJ1bGUu5LiA57qnLnJlcGxhY2UoJ2pzOicsICcnKSk7CiAgICB9KSwKfQ==
\ No newline at end of file
diff --git a/drpy_js/第一韩漫[画].js b/drpy_js/第一韩漫[画].js
deleted file mode 100644
index 72a84ea..0000000
--- a/drpy_js/第一韩漫[画].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/5VVW2/cRBR+51eM3Mhrl93xhigB7SpI6UWkNAlSNhFCUbSdtWfXk8x6nJmxk02zUp94oYIK9RGB4IEKEYlW6gMk8G9y419wxvbe4krA+MH2Od+5+JzvHKdEIplwipbR0/cQnOs355fff9VAlas/f71+eV6pet7lX29uXn15cvni9OKPn09y+cnl629ufnubmWimOQWL69PTi9+f/f3DLwDZAcxupZrpQ6E0qEOtY9XwvMPDQxweayEi7It+gUkkB4hHYuZ1Bz4nStW6g5j0aKEPqCaMb+coMGM+4FhQaBUl0g8Lbf7i3b07oyQdk+N8LjpImL/fyuQNVM9lXcY1lTmsEIWUBFSqRlEacyrbisraSo9GugLB1sUx45x4i7iOnDUWJUdNtBIFUrAALeF6E23Qo0ShRXQvYTzw1jdXFj/acNFKHHP6Oe08ZtpbXPgQLywh5/Hq1vpaFXG2T9En1N8XLrofStGn3vwH4N5caF10GPSqRbpEspHlw6A3gRTfPMxvWSHbEemb9lycnV29fnn19bc3Pz63r56d50+VaWTeBUmifa9eg8sePy4UuJiTQTsmUoFHLROaSznrM2jxUvFGjgcNNLensBYtLVnUcxwXLX88VUZONQp1nwPtJD1IqNIOi+JEY0khgk8dy7OqyLJctzljw5nSYLOnYhwHXeIYH4DD0F8ZU31PHCHW71nu2Mgc3Cexk5oECrvQScEIgLYdEE1qQrIeiwgvhYN6QDQTZCLP8hyPy+h4XlGUgjqjk1XUiplvmG+h97MvwHuCRY5l25Y7i94DrlUqY9EwjzosUDBc12evALGnRNSYwyZ3nM2Cas7hbArh7ouUSrhDQ3U7FTxOOm3N+kY1npeLs+eZp8k3jGa4I4KBbd/JvG4Ab2x7ix7pyiRNqBrA7tw3UWw7q6GS/hQgoMoHBFYQFxBxtTZfcuKLSMMEGZg+0g/AogTRpGOKMclkSmdqqP6FYeasPWpttaBVO7vNGblprSle0VusYs60Y7GI6UeRluIB6BzL3ZnfLVQVt+Lu1G950XJwK97IN2wxcN2jehXG11n/or29ueY2S9AihU9bn23gjD2OkZhAWWvLBp7HRS8HlZXjj81oYSjPtCkJ02Y6Ytht2SIAClpzhohPvLmnkOjQSxk9hGeDM7Vus2CYv8LDE3f3f6QxRD7Rfogc6r6rMmBEcZ8qBWv9tuWE8+5ogWX3qxffXb/96T9sk6Do84yQSDnZFqEzs2pcWAE525UvWawb9MBZcG17FRhhTaWX+5hqEghGjIF/gR+uSDlYLtjCGeyuehXV5t1ZF7gr5EPih/kemi1OgONEhU65YsVQpvlsV0v6bBbN3xubXyz0NM2nv4wcD1yKSaJDIZWWhgnIyqw06amyUT7JaWmTlJHZlkuBMLNNdae6OqmGonqTqoRrJ3DH+234D7zTAwqJCAAA
\ No newline at end of file
diff --git a/drpy_js/策驰影院(自动).js b/drpy_js/策驰影院(自动).js
deleted file mode 100644
index 7b303b0..0000000
--- a/drpy_js/策驰影院(自动).js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/米爱影视.js b/drpy_js/米爱影视.js
deleted file mode 100644
index a51a10c..0000000
--- a/drpy_js/米爱影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/素白白.js b/drpy_js/素白白.js
deleted file mode 100644
index d5323c6..0000000
--- a/drpy_js/素白白.js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8g5Zyw5Z2A5Y+R5biD6aG1IGh0dHBzOi8vc3ViYWliYWkudmlwLwovLyDmkJzntKLmlbDlrZfpqozor4EKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTon57Sg55m955m9JywKICAgIC8vIGhvc3Q6J2h0dHBzOi8vd3d3LnN1YmFpYmFpeXMuY29tJywKICAgIGhvc3Q6J2h0dHBzOi8vc3ViYWliYWkudmlwJywKICAgIGhvc3RKczoncHJpbnQoSE9TVCk7bGV0IGh0bWw9cmVxdWVzdChIT1NULHtoZWFkZXJzOnsiVXNlci1BZ2VudCI6UENfVUF9fSk7bGV0IHNyYyA9IGpzcC5wZGZoKGh0bWwsIi5nbzplcSgwKSYmYSYmaHJlZiIpO3ByaW50KHNyYyk7SE9TVD1zcmMnLC8v572R6aG15Z+f5ZCN5qC55Yqo5oCB5oqT5Y+WanPku6PnoIHjgILpgJrov4dIT1NUPei1i+WAvAogICAgLy8gdXJsOicvZnljbGFzcy9wYWdlL2Z5cGFnZScsCiAgICB1cmw6Jy9meWNsYXNzZnlmaWx0ZXInLAogICAgZmlsdGVyYWJsZToxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDone3tmbC5hcmVhfX17e2ZsLnllYXJ9fXt7ZmwuY2xhc3N9fXt7ZmwuY2F0ZUlkfX0vcGFnZS9meXBhZ2UnLAogICAgZmlsdGVyOnsKICAgICAgICAibW92aWVfYnQiOlt7ImtleSI6ImNhdGVJZCIsIm5hbWUiOiLliIbnsbsiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7InYiOiIvbW92aWVfYnRfc2VyaWVzL2RvbmdtYW5qdSIsIm4iOiLliqjmvKvliacifSx7InYiOiIvbW92aWVfYnRfc2VyaWVzL2RvbmdtYW5keSIsIm4iOiLliqjmvKvnlLXlvbEifSx7InYiOiIvbW92aWVfYnRfc2VyaWVzL3lpbmR1ZHkiLCJuIjoi5Y2w5bqm55S15b2xIn0seyJ2IjoiL21vdmllX2J0X3Nlcmllcy9ndW9jaGFuanUiLCJuIjoi5Zu95Lqn5YmnIn0seyJ2IjoiL21vdmllX2J0X3Nlcmllcy9ndW9jaGFuZHkiLCJuIjoi5Zu95Lqn55S15b2xIn0seyJ2IjoiL21vdmllX2J0X3Nlcmllcy9yaWp1IiwibiI6IuaXpeWJpyJ9LHsidiI6Ii9tb3ZpZV9idF9zZXJpZXMvcmloYW5keSIsIm4iOiLml6Xpn6nnlLXlvbEifSx7InYiOiIvbW92aWVfYnRfc2VyaWVzL291bWVpanUiLCJuIjoi5qyn576O5YmnIn0seyJ2IjoiL21vdmllX2J0X3Nlcmllcy9vdW1laWR5IiwibiI6Iuasp+e+jueUteW9sSJ9LHsidiI6Ii9tb3ZpZV9idF9zZXJpZXMvdGFpanUiLCJuIjoi5rOw5YmnIn0seyJ2IjoiL21vdmllX2J0X3Nlcmllcy90aGFpZHkiLCJuIjoi5rOw5Zu955S15b2xIn0seyJ2IjoiL21vdmllX2J0X3Nlcmllcy9nYW5nanUiLCJuIjoi5riv5Y+w5YmnIn0seyJ2IjoiL21vdmllX2J0X3Nlcmllcy9nYW5ndGFpZHkiLCJuIjoi5riv5Y+w55S15b2xIn0seyJ2IjoiL21vdmllX2J0X3Nlcmllcy9kb2N1bWVudGFyeSIsIm4iOiLnuqrlvZXniYcifSx7InYiOiIvbW92aWVfYnRfc2VyaWVzL3pvbmd5aSIsIm4iOiLnu7zoiboifSx7InYiOiIvbW92aWVfYnRfc2VyaWVzL2hhbmp1IiwibiI6IumfqeWJpyJ9LHsidiI6Ii9tb3ZpZV9idF9zZXJpZXMveGlhbmdnYW5nZHkiLCJuIjoi6aaZ5riv57uP5YW455S15b2xIn1dfSx7ImtleSI6ImNsYXNzIiwibmFtZSI6Iuexu+WeiyIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL3BvcC1wb3B1bGFyIiwibiI6IlBPUOa1geihjCJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL2Jpb2dyYXBoeSIsIm4iOiLkvKDorrAifSx7InYiOiIvbW92aWVfYnRfdGFncy9jaGlsZCIsIm4iOiLlhL/nq6UifSx7InYiOiIvbW92aWVfYnRfdGFncy9hZHZlbnR1cmUiLCJuIjoi5YaS6ZmpIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvcGxvdCIsIm4iOiLliafmg4UifSx7InYiOiIvbW92aWVfYnRfdGFncy9hY3Rpb24iLCJuIjoi5Yqo5L2cIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvYW5pbWUiLCJuIjoi5Yqo5ryrIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvYW5pbWF0aW9uIiwibiI6IuWKqOeUuyJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL2hpc3RvcnkiLCJuIjoi5Y6G5Y+yIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvY29zdHVtZSIsIm4iOiLlj6Too4UifSx7InYiOiIvbW92aWVfYnRfdGFncy9hbnRpcXVpdHkiLCJuIjoi5Y+k6aOOIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvaG9tb3NleHVhbCIsIm4iOiLlkIzmgKcifSx7InYiOiIvbW92aWVfYnRfdGFncy9jb21lZHkiLCJuIjoi5Zac5YmnIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvZmFudGFzeSIsIm4iOiLlpYflubsifSx7InYiOiIvbW92aWVfYnRfdGFncy9mYW1pbHkiLCJuIjoi5a625bqtIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvdGVycm9yIiwibiI6IuaBkOaAliJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL3N1c3BlbnNlIiwibiI6IuaCrOeWkSJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL2Vyb3RpYyIsIm4iOiLmg4XoibIifSx7InYiOiIvbW92aWVfYnRfdGFncy90aHJpbGxlciIsIm4iOiLmg4rmgpoifSx7InYiOiIvbW92aWVfYnRfdGFncy9kcmFtYSIsIm4iOiLmiI/mm7IifSx7InYiOiIvbW92aWVfYnRfdGFncy93YXIiLCJuIjoi5oiY5LqJIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvbGF0aW4iLCJuIjoi5ouJ5LiBIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvZnVubnkiLCJuIjoi5pCe56yRIn0seyJ2IjoiL21vdmllX2J0X3RhZ3MvY2FtcHVzIiwibiI6IuagoeWbrSJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL3NvbmctYW5kLWRhbmNlIiwibiI6IuatjOiIniJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL21hcnRpYWwtYXJ0cyIsIm4iOiLmrabkvqAifSx7InYiOiIvbW92aWVfYnRfdGFncy9kaXNhc3RlciIsIm4iOiLngb7pmr4ifSx7InYiOiIvbW92aWVfYnRfdGFncy9sb3ZlIiwibiI6IueIseaDhSJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL2NyaW1lIiwibiI6IueKr+e9qiJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL2ZhbmN5IiwibiI6IueOhOW5uyJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL3JlYWxpdHktc2hvdyIsIm4iOiLnnJ/kurrnp4AifSx7InYiOiIvbW92aWVfYnRfdGFncy9zaG9ydC1maWxtIiwibiI6IuefreeJhyJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL2tlaHVhbiIsIm4iOiLnp5HlubsifSx7InYiOiIvbW92aWVfYnRfdGFncy9kb2N1bWVudGFyeSIsIm4iOiLnuqrlvZXniYcifSx7InYiOiIvbW92aWVfYnRfdGFncy90YWxrc2hvdyIsIm4iOiLohLHlj6Pnp4AifSx7InYiOiIvbW92aWVfYnRfdGFncy9zdGFnZWFydCIsIm4iOiLoiJ7lj7DoibrmnK8ifSx7InYiOiIvbW92aWVfYnRfdGFncy93ZXN0IiwibiI6Iuilv+mDqCJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL3Nwb3J0IiwibiI6Iui/kOWKqCJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL3lvdXRoIiwibiI6IumdkuaYpSJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL211c2ljIiwibiI6Iumfs+S5kCJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL2dob3N0IiwibiI6IumsvOaAqiJ9LHsidiI6Ii9tb3ZpZV9idF90YWdzL2JsYWNrLWZpbG0iLCJuIjoi6buR6Imy55S15b2xIn1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJ2IjoiL21vdmllX2J0X2NhdC9iaHV0YW4iLCJuIjoi5LiN5Li5In0seyJ2IjoiL21vdmllX2J0X2NhdC9jaGluYSIsIm4iOiLkuK3lm70ifSx7InYiOiIvbW92aWVfYnRfY2F0L2NoaW5hLXRhaXdhbiIsIm4iOiLkuK3lm73lj7Dmub4ifSx7InYiOiIvbW92aWVfYnRfY2F0L2NoaW5hLW1haW5sYW5kIiwibiI6IuS4reWbveWkp+mZhiJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvY2hpbmEtaG9uZ2tvbmciLCJuIjoi5Lit5Zu96aaZ5rivIn0seyJ2IjoiL21vdmllX2J0X2NhdC9kZW5tYXJrIiwibiI6IuS4uem6piJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvdWtyYWluZSIsIm4iOiLkuYzlhYvlhbAifSx7InYiOiIvbW92aWVfYnRfY2F0L3VydWd1YXkiLCJuIjoi5LmM5ouJ5ZytIn0seyJ2IjoiL21vdmllX2J0X2NhdC9pc3JhZWwiLCJuIjoi5Lul6Imy5YiXIn0seyJ2IjoiL21vdmllX2J0X2NhdC9pcmFxIiwibiI6IuS8iuaLieWFiyJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvaXJhbiIsIm4iOiLkvIrmnJcifSx7InYiOiIvbW92aWVfYnRfY2F0L3J1c3NpYSIsIm4iOiLkv4TnvZfmlq8ifSx7InYiOiIvbW92aWVfYnRfY2F0L2J1bGdhcmlhIiwibiI6IuS/neWKoOWIqeS6miJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvY3JvYXRpYSIsIm4iOiLlhYvnvZflnLDkupoifSx7InYiOiIvbW92aWVfYnRfY2F0L2ljZWxhbmQiLCJuIjoi5Yaw5bKbIn0seyJ2IjoiL21vdmllX2J0X2NhdC9jYW5hZGEiLCJuIjoi5Yqg5ou/5aSnIn0seyJ2IjoiL21vdmllX2J0X2NhdC9odW5nYXJ5IiwibiI6IuWMiOeJmeWIqSJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvc291dGgtYWZyaWNhIiwibiI6IuWNl+mdniJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvYm90c3dhbmEiLCJuIjoi5Y2a6Iyo55Om57qzIn0seyJ2IjoiL21vdmllX2J0X2NhdC9xYXRhciIsIm4iOiLljaHloZTlsJQifSx7InYiOiIvbW92aWVfYnRfY2F0L2x1eGVtYm91cmciLCJuIjoi5Y2i5qOu5aChIn0seyJ2IjoiL21vdmllX2J0X2NhdC9pbmRpYSIsIm4iOiLljbDluqYifSx7InYiOiIvbW92aWVfYnRfY2F0L2luZG9uZXNpYSIsIm4iOiLljbDluqblsLzopb/kupoifSx7InYiOiIvbW92aWVfYnRfY2F0L2themFraHN0YW4iLCJuIjoi5ZOI6JCo5YWL5pav5Z2mIn0seyJ2IjoiL21vdmllX2J0X2NhdC9jb2xvbWJpYSIsIm4iOiLlk6XkvKbmr5TkupoifSx7InYiOiIvbW92aWVfYnRfY2F0L3R1cmtleSIsIm4iOiLlnJ/ogLPlhbYifSx7InYiOiIvbW92aWVfYnRfY2F0L3NlcmJpYSIsIm4iOiLloZ7lsJTnu7TkupoifSx7InYiOiIvbW92aWVfYnRfY2F0L2N5cHJ1cyIsIm4iOiLloZ7mtabot6/mlq8ifSx7InYiOiIvbW92aWVfYnRfY2F0L21leGljbyIsIm4iOiLloqjopb/lk6UifSx7InYiOiIvbW92aWVfYnRfY2F0L2RvbWluaWNhIiwibiI6IuWkmuexs+WwvOWKoCJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvYXVzdHJpYSIsIm4iOiLlpaXlnLDliKkifSx7InYiOiIvbW92aWVfYnRfY2F0L3ZlbmV6dWVsYSIsIm4iOiLlp5TlhoXnkZ7mi4kifSx7InYiOiIvbW92aWVfYnRfY2F0L25pZ2VyaWEiLCJuIjoi5bC85pel5Yip5LqaIn0seyJ2IjoiL21vdmllX2J0X2NhdC/lt7Tln7rmlq/lnaYiLCJuIjoi5be05Z+65pav5Z2mIn0seyJ2IjoiL21vdmllX2J0X2NhdC9wYXJhZ3VheSIsIm4iOiLlt7Tmi4nlnK0ifSx7InYiOiIvbW92aWVfYnRfY2F0L2JyYXppbCIsIm4iOiLlt7Topb8ifSx7InYiOiIvbW92aWVfYnRfY2F0L2dyZWVjZSIsIm4iOiLluIzohYoifSx7InYiOiIvbW92aWVfYnRfY2F0L2dlcm1hbnkiLCJuIjoi5b635Zu9In0seyJ2IjoiL21vdmllX2J0X2NhdC9pdGFseSIsIm4iOiLmhI/lpKfliKkifSx7InYiOiIvbW92aWVfYnRfY2F0L2xhdHZpYSIsIm4iOiLmi4nohLHnu7TkupoifSx7InYiOiIvbW92aWVfYnRfY2F0L25vcndheSIsIm4iOiLmjKrlqIEifSx7InYiOiIvbW92aWVfYnRfY2F0L2NoZWNoIiwibiI6IuaNt+WFiyJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQv5pGp5rSb5ZOlIiwibiI6IuaRqea0m+WTpSJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQv5pav5rSb5LyQ5YWLIiwibiI6IuaWr+a0m+S8kOWFiyJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvc2xvdmVuaWEiLCJuIjoi5pav5rSb5paH5bC85LqaIn0seyJ2IjoiL21vdmllX2J0X2NhdC9zaW5nYXBvcmUiLCJuIjoi5paw5Yqg5Z2hIn0seyJ2IjoiL21vdmllX2J0X2NhdC96ZWFsYW5kIiwibiI6IuaWsOilv+WFsCJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvamFwYW4iLCJuIjoi5pel5pysIn0seyJ2IjoiL21vdmllX2J0X2NhdC9jaGlsZSIsIm4iOiLmmbrliKkifSx7InYiOiIvbW92aWVfYnRfY2F0L25vcnRoLWtvcmVhIiwibiI6IuacnemynCJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvY2FtYm9kaWEiLCJuIjoi5p+s5Z+U5a+oIn0seyJ2IjoiL21vdmllX2J0X2NhdC9nZW9yZ2lhIiwibiI6IuagvOmygeWQieS6miJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvYmVsZ2l1bSIsIm4iOiLmr5TliKnml7YifSx7InYiOiIvbW92aWVfYnRfY2F0L3NhdWRpLWFyYWJpYSIsIm4iOiLmspnnibnpmL/mi4nkvK8ifSx7InYiOiIvbW92aWVfYnRfY2F0L2ZyYW5jZSIsIm4iOiLms5Xlm70ifSx7InYiOiIvbW92aWVfYnRfY2F0L3BvbGFuZCIsIm4iOiLms6LlhbAifSx7InYiOiIvbW92aWVfYnRfY2F0L3B1ZXJ0b3JjbyIsIm4iOiLms6LlpJrpu47lkIQifSx7InYiOiIvbW92aWVfYnRfY2F0L2JvaGVpIiwibiI6Iuazoum7kSJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvdGhhaWxhbmQiLCJuIjoi5rOw5Zu9In0seyJ2IjoiL21vdmllX2J0X2NhdC9hdXN0cmFsaWEiLCJuIjoi5r6z5aSn5Yip5LqaIn0seyJ2IjoiL21vdmllX2J0X2NhdC9pcmVsYW5kIiwibiI6IueIseWwlOWFsCJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvZXN0b25pYSIsIm4iOiLniLHmspnlsLzkupoifSx7InYiOiIvbW92aWVfYnRfY2F0L3N3ZWRlbiIsIm4iOiLnkZ7lhbgifSx7InYiOiIvbW92aWVfYnRfY2F0L3N3aXR6ZXJsYW5kIiwibiI6IueRnuWjqyJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvYmVsYXJ1cyIsIm4iOiLnmb3kv4TnvZfmlq8ifSx7InYiOiIvbW92aWVfYnRfY2F0L3BlcnUiLCJuIjoi56eY6bKBIn0seyJ2IjoiL21vdmllX2J0X2NhdC90dW5pc2lhIiwibiI6IueqgeWwvOaWryJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvbGl0aHVhbmlhIiwibiI6Iueri+mZtuWumyJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvcm9tYW5pYSIsIm4iOiLnvZfpqazlsLzkupoifSx7InYiOiIvbW92aWVfYnRfY2F0L2FtZXJpY2EiLCJuIjoi576O5Zu9In0seyJ2IjoiL21vdmllX2J0X2NhdC9maW5sYW5kIiwibiI6IuiKrOWFsCJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvc292aWV0dW5pb24iLCJuIjoi6IuP6IGUIn0seyJ2IjoiL21vdmllX2J0X2NhdC9lbmdsYW5kIiwibiI6IuiLseWbvSJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvbmV0aGVybGFuZHMiLCJuIjoi6I235YWwIn0seyJ2IjoiL21vdmllX2J0X2NhdC9waGlsaXBwaW5lcyIsIm4iOiLoj7Llvovlrr4ifSx7InYiOiIvbW92aWVfYnRfY2F0L+iRoeiQhOeJmSIsIm4iOiLokaHokITniZkifSx7InYiOiIvbW92aWVfYnRfY2F0L3dlc3QtZ2VybWFueSIsIm4iOiLopb/lvrcifSx7InYiOiIvbW92aWVfYnRfY2F0L3NwYWluIiwibiI6Iuilv+ePreeJmSJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvdmlldG5hbSIsIm4iOiLotorljZcifSx7InYiOiIvbW92aWVfYnRfY2F0L2FyZ2VudGluYSIsIm4iOiLpmL/moLnlu7cifSx7InYiOiIvbW92aWVfYnRfY2F0L2tvcmVhIiwibiI6IumfqeWbvSJ9LHsidiI6Ii9tb3ZpZV9idF9jYXQvbWFsYXlzaWEiLCJuIjoi6ams5p2l6KW/5LqaIn0seyJ2IjoiL21vdmllX2J0X2NhdC/pqazogLPku5YiLCJuIjoi6ams6ICz5LuWIn1dfSx7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJ2IjoiL3llYXIvMjAyNCIsIm4iOiIyMDI0In0seyJ2IjoiL3llYXIvMjAyMyIsIm4iOiIyMDIzIn0seyJ2IjoiL3llYXIvMjAyMiIsIm4iOiIyMDIyIn0seyJ2IjoiL3llYXIvMjAyMSIsIm4iOiIyMDIxIn0seyJ2IjoiL3llYXIvMjAyMCIsIm4iOiIyMDIwIn0seyJ2IjoiL3llYXIvMjAxOSIsIm4iOiIyMDE5In0seyJ2IjoiL3llYXIvMjAxOCIsIm4iOiIyMDE4In0seyJ2IjoiL3llYXIvMjAxNyIsIm4iOiIyMDE3In0seyJ2IjoiL3llYXIvMjAxNiIsIm4iOiIyMDE2In0seyJ2IjoiL3llYXIvMjAxNSIsIm4iOiIyMDE1In0seyJ2IjoiL3llYXIvMjAxNCIsIm4iOiIyMDE0In0seyJ2IjoiL3llYXIvMjAxMyIsIm4iOiIyMDEzIn0seyJ2IjoiL3llYXIvMjAxMiIsIm4iOiIyMDEyIn0seyJ2IjoiL3llYXIvMjAxMSIsIm4iOiIyMDExIn0seyJ2IjoiL3llYXIvMjAxMCIsIm4iOiIyMDEwIn0seyJ2IjoiL3llYXIvMjAwOSIsIm4iOiIyMDA5In0seyJ2IjoiL3llYXIvMjAwOCIsIm4iOiIyMDA4In0seyJ2IjoiL3llYXIvMjAwNyIsIm4iOiIyMDA3In0seyJ2IjoiL3llYXIvMjAwNiIsIm4iOiIyMDA2In0seyJ2IjoiL3llYXIvMjAwNSIsIm4iOiIyMDA1In0seyJ2IjoiL3llYXIvMjAwNCIsIm4iOiIyMDA0In0seyJ2IjoiL3llYXIvMjAwMyIsIm4iOiIyMDAzIn0seyJ2IjoiL3llYXIvMjAwMiIsIm4iOiIyMDAyIn0seyJ2IjoiL3llYXIvMjAwMSIsIm4iOiIyMDAxIn0seyJ2IjoiL3llYXIvMjAwMCIsIm4iOiIyMDAwIn0seyJ2IjoiL3llYXIvMTk5OSIsIm4iOiIxOTk5In0seyJ2IjoiL3llYXIvMTk5OCIsIm4iOiIxOTk4In0seyJ2IjoiL3llYXIvMTk5NyIsIm4iOiIxOTk3In0seyJ2IjoiL3llYXIvMTk5NiIsIm4iOiIxOTk2In0seyJ2IjoiL3llYXIvMTk5NSIsIm4iOiIxOTk1In0seyJ2IjoiL3llYXIvMTk5NCIsIm4iOiIxOTk0In0seyJ2IjoiL3llYXIvMTk5MyIsIm4iOiIxOTkzIn0seyJ2IjoiL3llYXIvMTk5MiIsIm4iOiIxOTkyIn0seyJ2IjoiL3llYXIvMTk5MSIsIm4iOiIxOTkxIn0seyJ2IjoiL3llYXIvMTk5MCIsIm4iOiIxOTkwIn0seyJ2IjoiL3llYXIvMTk4OSIsIm4iOiIxOTg5In0seyJ2IjoiL3llYXIvMTk4OCIsIm4iOiIxOTg4In0seyJ2IjoiL3llYXIvMTk4NyIsIm4iOiIxOTg3In0seyJ2IjoiL3llYXIvMTk4NiIsIm4iOiIxOTg2In0seyJ2IjoiL3llYXIvMTk4NSIsIm4iOiIxOTg1In0seyJ2IjoiL3llYXIvMTk4NCIsIm4iOiIxOTg0In0seyJ2IjoiL3llYXIvMTk4MyIsIm4iOiIxOTgzIn0seyJ2IjoiL3llYXIvMTk4MiIsIm4iOiIxOTgyIn0seyJ2IjoiL3llYXIvMTk4MSIsIm4iOiIxOTgxIn0seyJ2IjoiL3llYXIvMTk4MCIsIm4iOiIxOTgwIn0seyJ2IjoiL3llYXIvMTk3OSIsIm4iOiIxOTc5In0seyJ2IjoiL3llYXIvMTk3OCIsIm4iOiIxOTc4In0seyJ2IjoiL3llYXIvMTk3NyIsIm4iOiIxOTc3In0seyJ2IjoiL3llYXIvMTk3NiIsIm4iOiIxOTc2In0seyJ2IjoiL3llYXIvMTk3NSIsIm4iOiIxOTc1In0seyJ2IjoiL3llYXIvMTk3NCIsIm4iOiIxOTc0In0seyJ2IjoiL3llYXIvMTk3MyIsIm4iOiIxOTczIn0seyJ2IjoiL3llYXIvMTk3MiIsIm4iOiIxOTcyIn0seyJ2IjoiL3llYXIvMTk3MSIsIm4iOiIxOTcxIn0seyJ2IjoiL3llYXIvMTk3MCIsIm4iOiIxOTcwIn0seyJ2IjoiL3llYXIvMTk2OSIsIm4iOiIxOTY5In0seyJ2IjoiL3llYXIvMTk2OCIsIm4iOiIxOTY4In0seyJ2IjoiL3llYXIvMTk2NyIsIm4iOiIxOTY3In0seyJ2IjoiL3llYXIvMTk2NiIsIm4iOiIxOTY2In0seyJ2IjoiL3llYXIvMTk2NSIsIm4iOiIxOTY1In0seyJ2IjoiL3llYXIvMTk2NCIsIm4iOiIxOTY0In0seyJ2IjoiL3llYXIvMTk2MyIsIm4iOiIxOTYzIn0seyJ2IjoiL3llYXIvMTk2MiIsIm4iOiIxOTYyIn0seyJ2IjoiL3llYXIvMTk2MCIsIm4iOiIxOTYwIn0seyJ2IjoiL3llYXIvMTk1OSIsIm4iOiIxOTU5In0seyJ2IjoiL3llYXIvMTk1NCIsIm4iOiIxOTU0In0seyJ2IjoiL3llYXIvMTk1MiIsIm4iOiIxOTUyIn0seyJ2IjoiL3llYXIvMTk1MCIsIm4iOiIxOTUwIn0seyJ2IjoiL3llYXIvMTk0OSIsIm4iOiIxOTQ5In0seyJ2IjoiL3llYXIvMTk0OCIsIm4iOiIxOTQ4In0seyJ2IjoiL3llYXIvMTk0MCIsIm4iOiIxOTQwIn0seyJ2IjoiL3llYXIvMTkzOSIsIm4iOiIxOTM5In0seyJ2IjoiL3llYXIvMTkyNSIsIm4iOiIxOTI1In1dfV0KICAgIH0sCiAgICAvLyBzZWFyY2hVcmw6Jy9zZWFyY2g/cT0qKicsCiAgICBzZWFyY2hVcmw6Jy9wYWdlL2Z5cGFnZT9zPSoqJywKICAgIHNlYXJjaGFibGU6MiwvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHF1aWNrU2VhcmNoOjAsLy/mmK/lkKblkK/nlKjlv6vpgJ/mkJzntKIsCiAgICBoZWFkZXJzOnsKICAgICAgICAnVXNlci1BZ2VudCc6J1VDX1VBJywKICAgIH0sCiAgICAgY2xhc3NfcGFyc2U6Jy5uYXZsaXN0JiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKFteL10rKScsCiAgICBwbGF5X3BhcnNlOnRydWUsCiAgICAvLyBsYXp5OicnLAogICAgbGF6eTpganM6CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIHZhciBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgdmFyIG9odG1sID0gcGRmaChodG1sLCAnLnZpZGVvcGxheSYmSHRtbCcpOwogICAgICAgIHZhciB1cmwgPSBwZGZoKG9odG1sLCAiYm9keSYmaWZyYW1lJiZzcmMiKTsKICAgICAgICBpZiAoL0Nsb3VkLy50ZXN0KHVybCkpIHsKICAgICAgICAgICAgdmFyIGlmcnd5ID0gcmVxdWVzdCh1cmwpOwogICAgICAgICAgICBsZXQgY29kZSA9IGlmcnd5Lm1hdGNoKC92YXIgdXJsID0gJyguKj8pJy8pWzFdLnNwbGl0KCcnKS5yZXZlcnNlKCkuam9pbignJyk7CiAgICAgICAgICAgIGxldCB0ZW1wID0gJyc7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAweDA7IGkgPCBjb2RlLmxlbmd0aDsgaSA9IGkgKyAweDIpIHsKICAgICAgICAgICAgICAgIHRlbXAgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChjb2RlW2ldICsgY29kZVtpICsgMHgxXSwgMHgxMCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgIHVybDogdGVtcC5zdWJzdHJpbmcoMHgwLCAodGVtcC5sZW5ndGggLSAweDcpIC8gMHgyKSArIHRlbXAuc3Vic3RyaW5nKCh0ZW1wLmxlbmd0aCAtIDB4NykgLyAweDIgKyAweDcpLAogICAgICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoL2RlY3J5cHRlZC8udGVzdChvaHRtbCkpIHsKICAgICAgICAgICAgdmFyIHBodG1sID0gcGRmaChvaHRtbCwgImJvZHkmJnNjcmlwdDpub3QoW3NyY10pJiZIdG1sIik7CiAgICAgICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7CiAgICAgICAgICAgIHZhciBzY3JwdCA9IHBodG1sLm1hdGNoKC92YXIuKj9cXClcXCk7L2cpWzBdOwogICAgICAgICAgICB2YXIgZGF0YSA9IFtdOwogICAgICAgICAgICBldmFsKHNjcnB0LnJlcGxhY2UoL21kNS9nLCAnQ3J5cHRvSlMnKS5yZXBsYWNlKCdldmFsJywgJ2RhdGEgPSAnKSk7CiAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICB1cmw6IGRhdGEubWF0Y2goL3VybDouKj9bXFwnXFwiXSguKj8pW1xcJ1xcIl0vKVsxXSwKICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbnB1dAogICAgICAgIH0KCWAsCiAgICBsaW1pdDo2LAogICAg5o6o6I2QOicubGVpYm94JiZsaTsqOyo7KjsqJywKICAgIC8vIGRvdWJsZTp0cnVlLCAvLyDmjqjojZDlhoXlrrnmmK/lkKblj4zlsYLlrprkvY0KICAgIOS4gOe6pzonLm1yYiYmbGk7aW1nJiZhbHQ7aW1nJiZkYXRhLW9yaWdpbmFsOy5qaWRpJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOnsKICAgICAgICAidGl0bGUiOiJoMSYmVGV4dDsubW92aWVkdGVhaWxfbGlzdCYmbGk6ZXEoMCkmJlRleHQiLAogICAgICAgICJpbWciOiIuZHlpbWcmJmltZyYmc3JjIiwKICAgICAgICAiZGVzYyI6Ii5tb3ZpZWR0ZWFpbF9saXN0JiZsaTplcSgtMSkmJlRleHQ7OzsubW92aWVkdGVhaWxfbGlzdCYmbGk6ZXEoNykmJlRleHQ7Lm1vdmllZHRlYWlsX2xpc3QmJmxpOmVxKDUpJiZUZXh0IiwKICAgICAgICAiY29udGVudCI6Ii55cF9jb250ZXh0JiZwJiZUZXh0IiwKICAgICAgICAidGFicyI6Ii5taV9wYWx5X2JveCAueXB4aW5ncV90LS1zcGFuIiwKICAgICAgICAibGlzdHMiOiIucGFseV9saXN0X2J0bjplcSgjaWQpIGEiCiAgICB9LAogICAg5pCc57SiOicuc2VhcmNoX2xpc3QmJmxpOyo7KjsqOyonLAp9
\ No newline at end of file
diff --git a/drpy_js/素白白[优].js b/drpy_js/素白白[优].js
deleted file mode 100644
index e4c1ade..0000000
--- a/drpy_js/素白白[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/索尼资源[资].js b/drpy_js/索尼资源[资].js
deleted file mode 100644
index 832c492..0000000
--- a/drpy_js/索尼资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8gaHR0cHM6Ly9zdW9uaWFwaS5jb20vYXBpLnBocC9wcm92aWRlL3ZvZC8/YWM9bGlzdAovLyBodHRwczovL3N1b25pYXBpLmNvbS9hcGkucGhwL3Byb3ZpZGUvdm9kL2Zyb20vc25tM3U4Lz9hYz1saXN0Cgp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ+mHh+mbhjEnLAogICAgdGl0bGU6ICfntKLlsLzotYTmupBb6LWEXScsCiAgICBob3N0OiAnaHR0cHM6Ly9zdW9uaWFwaS5jb20nLAogICAgLy8gaG9tZVRpZDogJzEzJywKICAgIGhvbWVUaWQ6ICcnLAogICAgY2F0ZV9leGNsdWRlOiAn55S15b2xfOeUteinhuWJp3znu7zoibp85Yqo5ryrfOeUteW9seino+ivtHzkvZPogrJ85ryU5ZGYfOaWsOmXu+i1hOiur3zor7rlhYt85aWz6aKRJywKICAgIHBhcnNlX3VybDogJycsCn0=
\ No newline at end of file
diff --git a/drpy_js/红果短剧网[自动].js b/drpy_js/红果短剧网[自动].js
deleted file mode 100644
index ee9ab1a..0000000
--- a/drpy_js/红果短剧网[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV1EAw0AReVKkvtcVRvGmIbZaCDgC05Tx7REBWD5sE1+9VoGILMzVJDKXF4Pm0AH+lcvmF4faqI81v+FY/CKcxVemZrA70xLbGRspmg+ymZBoXdV/DUS5rLSCSY4DAxXSdS0ntxwAvyv4QZwisc6CSM+g8Y64ONgbbjNfaMKlhE70xp0/P7rEQtAl3noVLosl+HRFDMuH8gsV4hqxV81eTeUAs2QgpbXUtpSC7PfaojEvOdskRXUFC5WuO1b1t6+uPyja5TTpyUqD5Ic372BUz4qF1cxO6kbjSFuRQ3HfGQN+rKiQVVfHSB0B2xiaDGgzmWh+iEbj1gDe6STz0OWjs9Uu2Q7R43BWGp56Ar+AOE6dTVi/KRnGN/J0eGEZR+cince0ZEJ7R3d42Te38s6Aau86LikPKwCMk1996rRi5lWXUYfBGwD8mI3IknwLCLT+s4YSUrPRu57xuVA8d2YH7dnjgowvlzkLCVeOcBZSLvqxvNfKywBZHSpdwsgKtOBV24PMu0kMFVTqZdKDn9L21/LHy5nYu/6VrSoExItHxgylUMJAp7Mkb6M9oVd0S91nozvVaWI3mahOM0PnnCVKgEjWYJU25xr6Ke2KQFs0Y7IjVF91VQbvBVS8pit5zeWUGBFjcjQlBYM4tcW1X//FEsjynuyIPh16Nrw9MdLzzz2SQUqKg5bAOHzAb5nH+uczcynRSfBE6CMpu56tSPn2LFAJ16PYGzipQ+4Pr/2OcoTHlbvku2UVJJ1VTjCdqQYKa7nUWVSa5F+ymu2ND9nFI2i4kGBomqOuz4NHh5+uS4IGNCDNvVpNoVVRe7DvIhSOLASxOjaOdfbsQ4kSQbsyJFQDiqvMkQyoOW8Qn4u9HQ//KfRwxCcSrawezYhMSazb9xEjAuXsozm5uxolKPOyYDE/fWw4QDkzdIB9+ciAD/Hdxsl8fG7I+TOuLUDHOgADKFf0PN9higxg1n4WbfENsSGj2AElWRfxbgCg2n56Q1bdVRq20vw8nmAMNJYrOEaXf6nLy/SQOh6R+L9aLbOX8Sba8hbu/rO6I+HLxQ0lpozIJeT7kIaF2hQ/uI58zgu0dSJRpRGyyAw2x1YpkObdYhM9DoCk+IxPZiacscF4pl+PTogfTHWpdlm7BPM5wc5ST2YhdIs7Q8ugmB4RNEnpQ3eaMUT/kEf6nA1k4pHvSX/ScCw4G2CYKb5G08HFnk5+mQ7ErzC9BZsPrc/Xrb90MxEPyocMTyLBI6EPUkI4TsdotNRUdEiA5XVCpW63oyI+EyXc0AD6JmGaP4x429tsM29p7AcCSRFfcGxq+rWm3dCD
\ No newline at end of file
diff --git a/drpy_js/经济央视[央].js b/drpy_js/经济央视[央].js
deleted file mode 100644
index 0bad960..0000000
--- a/drpy_js/经济央视[央].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/维奇动漫[漫].js b/drpy_js/维奇动漫[漫].js
deleted file mode 100644
index f215f00..0000000
--- a/drpy_js/维奇动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/综合央视[央].js b/drpy_js/综合央视[央].js
deleted file mode 100644
index 75f1c0f..0000000
--- a/drpy_js/综合央视[央].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV5tnH3X+j84vOA/ubbiVv9ta4vsnXQVsXZqC0nuNPdjIPQ/+gVqVMhI68dIhq9z8QSwxkwIe6U4y817i75AZdjWX+UrMrWOkgQK2u+0lnVKLKocakvuUvt/dZrle+hjJRGYQOARor5v8AtjjY4QeGmgB9/gikSyc8ybFDqwGjhjUmbc3ZB56MPsZG0FqMvr21akQOe9wNJI80V6pTZ+/I9yoAcDhP9R1CoPHs7MGl/mmJbR1c3sQAhs0bYQxq/3x/i3MiiMgfC/pV6TtKxiijSeGRAY01Nh5LTSbV88lIAlPDiBkYBYQlqljTsl3nnVBSFNPKgifzCxdxTqZwiXQlaZGiqWA/lBdY9pXlQZKCN6n7s24L3n5YibaKTZJNfSbbTs9hh89T2XkZl/fozOdS42SOdSC/JpEtrmXBYMbIQmKLddU3ZK9iKaDhj1aT2ZqXJJhTelCpcT7jNWdhXmJIlhtuPa1Rn9LbrYZ9BrPUo8hmyTia+1vfZFFNF4poyZj3GZxZ/xBVoBMWAxwl3H+rG0dvg13mOC4NXTktVg9nOmevdJE4QJyt0xuk7jZTzYWM3HOh08uL67rUWxK4yBl3/wUklOrpHCJlOd4E6Ksf6U1I4bQn4tjwilX58TybyThxjHIXgMuJEjSh2odqkUu52VlAuwGmV6Qf8w7ArHqklEFodtyoSl19Ulk1mamXr1pZTqrr0n4VFPzWQPNBRxBck4p6Mls9Qxi1LB3j4QIqbD50ELdd9iyJQq+8fR2PMu+5+eddRdAiq+I7UoJk2p6caUGu60xWSferADqsNlDC6PIlY/VY6BUpf01cTkCW6khEAaLRibQXOX2SCYY2lVEDNqGrl2qX843pwXrq7Lk+2kLpaMsB8f8n8ND7i3M0wJuJ41+XklSUxdBAsWa/DNzkxZALr5SJHuYes8P2Jj+H6Z1+mc9PaZw+zCn89Xw+J3EtD933h5u7S4rpsKCBRoQ3TLotQSdxkG1n8JHbVOwZsbDslXKteXl5ZznIT1ZgeXxp2L81Rhg/qKYd+3jICdNO97P/XB6rNv0omx7neewhE94keI+K8f5WI7P+jjPB+KKdn8a402yxf3enl/3Dmr9JkWyve2tWOCOAJy+M+XH9Peq8Jws+Er3yzkHhmXwZYRrut/bU66QakS7NdKY/riOZ7NMGY8CjWn0oqAo0jIiioKnJP48546rNK29bHYwTnZ0N/cDnXWZ64cytc8yxut1ZRuN5kUrNAgZGJyMPliDU6kfdGbWN2i66dESTRlezft2LuZYTHqwx//0BHSuIrR5mNFNvolMPJ0mWq9zTNPG9rL1WJg2zG4ANycaqnd0YjkJyXSdC2k66q1YybZdF9yzRL59PODyGosmXIbJTNm/wQ/+GV+UXIVAOX8EFFhMYG2zrUKDWIqNcRglrqcPtsrfHnoCkh4kNOSP+HHfylNmFDgcHjwDfzP3nMDePfDALGbJFA9f1a3GqTdupU7Fdr4yX8L2aZCdTW3/NT9pDbFjQXOesBwvjig9ONoVxJk/jBb4KNcLHda4nMqeu4eFQNvKGYJVNUn2pHUD72EBDAGLSHcnLtMr/6nTelz+Yl6BWbEY0wsuuBGyB5t530sbcIxIaC8NgxRYfXhP5iqDovZUjEJsbO17owgoZ10TpM4pLvypwh+o3gHxdAHj5AxFRY9Elr8Gih4uXYgM3MdGglpKlnTrkauH4OUlU5qS0JKUjdK9Qwe69mSv/qqP/QZ4pU8aiCN8zziyZIGUhsHdDYCNBGODglPDV4kJMmIyAwf4vO59mD6psknv6OpESpQUqjEI0juiRw7rkwVkEtui9DGj6w94BjTXTYNezgkKz05Bp7+KbiFey3SLuvQpXe62X3HjN2pHVDmet5fwCcSlCA0keNQhjB1deKdKSDNqPn0DoAqtGmCLI9f0ni1HoyEtQEm7L/MboBhOKnjiSI35z35lXKhpkSmqGkhMYYPuAA3INK2U5g/X4yR79ipYJR1/jOz1nNpQnFStuyxoXkz73mqU9A07FHJNH0aB23SEf/NiJ1CF3y0JELFkAP5FNtGMZEdBMl5MVY3H6uwfvY8VIq7zJVZUOn1sn/q/9CaUUXVvdBymh8KH2pSc9tDsofaw0d0dhEg0YACpM9LwPEJTMijxuqzPLo2aEz06RIU7dTnwQW8OAAvSYSpMecsjsLWWCiL7gbFue2Rg6b3TgtnvubbVCJqKBS9XcV/vEW+DkULoaCzV6N5kVtk9RsmwJuged57ahuk7t9SX3cFtQvNVS6lb4a4PBwglnX3HEYpBhcznESa58FdtYe99sq/5ILGq9o189cep3KccQNBBCOiUfS4syODfj1EQqJdfOLbhqcANUPNmtK29nWNYIWAKL3dsDwZHHzHT+YfK4Syc3mEj5ZVejcJqjjdWsLv46O3rzXxOs4MoinVUGjsLCpe8P7Da92FjQ8yiLlBVb5E9yD33JNuFU7AxL60YMVjJhJ2A9GGlb7CHApIlHUPZUaVF/QHdpfVM9O9KG90QtYgcxNFuQ/FZKnsTLqzxK7OaRTI7HewEH99Os0zuei6WA6SgB9NbQOQKwYf/UHiDhAlSF2X9zjqKcRIXhYvD1PgvPAb4Ys++KD+CtFBarsGiwR86/vtP74mS5G1xNwixb6ZVd1rG2AREyZ9cM/VS5mD0OwsiD/cT0dn7C0olo31qj1kItr6wZZKOudltvG5W6kXVB5ATXhL+rJujrOKpeBjg6v+tvSaIfubWG0ISbKmwcGvjPCg9lGv2tLchZgGqEbZl53BAbdDv2kViePPGSBnFvQPY4tr5CAhdg8XENSujovic1Pcs5+9kuwFV4rBVyoO/r4jQWIm9thtLugB6SxYFpwuvou/s671fI/5aPQiVmlt4xzIwmZ1dFrAt3cJCcP5jFGvbq1RB8Uf1mC9By7/Gxq9O7YSvjltSZ4zzNfYi9YJj5hWtl3qJO0AhT4FiZK+iqTkXeZqrKB89ZDc4QDXbHGUnMtiUJWpdaO7CIERpXA6f/fRmFF5mUq7oijzIKOmJgFv4tyuD9ZneZLc0/wrm7SfEHStbxYzOkncSKv/mUlxZet/OFxDNkBEZqUiaQ8DDQ/oxyqAZipCUS98M3NcOix2pYTICDSLeFQ9e2tNADjHhRYncimj0hUZa0jsocS8gqNKqeaMhdKM7BqhMVUOjEFJWAnpbY0j06MHvizuMGb6Asnm9HGNyRSBD3t1ePJM6m8bneESbHkCyn89D4kB+VDKC8pYv7SDvZzwS1SWz254KqYpCLTk9UYTMnWeWZk0xdgfDMp09QvD6oktS9IxJzD13U0KQlogCHDTsS6XL1xmLbwsVGBI+kUshsM+yupdmLasxLTUhspjDiOQMk3MWJIHktCOz2TCFE+V0y8kh6T6UWzQ0BmWc/bxIY4XkiRRx5b4Quwf2pqXqaD5l5n6Iob0DtcGhyXsU0H1LFwExDaNLpRd5LCY5ft3/z56MiLvLggZ01b7oRntBuWgMDNz8u22yz4fNtVIyt3GN7kCVoiqgbeH/9qH5s3tdHgR87ART98/2qibZOh/Gj/wFH6LqMfNRnUlEpEUFYvJL5A1+SHZsK25NAUs5dIPD8hlrUpCKhRYW510WFE6H7wERZjKzY5i/SynzEntVcDFw9xkpaHXR4jhhfAqRvTuQ/Y5Aq3C//JK0eoIBqDMveDQw8CBAsI+SuXj6i0pSo11UBGxdx8Nqlj7GPJR39amSG0vO7JBneuuV4DCxbXl8CktS8Z0T9z1eCh2ZDB9KwFTxSFfbM1bu1VKvRBnknu92K3wZV/ZveUOl/z9XL/b84dq8bAAUX7qQpt8Za6gyH7yPRyXo4i/Y4YzvHSThS1T1fttzsHZ88te88KxaXFKI6n25j2swgTMe6W2x8vXlxHu2F33gvKiWAld+jK0hfkSHRVoDcR15vJ5SAngz/eCUHVahTHWUAMwyScPoDdI99gG8dn7vVgFGF2dMy/acZJGXAI1M0NxnAtBMvW0VrLJgkZoSJ+njdutFmp0o0ykxonoX46gIVVsAp2yChgYl4UFITwHtPrW68uMSzOtY9Bh8L+q1ZVE4wkCu9LAQHUiTTkKvG0C3KQfxnh639AWfbXmqVGaWrTrrQP9nPazy9OIs54YBy8IIeQz1emt6Y8g+A6PpxnVfQYT3qc+cCRlz0iQviwfFkDCVPFtGOapb8CK6QpReurMplfi08ej8TeHhvrgfgAZe9i1glnNKAQwm1gHq13soU3b7xXsR2s+/r45NYVsa2fzxNJ2HJgXfUnJdQmVKEFaEYafadKIRvitBVf6B5NJ4syW1T9K7zR6HKZKmIym5qSSMUxxzDPdL5VgG6fklIaDS7L6jDHMzbXLdiiZDiHp03w1dyTu5ArfiuyYoWu9PWXrxtauHlrLYERHPcmeLQgRtb+vv9njdt9CJ6aDuOJV0d0qfMD3wb92cybEOl1FOOJDUK+Zv6ZrELNTMuAjRhxZqJmj7mVnICpndjpUnbmj4L34FM0QS49R9xE6ZNkKGptgTAojzDKrzgJyI+JiNkw6PGs4IZl7X7GWG2mVyy26f9tWZyNfqewpNI9ueLYPTEz/GhYb/hGWUSU9aqfyCPsoJQ5dw4fczIVXLkGJA+3PTk/ZUOp1e1JwXBq2r/7TwxmUu19sABRF5CrAS5THrj5Wr+ktR4nmhMgmC5p9tJz/vJ9YQuIY92DV1vj0xeW9QEK9JnHonqgZzdwazq62UPiqSDkuypa8H3NJYCiLrvzyOSxRlavYTmu36GOHamlJMONMALEMc6zj8hisk76xD65nzg4TbE5YxaUCnV/8n0Z7SSZWFJV2S4W1TJsk3SbERHN2JpZczFIFRr3nl49Xlr6bJyWh7bLeLBM846/A6ldiJDL8p6mBDUwTA5S5Rj5OTahLJdYR0iV5BgoGX9S6QgIjZpx3HV7ALq2qmDJj2wE11xhrtnbNpwRC491eOZLAJl3MhrJ8+83rSx2M/OraItTQijW1COirpOFaQWVyECVcfXHQq8ag/mQqvHtWTXcRMRBElpuwfhKcrw8l1QcfU5UJtyx64iU9qnSvD32Hx2Bd3WKeLS1chUENyRzf+d/sSNz2USXT+4SHU/PGbhEEZU8zqxfqJrc9kHqKi99tZm4pm1OY5WQ4REFVzlCy02d5qAF4lAjvXh8jFmBHdWLu2bhsNPDtBJ0s76O0vNQAqKHXGggxPaUt5AcIj4Y8UMNcyZtvPHZf9AvkRfTmYh2V78JjPI3JI3CBB3YfwJbBtCWDCVnVIRMhLsIRg65y69vVHbJOuy+/Wq832Jn4nGn2M2NCjPrK0/rUGlFI/Bb/jR2QM6iAb7fDI9Ws5gXV/a2NmpQw0ATwgmznIJMWw83thp+0DJMiZqhWnn5JrTBPGKh+i5OGFkFcv7olxEaHTDHeQlQ9WW18omYE8v9Dxp25E2NwxMUZmn4M7P/kXRL0ZTAiSN0TzrnoqrP7P6DvwNzlzweJ63KeGgvavHReBzOVLn05AXx6nhTTAzM5POCdsGSep+tX1eyL/qXtfhuNxlEgFg09HM1qAKdsueysUEgaR1WGJxwIl9wCJbNJfIoHhVbsZ8ZTAXlZki2IM+BsD6AYsLxrVtrMZ9dr8xYFXaHaeIvzbHf5UhiAGpqDmYBJS3+cCPdGLOg54yk7N71ELl9/zWDM1OUXv/itZKdmedC9K0lflAU4tPMkHzQOlnLnMNQ3DX714qPJ3yZjJQVmcknyhVSBfssfcBJu5EvYo/xdc0TnkabXXUBlNzwXGPZHdznELXlArevB2LX9kKH3kaOpP3WGz7abXL/eE+8BkiXIBKwO8iPduVNKgUT/8RkkHr4f/ZxI9Ki3cQsbUjytvRZKBp8YTgSkDTikPHtY/jt6foAInm/vNLIwk6V4FoA5IyS2BbCt6lVFgVoAueqegPiU2gAn/yMr6/foEI1ormD6SxjDMtpNCX2IODKKRE2bLMBni/WAwr5Z8Hs2oADpDUPfd9DTlcabWD1KW40xdHp/hvU3tXWkHWj8YHg23WlVGAV+nDz0JbNTz2S8Wj1Fp/k4toQl8Pf3VI8VF9JO2ggNjVNVdeAbgS7SMAQAB2P9MoxtCMnt0OQvtl88IE/4piD8vtzTYYZIjVDwPkZtCyBtJbmqiT3Q/mNpdWnIvFNPle0518AqR9nj2a/q459ni5QKh4WPFKwALBmn6ORmbxVO8isvy18zMRws/qrxm1FXzWBg7arfTjSp7ifXC7xjFdc591bZIuF28HHzX5LGXogMux99EM+dBOLzb5D0wPAiIoSCRmp95JN0vRVPT1X0mmdDBwhuT2yYK1ID84t4LllS0elbt11vz1f03zYAlotcEVvPFglDJOXYmY4fE6SiCmeYwIdcHJ7/aTCX5fUv+C40+ECtxkD7xfWCwLTn03rzYmCNE85rfPruGv35tOezm7gfvXZW6QbKQc5CSYPQxeTBk1BlPnseU8YXAix6sWHUe151LplQ8uCqYgkWwHlxg4GWUlDXYUvbsKnxmbnwngZ5nz61rPWHxiqH4HX3YCrQ3JzGo7O0iEM2aM9K8F+ERHmW535I9ZTNL+tpiuO4xn9UU9fHwHF65DV0HvltGtavCARr0z7rJfQM5Ni9s24fT88/qeME5ji6jEDRVrncOEFJu5t2A1fZAJAiNGy4GB73eBZexR/sAkfUdpDckkIbmxjPb9wTkUfRPPJwUYkp9jMRapB4iCi/qsM/PIznTgorW8Q3Jtc61q4j5tePXgc/tfjwD42D7pQEfANEX3tuEYfwK2QPySYmMN7m4EhQETSW9LLADh+UL3fS+LlDnr/nxJVZbVMMa5JJgB5eTZlQ4TlqWtFuWrreuUKZl1AkXvOtAXZIgiSXQfBgR9U0oSA7hLX+KVD//3DOEZvKTktk+UMhxleRVS/7P0MDu5E461kKa+TXqnYGRJpLi3ypcARSkMPa/rfxVpXJQ861sNP5xFBmso801sqiy3D394+5AA4F37k7MEXgOS5e6lv2BtZX7
\ No newline at end of file
diff --git a/drpy_js/绿色仓库[密].js b/drpy_js/绿色仓库[密].js
deleted file mode 100644
index c6d5588..0000000
--- a/drpy_js/绿色仓库[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/4VUy07bQBTd9yssVNkOIXZwQsCgFAXxSIAQRB6QIhRNnEnsxq/MjAMJQqoqilQJWiQ2VZdV1XYFalctqOrPYKB/0bGdB6BKvZvRnDnn+tx7Z9wGiEGODpkks/+EoUE0osNphru9+n335vv11Zl7ebbtXhztcGP+uWphsoynmacvsECsPEGa2eD5EJN81kvgRTqXL9CMVYBhIj4PFasGeQ6kN6LKvNVeldRuWcJO1ShFudDMQKRDwqjE0KkQwZYDMeG9PI8YmKAiZXhEwQBEUXnRg5IjvDA6GxoRQ9vjOw8VuqUAolmmJ/PVYd+fgOhGs3lO5EIU4kTWTorcUCqKutXgB+JHNhDE9j2jA9oYs7+rETUNQQ0i2iaCHDhGaTUNQYVMM3WgY3hwL1mvVcv53JpgA4Qh76UOCf2MAfMgFHTfQTqdjdi2aqRjQ7HeUXSAcaTesUEDCl5TemPCECBFLQ7owV6M3A+fP7tbS46OPlCBqncDpABqOZrSzPv4NBMNsLqmE4gCWg9S+wUPLwFXxBBFUg1oEo66yObmMqsLlWKq962DYPELqJjA8C4ddx8Lah1nJTbGxtlJdoqV2fEoOz7BShSUelxR7NH95lGBgImjRQI/lYoBTYdldW0GsGwB7hFvVRGs99S2Djp9pT8qH9VBtzN0o2uGRieXCHY3b7/enZzS037PapbjNyKYNLUTMNyj1+75z5v3F+7pZ/fdsfvtlXv+4frXia+5/vHy9vLLwCydj65h4vtU40OjNUBAxEJaQzOBPiPYmhIh9Cgg/LOe68vjIHHf3Z+Ph+6nw9vTo/+8WO8fIAxnQW+kYza63vNIx3Em1Y8YlurQXA3n2yUTT8KwVNhSUMkEE2UxJkNTRhtor5qVW/ImLJTERDWbAM9j2YTZka25dGYztdI0c3I5bMjVcC0Xi9pdx2w1F5vFTLGxiedaVhmEN9cmJYUsLrTWFtqlKTlOWtkSwOlC19laN6wlRTS21tfCiaWVVDa1ANPVenzKc5bkQoOXcvAXwf7CdtYEAAA=
\ No newline at end of file
diff --git a/drpy_js/绿茶.js b/drpy_js/绿茶.js
deleted file mode 100644
index 6f4aada..0000000
--- a/drpy_js/绿茶.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/网飞.TV.js b/drpy_js/网飞.TV.js
deleted file mode 100644
index 2044cc2..0000000
--- a/drpy_js/网飞.TV.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/网飞啦[自动].js b/drpy_js/网飞啦[自动].js
deleted file mode 100644
index deb676b..0000000
--- a/drpy_js/网飞啦[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV1EAw0AReVKkvtcVRvGmIbZaCDgC05Tx7REBWD5sE1+90bWUIv6uiTWtUpBviKbFjeCd476XsGIMnjhWvtMexo4x7A8UR41ErJm83Gd7nWXCslO2/iAeL3kJVBG+5KKnUYnz8gAX4v4msz0rAmSms/bku6Z8trlmaAKcSvzAC4lUgGUbTGag4wmm75VlaVCSjnZo2KnRarHggidgEJGve+NP8Elhe5vjp4PweGMJVjYwV53iwMqjAzDG65uGAi7pPX9YSF1Ra9JzCfPFgkuIC50NlGMAaTtZDAlE0MbcmjLWbhcC5la0WLUtHryx4KLy9cM2SkbWFVUkd7UD/snNyMS+moSLV9tyOR5Nk8mbMjqC
\ No newline at end of file
diff --git a/drpy_js/网飞猫[优].js b/drpy_js/网飞猫[优].js
deleted file mode 100644
index 7b9fece..0000000
--- a/drpy_js/网飞猫[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/美剧星球.js b/drpy_js/美剧星球.js
deleted file mode 100644
index 36856cb..0000000
--- a/drpy_js/美剧星球.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/美剧窝.js b/drpy_js/美剧窝.js
deleted file mode 100644
index 71ca794..0000000
--- a/drpy_js/美剧窝.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/美益达.js b/drpy_js/美益达.js
deleted file mode 100644
index f396c3f..0000000
--- a/drpy_js/美益达.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/老司视频[密].js b/drpy_js/老司视频[密].js
deleted file mode 100644
index 0cece2b..0000000
--- a/drpy_js/老司视频[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAMvEamYC/51TbU/aUBT+vl/Bp2Ni5KVFECT7CUuW7OXLspgOi3Qr0pXiZMsSycbbBAZzETdRGQGKRiMqc1hE/0zvve2/2C1l08R92v1ye57nnKfPOT1d4WSHnBR5x33Hu3sOehRBEfl5x5SxlkafB4aaNZvVZ+g4+3xqZsxH4wmF0lFFkRLzbreffRnkXSI3uyRYlzLJSsoiTXILy4v8qkuKSu6V+KKSknh3JBUWuUTCGUlJ3BLviioxcVKS4Dk5HH3yj0KbcU9PO/8eu5w+3FXgXlj+WRt6nRTCrx6N8XmHx8Yigqjwsp02gcaeFpa5mNU52h7pmkpOr9BGGuxLHxSIpoI+GOIvR6ilEnUN8KdNc6tvDwhoDe7+IGoar5fAbNZR7yPZPTRrfUDtM9LeRUcd8nUPyFWZZPdQr4o6OUDdHOoMSb+haxqQfQ2pFUujcAG2A/3iRL/s0JdumM0tMHIHONMjVy1da4GZK6NK3hh1zHoOjHQR1TVUKera+qQUVUpj0VEVb++YtS5l9OE5oPQv6s9Soi5RsaZrh6i1r4+uwTyoosxPXC+QRhrwUdsKag0rQPlzXC+hQd7yjy411B78MaZpln/aT/sM7Amhgoo/ZGiwYzTrtFkjc03TvuP+KYWNwingQ5XCeE0l+ROwL3PvTL+o2HN0PnzwdKybGdnym9b8aGtTMw6329z5hulW5rPkZEg7JGoPr1/icvvWJ7T3jvEAwwDDAuMFZhYYHzB+YOaACQATBNYDrB9YBlgWWC+ws8D6wEdZi5sDNgA+D/gY8HnBRwk/+ALABiHoBa8HvAx4vXfc4EbOOM7eciOJXGpB4uQEXShFTvL2monc2xS1N1lXUYgJ9Ffy2xEud41S5YZdjCfHG3pTrQ/W6IhphkuOv3HGnAmJC/MBAFEIuSJO2iRwAI/5VSUkxJYAEnI4FKJIVOYjE01dK9oK0xMAV+qk3/xfyfe/AWpqohM9BAAA
\ No newline at end of file
diff --git a/drpy_js/老王电影[自动].js b/drpy_js/老王电影[自动].js
deleted file mode 100644
index 9683e87..0000000
--- a/drpy_js/老王电影[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogIHRpdGxlOiAi6ICB546L55S15b2xIiwKICDmqKHmnb86ICLoh6rliqgiLAogIGhvc3Q6ICJodHRwczovL2xhb3dhbmcuY28iLAogIHVybDogIi92cy9meWNsYXNzZnlmaWx0ZXIuaHRtbCIsCiAgc2VhcmNoVXJsOiAiL3MqKi9wYWdlL2Z5cGFnZS5odG1sIiwKICBmaWx0ZXJhYmxlOiAxLAogIGZpbHRlcjogIkg0c0lBQUFBQUFBQUErMmFhVzhUVnhTRy80cy9VMm5HMlFhK3NTOWwzNkhpQTZvaUZiV2xVcUdWS29Ua3hGbWNRR0lIaFJoak40RW16b0t5T0lTR3hNYk9uL0dkR2YrTFRuelBmYzl4RW8wS0lsM1FmUFA3SE44Nzl6MitubnVPeDQ5aWR1elFONDlpMzNmL0Zqc1VVLzN6amVTOEdwcHprLzJ4QTdIN2QzL3MzazEvdmZ2REw5M05RZmYzQ0FZbzl2Z0F4U1lLUVlBb0NSUHpVcXM4Z29TSnVUMFpOekZCTVJLWWMzaStYaTJZT2JYQW5ITmphck5pNXRRQzQrUUtTZUI2cVJmMThwQzVuaGFZYzNqRnE3NHhjMnFCT1FlZU5YSUxaazR0TUdmdm9qY3hadWJVQXJIa3NOdjcwc1MwRVA2ODhRcjcyeGFJRlFmWkh3bk11VFJicjcweWMyb0JENVcwNnQ4d0hyVEFuT2taZnhwNTBRS3gwUUdWZm10aVdpQ1dlZW9tOE5scVlXS04zai9kVXBwaUpFeXMvV3Zpd1F2RC9PV1NxajRuVHVMeG5lMW95N1lzbE5UVDhxNXRhZWllMnhMQmxtMDVNOWZJRFppbGE0RlUxVVpWdm1wU3BRVnN6ZWJjalJWalN3dkVwaFo0SEFsOE5ObWlXMWcwSDQwV25QNlN1MWxEK3BzQ3NaR1NLcythbUJhWWM2M0UxeU9CZEQ1WjVSZ0pIdmRjam5zdVk2cjJubU1rVEt5K3NkbkFXa2dnWjJPVFludHBnVG5mdi9PTFcyWk9MWGlydjNLZmJBVWZBSGE3MGJqcVZwOVh6Ym9USnVtczRhY3ZIUXhRS2ZNdFpJMTNySXdIMHMydW0zZEFpMXVSS28yci9oTGZqVWdqbzhVdEw3M2tEZVZNVXFGeGxkcWF2bTY5akMrMlJQRGN2MTZ2bUZzYmlkMWIzVjlaOHVjVE83YzY2RjVibllNdFd6MWZEUUxtY2xxSWJjSXhFa2pKMnhtT2tjQld6MWJWU0piRHJNV1hRWVMxRUY4R2pwRVFtMVBFdEJDYlV6alJRaVJWTFNjNXFkdGlkMUtEajd5UmZiY3pxYUI3SlpXRE1xbHhLOTVPclBsUzhEYm1iWkxIbWNjbHQ1bmJrbHZNTGNIdGcrREJTOEVkNW83a1hjeTdKTzlrM2lsNUIvTU95ZG12TGYzYTdOZVdmbTMyYTB1L052dTFwVitiL2RyU3I4VitMZW5YWXIrVzlHdXhYMHY2dGRpdkpmMWE3TmVTZmkzMmEwbS9GdnUxcEYrTC9WclNyOFYrTGVuWFlyOFcrN1VQSGpSK215OEZkNWc3a25jeDc1SzhrM21uNUIzTU95UnZaOTR1ZVJ2ek5zbmp6T09TMjh4dHlTM20wcS9EZmgzcDEyRy9qdlRyc0Y5SCtuWFlyeVA5T3V6WGtYNGQ5dXRJdnc3N2RhUmZoLzA2MHEvRGZvT1hMYmVjcGF5N011Sk9GZDJobXJqbHROSWR0NXdkUVhuTE9VemdNTWdSSWtkQWpoSTVDbktNeURHUTQwU09nNXdnY2dMa0pKR1RJS2VJbkFJNVRlUTB5QmtpWjBCTW9jZDEzbGtpWjBIT0VUa0hjcDdJZVpBTFJDNkFYQ1J5RWVRU2tVc2dsNGxjQnJsQzVBcklWU0pYUWE0UnVRWnluY2gxa0J0RWJvRGNKSElUNUJhUld5QzNpZHdHc2I0eXU5OXEyVHI2MEhGSG42bHltcmZPRHRxNmRYWUdBL1R3WGpBTWRWUzU3SmJHVytMZjNYdjRnRXVCbFQ2VkdtaUpQL2oycDUrN3Q5ZDE1MEFzdm84dFlyNWFMNk1BMUVMVzFHZ2ZTZnlkdGlXc25WTTk2eXBwUEpKQUxLUmRWY3ZycW96eVF3c1VTMkV0WWtpN0d0Yk9oYmFybjloYWh1VWxySDFzSkt0cW85ZDhEbHBnblIvYkl2NDdiVjFZZXhiVzhvVzFibUh0WUZoYnR4L3QyYWUyaWxFN0V0S09SRzFGMUZiRW9yWWlhaXVpdGlJV3RSVlJXL0c1MjRxMi9Xc3J2TUpVc0RodnpsUWdyTEcydmxXVm51WjNzRVpwa0h0Wi80QlNXZ3VVRklraEhrcUNTL0IrdDI4S0pYaFRjQ215VnQvTW9CUnBDbEdITnFiTk9CSmZVTGtjVmhLSGx0SlJpUnFWcUZHSit2OG9VYU5TSlNwVnZzUlNwWDMvU3BXd2NpSHNEeTFlY3NsL2pmcEdDOHc1T3U5bHpObE9BckhNcExlSVh3KzF3SEVTOG9jV1AvTzdQMnArUFNTQk9WKzlWbmtjVVZwZ3pwQmZRTjFDMlUyOU1PTzB3UFcyTXNHN3pmVzB3TGl3WDNoTFFack15VVZDeG9wckloWUk1SE9teHVVZUNZd2JuVktwdkJtbkJlK3N0MnJKbEhRa01HZCsyTTJaeW9zRTUyVlZiV1dSbDZiNHVKcm5IeWtGdzBxNlQvMnpUR2dwR0ZKNjd2bkxhVlFLUnFWZ0xDb0ZvMUl3RnBXQ1VTbTRSekQyZVV2QmpuMThHQjd5VU52UFpkeWVKK2JBMFFKSFJtTEEvd05IaGhZNE1rSWVGbnZGU1g4VkQ2NjF3SnlESTk2NEtVdEo4RHBIL09vaTF0a1VYRXVNMUN1RHFDV2FBdGRiMlBMWGg4MzF0TUE2RXhWL3VzZXNVd3VNR3krb1pmTndtZ1N1OTZIc0o1QXpMWkN6K1FSbm1RVG1URlhkQ2JOT0VwaXp1TWE1SnNFSCtCdTFZTXBFRXBoenRzSXhFaGdYOGhEZDd4dHozMDJhZFdxQjNWcko4WU41RXNoWlVNSHlrMTB0NENHVGF1UlIwMm14ditVQUh5TnhlWXo4eDh1RTZKaUtqcWt2NzVoNi9CZFNpaHY5MkRNQUFBPT0iLAogIGZpbHRlcl91cmw6ICIte3tmbC7lhajpg6jlnLDljLp9fS17e2ZsLuaXtumXtOaOkuW6j319LXt7Zmwu5YWo6YOo5Ymn5oOFfX0te3tmbC7lhajpg6jor63oqIB9fS17e2ZsLuWtl+avjeafpeaJvn19LS0tZnlwYWdlLS0te3tmbC7lhajpg6jml7bpl7R9fSIsCiAgY2xhc3NfcGFyc2U6ICIubmF2LW1lbnUtaXRlbXMmJmxpO2EmJlRleHQ7YSYmaHJlZjsoXFxkKykiLAogIOaQnOe0ojogIi5tb2R1bGUtaXRlbXMmJi5tb2R1bGUtc2VhcmNoLWl0ZW07aDMmJlRleHQ7aW1nJiZkYXRhLXNyYzsudmlkZW8tc2VyaWFsJiZUZXh0O2gzJiZhJiZocmVmOy52aWRlby1pbmZvLS1hLS1oMy0tc3Ryb25nJiZUZXh0IiwKfQ==
\ No newline at end of file
diff --git a/drpy_js/老白故事[听].js b/drpy_js/老白故事[听].js
deleted file mode 100644
index b927beb..0000000
--- a/drpy_js/老白故事[听].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIGNoYXJTdHIgPSAnYWJhY2RlZmdoamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSEpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OSc7CgpmdW5jdGlvbiByYW5kKG1pbiwgbWF4KSB7CiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjsKfQoKZnVuY3Rpb24gcmFuZFN0cihsZW4sIHdpdGhOdW0sIG9ubHlOdW0pIHsKICAgIHZhciBfc3RyID0gJyc7CiAgICBsZXQgY29udGFpbnNOdW0gPSB3aXRoTnVtID09PSB1bmRlZmluZWQgPyB0cnVlIDogd2l0aE51bTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICBsZXQgaWR4ID0gb25seU51bSA/IHJhbmQoY2hhclN0ci5sZW5ndGggLSAxMCwgY2hhclN0ci5sZW5ndGggLSAxKSA6IHJhbmQoMCwgY29udGFpbnNOdW0gPyBjaGFyU3RyLmxlbmd0aCAtIDEgOiBjaGFyU3RyLmxlbmd0aCAtIDExKTsKICAgICAgICBfc3RyICs9IGNoYXJTdHJbaWR4XTsKICAgIH0KICAgIHJldHVybiBfc3RyOwp9CgpmdW5jdGlvbiByYW5kVVVJRCgpIHsKICAgIHJldHVybiByYW5kU3RyKDgpLnRvTG93ZXJDYXNlKCkgKyAnLScgKyByYW5kU3RyKDQpLnRvTG93ZXJDYXNlKCkgKyAnLScgKyByYW5kU3RyKDQpLnRvTG93ZXJDYXNlKCkgKyAnLScgKyByYW5kU3RyKDQpLnRvTG93ZXJDYXNlKCkgKyAnLScgKyByYW5kU3RyKDEyKS50b0xvd2VyQ2FzZSgpOwp9CgpmdW5jdGlvbiByYW5kTUFDKCkgewogICAgcmV0dXJuIHJhbmRTdHIoMikudG9VcHBlckNhc2UoKSArICc6JyArIHJhbmRTdHIoMikudG9VcHBlckNhc2UoKSArICc6JyArIHJhbmRTdHIoMikudG9VcHBlckNhc2UoKSArICc6JyArIHJhbmRTdHIoMikudG9VcHBlckNhc2UoKSArICc6JyArIHJhbmRTdHIoMikudG9VcHBlckNhc2UoKSArICc6JyArIHJhbmRTdHIoMikudG9VcHBlckNhc2UoKTsKfQoKY29uc3QgZGV2aWNlQnJhbmRzID0gWydIdWF3ZWknLCAnWGlhb21pJ107CmNvbnN0IGRldmljZU1vZGVscyA9IFsKICAgIFsnTUhBLUFMMDAnLCAnSFVBV0VJIE1hdGUgOScsICdNSEEtVEwwMCcsICdIVUFXRUkgTWF0ZSA5JywgJ0xPTi1BTDAwJywgJ0hVQVdFSSBNYXRlIDkgUHJvJywgJ0FMUC1BTDAwJywgJ0hVQVdFSSBNYXRlIDEwJywgJ0FMUC1UTDAwJywgJ0hVQVdFSSBNYXRlIDEwJywgJ0JMQS1BTDAwJywgJ0hVQVdFSSBNYXRlIDEwIFBybycsICdCTEEtVEwwMCcsICdIVUFXRUkgTWF0ZSAxMCBQcm8nLCAnSE1BLUFMMDAnLCAnSFVBV0VJIE1hdGUgMjAnLCAnSE1BLVRMMDAnLCAnSFVBV0VJIE1hdGUgMjAnLCAnTFlBLUFMMDAnLCAnSFVBV0VJIE1hdGUgMjAgUHJvJywgJ0xZQS1BTDEwJywgJ0hVQVdFSSBNYXRlIDIwIFBybycsICdMWUEtVEwwMCcsICdIVUFXRUkgTWF0ZSAyMCBQcm8nLCAnRVZSLUFMMDAnLCAnSFVBV0VJIE1hdGUgMjAgWCcsICdFVlItVEwwMCcsICdIVUFXRUkgTWF0ZSAyMCBYJywgJ0VWUi1BTjAwJywgJ0hVQVdFSSBNYXRlIDIwIFgnLCAnVEFTLUFMMDAnLCAnSFVBV0VJIE1hdGUgMzAnLCAnVEFTLVRMMDAnLCAnSFVBV0VJIE1hdGUgMzAnLCAnVEFTLUFOMDAnLCAnSFVBV0VJIE1hdGUgMzAnLCAnVEFTLVROMDAnLCAnSFVBV0VJIE1hdGUgMzAnLCAnTElPLUFMMDAnLCAnSFVBV0VJIE1hdGUgMzAgUHJvJywgJ0xJTy1UTDAwJywgJ0hVQVdFSSBNYXRlIDMwIFBybycsICdMSU8tQU4wMCcsICdIVUFXRUkgTWF0ZSAzMCBQcm8nLCAnTElPLVROMDAnLCAnSFVBV0VJIE1hdGUgMzAgUHJvJywgJ0xJTy1BTjAwbScsICdIVUFXRUkgTWF0ZSAzMEUgUHJvJywgJ09DRS1BTjEwJywgJ0hVQVdFSSBNYXRlIDQwJywgJ09DRS1BTjUwJywgJ0hVQVdFSSBNYXRlIDQwRScsICdPQ0UtQUw1MCcsICdIVUFXRUkgTWF0ZSA0MEUnLCAnTk9ILUFOMDAnLCAnSFVBV0VJIE1hdGUgNDAgUHJvJywgJ05PSC1BTjAxJywgJ0hVQVdFSSBNYXRlIDQwIFBybycsICdOT0gtQUwwMCcsICdIVUFXRUkgTWF0ZSA0MCBQcm8nLCAnTk9ILUFMMTAnLCAnSFVBV0VJIE1hdGUgNDAgUHJvJywgJ05PSC1BTjUwJywgJ0hVQVdFSSBNYXRlIDQwRSBQcm8nLCAnTk9QLUFOMDAnLCAnSFVBV0VJIE1hdGUgNDAgUHJvJywgJ0NFVC1BTDAwJywgJ0hVQVdFSSBNYXRlIDUwJywgJ0NFVC1BTDYwJywgJ0hVQVdFSSBNYXRlIDUwRScsICdEQ08tQUwwMCcsICdIVUFXRUkgTWF0ZSA1MCBQcm8nLCAnVEFILUFOMDAnLCAnSFVBV0VJIE1hdGUgWCcsICdUQUgtQU4wMG0nLCAnSFVBV0VJIE1hdGUgWHMnLCAnVEVULUFOMDAnLCAnSFVBV0VJIE1hdGUgWDInLCAnVEVULUFOMTAnLCAnSFVBV0VJIE1hdGUgWDInLCAnVEVULUFONTAnLCAnSFVBV0VJIE1hdGUgWDInLCAnVEVULUFMMDAnLCAnSFVBV0VJIE1hdGUgWDInLCAnUEFMLUFMMDAnLCAnSFVBV0VJIE1hdGUgWHMgMicsICdQQUwtQUwxMCcsICdIVUFXRUkgTWF0ZSBYcyAyJywgJ0VWQS1BTDAwJywgJ0hVQVdFSSBQOScsICdFVkEtQUwxMCcsICdIVUFXRUkgUDknLCAnRVZBLVRMMDAnLCAnSFVBV0VJIFA5JywgJ0VWQS1ETDAwJywgJ0hVQVdFSSBQOScsICdFVkEtQ0wwMCcsICdIVUFXRUkgUDknLCAnVklFLUFMMTAnLCAnSFVBV0VJIFA5IFBsdXMnLCAnVlRSLUFMMDAnLCAnSFVBV0VJIFAxMCcsICdWVFItVEwwMCcsICdIVUFXRUkgUDEwJywgJ1ZLWS1BTDAwJywgJ0hVQVdFSSBQMTAgUGx1cycsICdWS1ktVEwwMCcsICdIVUFXRUkgUDEwIFBsdXMnLCAnRU1MLUFMMDAnLCAnSFVBV0VJIFAyMCcsICdFTUwtVEwwMCcsICdIVUFXRUkgUDIwJywgJ0NMVC1BTDAwJywgJ0hVQVdFSSBQMjAgUHJvJywgJ0NMVC1BTDAxJywgJ0hVQVdFSSBQMjAgUHJvJywgJ0NMVC1BTDAwbCcsICdIVUFXRUkgUDIwIFBybycsICdDTFQtVEwwMCcsICdIVUFXRUkgUDIwIFBybycsICdDTFQtVEwwMScsICdIVUFXRUkgUDIwIFBybycsICdFTEUtQUwwMCcsICdIVUFXRUkgUDMwJywgJ0VMRS1UTDAwJywgJ0hVQVdFSSBQMzAnLCAnVk9HLUFMMDAnLCAnSFVBV0VJIFAzMCBQcm8nLCAnVk9HLUFMMTAnLCAnSFVBV0VJIFAzMCBQcm8nLCAnVk9HLVRMMDAnLCAnSFVBV0VJIFAzMCBQcm8nLCAnQU5BLUFMMDAnLCAnSFVBV0VJIFA0MCcsICdBTkEtQU4wMCcsICdIVUFXRUkgUDQwJywgJ0FOQS1UTjAwJywgJ0hVQVdFSSBQNDAnLCAnRUxTLUFOMDAnLCAnSFVBV0VJIFA0MCBQcm8nLCAnRUxTLVROMDAnLCAnSFVBV0VJIFA0MCBQcm8nLCAnRUxTLUFOMTAnLCAnSFVBV0VJIFA0MCBQcm8nLCAnRUxTLVROMTAnLCAnSFVBV0VJIFA0MCBQcm8nLCAnQUJSLUFMMDAnLCAnSFVBV0VJIFA1MCcsICdBQlItQUw4MCcsICdIVUFXRUkgUDUwJywgJ0FCUi1BTDYwJywgJ0hVQVdFSSBQNTBFJywgJ0FCUi1BTDkwJywgJ0hVQVdFSSBQNTBFJywgJ0pBRC1BTDAwJywgJ0hVQVdFSSBQNTAgUHJvJywgJ0pBRC1BTDgwJywgJ0hVQVdFSSBQNTAgUHJvJywgJ0pBRC1BTDUwJywgJ0hVQVdFSSBQNTAgUHJvJywgJ0pBRC1BTDYwJywgJ0hVQVdFSSBQNTAgUHJvJywgJ0JBTC1BTDAwJywgJ0hVQVdFSSBQNTAgUG9ja2V0JywgJ0JBTC1BTDYwJywgJ0hVQVdFSSBQb2NrZXQgUycsICdQSUMtQUwwMCcsICdIVUFXRUkgbm92YSAyJywgJ1BJQy1UTDAwJywgJ0hVQVdFSSBub3ZhIDInLCAnQkFDLUFMMDAnLCAnSFVBV0VJIG5vdmEgMiBQbHVzJywgJ0JBQy1UTDAwJywgJ0hVQVdFSSBub3ZhIDIgUGx1cycsICdIV0ktQUwwMCcsICdIVUFXRUkgbm92YSAycycsICdIV0ktVEwwMCcsICdIVUFXRUkgbm92YSAycycsICdBTkUtQUwwMCcsICdIVUFXRUkgbm92YSAzZScsICdBTkUtVEwwMCcsICdIVUFXRUkgbm92YSAzZScsICdQQVItQUwwMCcsICdIVUFXRUkgbm92YSAzJywgJ1BBUi1UTDAwJywgJ0hVQVdFSSBub3ZhIDMnLCAnSU5FLUFMMDAnLCAnSFVBV0VJIG5vdmEgM2knLCAnSU5FLVRMMDAnLCAnSFVBV0VJIG5vdmEgM2knLCAnVkNFLUFMMDAnLCAnSFVBV0VJIG5vdmEgNCcsICdWQ0UtVEwwMCcsICdIVUFXRUkgbm92YSA0JywgJ01BUi1BTDAwJywgJ0hVQVdFSSBub3ZhIDRlJywgJ01BUi1UTDAwJywgJ0hVQVdFSSBub3ZhIDRlJywgJ1NFQS1BTDAwJywgJ0hVQVdFSSBub3ZhIDUnLCAnU0VBLVRMMDAnLCAnSFVBV0VJIG5vdmEgNScsICdTRUEtQUwxMCcsICdIVUFXRUkgbm92YSA1IFBybycsICdTRUEtVEwxMCcsICdIVUFXRUkgbm92YSA1IFBybycsICdHTEstQUwwMCcsICdIVUFXRUkgbm92YSA1aScsICdHTEstVEwwMCcsICdIVUFXRUkgbm92YSA1aScsICdHTEstTFgxVScsICdIVUFXRUkgbm92YSA1aScsICdTUE4tVEwwMCcsICdIVUFXRUkgbm92YSA1aSBQcm8nLCAnU1BOLUFMMDAnLCAnSFVBV0VJIG5vdmEgNXonLCAnV0xaLUFMMTAnLCAnSFVBV0VJIG5vdmEgNicsICdXTFotQU4wMCcsICdIVUFXRUkgbm92YSA2JywgJ0pOWS1BTDEwJywgJ0hVQVdFSSBub3ZhIDYgU0UnLCAnSk5ZLVRMMTAnLCAnSFVBV0VJIG5vdmEgNiBTRScsICdKRUYtQU4wMCcsICdIVUFXRUkgbm92YSA3JywgJ0pFRi1BTjIwJywgJ0hVQVdFSSBub3ZhIDcnLCAnSkVGLVROMDAnLCAnSFVBV0VJIG5vdmEgNycsICdKRUYtVE4yMCcsICdIVUFXRUkgbm92YSA3JywgJ0pFUi1BTjEwJywgJ0hVQVdFSSBub3ZhIDcgUHJvJywgJ0pFUi1BTjIwJywgJ0hVQVdFSSBub3ZhIDcgUHJvJywgJ0pFUi1UTjEwJywgJ0hVQVdFSSBub3ZhIDcgUHJvJywgJ0pFUi1UTjIwJywgJ0hVQVdFSSBub3ZhIDcgUHJvJywgJ0NEWS1BTjAwJywgJ0hVQVdFSSBub3ZhIDcgU0UnLCAnQ0RZLUFOMjAnLCAnSFVBV0VJIG5vdmEgNyBTRScsICdDRFktVE4wMCcsICdIVUFXRUkgbm92YSA3IFNFJywgJ0NEWS1UTjIwJywgJ0hVQVdFSSBub3ZhIDcgU0UnLCAnQU5HLUFOMDAnLCAnSFVBV0VJIG5vdmEgOCcsICdCUlEtQU4wMCcsICdIVUFXRUkgbm92YSA4IFBybycsICdCUlEtQUwwMCcsICdIVUFXRUkgbm92YSA4IFBybycsICdKU0MtQU4wMCcsICdIVUFXRUkgbm92YSA4IFNFJywgJ0pTQy1UTjAwJywgJ0hVQVdFSSBub3ZhIDggU0UnLCAnSlNDLUFMNTAnLCAnSFVBV0VJIG5vdmEgOCBTRScsICdOQU0tQUwwMCcsICdIVUFXRUkgbm92YSA5JywgJ1JURS1BTDAwJywgJ0hVQVdFSSBub3ZhIDkgUHJvJywgJ0pMTi1BTDAwJywgJ0hVQVdFSSBub3ZhIDkgU0UnLCAnTkNPLUFMMDAnLCAnSFVBV0VJIG5vdmEgMTAnLCAnR0xBLUFMMDAnLCAnSFVBV0VJIG5vdmEgMTAgUHJvJywgJ0NIQS1BTDgwJywgJ0hVQVdFSSBub3ZhIDEweiddLAogICAgWydNMjAwMUoyQycsICdYaWFvbWkgMTAnLCAnTTIwMDFKMkcnLCAnWGlhb21pIDEwJywgJ00yMDAxSjJJJywgJ1hpYW9taSAxMCcsICdNMjAxMUsyQycsICdYaWFvbWkgMTEnLCAnTTIwMTFLMkcnLCAnWGlhb21pIDExJywgJzIyMDExMjNDJywgJ1hpYW9taSAxMicsICcyMjAxMTIzRycsICdYaWFvbWkgMTInLCAnMjExMjEyM0FDJywgJ1hpYW9taSAxMlgnLCAnMjExMjEyM0FHJywgJ1hpYW9taSAxMlgnLCAnMjIwMTEyMkMnLCAnWGlhb21pIDEyIFBybycsICcyMjAxMTIyRycsICdYaWFvbWkgMTIgUHJvJ10sCl07CgpmdW5jdGlvbiByYW5kRGV2aWNlKCkgewogICAgbGV0IGJyYW5kSWR4ID0gcmFuZCgwLCBkZXZpY2VCcmFuZHMubGVuZ3RoIC0gMSk7CiAgICBsZXQgYnJhbmQgPSBkZXZpY2VCcmFuZHNbYnJhbmRJZHhdOwogICAgbGV0IG1vZGVsSWR4ID0gcmFuZCgwLCBkZXZpY2VNb2RlbHNbYnJhbmRJZHhdLmxlbmd0aCAvIDIgLSAxKTsKICAgIGxldCBtb2RlbCA9IGRldmljZU1vZGVsc1ticmFuZElkeF1bbW9kZWxJZHggKiAyICsgMV07CiAgICBsZXQgcmVsZWFzZSA9IHJhbmQoOCwgMTMpOwogICAgbGV0IGJ1aWxkSWQgPSByYW5kU3RyKDMsIGZhbHNlKS50b1VwcGVyQ2FzZSgpICsgcmFuZCgxMSwgOTkpICsgcmFuZFN0cigxLCBmYWxzZSkudG9VcHBlckNhc2UoKTsKICAgIHJldHVybiB7CiAgICAgICAgYnJhbmQ6IGJyYW5kLAogICAgICAgIG1vZGVsOiBtb2RlbCwKICAgICAgICByZWxlYXNlOiByZWxlYXNlLAogICAgICAgIGJ1aWxkSWQ6IGJ1aWxkSWQsCiAgICB9Owp9CgpmdW5jdGlvbiByYW5kRGV2aWNlV2l0aElkKGxlbikgewogICAgbGV0IGRldmljZSA9IHJhbmREZXZpY2UoKTsKICAgIGRldmljZVsnaWQnXSA9IHJhbmRTdHIobGVuKTsKICAgIHJldHVybiBkZXZpY2U7Cn0KCmZ1bmN0aW9uIGZvcm1hdFBsYXlVcmwoc3JjLCBuYW1lKSB7CiAgICBpZiAoc3JjLnRyaW0oKSA9PSBuYW1lLnRyaW0oKSkgewogICAgICAgIHJldHVybiBuYW1lOwogICAgfQogICAgcmV0dXJuIG5hbWUKICAgICAgICAudHJpbSgpCiAgICAgICAgLnJlcGxhY2VBbGwoc3JjLCAnJykKICAgICAgICAucmVwbGFjZSgvPHw+fOOAinzjgIsvZywgJycpCiAgICAgICAgLnJlcGxhY2UoL1wkfCMvZywgJyAnKQogICAgICAgIC50cmltKCk7Cn0KCmdsb2JhbFRoaXMucmFuZERldmljZVdpdGhJZCA9IHJhbmREZXZpY2VXaXRoSWQ7Cmdsb2JhbFRoaXMuZm9ybWF0UGxheVVybCA9IGZvcm1hdFBsYXlVcmw7CgpnbG9iYWxUaGlzLmFwcFZlcnNpb24gPSAnMS4xLjcnOwpnbG9iYWxUaGlzLmFwcFVBID0gJyc7Cmdsb2JhbFRoaXMuYXBwRGF0YSA9IHt9OwpnbG9iYWxUaGlzLmRldmljZSA9IHt9OwpnbG9iYWxUaGlzLm5hdGl2ZUVuY29kZSA9ICcxNDQ5NjgyOTQ5JzsKZ2xvYmFsVGhpcy5wayA9IE5PREVSU0EuTm9kZVJTQSgKICAgIGAtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXRTd290YnU3VUVvblVDekNzSlhQClNwWU9ya3VNbnB5azI0UEJRc2trY3dZWnNVVHdiaDhZOXZIdVBJZXJoM0FmWloxbHVGVjl5UEMyODJ4aU5YKy8KK0lBeldIV0c2TStkV21KbkR5eWJlVVZUaDdIN1lWTTMxZVNSOVRGVDRWQVNyN05mdGdDdjdoZlMybVZOTDBzeApSck1TUFNYYTZTYmprSWVXNEdUcFlwV0tlaEtmYXFyZ0R3VmZGQ3U2N29nTDlKTElkRHh2V3RoSWU0MnVVTW56CjRJSTEvcGRyUHRXUnUwQ0RqYXh2c0x6MjZVZE1HU0wzZ0ZFbG9hSmhwNEt1SVBLNFJsSXgrOXQyOEgwMCszSXAKZVZpcm1pYXlEWUpRZTFjamlES29FUlNrTHViSlJEMnlqNVgzdHJHbWdYZXgzUWtjUnR4NVVOWFlrTEV1RU1ORwppd0lEQVFBQgotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1gLAogICAgJ3BrY3M4LXB1YmxpYy1wZW0nLAogICAgewogICAgICAgIGVuY3J5cHRpb25TY2hlbWU6ICdwa2NzMScsCiAgICB9LAopOwpnbG9iYWxUaGlzLmltZ1VybCA9IGZ1bmN0aW9uIChwaWMpIHsKICAgIGlmIChwaWMuc3RhcnRzV2l0aCgnaHR0cCcpKSByZXR1cm4gcGljOwogICAgcmV0dXJuIGFwcERhdGEuaW1nX3VybCArIHBpYzsKfQoKdmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflkKzkuaYnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+iAgeeZveaVheS6i1vlkKxdJywKICAgIGhvc3Q6ICdodHRwczovL2xhZ3Mub3NzLWNuLWhhbmd6aG91LmFsaXl1bmNzLmNvbS8nLAogICAgdXJsOiAnJywKICAgIHNlYXJjaFVybDogJyNmeXBhZ2UnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcjogJycsCiAgICBmaWx0ZXJfdXJsOiAnJywKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAg6aKE5aSE55CGOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGRldmljZSA9IGdldEl0ZW0oJ2RldmljZScsICd7fScpOwogICAgICAgIGlmICh0eXBlb2YgZGV2aWNlID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgIGRldmljZSA9IEpTT04ucGFyc2UoZGV2aWNlKTsKICAgICAgICB9CiAgICAgICAgLy8gZGV2aWNlID0gSlNPTi5wYXJzZShkZXZpY2UpOwogICAgICAgIGlmICghZGV2aWNlLmlkKSB7CiAgICAgICAgICAgIGRldmljZSA9IHJhbmREZXZpY2VXaXRoSWQoMzIpOwogICAgICAgICAgICBkZXZpY2UuaWQgPSBkZXZpY2UuaWQudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgZGV2aWNlLnVhID0gJ0RhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgJyArIGRldmljZS5yZWxlYXNlICsgJzsgJyArIGRldmljZS5tb2RlbCArICcgQnVpbGQvJyArIGRldmljZS5idWlsZElkICsgJyknOwogICAgICAgICAgICBzZXRJdGVtKCdkZXZpY2UnLCBKU09OLnN0cmluZ2lmeShkZXZpY2UpKQogICAgICAgIH0KICAgICAgICAvLyBsb2coJ2RldmljZTonKTsKICAgICAgICAvLyBsb2coZGV2aWNlKTsKICAgICAgICBhcHBVQSA9ICcoTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkICcgKyBkZXZpY2UucmVsZWFzZSArICc7ICcgKyBkZXZpY2UubW9kZWwgKyAnIEJ1aWxkLycgKyBkZXZpY2UuYnVpbGRJZCArICc7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNjguMC4zNDQwLjcwIE1vYmlsZSBTYWZhcmkvNTM3LjM2KSc7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChydWxlLmhvc3QgKyAnLycgKyBhcHBWZXJzaW9uICsgJy5qc29uJyk7CiAgICAgICAgICAgIGxldCBjb250ZW50ID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgLy8gbG9nKGNvbnRlbnQuZGF0YSk7CiAgICAgICAgICAgIHZhciBkYXRhcyA9IGNvbnRlbnQuZGF0YS5zcGxpdCgnJDZjMWNlZjc4YWU9Jyk7CiAgICAgICAgICAgIHZhciBqc29uID0gJyc7CiAgICAgICAgICAgIGZvciAobGV0IGQgb2YgZGF0YXMpIHsKICAgICAgICAgICAgICAgIC8vIGpzb24gKz0gcGsuZGVjcnlwdFB1YmxpYyhkLCAndXRmOCcpLnJlcGxhY2UoL15ccypcbnxccyokL2dtLCAnJyk7CiAgICAgICAgICAgICAgICBqc29uICs9IHBrLmRlY3J5cHRQdWJsaWMoZCwgJ3V0ZjgnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBhcHBEYXRhID0gSlNPTi5wYXJzZShqc29uKTsKICAgICAgICAgICAgLy8gbG9nKGFwcERhdGEpOwogICAgICAgICAgICBhcHBVQSA9IGFwcERhdGEudWEgKyAnLycgKyBhcHBWZXJzaW9uICsgYXBwVUE7CiAgICAgICAgICAgIGxvZygnYXBwVUE6JyArIGFwcFVBKTsKICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7CiAgICAgICAgfQogICAgICAgIHJ1bGUuaGVhZGVycyA9IHsKICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBhcHBVQSwKICAgICAgICAgICAgUmVmZXJlcjogYXBwRGF0YS5odHRwX3JlZmVyZXIsCiAgICAgICAgfQogICAgfSksCiAgICBjbGFzc19wYXJzZTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoYXBwRGF0YS5qc29uX3VybCArICdjYXQvaW5kZXguanNvbicsIHsKICAgICAgICAgICAgaGVhZGVyczogcnVsZS5oZWFkZXJzCiAgICAgICAgfSk7CiAgICAgICAgbGV0IGNvbnRlbnQgPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgIGxldCBkYXRhcyA9IGNvbnRlbnQuZGF0YTsKICAgICAgICBsZXQgY2xhc3NlcyA9IFtdOwogICAgICAgIGxldCBmaWx0ZXJPYmogPSB7fTsKICAgICAgICBmb3IgKGxldCBkYXRhIG9mIGRhdGFzKSB7CiAgICAgICAgICAgIGxldCBuYW1lID0gZGF0YS50aXRsZS5yZXBsYWNlKCfliIbnsbsnLCAnJyk7CgogICAgICAgICAgICBsZXQgdHlwZSA9IHsKICAgICAgICAgICAgICAgIGtleTogJ3R5cGUnLAogICAgICAgICAgICAgICAgbmFtZTogJ+exu+WeiycsCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHZhciBjdmFsdWVzID0gZGF0YS50eXBlcy5yZWR1Y2UoKHJlc3VsdCwgdCkgPT4gewogICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe246IHQubmFtZSwgdjogdC50eXBlX2lkfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHR5cGVbJ2luaXQnXSA9IGN2YWx1ZXNbMF1bJ3YnXTsKICAgICAgICAgICAgdHlwZVsndmFsdWUnXSA9IGN2YWx1ZXM7CiAgICAgICAgICAgIGxldCBzb3J0ID0gewogICAgICAgICAgICAgICAga2V5OiAnc29ydCcsCiAgICAgICAgICAgICAgICBuYW1lOiAn5o6S5bqPJywKICAgICAgICAgICAgICAgIGluaXQ6ICdob3QnLAogICAgICAgICAgICB9OwogICAgICAgICAgICBsZXQgc29ydFZhbHVlcyA9IFtdOwogICAgICAgICAgICBzb3J0VmFsdWVzLnB1c2goe246ICfpu5jorqQnLCB2OiAnaW5kZXgnfSk7CiAgICAgICAgICAgIHNvcnRWYWx1ZXMucHVzaCh7bjogJ+eDremXqCcsIHY6ICdob3QnfSk7CiAgICAgICAgICAgIHNvcnRWYWx1ZXMucHVzaCh7bjogJ+i/nui9vScsIHY6ICdzZXJpYWwnfSk7CiAgICAgICAgICAgIHNvcnRWYWx1ZXMucHVzaCh7bjogJ+WujOe7kycsIHY6ICdkb25lJ30pOwogICAgICAgICAgICBzb3J0Wyd2YWx1ZSddID0gc29ydFZhbHVlczsKCiAgICAgICAgICAgIGZpbHRlck9ialt0eXBlWydpbml0J11dID0gW3R5cGUsIHNvcnRdOwogICAgICAgICAgICBjbGFzc2VzLnB1c2goewogICAgICAgICAgICAgICAgdHlwZV9pZDogdHlwZVsnaW5pdCddLAogICAgICAgICAgICAgICAgdHlwZV9uYW1lOiBuYW1lLAogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgLy8gbG9nKGNsYXNzZXMpOwogICAgICAgIGlucHV0ID0gY2xhc3NlczsKICAgICAgICBob21lT2JqLmZpbHRlciA9IGZpbHRlck9iajsKCiAgICB9KSwKICAgIOaOqOiNkDogJycsCiAgICDkuIDnuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgVk9EUyA9IFtdOwogICAgICAgIGxldCB0eXBlID0gTVlfRkwudHlwZSB8fCBNWV9DQVRFOwogICAgICAgIGxldCBzb3J0ID0gTVlfRkwuc29ydCB8fCAnaG90JzsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoYXBwRGF0YS5qc29uX3VybCArICdjYXRfbGlzdC8nICsgdHlwZSArICcvJyArIHNvcnQgKyAnLycgKyBNWV9QQUdFICsgJy5qc29uJywge2hlYWRlcnM6IHJ1bGUuaGVhZGVyc30pOwogICAgICAgIGxldCBjb250ZW50ID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBsZXQgZGF0YXMgPSBjb250ZW50LmRhdGE7CiAgICAgICAgbGV0IGJvb2tzID0gW107CiAgICAgICAgZm9yIChsZXQgYm9vayBvZiBkYXRhcy5ib29rcykgewogICAgICAgICAgICBib29rcy5wdXNoKHsKICAgICAgICAgICAgICAgIHZvZF9pZDogYm9vay5ib29rX2lkLAogICAgICAgICAgICAgICAgdm9kX25hbWU6IGJvb2submFtZSwKICAgICAgICAgICAgICAgIHZvZF9waWM6IGltZ1VybChib29rLnBpYyksCiAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogYm9vay5zdGF0dXMsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBWT0RTID0gYm9va3M7CiAgICB9KSwKICAgIOS6jOe6pzogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaWRzID0gW29ySWRdOwogICAgICAgIGxldCBib29rcyA9IFtdOwogICAgICAgIGZvciAobGV0IGlkIG9mIGlkcykgewogICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoYXBwRGF0YS5qc29uX3VybCArICdjb250LycgKyBpZCArICcuanNvbicsIHtoZWFkZXJzOiBydWxlLmhlYWRlcnN9KTsKICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgICAgICBsZXQgZGF0YSA9IGNvbnRlbnQuZGF0YTsKICAgICAgICAgICAgbGV0IGJvb2sgPSB7CiAgICAgICAgICAgICAgICB2b2RfbmFtZTogZGF0YS5uYW1lLAogICAgICAgICAgICAgICAgdm9kX3BpYzogaW1nVXJsKGRhdGEucGljKSwKICAgICAgICAgICAgICAgIHR5cGVfbmFtZTogJycsCiAgICAgICAgICAgICAgICB2b2RfeWVhcjogZGF0YS50aW1lLAogICAgICAgICAgICAgICAgdm9kX2FyZWE6ICcnLAogICAgICAgICAgICAgICAgdm9kX3JlbWFya3M6IGRhdGEuc3RhdHVzLAogICAgICAgICAgICAgICAgdm9kX2FjdG9yOiBkYXRhLnRlbGxlciwKICAgICAgICAgICAgICAgIHZvZF9kaXJlY3RvcjogJycsCiAgICAgICAgICAgICAgICB2b2RfY29udGVudDogZGF0YS5zeW5vcHNpcywKICAgICAgICAgICAgICAgIHZvZF9wbGF5X2Zyb206ICfpgZPplb/lnKjnur8nLAogICAgICAgICAgICB9OwogICAgICAgICAgICAvLyBsb2coYm9vayk7CiAgICAgICAgICAgIGxldCB1cyA9IGRhdGEucGxheV9kYXRhCiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChiKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFBsYXlVcmwoYm9vay52b2RfbmFtZSwgYi5uYW1lKSArICckJyArIGRhdGEuYm9va19pZCArICctJyArIGIucGxheV9pZDsKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuam9pbignIycpOwogICAgICAgICAgICBib29rLnZvZF9wbGF5X3VybCA9IHVzOwogICAgICAgICAgICBib29rcy5wdXNoKGJvb2spOwogICAgICAgIH0KICAgICAgICBWT0QgPSBib29rcy5sZW5ndGggPiAwID8gYm9va3NbMF0gOiB7fTsKICAgIH0pLAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCB0aW1lID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApOwogICAgICAgIHRpbWUgPSB0aW1lIC0gKHRpbWUgJSA2MCk7CiAgICAgICAgbGV0IHQgPSBDcnlwdG9KUy5lbmMuSGV4LnN0cmluZ2lmeShDcnlwdG9KUy5NRDUoQ3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkoQ3J5cHRvSlMuTUQ1KCdzZWFyY2gwMCcpKS50b1N0cmluZygpICsgbmF0aXZlRW5jb2RlICsgdGltZSkpLnRvU3RyaW5nKCk7CiAgICAgICAgbGV0IGRhdGEgPSB7CiAgICAgICAgICAgIG06ICdzZWFyY2gnLAogICAgICAgICAgICB0OiB0LAogICAgICAgICAgICBhaWQ6IDAsCiAgICAgICAgICAgIHBpZDogMCwKICAgICAgICAgICAga2V5OiBLRVksCiAgICAgICAgfTsKICAgICAgICAvLyB2YXIgcGFyYW1zID0gcGsuZW5jcnlwdChKU09OLnN0cmluZ2lmeShkYXRhKSwgJ2Jhc2U2NCcpLnJlcGxhY2UoL15ccypcbnxccyokL2dtLCAnJyk7CiAgICAgICAgdmFyIHBhcmFtcyA9IHBrLmVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YSksICdiYXNlNjQnKTsKICAgICAgICBsb2coJ3BhcmFtc+mVv+W6pjonICsgcGFyYW1zLmxlbmd0aCk7CiAgICAgICAgbGV0IHBvc3Rfb2JqID0gewogICAgICAgICAgICBwYXJhbXM6IHBhcmFtcywKICAgICAgICAgICAgdmVyc2lvbjogYXBwVmVyc2lvbiwKICAgICAgICB9OwogICAgICAgIGxldCBwb3N0X2RhdGEgPSBgcGFyYW1zPSR7cGFyYW1zfSZ2ZXJzaW9uPSR7YXBwVmVyc2lvbn1gOwogICAgICAgIC8vIGxvZygncG9zdF9kYXRhOicgKyBwb3N0X2RhdGEpOwogICAgICAgIGxvZygnYXBpX3VybDonICsgYXBwRGF0YS5hcGlfdXJsKTsKICAgICAgICBsZXQgaGVhZGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocnVsZS5oZWFkZXJzKSk7CiAgICAgICAgLy8gaGVhZGVyc1snQWNjZXB0J10gPSAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJzsKICAgICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOwogICAgICAgIGxldCBodG1sID0gcG9zdChhcHBEYXRhLmFwaV91cmwsIHsKICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycywKICAgICAgICAgICAgLy8gYm9keTogcG9zdF9kYXRhLAogICAgICAgICAgICBkYXRhOiBwb3N0X29iaiwKICAgICAgICB9KTsKICAgICAgICBsZXQgY29udGVudCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgdmFyIGRhdGFzID0gY29udGVudC5kYXRhOwogICAgICAgIGxldCBib29rcyA9IFtdOwogICAgICAgIGZvciAobGV0IGJvb2sgb2YgZGF0YXMuYm9va3MpIHsKICAgICAgICAgICAgYm9va3MucHVzaCh7CiAgICAgICAgICAgICAgICB2b2RfaWQ6IGJvb2suYm9va19pZCwKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiBib29rLm5hbWUsCiAgICAgICAgICAgICAgICB2b2RfcGljOiBpbWdVcmwoYm9vay5waWMpLAogICAgICAgICAgICAgICAgdm9kX3JlbWFya3M6IGJvb2suc3RhdHVzLAogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgVk9EUyA9IGJvb2tzOwogICAgfSksCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHZhciBpbmZvID0gaW5wdXQuc3BsaXQoJy0nKTsKICAgICAgICBsZXQgdGltZSA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKTsKICAgICAgICB0aW1lID0gdGltZSAtICh0aW1lICUgNjApOwogICAgICAgIGxldCB0ID0gQ3J5cHRvSlMuZW5jLkhleC5zdHJpbmdpZnkoQ3J5cHRvSlMuTUQ1KENyeXB0b0pTLmVuYy5IZXguc3RyaW5naWZ5KENyeXB0b0pTLk1ENSgncGxheScgKyBpbmZvWzBdICsgaW5mb1sxXSkpLnRvU3RyaW5nKCkgKyBuYXRpdmVFbmNvZGUgKyB0aW1lKSkudG9TdHJpbmcoKTsKICAgICAgICBsZXQgZGF0YSA9IHsKICAgICAgICAgICAgbTogJ3BsYXknLAogICAgICAgICAgICB0OiB0LAogICAgICAgICAgICBhaWQ6IGluZm9bMF0sCiAgICAgICAgICAgIHBpZDogaW5mb1sxXSwKICAgICAgICB9OwogICAgICAgIC8vIHZhciBwYXJhbXMgPSBway5lbmNyeXB0KEpTT04uc3RyaW5naWZ5KGRhdGEpLCAnYmFzZTY0JykucmVwbGFjZSgvXlxzKlxufFxzKiQvZ20sICcnKTsKICAgICAgICB2YXIgcGFyYW1zID0gcGsuZW5jcnlwdChKU09OLnN0cmluZ2lmeShkYXRhKSwgJ2Jhc2U2NCcpOwogICAgICAgIC8vIGxvZygncGFyYW1zOicgKyBwYXJhbXMpOwogICAgICAgIC8vIGxvZyhbcGFyYW1zXSk7CiAgICAgICAgbG9nKCdwYXJhbXPplb/luqY6JyArIHBhcmFtcy5sZW5ndGgpOwogICAgICAgIGxldCBwb3N0X29iaiA9IHsKICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsCiAgICAgICAgICAgIHZlcnNpb246IGFwcFZlcnNpb24sCiAgICAgICAgfTsKICAgICAgICBsZXQgcG9zdF9kYXRhID0gYnVpbGRVcmwoJycsIHBvc3Rfb2JqKS5zbGljZSgxKTsKICAgICAgICAvLyBsZXQgcG9zdF9kYXRhID0gYHBhcmFtcz0ke3BhcmFtc30mdmVyc2lvbj0ke2FwcFZlcnNpb259YDsKICAgICAgICAvLyBsb2coJ3Bvc3RfZGF0YTonICsgcG9zdF9kYXRhKTsKICAgICAgICBsb2coJ2FwaV91cmw6JyArIGFwcERhdGEuYXBpX3VybCk7CiAgICAgICAgbGV0IGhlYWRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJ1bGUuaGVhZGVycykpOwogICAgICAgIC8vIGhlYWRlcnNbJ0FjY2VwdCddID0gJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKic7CiAgICAgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzsKICAgICAgICBsZXQgaHRtbCA9IHBvc3QoYXBwRGF0YS5hcGlfdXJsLCB7CiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsCiAgICAgICAgICAgIC8vIGJvZHk6IHBvc3RfZGF0YSwKICAgICAgICAgICAgZGF0YTogcG9zdF9vYmosCiAgICAgICAgfSk7CiAgICAgICAgbGV0IGNvbnRlbnQgPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgIHZhciBkYXRhcyA9IGNvbnRlbnQuZGF0YTsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgIHVybDogZGF0YXMudXJsLAogICAgICAgICAgICBoZWFkZXI6IHsKICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogYXBwVUEsCiAgICAgICAgICAgICAgICBSZWZlcmVyOiBhcHBEYXRhLnJlZmVyZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0pLAp9
\ No newline at end of file
diff --git a/drpy_js/耐看.js b/drpy_js/耐看.js
deleted file mode 100644
index d369578..0000000
--- a/drpy_js/耐看.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICfogJDnnIsnLAogIGhvc3Q6ICdodHRwczovL25rdm9kLmNvbScsCiAgdXJsOiAnL3Nob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogIHNlYXJjaFVybDogJy9pbmRleC5waHAvcnNzL2luZGV4LnhtbD93ZD0qKicsCiAgc2VhcmNoYWJsZTogMiwKICBxdWlja1NlYXJjaDogMCwKICBmaWx0ZXJhYmxlOiAwLAogIGZpbHRlcjogJycsCiAgZmlsdGVyX3VybDogJycsCiAgZmlsdGVyX2RlZjoge30sCiAgaGVhZGVyczogewogICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICB9LAogIHRpbWVvdXQ6IDUwMDAsCiAgY2xhc3NfcGFyc2U6ICcuZmxleC5hcm91bmQmJmxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS5odG1sJywKICBjYXRlX2V4Y2x1ZGU6ICcnLAogIHBsYXlfcGFyc2U6IHRydWUsCiAgbGF6eTogImpzOlxuICBpbnB1dCA9IHsgcGFyc2U6IDEsIHVybDogaW5wdXQsIGpzOiAnJyB9OyIsCiAgZG91YmxlOiB0cnVlLAogIOaOqOiNkDogJyonLAogIOS4gOe6pzogJ2JvZHkmJi5wdWJsaWMtbGlzdC1ib3g7YSYmdGl0bGU7aW1nJiZkYXRhLXNyYzsucHVibGljLWxpc3Qtc3VidGl0bGUmJlRleHQ7YSYmaHJlZicsCiAg5LqM57qnOiB7CiAgICB0aXRsZTogJ2gzJiZUZXh0Oy5obC1tYTAmJlRleHQnLAogICAgaW1nOiAnLm1hc2stMSYmZGF0YS1zcmMnLAogICAgZGVzYzogJy5kZXRhaWwtaW5mbyAuc2xpZGUtaW5mbzplcSgxKS0tc3Ryb25nJiZUZXh0Oy5kZXBsb3ltZW50Lm5vbmUuY29yNSYmc3BhbiYmVGV4dDsuZGVwbG95bWVudC5ub25lLmNvcjUmJnNwYW46ZXEoMikmJlRleHQ7LmRldGFpbC1pbmZvIC5zbGlkZS1pbmZvOmVxKDMpLS1zdHJvbmcmJlRleHQ7LmRldGFpbC1pbmZvIC5zbGlkZS1pbmZvOmVxKDIpLS1zdHJvbmcmJlRleHQnLAogICAgY29udGVudDogJyNoZWlnaHRfbGltaXQmJlRleHQnLAogICAgdGFiczogJy5hbnRob2xvZ3ktdGFiIGEnLAogICAgbGlzdHM6ICcuYW50aG9sb2d5LWxpc3QtcGxheTplcSgjaWQpJiZsaScsCiAgICB0YWJfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgbGlzdF90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICBsaXN0X3VybDogJ2EmJmhyZWYnLAogIH0sCiAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBpdGVtcyA9IHBkZmEoaHRtbCwgJ3JzcyYmaXRlbScpOwogICAgICAgIC8vIGxvZyhpdGVtcyk7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgaXQgPSBpdC5yZXBsYWNlKC90aXRsZXxsaW5rfGF1dGhvcnxwdWJkYXRlfGRlc2NyaXB0aW9uL2csICdwJyk7CiAgICAgICAgICAgIGxldCB1cmwgPSBwZGZoKGl0LCAncDplcSgxKSYmVGV4dCcpOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsICdwJiZUZXh0JyksCiAgICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsICdwOmVxKDMpJiZUZXh0JyksCiAgICAgICAgICAgICAgICBjb250ZW50OiBwZGZoKGl0LCAncDplcSgyKSYmVGV4dCcpLAogICAgICAgICAgICAgICAgcGljX3VybDogIiIsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAp9
\ No newline at end of file
diff --git a/drpy_js/胖虎影视.js b/drpy_js/胖虎影视.js
deleted file mode 100644
index 11b0267..0000000
--- a/drpy_js/胖虎影视.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/腾云驾雾[官].js b/drpy_js/腾云驾雾[官].js
deleted file mode 100644
index 2c9d1e3..0000000
--- a/drpy_js/腾云驾雾[官].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV+k3bQea0IC3/XhlcW6nAZKQ+lyhEPQG61IdCxKcFyZ0KU3VWsRAa6+J6H4elJyDhU7rkdcOMnk4Rq7w+wcgWQSPWIk2JHZVs453xWjworiWHnzha79de9lu7cFSltDiASA1MPiOyEyOGbbcOiWPe5uLN6bYA9Dm30U2dHkIgN1T94ZAGY1ieYrHNUTItm44iqSQAW45K/MNw1KuPfBlMngcsop/fm8v0LTdF9TiokFuDjVoQ05inNCgjmyH3JRUE1jbvfWuoGDuY+yoTY50UGyipvsVegKqcJmI2cY6lqJsrPfWf2zcq9ETCU9sCeLQO0JDyvAxwpAmb2GyIgpwWn4y9Kdni1WX5NaoGmQwQfbUAIbyXfRnw7/IHnDfb0WdktoWYxm4nWGU5eaPHm3eVonPZ7EvnPpfxOgypDGASSE2u5ir7aELXMaMqdIw8SfclIZyQY0MPabFype/GciDnmh7EJmkrHIlZBA+AzSOvgxGwcgGv1bpJaWVeR7hcyWF3XHJZCMimmVOk6Shlo59rLKrhdlVM+rIH2SfTOBRNQmgdBABmI2B6DQsrg4TaWsHhdqgfRTGpSETy3vDZEZW+EcHXCIY78X1/9p6u/5JFYey7iP54ZmKNx9gdaTvQlpSDHBeWZI2G9qFWNcQgvWUFCdEezCtC37F3ooN0NRP6Wa+k4L3axdCETZIY7KLdG5KPdbch3QFrafRAL5XlflQyM8Ylq9nq7lkZGVPh8H8dMphyKrmtuysOuvAahbpN+3timcMbJ1sjEqai/jyhmRuM9QT+PQ9dCJaGOxaNBttOq4ux1abHLpuNTONRcyaCVmRdW2r/Bu9N8ca6ke9A2J4MtThY/3aeUzRsnO07DYWWgi5xGnuMX3DpZ6KGsgPHCscaeRxDBjFXH61OzxsiiziSeOZgDLDIJJ/bOpd4Z3w4YQ8rOLrgCTZLFxsXAfKFbkqxg8+8xuY/Y5M7N4LhdynQMLZRo7x0ozEwbjnV2lwc1KPMUsHyEE9ITSAFpzRP/uBYOh0brsFZXILmKe/7RFXI2Xx6TPgyz3j3lT8kIwNzgDKhA41SvGntTW5hjELCX1qVv8PJMSRDBDlZRX2DoZmIPIizRSH7PQJpK2dy2zObmYGuqx7tEwixlal7O3Hpm8p/zmdrM92UETAIi5IWARHe3jfDydB76auVSOnZ+w3ceFQv1UYkCtrNdRd+WOj7mv9G0pc3bw0WCvzJnjt+q9cvWfDYzCDzfR6od8ZXAB6zrFbxRtrOOOBbkkken8Tf1dXMxJFb/PhuUGZDom8iXBDfms4mvkiiwFASh5d3M/2OPRWZz9P5PgDpqt5rnbjl5y0O7/Ja6K7hBd1fQttQMXlLf138zsPzMVeS8ZQz2Bbdre9g7hacBS/J3en5Cy12MXQPuhMPlxSPUR4QV1tR0BhBp8Pg1aN83TD2DNitZXk4BoJwwhECJg4MBvtL8NeWC7m+BKFKe4qj1GL7ZrrJfp4mU142WRglgINXSGfw+k8rMcmfD4BrAd98uXm87vMlVdLHJ5ETZ9xu5Qu1ceP5GAO+bH+L5Jlt1MdoH/vvt/KK1WYZtt5bO+kXN4j9JDsVD582h6JoXm/1w66a5fr47GbxpXHuizG7acCjC0CB93ovZyVwmzrifmez+dv+hDvcFOoUhUm8NgkdP54UsPo05uJmAvFjPyRep7sMhKPMtJdjBobJAJwCAzqlxDZgeEXvahGg6wjKfBDrbgTqPKR+5oc6w+7qC7poMJeuln6FItBPQ0x2niqhqiYkjScxn3A4c79z/Ww/qKOBjebUSya9npZWo2oV5/TPXfbPNwGaVeI9UpmMSJvUVbOpTSb6EIFKXWP+aaaYmNrOYboby7Gg7EW43piba604tD1mn2RUp1zQ/FpPlDi28tsTArgT0PW3caZSSYXG4wXcCe7EF2SDPL9NtKBfeRlinoq2RrjOKoOYuzPFiNIpZOHpatVRItBq6TtEvyC3Ccu4vkRKGKj9kMbvjx5AVohzRCGcGTXx6PKQfaf3XNzMGxvlKD4jBxVMMlxDLnKBN2+SvGziORhQoMGahMoWTUVKNleyAXUO1nE6kf1WEsfOX0Rbf21TOcavNiuNCx9yTicC7oMp1iwznt/j0P1S6/y/6UHqifx6svPwhag5cbivLKxnX64P5MDIick99lbbYxMiYIejuDJuA/dixVtGqb3tsQPdLrgIHfSTtDAs4iqQqZptWCk16BM5A1TBaphDBQdRlEZ3lNlx5oubk8/mwuQKSZJPtpc5t0V4qS9GDfDjL2ksrz8mxD+FyIuGojPsVznyxY7Lg68UesBIDAusfmRez4K78WBtKWbvIYoft2myOiISd3ffwC7ldnKnX51b0IcusUY2QcGHnaW52Orc7aAAUnv6xmzgdLxZZThgi+odXtjVBkErui8GqiYLf7EZi9hVGumDUJvODP2MMgOY7Cu7FsF0zgy6nTIhg8RuNYnjEVi25rSigzhb/eloseGeeyz+CJrevAEPFFQYEgI9anh7QtJNkak64Yg0sPZWCgoCi0IQxjrFMWeFGrE8el59HXG07kldvYnEekILx6YaLsr9v4SvYAb62s8X4ZAh7xmY3SLxq29Nr4chgrnhGZjSvUEeGNkALKgrWHWgo/KHQ/rtmltRT5VxbWLJ3YMV6HkqX+YlH2gsxTodApJW/YLmUj57p7NtLDgsghUxjwyyqkRlxsdgD/L0w7zFno7G54q8LX5fmzY9sLYEKuBGvVJTcvnRXDvDIepVohKL/T5wjg12GOx8oweGyqrDcQwaTiFaftkNp40TpyN7XUDDZI3QZUX6OfNreFCth8XyHggUdWlZRW3XyANf7JAlGHjHLlz8x4+qQSAFc6s+3HaulxxuF2dcRPDAdHTSLGblE365aRJu/Xu2MOeNrMXBnHLBtyy386kamKwsdYcq21LSQ7grgDXr4QxTKXsVx3Famj52QehsDs4cPj/O6vE685KB/E0xuJ4NBVX/jZslGJD3oELP9qLPYc7OeeOp8mk7MLsqAFeCZsXo7oBzMnzeW3K/RrTNfBmY+C5EqLL1sEznlqdUSu2vbwlqYwezN5tQD1mU9LOrE1lcXWCpg40fu7/G62mU9qNEbUo56mZmg65Iv0Nv47CEGaJ7W9/1m0G9Me/GnOOTRR3snoy6zTVeQakv1OvP5LGrJ5DHWP1rHsudQb9fGk0TwhQ7JMXmT+BGh09hky7VBPH+A9WeP86mK4wk7juI6kyRc0vgbMLLO82y8f3xsznnz57BCqISx25uRihaM+dmbhkce1QNsGc5JOuDYjNR8vW747TihtA6bZ4Nqyxjgq5EOKQR1cJTqnu7bPyT/vegiADHfrhpyiWhJqrIupZqh9N3g/6PcmuK5Edu2CybNfbPeyGkqrUdO0X5Cannok6bqSdKidcxoYSPHmPRhSU9u/4Ok2HLnZCjS+ceTrgAQSksqOMj5SVLphV3OSCs7Y5BlkM0PqTK9jD5rUAbe6N6aP2NBsfly1XdQgD//bXmDsO4/z6D/YFIBNDn5UUxtWwEdWAiMgj4M5DOi9vbKcSBQbnn9jR5FfdabWpAFBY9OBoWniE7q/H71JgHu6oorRDCL92tHXm2LVS8tBkUhjFT/tbWeayhWrJbVhTT0eUQV6nkQxeferKDV47jfwKsaYUwS0pntAk//bk5n1Nk3W9ZbSLDSJZsJugexSmINxX18mRpUOeNMExeWk9DjHBPv3HmPj+eJbIr/K6YM04JEW/evuIfCXT6vacgNy9lJKsA2KXlh9+IUQvtKVDLLQW4R87mU5pqWnmS7QYLoeMDADXqb6NrbbiPOP5LGD1MziyrVnJ2ORC4Fq9nbsJW2MN3XjRdSQl3w3Nv3pNEE/nXaKuk6EXppSLkQ/qCs6R9ILVzN0wExsPMopaCXoQOaVVz5KUBQwbPnUn5ET/vCUH6VY8Yp1aXSDk187orqWXw8yWyoQxTzZtJGy17uHNoDuBmWOruhPdyfB8Al335MhVzAL4QXODZzK46J0GHxJCXt1gnbqEHc6x8NYt2+ySoeTUCfSrJJm1h4ygvGbzavwXBiWg4JQocuEaoy7a+Ei2RhH0PPdqbH0IppIh0Rq0ZqVzpovFN/0hGLgS/9HeL3/fFdeZZfOqWt8nSvPO5jHecF6uW/RmJdYE3fiXDJVsd6UXwJ9pgBBPQb33smounBNchcU7GrpSsuNbQnzkAinl2goKXD0NvjFxmpBge7zlOxnNJ0XvvTx2lLj9u4+yR+RU5G8YoE8IIddpxE52bFU+Prf7dShTD7k9acjMOJNnck9NsJsEtG5XxGlhFgE5+VVRczAxBtSaCWSqXf7SJutRQ6qOdNfcPDX+wVaG9Go+ZPkzFXTezCRl3suhJELSXONmQ2rewYrOze+R6XDE+XewgaIBQ3Z/xCbJWJyhG4q1mCLpx8EjuaKiU3xYNFffU2+ItJLjh3SQUzWQhNQjgamHToHRSviFwm5tOPCaxN1UgeVC3OqJ4fjiZRt06tCo1J1BMTk5wtmxFSX0EglC335RqabCujn6pBvU+EYK9K53/I+KKBJEzft6IxdsnF/U+XGLsT8JquUm8RFpyyNQ12e6M3K1x5g7jLvcJ5ONYKqrrRr/wkncz+lG7XzO/O59Y26sCV74hVdOUUQfy63xiRv01iA//s2Zj0JWPNAdOYLzDA93GEby2LipASwjasZzXdD25V61uSUxxEsklK6l8Fr+sdxkbWuueHPWweNssItxQaoLePziOZmnq2iXJC6afAdQ4KMg0gv2ZS8sO5vz3GJu2ORQ521hEgVnWtdEHYx/zMrFQiRPXw5Sazw7zIoQKE7D1O1F4+xdhM8u2TP3LSFPr3ZWBKATzpiiqtDCKbLAHdawmDaoxfjPIvCHUk78jJub2gkBEOAp/pIphbL+m+kcT1xpcGikqn52REKm6dTjB7z0My0K1DLufWu7/2X9r56Sw747B3gbr0R7gKNa3bi4tU/JsIRH7cHTjpfQh8xzkXSF11FyuZ+ABrioCMSayoFJdOHTZmWXubXtwaISE7Fy/kFnl7/jkm9cKfbXLneNe5WrrF3dA9QlQta5feizQcuFUMsDcJvyugWZQpodDmovlt2p4y9y/TA2ojpcbQopkBWzSBMwY+iZWjYoyoS195GIqmWwEtVHo9SRWFjnmf97zVmTeyILsYSCakzfaeqy1f0ctwsoL74Tc8dAznqF0yKbZvdF7P/voSh+GiE6aCU1ZfRVjoqRp1kAD0e1VfSJY+GjmdP8VdvrNn7NogFVJTIXxR9kEBggEy85DtDblYdO1+lweBBlU1wBauu9ypA+qS0e/MpnoAZ6zRzs0fGe+3zXp7SUSj75gYl7wPvJPl+wo8s5GJtgsORk7wvpz/da3OxsqvVhBrppaIrSq6w27ywcFMGHQOOmiwB7hlROp4OvUh++ZXaDyG+K6xa9L288B0mn2JAAaUrQHtHRA16zKuGob9Y4BsDEn6BSmwRyWRNAzbGOOlMo3aHZw8+GNBE9ZTzIRZc+6pzeWPAE9ui4+EuMHt7PMBLKN2+9ByMXg26kWKDgCalXRq+Jf8B65dL1OErkBFBF/+B4wMLjE92s+JXXX0bGBasRUXpBtkK9Rbpq1NCh6AdYuWkjo735oVR2zRAzSCfAMWWabhbkEFwPfxxpxd67TrMoKsMC2gvmvIJ/M4B7mllqH+ZA9UO5/BuCS7pQa9jwPnFkwD/dAmclXVr/NOnSVbo1lGZPGCkrUhgCKUpLnZpNnVAqjUPdS8mijUm96+0p0aEaZaB1qbz4bm8xLTZwGYdDsqM0wfo4QrPWoQ7l7qsAMXRF1/M62RugQRPo7r1BHWw9/EUIWfSlPwSbJpGsya7zCHZW10k04uOogTJVZeBRd0obEpNh1id/XHKatG303D2o+hcFifVNCAOmjwRgFZxnYNad/QYk+739VuxlyxzGjSDs5wJb7ocaWRMi43w2aoTJR+Dt+XwRBUjkcnQC/nnwh5SDXo2YQ1mZ4/55PgrCJEIxtKwTLvgW+Cmsyw7psF6plRJ621MRs8aMvdEMQxQZ4w6WYO+bwPZhojXdtsq3+EmKYMjOttxNNlWZc05X6SVIVwM9jttQe5BzZHKpXxaz9noGtA4+C4Ts4xYa/2/97xO7ogu+GZP2nfhVgOpBJa2pV7nQJxYzOcHHOiCbivTCXAvv2znXDEWxMYH1ViUAWTsk8YEfNVe/ZnJs89l8Ipn+qfoJpNpaxl1OxK2pHa4xZyg8EKNwpM5rGoNKtQp1SUWz+/eW120r1VZfvD9S9wpH2I5SwIqVL9z0r4XJiZOFavAsbyuHRaZChzfIm2M1WuBqEvynqodpQg7mrMiS5T9CfH7ha7Esu0T247K5/kPdbEhjocvnk91PXDpWsAVGtIS1QtfCaec+GhfYJst6cfasnFVa7TM8slCsKnqvpJUum8pNX1MB71znpMgFyVdd9fnsBFPlUkwfKsuoJY/b0ftSESoXyY4V6tXcSc3c81ERhz6HBokupDwqs9pBWDfW/XTrcApj7VFF3AyJ+6zRB2dJVynpbSPbqT5/MY3OjSl6mSHL9MHeWcSLLALGhAsBOEVVjZWOfg18oq1QXIPO0pPbSY1Z+TsCBtxJvmxDBeF/h8E3yGR+V/nQ2l0dLykoxKGb0/BBmQ+ppoblxxcOiaejW1RejDT4anMMjiCTZu2B5SQofxl3km0khCSpOfkk3ec4hXTXeXvh96llyfOLJWHht9gFsZ+myddZxwSsorPQriP/PWdqEtoagEzNNUD70zydcENhGYhGQ29vhPVWgvlL+y5dcBKJp0hDLJCZK21vf3trJorHfrk+7QDbrEH3hxzTlLQkHHVd8Nva2+YoCwdqSjsJU8MQdobEgf8M+2pmS73pK9OpIEeAWcv90r+GN9RPWBUOqPsr8dCs1LE8NEQiCdOeRMpfm2WQ3t6QbPUr4+0CuNx2m9dPjIygm08FUeoUWGh6nTfbUag5wFumgSHMPpDx0GTov0cKaMCXaiJOre7kkX9k44QgzOy/LKLuGXP2Ssx6cl5Zij2R+Xm04BtLX2Ny3pUYzPIlm0+wpb1/ES7rtyvmwn7XtuUahkouyUMGc1NRx/3J7vR+MD127bwP8llQ5YYCqkORQJVOs/4x3RrbH80VRiM7WGtQmerPhsmFrvzGVLsn4SqAxWAPuaQMkgP3FDwDp5vCt+wf6olGdxHMsb0pqG2bPzx/f5quhwJ2ngQIN95NOdbZAJ3b+eaidLfNB2AGs4o62ws+g0A5GStFVXfP23jJiY7cS1VjhEes4R2xPB49B5GZUsetiRwjSLyxdNx7iQI0UmWbcEnDcLDREr7RsMrDBbVoy9fX653N76LjyePUugRX5R9/orO/htfutaXCFkyhhExUIVnc+mEcp09S8wNLTohXkFHnOon8G12bIR9qclgzfeOVZIVUVnYMve1AIpcN6ImNKHT21dKR/Zp9OySEMMlIy4v3NJEPaoBdNRHWWKo4P9Y0S/dN5Gyk1MTEpGaepFdBJNWk6siTKX3jbvVk6LwCHr6C4wTDYp7LZAQql76lE5BDZg0LrG3Rx7huPSA2u3jLPuUk2N+xjJg9kTVoXfF9YX5rsUuF/QlPvoj4yOTtVInQsgLaIsDLoDh9goInPEefSWkLGvU+T54nKHEzF6yr4ixKGkOkaghRFWvfINdspxgK/zeWlh2vPC9FaBHHSGcq/yTIoZ8pKSM3C5DU4cqA2ht3fIhrkayvpe/T6R3K2gV0MB5gzxvaBRK7ftKS5PXxPJlWwGCKUy0TL/56ZxHS7HRwU3tdoQ+Sk/YSLY9MXo6Vm2e7wyHjzLmQqwrWJMsxCPqbX1hA4+IXkeaiqG8JwsG2xjzWLDLuscWXRKqQDmbtrlbn01eqvlGCLyiz/rnB9UDXi11OJq9h+P55GlcU1wZwocA/Ejrwf4upm0GeNrRL7xC9uPzlv58R4KKJNSZme1oTPooWBripu7mYF6eMG4k/YdhUXW5EUuHPwG15W8myHD6P1YfFU4B76G0N2w4ET6+9lvQFg/rgXYzRJUwawZLFkNHDjvT0WJLb+56fLGAodoIxNCUXViaYVuxt77MNikBFcgQBwzuPvfdhfAgcGJvPMhK2NiQTXNJeKqCyReBCV0/bvWnKIcpdijHtKV2Cbm8+Q9TYUWTJ8vmfcjoeOihNGPMEZF1gh0LFQxq/7Iid19jLaIhYFBmMn0p47yuGAe4YhkR1r36aTyZwZxusci0oMezh9ufIsQ0Ey9wJmDgpttOUFNQnL3VSMJ8NWrOEvlHocB4YBzrdcvO0ARMpaQ7W/8PdXYmLHw9XoZUYoKbVye6l1xz7PSKFwcDuia9Q+kLKDkkezNKFdWL19drk939KalS3gD84Fa1722bIsvGpcZfEvjwM2wgUiC0CZmiL+kj+podh7BjWRCN0stB9aO0xp2qgjQXM6rnVhGTmlv0xciK5eOWFt9+632x4c1V/fIMM8xtuOk3ifxPU3TJtkle7Nt2thOXeLcJFSqBo9DsCdizN+mJpL4lsF145KjQA9exOrhRr4umKdA+xeADyVW8ElTX3VdZw+trSk6O2K7smwCuHCUi16nDRjx1yBhurmw7Mk6YyDr/JFCFcF36ENt0+HtqgHA/VO0xlxHc0kM8JbmxTc8jNJlLtjNChLWnEvWxCTILuC0rtcADxT7zwLNzaFNmMcHcrHC2yqoWYfkJChOFf6BZ0Rfjpx9E3Kn8Wc9kPOkSJute9YQ/aeBMqwCTaU2VHpeluVRFfbUEMMqkHZNleByDbax7qo6OBaIVEE2pAPIdRH1wRAwp3k3AIsKUQkZsAvbM6N+0bmy9kZcX2As+ZrTuhirpnEJPLb09k5KjtbwmRiK1tl1SUB0Su2myCJPsUJYwONyRwTsH2thVF9C3ZhKzMuJJCfrfukDKFYCZoduccxv+Rs2OEvtCz4elaWIx2asrk0NyNJPa9Tly12C08ZU3J66H4CjXeZeybD5VzXU9A6GK68wt2eQfU0Oy7tBjL7bYQ5G9TuhK01Cei/6aRkXnyt4PUV1RkPS+pra6T+iil/XpN0jkyIZwrDc4B/q/V40Mx9cMDJ5qh8KTsPc1MQYrOoZY5Z1OUBP9q4A3hvk0g3xoZrImctKEsOXFX4sttIHuwHtpMVY4RtiwI4mbCSfDxURlMp5nFyyNA7l18JQqgve6vfiSFCE8fPB93vQlcvfTUoYwlkySklw3o597hdW3HOiz8fJdFL/ejdtOC7pbr1p2DPNpoCUwqf52aqYVvMVsF3ySX3PD+3ZH40cbEcHjpz+27TnTF0oq4cZ9nptERq9GpLzxwP0vgIcqjXJcbpbQHFU7ElS8hspDjfbP1vUbj6UiPHmv1Dvi6KIXjuf3kgSy/MSC0oVSvEzjVnNaIDpV8mvm21b4PP+RMqxQhEqSiaReKycD35CNt2qiw21zAXoB5lWE0ih6CXkI1AFdwh4klr6xDDkG/QmEMAHocMdD7V5BSGPyH5svGQY+mjPC2/0eVdcBgSZYsPL7Aja4lBluU20HqYmVbLCH3kgjiBmLmpWiXDbtwrIGk7TQVztFDa7c3lyy9scLj2jPU0Ormh003BIy7/k5muvEGShjuYRl5dAjLMW+k4m4CpS8Kvnnw9E66XEoMlSsAap4f39R7Ag9vGSdkCyfKvmiinF0R9O4Nno4k9UOx5lfvQlpluZTxhw8cM3zPqmU+8qI5Z+9j5xXMO5Fy33wIxvTrI9K+j5KjFzleHw8GUZo3AYUOggnEcOnbVgEBB0KPAYSjhnNVpScCSQWDUyTQPTp+TuvJOEfUvprHCS+8PbQBsUhhyYrHQPPgqWOySkNk100I/tEXUZmeyWeLNoBnCNK72T2O1sV8VCGZEn56jb/BxmcaQDWYltPqM2EPUKuvbZWKR8OJxBgPZ97gdsuyTYkCrJfz6dSJyXYrbRR9fm1/RphGHjjrtov9ERTDjTRXfTw8Yy//wbMqcuxaFrDu991NfcZpdi3ExCSAtxE83ve5rBJwXBcJnbKMftgB5zKC4cAJul7s31KXfnx9dpuuM4pm4hYXDkFOvIXg+Y0JsCNFIwJaWZqrijjxGfQd10VfZe11TpPkBrIRzC8qAWEvZB7e7zGtE6u5eUI1BR7cv7bN4Bd2IEK5MKwZQu8IgeYFWwfiZJMhAKpn2W9jLsgxKQVMi3jFW5bieez0In9554BwTKiifHMU2pWbBfowOefCnqLuvlMV+ptp1WHKUnexI+broK0KOMkA1Z5V+aEDYZDALAu1WDzZqST/m+oOPElEfnc7a0dk/8N2fe7NT6U+dYM5qf19CpU0v1MS5aRVP0f7f50hrdMIrthh6djhhUxjuqmwYOgERGZDPNOpra8QvfDyPkmltUOLhBxPNifpLLXCRkvixH8RXlM/cX3OudFUvicQUHn95DVCfF8hiY1wIWKBddsZfiFqE0Z778BVQGNpW5zxiXEBo/QQSmWMzCZua/E35r3SEL4F89vw5nLmkTZlBHusjC96asZvBIfg0qkKxoxdwtKVOUmu6dwXThWWx3L3nguTbbyKp8s7D7YxBMev6hS9Txzdw1U1v54jOKiRTUsBmPvGuE3WKmlxKmnHEy9t+llvIKn9cE7o8zcnqlHRY1gYymxVAHwdqwjUiKna6LTq3ZVNgduMjmty0PCzvx0wUPk90rniVToXg/Rkvrx9RL4TwIaZt4cu/iU2e2qRKtGWA/hMrwpoX6BvAw4N2B5OP/PrCHeeRPZjr05s5AnYG2pFOM6fWGWu4Qg75qnh79oJhl23wAAy1AiGy6Zebzs44p+OQAyI/xym/YyKKBo5JkjV3hGPkzxGMOgYxDMTEEg+ewBHfE95VhQw2vQu1YnbQ6J6r0cwzp2EDnqzPtIfxSVCFL+J+FBHnyqKNFNdJggr7xmFE31CgIyZTIGPUONCJ5vNAYize4CfTihTAZzAzTtl4WbeW17u7xJXm+zqQO2LTKPF0XEpyULbKp5jY+PhBiclXZKVjWzjzdrSBc5meN5uNvtDoLuZnyydLmmYuHhB5vRm8R9MwafOwuoQZ6XmMd6jcuHDaoQ2CQ54WLiARh0GTJ95PtVPMZgJKUw9hzdnAJS1QCjppq+Tq9QgEsosExamkiKlX/sO+KES3vuSvSqLovQGq6WScgwqBBXcd3/2fW1oUwNQfZCDNbDKxyxK/FXiYqqPYCsCX4OAgltYwYCDdqwxEcX2DPgB6gCBxinIcBdQIC6bef9pLXmYw3XWqJkMnHq47a5SK/ox9NqHv5Hx7PMSSqjLC6+6PuyRP+doQJa4HdzKMZzNG0p47HgpUxDVOfCJQIm7aSBwqg7bECLfRlrCVM6gdGge/vQSPLOnqwaKpqTz//B18Dy4ChgjfKIzqwfAxQDu235hKfxWx/c2TuiQIomQ4lE/xRnWAiSj1FZwE4XfT+6dShFG7WEaggI/jmfiApj4pfcbK3eGg39FAnzqOwSmCq0BI7JCUjhs/D/783DE0NuKaWTmPQufiakj6P6dNIt239TC0vukwWFJHiSvUc8ug61JclX3Zjd57zccO7rLZb09uDFi3YpobFEGmTrBMnZja3eDrDYG+nbiwomT3+irQuKJN7Q5LI2o+mB8BgadLbx5xd3I0bPxPhdHjqeGBmwwzEiiwI3AyoVKeagrB1+Slxwe+NmXd+YsoXLbaXOJlJ5GK2JTAX3lWYt/rmlxw2H7cvwMnby/2FmGx/CEC2GeLspnknzQLD8Z/Rj/7bR+5SaoP8yn8rrtDIZ3vzFSGqf+IFWbN3BAq6rEGkWRW9eq2zv8DXTrbILyDMmRc7YL5OQJsBRberU7kmoudbLe1pPBGnDphSxRkS6LLjN9/KB7c1pb3XCRTEnGX7Wcl62p+GUmAo/cEvQBuOh46axdy2hz0Ymy3JKXQSifGjORuvwQnan/IYnQOtVK1KoZZYUh8kdtzR7zEsgQJOQmHP6LOp+w3eXHM2YPax0OcLjNDgO3usGLDK8uA63yvh8kwKDR3e9bS9DhcKVSUiunVjZ4l53eFDYRGlxAkEb8h7TPSqkSLdFB9TdtApnGYjSZVD7UxMenQDWAZkBKbfJcaa7WaLLx9CHD+WqfGMPH5RawUwykm/RgK6aENDGsoJjPWAXuQO0OJBM+CQrhrhdJK1pD4W/HdLfC9tAFQxIWTiDngZgVVIRIDklajVX15RnK5xSyVO7f29jKdAgitdtnt/TU0e3N2OEjCKd0xyDippCuUjnHfsoYOq6L10HOS3mZ6du3B4oMVyCbYtjmILe9/ZKtddYNmRKt4hECHgGHLdb9AeH5dT2W5OzSfk4OjoC5P5i0T8AcgsPy5k6gfodJCwGBhBk5Qo4=
\ No newline at end of file
diff --git a/drpy_js/臭蛋蛋.js b/drpy_js/臭蛋蛋.js
deleted file mode 100644
index 5ee46f4..0000000
--- a/drpy_js/臭蛋蛋.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn6Iet6JuL6JuLJywKICAgIGhvc3Q6ICdodHRwczovL2NkZHlzMS5tZScsCiAgICB1cmw6ICIvdm9kc2hvdy9meWNsYXNzZnlmaWx0ZXIuaHRtbCIsCiAgICBkZXRhaWxVcmw6ICcvdm9kZGV0YWlsL2Z5aWQuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0qKicsCiAgICDmkJzntKI6ICdqc29uOmxpc3Q7bmFtZTtwaWM7ZW47aWQnLAogICAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zJiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICfku4rml6Xmm7TmlrB854Ot5pCc5qacJywKICAgIHRhYl9leGNsdWRlOiAn5o6S5bqPJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICJINHNJQUFBQUFBQUFBKzJaM1U0YlJ4VEgzOFhYWE13U2t0QzhTcFdMcUVKcWxEU1ZtclJTRlNFQnhzWTJ4RFlJN0xnMm4rSERVR3dNdUFUV3NmMHlPN1BydCtoNFo4NkgxV2E3VFdtbFNudm4zems3czNQT3pzei96UGh0eWtrOStmcHQ2c1hjejZrbktaay9VZWxNYWlyMTZ0bDNjNXgvZXZieXg3bnd3VmRqYzZZNVNqZkhaZzJwK1NscnJUVDA4OVpxQVh4Kzd0SjJSQUErdFZoV0N4WHJzNEI5RnBwZXZ3RjlHc0ErVDlibFhRLzZOSUR0Y09BRStMN2NlOC9Ody9zTWdDOW9IY3UxTSt1emdPOHJYUGg5OEZsZzQvUTNlelRPTWFEdmFJWEdhUUhIMGpyMkJuc3dGZ1BZTHJzeHFwMUNPd1BZYnVkTWp4emFHWWlUVDdWMDdsZld3V2NBZmVtQ1d2b0ZmQVl3OWw1SlptNGhkZ1BnRzIxdnFQZEgxbWNCKzZ5c0JIa1gralNBOFEzYS91WnZzbjhKSVNMakU2WEQ0QU4rUlFQb0syWmw2UXA4QnZBckRzdjZHOEJYTkVCWmJhanRkY3hxQ09oYkh2cS9RaVFXTUFQOWRiL1htQmp3aEduKzZmaEp1NHdhSGJubXNtVUVIR3NaSFo2TWFsa1loQUZNOVhGTjNWNUFxZzFRc2pycWJvREpDZ0VIUHlqS2VoK0diUUEvMGZtSnRzQW5Nb0MrNnBGcW5JUFBBSTVsOTVUNnRJRHRyanZrczREanpOeDRQWmllRm5qeWdvdFcwRnlnNUNISFNsNjlyNStIemczZ3JGaTlKSjhGVE5EVklma3NZS0RWdm54WEpUY3hTd1Z6RzJBcEpKOEZTdE1XOHhtZzFmR1JSV0tBcFZDMjA1VENNVXpNdjd1dTErdXorUWNjSjRYVFl2cUJ0WVUvbVgyYTdOUGM3cERkNFhaQmRzSHN6bGRvMXorWmZaYnNzOXorbU95UHVmMFIyUjl4KzBPeVArVDJHYkxQY0R2RjYvQjRIWXJYNGZFNkZLL0Q0M1VvWG9mSEt5aGV3ZU1WRksvZzhRcUtWL0I0QmNVcmVMeUM0aFU4WGtIeENoNnZvSGdGajFkUXZJTEhLeWhld2VNVkZLLyt5U2VnS201SXQwUVRFSGx5QXFycXphamFKYWMydlhtdUc4QXJQTmRWbmMwSi83ZlAzN3ltRlgyeExIUFpDZi9yYjc3L1lXNDhscWRUcWVsN3Eyd2lkQ2lxbW9oU1JybDRJOU13YWd0eEtpblp2cEV1N2dzR1lsWW9uNjJrb2lxVXFFb3FTb09qS2didmJwODAyQUpWSVJsVkE0bXpnTy9ieWxMVlk0SHBNK1hNUWx6SitXZDZuYzNvNTdHZ0NDR09SbjZwbGtkcGNxVE9SMml5VmtQeVdhQVNyaU1MZTNKN0g2czQ0RVRSLzZEb2lUS25FbVZPbFBtdmxQbkJmU256YUNIdm55ekFPalhBbFdSNWx5bUpCaHhmZXhoMGNyQnpHTUIyR3kxVkFOVzJRR3MvbzI1QjFTelFubkh0M1pWeHp3aUJiY3lqRHpBV0MraHp6MlI3QjN3RzhIMzFLM1orTm9EdE5uZFZGKzgvREdDNzIxdVZLM251QnAyREoweVloKzZCMW1iSWd3SHM0M0lwV0Z5RDFnYitFOVhVU3FnMUQ0Y2RBdHQ4OVhaTW0rOFlJayt5aVE0bE9wVG9VS0pEZjZwRE0vZWxRMUYzMFg2NkZleURSbG5BTlZ4cyttVzQ3TE9BdnZLT2Y0NTN0UVpvKy96ODNYQlEzZzZLY0NLMWdIM3U3Y3M2N2hrRzRwd1FWY05sOTgwRzhIMFJ0NjFScDJQWjBXbnF3dnNNY04vUk5mTnB3SHdlRHJ4UGNFOXRnVTZrdXpKWGgzWUdhSzVjeVJib3N3WHNzMTVRTmRCWkM1U1hTem1zWWw1Q2lGTmovTHVuem5yZmMvR0t3RUNjRTJMVWJXOXlqa3YwTTlIUFJELy94amx1OXQ2dVdDT3VFaU92SUtPdU5RdE5QMzlLdmpId1ExZC9DN1lWQTVpVVQzdEJHODRmRm5qQ0tpc29JaUhFT1pEcHpaMkUzZ0p1UkpVVnVZWi8yQnFJYytDVTJicm5ybUlSRUFKK3VKVXpmL2tHdGxRRGNRUlVGUS84N2dFV0pDSHdJcWQxeklvY0RaRUgzUC90WDZMWFcveXFkQ3YyVmVrWC9sMHFCeC9KWjRIR0V2Rlg2cnVPZE9HRFdNQjJ5eVdkS1puRHN6SXlSbkkwOUVzdFAxK0RZSkJwQWUycDFhRnVobXNJbUtadWNqbWNGQlZKVVpFVUZmZFZWTXovRG9DZTluS1NKZ0FBIiwKICAgIGZpbHRlcl91cmw6ICIte3tmbC7lnLDljLp9fS17e2ZsLuaOkuW6j319LXt7Zmwu5Ymn5oOFfX0te3tmbC7or63oqIB9fS0tLS1meXBhZ2UtLS17e2ZsLuW5tOS7vX19Igp9
\ No newline at end of file
diff --git a/drpy_js/至臻[盘].js b/drpy_js/至臻[盘].js
deleted file mode 100644
index 050144f..0000000
--- a/drpy_js/至臻[盘].js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teG9uZTUu5LqM57qnLCB7CiAgICBkZXNjOiAnLnZpZGVvLWluZm8taXRlbXM6ZXEoMykmJlRleHQ7LnRhZy1saW5rOmVxKDIpJiZUZXh0Oy50YWctbGluazplcSgzKSYmVGV4dDsudmlkZW8taW5mby1hY3RvcjplcSgxKSYmVGV4dDsudmlkZW8taW5mby1hY3RvcjplcSgwKSYmVGV4dCcsCiAgICBjb250ZW50OiAnLnNxampfYS0tc3BhbiYmVGV4dCcsCiAgICBsaXN0czogJy5tb2R1bGUtcm93LW9uZTplcSgjaWQpJiZhLm1vZHVsZS1yb3ctdGV4dCcsCiAgICBsaXN0X3RleHQ6ICdoNCYmVGV4dCcsCiAgICBsaXN0X3VybDogJ2EmJmRhdGEtY2xpcGJvYXJkLXRleHQnLAogICAgbGlzdF91cmxfcHJlZml4OiAncHVzaDovLycKfSk7CnZhciBydWxlID0gewogICAgdGl0bGU6ICfoh7Poh7tb55uYXScsCiAgICDmqKHmnb86ICdteG9uZTUnLAogICAgaG9zdDogJ2h0dHBzOi8vbWloZHIudG9wJywKICAgIHVybDogJy9pbmRleC5waHAvdm9kL3Nob3cvaWQvZnljbGFzcy9wYWdlL2Z5cGFnZS5odG1sJywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmNhdGVJZH19e3tmbC5hcmVhfX17e2ZsLmJ5fX17e2ZsLmNsYXNzfX17e2ZsLmxhbmd9fXt7ZmwubGV0dGVyfX0vcGFnZS9meXBhZ2V7e2ZsLnllYXJ9fScsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL3ZvZC9zZWFyY2guaHRtbD93ZD0qKicsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBTzJhV1U4alJ4REhuM2MvUmVSbklqUG0zcmU5bDczdks5b0g3MklsS0lSSVFDS2hGUkpnYkd3dUEySXhqczJWQlF3c3hqWVFBa01NWDhZOVkzK0x6TGpiMWQwMVNBeGFsTTFEUC9yL0sxZDNWN2RycXRyejhmSWxqK2E1OHNOSHo4K0JYczhWendkL1Q2QzF6VlBqNmZUL0VyQSttL2tqc2pCcWZmN2QzL0Zib0dMWWFja2t0RjRPcnR1eTljSFRWME5WTXoxRkRvL002REFEM3ZZMmJ5T25rYndSRE1tMENhZ1JtU3ZxVVprMmN6b3dhZlRQeXJRRmFQbkxuTGswSUZPdEZqQVpXVGRuMExRMFRjVEZRZ3BobjZmdm5XM0FvdExoNys3bVFTSFJ0TFVTbDBFaHN5bkx2dXE3NHNuTE5Ea3lzZ25UNUFESUpreVQxNEVHb3BxOFFXZ2dxb0VYV0p2Z2hXcnlWcUc1VUsxcVVzcXNrYkZOMllScE1KZVJyRmxBSmt5VE44NnhJbHNEazlWaHg0cVlCdFBOckJXUGw5QjBxUVpld3RQbHhBYnlRalh3c3JCcHJSRjVvZG81OXNnWTNESm5wNUFKMWNBa09HSU0vb0ZNcUFhaE80cVIwQUVLSGRYZ0p6RS9iY3l0eWlaTWc0Rm1oMHRSSFExRU5Zakw4Ylk1OHhjcDVGRm9RQWJEMkVycE16NDFWQU9UaVRDSjdTQVRxc0dwT1ptMHRoZWRHcXJ4blVvWjgxTjRweW9hbUF5ZG1GL1EwcGtHQVN4TW1VZXAwNVltRVRFRitMc0NmaUVEcEhKa1RIZWJBVmJTNVVTNE9vN3R5RnM4eUpCa2dRSFlzN1dFY1pBOXhZNEJIdXljY1hoOG1qOEtZSVBqcTBacVM3SmpFb3k0dUdGOVRiSmdFa1RxZUFKYk1BbEcyZjJFTFpnRTJ6cWF4eFpNNHVmc2IyekJKRDVLempsS1R2SXhuaVA2bXV5RFN1QmpLR1pGbkVRMlpEZWd3bnhYVDh4WXhvd201Q21EeXRQVGtqRjZZbjFaSGhSVXNBdnRGNDltWlNNcWlRZXN3OS81SXo5Z3BXeW10Tjd2OW9BbEM1WjlkUURia1pkSndoWmdDeWJCUnUrc1lBc213V0dKRjhoNEhCdHhWVGhVRGlNcUNRY1RXekJKT0ZRT0N5b0pSOGF4WmlvSllTZmJRZG1DU21MWWV3UCtMaDUySTc1Zmp1KzVETHV2MWxkZmRXKzc4VllFZ2RaaFdpZFNINlkra1dxWWFpS3R4YlJXb0ZvTG9scUxTSnN4YlJacEU2Wk5JbTNFdEZHa0RaZzJpQlRIU2hOanBlRllhV0tzTkJ3clRZeVZobU9saWJIU2NLenN5bEQ4M1FWNmVnTENFU0NadUpFZGQza0Vyc0x4cW5qeFhnVnlEWkZyUUs0amNoM0lEVVJ1QUxtSnlFMGd0eEM1QmVRMklyZUIzRUhrRHBCV1JGcUIzRVhrTHBCN2lOd0RjaCtSKzBBZUlQSUF5RU5FSGdKNWhNZ2pJSThSZVF6a0NTSlBnRHhGNUNtUVo0ZzhBL0lja2VkQVhpRHlBc2hMUkY0Q2VZWElLeUN2RVhrTjVBMGliNEM4UmVRdGtOcnZXeEN6RmZFbjhMNVh5SUFUMDBTUE9ZNC9UNHkybi9lOTNwNTJ5N3c2UkZIWGpkeU1RSDlxNytubUQ1L3NFSW1FQmRyOTRkZXVnRDJEZHpXWHYvUDR2ckw5NUtuQWV1Z1Y5YlRRYmRtZEhNOGoxalBHcm01a3pKT1FzWlcyU3hzWjh3eG1WV0JXZllWdzQ4VzFpV2RYMEM3NkxscmlrNEY5RW95ZFZ2d3pjbzdlbEd6dkV6MkRUS2gydms3dXJON1VSU2Zub2pkMTBXVzQ2SjZLaDh1T0xvTnB2RTBMR1lrczJneXF3VncraFIwdEk5T0VSc1N4QVV3N3ZYcGtYcHpsbytwUFZIK2krcFAvcWo5UnZZWHFMVlJ2b1hvTDFWdjhuM3VMUzU1NnNiZjRpdXE4M0I4MTAvMm9vcWFhV0JBT0xUb0xRa3VEeVc2ZmxISVIyWVJwNEdVNlk0eWd5MnVtOGFkVHlEaEE5U3ZUK0NOdXQzZzRpYVpMTmFGd0tuOUcwMlVhbU9pYlpIc0JtVkFONXBMY2NmNkhRRFh3TXJObzdPSC9uS2pHVzZzREl4SXI2dE9PMjMrSlFCajMvclRxZFJSR3FvSEgvR0JwWUF6NW9wb3FtbFhSektlc2ltWlZOS3VpV1JYTnFtaFdSYk1xbW1uUlhIZFI3NFBSKy9qcU9PMXRYaUVyMHN0NGtmRU1RbS9pUmFaZDJEMjdpekxkeFZ0U1pqQlRXa2I5QU5OZ29JbDFjektNQnFJYW1Fd3VtRnY0YlNDcVFRalBmak9wTkRsZm1rQi9DekFOQmxwYUprbDBpYzgwWHZlY2VVTnZwSFRuSzFCVWc3bWMvUWFQaTM4eFNNNEs5aDZhQzlWRWs5VmRwNG1sd1I2dEhCZi9RUzlTTVEyOFRDeVNTQko1b1JyL0plMlFER3FsbUFZREpVZU1CR3FDbU1ham15Y25jUnpkaW5aNlFhbnUrVlhMb2xvVzFiS29sa1cxTEtwbEVZaHFXVlRMNG14WkdvU1dSV1ZqbFkxVk5sYlpXR1hqYjVXTmZmVXFIYXQwck5LeFNzY3FIWC9qZE56M0w3SXc2dVBoUFFBQScsCiAgICBjbGFzc19wYXJzZTogJy5ncmlkLWJveCYmdWwmJmxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS5odG1sJywKICAgIGNhdGVfZXhjbHVkZTogJ+e9keWdgHzkuJPpoph85YWo6YOo5b2x54mHJywKICAgIHRhYl9yZW5hbWU6IHsnS1VBS0UxJzogJ+WkuOWFizEnLCAnS1VBS0UxMSc6ICflpLjlhYsyJywgJ1lPVVNFRTEnOiAnVUMxJywgJ1lPVVNFRTExJzogJ1VDMicsfSwKICAgIOS4gOe6pzogJy5tb2R1bGUtaXRlbXMgLm1vZHVsZS1pdGVtO2EmJnRpdGxlO2ltZyYmZGF0YS1zcmM7Lm1vZHVsZS1pdGVtLXRleHQmJlRleHQ7YSYmaHJlZicsCn0=
\ No newline at end of file
diff --git a/drpy_js/色库[密].js b/drpy_js/色库[密].js
deleted file mode 100644
index 1e07578..0000000
--- a/drpy_js/色库[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAAAA3VTW0/UQBR+91f0wZzdJWxLucoiGE180Ig8LDwRQobtsC102+50ykVDAiEQIbCAeAmKYvCy3hVDFBcW/8z2sv/CmSkENPrQ6cx3vvPNOWfOmUBEIp6JpW7p7gVJogY1cUZKREvf/MrmoP9lcSjRyHDddimDdUodN6MoHUWtOO4RR3bxWGuHi8c9mdqOIqgeMRlTMSwNT8mO7igTtqbQaQcrhqaMTudM5LqKg/KYHfhP1mnBFJ4uRiSnD/zLPzadd1MmNaWh4W9nNMLDb+ZA0TNy41mBZqQmjowaJsUkpghAx0jDxM2I1CUpMeBikr6axxZNsBB6+67duHV9eOCq0J/hiwh+2EIFXqPw27G/Oec/rdYqZQgev67vvGNQfXYJgo/l8LhUf1mKVubBX34bHH3wV7+GDw4h+DUbzC/EEISHa/7CQe3oTbi+CEFpN1re8z8/96sPIdzeYbvazz1mhB7/3vdgezX6shfMb0D4Yr++9Soqz4WVXfDXVv0fn+vvn0T7ZQi3qtFWKVp/FpWWoFap+G8e9WchrG4wZu3gMLj/CbK90da6f7zArv7lH1SD2bL/ej9xlln8dio0Qwu0Qhu0Qwdcgk5Qm0BVQW0GtQXUVlDbQG0Xbo6JpocdRFxWEEo8zDET3ZnOSBfHXNYTWUoMK59Mprp74hozM6YSfzXWcTezfbdl4Z0kuOhhlyYNy/FoSi4gmtOTChEXYDIsN1zpTrIldVlJDapDqa5TMTuf5GKpc+IsCabNUZltT5lCmHd5HG1TI8+VfTP8bVMibqNgsCZv53vN9kSbnOZUO5gNK2VWGzlnW5Q1SNo02ETgYrI1BWAaXQhAzE6XUcgDaIiitE2MvGEhs8sB6MdTlHN0gkdF4WqVFSEYV+V07PTmmCooLOZCPr7STBe0dCeAEHdJ7sSuYTfHCcSeBHD+cD0Jk1lPAIpGXM7lBU2PUCudJ7bnSLJpWPiEwlP6L0dCZ2MQrG+H+7uM2cCwmd/krK0OQwQAAA==
\ No newline at end of file
diff --git a/drpy_js/花子动漫[漫].js b/drpy_js/花子动漫[漫].js
deleted file mode 100644
index b2bf754..0000000
--- a/drpy_js/花子动漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/茄子影视[自动].js b/drpy_js/茄子影视[自动].js
deleted file mode 100644
index 80b1e5e..0000000
--- a/drpy_js/茄子影视[自动].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewogIHRpdGxlOiAi6IyE5a2Q5b2x6KeGIiwKICDmqKHmnb86ICLoh6rliqgiLAogIGhvc3Q6ICJodHRwczovL3FpZXppLmZ1biIsCiAgdXJsOiAiL3ZvZHNob3cvZnljbGFzc2Z5ZmlsdGVyLmh0bWwiLAogIGZpbHRlcmFibGU6IDEsCiAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQSsyWlcwOGJSeFRIdjhzK1UybTVKR255bHZ2OWZrK1ZoNmhDYXRRMmxacTBVaFVoQWNhT3Vkb2dZc2UxdVRXQUNjVmdBeUd3cnZHWDhjemEzNkpyejdsdFcxWnVFeXBWM1RkKy83TXplK2FNWitiUDdFdXIwenJ4eFV2cjY5NmZyQk9XR3M3clNOVHFzSjQ5K2JaWDhvOVB2dm1odC9YZ3M2WWNYV2xFVnBxeUIxWmZCNmlwblBjOHFBQVljK01sNklnQlkzb2dxZnRURUFPZ1BrZFdhcFVjOW1tQStzeFBxcjB5OW1tQTJsSGlEUFMrK0p1YU00enZNNEN4ZW1GWmphMUNESURlTjdMaFZqQUdJUEowcDh1Y1p4TW90dlNLOHdTZ1hBckx0ZjE1ek1VQXRZdE5OVEx2c0owQmFqZTc2bVdPN1F5MFUwODl1T2FtSmpGbWdHS1JFVDM0TThZTTBOakxDUlhkeGJFYndGaGpaa3EvV1lJWUFQV1plbFVmZHJCUEF6UysvWFYzK3IycWxIQ0l4UFJFWXJIK2xtYlJBTVVtWWlxeGlURUROSXZWcERjSE9Jc0d1S281UFROSlZXMEJ4WWFxN3E4NEVnQ3FRR1hTTGVkOENmdWt2c2ZOSjJFWjVZcHF6QkhMQ0xtdFpiU1liMlJpbUlRQkt2VnlSdTl1WUtrTmNMR0tlbStmaXRVQ1NuNS9RbVVybUxZQm1xS3QxeHdEb0VLT2xqZ0dRTzNTU3pxM2h1ME1VSjV6NzdnZEFFLzdCNDRCY0M1Rm1VdlIxMjY4cUp4bGJHZUEyZzBsdkVxcE9LNFdaaHJKVXRWTkZOemhEQTZHbUpmd3ZCNnRlczFvRlNQVEU5R2RXaGtYRm9DYzl2cEdvYjdTejlOTzNOYTBaeXZlODlpNUFURU5IQU9ncWQxYzVCZ0FUVU82b3NiVEhHWVdFeVhDQnNRRWN3eEEvR2hFeklDWVlERVNBNktFYWozQ0pXeUNiK1hzYmRmS0ZiRnlrTnNwWVpmZCtUbG9yVCtGZm96MVkxSS95dnBScVI5aC9ZalVlMWp2a1hvMzY5MVM3Mks5UytxZHJIZEszV2JkOWhlbWtOWWI0Nkl3eUg4b0RNbXlNQ2RCT0VuS0tWQk9rWElhbE5Pa25BSGxEQ2xuUVRsTHlqbFF6cEZ5SHBUenBGd0E1UUlwRjBHNVNNb2xVQzZSY2htVXk2UmNBZVVLS1ZkQnVVcktOVkN1a1hJZGxPdWszQURsQmlrM1FibEp5aTFRYnBGeUc1VGJwTndCNVE0cGQwRzVTOG85VU82UmNoK1UrNlE4QU9VQktROUJlVWpLSTFBZWtXSi9kaHcwL3c5RlQwd3BKOEUvRkdML0QwV25keHJwYlE1NjBvdW5YZ1BzdnVZNHVqanRpMy8xOU1WejNwSTJobFE4NW9zLy8vSzc3M3VidVR6dXNMcUVxWFJMWlRVN3loa1JCNnhwWGl6ZVZsaHo4bXdzeGZyeVRqL3ZuQk1oWHBMZWR0VThkampFcTFpdjVac25JSWQ0NGV2M0g5Umlpa05kSW8zV2RpOUMzZjdsK1ZIR09jRG1CSmxWNDdYVXdJNks0Qno0cEhhTXVWcmZVUTV0MWdiYU5Md0hHdk1nd3h0a3pJTXNYWkFCcmUwdHNLVURZRk1iMVJsMFRBRDB2dGN4TnRFQXd1NXh6UURhOVFFZlovOWlVZTk1OHFjdGFNZFcvVk5yR0dUamdtM2p3Vll0MERhbWlwNnpVak1MOUU4QmNtaXovbVN6UXJ0ay9RMjdSTHA5bkhUdlQ2SHplRzA1WHB2SFpjdHgyVHd1VzQ3TDVuRjVmNFkyelFwdDJuL1RwblYvcXJ1L1J2K3dtKy9IRGM2QVBJS0g1c1FSN0FIbHQxNnRGK080NVJxZ2RsTUZQWUszTVFDOGFVYjFMdG9CQU41c3QycDdTZHBzV3lCT3RNWmJ6QVdBWXM2cVdwL0ZtQUY2WDNaVDNHTVpvSGJUYzNxYjdpRU5zRVhkMWZGRXpabmkreWlmUkhYWS9zVXpOVmdIQTlSSGFiQStNSWF0RGZ3cmRzUDRhMHE3Qlg2RHphZFdFL3dPRzJNR3dnTThQTUN0d3p2QWVieTJIRzk0c0Z2aHdmNS9QTmg3UHRYQkhuUjRCMzJBY3lPRitnSWFBZ0RxYzJMRlRlSVhEZ0NLSldmZE5mcEFaWURQcW9NL2lOV1RNL1VKdkNjQm9EN25GMVNXTm1nRDFHZkFQWWJPT2VJam13RjZYOEFucHFBN0cxWDB5clNON3pNZ1kwdGJJdVlCMVhOeHYvWWJmcHdEb0hZVGN5cWV4WFlHK0hlMHFRcG9oZ0Nveit5SXpxQ3BBZUM2bEZRMVRYVnBnVGpVRHZIK28zWGZ4K2Q3RThSSmUrQmR4VithampZVERnMUphRWhDUXhJYWt0Q1FISkloNmZzZHVvd1B4bWNrQUFBPSIsCiAgZmlsdGVyX3VybDogIi17e2ZsLuWcsOWMun19LXt7Zmwu5o6S5bqPfX0te3tmbC7liafmg4V9fS17e2ZsLuivreiogH19LXt7Zmwu5a2X5q+NfX0tLS1meXBhZ2UtLS17e2ZsLuW5tOS7vX19IiwKICBjbGFzc19wYXJzZTogIi5uYXZiYXItaXRlbXMmJmxpO2EmJlRleHQ7YSYmaHJlZjsoXFxkKykiLAp9
\ No newline at end of file
diff --git a/drpy_js/茶杯狐.js b/drpy_js/茶杯狐.js
deleted file mode 100644
index 7d4e7af..0000000
--- a/drpy_js/茶杯狐.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGU9ewp0aXRsZTogJ+iMtuadr+eLkCcsCmhvc3Q6ICdodHRwczovL3d3dy41amNkLmNvbScsCnVybDogJy9zaG93X2Z5ZmlsdGVyLmh0bWwnLApzZWFyY2hVcmw6ICcvc291L3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwnLApzZWFyY2hhYmxlOiAyLHF1aWNrU2VhcmNoOiAwLGZpbHRlcmFibGU6IDEsCmhlYWRlcnM6IHsnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnfSwKZmlsdGVyX3VybDogJ3t7ZmwuYXJlYX19e3tmbC5ieX19e3tmbC5jbGFzc319e3tmbC5jYXRlSWR9fS9wYWdlL2Z5cGFnZXt7ZmwueWVhcn19JywKZmlsdGVyX2RlZjogewonL2lkLzEnOiB7Y2F0ZUlkOiAnL2lkLzEnfSwnL2lkLzInOiB7Y2F0ZUlkOiAnL2lkLzInfSwnL2lkLzMnOiB7Y2F0ZUlkOiAnL2lkLzMnfSwnL2lkLzQnOiB7Y2F0ZUlkOiAnL2lkLzQnfX0sCmNsYXNzX25hbWU6ICfnlLXlvbEm5Ymn6ZuGJue7vOiJuibliqjmvKsnLApjbGFzc191cmw6ICcvaWQvMSYvaWQvMiYvaWQvMyYvaWQvNCcsCmxhenk6ICcnLArmjqjojZA6ICcqJyxkb3VibGU6IHRydWUsCuS4gOe6pzogJy5teXVpLXZvZGxpc3QgbGk7YSYmdGl0bGU7YSYmZGF0YS1vcmlnaW5hbDsucGljLXRleHQmJlRleHQ7YSYmaHJlZicsCuS6jOe6pzogewp0aXRsZTogJy5teXVpLWNvbnRlbnRfX2RldGFpbCAudGl0bGUmJlRleHQ7Lm15dWktY29udGVudF9fZGV0YWlsIHA6ZXEoLTIpJiZUZXh0JywKaW1nOiAnLm15dWktY29udGVudF9fdGh1bWIgLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJywKZGVzYzogJy5teXVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDApJiZUZXh0Oy5teXVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDEpJiZUZXh0Oy5teXVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDIpJiZUZXh0JywKY29udGVudDogJy5jb250ZW50JiZUZXh0JywKdGFiczonLm15dWktcGFuZWwtYm94LmNsZWFyZml4IGgzOm5vdCg6Y29udGFpbnMo54Ot5pKtKSknLApsaXN0czogJy5teXVpLWNvbnRlbnRfX2xpc3Q6ZXEoI2lkKSBhJ30sCuaQnOe0ojogJyNzZWFyY2hMaXN0IGxpO2EmJnRpdGxlOy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsudGV4dC1tdXRlZCYmVGV4dDthJiZocmVmOy5kZXRhaWwmJnA6ZXEoMikmJlRleHQnLApmaWx0ZXI6J0g0c0lBQUFBQUFBQUErMVozVTRiT1JTKzcyUGtHaW1lL1BEVE45aG5XRldyZEJ1cHFDMHJGWFpYcUtyVUxVMUlRcGNRQktGWkFnRzFJY0FTT2lrc0M1T0d2RXpzU2Q1aVo4YU9mWHlNbXFrVTlhS2JTNzd6Y1d4L3gvYjVuSGtSaWM0L2lscVIreisraUR4SkwwZnVSMzVPTGFWL2VCU1ppaXlrbnFXOXY5MVdtKzZ2ZVgvL2xucjZhem9nTG1pdzkwZms1WlJBblZQYTJYYnpxeUxnSjA5WU1rd0x4NzFPMWQzNmgzWmFnQkVIakhLVjVoc21JNjZHeUxYWVNzWmtKQlNqVWFJM2JaT1JsQXoyeHdaN1ZUWVowNUxSYng3UnQ2Y21ZMGJseUwzck9YbVRNYXZXa20vY09kTTVsZVAxbVZzdUdZd0VVVG5xcTNldEplbk45SUhQRVRWN21scGNWQ1hqQXhzbFV6QXNHVmQ4bUR2SUZCV1lMcmxPRVppdXFFNFJtRjU4TkJESDlNcWhnVGltaTRxeWNFeXZESm9MeC9UeTZoU0J5YmtVUHJvZFJCRVlXSkc3MVRaVzVHTjYvUkNGWTNLNnphUGU3UUdhTHNka2x1em1vSEtDc25CTVp0ay85ZGFJc25CTTMyMkl3akZKV1NtdzEzOGhDc2VrTHUwaXpWd2pYVGcycEF6Mk50bTd1azRSbUJ5b3ZOclBPMmdnanNsRkZ6LzAzK05LYzB4UzFyTzArQWxST0NZcjNkM3dTb0lxelRHbGJwWHRsYkM2QVFZUFdlcDVPZ1hPV05XbWJ4M3pqRWxZTzJNZkdvTktkamlDbnlncUlDblpVWVZkZjlRWUFsSnkyT3ptVnMvQklWbVoyM1c2MjlFWUFwS3FYMnhqaG9Da1hHc3R6QkNRekxGVFo5VXpQUWVINUZwcUp6aUhnT1JhYnYvRkRBR3BtZHJtVEcwdHg1ODJkWTcwSEJ5U09kNFVQWlZwN2tSUEkxRzU1bnJYTFRiZGZFVmZ0a1RWY1Q5Z2ExM3ZuL1ZCSlFvM3kzSTY5UnhzbHB2TFhydGpiaFlKdzgwU0k3SEVjQVEvVFRRQVFEU09vM0VZamVGb0RFWXRITFZnbE9Bb0FWRnJEa1d0T1JpZHhkRlpHSjNCMFJrWW5jYlJhUmhONG1nU1JyRldGdFRLd2xwWlVDc0xhMlZCclN5c2xRVzFzckJXRnRTS1lLMEkxSXBnclFqVWltQ3RDTlNLWUswSTFJcGdyUWpVaW1DdENOU0tZSzBJMUlwZ3JRalVpbUN0Q05TS1lLMDhBQjZXaDh2cXFMRDFUZW9VamFPaVlIaFUyTTdWWU9keW1QemhjblJwM2tzaXoydnB1T2M0ek40Q2hNZnpTNHMvL1o1T1AxRTVxcm03V2M5K1dWaDY3TS96d2RTOXdIVEZ4dVdTdld1czV6U0E2L0pkb1pMVHZ5eTFXRUxGL0F0ZGo2a2llZDBDeFJKQXFUcUtxWTNodFJFVVUxdkt2M1QxMk16NG5PZm9CaC9DeW9Vd0d5RXNMajIvb2s0VFVUajJkWVp3bE1VTllRaERXTndReGllRVQvdVM4UmxTdHJPR3JSU1lIS2hUTXRRVm1NeVN1ZXExMGV0QVlPTnlXTm1NRjlBYk00ZkN1NUp4ZUxEUjdpaU1TeHZsZlVLNHRMTHRHUk82ZDZpbmtlamRsZUVyTWdzemNUTVROek54TTkrWG00bVB6YzBFTDFtMy9Sazg2UDJmcUdKZ1lYWHZxalVadW5VcDJpWURHSml6aG5kTm1vemsyT3pJb0hiUnU5bEFSb0pqNnVlUkRIdFRRM2FFWS9KcVB1LzI3WnhPRVpqTXN0bGtCZVJZQktZVXk3QnIxTHdGQnZySTREMmFpOEFreFRtbDUvdUl3akZKMmFxeFMveUxHOGUrV1dmbXhkY2JGWWYwRFlTN3FnL3AyME5uY0dqU3h5WjliTkxIdnQ4K2xoanpxN3h3ekQ3L0RSKzhzL0FhOHB5OHlaaEQxNURCU0lJUE9vRzdOaG5XMlBwWWlJOG83a3F6Zi9nS1VUZ21WN0t4NzU3aGp3VWNVemY3Nks4U0I0ZDBGejJyQmZZVmIyWldkY3h2R3h5VGJYZjB6L3doZmt1Z2RvbldMOUJjT0taZTNqV2EyMFVVamcwcFBlY1RiU0lqSVRCWmdOMENxNkRQSHdKVHVyUm9kd2ZyRW1EajZzekJodGM3TTRmQ3YyYS8wSGNuTDh4Slo1NTA1djlqWjc3MzhqL3lZcDFMVnlJQUFBPT0nCn0=
\ No newline at end of file
diff --git a/drpy_js/茶语资源[资].js b/drpy_js/茶语资源[资].js
deleted file mode 100644
index d2d1383..0000000
--- a/drpy_js/茶语资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV5hJyHcdj7f1dyct+hTD1Zm4tlENfmYNijfZ7CkdPOKtogbC/AZIPNtd8SzFKl5+ICplhSJKG7G25GI3K5F7c9JtKE+9OSFNscnF0mc+ZmzwWLqnzhS59PLoIsR9HmcZPA==
\ No newline at end of file
diff --git a/drpy_js/草莓秒播[密].js b/drpy_js/草莓秒播[密].js
deleted file mode 100644
index 457651f..0000000
--- a/drpy_js/草莓秒播[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAEkYWYC/5VUb2/bRBh/nX0Kay8uSbXacZqGxaVCQ+wFCLYXo68Yyi72JfZwbO987hJGJdikjQGrViY2oIGx8ScrMEFRBV3W7tPEjvsteM53kVO6Ce2iy/l5nt/zu3v+3K1iqtDIJcqycuWYAoM5zCWGUkxv3UzX7xRPZEocMdunhnI8+edBuvn5caG1/ZAB0mYsCA1NM7HfJU6tVm2ozA+kZ0RdgGiOZ5GeGtiBtupbGusHRHMsrd03XRyGWoA7BAS+qDbrutI3MzY93OXniTf3x6NhOrx+8HADTfY3ks3vDp5uJHe/QcIyfrI93vsFJfd+Pri/NfnrWXznEzTefZzcvRE/vhc/+Qolvw8nz9YlQfzZo2Tvt6kgCPZ+iH/9EiUPrsmvg9HTdPu6FOKftsBbCg09/vTvyc0b8fpVlHx9f7I1kgbYd7w7iPe3x7vfonQwyMmSP3eS7wfp8Mf0j51D4YkENeqo8QrSKwtI1/msIb2qw6yCbhHpCyBX6jA55iTMBmAqMAGjVyVfSDA17ZXnJVyYZvOsXba0uTntkCtu8cpXhepS5JgfnMv0hlIRurbjMkIFTJ9VwY7FWVlGdVhnkbahXFmTvUOwRWhoyK7jo7gSEjp/qkM8VgTnd86+/ubbp5srp4oZQvoxp0v8CNpusVKRp4LOyzIZYBryTmn5Vh8hNfSjeYY7Jyr59xJG6F3SY3y1KWlPC4EZaZKe6UYWyU8duLg/5WQ0IkLr4g/7hnLhYmgcKxRW4fLwfoXL89a5s2fUDF2i5FJEQlZyvCBiZbWLmWmXNJoRQhrUudeWS/BXflUrv6e/X16SRJAy4OF0KnxyrdNWSplMPJP2A6YsLytFvViGnBUKBYGPPBKaOCAlEMugXlOIGxLlua7VF7i2cEjqtTeI6VuCJyOSB9DOn1e7C9HJj/ga1DSV8dgylCDLwsyeDxAKF3tZtxTELgaPSkgykxUurOUHzSnEnhdEmi0/yrpsJvFO14Gy16c1T9YfpbduQ7lU6l9GyHKX7EVZXdXDLKIElJjheZ86HcfD7tJ/qj7e/XgyGsKb9tIE8vkbj77ICPIOnr6ddl0QyZ34cLqdvLVEBBakn5/fIgw77jw2mU+P+EFz+x6DK8GRDGxHEAy3wrzrW8ybsblOyF5oBMcmZwQ7PsLKPf/HKu744aTOGpsB6J1eHra8wsntwWTn4Wzl5sQPYGv/AmD9uCuQBgAA
\ No newline at end of file
diff --git a/drpy_js/荐片[优].js b/drpy_js/荐片[优].js
deleted file mode 100644
index ab219fb..0000000
--- a/drpy_js/荐片[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/菜狗[官].js b/drpy_js/菜狗[官].js
deleted file mode 100644
index 0564fb8..0000000
--- a/drpy_js/菜狗[官].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTon6I+c54uXW+WumF0nLAogICAgaG9zdDonaHR0cHM6Ly93YXB0di5zb2dvdS5jb20nLAogICAgaG9tZVVybDonJywKICAgIHNlYXJjaFVybDonL2ZpbG0vcmVzdWx0P2llPXV0ZjgmcXVlcnk9KionLAogICAgc2VhcmNoYWJsZToyLAogICAgcXVpY2tTZWFyY2g6MCwKICAgIGZpbHRlcmFibGU6MSwKICAgIG11bHRpOjEsCiAgICAvLyDliIbnsbvpk77mjqVmeXBhZ2Xlj4LmlbDmlK/mjIEx5LiqKCnooajovr7lvI8KICAgIHVybDonL25hcGkvdmlkZW8vY2xhc3NsaXN0P2FidGVzdD0wJmlwbG9jPUNOMTMwNCZzcHZlcj0mbGlzdFRhYj1meWNsYXNzJmZpbHRlcj0mc3RhcnQ9KChmeXBhZ2UtMSkqMTUpJmxlbj0xNSZmcj1maWx0ZXInLAogICAgZmlsdGVyX3VybDonc3R5bGU9e3tmbC5zdHlsZX19JnpvbmU9e3tmbC56b25lfX0meWVhcj17e2ZsLnllYXJ9fSZmZWU9e3tmbC5mZWV9fSZvcmRlcj17e2ZsLm9yZGVyfX0nLAogICAgaGVhZGVyczp7CiAgICAgICAgJ1VzZXItQWdlbnQnOidQQ19VQScKICAgIH0sCiAgICB0aW1lb3V0OjUwMDAsCiAgICBjbGFzc19uYW1lOifnlLXop4bliacm55S15b2xJuWKqOa8qybnu7zoibom57qq5b2V54mHJywKICAgIGNsYXNzX3VybDondGVsZXBsYXkmZmlsbSZjYXJ0b29uJnR2c2hvdyZkb2N1bWVudGFyeScsCiAgICBmaWx0ZXI6eyd0ZWxlcGxheSc6IFt7J2tleSc6ICdzdHlsZScsICduYW1lJzogJ+exu+WeiycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfniLHmg4UnLCAndic6ICfniLHmg4UnfSwgeyduJzogJ+WWnOWJpycsICd2JzogJ+WWnOWJpyd9LCB7J24nOiAn6YO95biCJywgJ3YnOiAn6YO95biCJ30sIHsnbic6ICfmgqznlpEnLCAndic6ICfmgqznlpEnfSwgeyduJzogJ+WPpOijhScsICd2JzogJ+WPpOijhSd9LCB7J24nOiAn5YG25YOPJywgJ3YnOiAn5YG25YOPJ30sIHsnbic6ICfniq/nvaonLCAndic6ICfniq/nvaonfSwgeyduJzogJ+WOhuWPsicsICd2JzogJ+WOhuWPsid9LCB7J24nOiAn5oiY5LqJJywgJ3YnOiAn5oiY5LqJJ30sIHsnbic6ICfmrabkvqAnLCAndic6ICfmrabkvqAnfSwgeyduJzogJ+itpuWMqicsICd2JzogJ+itpuWMqid9LCB7J24nOiAn56eR5bm7JywgJ3YnOiAn56eR5bm7J30sIHsnbic6ICflpYflubsnLCAndic6ICflpYflubsnfSwgeyduJzogJ+iwjeaImCcsICd2JzogJ+iwjeaImCd9LCB7J24nOiAn5Yac5p2RJywgJ3YnOiAn5Yac5p2RJ30sIHsnbic6ICflhbbku5YnLCAndic6ICflhbbku5YnfV19LCB7J2tleSc6ICd6b25lJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WGheWcsCcsICd2JzogJ+WGheWcsCd9LCB7J24nOiAn6aaZ5rivJywgJ3YnOiAn6aaZ5rivJ30sIHsnbic6ICflj7Dmub4nLCAndic6ICflj7Dmub4nfSwgeyduJzogJ+mfqeWbvScsICd2JzogJ+mfqeWbvSd9LCB7J24nOiAn5rOw5Zu9JywgJ3YnOiAn5rOw5Zu9J30sIHsnbic6ICfml6XmnKwnLCAndic6ICfml6XmnKwnfSwgeyduJzogJ+e+juWbvScsICd2JzogJ+e+juWbvSd9LCB7J24nOiAn6Iux5Zu9JywgJ3YnOiAn6Iux5Zu9J30sIHsnbic6ICfmlrDliqDlnaEnLCAndic6ICfmlrDliqDlnaEnfSwgeyduJzogJ+WFtuS7licsICd2JzogJ+WFtuS7lid9XX0sIHsna2V5JzogJ3llYXInLCAnbmFtZSc6ICflubTku6MnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAnMjAyMycsICd2JzogJzIwMjMnfSwgeyduJzogJzIwMjInLCAndic6ICcyMDIyJ30sIHsnbic6ICcyMDIxJywgJ3YnOiAnMjAyMSd9LCB7J24nOiAnMjAyMCcsICd2JzogJzIwMjAnfSwgeyduJzogJzIwMTknLCAndic6ICcyMDE5J30sIHsnbic6ICcyMDE4JywgJ3YnOiAnMjAxOCd9LCB7J24nOiAnMjAxNycsICd2JzogJzIwMTcnfSwgeyduJzogJzIwMTYnLCAndic6ICcyMDE2J30sIHsnbic6ICcyMDE1JywgJ3YnOiAnMjAxNSd9LCB7J24nOiAnMjAxNCcsICd2JzogJzIwMTQnfSwgeyduJzogJ+abtOaXqScsICd2JzogJ+abtOaXqSd9XX0sIHsna2V5JzogJ2ZlZScsICduYW1lJzogJ+i1hOa6kCcsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmraPniYcnLCAndic6ICfmraPniYcnfSwgeyduJzogJ+WFjei0ueato+eJhycsICd2JzogJ+WFjei0ueato+eJhyd9LCB7J24nOiAn5LuY6LS55q2j54mHJywgJ3YnOiAn5LuY6LS55q2j54mHJ31dfSwgeydrZXknOiAnb3JkZXInLCAnbmFtZSc6ICfmjpLluo8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5pyA5pawJywgJ3YnOiAn5pyA5pawJ30sIHsnbic6ICflpb3or4QnLCAndic6ICflpb3or4QnfV19XSwgJ2ZpbG0nOiBbeydrZXknOiAnc3R5bGUnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5Zac5YmnJywgJ3YnOiAn5Zac5YmnJ30sIHsnbic6ICfniLHmg4UnLCAndic6ICfniLHmg4UnfSwgeyduJzogJ+WKqOS9nCcsICd2JzogJ+WKqOS9nCd9LCB7J24nOiAn5oGQ5oCWJywgJ3YnOiAn5oGQ5oCWJ30sIHsnbic6ICfnp5HlubsnLCAndic6ICfnp5HlubsnfSwgeyduJzogJ+aDiuaCmicsICd2JzogJ+aDiuaCmid9LCB7J24nOiAn54qv572qJywgJ3YnOiAn54qv572qJ30sIHsnbic6ICflpYflubsnLCAndic6ICflpYflubsnfSwgeyduJzogJ+aImOS6iScsICd2JzogJ+aImOS6iSd9LCB7J24nOiAn5oKs55aRJywgJ3YnOiAn5oKs55aRJ30sIHsnbic6ICfliqjnlLsnLCAndic6ICfliqjnlLsnfSwgeyduJzogJ+aWh+iJuicsICd2JzogJ+aWh+iJuid9LCB7J24nOiAn5Lyg6K6wJywgJ3YnOiAn5Lyg6K6wJ30sIHsnbic6ICfmrYzoiJ4nLCAndic6ICfmrYzoiJ4nfSwgeyduJzogJ+WPpOijhScsICd2JzogJ+WPpOijhSd9LCB7J24nOiAn6K2m5YyqJywgJ3YnOiAn6K2m5YyqJ30sIHsnbic6ICflhbbku5YnLCAndic6ICflhbbku5YnfV19LCB7J2tleSc6ICd6b25lJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WGheWcsCcsICd2JzogJ+WGheWcsCd9LCB7J24nOiAn6aaZ5rivJywgJ3YnOiAn6aaZ5rivJ30sIHsnbic6ICflj7Dmub4nLCAndic6ICflj7Dmub4nfSwgeyduJzogJ+mfqeWbvScsICd2JzogJ+mfqeWbvSd9LCB7J24nOiAn5rOw5Zu9JywgJ3YnOiAn5rOw5Zu9J30sIHsnbic6ICfml6XmnKwnLCAndic6ICfml6XmnKwnfSwgeyduJzogJ+e+juWbvScsICd2JzogJ+e+juWbvSd9LCB7J24nOiAn6Iux5Zu9JywgJ3YnOiAn6Iux5Zu9J30sIHsnbic6ICfmlrDliqDlnaEnLCAndic6ICfmlrDliqDlnaEnfSwgeyduJzogJ+WFtuS7licsICd2JzogJ+WFtuS7lid9XX0sIHsna2V5JzogJ3llYXInLCAnbmFtZSc6ICflubTku6MnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAnMjAyMycsICd2JzogJzIwMjMnfSwgeyduJzogJzIwMjInLCAndic6ICcyMDIyJ30sIHsnbic6ICcyMDIxJywgJ3YnOiAnMjAyMSd9LCB7J24nOiAnMjAyMCcsICd2JzogJzIwMjAnfSwgeyduJzogJzIwMTknLCAndic6ICcyMDE5J30sIHsnbic6ICcyMDE4JywgJ3YnOiAnMjAxOCd9LCB7J24nOiAnMjAxNycsICd2JzogJzIwMTcnfSwgeyduJzogJzIwMTYnLCAndic6ICcyMDE2J30sIHsnbic6ICcyMDE1JywgJ3YnOiAnMjAxNSd9LCB7J24nOiAnMjAxNCcsICd2JzogJzIwMTQnfSwgeyduJzogJ+abtOaXqScsICd2JzogJ+abtOaXqSd9XX0sIHsna2V5JzogJ2ZlZScsICduYW1lJzogJ+i1hOa6kCcsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmraPniYcnLCAndic6ICfmraPniYcnfSwgeyduJzogJ+WFjei0ueato+eJhycsICd2JzogJ+WFjei0ueato+eJhyd9LCB7J24nOiAn5LuY6LS55q2j54mHJywgJ3YnOiAn5LuY6LS55q2j54mHJ31dfSwgeydrZXknOiAnb3JkZXInLCAnbmFtZSc6ICfmjpLluo8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5pyA5pawJywgJ3YnOiAn5pyA5pawJ30sIHsnbic6ICflpb3or4QnLCAndic6ICflpb3or4QnfV19XSwgJ2NhcnRvb24nOiBbeydrZXknOiAnc3R5bGUnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5pCe56yRJywgJ3YnOiAn5pCe56yRJ30sIHsnbic6ICfng63ooYAnLCAndic6ICfng63ooYAnfSwgeyduJzogJ+WGkumZqScsICd2JzogJ+WGkumZqSd9LCB7J24nOiAn576O5bCR5aWzJywgJ3YnOiAn576O5bCR5aWzJ30sIHsnbic6ICfnp5HlubsnLCAndic6ICfnp5HlubsnfSwgeyduJzogJ+agoeWbrScsICd2JzogJ+agoeWbrSd9LCB7J24nOiAn5oGL54ixJywgJ3YnOiAn5oGL54ixJ30sIHsnbic6ICfnpZ7prZQnLCAndic6ICfnpZ7prZQnfSwgeyduJzogJ+acuuaImCcsICd2JzogJ+acuuaImCd9LCB7J24nOiAn55uK5pm6JywgJ3YnOiAn55uK5pm6J30sIHsnbic6ICfkurLlrZAnLCAndic6ICfkurLlrZAnfSwgeyduJzogJ+WKseW/lycsICd2JzogJ+WKseW/lyd9LCB7J24nOiAn56ul6K+dJywgJ3YnOiAn56ul6K+dJ30sIHsnbic6ICfpnZLmmKUnLCAndic6ICfpnZLmmKUnfSwgeyduJzogJ+WOn+WImycsICd2JzogJ+WOn+WImyd9LCB7J24nOiAn5Yqo5L2cJywgJ3YnOiAn5Yqo5L2cJ30sIHsnbic6ICfogL3nvo4nLCAndic6ICfogL3nvo4nfSwgeyduJzogJ+mtlOW5uycsICd2JzogJ+mtlOW5uyd9LCB7J24nOiAn5YW25LuWJywgJ3YnOiAn5YW25LuWJ31dfSwgeydrZXknOiAnem9uZScsICduYW1lJzogJ+WcsOWMuicsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfml6XmnKwnLCAndic6ICfml6XmnKwnfSwgeyduJzogJ+asp+e+jicsICd2JzogJ+asp+e+jid9LCB7J24nOiAn5Zu95LqnJywgJ3YnOiAn5Zu95LqnJ30sIHsnbic6ICflhbbku5YnLCAndic6ICflhbbku5YnfV19LCB7J2tleSc6ICd5ZWFyJywgJ25hbWUnOiAn5bm05LujJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJzIwMjMnLCAndic6ICcyMDIzJ30sIHsnbic6ICcyMDIyJywgJ3YnOiAnMjAyMid9LCB7J24nOiAnMjAyMScsICd2JzogJzIwMjEnfSwgeyduJzogJzIwMjAnLCAndic6ICcyMDIwJ30sIHsnbic6ICcyMDE5JywgJ3YnOiAnMjAxOSd9LCB7J24nOiAnMjAxOCcsICd2JzogJzIwMTgnfSwgeyduJzogJzIwMTcnLCAndic6ICcyMDE3J30sIHsnbic6ICcyMDE2JywgJ3YnOiAnMjAxNid9LCB7J24nOiAnMjAxNScsICd2JzogJzIwMTUnfSwgeyduJzogJzIwMTQnLCAndic6ICcyMDE0J30sIHsnbic6ICfmm7Tml6knLCAndic6ICfmm7Tml6knfV19LCB7J2tleSc6ICdmZWUnLCAnbmFtZSc6ICfotYTmupAnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5q2j54mHJywgJ3YnOiAn5q2j54mHJ30sIHsnbic6ICflhY3otLnmraPniYcnLCAndic6ICflhY3otLnmraPniYcnfSwgeyduJzogJ+S7mOi0ueato+eJhycsICd2JzogJ+S7mOi0ueato+eJhyd9XX0sIHsna2V5JzogJ29yZGVyJywgJ25hbWUnOiAn5o6S5bqPJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+acgOaWsCcsICd2JzogJ+acgOaWsCd9LCB7J24nOiAn5aW96K+EJywgJ3YnOiAn5aW96K+EJ31dfV0sICd0dnNob3cnOiBbeydrZXknOiAnc3R5bGUnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn55yf5Lq656eAJywgJ3YnOiAn55yf5Lq656eAJ30sIHsnbic6ICfnlJ/mtLsnLCAndic6ICfnlJ/mtLsnfSwgeyduJzogJ+aQnueskScsICd2JzogJ+aQnueskSd9LCB7J24nOiAn6K6/6LCIJywgJ3YnOiAn6K6/6LCIJ30sIHsnbic6ICfml7blsJonLCAndic6ICfml7blsJonfSwgeyduJzogJ+mfs+S5kCcsICd2JzogJ+mfs+S5kCd9LCB7J24nOiAn6YCJ56eAJywgJ3YnOiAn6YCJ56eAJ30sIHsnbic6ICfnvo7po58nLCAndic6ICfnvo7po58nfSwgeyduJzogJ+a4uOaIjycsICd2JzogJ+a4uOaIjyd9LCB7J24nOiAn57qq5a6eJywgJ3YnOiAn57qq5a6eJ30sIHsnbic6ICfml4XmuLgnLCAndic6ICfml4XmuLgnfSwgeyduJzogJ+aDheaEnycsICd2JzogJ+aDheaEnyd9LCB7J24nOiAn5oG25pCeJywgJ3YnOiAn5oG25pCeJ30sIHsnbic6ICflkJDmp70nLCAndic6ICflkJDmp70nfSwgeyduJzogJ+WOn+WImycsICd2JzogJ+WOn+WImyd9LCB7J24nOiAn5q2M6IieJywgJ3YnOiAn5q2M6IieJ30sIHsnbic6ICfmkq3miqUnLCAndic6ICfmkq3miqUnfSwgeyduJzogJ+absuiJuicsICd2JzogJ+absuiJuid9LCB7J24nOiAn56eR5pWZJywgJ3YnOiAn56eR5pWZJ30sIHsnbic6ICflhbbku5YnLCAndic6ICflhbbku5YnfV19LCB7J2tleSc6ICd6b25lJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WGheWcsCcsICd2JzogJ+WGheWcsCd9LCB7J24nOiAn5Y+w5rm+JywgJ3YnOiAn5Y+w5rm+J30sIHsnbic6ICfml6Xpn6knLCAndic6ICfml6Xpn6knfSwgeyduJzogJ+asp+e+jicsICd2JzogJ+asp+e+jid9LCB7J24nOiAn5YW25LuWJywgJ3YnOiAn5YW25LuWJ31dfSwgeydrZXknOiAnZW1jZWUnLCAnbmFtZSc6ICfmmI7mmJ8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5L2V54KFJywgJ3YnOiAn5L2V54KFJ30sIHsnbic6ICfmkpLotJ3lroEnLCAndic6ICfmkpLotJ3lroEnfSwgeyduJzogJ+eOi+etseejiicsICd2JzogJ+eOi+etseejiid9LCB7J24nOiAn5byg57uN5YiaJywgJ3YnOiAn5byg57uN5YiaJ30sIHsnbic6ICfpsoHlgaUnLCAndic6ICfpsoHlgaUnfSwgeyduJzogJ+eOi+S4luaelycsICd2JzogJ+eOi+S4luaelyd9LCB7J24nOiAn5YCq6JCNJywgJ3YnOiAn5YCq6JCNJ30sIHsnbic6ICfmsarmtrUnLCAndic6ICfmsarmtrUnfSwgeyduJzogJ+iIkuWGrCcsICd2JzogJ+iIkuWGrCd9LCB7J24nOiAn6b2Q5oCd6ZKnJywgJ3YnOiAn6b2Q5oCd6ZKnJ30sIHsnbic6ICfnmb3lsqnmnb4nLCAndic6ICfnmb3lsqnmnb4nfSwgeyduJzogJ+absua0quemuScsICd2JzogJ+absua0quemuSd9LCB7J24nOiAn5bq36L6JJywgJ3YnOiAn5bq36L6JJ30sIHsnbic6ICfnq6Dkuq0nLCAndic6ICfnq6Dkuq0nfSwgeyduJzogJ+WImOa0quaCpicsICd2JzogJ+WImOa0quaCpid9LCB7J24nOiAn5bC85qC85Lmw5o+QJywgJ3YnOiAn5bC85qC85Lmw5o+QJ30sIHsnbic6ICfpkrHmnqsnLCAndic6ICfpkrHmnqsnfSwgeyduJzogJ+WImOWppycsICd2JzogJ+WImOWppyd9LCB7J24nOiAn6LW15bedJywgJ3YnOiAn6LW15bedJ30sIHsnbic6ICfosKLlqJwnLCAndic6ICfosKLlqJwnfV19LCB7J2tleSc6ICdvcmRlcicsICduYW1lJzogJ+aOkuW6jycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmnIDmlrAnLCAndic6ICfmnIDmlrAnfSwgeyduJzogJ+WlveivhCcsICd2JzogJ+WlveivhCd9XX1dLCAnZG9jdW1lbnRhcnknOiBbeydrZXknOiAnc3R5bGUnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5Y6G5Y+yJywgJ3YnOiAn5Y6G5Y+yJ30sIHsnbic6ICfoh6rnhLYnLCAndic6ICfoh6rnhLYnfSwgeyduJzogJ+WKqOeJqScsICd2JzogJ+WKqOeJqSd9LCB7J24nOiAn56S+5LyaJywgJ3YnOiAn56S+5LyaJ30sIHsnbic6ICfkvKDorrAnLCAndic6ICfkvKDorrAnfSwgeyduJzogJ+S6uuaWhycsICd2JzogJ+S6uuaWhyd9LCB7J24nOiAn5paH5YyWJywgJ3YnOiAn5paH5YyWJ30sIHsnbic6ICflhpvkuosnLCAndic6ICflhpvkuosnfSwgeyduJzogJ+enkeaKgCcsICd2JzogJ+enkeaKgCd9LCB7J24nOiAn5Lq654mpJywgJ3YnOiAn5Lq654mpJ30sIHsnbic6ICfmjqLntKInLCAndic6ICfmjqLntKInfSwgeyduJzogJ+e+jumjnycsICd2JzogJ+e+jumjnyd9LCB7J24nOiAn5peF6KGMJywgJ3YnOiAn5peF6KGMJ30sIHsnbic6ICfmjqLpmaknLCAndic6ICfmjqLpmaknfSwgeyduJzogJ+WFtuS7licsICd2JzogJ+WFtuS7lid9XX0sIHsna2V5JzogJ3pvbmUnLCAnbmFtZSc6ICflnLDljLonLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5YaF5ZywJywgJ3YnOiAn5YaF5ZywJ30sIHsnbic6ICfpppnmuK8nLCAndic6ICfpppnmuK8nfSwgeyduJzogJ+WPsOa5vicsICd2JzogJ+WPsOa5vid9LCB7J24nOiAn6Z+p5Zu9JywgJ3YnOiAn6Z+p5Zu9J30sIHsnbic6ICfms7Dlm70nLCAndic6ICfms7Dlm70nfSwgeyduJzogJ+aXpeacrCcsICd2JzogJ+aXpeacrCd9LCB7J24nOiAn576O5Zu9JywgJ3YnOiAn576O5Zu9J30sIHsnbic6ICfoi7Hlm70nLCAndic6ICfoi7Hlm70nfSwgeyduJzogJ+aWsOWKoOWdoScsICd2JzogJ+aWsOWKoOWdoSd9LCB7J24nOiAn5YW25LuWJywgJ3YnOiAn5YW25LuWJ31dfSwgeydrZXknOiAneWVhcicsICduYW1lJzogJ+W5tOS7oycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICcyMDIzJywgJ3YnOiAnMjAyMyd9LCB7J24nOiAnMjAyMicsICd2JzogJzIwMjInfSwgeyduJzogJzIwMjEnLCAndic6ICcyMDIxJ30sIHsnbic6ICcyMDIwJywgJ3YnOiAnMjAyMCd9LCB7J24nOiAnMjAxOScsICd2JzogJzIwMTknfSwgeyduJzogJzIwMTgnLCAndic6ICcyMDE4J30sIHsnbic6ICcyMDE3JywgJ3YnOiAnMjAxNyd9LCB7J24nOiAnMjAxNicsICd2JzogJzIwMTYnfSwgeyduJzogJzIwMTUnLCAndic6ICcyMDE1J30sIHsnbic6ICcyMDE0JywgJ3YnOiAnMjAxNCd9LCB7J24nOiAn5pu05pepJywgJ3YnOiAn5pu05pepJ31dfSwgeydrZXknOiAnZmVlJywgJ25hbWUnOiAn6LWE5rqQJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+ato+eJhycsICd2JzogJ+ato+eJhyd9LCB7J24nOiAn5YWN6LS55q2j54mHJywgJ3YnOiAn5YWN6LS55q2j54mHJ30sIHsnbic6ICfku5jotLnmraPniYcnLCAndic6ICfku5jotLnmraPniYcnfV19LCB7J2tleSc6ICdvcmRlcicsICduYW1lJzogJ+aOkuW6jycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmnIDmlrAnLCAndic6ICfmnIDmlrAnfSwgeyduJzogJ+WlveivhCcsICd2JzogJ+WlveivhCd9XX1dfSwKICAgIGxpbWl0OjIwLAogICAgcGxheV9wYXJzZTp0cnVlLAogICAgcGxheV9qc29uOjEsCiAgICAvLyDmiYvliqjosIPnlKjop6PmnpDor7fmsYJqc29u55qEdXJsLOatpGxhennkuI3mlrnkvr8KICAgIGxhenk6JycsCiAgICBsYXp5OmBqczoKICAgIHByaW50KGlucHV0KTsKICAgIGZldGNoX3BhcmFtcy5oZWFkZXJzWyJVc2VyLUFnZW50Il09TU9CSUxFX1VBOwogICAgcHJpbnQoZmV0Y2hfcGFyYW1zKTsKICAgIGxldCBodG1sPXJlcXVlc3QoaW5wdXQpOwogICAgbGV0IHJ1cmw9aHRtbC5tYXRjaCgvd2luZG93XFwub3BlblxcKCcoLio/KScsLylbMV07CiAgICBydXJsPXVybERlYWwocnVybCk7CiAgICBpbnB1dD17cGFyc2U6MSxqeDoxLHVybDpydXJsfTsKICAgIGAsCiAgICAvLyDmjqjojZA6Jy5saXN0X2l0ZW07aW1nJiZhbHQ7aW1nJiZzcmM7YSYmVGV4dDthJiZkYXRhLWZsb2F0JywKICAgIOS4gOe6pzonanM6bGV0IGQ9W107bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7aHRtbD1KU09OLnBhcnNlKGh0bWwpO2xldCBsaXN0PWh0bWwubGlzdERhdGEucmVzdWx0cztsaXN0LmZvckVhY2goZnVuY3Rpb24oaXQpe2xldCBkZXNjMT1pdC5pcGFkX3BsYXlfZm9yX2xpc3QuZmluaXNoX2VwaXNvZGU/aXQuaXBhZF9wbGF5X2Zvcl9saXN0LmVwaXNvZGU9PT1pdC5pcGFkX3BsYXlfZm9yX2xpc3QuZmluaXNoX2VwaXNvZGU/IuWFqOmbhiIraXQuaXBhZF9wbGF5X2Zvcl9saXN0LmZpbmlzaF9lcGlzb2RlOiLov57ovb0iK2l0LmlwYWRfcGxheV9mb3JfbGlzdC5lcGlzb2RlKyIvIitpdC5pcGFkX3BsYXlfZm9yX2xpc3QuZmluaXNoX2VwaXNvZGU6IiI7bGV0IGRlc2MyPWl0LnNjb3JlPyLor4TliIY6IitpdC5zY29yZToiIjtsZXQgZGVzYzM9aXQuZGF0ZT8i5pu06IezOiIraXQuZGF0ZToiIjtkLnB1c2goe3RpdGxlOml0Lm5hbWUsaW1nOml0LnZfcGljdXJsLHVybDoiaHR0cHM6Ly92LnNvZ291LmNvbSIraXQudXJsLnJlcGxhY2UoInRlbGVwbGF5Iiwic2VyaWVzIikucmVwbGFjZSgiY2FydG9vbiIsInNlcmllcyIpLGRlc2M6ZGVzYzF8fGRlc2MyfHxkZXNjM30pfSk7c2V0UmVzdWx0KGQpOycsCiAgICDkuoznuqc6JycsCiAgICDkuoznuqc6J2pzOlZPRD17fTtsZXQgaHRtbD1yZXF1ZXN0KGlucHV0KTtmdW5jdGlvbiBhZGhlYWQodXJsKXtsZXQgaGQ9Imh0dHBzOi8vdi5zb2dvdS5jb20iO2lmKCF1cmwuc3RhcnRzV2l0aChoZCkpe3VybD1oZCt1cmx9cmV0dXJuIHVybGVuY29kZSh1cmwpfXRyeXtsZXQganNvbj1KU09OLnBhcnNlKGh0bWwubWF0Y2goL0lOSVRJQUxfU1RBVEUuKj8oey4qfSk7LylbMV0pLmRldGFpbC5pdGVtRGF0YTtsZXQga2V5PWpzb24uZG9ja2V5O2xldCBuYW1lPWpzb24ubmFtZTtsZXQgem9uZT1qc29uLnpvbmU7bGV0IHNjb3JlPWpzb24uc2NvcmU/anNvbi5zY29yZToi5pqC5pegIjtsZXQgc3R5bGU9anNvbi5zdHlsZTtsZXQgZW1jZWU9anNvbi5lbWNlZT8i5Li75oyB77yaIitqc29uLmVtY2VlOmpzb24ubmFtZTtsZXQgZGlyZWN0b3I9anNvbi5kaXJlY3Rvcj8i5a+85ryU77yaIitqc29uLmRpcmVjdG9yOm5hbWU7ZGlyZWN0b3I9ZGlyZWN0b3IucmVwbGFjZSgvOy9nLCJcXHQiKTtsZXQgc3RhcnJpbmc9anNvbi5zdGFycmluZz8i5ryU5ZGY77yaIitqc29uLnN0YXJyaW5nOiLlo7DkvJjvvJoiK2pzb24uc2hlbmd5b3U7c3RhcnJpbmc9c3RhcnJpbmcucmVwbGFjZSgvLip1bmRlZmluZWQvLCIiKS5yZXBsYWNlKC87L2csIlxcdCIpO2xldCB1cGRhdGU9anNvbi51cGRhdGVfd29yZHN0cj9qc29uLnVwZGF0ZV93b3Jkc3RyOiIiO2xldCB0dl9zdGF0aW9uPWpzb24udHZfc3RhdGlvbj9qc29uLnR2X3N0YXRpb246em9uZTtsZXQgaW50cm9kdWN0aW9uPWpzb24uaW50cm9kdWN0aW9uO2xldCBzaGVuZ3lvdT1qc29uLnNoZW5neW91O2xldCBzaG93cz1qc29uLnBsYXlfZnJvbV9vcGVuX2luZGV4O2xldCBwbGF5cz1qc29uLnBsYXkuaXRlbV9saXN0O2lmKHNob3dzKXtWT0Qudm9kX25hbWU9bmFtZTtWT0Qudm9kX2FyZWE9ZW1jZWUrIiwiK3R2X3N0YXRpb247Vk9ELnZvZF9kaXJlY3Rvcj1kaXJlY3RvcjtWT0Qudm9kX2FjdG9yPXN0YXJyaW5nO1ZPRC52b2RfcGljPWpzcC5wZChodG1sLCIjdGh1bWJfaW1nJiZpbWcmJnNyYyIpO1ZPRC52b2RfcmVtYXJrcz1zdHlsZSsiIOivhOWIhjoiK3Njb3JlKyIsIit1cGRhdGU7Vk9ELnZvZF9jb250ZW50PWludHJvZHVjdGlvbn1lbHNle1ZPRC52b2RfbmFtZT1uYW1lO1ZPRC52b2RfZGlyZWN0b3I9ZGlyZWN0b3I7Vk9ELnZvZF9hY3Rvcj1zdGFycmluZztWT0Qudm9kX3BpYz1qc3AucGQoaHRtbCwiI3RodW1iX2ltZyYmaW1nJiZzcmMiKTtWT0Qudm9kX2NvbnRlbnQ9aW50cm9kdWN0aW9ufWxldCB0cD0iJnR5cGU9anNvbiI7dHJ5e2xldCB0YWJzPVtdO2xldCBsaXN0cz1bXTtwbGF5cy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXtsaXN0cy5wdXNoKGl0LmluZm8pO2xldCB0Ym49aXQuc2l0ZW5hbWVbMF18fGl0LnNpdGUucmVwbGFjZSgiLmNvbSIsIiIpO3Ribj10Ym4uc3BsaXQoIiIpLmpvaW4oIiAiKTt0YWJzLnB1c2godGJuKX0pO1ZPRC52b2RfcGxheV9mcm9tPXRhYnMuam9pbigiJCQkIik7bGV0IHZvZF9saXN0cz1bXTtwcmludCgicGxheV91cmwxOiIrcGxheV91cmwpO3BsYXlfdXJsPXBsYXlfdXJsLnJlcGxhY2UoIiZwbGF5X3VybD0iLCImdHlwZT1qc29uJnBsYXlfdXJsPSIpO3ByaW50KCJwbGF5X3VybDI6IitwbGF5X3VybCk7bGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLGlkZXgpe2lmKGl0ZW18fHNob3dzKXtpZihpdGVtJiZBcnJheS5pc0FycmF5KGl0ZW0pJiZpdGVtLmxlbmd0aD4xKXtsZXQgdG1wPWl0ZW0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGl0cyl7cmV0dXJuIGl0cy5pbmRleCsiJCIrcGxheV91cmwrYmFzZTY0RW5jb2RlKGFkaGVhZChpdHMudXJsKSl9KTt2b2RfbGlzdHMucHVzaCh0bXAuam9pbigiIyIpKX1pZihzaG93cyl7bGV0IGFycj1bXTtsZXQgdG1wPVtdO2xldCB6eT1zaG93cy5pdGVtX2xpc3RbaWRleF07enkuZGF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGRhdGUpe2xldCBkYXk9ZGF0ZS5kYXk7Zm9yKGxldCBqPTA7ajxkYXkubGVuZ3RoO2orKyl7bGV0IGRheXk9ZGF5W2pdWzBdPj0xMD9kYXlbal1bMF06IjAiK2RheVtqXVswXTtsZXQgVGRhdGU9ZGF0ZS55ZWFyK2RhdGUubW9udGgrZGF5eTthcnIucHVzaChUZGF0ZSl9fSk7Zm9yKGxldCBrPTA7azxhcnIubGVuZ3RoO2srKyl7bGV0IHVybD0iaHR0cHM6Ly92LnNvZ291LmNvbS92Yy9lcGxheT9xdWVyeT0iK2FycltrXSsiJmRhdGU9IithcnJba10rIiZrZXk9IitrZXkrIiZzdD01JnR2c2l0ZT0iK3BsYXlzW2lkZXhdLnNpdGU7dG1wLnB1c2goIuesrCIrYXJyW2tdKyLmnJ8iKyIkIitwbGF5X3VybCtiYXNlNjRFbmNvZGUoYWRoZWFkKHVybCkpKX12b2RfbGlzdHMucHVzaCh0bXAuam9pbigiIyIpKX19ZWxzZSBpZihwbGF5c1tpZGV4XS5zaXRlKXtsZXQgdG1wPVtdO2lmKCFwbGF5c1tpZGV4XS5mbGFnX2xpc3QuaW5jbHVkZXMoInRyYWlsZXIiKSl7dG1wLnB1c2gocGxheXNbaWRleF0uc2l0ZW5hbWVbMF0rIiQiK3BsYXlfdXJsK2Jhc2U2NEVuY29kZShhZGhlYWQocGxheXNbaWRleF0udXJsKSkpfWVsc2V7dG1wLnB1c2gocGxheXNbaWRleF0uc2l0ZW5hbWVbMF0rIuKAlOmihOWRiiIrIiQiK3BsYXlfdXJsK2Jhc2U2NEVuY29kZShhZGhlYWQocGxheXNbaWRleF0udXJsKSkpfXZvZF9saXN0cy5wdXNoKHRtcC5qb2luKCIjIikpfX0pO1ZPRC52b2RfcGxheV91cmw9dm9kX2xpc3RzLmpvaW4oIiQkJCIpfWNhdGNoKGUpe2xldCBpbWc9anNvbi5waG90by5pdGVtX2xpc3Q7Vk9ELnZvZF9uYW1lPSLmnKzniYfml6DpgInpm4YiO1ZPRC52b2RfcGljPWltZy5sZW5ndGg+MD9pbWdbMF06IiJ9fWNhdGNoKGUpe3ByaW50KCLlj5HnlJ/kuobplJnor686IitlLm1lc3NhZ2UpfScsCiAgICAvLyDkuoznuqc6J2pzOnZhciB2b2Q9e3ZvZF9pZDppbnB1dH07bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7ZnVuY3Rpb24gYWRoZWFkKHVybCl7bGV0IGhkPSJodHRwczovL3Yuc29nb3UuY29tIjtpZighdXJsLnN0YXJ0c1dpdGgoaGQpKXt1cmw9aGQrdXJsfXJldHVybiB1cmx9dHJ5e2xldCBqc29uPUpTT04ucGFyc2UoaHRtbC5tYXRjaCgvSU5JVElBTF9TVEFURS4qPyh7Lip9KTsvKVsxXSkuZGV0YWlsLml0ZW1EYXRhO2xldCBrZXk9anNvbi5kb2NrZXk7bGV0IG5hbWU9anNvbi5uYW1lO2xldCB6b25lPWpzb24uem9uZTtsZXQgc2NvcmU9anNvbi5zY29yZT9qc29uLnNjb3JlOiLmmoLml6AiO2xldCBzdHlsZT1qc29uLnN0eWxlO2xldCBlbWNlZT1qc29uLmVtY2VlPyLkuLvmjIHvvJoiK2pzb24uZW1jZWU6anNvbi5uYW1lO2xldCBkaXJlY3Rvcj1qc29uLmRpcmVjdG9yPyLlr7zmvJTvvJoiK2pzb24uZGlyZWN0b3I6bmFtZTtkaXJlY3Rvcj1kaXJlY3Rvci5yZXBsYWNlKC87L2csIlxcdCIpO2xldCBzdGFycmluZz1qc29uLnN0YXJyaW5nPyLmvJTlkZjvvJoiK2pzb24uc3RhcnJpbmc6IuWjsOS8mO+8miIranNvbi5zaGVuZ3lvdTtzdGFycmluZz1zdGFycmluZy5yZXBsYWNlKC8uKnVuZGVmaW5lZC8sIiIpLnJlcGxhY2UoLzsvZywiXFx0Iik7bGV0IHVwZGF0ZT1qc29uLnVwZGF0ZV93b3Jkc3RyP2pzb24udXBkYXRlX3dvcmRzdHI6IiI7bGV0IHR2X3N0YXRpb249anNvbi50dl9zdGF0aW9uP2pzb24udHZfc3RhdGlvbjp6b25lO2xldCBpbnRyb2R1Y3Rpb249anNvbi5pbnRyb2R1Y3Rpb247bGV0IHNoZW5neW91PWpzb24uc2hlbmd5b3U7bGV0IHNob3dzPWpzb24ucGxheV9mcm9tX29wZW5faW5kZXg7bGV0IHBsYXlzPWpzb24ucGxheS5pdGVtX2xpc3Q7aWYoc2hvd3Mpe3ZvZC52b2RfbmFtZT1uYW1lO3ZvZC52b2RfYXJlYT1lbWNlZSsiLCIrdHZfc3RhdGlvbjt2b2Qudm9kX2RpcmVjdG9yPWRpcmVjdG9yO3ZvZC52b2RfYWN0b3I9c3RhcnJpbmc7dm9kLnZvZF9waWM9anNwLnBkKGh0bWwsIiN0aHVtYl9pbWcmJmltZyYmc3JjIik7dm9kLnZvZF9yZW1hcmtzPXN0eWxlKyIg6K+E5YiGOiIrc2NvcmUrIiwiK3VwZGF0ZTt2b2Qudm9kX2NvbnRlbnQ9aW50cm9kdWN0aW9ufWVsc2V7dm9kLnZvZF9uYW1lPW5hbWU7dm9kLnZvZF9kaXJlY3Rvcj1kaXJlY3Rvcjt2b2Qudm9kX2FjdG9yPXN0YXJyaW5nO3ZvZC52b2RfcGljPWpzcC5wZChodG1sLCIjdGh1bWJfaW1nJiZpbWcmJnNyYyIpO3ZvZC52b2RfY29udGVudD1pbnRyb2R1Y3Rpb259bGV0IHRwPSImdHlwZT1qc29uIjt0cnl7bGV0IHRhYnM9W107bGV0IGxpc3RzPVtdO3BsYXlzLmZvckVhY2goZnVuY3Rpb24oaXQpe2xpc3RzLnB1c2goaXQuaW5mbyk7bGV0IHRibj1pdC5zaXRlbmFtZVswXXx8aXQuc2l0ZS5yZXBsYWNlKCIuY29tIiwiIik7dGJuPXRibi5zcGxpdCgiIikuam9pbigiICIpO3RhYnMucHVzaCh0Ym4pfSk7dm9kLnZvZF9wbGF5X2Zyb209dGFicy5qb2luKCIkJCQiKTt2b2RfbGlzdHM9W107cGxheV91cmw9cGxheV91cmwucmVwbGFjZSgiJnBsYXlfdXJsPSIsIiZ0eXBlPWpzb24mcGxheV91cmw9Iik7bGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLGlkZXgpe2lmKGl0ZW18fHNob3dzKXtpZihpdGVtJiZBcnJheS5pc0FycmF5KGl0ZW0pJiZpdGVtLmxlbmd0aD4xKXtsZXQgdG1wPWl0ZW0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGl0cyl7cmV0dXJuIGl0cy5pbmRleCsiJCIrcGxheV91cmwrYmFzZTY0RW5jb2RlKGFkaGVhZChpdHMudXJsKSl9KTt2b2RfbGlzdHMucHVzaCh0bXAuam9pbigiIyIpKX1pZihzaG93cyl7bGV0IGFycj1bXTtsZXQgdG1wPVtdO2xldCB6eT1zaG93cy5pdGVtX2xpc3RbaWRleF07enkuZGF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGRhdGUpe2xldCBkYXk9ZGF0ZS5kYXk7Zm9yKGxldCBqPTA7ajxkYXkubGVuZ3RoO2orKyl7bGV0IGRheXk9ZGF5W2pdWzBdPj0xMD9kYXlbal1bMF06IjAiK2RheVtqXVswXTtsZXQgVGRhdGU9ZGF0ZS55ZWFyK2RhdGUubW9udGgrZGF5eTthcnIucHVzaChUZGF0ZSl9fSk7Zm9yKGxldCBrPTA7azxhcnIubGVuZ3RoO2srKyl7bGV0IHVybD0iaHR0cHM6Ly92LnNvZ291LmNvbS92Yy9lcGxheT9xdWVyeT0iK2FycltrXSsiJmRhdGU9IithcnJba10rIiZrZXk9IitrZXkrIiZzdD01JnR2c2l0ZT0iK3BsYXlzW2lkZXhdLnNpdGU7dG1wLnB1c2goIuesrCIrYXJyW2tdKyLmnJ8iKyIkIitwbGF5X3VybCtiYXNlNjRFbmNvZGUoYWRoZWFkKHVybCkpKX12b2RfbGlzdHMucHVzaCh0bXAuam9pbigiIyIpKX19ZWxzZSBpZihwbGF5c1tpZGV4XS5zaXRlKXtsZXQgdG1wPVtdO2lmKCFwbGF5c1tpZGV4XS5mbGFnX2xpc3QuaW5jbHVkZXMoInRyYWlsZXIiKSl7dG1wLnB1c2gocGxheXNbaWRleF0uc2l0ZW5hbWVbMF0rIiQiK3BsYXlfdXJsK2Jhc2U2NEVuY29kZShhZGhlYWQocGxheXNbaWRleF0udXJsKSkpfWVsc2V7dG1wLnB1c2gocGxheXNbaWRleF0uc2l0ZW5hbWVbMF0rIuKAlOmihOWRiiIrIiQiK3BsYXlfdXJsK2Jhc2U2NEVuY29kZShhZGhlYWQocGxheXNbaWRleF0udXJsKSkpfXZvZF9saXN0cy5wdXNoKHRtcC5qb2luKCIjIikpfX0pO3ZvZC52b2RfcGxheV91cmw9dm9kX2xpc3RzLmpvaW4oIiQkJCIpfWNhdGNoKGUpe2xldCBpbWc9anNvbi5waG90by5pdGVtX2xpc3Q7dm9kLnZvZF9uYW1lPSLmnKzniYfml6DpgInpm4YiO3ZvZC52b2RfcGljPWltZy5sZW5ndGg+MD9pbWdbMF06IiJ9fWNhdGNoKGUpe30nLAogICAg5pCc57SiOicnLAogICAg5pCc57SiOmBqczoKbGV0IGQgPSBbXTsKbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKbGV0IGpzb25BID0gSlNPTi5wYXJzZShodG1sLm1hdGNoKC9JTklUSUFMX1NUQVRFLio/KHsuKn0pOy8pWzFdKTsKcHJpbnQoanNvbkEpOwpqc29uQSA9IGpzb25BLnJlc3VsdC5yZXN1bHREYXRhLnNlYXJjaERhdGEucmVzdWx0czsKanNvbkEuZm9yRWFjaChmdW5jdGlvbihpdCkgewoJbGV0IG5hbWUgPSBpdC5uYW1lOwoJbGV0IGludHJvZHVjdGlvbiA9IGl0LmludHJvZHVjdGlvbjsKCWxldCBwaWMgPSBpdC52X3BpY3VybDsKCWxldCB1cmwgPSBpdC50aW55X3VybDsKCWxldCB6b25lID0gaXQuem9uZTsKCWxldCBzY29yZSA9IGl0LnNjb3JlIHx8ICLmmoLml6AiOwoJbGV0IHN0eWxlID0gaXQuc3R5bGU7CglpZiAoaXQucGxheV9pbmZvICYmIGl0LnBsYXlfaW5mby5wbGF5X2xpc3QpIHsKCQlsZXQgciA9IHt9OwoJCXIudGl0bGUgPSBuYW1lLnJlcGxhY2UoL+6Qii8sICIiKS5yZXBsYWNlKC/ukIsvLCAiIik7CgkJci51cmwgPSAiaHR0cHM6Ly92LnNvZ291LmNvbSIgKyB1cmwucmVwbGFjZSgvdGVsZXBsYXl8Y2FydG9vbi9nLCAnc2VyaWVzJyk7CgkJci5kZXNjID0gaXQubGlzdENhdGVnb3J5LmpvaW4oIiwiKTsKCQlyLmNvbnRlbnQgPSBpbnRyb2R1Y3Rpb247CgkJci5waWNfdXJsID0gcGljOwoJCWQucHVzaChyKQoJfQp9KTsKc2V0UmVzdWx0KGQpO2AsCgp9
\ No newline at end of file
diff --git a/drpy_js/萌番[漫].js b/drpy_js/萌番[漫].js
deleted file mode 100644
index e83fa41..0000000
--- a/drpy_js/萌番[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+iQjOeVqlvmvKtdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5tZmFuLnR2JywKICAgIHVybDogJy90eXBlL2Z5Y2xhc3MvcGFnZS9meXBhZ2UvJywKICAgIHNlYXJjaFVybDogJy9zZWFyY2gvd2QvKiovcGFnZS9meXBhZ2UvJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDAsCiAgICBjbGFzc19uYW1lOiAn5paw55WqJueVquWJpybliaflnLonLAogICAgY2xhc3NfdXJsOiAnMjAmMjEmMjInLAogICAgbGltaXQ6IDYsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CiAgICAgICAgbGV0IHVybCA9IGh0bWwudXJsOwogICAgICAgIGlmICh1cmwpIHsKICAgICAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogdXJsfQogICAgICAgIH0KICAgIH0pLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAogICAg5LiA57qnOiAnLmhsLXZvZC1saXN0IGxpOy5obC1pdGVtLXRodW1iJiZ0aXRsZTsuaGwtaXRlbS10aHVtYiYmZGF0YS1vcmlnaW5hbDsucmVtYXJrcyYmVGV4dDsuaGwtaXRlbS10aHVtYiYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJ2gyJiZUZXh0JywKICAgICAgICBkZXNjOiAnLmhsLWZ1bGwtYm94JiZsaTplcSgtMikmJlRleHQnLAogICAgICAgIGNvbnRlbnQ6ICcuYmx1cmImJlRleHQnLAogICAgICAgIGltZzogJy5obC1pdGVtLXRodW1iJiZkYXRhLW9yaWdpbmFsJywKICAgICAgICB0YWJzOiAnLmhsLXBsYXlzLWZyb20gYScsCiAgICAgICAgbGlzdHM6ICcuaGwtcGxheXMtbGlzdDplcSgjaWQpJiZsaScsCiAgICB9LAogICAg5pCc57SiOiAnKicsCn0=
\ No newline at end of file
diff --git a/drpy_js/蓝光影视.js b/drpy_js/蓝光影视.js
deleted file mode 100644
index 3da6e11..0000000
--- a/drpy_js/蓝光影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAAAAH1UXUvbUBi+768IbKRJSROtVraWTpwT9iWCTm/GqKfJaXL0NEnPOenHmoI3EwZOZMLwwjHmLtzlhF2IsH+jtfsXe0+adk6GpU3OeZ+nz/t5TgsxhUUUV3oZQQTFJSU7PPx89e791a+z4elu1sh4ARdg9YQIecmy2u22SZHvRvAzQxYAg2PEbG+dUaAR38EdM/RCi3FujXadBp1vO5VcDrhRwrJagcO9oG3VuzZFnOfTT70bIhfDwvREg0rnGDmY8ZLSy65zzPILLvZFFhSWVx4/e7lUXV/I9o1MolENEeMyftOjeR+1FEpKrtCm9BIV2qxeRqr6CneEfHsM18tmztLM3Lw+dmVZNhK4ijs2jRypMzjaHxx9iS/PD3+fHMWD453Bpx/xYP/j8OtePDzbvT78Bv8KKeqOPQsWYSND0dtuaXMLYiZ+GAmlovSUrU5JmTKUlDdtKEkZRnh/08gM9r8PPxyAT1kiJ4hqdCJ3eb5zfXGapgVly1PCBeQm80g6JhcOEigfMOISH9GyZIbEzgtIV1V5iPx/Uwcflxd7ierfrnuFEQlA0nBTfzKXW+oyQMztlFCPKM3Xgo6qQrVxU5vWU1f/Awt3gTN3gbN3gcW7wDl9kpYd+AKmJ4083aVFSikC1XiKy6WqIjDKgo+tst08aYEUv0ccXTqSMzg4OL7+eVJS7m9xUwRrghHf1TRdqTxSehQLRU4ZzALDzQhzoSW918sSIQI3OEChU0eapBlKFg6PqkogO+I4gL9+U06oZj1gS8j2NCISdfkCEZNhiM7GmpW0NKbE345RJLyAxWFUgybiWHaOkVCQwLdccBOm8jCOowCkqLTf7CVwHDOMuKf10mG5QRxTjGSi4WGMpuOW1sxEy5i04Ral8JcCw1sdXRTjWwdG0uRB4JK6aQcNq/li0XngP99gT8MVRFaZV3w4N13cWFzFxSeitVw0gZg1+noZvhyLVcwjuAQcuR9fVyg5YwWjGRF7ey0xwRnN9P8AFReygBEFAAA=
\ No newline at end of file
diff --git a/drpy_js/蓝莓短剧.js b/drpy_js/蓝莓短剧.js
deleted file mode 100644
index 8ded7dc..0000000
--- a/drpy_js/蓝莓短剧.js
+++ /dev/null
@@ -1,111 +0,0 @@
-
-var rule = {
- title: '蓝莓短剧',
- host: 'https://app.whjzjx.cn',
- url: '/v1/theater/home_page?theater_class_id=1&class2_id=fyclass&page_num=fypage&page_size=24',
- searchUrl: '/?**',
- searchable: 2,
- quickSearch: 1,
- // filterable: 1,
- class_name: '古装&穿越&逆袭&重生',
- class_url: '5&17&7&6',
- 一级: $js.toString(() => {
- let d = [];
- let urlk = `https://app.whjzjx.cn/v1/theater/home_page?theater_class_id=${MY_CATE}&page_num=${MY_PAGE - 1}&page_size=24`;
- let tkurl = 'https://app.whjzjx.cn/v1/account/login';
- let head = JSON.parse(post(tkurl, {
- headers: {
- "Connection": "keep-alive",
- "Content-Type": "application/x-www-form-urlencoded",
- "Content-Length": "40",
- "user-agent": "okhttp/4.10.0",
- "user_agent": "Mozilla/5.0 (Linux; Android 9; ASUS_I003DD Build/PI; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.70 Mobile Safari/537.36",
- "Host": "app.whjzjx.cn",
- "Accept-Encoding": "gzip"
- },
- body: "device=20caaae96b3443174bf4ebdbdcc253776"
- })).data.token;
- let header={"authorization":head};
- let html = JSON.parse(request(urlk, {
- headers: header
- }));
- let bata = html.data.list;
- bata.forEach(it => {
- let id = 'https://app.whjzjx.cn/v2/theater_parent/detail?theater_parent_id=' + it.theater.id;
- d.push({
- url: id,
- title: it.theater.title,
- img: it.theater.cover_url,
- desc: it.theater.total + "集",
- content: "播放量:" + it.theater.play_amount_str,
- });
- });
- setResult(d);
- }),
- 二级: $js.toString(() => {
- let urls = [];
- let tkurl = 'https://app.whjzjx.cn/v1/account/login';
- let head = JSON.parse(post(tkurl, {
- headers: {
- "Connection": "keep-alive",
- "Content-Type": "application/x-www-form-urlencoded",
- "Content-Length": "40",
- "user-agent": "okhttp/4.10.0",
- "user_agent": "Mozilla/5.0 (Linux; Android 9; ASUS_I003DD Build/PI; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.70 Mobile Safari/537.36",
- "Host": "app.whjzjx.cn",
- "Accept-Encoding": "gzip"
- },
- body: "device=20caaae96b3443174bf4ebdbdcc253776"
- })).data.token;
- let header={"authorization":head};
- let data = JSON.parse(request(input, {
- headers: header
- })).data;
- //console.log(data);
- data.theaters.forEach(it => {
- urls.push("第" + it.num + "集" + '$' + it.son_video_url);
- });
- VOD = {
- vod_name: data.title,
- vod_pic: data.cover_url,
- vod_remarks: data.total + "集",
- vod_play_from: 'XT短剧',
- vod_play_url: urls.join('#')
- };
- }),
- 搜索: $js.toString(() => {
- let d = [];
- let ht = input.match(/\?(.*)/)[1];
- let ser = "https://app.whjzjx.cn/v2/search";
- let tkurl = 'https://app.whjzjx.cn/v1/account/login';
- let head = JSON.parse(post(tkurl, {
- headers: {
- "Connection": "keep-alive",
- "Content-Type": "application/x-www-form-urlencoded",
- "Content-Length": "40",
- "user-agent": "okhttp/4.10.0",
- "user_agent": "Mozilla/5.0 (Linux; Android 9; ASUS_I003DD Build/PI; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.70 Mobile Safari/537.36",
- "Host": "app.whjzjx.cn",
- "Accept-Encoding": "gzip"
- },
- body: "device=20caaae96b3443174bf4ebdbdcc253776"
- })).data.token;
- let header={"authorization":head};
- let html = JSON.parse(post(ser, {
- headers: header,
- body: "text=" + ht
- }));
- let bata = html.data.search_data;
- bata.forEach(it => {
- let id = 'https://app.whjzjx.cn/v2/theater_parent/detail?theater_parent_id=' + it.id;
- d.push({
- url: id,
- title: it.title,
- img: it.cover_url,
- desc: it.score_str + "|" + it.total + "集",
- });
- });
- setResult(d);
- }),
-};
-
\ No newline at end of file
diff --git a/drpy_js/虎牙直播[官].js b/drpy_js/虎牙直播[官].js
deleted file mode 100644
index 009631a..0000000
--- a/drpy_js/虎牙直播[官].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/虾酱追剧.js b/drpy_js/虾酱追剧.js
deleted file mode 100644
index 576d18e..0000000
--- a/drpy_js/虾酱追剧.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/蚂蚁影视.js b/drpy_js/蚂蚁影视.js
deleted file mode 100644
index b5c52e2..0000000
--- a/drpy_js/蚂蚁影视.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV3I/LSzhsC6UnbLnXOP5u194VbsBxltj3MYsGc0LP4e4dE0tVXOpc3C0TyqP7vAtwSPhSt3zSvHj1BVIRRshF/OUl/9ABEobIw5Z18klTd5Ywak9UncsKCmuc3+5YiNk7pRL6Vi4eg4X9eqpmQmqcwNJyPsI2LeXLZdtoVO0lbnb/64/GOBh6QOCsFE6YtvKuKRjYdgDCtuliUINbjolVxQkWJjjhfBl+oyL4Xktjoa1MwxTSbr8LQ9IIDlz9/+asDFMN2RBSRhVaHcWFFVwEY5d9QqbyI3kvAjy8SDbE+79oQYhaD++/WMp51Pya3FYUdJDKnes8mq7Kze5KJsNWLRck5uGgiwCun0oszBoBxmD6pzEw8E4O1xk1IiHlYmxDfpwCVPUUJxMBie5RnHT+2qtT9idZKH85+oQb26bEtxVyQelX/0uSOFqDJOIEKbyJF1/UDP9OpEEUfWAN42YJVO3FwVNya1u+NKSs4FNA86PnaeGRe8obG11xZe5BPXi81mBhoXX6hYijsWU6Df2ekFdbJ2o+rBr+5rFEwfL+etJtqcFzKg43Uo7pzQhz2dfraXPNlhz/SVfkcgWBUbXbczuagWir++7GvItNMfKbsXHFo9tTVLvVmcR+IamlKirrsNPym415Vz8dGg8W/OUx9i/dK1Hs0J38sDQCBnpONmmnCo78VOR4B4ObAmAictvDLv4psswDaYIR192dDSyou4VeXFoZRHfITSBM4D9FactZSS2isUuwlLRWAB9f229BTLbsDEAt5VB/68k+x/3t38VZIh6eZxJ//n6CH9PK6P3OY/RUS+gFfU6hEGNvXKRQmYFDQgc8l+fMdxG9DDQYP2lzgpa1mtobXMgaRivb9Mbtg5BUGED0A8vxD1u7KkoUNLBTTPYhqJNCA2GDh0y5qT0ywr0CX64jbbC9jJAIpkKUdSxT+5O2GWUnrz5kqNquaeBUtZh4VReELFQJI7Uy1uWWXudgddaqF9zgQFvs9v3V+Z/aho0jxK9Cv4VB2VlFsx84P1npuSKQLZlvJ5tVK7MChE1IxSYboYVFHPfPfx2ArHe2tMgCvi7yPepaCehW2dx8Px0Yi47xa9oQzc3yAwQlTUP8oJhXmOt96jJrIN6j2wwY/H1XwfgXax1gny5Tb0xO0QRmfoU8aNCpQIVCE1VOG2ItUxX+nNkIlDnOSEir2JSQhqvnT1BqSCQS37uM7L8G7aQG9xSxM1jiNyAiIpcJRAmDlJHp+uYkStaR+gpf220y7B0Cnl5f5RJS4+tgUp61Wp4K9ZJe4Jz0BbCfnyTTgzdhbkENCulW2O8CRzlhmlOCGj0qkF5fne7U33Ia+xUq0n/0YgUkQOf1OlhVxrV49JBatNUBZojh7uQ9BlBvV6eCkmIAhL3ucw756czWC7rQ667yj1vLpPvkfYB2GspgDL5U+bpFl8EbBa2yAfnCN3u7/zAZ9TNDrusmcBW9WgeuNvjorTKmiSxenk7gCFlXQURM5PlvtD0NyvrJ4zMIMQfOyietvjUrznT3viPeXMm14kdw0HJBYmnbmaikcWO985EUZdY/oVqez+5g/KjtAWfwe2wHbyUMrLno7tp+tzuG+K9i3i4hgYOXlAAJ3yfLoklW+MveieE+6g1KoN979iWymOk7tLhBvutgkROmZmppZ34R3N5+fmbMqWEk6cbIgsuGoTZqh62VdfPT4GWkT7abGdbgOJysizyEOnC7eg/ufNSv+ujeQbkUxU3V0CNQhm6FYaGO+lhsg06wDiXxpc7AHfeRXCpZ8JKa3N+qvhyQkgeOXPrDI6bUkYvIm4YqRysE29Cj3UxtThNvKQSvYncw1ZUQjZvVhB2fJvbOn1lZHW1NtDbomky9427ElA82NrBvaB+/MjgDNDzrvYHqBx2R1uLoJLhxSnQcyOaUKizlm6iXMYMJaUKdUoIwIIaxFQIJBkFY6NnQFdEgjCOZUebpjXAhO5nvnYU7gsKO+zaQcsQj5l2paO7gplgiFIcyKmal+U2jjM84NqFbCGFsrv6aTvIP3rx/aXbGPQ56rBCwBIeh6YQ+78wjQrNuMEGEwePRWlcbxCgN2SMZ6G2sDF6WqP3hTRZjwVpwjI/lBFKx5U1xZjPoMtRE4AeN/l/5C0STfQj1X8DNkWW20JDo7AMDpMwL0gz3SPPYMm3gwezCcm+tga+XVLP+2KnYBKVk4eALocbbJ1jbwucTWEt7wJ8RrD3tZ4zDeR81yuDvCQGGbcKHtIjCVsLVw2yFxF8PLGfLNnSB0HGcM0VkH6Ayq//lvrQy8zfLLD3l/wJzgCizCoD/gCvTeyEmf58LZ95L9ohruDXshgOoKsG6byB6j0+FUPfi5HWOhm6jgllt7cfdcPMn4oANlvH9+2IjuAgSeFk1qdG7TxQLj6aGGfMl1S+UM+cTScgjHbML++W9afKeMMFQ/6mfeBZh2rET+cxEKNciugmMF9uFc4iGnuJ
\ No newline at end of file
diff --git a/drpy_js/蛋蛋剧.js b/drpy_js/蛋蛋剧.js
deleted file mode 100644
index ba08f76..0000000
--- a/drpy_js/蛋蛋剧.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/蛋蛋赞.js b/drpy_js/蛋蛋赞.js
deleted file mode 100644
index 4520042..0000000
--- a/drpy_js/蛋蛋赞.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/蛙视频.js b/drpy_js/蛙视频.js
deleted file mode 100644
index 512c5da..0000000
--- a/drpy_js/蛙视频.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/蜡笔[盘].js b/drpy_js/蜡笔[盘].js
deleted file mode 100644
index 1bd7c1b..0000000
--- a/drpy_js/蜡笔[盘].js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teG9uZTUu5LqM57qnLHsKICAgZGVzYzogJy52aWRlby1pbmZvLWl0ZW1zOmVxKDMpJiZUZXh0Oy50YWctbGluazplcSgyKSYmVGV4dDsudGFnLWxpbms6ZXEoMykmJlRleHQ7LnZpZGVvLWluZm8tYWN0b3I6ZXEoMSkmJlRleHQ7LnZpZGVvLWluZm8tYWN0b3I6ZXEoMCkmJlRleHQnLAogICAgY29udGVudDogJy5zcWpqX2EtLXNwYW4mJlRleHQnLAogICAgbGlzdHM6ICcubW9kdWxlLXJvdy1vbmU6ZXEoI2lkKSYmYS5tb2R1bGUtcm93LXRleHQnLAogICAgbGlzdF90ZXh0OidoNCYmVGV4dCcsCiAgICBsaXN0X3VybDonYSYmZGF0YS1jbGlwYm9hcmQtdGV4dCcsCiAgICBsaXN0X3VybF9wcmVmaXg6J3B1c2g6Ly8nCn0pOwp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAn6Jyh56yUW+ebmF0nLAogICAg5qih5p2/OiAnbXhvbmU1JywKICAgIGhvc3Q6ICdodHRwOi8vbGFiaXBhbi5jb20nLAogICAgdXJsOiAnL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAgZmlsdGVyX3VybDone3tmbC5jYXRlSWR9fXt7ZmwuYXJlYX19e3tmbC5ieX19e3tmbC5jbGFzc319e3tmbC5sYW5nfX17e2ZsLmxldHRlcn19L3BhZ2UvZnlwYWdle3tmbC55ZWFyfX0nLAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC92b2Qvc2VhcmNoLmh0bWw/d2Q9KionLAogICAgZmlsdGVyOidINHNJQUFBQUFBQUFBKzJiVzA4YlJ4VEhuNU5QVWZtWnlxeTU1eTMzRUhLL0oxVWVuR0MxcUpSS2dWWkNFUkpnTUxZQjJ5Q0NjVzF1RFJkek1aaExLWmdZZnhuUHJ2MHR1c3VNejh5Y3RjU2lvS2FxNXBILzcrVE03Sm5aMmZOZmJ6NWV2dVRTWEZkKytPajYyZGZydXVKNjcrM3h0YmE3YWx4ZDNsOTg1dC9HempHWkd6WC8vdDNiK1p2dk5MRExsTWx3dXV4UFc3TDVoNnV2aHFyRzZnUTVPalpDSXd5NE85cmRqWndHZDNUL3NFeWJnT3JCbVdJdUpOTm1UZ2RpZXYrMFRGdUFsamRtaklVQm1XcTFnRWs0YlV5aGFXbWFpSXY1Rk1JZVY5OWJLNEJWcGRQYjNjMkxRa0tyNXBVNExBcVpUcG54bGR5bm1keE1reXNqaHpCTkxvQWN3alQ1T3RCQVZKTVhDQTFFTmNnQzF5WmtvWnE4VkdndVZLdUVsRElyWkd4ZERtRWF6Q1c4YmVSUkNOUGtoYk5ka2FWQnlQS0k3WXFZQnRQTnJCUlBGdEIwcVFaWkFwUGx4QnJLUWpYSU1yZHVYaVBLUXJWenJKRSt1R2xNVDZBUXFrR0lQNndQL29GQ3FBYWxPNDZTNFVOVU9xckJMVEU3cWM4c3l5Rk1nNEdtUjBxaEhCcUlhbENYa3kxajZpK1MzMEdsQVJrQ28wdWx6M2pYVUExQ0lnRVMzVVVoVklOZFU0aVp5NHQyRGRYNFNxWDAyUW04VXFjYWhBd1ZqQTEwNlV5REF1WW5qT05VdFV1VGlIZ0VlRC80dk1JSmtNcVNzWnpURTJCcHRad0lWTWF4RXJtTGh4bVN6RE1BYTdhUzBBKzNxOFF4d0l1ZDFZOU9xdVdqQUJZNHZxeW5OcVU0SnNHSTgydm1QNU1pbUFTVk9vbmdDQ2JCS0h1ZmNBU1RZRmxIZDNBRWsvZysreHRITUltUGtyV1BrcFZ5akdkSmJrWE9RU1hJTVJRMUswNkNhM0lhVUdHK3l3VWptakZDQ1huS29QTGphVUVmTFpqL1dCNFVWSWdiUGlnZVQ4dEJWQkkzV0tlMzYwZSt3VXJibVZLNjMra0dTK2JOK01vQVZpSTNrNFFsd0JGTWdvWGVYY0lSVElMTkVzK1Q4VGdPNHFxd3FXeEJWQkkySm81Z2tyQ3BiQkZVRXJhTTdacXBKSlNkYlBubENDcUpaZS8xZVQvd3N1dnhnM0o4MzJIWlBiV2Ura3A2SzQzN1ZCQm9IYVoxSXZWZzZoR3BocWttMGxwTWF3V3F0U0NxdFlpMEdkTm1rVFpoMmlUU1Jrd2JSZHFBYVlOSWNhMDBzVllhcnBVbTFrckR0ZExFV21tNFZwcFlLdzNYeXVvTXhmdk8xOVBqRTdZQXljVDE3WEdIVytBcWJLL1RMTzZyUUs0aGNnM0lkVVN1QTdtQnlBMGdOeEc1Q2VRV0lyZUEzRWJrTnBBN2lOd0Iwb3BJSzVDN2lOd0Ywb1pJRzVCN2lOd0RjaCtSKzBBZUlQSUF5RU5FSGdKNWhNZ2pJSThSZVF6a0NTSlBnRHhGNUNtUVo0ZzhBL0lja2VkQVhpRHlBc2hMUkY0Q2VZWElLeUN2RVhrTjVBMGliNERVZnQrQ21LV0l0OEM3WHVFRWpFeVNYTlMyL2ZuQmFPVjUxK3Z1NlREREswTVVjems5T3lYUW56cDZ1dm5EWjN1SUJBTUM3WDcvNndlZk5ZTzNOWmUvYzNtKzBuN3lvOEI4NkJWenE0TGJzcHdjUDBmTVo0elYzY2lZSDBMNjVxclYyc2lZbjJCbUIyYjJWd2czWHB4TlBMdURkdUM3YUl0UEJnNklQMXF0K1dma0hONlViQjJRWEFhRlVPMThUdTRzYityQXlUbndwZzVjaGdQM1ZEeGF0TGtNcG5HYk5xd250dEZpVUEzbThpbGdzNHhNRTR5SWJRR1lWcjE3WkZuczdhUHlKOHFmS0gveWIva1Q1UzJVdDFEZVFua0w1UzMreTk3aWtxdGU5QlpmMFoyWCswUEdhai9xcUtrbU5vUkQ4L2FHME5SZ3NsdUZVallvaHpBTnNreG05REI2ZWMwMC9uUWExZzlSLzhvMC9vamJLeDdGMEhTcEpqUk81YzlvdWt5RGtOdzYyWnBESVZTRHVTUjM3YjhoVUEyeVRNM3IrL2czSjZweGEzV29CNlBGM0tUdDdiOUVvSXo3ZjVyOU9pb2oxU0Rqem1CcFlBemxvcHBxbWxYVHpLZXNtbWJWTkt1bVdUWE5xbWxXVGJOcW1tblRYSGRSMzRQUjkvR1ZjVHJhM2NLcFNGL0dpNHlmSVBSTnZNaTBDM3ZQN3FCTmQvQ1ZsT0hQbEJhUkgyQWFEQlJKRzdFQUdvaHFFQktiTXpieDEwQlVneEtlL1dWU0tUWmJpcUNmQlpnR0F5MHNraVI2aWM4MDN2ZWMrWVplVCtYc24wQlJEZVp5OWhjOERuN0ZJRm16MlB0b0xsUVRRNWIzN0NHbUJtdTBkRkw4Z2o2a1locGtpY3lUWUJKbG9ScS9rM1pKQmxrcHBzRkF5YkNlUUNhSWFieTZPNlFReDlVOTFhbzNsT285djdJc3lySW95NklzaTdJc3lySUlSRmtXWlZuc2xxVkJzQ3pxWmxRM283b1p2K0hONkttL3FCY0k5VzN5LzlHd1hnVTBDdFIwL3VWa1FLUk5JZzJuOVM4YkltMitLQ3RGZlU0VjYzUE9abHQxanYvUHpsSDFodXB4cEI1SDMvNXgxUGNQRnREZm9PQThBQUE9JywKICAgIGNsYXNzX3BhcnNlOiAnLmdyaWQtYm94JiZ1bCYmbGk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAn572R5Z2AfOS4k+mimHzlhajpg6jlvbHniYcnLAogICAg5pCc57SiOiAnLm1vZHVsZS1zZWFyY2gtaXRlbTsudmlkZW8tc2VyaWFsJiZ0aXRsZTsqOy52aWRlby1zZXJpYWwmJlRleHQ7LnZpZGVvLXNlcmlhbCYmaHJlZicsCiAgICDkuIDnuqc6ICcubW9kdWxlLWl0ZW1zIC5tb2R1bGUtaXRlbTthJiZ0aXRsZTtpbWcmJmRhdGEtc3JjOy5tb2R1bGUtaXRlbS10ZXh0JiZUZXh0O2EmJmhyZWYnCn0=
\ No newline at end of file
diff --git a/drpy_js/蜥蜴影视[优].js b/drpy_js/蜥蜴影视[优].js
deleted file mode 100644
index a035654..0000000
--- a/drpy_js/蜥蜴影视[优].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/被窝电影.js b/drpy_js/被窝电影.js
deleted file mode 100644
index 699c2d9..0000000
--- a/drpy_js/被窝电影.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/4VVy47jxhXdz1f0qtsejlSUSD3YjVmQEqkHRVGUyKYoGGjw/RAfEqtIihw0kFVgA1nMwggM2F7EC8dIEBgGko2DJD+Tno7/Imy1ejA9CJzasO65557LKhLnRpmhx81fvv/93df/bDf//fPv7n/+YxP5KLTPXp9dNPMG8rLIOD8/QldNS0d6owF3enxp7z/BPz0/l+0Durh6Ef0vHcuG5lHmoeyhgDgVXF19LNV6ynyEt/9PCzOJkR2jxy51u6bnW5YdNw6w0dB/vRTpBjzWQZT5jbpfbIc3N56tW00jQSiJGqEf279SfYNq9QcFj3jfKdfTszQ73t6bF2f1Ol7c5dnFf7778/2fvr3/8m93//jp4tUx9e6HP7z79l917iR9gr0Eohr0ENrBSwCKomgatt+xyvqw0YmTpWFNAdBLCuCUjh8iOwWn3GOkGw9tW68AePfVj3dvv797++P9lz/cff7b+5/+fv+Xr3/5zRcfsm8eBd+8ccKmqSN7Yt3eNo6Rntr6094on3ZmqEP4FIR67L7f26iWq6NGwyl3umvXm2OitPUafvaKdcMxCSf008Ja6zZOyspSpkIijjR9U4JCBIXDFDwjdBV+sxKhrkrDAY38iRIYWrvFwQEaLF2mVBKlgACvxNDBRpsY5jZNJdKknfr5WEW5o3d6w3ncs+acYSa+hfRy11sfbLL+YNP4+pAqZLnxiF1PYqrVpppC0aoBKuuPC7ozxatpT9oESyslrHW3GM9dZhfpCsPGlGGk6j7usxKv5Bu82sbWpkqlkN/jCr2YS+18NJC2XUydA2uJs4fpLjZJqT69g6d0tFLlhccO4ba/pBBWwnA64maRdFgcptoyioJRJuvLmAAW5SZuuVInsZJp1x1HBqxO9LsML8bGikz2U0kQUnk+iVwnXe23mWM7RDoocytdK2lQKKk7ObSoMsdapD4Z6MPS33eA5fcqkRvMFgjzxRJfsjiDMCCkPr11tY5pHA60LInqNQWqfWJWgcQTFSGNt3W9ajskp7kzWg3LPhfYCsLCldECkVlrt5I9VIIlmHDC9XWQbzLMVYJqz/moFIqcpnJgErPQ12N26u2uXWDI1kyABbPIV3BlzRJcoMQ2JNSh1Kd20MkGfI9gAXsgR6I2J2lC4PvDtFzYI07oY2RMKjYzFuT+ANBB5JGsc8gLqc+K2rhYYuxCLNbFIm+RQ2oU+4DJqjqELUpUtXQvugU/lCj1OjDoQmG3kKMLtprRcDxiqGwbDHOFtHpt2e+mPDAp1sjR1LOdwDQTBo4EaaykThsfVCzTovEUYV40MnkaX7ZYTepJhKZqtOAulEkxtMbOUg48GpFzbD1ZG6zEmIWwhaEAHHs7osh0XWL2WjbykB1OR4eIk0Qi1/oEge8m7jaFBc0ZfLXMZ/LMW7t7Q9Ir2a3wEdoM3EA1CWpIYsMgWcyRHawVJdl4bSUeq3xnMMDkaaXxS3eMYyNyyGm4NHeuJ3vcUlW2aKUuXu5tMzMEnNl1KXdxsFdo6Oa002U5Kl+01lhLBGvEAwu0+2sgo/VKXbdlRPXxUcR7h45jyy1AgjVoZ3asCguqW3LDRaYuJlUPdosp0+ZiL064iVjxAtwwHXq/5PFVZvIwF22NN7FiQWWEIe2ouKSx3MmXmj8qPJioQHPRjChYEND7qO1JtUm8fv3MQ24s27k8We3Dsur/qvRjt8Yefaw2mSfs4vbVMx70/CD7mHgEP2RWSeyW/oe0R+SZWo1E9cD6UOsRurg9kk5cWJug6Skn8z4G4OXLxvv13jKfvPzoszc7PYUPM+RxUj1MqPrgN5EdZ+fnoX91mnMPTy+1navmS/DJZ58V2KdPKu/efnP/1+8uz54Pske0/erF7X8BXnwdzwUIAAA=
\ No newline at end of file
diff --git a/drpy_js/西屋影视.js b/drpy_js/西屋影视.js
deleted file mode 100644
index 123e349..0000000
--- a/drpy_js/西屋影视.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teG9uZTUu5LqM57qnLCB7CiAgICB0YWJfdGV4dDogJ3NwYW4mJlRleHQnLAogICAgbGlzdHM6ICcubW9kdWxlLXBsYXllci1saXN0LnRhYi1saXN0OmVxKCNpZCkmJi5zY3JvbGwtY29udGVudCYmYScsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214b25lNScsCiAgICB0aXRsZTogJ+ilv+Wxi+W9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cueGl3dXR2LmNvbScsCiAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIOaQnOe0ojogJy5tb2R1bGUtaXRlbXMgLm1vZHVsZS1zZWFyY2gtaXRlbTsudmlkZW8taW5mby1oZWFkZXImJmEmJnRpdGxlO2ltZyYmZGF0YS1zcmM7LnZpZGVvLXNlcmlhbCYmVGV4dDsudmlkZW8taW5mby1oZWFkZXImJmEmJmhyZWYnLAp9
\ No newline at end of file
diff --git a/drpy_js/西瓜影院.js b/drpy_js/西瓜影院.js
deleted file mode 100644
index d965f1a..0000000
--- a/drpy_js/西瓜影院.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/32RzW4TMRDH73kKa1VtnGrrbcptq8CJMxIfJ4SQs+vsuni9rj3upiJ5Aw5ISEiIcqASH1ckTpVoX6ZN6Fvg3bhikwjmYNkzv//4P/aj8RFLgVBjeC5xacdUktuv728+Xh6Q64s3y4tvEXrdQy4CoGMTJCggkp7sNYcwFDyIevPBYe+EaqStYGjk6cX3z4tPVwnq+2b9qE0DB8Fc9veXq+W7s5tfP24/nPtSURlwlQJAmSSO67omU55bOhzu75O0Kj1mtXBUbIqqjienqXDO93xMThXNmduQAkrhecOoTotnKxWXGZsSVahYG+NP01I8qLPR7q4XLN6eLX+eJ2jnyBConoDmMsd4gEb3/WhNCAaoucTNq9mxZQYwl8qCe4ouwoGVxjEqm1Dc8BHqu5vDsCn0O3AcI1HluOU3emRO//zF31zLkEmlH9K0cIp1YyvCSTgQzZSgKcNx++ozweWrGbVQVHqm7DijwGYZM6nmCngl49yZU11Tdw7ck69maK5roIQd4+EgDJ+yKWwKMqKsKfC6o87Xd9rcNYi22PaT3bJdaQwnm17uDf7dKq0kMAlbmoP/aBRPX7YWgmC9OO8M290bBo+ZsQJw5rNz13b+B5X2HuZdAwAA
\ No newline at end of file
diff --git a/drpy_js/豆瓣[官].js b/drpy_js/豆瓣[官].js
deleted file mode 100644
index d9ffec8..0000000
--- a/drpy_js/豆瓣[官].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/豆角网.js b/drpy_js/豆角网.js
deleted file mode 100644
index 062cb96..0000000
--- a/drpy_js/豆角网.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi7pppblm74yLuS6jOe6pywgewogICAgaW1nOiAnaW1nJiZzcmMnLAogICAgdGFiczogJy5zdHVpLXBhbm5lbF9faGVhZCBoNCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ+mmluWbvjInLAogICAgdGl0bGU6ICfosYbop5LnvZEnLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LmRvbmdrYW5kaS5jb20nLAogICAgdXJsOiAnL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwnLAogICAgY2xhc3NfcGFyc2U6ICcuc3R1aS1oZWFkZXJfX21lbnUgbGk6Z3QoMCk6bHQoNyk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAg5o6o6I2QOiAndWwuc3R1aS12b2RsaXN0LmNsZWFyZml4O2xpO2EmJnRpdGxlO2ltZyYmc3JjOy5waWMtdGV4dCYmVGV4dDthJiZocmVmJywKICAgIOS4gOe6pzogJy5zdHVpLXZvZGxpc3QgbGk7YSYmdGl0bGU7aW1nJiZzcmM7LnBpYy10ZXh0JiZUZXh0O2EmJmhyZWYnLAogICAg5pCc57SiOiAndWwuc3R1aS12b2RsaXN0X19tZWRpYTplcSgwKSx1bC5zdHVpLXZvZGxpc3Q6ZXEoMCksI3NlYXJjaExpc3QgbGk7YSYmdGl0bGU7aW1nJiZzcmM7LnRleHQtbXV0ZWQmJlRleHQ7YSYmaHJlZjsudGV4dC1tdXRlZDplcSgtMSkmJlRleHQnLAp9
\ No newline at end of file
diff --git a/drpy_js/贝乐虎[儿].js b/drpy_js/贝乐虎[儿].js
deleted file mode 100644
index 4075904..0000000
--- a/drpy_js/贝乐虎[儿].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/+1VS2/bRhC+91cQSQHKpSqKFkXJCtxGD1OUZJGyKEqygsBYkkuKFF/ikpQp20AORS9t0xTopYe2t6ZAC7QBcmiSFv0zceJjf0KphwPLMZDe2kPnouXsN9/sznw7ioCP+aEFsV3s5D0ssddPXpx/91kJw8//eHLx+FM8TZKr1en5o59fPvvh9NXvP73++sXp+a9fXvzydBkSGIEFk4iLp9++fPbo4puH984/+fM+nl5ujl0UJHvjIPBQiSQjNRPKEAUTQ80orr0Ghb6VYEjgGWREkXJERoYK3duevqvFHtDhGy4bSjdC1wAEga+Mgbw4TnblmoaGMhGX/jc+zbAC6G/AxhCo0EeldRUWhksI+h+WdegEeJKyIYhHUnmd6Cy9vrkN3TC5Xz6bXRMpFkDoyAM+SsjfN1EmcMXANxw9ldrCdj+6wm84XhgkdW+KAp9ZBqRCR58bXgrnaNQoXxrdl+LtApAqtR2WIeazVrc8oQhvOvVEFBpGv6upfVayJKdanUlUYzblQ07X2QPKnQnVOm+WnVk7TxcsKku6I2h07V7oCnnEjOKRUiy0cxWomeWiliMIAvq8KbfUXr0YaipDaoWxLx+HO3Uo1gTENAbHdbY75GnZmauDbAvkp0rHbFWalcpQIIROXZtZvMcd5sxGoVItcG4cVvdZft5muAoTt9tRM6QDut+UwwZwOtMG61UP/eGkWWzmYs71h/2psC+O2tyAjvaVGeMasjGKs72uy0s5um8WKMjVHB0wzGhS1aOgNoSsKdBRwWCKk66s1GyeG4NteTQc9CqH4bRrhWxLzUf1cTwYSKLZGIom0FXUtoEjdAyW4nJ0VJkVu6xksGrdVHV/zqghx4OZGGrtZosflI3ADFir0gKFoj/PjdRKV3J4SiSU4ojQigO2OuvMnfmoRujbyojWRJAVQquDuFrR8ka8z5LAbR6olG6DerQn7k/Hfa4pNtxYnrjCDFHaOGzVBmNqetC3Y9Mkmihf0ModW0M6tZ9T9goHjRGfb/epVlEDYtM5GPZJod+aToZ1qsy7ZN7dHh+6YaF1cFzvV51hLxaCvQGyQ244r01rAR3BornvH+ebvW1IjrRjz7PB4aFHxBSCnSo1lYEs2oLmVRHN2Q3SKGy3LIuoG9KOVCYHLmpAJS/kCdQi9RjtFz1G4CzYg6wkMcpwjx6jxrRASBpbpjgXKPVErbv41tad1RvZWr0IzwLx5YMI/BCuvBaYx//wgZysg7Pp1aBY+QkMv52xPRo/20z36uGPF188ege1BQPMU0EAFvTJgClhVBoDnhdBv4TdYjJUZudWGoN6ZHhHKABBiJbp0bXvKJlpGLPYCGUFBLChJqOASWNewrc+1sJI8jKl7KpxklIODUtNJlkKx9PLY2xlkGcZQQr/GN+6R92/IXQc2FYS6SXjNLUsQPpkQVZaUp5t3dm42ttg7GSRprS69HW4iVxncxAtCK6B1tVaYDM+RKEVZIwA2ugaKoHcu3L+RVRGc/09oIxTRrDZhSUg44VonNp0Lixy1SMjqacRZJKuL9p99y6e/CTfyz+cDY9hJ01M38jhABuW3kTdjPEMpfQOGh/awJ8k7cb/+v6rB+u0kQFnihs6AXZ6iuH4ZuTVKl9d94WamFRJ3ZTty98evH7++N+TbfvwqFru7S21m6w75fre2TtEdanZ24lms/f/l9h/XmLPP19KDP8goTn7GyVU1/v6CQAA
\ No newline at end of file
diff --git a/drpy_js/路漫漫[漫].js b/drpy_js/路漫漫[漫].js
deleted file mode 100644
index 254a6f6..0000000
--- a/drpy_js/路漫漫[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/路视频[密].js b/drpy_js/路视频[密].js
deleted file mode 100644
index 70621ba..0000000
--- a/drpy_js/路视频[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAJ6dcWYC/3VTW08aQRR+76/g6XiJuriwWDF98LFJ+2Tbl6YxCyyyurB0d9YWGhOMDeIFAm1VtBIvVbEXA0RScUF/zc7s8i86y24iNO0ke5nvfOc758w5s8wrHkWTBM8Tz4dHHrqQiCQh6BmybmpWNds9Lb3GteybobGeMSariNpiCCXVIMMsau9iibRE3ePRhYmQlk67PE2RKI1ZFiOCzKBUUmCiqbDEqyr9JvkFYSKG4pLLVQVeCcde9ntIsrykJZnRUebZfx34kJ0m60BvNTG8NNfDgx6vg0VFCQmKQ3OhXgrzCT5uF0j2js3jVaP1GW/rgHO/yWHeqjXIWgmM1oapV43OhVnMwuxTkj+1PrYoekV21/HVHr7dAZw/6WYO8OYl6fwE8qtq3hfM6zbO7QH9w+fXRqtNPl0B/npn6FVr/QfZyoOZPbItuo4v2mAVK1ZhA9dLFAL64OI2yVTNXAPw2QHlmPdnhn5mqxm31/jmkr4Bd3R83jJuGzQ1IJu73XLTaRF0j77boZyg5l3J1E/xWZNUTnqbXLbbLpHdfTdRp3A7qNEpk3KBlI9g7rlVXyM7+zD7yqp+s2rNoTGG6Vb2SWYV57Jmo42LebNaJ1sdUjjvO0un0ewksBywU8BOg88LPhZ8HPgC4HsMfi/4WfD7wR8AP91OA+cFbhI4FjgfcH7gOOACwE39HZAcr1u1bF/ApMSn5pO8otLmIUUTnJZKfDpFM3BHQxLjIh3QgLMjhUsrX3ywRmStNw0P3kYrQztNGROLmorEaGo8LCeQkEDjKuIVBMDP8AAvhPdoRowvAKhKeMZGYooQdUUNfbsn4dye/hvkEuxFnQeBiKCGBxE38CCI+JA6iEiiimxoAtmTPR6SlYigCBEApAQTMhoO2jq8mFCH6SiQL/f4sI4rmZERV2LFPZniodk8pTIhOZICiIoLmiLYhfVy/2etK38AONG4sCoEAAA=
\ No newline at end of file
diff --git a/drpy_js/达达猪.js b/drpy_js/达达猪.js
deleted file mode 100644
index a9b3bf2..0000000
--- a/drpy_js/达达猪.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn6L6+6L6+54yqJywKICAgIGhvc3Q6ICcgaHR0cHM6Ly93d3cuZGFkYXpodS5tZScsCiAgICB1cmw6ICcvdm9kdHlwZS9meWNsYXNzJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyYmbGk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAn5pu05pawfOeDreamnCcsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlucHV0ID0gewogICAgICAgICAgICBwYXJzZTogMSwKICAgICAgICAgICAgdXJsOiBpbnB1dCwKICAgICAgICAgICAganM6ICdkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGxheWxlZnQgaWZyYW1lIikuY29udGVudFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc3RhcnQiKS5jbGljaygpJywKICAgICAgICB9CiAgICB9KSwKICAgIHNlYXJjaFVybDogJy9yc3MueG1sP3dkPSoqJywKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHBvc3QoaW5wdXQuc3BsaXQoJz8nKVswXSwge2JvZHk6IGlucHV0LnNwbGl0KCc/JylbMV19KTsKICAgICAgICBsZXQgaXRlbXMgPSBwZGZhKGh0bWwsICdyc3MmJml0ZW0nKTsKICAgICAgICAvLyBsb2coaXRlbXMpOwogICAgICAgIGxldCBkID0gW107CiAgICAgICAgaXRlbXMuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgIGl0ID0gaXQucmVwbGFjZSgvdGl0bGV8bGlua3xhdXRob3J8cHViZGF0ZXxkZXNjcmlwdGlvbi9nLCAncCcpOwogICAgICAgICAgICBsZXQgdXJsID0gcGRmaChpdCwgJ3A6ZXEoMSkmJlRleHQnKTsKICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL2NjL2csICdtZScpOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsICdwJiZUZXh0JyksCiAgICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsICdwOmVxKDMpJiZUZXh0JyksCiAgICAgICAgICAgICAgICBjb250ZW50OiBwZGZoKGl0LCAncDplcSgyKSYmVGV4dCcpLAogICAgICAgICAgICAgICAgcGljX3VybDogIiIsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAp9
\ No newline at end of file
diff --git a/drpy_js/达达龟.js b/drpy_js/达达龟.js
deleted file mode 100644
index fd558f8..0000000
--- a/drpy_js/达达龟.js
+++ /dev/null
@@ -1 +0,0 @@
-JiOGjlktErvXn3uY2xm5ccEXCp3TGEvLS5MaFElGQAwvq7TNXfLHSa4uZAV09IDzx47yep0Yrf5/KGYUecXhVl0mUzfC5Y1dfGXZEqH1HEWFSC81bH74ZOatTg6EL+xgOM7ls6iZg9EOQT3Lm9Nh5mA5FaLjKIrO6KJpRTsMDBAlTRHQurkFsYSk1F/SncxzaZgUagaUU0Kj0HO3Ce6YbdAzlkcfUa+dMwBvwSgaceDiZM//P/24Cy56q/jpofm2jFUo83miK190lRNUaUNMkpLR9fc/0jahCJ5h4pHVFLtU0/Igk3ebkK8+2APcce51zjflmVBSgtzf/wMa+XL/EXPy1K5ICArTyOXxzbzGW8DTlNlqRkd8NFsBY96iUz9PjTNWkoUqv1liOyLuLvV8VjnHBPeZ8c7c//qpJW0HrgpXFODKW+HHuUdqcbSBoOvSIDJx3Z4Y3WkOWHX/79ylM/CeFYfeDdP1EbiYGegSHf02ZoqFqv6nSC4JN8QD6TwnD63neUcv6Xiq2Dy3FtCMSHvNadlRgUTvnYMnujjKWtdaYE01qeap+n2BowYm0C7qn280AlTw+ExQFj5qlCnEOWqSduep1Je9v0WnRLuFSqnExJYDwsZXt2nmqCoULtCk8dbo+P4oSJoSece03/+osvyj32mMlWcHzEO/E7dCj6eRptDa2f2E1hAm7Vp6sMIh7QPw8Zs1Zi+34Eg4/9IO1GCMLQWwdJHkwatGsZ3QokQWIHCKwYn/YdpuWCRFy0ddqf3NaZ3ZaZUgn3mbCYy1FB7PDc+fyXKGj6978O/WlIOxStCEhLRRJ8BcDqdJ23qP1t8ot83QBLawy0XggUzStDgU/5Y3SM/oRMhdtzgVo3Xen5MGoWR83Q2TgM6lK5Ua454h2LFZ70pzhtU4B24djsPrIPlARMneTqL0vxYfMpF/1/+8Vs6ezF8T65c4qPlBCMGe1Jn4sUxoIg7KFTLHcxPAIjUPG+rUufVH6OiJ6mJxS9Ur6j95gB3bIkA+LMBKW3v5IAnkroZtPfG0lnbzw0IAa3gEMDb7r3QkBASVmHqOV4fKa0TIBRgiAzQytIbx7iI/UgqventNC4E/Incn3mzWS0AlfNOYfpMfsfmZ0ZXcVgow52k+zbx2PHr67g8uplQ7mkNmGDEAXgcOTAiybd2RTP6vtuAzwQuwK56w56CCgU2uc1u2Ww+tQUgtO2HA8QWMn0J7sP/KIqvK/0OS4AcYr9OICjVTDqqDbaAbOU4YWkhr2kPfaXeLwd2B9HRSox9LO5uDQsZX35iCdjiAUQsMCsm+FUr7PpH+1uPS6Yb5I9B8yrw91nXPBjJi4YOHsTFSVZ1mFwpWLUoKtiPERph49hX3GKCk8rKJ03v/dgQzddTXe9elVpMAbClEJ6EvQQmMsjAQqV8hHl79R2+xFE08nVRNZHLGmDtAcuGykq3ccK2/knTBjJyqPTYUwOnTXrDQMv2Un2UBiWTJLnDaxqOmuo/dBVOqGmcSU2q6DrMHM/v/K/8bGS2ZGJCbeAmlDRRp23GAjKIfThE6eF4Dmm2Ft6f9n/hg8Cwpnk7tdajny2q/Oea1tR3jeTiPkQWb/ychBU/3AJzLXbEqsF9WYaArgeI1DOAEruus4/wiMMhw1bn8sl1b6AfYq5OhVYXm5gcRPQSusbgKzz4QsZe+EvmhHwMHvKOgCdf8w/bwbtJPgj9Deyl0ZWTRGHdtAuFGVD4jYXSCFzsIqZt39MKxyPDYM7I+aTVxz8+BcAswU+W6O/G0NuSJF3Jfwu6qiSC/E7cClrlTizT6Sfo+qiDojj8Xo0i+luRvMdi8rErPkOEJTQM5IkZV8irSSmowdtELnr2YlOwqC1Nx0d/elofOJ1t6HTClsPJdqeud43HJ2AJTJ6tAM2hKX2XYrfauA8451Wkjbmf9ZtJJxk+7Bu/0u4W6bEv/dYzoSATsx/XKj+/D7NzOawBLvE9KgW/eGhf5Lx8JqQoJ4o7ow/mwnY5TCOJNLaehlOZ8atcEyq3BVAaGe26sqCIBx8OcsDa/Z0A65BE3lsi3dekDEE2+fmyemcrrnvTHc8v+dqPWgoMKv4NujQpWsiqcvx3tgx+6Bt5miC9m+VY1f3hZQVcJ0g16owbFRYtOOaowqaujt5faE9+W+/834vBdkTOfM6wakFaFkdTMHs1F/m+bQ4Fnwtr5NaizcfA3eXLSdXVZEMJmBiNpBEtmYkXoi0fUh3TWMiIWy6zvP7QDfQfkEv/LVIyDMypP19c4HqdUFvJGsmSGlLtj6+2fK5wG0UXEimLwHt1tjOGZikl5W3XQvqqsXimOhkFbc2h29q96WgS8LTLM2IB1luAboVZVu/AjPFFQwRdiK0umauERq9udR4gfUmZb+Q==
\ No newline at end of file
diff --git a/drpy_js/追剧兔.js b/drpy_js/追剧兔.js
deleted file mode 100644
index 3c016ed..0000000
--- a/drpy_js/追剧兔.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/11RTY/SQBi+8yt6MG+BQCusXCDd/Qke1LOZtkM7ZFqambcsYDiqwYjxsJ6I2egFEqPRgxcE+TP242fslMxmg3OZ5PmayfM8dUfUQ4tIyYK4HqUuia3i9nu5edO1/u3eF7tNy3hVM9RhUdA3TIuT+QzAJ0jaUnhmq7ZoDGoTIgyRcmo4Wpxvv+Sfj0qvs5SugpEhpwotj4dsucle32g8HEtUcIiYyL5tz0eYWjjRpMfV717GJKqcxc3v7PAL1KViVQYUf/blcgfZu22+/wblj5/Z4ROoVxV35k8FV/YOdOECnkAPuo81LSkRXvjiRNss9unUSsLEJiMytWUaBFTiVcR8pwPXvtNsAmcRQ6d3b/cpEsa1PRHjqs72cMZ8WwvyD9ty9bGqLkldzrw2ZxLb7ng6IACnQgb/lTo4UybCBXhOp1jpQ0GHOjdb/y2Wb/P1MV997RuPRtLC8TMULA7q9YbhXOolTtPFSYpqm9NtCZpw4tG6GRFPlW22Hoo31ZaVYdFQu94B63Y5mBsCAAA=
\ No newline at end of file
diff --git a/drpy_js/追剧兔子[V2].js b/drpy_js/追剧兔子[V2].js
deleted file mode 100644
index 847f4c1..0000000
--- a/drpy_js/追剧兔子[V2].js
+++ /dev/null
@@ -1,304 +0,0 @@
-var rule = {
- title: '追剧兔子[V2]', // csp_AppYsV2
- host: 'https://www.zjtu.one/api.php/app/',
- url: 'video?tid=fyclassfyfilter&limit=20&pg=fypage',
- filter_url:'&class={{fl.class}}&area={{fl.area}}&lang={{fl.lang}}&letter={{fl.letter}}&year={{fl.year}}&by={{fl.by}}',
- filter:{
- "1":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"法语","v":"法语"},{"n":"德语","v":"德语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]}],
- "2":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"韩国","v":"韩国"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]}],
- "3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"选秀","v":"选秀"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"},{"n":"财经","v":"财经"},{"n":"求职","v":"求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]}],
- "4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"国产","v":"国产"},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]}]
- },
- detailUrl:'/detail?vod_id=fyid',
- searchUrl: '/search?text=**&pg=fypage',
- searchable: 2,
- quickSearch: 0,
- filterable:1,//是否启用分类筛选,
- headers:{'User-Agent':'okhttp/4.1.0'},
- timeout:5000,
- // 分类筛选 /api.php/app/nav || /xgapp.php/v1/nav || /api.php/v1.vod/types
- class_name:'电影&电视剧&综艺&动漫',
- class_url:'1&2&3&4',
- play_parse:true,
- lazy:`js:
- let play_Url = '';
- if (/\\.m3u8|\\.mp4/.test(input)) {
- input = {
- jx: 0,
- url: input,
- parse: 0
- }
- } else if (/,/.test(input) && /url=/.test(input)) {
- input = input.split('url=');
- play_Url = input[0].split(',')[0];
- input = {
- jx: 0,
- url: input[1],
- playUrl: play_Url,
- parse: 1
- }
- } else if (/url=|id=/.test(input)) {
- input = {
- jx: 0,
- url: JSON.parse(request(input)).url,
- parse: 0
- }
- } else if (/youku|iqiyi|v\\.qq\\.com|pptv|sohu|le\\.com|1905\\.com|mgtv|bilibili|ixigua/.test(input)) {
- play_Url = /bilibili/.test(input) ? 'https://jx.xmflv.com/?url=' : 'https://jx.777jiexi.com/player/?url='; // type0的parse
- // play_Url = /bilibili/.test(input) ? 'https://jx.xmflv.com/?url=' : 'json:http://pandown.pro/app/kkdy.php?url='; // type1的parse可加'json:'直接解析url (除了蜂蜜的'影视TV',其它的壳皆可用)
- input = {
- jx: 0,
- url: input,
- playUrl: play_Url,
- parse: 1,
- header: JSON.stringify({
- 'user-agent': 'Mozilla/5.0',
- }),
- }
- } else {
- input
- }
- `,
- limit:6,
- // 图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
- 推荐:`js:
- let d = [];
- let jsondata = [];
- let videoList = [];
- if (/v1\\.vod/.test(HOST)) {
- if(HOST.endsWith('/')){
- jsondata = JSON.parse(request(HOST + 'vodPhbAll'));
- } else {
- jsondata = JSON.parse(request(HOST + '/vodPhbAll'));
- }
- videoList = jsondata.data.list;
- } else {
- if(HOST.endsWith('/')){
- jsondata = JSON.parse(request(HOST + 'index_video'));
- } else {
- jsondata = JSON.parse(request(HOST + '/index_video'));
- }
- videoList = /xgapp/.test(HOST) ? jsondata.data : jsondata.list;
- }
- // log('videoList =========> '+stringify(videoList));
- videoList.forEach((it,idex) => {
- let vlist = /v1\\.vod/.test(HOST) ? videoList[idex].vod_list : videoList[idex].vlist ;
- vlist.forEach(it => {
- d.push({
- url:it.vod_id,
- title:it.vod_name,
- img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
- desc:it.vod_remarks,
- });
- });
- });
- setResult(d);
- `,
- 一级:`js:
- let d = [];
- let jsondata = [];
- let videoList = [];
- if (/v1\\.vod/.test(HOST)) {
- input = input.replace('video','v1.vod').replace('tid','type').replace('pg=','page=');
- jsondata = JSON.parse(request(input));
- videoList = jsondata.data.list;
- } else {
- input = HOST + '/'+ input.split('/')[4];
- jsondata = JSON.parse(request(input));
- videoList = jsondata.list || jsondata.data;
- }
- // log('videoList =========> '+stringify(videoList));
- videoList.forEach(it => {
- d.push({
- url:it.vod_id,
- title:it.vod_name,
- img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
- desc:it.vod_remarks,
- });
- });
- setResult(d);
- `,
- 二级:`js:
- if (/v1\\.vod/.test(HOST)) {
- input = HOST + '/'+ input.split('/')[3];
- } else {
- input = HOST + '/'+ input.split('/')[3].replace('detail','video_detail').replace('vod_id','id');
- }
- try {
- let html = request(input);
- html = JSON.parse(html);
- let node = /xgapp/.test(HOST) ? html.data.vod_info : html.data;
- VOD = {
- vod_id: node.vod_id,
- vod_name: node.vod_name,
- vod_pic: node.vod_pic,
- type_name: node.vod_class,
- vod_year: node.vod_year,
- vod_area: node.vod_area,
- vod_remarks: node.vod_remarks,
- vod_actor: node.vod_actor,
- vod_director: node.vod_director,
- vod_content: node.vod_content.strip()
- };
- if (typeof play_url === 'undefined') {
- var play_url = ''
- }
- var name = {
- 'bfzym3u8': '暴风',
- '1080zyk': '优质',
- 'kuaikan': '快看',
- 'lzm3u8': '量子',
- 'ffm3u8': '非凡',
- 'haiwaikan': '海外看',
- 'gsm3u8': '光速',
- 'zuidam3u8': '最大',
- 'bjm3u8': '八戒',
- 'snm3u8': '索尼',
- 'wolong': '卧龙',
- 'xlm3u8': '新浪',
- 'yhm3u8': '樱花',
- 'tkm3u8': '天空',
- 'jsm3u8': '极速',
- 'wjm3u8': '无尽',
- 'sdm3u8': '闪电',
- 'kcm3u8': '快车',
- 'jinyingm3u8': '金鹰',
- 'fsm3u8': '飞速',
- 'tpm3u8': '淘片',
- 'lem3u8': '鱼乐',
- 'dbm3u8': '百度',
- 'tomm3u8': '番茄',
- 'ukm3u8': 'U酷',
- 'ikm3u8': '爱坤',
- 'hnzym3u8': '红牛资源',
- 'hnm3u8': '红牛',
- '68zy_m3u8': '68',
- 'kdm3u8': '酷点',
- 'bdxm3u8': '北斗星',
- 'qhm3u8': '奇虎',
- 'hhm3u8': '豪华',
- 'kbm3u8': '快播'
- };
- let episodes = /v1\\.vod/.test(HOST)?node.vod_play_list:node.vod_url_with_player;
- if (episodes != '') {
- let playMap = {};
- let arr = [];
- episodes.forEach(ep => {
- let from = [];
- if (/v1\\.vod/.test(HOST)) {
- from = ep.player_info.from||ep.player_info.show||ep.from||ep.show;
- } else {
- from = ep.code||ep.name;
- }
- if (!playMap.hasOwnProperty(from)) {
- playMap[from] = []
- }
- // let parse_api = '';
- // if (/v1\\.vod/.test(HOST)) {
- // parse_api = ep.player_info.parse != null ? ep.player_info.parse : ep.player_info.parse2;
- // // parse_api = /,/.test(parse_api) ? parse_api.split(',')[1] : parse_api;
- // } else {
- // parse_api = ep.parse_api;
- // }
- // log('parse_api =========> '+parse_api);
- // if (parse_api != null && !/\\.m3u8|\\.mp4/.test(ep.url)) {
- // parse_api = parse_api.replaceAll('..','.') ;
- // ep.url = ep.url.replaceAll('$','$'+parse_api);
- // }
- if (from != null) playMap[from].push(ep.url)
- });
- for (var key in playMap) {
- if ('bfzym3u8' == key) {
- arr.push({
- flag: name[key],
- url: playMap[key],
- sort: 1
- })
- } else if ('1080zyk' == key) {
- arr.push({
- flag: name[key],
- url: playMap[key],
- sort: 2
- })
- } else if ('kuaikan' == key) {
- arr.push({
- flag: name[key],
- url: playMap[key],
- sort: 3
- })
- } else if ('lzm3u8' == key) {
- arr.push({
- flag: name[key],
- url: playMap[key],
- sort: 4
- })
- } else if ('ffm3u8' == key) {
- arr.push({
- flag: name[key],
- url: playMap[key],
- sort: 5
- })
- } else if ('snm3u8' == key) {
- arr.push({
- flag: name[key],
- url: playMap[key],
- sort: 6
- })
- } else if ('qhm3u8' == key) {
- arr.push({
- flag: name[key],
- url: playMap[key],
- sort: 7
- })
- } else {
- arr.push({
- flag: name[key] ? name[key] : key,
- url: playMap[key],
- sort: 8
- })
- }
- }
- arr.sort((a, b) => a.sort - b.sort);
- let playFrom = [];
- let playList = [];
- arr.map(val => {
- if (!/undefined/.test(val.flag)) {
- playFrom.push(val.flag);
- playList.push(val.url);
- }
- })
- VOD.vod_play_from = playFrom.join('$$$');
- VOD.vod_play_url = playList.join('$$$');
- } else {
- VOD.vod_play_from = node.vod_play_from;
- VOD.vod_play_url = node.vod_play_url;
- }
- } catch (e) {
- log("获取二级详情页发生错误:" + e.message);
- }
- `,
- 搜索:`js:
- let d = [];
- let jsondata = [];
- let videoList = [];
- if (/v1\\.vod/.test(HOST)) {
- input = (HOST + '/'+ input.split('/')[3]).replace('/search','').replace('text=','wd=').replace('pg=','page=');
- jsondata = JSON.parse(request(input));
- videoList = jsondata.data.list;
- } else {
- input = HOST + '/'+ input.split('/')[3]
- jsondata = JSON.parse(request(input));
- videoList = jsondata.list || jsondata.data;
- }
- // log('videoList =========> '+stringify(videoList));
- videoList.forEach(it => {
- d.push({
- url:it.vod_id,
- title:it.vod_name,
- img:it.vod_pic.startsWith('http') ? it.vod_pic : it.vod_pic.startsWith('//') ? 'https:' + it.vod_pic : it.vod_pic.startsWith('/') ? getHome(HOST) + it.vod_pic : getHome(HOST) + '/' + it.vod_pic,
- desc:it.vod_remarks,
- });
- });
- setResult(d);
- `,
-}
\ No newline at end of file
diff --git a/drpy_js/追影TV.js b/drpy_js/追影TV.js
deleted file mode 100644
index 8e3332c..0000000
--- a/drpy_js/追影TV.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+i/veW9sVRWJywKICAgIGhvc3Q6ICdodHRwOi8vc3ZpcC56aHVpeWluZy5jeW91LycsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCcsCiAgICB1cmw6ICcvaW5kZXgucGhwL3ZvZC90eXBlL2lkL2Z5Y2xhc3MvcGFnZS9meXBhZ2UuaHRtbCcsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICdib2R5JiYuaGwtc21uYXYgbGk7YSYmVGV4dDthJiZocmVmOy4qLyhcXGQrKS5odG1sJywKICAgIGxpbWl0OiA0MCwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIOaOqOiNkDogJy5obC12b2QtbGlzdDtsaTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5yZW1hcmtzJiZUZXh0O2EmJmhyZWY7LmhsLWl0ZW0tc3ViJiZUZXh0JywKICAgIGRvdWJsZTogdHJ1ZSwKICAgIOS4gOe6pzogJy5obC12b2QtbGlzdCYmLmhsLWxpc3QtaXRlbTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5yZW1hcmtzJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICcuaGwtY29sLXhzLTEyOmVxKDEpLS1lbSYmVGV4dDsuaGwtY29sLXhzLTEyOmVxKDIpJiZUZXh0JywKICAgICAgICBpbWc6ICcuaGwtbGF6eSYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJy5obC1jb2wteHMtMTI6ZXEoMTEpLS1lbSYmVGV4dDsuaGwtY29sLXhzLTEyOmVxKDUpLS1lbSYmVGV4dDsuaGwtY29sLXhzLTEyOmVxKDYpLS1lbSYmVGV4dDsuaGwtY29sLXhzLTEyOmVxKDMpLS1lbSYmVGV4dDsuaGwtY29sLXhzLTEyOmVxKDQpLS1lbSYmVGV4dCcsCiAgICAgICAgY29udGVudDogJy5obC1jb250ZW50LXRleHQmJlRleHQnLAogICAgICAgIHRhYnM6ICcuaGwtdGFicyYmYScsCiAgICAgICAgbGlzdHM6ICcuaGwtcGxheXMtbGlzdDplcSgjaWQpJiZsaScsCiAgICB9LAogICAg5pCc57SiOiAnLmhsLWxpc3QtaXRlbTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5yZW1hcmtzJiZUZXh0O2EmJmhyZWY7LmhsLXRleHQtbXV0ZWQuaGwtbGMtMiYmVGV4dCcsCn0=
\ No newline at end of file
diff --git a/drpy_js/速播小屋.js b/drpy_js/速播小屋.js
deleted file mode 100644
index f5eeaf4..0000000
--- a/drpy_js/速播小屋.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVx0m7uwstVbsPzuQmO9TORInvGiVSAnKXmE0VboFXibItXLQ+kQFprU60Q1gwFgXoAgkzKXkXHBi4QfLtN7C2p2U+55DykTSypm0GbIszJRy020Z748xpsVFJY+Tca/5EaaXBL/Rjq6UeYTW9DMS/YUe5fNyHaPDD5d9yQmvUm7HJ5pm9Bzqjc7l8AaVwfqiwwJNtx7WMEgbvXIxhFQpK5crhMeiSC9uktmV7xjWuHl4lyDqXk1z1RC6gPwTVOTr1gVDpPmVDQu2bDdRcS2tDfLwpGboZH4Boz0rMdlyv8OZrudMQL/PoKJy/svNZpXsgJN7sdGPvTPLKWobvDKrDwtlyWZEuiFUwqjRh8aTFN2mYNMn4eR4KRoRyUkKZ0XujOPl9OgQfzXKiGPUgnCRzhG4pfXad+Y/lNTod+hAM514g5wEb0eS0ekBGWDnyWSaEdAOlTcNdZQrsjOr2KwuD+uNtVBn54/x9pUOZBMkghVi8vCKy6hYuWJr0GBswXC0PVWrcfOHVdMRvrKQBIjj1U+OJPM2DIQ5Nbj0TpR39sv6VgSvl5ilXUFz18rn7lp5XxWB0EPK4HMqhl52PYUtH95Y3K8kfHM7/ZzKXViCl34gkrw8+bKQVFLLCtZHAIoa39ghdMg1gWEdL4k+0SqU/Rbc8GKD1kLunpSlBcPQClirZ/xSQsDPvNqrYuGVQgQO7ap/Gzb1Tvzmh0WrBivvV69TNjcjORNNyhXmw6Y5mHCs2IJqmdbyBeIrO0G1qLZWAQtYC3SQQm+mw8WeiWbQAzdq3pP4LyvkFWuSg5Nnj4bJxDCBrrzWz+X6eACM8asj1JNWCM/98sNYixWhKtRPlFVC8tqCdcodpyLg8pK1cMycgnstKJZ9lohPJcyUyrn9WAWR5UwJbq1glZEogN6w0fZR6dg//Hsu46uEY6UzgiB4P4D0U+lowPePkSAk/mrXL+SdwWi7nHcsINr8eAB320S5X5BiRXFp9IEeISwBwEV6mUwkhHC7URPwkZrFJDIfRvg27v7N6FAHMYpfjv7GFwPAPUpY9Zy+dcn0+J+nJbE3hyjmnwiVtdwuWCzmn8ferIdQ2eL6Qs6V6QanHTCnFLDFTHnHydMUeNLkDe3v3DYaZIHbVkF6hzvWsEBWvAKMBaJUIGfxsZI/rI4kzk2LT0oSiUfdTdLqvCFVSnSGsxiduiQOF0x0Ggg1b9RknkR4OQ==
\ No newline at end of file
diff --git a/drpy_js/速讯影院.js b/drpy_js/速讯影院.js
deleted file mode 100644
index 105efde..0000000
--- a/drpy_js/速讯影院.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/那兔视频.js b/drpy_js/那兔视频.js
deleted file mode 100644
index 77e25dd..0000000
--- a/drpy_js/那兔视频.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/酷云77.js b/drpy_js/酷云77.js
deleted file mode 100644
index a9efa8f..0000000
--- a/drpy_js/酷云77.js
+++ /dev/null
@@ -1,139 +0,0 @@
-// 注意事项:此源仅支持tvbox的js1以及c#版drpy的js0,暂不支持drpy官方py版的js0
-
-// 注入全局方法,方便
-globalThis.getTime = function(){
-let ts= Math.round(new Date().getTime()/1000).toString();
-log('获取时间戳:'+ts);
-return ts
-}
-
-globalThis.getHeaders= function(input,ts){
-let tkstr=input.split('?')[1].split('&').map(function(it){
- return it.split('=')[1]
-}).join('');
-tkstr=input.split('?')[0].replace('https://api.tyun77.cn','')+tkstr+ts+'XSpeUFjJ';
-log('tk加密前:'+tkstr);
-let TK=md5(tkstr);
-log('tk加密后:'+TK);
-let headers={
- "User-Agent":"okhttp/3.12.0",
- "TK":TK
-};
-return headers
-}
-
-var rule = {
- title:'酷云77',
- host:'https://api.tyun77.cn',
- homeUrl:'/api.php/provide/homeBlock?type_id=0',
- searchUrl:'/api.php/provide/searchVideo?searchName=**',
- searchable:2,
- quickSearch:0,
- filterable:1,
- multi:1,
- // 分类链接fypage参数支持1个()表达式
- // url:'/api.php/provide/searchFilter?type_id=fyclass&pagesize=24&pagenum=fypage', // 旧的写法注释掉
- url:'/api.php/provide/searchFilter?devid=453CA5D864457C7DB4D0EAA93DE96E66&package=com.sevenVideo.app.android&pagenum=fypage&pagesize=24&version=&sj=$ts&type_id=fyclass',
- // detailUrl:'/api.php/provide/videoDetail?devid=453CA5D864457C7DB4D0EAA93DE96E66&package=com.sevenVideo.app.android&version=&ids=fyid', //旧的写法注释掉
- detailUrl:'/api.php/provide/videoDetail?devid=453CA5D864457C7DB4D0EAA93DE96E66&ids=fyid&package=com.sevenVideo.app.android&version=',
- filter_url:'year={{fl.y}}&category={{fl.scat}}&area={{fl.a}}',
- filter:{0: [{'key': 'y', 'name': '年代', 'value': [{'n': '全部', 'v': ''},{'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2015之前', 'v': 'lt|2015'}]}, {'key': 'a', 'name': '地区', 'value': [{'n': '全部', 'v': ''}, {'n': '中国大陆', 'v': '中国大陆'}, {'n': '美国', 'v': '美国'}, {'n': '日本', 'v': '日本'}, {'n': '中国香港', 'v': '中国香港'}, {'n': '中国台湾', 'v': '中国台湾'}, {'n': '韩国', 'v': '韩国'}, {'n': '欧洲', 'v': '欧洲'}, {'n': '其他', 'v': '泰国'}]}, {'key': 'scat', 'name': '类型', 'value': [{'n': '全部', 'v': ''}, {'n': '剧情', 'v': '剧情'}, {'n': '动作', 'v': '动作'}, {'n': '科幻', 'v': '科幻'}, {'n': '喜剧', 'v': '喜剧'}, {'n': '战争', 'v': '战争'}, {'n': '爱情', 'v': '爱情'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '伦理', 'v': '伦理'}]}], 1: [{'key': 'y', 'name': '年代', 'value': [{'n': '全部', 'v': ''},{'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2015之前', 'v': 'lt|2015'}]}, {'key': 'a', 'name': '地区', 'value': [{'n': '全部', 'v': ''}, {'n': '中国大陆', 'v': '中国大陆'}, {'n': '美国', 'v': '美国'}, {'n': '日本', 'v': '日本'}, {'n': '中国香港', 'v': '中国香港'}, {'n': '中国台湾', 'v': '中国台湾'}, {'n': '韩国', 'v': '韩国'}, {'n': '欧洲', 'v': '欧洲'}, {'n': '其他', 'v': '泰国'}]}, {'key': 'scat', 'name': '类型', 'value': [{'n': '全部', 'v': ''}, {'n': '剧情', 'v': '剧情'}, {'n': '动作', 'v': '动作'}, {'n': '科幻', 'v': '科幻'}, {'n': '喜剧', 'v': '喜剧'}, {'n': '战争', 'v': '战争'}, {'n': '爱情', 'v': '爱情'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '伦理', 'v': '伦理'}]}], 2: [{'key': 'y', 'name': '年代', 'value': [{'n': '全部', 'v': ''},{'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2015之前', 'v': 'lt|2015'}]}, {'key': 'a', 'name': '地区', 'value': [{'n': '全部', 'v': ''}, {'n': '中国大陆', 'v': '中国大陆'}, {'n': '美国', 'v': '美国'}, {'n': '日本', 'v': '日本'}, {'n': '中国香港', 'v': '中国香港'}, {'n': '中国台湾', 'v': '中国台湾'}, {'n': '韩国', 'v': '韩国'}, {'n': '欧洲', 'v': '欧洲'}, {'n': '其他', 'v': '泰国'}]}, {'key': 'scat', 'name': '类型', 'value': [{'n': '全部', 'v': ''}, {'n': '剧情', 'v': '剧情'}, {'n': '动作', 'v': '动作'}, {'n': '科幻', 'v': '科幻'}, {'n': '喜剧', 'v': '喜剧'}, {'n': '战争', 'v': '战争'}, {'n': '爱情', 'v': '爱情'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '伦理', 'v': '伦理'}]}], 3: [{'key': 'y', 'name': '年代', 'value': [{'n': '全部', 'v': ''},{'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2015之前', 'v': 'lt|2015'}]}, {'key': 'a', 'name': '地区', 'value': [{'n': '全部', 'v': ''}, {'n': '中国大陆', 'v': '中国大陆'}, {'n': '美国', 'v': '美国'}, {'n': '日本', 'v': '日本'}, {'n': '中国香港', 'v': '中国香港'}, {'n': '中国台湾', 'v': '中国台湾'}, {'n': '韩国', 'v': '韩国'}, {'n': '欧洲', 'v': '欧洲'}, {'n': '其他', 'v': '泰国'}]}, {'key': 'scat', 'name': '类型', 'value': [{'n': '全部', 'v': ''}, {'n': '剧情', 'v': '剧情'}, {'n': '动作', 'v': '动作'}, {'n': '科幻', 'v': '科幻'}, {'n': '喜剧', 'v': '喜剧'}, {'n': '战争', 'v': '战争'}, {'n': '爱情', 'v': '爱情'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '伦理', 'v': '伦理'}]}], 4: [{'key': 'y', 'name': '年代', 'value': [{'n': '全部', 'v': ''},{'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2015之前', 'v': 'lt|2015'}]}, {'key': 'a', 'name': '地区', 'value': [{'n': '全部', 'v': ''}, {'n': '中国大陆', 'v': '中国大陆'}, {'n': '美国', 'v': '美国'}, {'n': '日本', 'v': '日本'}, {'n': '中国香港', 'v': '中国香港'}, {'n': '中国台湾', 'v': '中国台湾'}, {'n': '韩国', 'v': '韩国'}, {'n': '欧洲', 'v': '欧洲'}, {'n': '其他', 'v': '泰国'}]}, {'key': 'scat', 'name': '类型', 'value': [{'n': '全部', 'v': ''}, {'n': '剧情', 'v': '剧情'}, {'n': '动作', 'v': '动作'}, {'n': '科幻', 'v': '科幻'}, {'n': '喜剧', 'v': '喜剧'}, {'n': '战争', 'v': '战争'}, {'n': '爱情', 'v': '爱情'}, {'n': '恐怖', 'v': '恐怖'}, {'n': '伦理', 'v': '伦理'}]}]},
- headers:{
- "User-Agent":"okhttp/3.12.0"
- },
- timeout:5000,
- class_name:'全部&电影&电视剧&综艺&动漫',
- class_url:'0&1&2&3&4',
- limit:20,
- play_parse:true,
- play_json:0,
- // 手动调用解析请求json的url,此lazy不方便
- // lazy:'js:input={parse:1,url:input};',
- lazy:'',
- lazy:'js:function GetPlayUrl(playUrl){let realPlay={parse:0,url:playUrl};if(/mgtv|sohu/.test(playUrl)){realPlay.headers={"User-Agent":"Mozilla/5.0"}}else if(/bili/.test(playUrl)){realPlay.headers={"User-Agent":"Mozilla/5.0",Referer:"https://www.bilibili.com"}}else if(/ixigua/.test(playUrl)){realPlay.headers={"User-Agent":"Mozilla/5.0",Referer:"https://www.ixigua.com"}}return realPlay}if(/\\.m3u8|\\.mp4/.test(input)){input={parse:0,url:input}}else{try{let jxUrl="http://api.tyun77.cn/api.php/provide/parserUrl?url=";var t=Math.floor((new Date).getTime()/1e3).toString();let jxExt="&retryNum=0&pcode=010110002&version=2.1&devid=f9c9ce5bb5827a266829383718e6131a&package=com.sevenVideo.app.android&sys=android&sysver=12&brand=Xiaomi&model=Mi_10_Pro&sj="+t;let url=jxUrl+input+jxExt;let TK="/api.php/provide/parserUrl"+"Xiaomif9c9ce5bb5827a266829383718e6131aMi_10_Procom.sevenVideo.app.android010110002"+0+t+"android12"+encodeURIComponent(vipUrl)+"2.1"+t+"XSpeUFjJ";let html=request(url,{headers:{Referer:jxUrl,"User-Agent":"okhttp/3.12.0",TK:md5(TK)}});let urll=JSON.parse(html).data.url;let playhtml=request(urll);let playurl=JSON.parse(playhtml).url;input=GetPlayUrl(playurl)}catch(e){input={parse:1,jx:1,url:input}}}',
- 推荐:'json:data.blocks;contents;title;videoCover;msg;id',
- double:true,
- // 一级:'json:data.result;title;videoCover;msg;id', 旧的写法注释掉
- 一级:`js:
- var d=[];
- let ts= getTime();
- input=input.replace('$ts',ts);
- let html = request(input,{
- headers:getHeaders(input,ts)
- });
- //print(html);
- html = JSON.parse(html);
- html.data.result.forEach(function(it){
- d.push({
- title:it.title,
- img:it.videoCover,
- desc:it.msg,
- url:it.id
- })
- });
- setResult(d);
- `,
- 二级:`js: var d = [];
- VOD = {
- vod_id: input
- };
- let ts= getTime();
-try {
- input=input+'&sj='+ts;
- let html = request(input,{
- headers:getHeaders(input,ts)
- });
- //print(html);
- html = JSON.parse(html);
- let node = html.data;
- VOD = {
- vod_id: node["id"],
- vod_name: node["videoName"],
- vod_pic: node["videoCover"],
- type_name: node["subCategory"],
- vod_year: node["year"],
- vod_area: node["area"],
- vod_remarks: node["msg"],
- vod_actor: node["actor"],
- vod_director: node["director"],
- vod_content: node["brief"].strip()
- };
- let tid = input.split("ids=")[1].split('&')[0];
- let listUrl='https://api.tyun77.cn/api.php/provide/videoPlaylist?devid=453CA5D864457C7DB4D0EAA93DE96E66&ids='+tid+'&package=com.sevenVideo.app.android&version=&sj='+ts;
- html = request(listUrl,{
- headers:getHeaders(listUrl,ts)
- });
- html = JSON.parse(html);
- let episodes = html.data.episodes;
- let playMap = {};
- if (typeof play_url === "undefined") {
- var play_url = ""
- }
- play_url = play_url.replace("&play_url=", "&type=json&play_url=");
- episodes.forEach(function(ep) {
- let playurls = ep["playurls"];
- playurls.forEach(function(playurl) {
- let source = playurl["playfrom"];
- if (!playMap.hasOwnProperty(source)) {
- playMap[source] = []
- }
- playMap[source].append(playurl["title"].strip() + "$" + play_url + urlencode(playurl["playurl"]))
- })
- });
- let playFrom = [];
- let playList = [];
- Object.keys(playMap)
- .forEach(function(key) {
- playFrom.append(key);
- playList.append(playMap[key].join("#"))
- });
- let vod_play_from = playFrom.join("$$$");
- let vod_play_url = playList.join("$$$");
- VOD["vod_play_from"] = vod_play_from;
- VOD["vod_play_url"] = vod_play_url
-} catch (e) {
- log("获取二级详情页发生错误:" + e.message)
-}`,
- 搜索:'',
- 搜索:'json:data;videoName;videoCover;msg;id',
-}
\ No newline at end of file
diff --git a/drpy_js/酷云影视.js b/drpy_js/酷云影视.js
deleted file mode 100644
index 017ad7c..0000000
--- a/drpy_js/酷云影视.js
+++ /dev/null
@@ -1 +0,0 @@
-bXViYW4ubXhvbmU1LuS6jOe6py50aXRsZSA9ICdoMSYmVGV4dDsudmlkZW8taW5mby1hdXgmJlRleHQnOwptdWJhbi5teG9uZTUu5LqM57qnLmRlc2MgPSAnLnZpZGVvLWluZm8taXRlbXM6ZXEoNCkmJlRleHQ7OzsudmlkZW8taW5mby1hY3RvcjplcSgxKSYmVGV4dDsudmlkZW8taW5mby1hY3RvcjplcSgwKSYmVGV4dCc7CnZhciBydWxlID0gewogICAgdGl0bGU6ICfphbfkupHlvbHop4YnLAogICAg5qih5p2/OiAnbXhvbmU1JywKICAgIGhvc3Q6ICdodHRwczovL3NjMTA4MC50b3AnLAogICAgdXJsOiAnL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWZpbHRlci5odG1sJywKICAgIGZpbHRlcmFibGU6IDEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5jYXRlSWR9fXt7ZmwuYXJlYX19e3tmbC5ieX19e3tmbC5jbGFzc319e3tmbC5sYW5nfX17e2ZsLmxldHRlcn19L3BhZ2UvZnlwYWdle3tmbC55ZWFyfX0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyYTJVNGJTUlNHMzhYWGpOeE55SHFYZmQvM2pITGhSTlpNTkF3akFUTVNpcEFBWThjUXNBMGlPSTdObHJBUHhtWVpCcG94ZmhsWHQvMFcwM2FWVDFmL2pVUWpjWU5VbC83KzM2ZXFUaFh0YzZqK0dOQURsMzcrR1BndDNCTzRGSGpmSHVycUNyUUVPa0svaCsyUGJHakpqRVR0ejMrRjJ2OE1OM3dkZFJ4ZHJrV1c2OWorRU9odEVYUXlaL3NGRFRZaUJRVnJXcXo0aG9qbldBUnJXc3orbE5rMzZiWUlSZ01OTDFkS09SaUlNeHBvYVl6dDdjTkFuRkVVV3BzVWhUT2FTL3hyeFJpQ3VYRFd0RlR6aTJ4azFXMFJqT1l5WExCS1lCRk1XcEUxc2U5WlVaMlJaZUdUWjBXQzBYVHppNVdEV1pndVp4UWxObDdMckVBVXppaks5S3E5Um9qQzJUSDJ5QnhZc3liSHdNSVpXU0xENXNBM3NIQkdxZHRQc3VndXBJNnpwcVUyTlc1K1hYQmJCS09CSmo5Vmh3d1lpRFBLeThHNk5mRVBLMjFBYWdpVE1UbGYvWUduaGpPeUpHSXN1UWtXenVqVWxGUDI5c0twNGN6WnFadzVOWVk3MVdCa0dTeGJmOFBTQmFNRWxzYXMvZHhoUzNNcHZXL3JYK0NQZ0ZCbk9DUTlBWEpGTm1MNGZRTE1MOVV5c2VZNDlVQkJnV2kzRmpQbWJzSGxFTWhKY05IY08zREg0SWpXZEpCZzJaTExJUkJ0K05ZWGRBaEVHL0I1QXgwQ1VZejBncGxiYzhmZ2lOWXlzNEl4QkhKTzFiL29FTWlaYWRFNzA2SXJ4bWlSR1l2dUdCeFJqTUdrbldVV1gzR0hJVXByWGloYnlidzFsSEV2bTZqek1KbzFQNWZ0TDdzSEpVcSs2RTVsZjlKdDRrZytUdTJoamwrYzQxUXQ1S3ZMZlg2UFU3WmsrNXNEMUFNRkJaSzJFUjBDMFdIWm5FZUhRTFNONlJJYlRhUEpvZEoyZTB3Y1NVY0dIUUpKQjlQajRFZzZNcDQxY3lTbG5hMUgzQTZPNUxUM2hFT2RUdHJOOUU0dHZlMHo3YTFhNjVsbStIcVlZQU5JYWl1cXJiS3FvNnJMcW9hcUpxbjZSVkJ0SUtrWFVMMGdxK2RSUFMrcjUxQTlKNnRuVVQwcnEyMm90c2txNWtxWGM2VmpyblE1VnpybVNwZHpwV091ZERsWEd1WktrM09sWWE0ME9WY2Faa09UczZGaE5qUTVHeHBtd3dhdXYvZHdkM2RZT25vc256WUxvejZQM21VNjFvMG93Y3VrWEFIbENpbFhRYmxLeWpWUXJwRnlIWlRycE53QTVRWXBOMEc1U2NvdFVHNlJjaHVVMjZUY0FlVU9LWGRCdVV2S1BWRHVrWElmbFB1a1BBRGxBU2tQUVhsSXlpTlFIcEh5R0pUSHBEd0I1UWtwVDBGNVNzb3pVSjZSOGh5VTU2UzhBT1VGS1M5QmVVbktLMUJla2ZJYWxOZWt2QUhsRFNuYVR4ZEJxeFA1VCtCZGovVGtUWXd6SStrNS9zNER1UjduWFUrdys0TnRidzVSTVF5ek9DR3B2MzdvN25KKzlBcURMQjZUMUs3M2YzU0c2ek40MnhKb1BhbG03dWc2MTBkM3hBdHgxci9ESXNuRFNuU2hIS09EWk9zN3pNaURoYlBqOVZ0SGRaQSsraTBmSGFTUFhzQkhqMVBabS9QMEFvSTV6VlRVekJSZ016aWp1WHlKZVJvN3dhUjJ3Yk1CZ2gxZTlZa28zckpQZFJHcWkxQmRoT29pVkJlaHVnalZSYWd1UW5VUnA2bUxPSE5DWFVTdGI4aGE2b1BLbnpPNWNCMmM4UmF1TnFPcHJwZXJ4YmpiSWhoRkdjK2J3L0N2Y01HYzM5V291UXQxdG1ET2ovTldaUzhGMCtWTUtodHJQMkM2Z3BIRldHWHIwMkRoak9hUzNmVGVTSEJHVVNabXpHMjh3ZUtNb3V6dW12Rmt4UmozM0NXNEZFcmo5bmU3cjRBMGNrWVJOd2FxL1NNUWl6TlYzS3ZpWGhYM3FyaFh4YjBxN2xWeHI0cDdWZHlmMXVLKzdZU0tleCtWdTQvWHNLeEl2am9ITFlKZ05GQmkyVXJGWUNET3lKS2F0dGJ3ZFNQTzZFZng2RmVmcXFtcGFnSnVOQVNqZ1dibldCYnVId1J6aXFNakx4Zk1uT0Y5eDRvem1zdlJyd2o1dUlCaFJUdloyekFYem1UTHdwYlhZalBhby9tRHluL3dwcFpnRkNVeHcrSlppTUtaYzJRM1dSNjZLOEZvb095d21ZRytTREFudXh1c25NYnNOdGpoVmFlNm9sQmRqT3BpQXFxTFVWMk02bUpVRjZPNkdOWEZuUDR1cHZkL2tvRldUN2N5QUFBPScsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgMToge2NhdGVJZDogJzEnfSwKICAgICAgICAyOiB7Y2F0ZUlkOiAnMid9LAogICAgICAgIDM6IHtjYXRlSWQ6ICczJ30sCiAgICAgICAgNDoge2NhdGVJZDogJzQnfQogICAgfSwKICAgIHNlYXJjaFVybDogJy9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgICB9LAogICAgY2xhc3NfcGFyc2U6ICcubmF2LW1lbnUtaXRlbXMmJmxpOmx0KDUpO2EmJlRleHQ7YSYmaHJlZjsvKFxcZCspLmh0bWwnLAogICAgbGF6eTogYGpzOgogICAgICAgIHZhciBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKICAgICAgICB2YXIgdXJsID0gaHRtbC51cmw7CiAgICAgICAgaWYgKGh0bWwuZW5jcnlwdCA9PSAiMSIpIHsKICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKQogICAgICAgIH0gZWxzZSBpZiAoaHRtbC5lbmNyeXB0ID09ICIyIikgewogICAgICAgICAgICB1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSkKICAgICAgICB9CiAgICAgICAgaWYgKC9tM3U4fG1wNC8udGVzdCh1cmwpKSB7CiAgICAgICAgICAgIGlucHV0ID0gdXJsCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW5wdXQKICAgICAgICB9CiAgICBgLAp9
\ No newline at end of file
diff --git a/drpy_js/酷客影视.js b/drpy_js/酷客影视.js
deleted file mode 100644
index 65d04b3..0000000
--- a/drpy_js/酷客影视.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOSw++yJ8kLPZGH7bSG3+EXPt4QIAb8pNoprEt1UZ1T/V4W/sp4A5sfUtLeuACMYWQe1KwhJN9KGVLad9F06m3DJf4UKGy2nF6D8SlobdUjU7fQVhTQd4huJknINNo21kNQGbTvHPxDQBr/QFC364PNW3AXXAznlMXcX3pT8++qVD5QnlF5L4W7RYhoOOBvyMHD/vMvhOlJvqhMZkA4uAftUu1hQ1d1z5L179eZpvh5YNIrPDenPi/gGNihTzQeHy6JhBAjZ5oJfMlPIuG71KtmrxGX7OUgKCvVbLDq853/xIht2NxHhWPfNAGC5Xli/R+9N6zyfQP9MZHzglSKTlVB8uYGuws42d6CRM+j7g9T72WwbQy9kgQlNG7cKYRp3kDHNcMt/8xGC/9kjSviwMjqT
\ No newline at end of file
diff --git a/drpy_js/酷我听书[听].js b/drpy_js/酷我听书[听].js
deleted file mode 100644
index a46342b..0000000
--- a/drpy_js/酷我听书[听].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/+1XWY/jxhF+968QHIMzY21EipekXSiGJEoaShpd1G0YAm+2eDRFNqljMUCAHEiQINk85ClGDCRA/BLANmIgtoP8m53d9b9Ik9Jcu2tjN8lDHkIIEln1sau6qrq+UiwHmSBy9Ew58/idDL6ef/GPqz/+6mHm5OrJX59+/ZeTB6kUAeToWPjtz/7+7Be/O6g+xD8fHfUWDBFWWwj5D0kSAc8MrShnRxuYU70jJgocDCFjmpR9QIa6HKgWaQAH6QEpO0rkhh+ojhyGwNiJWtnYHVSEB1Egq3qZIkIYBfjG3viOvNODpRwsS7l8rpjLL1EMYpiTfZvAOmTAwC3nCXuj69uJHoQAeuU8RnJEBLQyzeXzbJGmKB6vGKDRztfLyYo1DxEONIE3xiCOpRimxOV5QrFv7CoQ2q+3GnhlOk+oMtJNGBzcT/dC+B6+9WVTPwbhsO1xGopjtA6i62CRQS6JA9A9VLYRITtO+f33CQOV0xARnr454PH+ANLdUEflja4saSrPEKoThThkOFTY7OnB7g/zZ0fvgiQsMiqvQugRuqdCDaepHCGjSIQW3CxV6O8CYFpoCQ0DLx8DP8aLXYwlsbYs5qgck6OW1ZpU4A74UA+AHi4dgG16Cf4Y6WN07m1YVpLyoQ+idQRUW0rlDzPUQXZI9gGWvytapmXz7uPHhpNLQ5qBQeaEZU8uL9+9i8PxPGdDsXJ9cdMJTRXAuCo1GX42m9lVpd7Z6Yiz2Pl8O2MZa7Xw262LcZ0DQmWsVquN8+awLlhsu7EYVJAxdKJY0Y15vKjEYcWm9mC06O9KE7IwY/VSr1EdL/T+3jRaDsfqOzjdx0rExG06bjNImZ0b67ZH03Che4USz2jKPtoXSLzefi5ddGRLH7eNAidk/V7cZrW1KgZ9Z6RH+kxu9Iegp7JeNBOEHuyGI8bejLvrxZ5XB1pzW+IUzxjqLnaSqRWkOtlYCdMJGHXiXns8hn1Q05oi9Br7wXxl+tuS6fKDrKUPZoFYPPcr636X8VB+Pl6H1bay2o+60L9ocmJx3rFgbbHre4UaJ4m7XgAG84ATBu7OFrvZ80l3qixaXhwKVXfaDj2eagxtreTxnXaL97KmvGojIO7bLbpGw1ZlhMLWOGJcNpLleh8VZrxpyg3gKwwc5YfOpJHVm0hwlKG6gR3fthtmf+AY4R5MfHZ/MazZDik0O4oVDAodYUOtJ4jsbPiN2ZZHIlKt3Vik+pLo21Ww3Qz60iTaD0OOEgLX30Ct47iDNROvxkXeViKlJ2rZuV+MCu35tNQ3xFjamajuz1TXmsSN3oXZ6oy3gKXcJtruGr7Sh8yiLqwDu6pqXZJv71l7ynf23UqP2p072SYMxX5B44feHsQXgr8I3O3GlCmpKal8fW6Q2d2oxOwWg5lUnTZ3ehggJyuKmkWCrXohj9sdr8arKLYnNtOqknPVEcG613bcRdxUNy7dQKTaFVZCyyFpueLuJ+OC0qtZsqQ0YWSBvdw6l873raIhrdp64Hm97myI2vvNtkNvYthXspHKUVGwyZLzWcVkDEZtzIYxPuxVTVQcn4+kcx6JQWXuUZ6wkuZFl4VUp2LCFQ00VV9P5hfdphnNA8oPVkLezg/AZjjtNfLTVsMwVzFZ5Sh3G0yG2rCtKTUwiRw05bs92Grsi7TD7gLdGw33sXBO0uEUMEYIV91R06qXRH/ClkzH71KrfsPZKuw4KrhMy6LlYlGv81oksuMZi9qTktAbMK16SetU+G0j76C+NdvuJErqVqqbSuWGk1wdRph2OIo6dpG0QSw92U246tnHv7z68+dXn//2xWdfEt9+8renXz8hnv/hKyx78dlPMX8RV//84sWnP7/6zSdYdHJ3gQNT0QRTIDiCp4+6hCOWvhyEeHEURPpB6sj73cPMe6swh6CEAtxST0/PMuUfHek0hegoYyHXwRwb6OtID9Ep8PwInT26B8FWMaIl9bq51Mpp8s5ZTpORnMO6W3D6ckLYqZ/460Hm6BZ1eUBdnh2c02CUdtRbd59+9ePn33z6Bg5r2MCHHz16200k3n7nLpKvW3gqwpxUl1XrFKD7LlyvBxI/vocpQ5TQd8qNwDMgEWFWKhc1plDUCvR6QxcNzmBvaJ/jUtq/y/J5OmX5VCRhUYkrsjxu2ZhDA6i9btjAE8FR9dI88GYDyhvNEyoM/HKyT+KwNa18kslmAMqlj6KGH04SkqcSbk/q/40onMYknlJ4vkC4UAHJDBEe3CjnTx7dC76W86PQOr2fkZsxDmgPXlEcZ8RrJ7v4FL4KAq6ZQlSIHRNd81WEpodqCknXu6+/vFNtd+/xFDTUQ9yITrWz+yfg6Te/frN6x9sK/7sl70YhUJPp6C1KPvHiEHgcgKSPJYl+L8n99RlI8nZzAtKH8AMjGQFfrj5LS0qLTaa2XHGJgOwpMlyO8pXlGgQRSMssPTwq9HAuUNL1lhuArGUITI8Ibmsu3Qh+TotOCcoMTdmuz5x8RzImPeHm38T1hflnmfZPI4Au7q3Pn/wEf65+f/3/4hXcdWsLcysIvNOTH5yc3Rq7n+JnTz5+/uWf/o2WRpIZfOxfm9O3Szt3L+9p9d/P+9FS8srZ/xvgf9QAhdpyVBk26yNR+N9ugt739j/wcut7m9b2zuW/AKSCcI63DwAA
\ No newline at end of file
diff --git a/drpy_js/采集之王[合].js b/drpy_js/采集之王[合].js
deleted file mode 100644
index c626aed..0000000
--- a/drpy_js/采集之王[合].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/量子影视[资].js b/drpy_js/量子影视[资].js
deleted file mode 100644
index 4ae8f1d..0000000
--- a/drpy_js/量子影视[资].js
+++ /dev/null
@@ -1 +0,0 @@
-bXViYW4ubXhvbmU1LuS6jOe6py5kZXNjID0gJzs7Oy52aWRlby1pbmZvLWFjdG9yOmVxKDEpJiZUZXh0Oy52aWRlby1pbmZvLWFjdG9yOmVxKDApJiZUZXh0JzsKbXViYW4ubXhvbmU1LuS6jOe6py50YWJfdGV4dCA9ICdib2R5LS1zbWFsbCYmVGV4dCc7CnZhciBydWxlID0gewogICAgdGl0bGU6ICfph4/lrZDlvbHop4Zb6LWEXScsCiAgICDmqKHmnb86ICdteG9uZTUnLAogICAgaG9zdDogJ2h0dHA6Ly93d3cubHppenk5LmNvbScsCiAgICAvLyB1cmw6Jy9pbmRleC5waHAvdm9kL3Nob3cvaWQvZnljbGFzcy9wYWdlL2Z5cGFnZS5odG1sJywKICAgIHVybDogJy9pbmRleC5waHAvdm9kL3Nob3cvaWQvZnlmaWx0ZXIuaHRtbCcsCiAgICBmaWx0ZXJhYmxlOiAxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJ3t7ZmwuY2F0ZUlkfX17e2ZsLmFyZWF9fXt7ZmwuYnkgb3IgIi9ieS90aW1lIn19e3tmbC5jbGFzc319e3tmbC5sYW5nfX17e2ZsLmxldHRlcn19L3BhZ2UvZnlwYWdle3tmbC55ZWFyfX0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyYlcxTVRTUlRIdjB1ZTNjcE1nZ3ErZWIvcmVyOXMrUkRkMUs2MXJsc2w3RlpSbGxVb0pDWkJTYUF3a1NXQUtCQlVjdUVpUWtMZ3k2Um5rbSt4azNSeit2UVp5b3dMZXltckgvbi9Uazczbk83cG5IOW1lT3d6ZllkK2VPejdKZHpyTytTN0Yrb0puLzdSdDgvM01QUnIyUG5iWHF5d3lVSG43ejlDRDM0UHR3SWZPaktMekRmNjU1dXk4NGZwZTdKUHlJbjVXalZyeDU4TGNrQ1NkSmJGYzVJY0JHTG5odGw2UlpKT0lOYlRsTldYbHFSTGZpYTJhUFZISkRFTk9WQThweUk1T3l2MnVsYU9JeFFBVk51WXMxTlJpUUx5VS9WQ2lWVmZJU1RIYXJ3ZFlNTUppVHIyKzU3Y2FVSlJ5d2VoN201WlNqNnpMNWVTMUV1by9sWW12OURVSXFnaFFsTXJxSVlJVFYweU1oRFgxQlVpQTNGTnJUckp3alcxK21RdVhJTlM1K2ZZaXc5cWlOQmdMb21pWFNVaFFrTlhaSTlXWEZmVTFDQms5cm5yaW9RRzA4M1AxVGJma09seURiSkVSeHBqNzBrV3JrR1d5US9PTlpJc1hQdUtOYktlTGRqcFlSTENOUWpwVDFqUC9pUWhYSVBTVlpJc3NrWkt4elhZMEJNajF1dFpOVVJvTUZENmVUMWVKZ054RGVxeVdiQkhQN0hxSWlrTnlCQ1luS20vbzd1R2F4QXlGR1hKSlJMQ05kZzFXeWxuZWNtdTRacGNxYXcxTVV4WHFxVkJ5TUNXL1pGY3V0Q2dnTlZodTVMZDZkSVVnbytBMEtOd0NKMEEyUko3VWZaNkFzemtHbVBSN1hHYWlmeENndFdhRzdQV2lrcUVrR1NCUzliNnBwcURTM0JObTBOc3ZLcEVDQWtXZlBrVmpSQVNMTURnSW8wUUV1VEl6RnJaQlRVSGwrQmFwdDdUSEVLU3Urb3pqUkNTbkduSlBkT1NrdU5saVpYbjFCeGNnaHdEU2FmS0xQWmVUUU1xWFBQc2xwM00yL0V4OWJKQmxZZlJHMnR3eS9td09paW9FQmRaclZYU2FoQ1g4SFo2RUhyNGs5eE85V0srUHQvbmRUdU5WNTM0N1FHYWlmeENRc3RJSTRRRW0yVnBoa1lJQ1pZeFUyVXZNelJJcW1pNVhVRmNRbHVHUmdnSmJVeFhCSmZRbG5GZE01ZFEyVm1oWDQzZ0VpNTdiemowU0piZHlxdzJNaXNleXg0d0FoM2I2WnRwL0MwQjBTQ2xRVXdEbEFZd05TazFNVFVvTlJBMXV3ZzF1ekR0cExRVDA0T1VIc1QwQUtVSE1OMVA2WDVNYWExTVhDdVQxc3JFdFRKcHJVeGNLNVBXeXNTMU1tbXRURndyZzliS3dMVXlhSzBNWEN1RDFzckF0VEpvclF4Y0s0UFd5c0MxTW1pdERGd3JnOWJLd0xVeWFLME1YQ3VEMXNyQXRUSm9yUnhCT2FQQ1BUMWhkTHV3Zk1ZcXZ2UjR1eHlHVzdHVnhYOFl5QkZDamdBNVNzaFJJTWNJT1Fia09DSEhnWndnNUFTUWs0U2NCSEtLa0ZOQVRoTnlHc2daUXM0QU9VdklXU0RuQ0RrSDVEd2g1NEZjSU9RQ2tJdUVYQVR5UFNIZkE3bEV5Q1VnbHdtNURPUUtJVmVBWENYa0twQnJoRndEY3AyUTYwQnVFSElEeUUxQ2JnSzVSY2d0SUxjSnVRM0UrSzZMc0thQ2I0Rzd2ZWpiWW1pRWxaT3U3UysvUkpwNTd2YjZlKzQ3NFdCSHkyV3JOSXJvei9kN3V1VVhkWEdBeGFLSWR0Lzc3Vkc0T1lNNyszeUJYWnA1ZVJBNDdVR3RuSk11RkoyMjFrS3UyU1ZLSkk4ZTNvRWlKTThzM3RBaEpBODczZzFLaEw0RmVjT0trSndoNys0UWttTlpuejZ6bVRSQ2NvYjJWRjdxd2M2OXMrenQzWXdIRDh6dEZudTZ5dnFUT3hreFFiN2lkd0pXV0dYbFBBbmgydGU1Nm5hL0UzaHcxUjUrSi9EZytEdzQyZHI2dE12eENVMWE1b2cxVmlTTHdUV1l5NnVveTc0TERabEMxd0lJYmVmZVhtUnhOL2U3OFlyUmlCT3Z1Z2N1ZWZkWGUrRW0yL3M4TDM2em5Zdno0RGZUSmNkaXNZbHBOUTJvMm5YOWJkZWxIWk4yVE5veGFjZWtIWk4yVE4rR1l3cnUwakVocThJZFUyTGUydmk0N1RzVWo5TnN1UlFxanpaaHFSU0tIb1U2bGlwWlVxazhVb1had1RSbzdKbXZhZlRGN1Z3ZjhTSmN3NjMwd0pTN2xYWTBXSUxDVnIwVVUwT0VCbGxHOGxhQ1BJSVJtcXhoeEZvam5iL1FaSk96WEZ0UGtlbHlEVFdoalhka3VrS0RrUElIVnBna0lWeUR1WXd2dVorRWNRMnlqRTVaSy9USktkZmt5cTVac1dTdFBPSjZocVVRS09QS1c4ZnBrREp5RFRJdVBxcy9mVUZ5Y2UxZnN4dDh2NnJkTjVmVXU0RmFoYWFrM2hGcUJKZDBjNjZiYzkyYzYrWmNOK2U2T2RmTitUZmRuSGZzc2ptWGh3aC9lY2F1Yk1pbUxZamVEV3oxSGlxbHp6dFVLalB6emthbGdUMXJ2ejMwMWg1ZTBMUDc4L1ZwMHNRTERRWWFtcmRUVVRJUTF5QWtOV2t2MEJmUnVDWjd3N1l2eGRWVEUvVWg4aFJFYUREUW0yazJUcDVaQ0EwR2F2OUF3c3FXM1cvZmNRM20wdjdsTVE4UGJWakpLZllLbVF2WGNNanNzanZFMFdDTlpqWnJHK1FkUHFGQmxxRXBGaHNuV2JnbWI3WWxsaWYrUjJndzBIakNHaVBPUldpeXVvdHNLME9yMjlKUXMvbFBQOVpvK1duVlozQUozYlp0SGpoOHdVWHNlQjM2SVlEMkdkcG5hSitoZlliMkdZaG9uL0Z0KzR4Z0Z6SWErbDdVOTZLK0YvODd6Mi9zMXZUTE5xUyt1bXludGp2VkR2bUZiQmNMU0pkZjQ4My81SkU2K2dVZ1hhd1h5eXd5dUkwNjlMZTNQakgwaWZGL09ER2UvQVVtcThPRnd6d0FBQT09JywKICAgIGZpbHRlcl9kZWY6IHsKICAgICAgICAxOiB7Y2F0ZUlkOiAnMSd9LAogICAgICAgIDI6IHtjYXRlSWQ6ICcyJ30sCiAgICAgICAgMzoge2NhdGVJZDogJzMnfSwKICAgICAgICA0OiB7Y2F0ZUlkOiAnNCd9LAogICAgICAgIDM5OiB7Y2F0ZUlkOiAnMzknfSwKICAgICAgICA0MDoge2NhdGVJZDogJzQwJ30KICAgIH0sCiAgICBjYXRlX2V4Y2x1ZGU6ICfnvZHlnYB85ryU5ZGYJywKICAgIGxhenk6IGBqczoKCQl2YXIgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CgkJdmFyIHVybCA9IGh0bWwudXJsOwoJCWlmIChodG1sLmVuY3J5cHQgPT0gJzEnKSB7CgkJCXVybCA9IHVuZXNjYXBlKHVybCkKCQl9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHsKCQkJdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpCgkJfQoJCWlmICgvXFwubTN1OHxcXC5tcDQvLnRlc3QodXJsKSkgewoJCQlpbnB1dCA9IHsKCQkJCWp4OiAwLAoJCQkJdXJsOiB1cmwsCgkJCQlwYXJzZTogMAoJCQl9CgkJfSBlbHNlIGlmICgvXFwvc2hhcmUvLnRlc3QodXJsKSkgewoJCQl1cmwgPSBnZXRIb21lKHVybCkgKyByZXF1ZXN0KHVybCkubWF0Y2goL21haW4uKj8iKC4qPykiLylbMV07CgkJCWlucHV0ID0gewoJCQkJang6IDAsCgkJCQl1cmw6IHVybCwKCQkJCXBhcnNlOiAwCgkJCX0KCQl9IGVsc2UgewoJCQlpbnB1dAoJCX0KCWAsCiAgICAvLyBzZWFyY2hVcmw6Jy9pbmRleC5waHAvdm9kL3NlYXJjaC5odG1sP3dkPSoqJywKICAgIHNlYXJjaFVybDogJy9pbmRleC5waHAvYWpheC9zdWdnZXN0P21pZD0xJndkPSoqJmxpbWl0PTUwJywKICAgIGRldGFpbFVybDogJy9pbmRleC5waHAvdm9kL2RldGFpbC9pZC9meWlkLmh0bWwnLCAvL+mdnuW/heWhqyzkuoznuqfor6bmg4Xmi7zmjqXpk77mjqUKICAgIOaQnOe0ojogJ2pzb246bGlzdDtuYW1lO3BpYzs7aWQnLAp9
\ No newline at end of file
diff --git a/drpy_js/量子资源[资].js b/drpy_js/量子资源[资].js
deleted file mode 100644
index 323b5e2..0000000
--- a/drpy_js/量子资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8gaHR0cHM6Ly9jai5semlhcGkuY29tL2FwaS5waHAvcHJvdmlkZS92b2QvP2FjPWxpc3QKCnZhciBydWxlID0gewogICAg5qih5p2/OiAn6YeH6ZuGMScsCiAgICB0aXRsZTogJ+mHj+WtkOi1hOa6kFvotYRdJywKICAgIGhvc3Q6ICdodHRwczovL2NqLmx6aWFwaS5jb20nLAogICAgLy8gaG9tZVRpZDogJzEzJywKICAgIGhvbWVUaWQ6ICcnLAogICAgY2F0ZV9leGNsdWRlOiAn55S15b2x54mHfOi/nue7reWJp3znu7zoibrniYd85Yqo5ryr54mHfOeUteW9seino+ivtHzkvZPogrJ85ryU5ZGYfOaWsOmXu+i1hOiurycsCiAgICBwYXJzZV91cmw6ICcnLAp9
\ No newline at end of file
diff --git a/drpy_js/金牌影院.js b/drpy_js/金牌影院.js
deleted file mode 100644
index bae2be3..0000000
--- a/drpy_js/金牌影院.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+mHkeeJjOW9semZoicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuY2Zrajg2LmNvbScsCiAgICB1cmw6ICcvdm9kL3Nob3cvaWQvZnljbGFzcy9wYWdlL2Z5cGFnZScsCiAgICBzZWFyY2hVcmw6ICcvYXBpL213LW1vdmllL2Fub255bW91cy92aWRlby9zZWFyY2hCeVdvcmRQYWdlYWJsZT9rZXl3b3JkPSoqJnBhZ2VOdW09ZnlwYWdlJnBhZ2VTaXplPTEyJnR5cGU9ZmFsc2UnLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1BDX1VBJywKICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5jZmtqODYuY29tLycKICAgIH0sCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAwLAogICAgY2xhc3NfbmFtZTogJ+eUteW9sSbnlLXop4bliacm57u86Im6JuWKqOa8qycsCiAgICBjbGFzc191cmw6ICcxJjImMyY0JywKICAgIGxpbWl0OiA2LAogICAgZG91YmxlOiBmYWxzZSwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCB1cmxfaWQgPSBpbnB1dC5zcGxpdCgnLycpWzVdOwogICAgICAgIGxldCBqaXNodV9pZCA9IGlucHV0LnNwbGl0KCcvJylbN107CiAgICAgICAgbGV0IHQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgICAgICBldmFsKGdldENyeXB0b0pTKTsKICAgICAgICBsZXQgc2lnbmtleSA9ICdpZD0nICsgdXJsX2lkICsgJyZuaWQ9JyArIGppc2h1X2lkICsgJyZrZXk9Y2I4MDg1MjliYWU2YjZiZTQ1ZWNmYWIyOWE0ODg5YmMmdD0nICsgdDsKICAgICAgICBsZXQga2V5ID0gQ3J5cHRvSlMuU0hBMShDcnlwdG9KUy5NRDUoc2lnbmtleSkudG9TdHJpbmcoKSkudG9TdHJpbmcoKTsKICAgICAgICBsZXQganNvbl9kYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL3d3dy5jZmtqODYuY29tL2FwaS9tdy1tb3ZpZS9hbm9ueW1vdXMvdmlkZW8vZXBpc29kZS91cmw/aWQ9JyArIHVybF9pZCArICcmbmlkPScgKyBqaXNodV9pZCwgewogICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTI2LjAuMC4wIFNhZmFyaS81MzcuMzYnLAogICAgICAgICAgICAgICAgJ2RldmljZWlkJzogJzU4YTgwYzUyLTEzOGMtNDhmZC04ZWRiLTEzOGZkNzRkMTJjOCcsCiAgICAgICAgICAgICAgICAnc2lnbic6IGtleSwKICAgICAgICAgICAgICAgICd0JzogdAogICAgICAgICAgICB9CiAgICAgICAgfSkpOwogICAgICAgIGxldCB1cmwgPSBqc29uX2RhdGEuZGF0YTsKICAgICAgICBsb2codXJsKTsKICAgICAgICBpZiAodXJsKSB7CiAgICAgICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6IHVybCwgaGVhZGVyOiBydWxlLmhlYWRlcnN9OwogICAgICAgIH0KCiAgICB9KSwKICAgIOWbvueJh+abv+aNojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICAvLyBsb2coTVlfVVJMKTsKICAgICAgICBsZXQgc3JjID0gZGVjb2RlVVJJQ29tcG9uZW50KGlucHV0KS5zcGxpdCgnLCcpWzBdLnNwbGl0KCcgJylbMF07CiAgICAgICAgaW5wdXQgPSB1cmxqb2luKE1ZX1VSTCwgc3JjKSArICdAUmVmZXJlcj1odHRwczovL3d3dy5jZmtqODYuY29tLyc7CiAgICB9KSwKICAgIC8vIGRvdWJsZTogZmFsc2UsCiAgICAvLyDmjqjojZA6ICcqJywKICAgIOS4gOe6pzogJy5tb3ZpZS11bCYmLmtJRGJURDsudGl0bGUmJlRleHQ7LmNhcmQtaW1nJiZpbWcmJnNyY3NldDsuaW5mby10YWcmJlRleHQ7LmtJRGJURCBhJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDEmJlRleHQnLAogICAgICAgIGltZzogJ2ltZyYmc3JjJywKICAgICAgICB0YWJzOiAnLnRvcCBhJywKICAgICAgICBsaXN0czogJy5rbWtlTnc6ZXEoI2lkKSYmYScsCiAgICB9LAogICAg5pCc57SiOiAnKicsCn0=
\ No newline at end of file
diff --git a/drpy_js/金金虫.js b/drpy_js/金金虫.js
deleted file mode 100644
index fd34c7c..0000000
--- a/drpy_js/金金虫.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICAidGl0bGUiOiAi6YeR6YeR6JmrIiwKICAgICLmqKHmnb8iOiAibXhvbmU1IiwKICAgICJob3N0IjogImh0dHBzOi8vd3d3LmppbmppbmNob25nLmNvbSIsCiAgICAidXJsIjogIi92b2RzaG93L2Z5ZmlsdGVyLmh0bWwiLAogICAgInNlYXJjaFVybCI6ICIvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sIiwKICAgICJzZWFyY2hhYmxlIjogMiwKICAgICJxdWlja1NlYXJjaCI6IDAsCiAgICAiZmlsdGVyYWJsZSI6IDEsCiAgICAiZmlsdGVyIjogIkg0c0lBQUFBQUFBQUErMlpXMDliUnhESHY4dDVMWlgySE1JdGI3bmY3L2RVZVlncXBFWnRVNmxKSzFWUkpCS3U1ZzRpZGdnUWlJSXhOQmdNTkFSc2JIOFo3eDc3VytUWU96c3phL3hTbFNZbzJyZjhmLy9zT1R1N3MrdVp3elBQOTQ3KzhNejd1Zk12NzZnbmU1Y3IzY3ZoUms2K0hmS2F2TWNQZiszY1QvOTgrTXNmbmJWQmp4dVlFZks5NTAxZ0RpNlg4ck5ockIrY1ZuTGlzektXSXFjTm5YQmdRM1gza3ROT1RtcEM3dWJJNmFDbnhWTFdHRitncFY2TXE2NDRzMmgyYXVCMUtSdGpWc0FuSGs2eFZ3WE02dDB1NWRnRGcraGRENm9tWDBJOW9mb2xSTnBvQ2NtTUVMMnRiN0l5dlFJVWhCMjE4YlN3Vjk1NFd0akJrVmNWNkkwUHE2NlU4YlN3OTh4NFdxQ1g3SS8yeG5oYTJGc0FIZ2owWHE2RzhRbmphWUZlOTZCNitjWjRXcUNYSGk0UHZEV2VGcGduTHdxVk53WHdRTmpaWlR3dDdQd3luaGJvRGE2SCtiK05wd1Y2dVRIWnUyTThMZERMVDRTNTJYRHFvOHh2bVAvQmtaMkxKaDR0akZmYVNjbU1lVDRJWFBlZVl2Z2hhZFpkQytOVjVyZEt1K1BnZ2NCbjdpMlUxekxtbVZvWXI1d3NSdmtJSGdoODM5aGkrVDNtbkJhMEowdWx3Z0x1U1UzZ3VMVnRtVTJiY1ZyZ3VJVjNjc1o0SU5DTDk1ZGpXZU5wZ2ZNc2prZlphK2FwQmNZK042bGVtM1VCUWZtL0lZc0p6UCthd0hYSlppbi9RZUJlRmtZcjcrZk5MbXBCK2IvRnpvMFdHTU5tVHZVTW1CaTB3SEdqZlhKczA0elRvc0YxTXB1Unc5bDkxNG1oRGE4VE5LM3JaREZWbWU0enI5TUNsMnhwV3Uyc215WFRnclk5bzNZTHVPMDF3WlpGenVScFdhcUNVbkNGUEJDNExJbWttbDAxeTZJRmVsc1pHZ2VDVWlJakJ4ZmszRHZNQ3FQeHJTdXJhaTRaWlc0cGE2NFBDMkZVSXhtWlhUSlJhWUhKTmJSQk13QkJzM3ZGWi9lS2U5RlUxRkF4V2xyTUw2UFo4UXJIMG1Gc21rNFlhRXpDWWsrWVQ2aTQyUXpTN0VkSXJuV2JWMml4UDIzSzYrbnljbGQ5MmlCdGxEWmtXbWt6azQ4TTh6b3QyRUtSQndKVFkzT1JQQkM0U1ltOEhFbVFUWm9sRDdPMVlNbERIZ2kyUGN6VEFpTXBmR0tSYVBIdkZsVWx0aXVKZitvWEZXbWpSU1dUTDJvZ2dpTllRMFQvWkx5WmVEUG5BZkdBYzUrNHo3a2dMaGozTzVEN0haeTNFMi9udkkxNEcrZXR4RnM1YnlIZXdqbkY2L040ZllyWDUvSDZGSy9QNC9VcFhwL0g2MU84UG85WFVMeUN4eXNvWHNIakZSU3Y0UEVLaWxmd2VBWEZLM2k4Z3VJVlBGNUI4UW9lcjZCNEJZOVhVTHlDeHlzb1hsRlhoYVlUYW4xRXpTZFZyTUJTMWFaMXFWcG44bFE5QnVBWWt1TkFqaU01QWVRRWtwTkFUaUk1QmVRVWt0TkFUaU01QStRTWtyTkF6aUk1QitRY2t2TkF6aU81QU9RQ2tvdEFMaUs1Qk9RU2tzdEFMaU81QXVRS2txdEFyaUs1QnVRYWt1dEFyaU81QWVRR2twdEFiaUs1QmVRV2t0dEFiaU81QStRT2tydEE3aUs1QitRZWt2dEE3aU1SMzV0VFlhZE9lYjFIRHZTcDBVbVpIYVBVcWFOMjZ1ajdqY3dJUFgwVURlTkZWV2JLOG45NjlQUUovWVRVUFR4Q1QzNzg3ZmZPNnJ3ZU5IbkJnWGVvZExoS08rbm85NHphR25iL3FOVlV0Wm9oaTQ1dzlJTlRMV2JJb2xOZkxUU2llZ1d0Z1BXOHRjNlJqV3I5WXAzamQ2NTFkSzJqYXgxZDYraGFSOWM2dXRiUnRZNnVkWFN0bzJzZFhlc0k1RnR0SFpzUHZIV2tRNmRieHpDM1IxVm1RRmVCN2g1dGx5NFEzVUJhYmpQN20rWEhUM0l4YnJ1K3ErMythMjNuYXJhdldiUDlIeFdacTdwYzFlV3FMbGQxZWE3cU9reFYxNUVEcjdyb01NSUgrOEZsdGZmQjFFWjA5T0NidmVXeUwvcjZzNzNsc28vNnRhckxkbHUrVnRWMW1Db3JWemNkUU4xMENMOW51ZXJKVlUrdWVuTFZrK2VxcDhOVVBRWFdSeXVYMlM2enY1bk1idHZYR0xqeXdwVVhycnh3bDdDN2hML01KZno4TTR6d3dQdnhOd0FBIiwKICAgICJmaWx0ZXJfdXJsIjogInt7Zmwu5YWo6YOo57G75Z6LfX0te3tmbC7lhajpg6jlnLDljLp9fS17e2ZsLuivhOWIhuaOkuW6j319LXt7Zmwu5YWo6YOo5Ymn5oOFfX0te3tmbC7lhajpg6jor63oqIB9fS17e2ZsLuWtl+avjeafpeaJvn19LS0tZnlwYWdlLS0te3tmbC7lhajpg6jml7bpl7R9fSIsCiAgICAiZmlsdGVyX2RlZiI6IHsKICAgICAgICAiMSI6IHsi5YWo6YOo57G75Z6LIjogIjEifSwKICAgICAgICAiMiI6IHsi5YWo6YOo57G75Z6LIjogIjIifSwKICAgICAgICAiMyI6IHsi5YWo6YOo57G75Z6LIjogIjMifSwKICAgICAgICAiNCI6IHsi5YWo6YOo57G75Z6LIjogIjQifSwKICAgICAgICAiMjMiOiB7IuWFqOmDqOexu+WeiyI6ICIyMyJ9LAogICAgICAgICIyNyI6IHsi5YWo6YOo57G75Z6LIjogIjI3In0KICAgIH0sCiAgICAiY2xhc3NfcGFyc2UiOiAiLm5hdi1tZW51LWl0ZW1zJiZsaTthJiZUZXh0O2EmJmhyZWY7KFxcZCspIiwKICAgICJjYXRlX2V4Y2x1ZGUiOiAi5bCP5aeQ5aeQIiwKICAgICJwbGF5X3BhcnNlIjogdHJ1ZSwKICAgICJsYXp5IjogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHtwYXJzZTogMSwgdXJsOiBpbnB1dCwganM6ICcnfTsKICAgIH0pLAogICAg5pCc57SiOiAnLm1vZHVsZS1pdGVtcyAubW9kdWxlLXNlYXJjaC1pdGVtO2gzJiZhJiZUZXh0O2ltZyYmZGF0YS1zcmM7LnZpZGVvLXNlcmlhbCYmVGV4dDtoMyYmYSYmaHJlZicsCn0=
\ No newline at end of file
diff --git a/drpy_js/金鹰资源[资].js b/drpy_js/金鹰资源[资].js
deleted file mode 100644
index ee9e09b..0000000
--- a/drpy_js/金鹰资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/9PXV8goKSkottLXz6qsqkwsyNRLzs/VLyjKL8tMSdUvy0/Rt09Mts3JLC7h4ipLLFIoKs1JVbBVqOZSAIJnKxY+m7vfSkH9ZXv7y9lthuo6YOGSzJKcVLDoxJc7N7zY2vJs14RoIBULlc/ILy4BSmOxGKpAH+iq/NzUkMwUoDJDY7g2mBBUIDmxJDU+tSI5pzQFZN3zKVuf7t34vLO95sX+ec93r33aubzm+e49Lzp3gcSedq14tmc1iAVR92L54hfrt9Q82Tv5RdOmmmd7pjydOKPm2bQNL6fvBjr1xbr1UEsKEouKU+NLi3Ig9tYCANI5qEsyAQAA
\ No newline at end of file
diff --git a/drpy_js/银河影视[V2].js b/drpy_js/银河影视[V2].js
deleted file mode 100644
index f4fd23e..0000000
--- a/drpy_js/银河影视[V2].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/闪雷电.js b/drpy_js/闪雷电.js
deleted file mode 100644
index 2394457..0000000
--- a/drpy_js/闪雷电.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/6VUUU/TUBR+91c0i7ntJrZdB4hbKkHiAwkoCfKESO7au/Vi15Z7bzemIcEXIkbNHoiaYKLxQYjGEKJGBfw3bIV/4ela5kDwxfvQ237nnO+c75x7W8dMYqFLJFN6dEmCJahwSVGSj199PN78Hm18kwe6eHTwMnr3GAzVslHIGynq+FwA5ggRFDUtb+iqYQyq19TrenFEH0mdQuaCj9ZoNLRJyoWKeTBquZhzapuVZvcNcYKZ5TR8ZpsowFUChnhLGSrUFYThclyZPqBpndc77daHdmsn2thuP1mLdvejz5vHq+uJd5dxwcO1WAcoaP/aRbAdba2117dQtH9wtL6H2k+3Owef0PHbL4c/W3J/YFLukK7rKK+jETSMenKTKmf/oaeg90vJ5c4Rk9gTMUYCLYXUejDTxWOBSWsJtgnjxXQu8ZJnOWFXx6rEEzJUMHXn5sTkrYXZsZR4JdkCFzcXAsw48AsWkgR18cNmUbq8yFXhzwhGvaqiZCXzRh99Hc6CI2ounIWLJqpNA/mUX+9qHo81T9imLF2RqBeEQuWBS4WSGchk54x5QGVUpzbxTQORZWLqyPYbHmw1v37bPz+skIZV64SZoWeTCvWIjcZdCqInps3+guRTlcPYoHBGlkLChRLryKo1LCxH0YKQO/cUWVFzo1lZy87l53uR3QJ6h/9kLS73xnCyuqcCHqfRtM16D1wpJaPIpl2nNQoXZDj56rzYPnregsmFbpEsKYNZhLhgvlct0VoVIeyK5IUzq8QD7MVOeXC6S5ZFCSPkMFJJZ334YzXa2+pRDf0P1d6zLtWfFqT/gEzCbUCYS+M3PSXI/GkCJAHH+JkmgIR9Zptw6xyiXiVnDcZFhsLfqS3fE3AogL7s202EbFovOpgrAbgGF8QIXIYblelDXLjBAMkJB57zPcuFy3jfzHDiVUhmXj7tm/4eoIWp51m7gIyJQ5xb7r+Zndab6Ot7MOYgaOU3Giy1XXsFAAA=
\ No newline at end of file
diff --git a/drpy_js/阿里土豆[盘].js b/drpy_js/阿里土豆[盘].js
deleted file mode 100644
index eea7aca..0000000
--- a/drpy_js/阿里土豆[盘].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/青龙.js b/drpy_js/青龙.js
deleted file mode 100644
index af1a35b..0000000
--- a/drpy_js/青龙.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/非凡资源[资].js b/drpy_js/非凡资源[资].js
deleted file mode 100644
index c64db9e..0000000
--- a/drpy_js/非凡资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-q8BDo6dYiPvVynWFG3MGV3YYDS+d0HvW/rJUUkVc8yi9vbDdCNFd+u7vxoxZDWfCKLy4FB6xcI8ip7/u/HtQfTOQLQpc+UopXimMEEoJX+Y5u6jBUGvkKwEBF5rQ+5tThcP5gsNQvVaRm7z7xhntf1ybSINOcs0qJwTQbxnHcLC+yu5iTzdLlaNo+RVK3xGxVXpq/ryVNHkSGyfsMY6dc2IFMTu6hm/Ztvk83FMtF6ZZaQdqWq4IFYmlbTiTtFHU6jx1yY5JnF7Po4c1FXnxmoM2uGz7P2Nkbj3bg0XZlVS59nHpo3mT9R6auQlgxVyR+6ZaD4U6GJ85rq9r4+TKY+YI6TEWMMwIDctJRVKcsJHN5daj0PfWoYJztSgqKw6sx67brsLoUMPGbxEbSf6QP9kQpAZSBxr0wVdamvEW/fo9UgpdkYPRwLPwj6mjUsvkLl7Rgq/iEsUsjHt2JKoQy/qgYEzQithOAieBjXMc6UVO28yNB9NcN/7uk8zrKVZ3
\ No newline at end of file
diff --git a/drpy_js/顶点小说2[书].js b/drpy_js/顶点小说2[书].js
deleted file mode 100644
index 916a9ca..0000000
--- a/drpy_js/顶点小说2[书].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/81WbW8bRRD+zq842eheinNnByohhxSFyCovKUVN86FKI2t9t2dvcr677O45MY0lQIIvlBIhxKeqonyglagElaqKvvBvYjv8C2Z37+w7x4YUCYmTEt/NPDM7O/PM7PYQ1WgSYG1Vu/WaBs/48Yvhva/rmjH87dvTX58YFccZ/vH49MFXR8PjRyfPfj4avfxl/P2LI6WWJpzwAIPFn/efjr94phTL24DdMSoS0IkYB32H85jVHefg4MD2vH6CWSexXddJUeOXP4x//Bxw7Vbt7eqb1VSc0ABkjt93A8SYU/b7MWpjUEotw4i6nS2FOSQoAp+Rh/YTFDrlPdxfTb0oHGqJQJeVaD8h7t6mlNe1qpL5JOCYKlgtLwL3Rv67qcIqyjzs17Vbg3TTGHmYsnqaV/EYWwzTpbU2DrkBxleuvvfBRqO5tZZ6SQ056eIogYRdrFbTsDpkD9MNwvh6BKuWOD7kzVopp1sXuVkAcByZuWaIuqJKwy8fju4+Moo6tZss5UoWI8qEgR2inq4nga4HZAXp+nVwLn47FPsr9gXHtC+8a2VFdBHHTXzoBoknbIEEo3tPj0Z3vju9fzuFxAHqZ845TbCSBujTfl17fZfZPNrklIRt07S01Uu59AWYax3eDYCrFO8DfbhJwjjh1koBIukImNjzO6bAV2APrSjaEwmAsGtqC8aMmRuFHAozY1hOxbr+PggMy6YY4nex6dwMnXZFK5Usm8UB4WbpnRa9BF+KC2ZPxN4DZUAAXa1oS8uWvRuR0CzdDEs5P3rYYvGK8GVoszFRLOL5cPPqxzaTOSF+35wmZNJ8lYIoDXkiG+S8yoSJZk8LAIGp2odRDwfQnIb2hli2ou0ywe+BMh1YagkvSmRv+Chg6aqjOw9PvzkGbDnEB2ySrpQvNltOGQOvF4vkSflw8vtn4+cPzlF7D+Le3sntxdfMKzea62vXG9rqqqCvpRWTk+0WtihTLyadLaYRJNsRM6KFQ7ljcPPJ2uVGLlHnJFwGCwhTzEEZc7iYInabEk/XOa23uVm1jFlLwmw/og3kdkzCizvOHs+OE9Yxzypyo1cylohdoYzclbl4DzO3AK/jfbNm/b0R6bZhppTmKyV7Ym+yuiqsSOjWtY05DgczKch/DzQMtJrJwaIipG1nlA1ru7pzrpLYSZwR87+vxIT5562Fzd76v9Rh8sYwv4ZZEnDTs4qT4OT5bdm102xk14DJgJ0uKiM3yn4XXnRd/mPUzQFULowyCf1I12PByqUJLaewdLooJKcCegYDfScmVxkqCmPIg79WTiukebVXtGyKkxPUrTNuBX6ijbz+fICapcX5llc2Y5CTw+nNIT3zR8d3x09++pfn38JOEAZwBwK8h93Iw+DX/KhxoyJvfLa6b+XgjhNEbRMMZlzMaSR5WqgUZv2UHXyqewi3SShvAUx6nHE5O8r/qf0Wtt6rDEBFsnkNtLCzXqWrBtbcE3d+Cw3+Ah40CI15CwAA
\ No newline at end of file
diff --git a/drpy_js/顶点小说[书].js b/drpy_js/顶点小说[书].js
deleted file mode 100644
index dcf9c63..0000000
--- a/drpy_js/顶点小说[书].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflsI/or7QnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+mhtueCueWwj+ivtFvkuaZdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy4yM2Rkdy5jYy8nLAogICAg57yW56CBOiAnZ2IxODAzMCcsCiAgICB1cmw6ICcvZnljbGFzcy8jZnlwYWdlJywKCiAgICBzZWFyY2hVcmw6ICcvbW9kdWxlcy9hcnRpY2xlL3NlYXJjaC5waHA/c2VhcmNoa2V5PSoqJnBhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICcnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBoaWtlckxpc3RDb2w6ICJ0ZXh0XzEiLAogICAgaGlrZXJDbGFzc0xpc3RDb2w6ICJ0ZXh0XzEiLAogICAgY2xhc3NfbmFtZTogJ+WFqOacrCcsCiAgICBjbGFzc191cmw6ICcwJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdiYmdWwmJmxpO2EmJlRleHQ7YSYmaHJlZjtjbGFzcy8oLio/KV8nLAogICAgY2F0ZV9leGNsdWRlOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IHRpdGxlID0gcGRmaChodG1sLCAnLmJvb2tuYW1lJiZoMSYmVGV4dCcpOwogICAgICAgIGxldCBjb250ZW50ID0gcGRmaChodG1sLCAnI2NvbnRlbnQmJkh0bWwnKS5yZXBsYWNlKC9cbi9nLCAiIikuc3BsaXQoIjxicj4iKS5maWx0ZXIodiA9PiB2KS5zbGljZSgwKS5qb2luKCJcbiIpLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpOwogICAgICAgIGxldCByZXQgPSBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAgIHRpdGxlLAogICAgICAgICAgICBjb250ZW50CiAgICAgICAgfSk7CiAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogJ25vdmVsOi8vJyArIHJldCwganM6ICcnfTsKICAgIH0pLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyNuZXdzY29udGVudCYmdWwmJmxpOy5zMiYmVGV4dDs7LnM1JiZUZXh0O2EmJmhyZWYnLAogICAg5LiA57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBkID0gW107CiAgICAgICAgaWYgKE1ZX0NBVEUgPT0gJzAnKSB7CiAgICAgICAgICAgIGlucHV0ID0gdXJsam9pbihydWxlLmhvc3QsICcvcXVhbmJlbi8nICsgTVlfUEFHRSk7CiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgICAgIGxldCBsaXMgPSBwZGZhKGh0bWwsICd0YWJsZS5ncmlkJiZ0cjpndCgwKScpOwogICAgICAgICAgICBsaXMuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0LCAnYSYmVGV4dCcpLAogICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsICdhOmVxKDEpJiZUZXh0JyksCiAgICAgICAgICAgICAgICAgICAgaW1nOiAiIiwKICAgICAgICAgICAgICAgICAgICB1cmw6IHBkKGl0LCAnYSYmaHJlZicsIE1ZX1VSTCksCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0LnNwbGl0KCcjJylbMF0pOwogICAgICAgICAgICBsZXQgbGlzID0gcGRmYShodG1sLCAnI25ld3Njb250ZW50JiZ1bCYmbGknKTsKICAgICAgICAgICAgbGlzLmZvckVhY2goaXQgPT4gewogICAgICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgJy5zMiYmVGV4dCcpLAogICAgICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsICcuczUmJlRleHQnKSwKICAgICAgICAgICAgICAgICAgICBpbWc6ICIiLAogICAgICAgICAgICAgICAgICAgIHVybDogcGQoaXQsICdhJiZocmVmJywgTVlfVVJMKSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgfSksCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJ2gxJiZUZXh0JywKICAgICAgICBpbWc6ICcjZm1pbWcmJmltZyYmc3JjJywKICAgICAgICBkZXNjOiAnI2luZm8mJnA6ZXEoLTEpJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnI2ludHJvJiZwJiZUZXh0JywKICAgICAgICB0YWJzOiAnI2xpc3QmJmR0JywKICAgICAgICBsaXN0czogJyNsaXN0JiZkZCcsCiAgICAgICAgdGFiX3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3VybDogJ2EmJmhyZWYnLAogICAgICAgIGxpc3RfdXJsX3ByZWZpeDogJycsCiAgICB9LAogICAg5pCc57SiOiAndGFibGUuZ3JpZCYmdHI6Z3QoMCk7YSYmVGV4dDs7Lm9kZDplcSgxKSYmVGV4dDthJiZocmVmO2E6ZXEoMSkmJlRleHQnLAp9
\ No newline at end of file
diff --git a/drpy_js/飘花影院.js b/drpy_js/飘花影院.js
deleted file mode 100644
index 6d2f3ed..0000000
--- a/drpy_js/飘花影院.js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teG9uZTUu5LqM57qnLCB7CiAgICB0YWJfdGV4dDogJ2Rpdi0tc21hbGwmJlRleHQnLAogICAgbGlzdHM6ICcubW9kdWxlLXBsYXllci1saXN0LnRhYi1saXN0OmVxKCNpZCkmJi5zY3JvbGwtY29udGVudCYmYScsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214b25lNScsCiAgICB0aXRsZTogJ+mjmOiKseW9semZoicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuNmJ5cy5jb20vJywKICAgIGNhdGVfZXhjbHVkZTogJ+a8lOWRmCcsCiAgICB1cmw6ICcvaW5kZXgucGhwL3ZvZC9zaG93L2lkL2Z5Y2xhc3MvcGFnZS9meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCcsCiAgICDmkJzntKI6ICcubW9kdWxlLWl0ZW1zIC5tb2R1bGUtc2VhcmNoLWl0ZW07YSYmdGl0bGU7aW1nJiZkYXRhLXNyYzsudmlkZW8tc2VyaWFsJiZUZXh0Oy52aWRlby1zZXJpYWwmJmhyZWYnLAp9
\ No newline at end of file
diff --git a/drpy_js/飞刀资源[资].js b/drpy_js/飞刀资源[资].js
deleted file mode 100644
index 58145be..0000000
--- a/drpy_js/飞刀资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/ytLLFIoKs1JVbBVqOZSAIJnKxY+m7vfSkH9ZXv7y9lthuo6YOGSzJKcVJDo4nlPOxpebG15tmtCNJCKhcpn5BeXAKUzSkoKrPT1y8vL9dJSM1MS86sq9ZLzc6GKkhNLUuNTK5JzSlNAZj2fsvXF8rannctrgKynezfWPN+950XnrpqnXSue7VkNszgxKb4oNS8xF6ijWh1mqDrcKeq1XLUASHWI88UAAAA=
\ No newline at end of file
diff --git a/drpy_js/飞流视频.js b/drpy_js/飞流视频.js
deleted file mode 100644
index e7e9fc5..0000000
--- a/drpy_js/飞流视频.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAAAAM1U74vcRBj+3r9iwCOTtHuT5JJNNilr6Yko1qvgXalQ5JhLZnfHnezkZib748qB+kGo+EHRj6LQfjhBRJQW5Gz/m97t9r9wJtnbPW3tN0GW7CTP+2Peed5n3jEWQFSMgC64fwUARRUjKYAvHv1w/uSzxckXLx5+A1vaMOBSaXygVClT151MJqjH6LTHeIkyXtQ+lWDaxcUldce+S6Yl44K4vVnGsJQ3Stwn3d7MLFZJxH79HXbqSEmwyAZ3Xhnf2G4cVkTMulevWgKPhss8aKAK1pRHcE6ETOtDAADvSCI2b/bJSEGdcocfUcaw20YesO/SUc4nEtzeA76HvOtAA1F4HUyj0AE3y5KRu+TgFlVuO4hREAH71rt7O++3AKNDAt4h2ZA74K2B4AVx/a0IeeYHdnEPC7oMqSs6Xp8LHxhOtwxwWNFsuFujKfAM0qNMEdG41EDN1v4IF6YP8++enD37zdKL7sXZgxPr7Mufzp/+bM3/fLp4cGo9f/bt4vPfrcZrcfJo8etja/7jL9oRrlM1bfHbfhh0/DCOO1EQt/2oY62hJIw1GMdrqOPFQRhFifcy5L8MBdaWF2ogCcPAjzWW+B0rCHy/HSSxnyRJFHux79VFMVpQLaXIvOe8qg/ew0wSA5QMz7QyhCSpElUNMXw0Szc+kUjxXSXoqG/bTvfNps8ZH0kFBOlr+dJRWSkkS0aVDV3o3Is/vuSTaxZWToLofTJi68AWhM7qG0olCC4kbMGlCMc0J1xCp87EiAJGcToPeG/3g9uoLlRn0dqUyjZbOA7KscIr92ZXE4T060V1G7o6v6muLqh7vzmy1zK90k+r0XNqbiZaavvYiMoxjDz/49P56UkKXksKo/qv+6o66y3/WWjeBfeaikwg6nHxNs4GNlUXWf9+on8dBO6SQhdeowrV9O3T/Bp0c6IwZXCVK0dlJQf2Ovlq+Oi4+q11yZQTmaXUdK7AYigvm2jRN5aMj/VQoYUeC5etS0JXyHHTyuUiifqQyIrp5jlgze/pVzW/y2FyMRMHvmXtkamCTX6FD/S8gWi6N5lulzsAFRXd5OKwczQEaKei25VSfLSNJdkUnF9EGXabsO3JR+NOkpJD+w2aO5aF12Pj/Ovv548fvl70/21/NaGSVyIjstbt6oJsQHNh/u9N1OCV478Ap7FtINoGAAA=
\ No newline at end of file
diff --git a/drpy_js/飞狗影院[密].js b/drpy_js/飞狗影院[密].js
deleted file mode 100644
index 1819490..0000000
--- a/drpy_js/飞狗影院[密].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIHXfmYC/31UW2/TMBR+76/wU9pCm6T30aqCFSFgW4W2bvAAqLjJyWrmNpnjbO1GJXgBoXEZdyFgQkMIXhBC4gEGbH+GtuxfYDfJLkwiL7a/7/M5xz6fs4QZYh4FVEarESQ+7PGmzYoouvvjUf/h59/f16OJEcEJpyDxdxvDtRf9X192X25e7n++fTXgh19+9DfWhEBQfz7cDtCm7XKBNTl33KKmWTBve2qnu3KAnnCFIFwDNoEJYDU65wJLjs9Dm0cFX71QOT91pj43Hu0F6X4+H769JRiPW8mxvRpbYHsiYU7X9TBDC+YYFUItEHn+ysBcFMO6mtU1KHZdzcHzIBZyuHyEDU9pEcqB1f0YAWYCx4TOHYRcwMxoBnkPBD4p4ipu+dixQzrckDeb8qFFjxgLtRG+h/lZD8lGVdUdzFzZFLWNl5KUuFxRcAkryix0uBybDKzS3lliV64sH48HqSVah45BPRP2Cw/OZ4IlehBcdf/V9vDuncGb94OtdaE8NQMWMGDlI009td+zctVeIZRiLafqKDZF2l6nhMbbJrOJiVKpEqqmdb0wkamdRhWPUFObmZxOqQIbS+dVXU+X0PJSHI07DoVL0JgkXMtlCmomj2KT52arUwlEyQKgs2As2HF0UViG2G0tK3KdbjLRca1QUHU1M5bPqam0jqrT0xVmL4vqtLyaRrOVmqZnc4VUFlXtBhHur2ELMxLkCM2EG3UGbdwCacfdW092n+30X38cbu1IQ/qzweNPg6fboScdirthSzjzIEAlcNgxFK90i+jadbcYocDRgiDLjmk1YwwWPXB5jLQdj8cT0YZtdhXFtT1mgBiZEY2XIsRCMa2V8cZutJyspnK5QYaIx8UbHu2Urxld7xSRnkBBPWI2KkEKUS/SQ0Bd+I8+9Y/+WiLil05aRDywE4H1bW9kSguLaD40ePDxz33pk9Djv7/dHG59EABmnBgUSqo8vqKMfijhwsQcJxvzJVyExVgqHjg4IKWLw2Bb9/xgYfTB+uvh180DgO9g6d5I7y+4J8z+3gQAAA==
\ No newline at end of file
diff --git a/drpy_js/飞翔鸟[书].js b/drpy_js/飞翔鸟[书].js
deleted file mode 100644
index c1f68b0..0000000
--- a/drpy_js/飞翔鸟[书].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflsI/or7QnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+mjnue/lOm4n1vkuaZdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5meG56dy5jb20vJywKICAgIHVybDogJy9meG5saXN0L2Z5Y2xhc3NfZnlwYWdlLmh0bWwnLAoKICAgIHNlYXJjaFVybDogJy9meG5saXN0LyoqX2Z5cGFnZS5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICcnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBoaWtlckxpc3RDb2w6ICJ0ZXh0XzEiLAogICAgaGlrZXJDbGFzc0xpc3RDb2w6ICJ0ZXh0XzEiLAogICAgLy9jbGFzc19uYW1lOiAn5YWo5pysJywKICAgIC8vY2xhc3NfdXJsOiAnMCcsCiAgICBjbGFzc19wYXJzZTogJy5uYXYmJnVsJiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPylcLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IHRpdGxlID0gcGRmaChodG1sLCAnaDEmJlRleHQnKTsKICAgICAgICBsZXQgY29udGVudCA9IHBkZmgoaHRtbCwgJyNjb250ZW50JiZkaXY6ZXEoLTIpJiZIdG1sJykucmVwbGFjZSgvXG4vZywgIiIpLnNwbGl0KCI8YnI+IikuZmlsdGVyKHYgPT4gdikuc2xpY2UoMCkuam9pbigiXG4iKS5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKS5zcGxpdCgn6K+36K6w5L2POumjnue/lOm4n+S4reaWh+Wwj+ivtOe9kScpWzBdOwogICAgICAgIGxldCByZXQgPSBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAgIHRpdGxlLAogICAgICAgICAgICBjb250ZW50CiAgICAgICAgfSk7CiAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogJ25vdmVsOi8vJyArIHJldCwganM6ICcnfTsKICAgIH0pLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJycsCiAgICDkuIDnuqc6ICcjQ3JMaXN0VGV4dDthJiZUZXh0OzthOmVxKDEpJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAg6YeN5a6a5ZCROiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgICAgICBsb2coJ+aJp+ihjOmHjeWumuWQkTonICsgTVlfVVJMKTsKICAgICAgICAgICAgLy8gbGV0IGh0bWwgPSByZXF1ZXN0KE1ZX1VSTCk7CiAgICAgICAgICAgIE1ZX1VSTCA9IHBkKGh0bWwsICdsaS5hcyYmYSYmaHJlZicsIE1ZX1VSTCk7CiAgICAgICAgICAgIGxvZygn5LqM57qn6YeN5a6a5ZCR5YiwOicgKyBNWV9VUkwpOwogICAgICAgICAgICBodG1sID0gcmVxdWVzdChNWV9VUkwpOwogICAgICAgIH0pLAogICAgICAgIHRpdGxlOiAnaDImJlRleHQnLAogICAgICAgIGltZzogJyNMYWJfQm9va0ltZyYmaW1nJiZzcmMnLAogICAgICAgIGRlc2M6ICcjemhhbmd4JiZUZXh0JywKICAgICAgICBjb250ZW50OiAnI0NvbW1lbnRUZXh0JiZUZXh0JywKICAgICAgICB0YWJzOiAnI05jbGFzc1RpdGxlJywKICAgICAgICBsaXN0czogJyNCb29rVGV4dCYmdWwmJmxpOm5vdCg6Y29udGFpbnMo5Lit5paH6ZiF6K+7KSknLAogICAgICAgIHRhYl90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF91cmw6ICdhJiZocmVmJywKICAgICAgICBsaXN0X3VybF9wcmVmaXg6ICcnLAogICAgfSwKICAgIOaQnOe0ojogJyonLAp9
\ No newline at end of file
diff --git a/drpy_js/飞鱼影视.js b/drpy_js/飞鱼影视.js
deleted file mode 100644
index 6eef249..0000000
--- a/drpy_js/飞鱼影视.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/KtZLjXbmnAI1mI+Sj7v1kcD0YEDmIS5cjb8wn/htTGnaQqlcqV8MGzPubbY2nBHpmcJagVXvrYPW24WtorHXKAjfNGVG3MngiXNVPug8E+r+kBABLcHxA5JBNGnourk8d6g7yj1RFID3H7ddCRjhwZwiiXP6wDA+5Q3XZ5wd6lr5WvIQIbZRQDD3yylX5VPNHGKZVoWonYjpv6XKDXlpJphA2UckdZEAuJiwKoktUHYHT2fijje9FsmRprU70WNUYLBMd0laTnosPchEF4aLBITeakI5ws0yb6JhM2F6Vi/VKYUgqEcfl9motrwwbCLDL+2yD6KvNHYF++QCMsJtF/N3SCyA28x2mvyIbRDKaF0LHktJYSXoK5s4RgKES6WiRn6jIN3tjRBsalDu5zWJn8BrVqv/gMRDRwLajsp+1l1PZPQdXKQ+txnMDTGXmJ44aTtUDK4rQ88dK7jfqyZh1feDxrKyspixKdWB3TeWUjKOc6lHqS+EbQKSYMWF07EKCYDaojHoq4LRa7wv0q7xxF2Bof1Tw2vBJ38CqJZenPQvZlFHorfbdwuiDvn7qnga1pivrLli00Zj8s3RLIUxdBeiFFaKDtj589ThmQLfId8KSyojeXgleLCkFAXTjP9gQ==
\ No newline at end of file
diff --git a/drpy_js/饭团影视.js b/drpy_js/饭团影视.js
deleted file mode 100644
index 028f486..0000000
--- a/drpy_js/饭团影视.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICd2ZmVkJywKICAgIHRpdGxlOiAn6aWt5Zui5b2x6KeGJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5zano0Mi5uZXQnLAogICAgdXJsOiAnL3Nqdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvc2p2b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgY2xhc3NfcGFyc2U6ICcuZmVkLW5hdnMtbGVmdCYmYTthJiZUZXh0O2EmJmhyZWY7L3Nqdm9kdHlwZS8oLio/KS5odG1sJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDMmJlRleHQ7LmZlZC1kZXRhLWNvbnRlbnQmJmxpOmVxKDIpLS1zcGFuJiZUZXh0JywKICAgICAgICBpbWc6ICcuZmVkLWxpc3QtcGljcyYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJy5mZWQtbGlzdC1yZW1hcmtzJiZUZXh0Oy5mZWQtZGV0YS1jb250ZW50JiZsaTplcSg0KS0tc3BhbiYmVGV4dDsuZmVkLWRldGEtY29udGVudCYmbGk6ZXEoMyktLXNwYW4mJlRleHQ7LmZlZC1kZXRhLWNvbnRlbnQmJmxpLS1zcGFuJiZUZXh0Oy5mZWQtZGV0YS1jb250ZW50JiZsaTplcSgxKS0tc3BhbiYmVGV4dCcsCiAgICAgICAgY29udGVudDogJycsCiAgICAgICAgdGFiczogJ2JvZHkmJi5mZWQtdGFicy1idG4nLAogICAgICAgIGxpc3RzOiAnYm9keSYmLmZlZC10YWJzLWJ0bTplcSgjaWQpJiZsaScsCiAgICB9LAogICAg5pCc57SiOiAnYm9keSYmLmZlZC1wYXJ0LWxheW91dCYmLmZlZC1saXN0LWRldGE7aDMmJlRleHQ7KjsqOy5mZWQtZGV0YS1wbGF5JiZocmVmOy5mZWQtcGFydC1yb3dzJiZUZXh0JywKfQ==
\ No newline at end of file
diff --git a/drpy_js/饺子影院.js b/drpy_js/饺子影院.js
deleted file mode 100644
index 40d9c41..0000000
--- a/drpy_js/饺子影院.js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWV0N76cYws015wDLnOvQJ1oyMBGNkmU1LD5ljMoqtFwiDdoV/iHvpJkWweaf7HLIX4OwT+OoZCV2fnrcymGGLNr5RAZZPIAXVi4Q6MQD8lp87aQ2pauXfntR1FuQXFdZyREkqrMqHMAuBTxPHsn4OXemXVpNOapVVEk/P68rHGq9HaFd9kFEpwVBG6T+UeFSL4pGJCgGvYHGlUpOnKtPK7aRLUxFRs6Dt29gZUGJdGihJqG8SpC6hgYOebMuMvrPxSdOt4qOLDbvoGp/9gkQZnFItY7SDIAqwfHkhhVzJ4FKHgb8IabGkhF0TWve7gATNC8kN3FXVISdkwyCSkNscgXUY4v3VXPyd8g3mwgp+A8X7ucov7sbScPdfnaWFxmNoFw==
\ No newline at end of file
diff --git a/drpy_js/首发网.js b/drpy_js/首发网.js
deleted file mode 100644
index c1af70c..0000000
--- a/drpy_js/首发网.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/4VTy27TQBTd8xVeIDsJid0KsbEVolZigQRi0WZFUDT13MQuE9udGdOaKhIIoYIEfajiIdEFVKJ0BwsWKBLtz5DXXzDjmbxUJMYL28fnnjn33PETRA2aEjCqxu41QywecgKuYY3P3vcPjoa/j6xyjgcx4wIOOE+Y6zg47UDUzpjtxx3NSCkRBIeEjDu1VuYTxFillSWoDXbAO0TTHIcBon5QF3RLP9tJkNQksar4poK3Y4qrpZJ+41kCVS2iELQhrS4paCsN/cdrOT7FWiHhQBVteR4SRq3596Yyv4hhaLnGblf3DwgDZa6OSS6rzoBWVtoQcUsU33+wevfenWZ9RavoQh52IE5FdreWlrStPJpmgiiTSdsiydQ0MfaQaa7DDpf3gELLs0u1QqOBbxQb8wH6iEMTdnySYph5TgjKJpKcpqBQgp5mrnF9k9k8XuM0jNqFQtGo3p7rIoySlMvx6+LlsppkjpeNTSb36HqqpaKSxXGaZzrbaLB/Pnp7KLsJIww7FXkKPJvG26Ix4pXUpa3++fVs2PsmuWKEUQQkZ5vmlB7c1EGEnbZpMup74WIyE6Hem1xo1szk9E4VEhsjjlzYKiwXFaRr89Y77VmAeV/AfIGooit0P464mLU0HgBJrnznaIP9J2y51ldW10TeD63x8+Pxu8v+yfmwd2k98qakScr5AEUycgIpsTFwFJKKHLQOjISLuze5MCTIGzHOrriTJRMC+vdX9RNMMp4/xI4zODwZ/jx1rf6rD6Mv597g89749KPX/3QxfL3nDQ4ORpc/vPHxxWD/qzf6fjZ48VKId/8CRfLlqF4EAAA=
\ No newline at end of file
diff --git a/drpy_js/驴番[漫].js b/drpy_js/驴番[漫].js
deleted file mode 100644
index 0e7e4ba..0000000
--- a/drpy_js/驴番[漫].js
+++ /dev/null
@@ -1 +0,0 @@
-T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn6am055WqW+a8q10nLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3Lmx2ZmFuLmZ1bicsCiAgICB1cmw6ICd2b2RzaG93L2Z5Y2xhc3MtLS0tLS0tLWZ5cGFnZS0tLS8nLAogICAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zIGxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oXFxkKykvJywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLycsCiAgICB0YWJfZXhjbHVkZTogJ+aOkuW6jycsCn0=
\ No newline at end of file
diff --git a/drpy_js/魔方影视.js b/drpy_js/魔方影视.js
deleted file mode 100644
index 5e9cfee..0000000
--- a/drpy_js/魔方影视.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/ASdotKRYPNu8cLtwdABO3MDeyNp8SITwKEVrcmMRsD6s0DQiKXK91uXHy81Bhzh8xPZzDl/A9cOXQrBxH+Qn2Zl2eNL3Ogzx+kAqZMq7TDGW7Ndfho+4VAcQyAx6N07mNXltZcH8bwEmwaiz6Ep49lJD5Yd/Q7cEOWeixM4/1mj1NycqNLkGkOy+ecV7TjSPlPFFpCQAjwtUvG2kL3lkE1TUOmsmyDGHZ60ZsHidKRDrr/jUBH8JL5Q+tt7i0iXN290bXR7C3UDb/r5Vf72fvyrc+lLQXJVjSPEWnocAZ9GZegQet08v9yUYND/RLoQtcm1vWXi1IxqD48xNmeuFsr8KSRzZYKleXpoqwr8+jjxJLhRW5XfRk5p4m1ErydXz8cP20STzssud1+DlfiX10VkuZPyMoyGehOakki9GHXTzgv9aoplJ2HuTGINlQEkBg==
\ No newline at end of file
diff --git a/drpy_js/魔都资源[资].js b/drpy_js/魔都资源[资].js
deleted file mode 100644
index 7942b1c..0000000
--- a/drpy_js/魔都资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-Ly8gaHR0cHM6Ly9jYWlqaS5tb2R1YXBpLmNjL2FwaS5waHAvcHJvdmlkZS92b2QvP2FjPWxpc3QKCnZhciBydWxlID0gewogICAg5qih5p2/OiAn6YeH6ZuGMScsCiAgICB0aXRsZTogJ+mtlOmDvei1hOa6kFvotYRdJywKICAgIGhvc3Q6ICdodHRwczovL2NhaWppLm1vZHVhcGkuY2MnLAogICAgLy8gaG9tZVRpZDogJzEzJywKICAgIGhvbWVUaWQ6ICcnLAogICAgY2F0ZV9leGNsdWRlOiAn55S15b2x54mHfOi/nue7reWJp3znu7zoibrniYd85Yqo5ryr54mHfOeUteW9seino+ivtHzkvZPogrJ85ryU5ZGYfOaWsOmXu+i1hOiurycsCiAgICBwYXJzZV91cmw6ICcnLAp9
\ No newline at end of file
diff --git a/drpy_js/鸭奈飞影视.js b/drpy_js/鸭奈飞影视.js
deleted file mode 100644
index 59c8b52..0000000
--- a/drpy_js/鸭奈飞影视.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/4VTTWvVQBTd+ysClbwPX5L3Cm4SnlLBhaC4qN0VwrzMJJl28tGZm6axFFyJi1qK6yKoaN24EFyUgv/Gvrb/wpnMPJrXCiaLYe4959y5Z+7sIm7xihFrau3fs+QHFBjxrd712Y+Lr++uv3y8+P3z6vRtb9Rm00KATKYApfA9r65rt0E5ojGhbk7AoCrOJMjbLbDHqAAvbkqUELlEDAnhjW9+N4WMGZYgiEfphuaW1YzRyEMVFJ5OTFrs423S1AXH0+HQVqJTrb0kgWaqg1Ud2qlotL3exn1rrGMxZUC4hk26IVm5192HupPlGCaxb+0fGEMIwoQL37invt6GINxZS0gOPUl+8fLJs+dPw401o2KIQDNSVNLMh+OxOVbrTlgiLtQFVMwFkoWqQJiRKrdtRgNk26/IHqg15SQO+pub+MHAKEcISEj2IlZhJTA/+nD16XD+7cSkS4aahTrwiugoQ68b37q/JVwo1oHTPOn3B9b0UachmpcVqAEx5MlI33AbH1lbQll0EOjuBloWF1Vr702h+dH3q/fHEorprjsr9pyaYkgDtdOX7ahZcWQmoFli24hBMAxEiXI3hlXT99D08ufszeX5qRG7TUc+2elPBobSimEEyBE8um3gQu78sJW76XnxDFzBKCYOzePCaWOab3itO1micJgAoswpaWTbSyU7UExEJLFBR9S2VYfmUEHQAUdFDnKEJH4lJTRJIWQ0o3CnPqCZugAX5ZAWrEgaR0Zs2xU1LeUc1hyVcpV+djjKqluk1j01Isq8FYoHat6Wy4QgK0vWrMDNnWMo/v8B+j0tzO++h/nxyeWvz/+60a3uPCylSj7rzMXBX5+DI/nMBAAA
\ No newline at end of file
diff --git a/drpy_js/鸭飞影视[V2].js b/drpy_js/鸭飞影视[V2].js
deleted file mode 100644
index d14dc7a..0000000
--- a/drpy_js/鸭飞影视[V2].js
+++ /dev/null
@@ -1 +0,0 @@
-h36A5I5KdeB29zb3iwNWVz5dffPc4q8XD42ySPOHEIBOJV6Lv9m/xsdEN0WHtOrrypsqNYQrLuWUPekR4BqHQJX3slGxKdw/t2jo9hcMp4H2PAoDV3BHaEPKJ9aoDod0g8xL+slR+Gmbmbn2wkyyLR5QMSinNzRgbPVo9yeXTFWTIfC7xptw4YefCGC61YuMM164dmUxfjP2ObwvB5eJ1o+6fqWVS/uezOtYZLaVZR4qg/Sh7elJj369E1npErtS46SjRr0ykRETcUturG+l1dlSQEf11gCu5uq0Lkx/Mq4kgFXrybF3RE35sWoJ15MtP7hHpT4VsbXgv02GoUCDIXoU8hQxRQTxjXoXbhwEgEugLOE+WhaQutTgU3djnQxEEMA5lveMezOjAdjTK72zbeiH1z2lxUNyJ8Khra9rF+uL3oofHCczh4tXKdk/hmIciiCXDhH3CMfIn5ka7HrHUlrH1tsgjXTqGOECSWc22+nrexmEl76YyAFgZ0qWC4o39+YNylEF87yFJdtprdvuVb+wmTwyuANUbaqmmoUJire7DfaNt7r86V9ySYc3MwZGBQqQva1/CCNwYZ+cVPHiGwjAjH45TLLzsS/+FQlqG4kx3iiyEr11KJFZJkaLGnjcIyBgBHetXP0z8mQ8NIjpeqMRSHj2gacimNm13bHY6klNpICjuwkeX6lipRL4UGy3GkH+X+2v0YLwbPs1PrasGmDJDiiTqtABylB/xsLK2T9qGYtCQ0RKnt9l0x7BlQNvNsV3iVxis4JjLI5AXmef9W9SW+4SNX8Vt4InuCQbUtJHCWOXx6n5E6L0+T5oWDHmH+RH0mdm5DCAIrEFmCnoAl65Z22QkEREu/JTd8NbsQnvrsxl5PSphsc50gRowc3tlxDX9lF1z2kIqXqBkNhDLR7KTzBppi6ln06+4TT6iFz+68anEERYpvgyu/A0sgVawc3Nl6RxWHgHKyD8Rro13Zjn6T5leKen62M82pKupB/vs1nNAhredlPb3Fbygj+Vz0sdgTnzxPptAMW4jffpJHmIaw3hkzSd4dB2dxi9gq7KgDtpH2IPpxBIy7cdY1O5Pwkj3w0rZ+oJAAmWnW7aYyvN4vOCT+UBZ95EKK0m40LavDPvZKqAIOC6HK4VPJZ1Tm3LuSqKkom5FZ35Z0+nb0El3HjYntLrHOvw/Xi+PP99y7u7imcutqjr6jl8G3rvNjbCQQzMQWLWXInAmm6iCFecynADFwm7b7N3OIXtI8mCTHLPfFUf7xMg0DpOzIlexjB/8+9x8Mi13QP4Z9NhpqDJ1r5+saXC7nmm4xorK9UZe0XVwqYBwcbewMEsxySh46Z6pmApsYdPuXiwTxg/N+1PvLmvMZGH811HdgcZHXx7nAGoi9UsiWqBRM//6M8jSRWeTQ2N7Zby6n8pyTlfjWz3zdpTzKTrvHxiGnaJPUaHl2sLmBZo7KeoDlEL+LbFf3o97u1e7n1dHcoN/PTsGicG7UvOLSxkRgCVvi6bYof/PEMmDdzrVm1+mibZbMvR+BJumGFprdhmwdY6FhDqrS4D8gz8DKV73SWSth7ny9xA2u7nqkONfnTKZw6dP/nAIfQCJ3AcSJu1EOMTMjsaRUSmm6UrwO1w4+q2i2ZLWE5wp75pHj8TQOX9J4CI8Nl5dk8HV8DyjYFzMNFzP6o6dJNbm3XPoRYMpzR2XJhJ0rPihMoAA+DPdnAkHek7clmm81ZvkaDMFRh+xvxmPQP6xiaKHjUQlURkUt/Wwvs4JE91NfhpHhN794AryGpsJ7ZMGdEqbQK6lox1lyA5vXQ9LsrqUT8Y9LjVKcgFV/y06c8O573rM1u5EiOTF7sXYpmJ19/lP6LjfYw1dYq2NBkDw0vJMC05wS82HdU0iVKxfkXmoYmnMf+3SRvqlc3Hrwjzq4daEurekQqHvvspe/1NVVm9UstKsK1/NRaIv0kfPqpQZo4rwI+KD7mbeBC6v5CNvSRlOJ1Ht9EFCfdeNXLcxzXfDf6qhRzScK5QEGeyox/GmAFZQ2JyU7qonUEGoO6ytt/eMlA5dThxjXlb1DSRzGe3namvtlKCRETPHTBqv+dYMZuGny2LAG8DxWFRy5qbrp7WTbyWlXLC39knEnxI0cPjh8/A0j1alBTu7DYGLq+gzYLdZkwpCh27DoeQ44mCvefpU0ArGqQcd6RwTGh22JptvvR2FLJ+Lml9PNSS3qXNGita25ppMGTvlOx49YYy0geTPNROURrLR2W5frefZR2xKcuyj7ERDHDa6DijAR/vGxFCioc6qaf+O29azh6UaNCSpcUUqyppIwJzHjuKf9B6HyPcv2+rhVjaRGsRfzX4GVi0f26NfVkBjJHAZK7O3Ek4JiFyRdsPvf62BAMoB20Uo2+TmyP1I6u48EIeaoyuBOcijz30RTy4iYAu+XFel/+r4VsZbK7n/8/lkQQC7Yp1WM1iyL4+HUaibBGfa6s6ty/nTwPptUc9ibcFO/cFZYuZLsZMjveZPhGep7nzxj3ooXAQ6kJ+iRzUdpq3uJaNssi+kMGO+CZvjcm/inwI+YhQiLIkGpYypcav0SxrPXUq/Ae9Yi91wlywyV/+Cx9lvj5bi9K9AQNFiCPhCKm5wGojosgzLha5ZB83qOW81/iPG8+1lDPiC5yAf+EYuwk41k5khmtFVVz1qr8TWZx5kIhF11HJJVwHCXB8y4GwUuKYtfLTaDjvwszCLYUfRwo4K3brvTRUlGmR3UoJ1cwmjGKoayOqEahvGRIZ4K7W94cWEEuhKOdTHanfaj1BslqoGyvbHhnaV7FMuZ1tkhefy6Mgz4g4iFkhezJAdHN4d/eIR4I1R9wZl+Qdv62HLdUjGgFH+tPLZWf8sKT3YctBq9voGxJOwFXn2AqAQ1qiclYbFs0mUA1+pRwy4heVmf43vyFzOZKLFrMLuUiFs87nHB6Z0YYA61F2sTiFoS+XWkQ6zJM14l3J8kQcHyR2EiLlUup7QRAN/lWsTwW7L7q4OvSBo/DhT8/ftEDJIiezdGAlbDWb8z2Or2KkhKJ2RudCihHSspjvLSY+1rqUgY7kME1zujDsGdmohRCylZKuONhwQJGEFpihecIpQugM40zM0eLx4Vy8C7CvQLJm9FrJZ2lj5q44kK7vMTc+K2wFOx7ssFeya6BXc04iBseuWNFSJQC/IItN4ohrWtkvBvj3ViXBPtqEzUAfnX3+cNVu53UU0v1kb7DmeerhQNcY0Q4rn1fmk493XL2kU/sWs+9ntq4TGte917cz5f2SqO4YkR8HhnzXJTx/8vAddcXkd7dmBnx6uq+0B4M5ijA0paLPR6Ubmssgdopw0SknZphOsTfqif/+tHmdH/BTJUSX6bOuEuXsPQhMwn7zdWWiQXbRq5ro5vTS3QOxMjJXZFbd0JTcdQHsSw+hC6bGwSaDEYQ5p4v5dTZoSM25dEqlkcQB7Vajje6rN48nljGf0j3UyzBP7swCm/upf6S2sezKO1ldkXQTECSgI0XNk4Ce02+yqa4HNBlpPBymsoJmhoKYCDHJIm3viyvJBvrc++Rx6NKPqQSIfMOCkOF2a2nbcW1QKnGlFU3RYGq6c4TIwQCM72Av2v+aFu+yxptoXoSg+pj3Eip0EYHw5Bg4tVfJOFumlWnCgazRhkc7P9lbEcQXKVu4d/kdhKgBneifxzVKVsfBxw+0blo5ohepDFkU879vVCo53N9j+9B3C+i3bPlsLAfj9SCpI091fbTIavYqQruJ4BRekt9fbMqQ44PyIsee7kfl/b1TFQVOnTd97H1yzID1du00McdLQCpeLu74s7zLrXbjRaF53PlyAYrMbw389r0rEMgi+rCaxH/2rtfugT4AF82UPI0WcNrjhlTXFbQytu4Hoja9gciWL68vwscH8jkyIFqGUrz/NcHOhPNjFpgFF48PpW00zuskIR8uHkug4Y3r1qCOcZ4yJPnNfUyFuWb0Tz1nF0pilE/cFwhM0Nvk0Rkt2UHquZS7G2l5j/XPNXjJNbsZObg0SPZROCwqbZXLQOKkPGaw6JEk+pUoBU2CrLJnkU28TMYmBgp6WexmR6Xl7jCUmD/wiWmd5wcp7kw954WxDPl1d71qrc6Bz3CXA7PLEWZPkL5WlOLFDnjxhs/BgoGiUgsPOjkOHpgOgKCGvKntAYR8kNDfJqMof53j76IG4FoQaEqyfYhM4fd2TZVp8fiKupSrdiNMuAfnXduIuzsiKdo9TNGp51bMrfm9XllzqybrPon6PYFGTAxiR7WqKw6M8xnb1tS4fsog5OSxMw3PJDZUqckHhpdFgnxn+zb4xW1ulM2klicZ/XJR2oTIL+jEQLXkPJeeg/Em7r/dykHvTOgmTHBUhDg6UhZjk2dA5Zz6DFqE/IYkxia3vEQF24Bwx5n6s+AXxbvPp/ZUH1pHNJXOnLivZlf26B5I4h3EqaUsXUAImCCoTc7o9q1uubO4Yf2q6C9g+kgTLeDKKU1Dc94lp+pPPTW2aLMgB2yOefJ3PLd8qwtnxQ26YkTW1THDudpf4hnz3JCN0k801VcgPWNbl5eKF/v7Gfz/mlcRdAKJKJdN28evPYs163cP9kryDOw8KCfq144U2P0DmqJJ6kmH0HsJk7lbs9wrVV6gsZhaJMk6+y65kxlBOdrwDg/UZ4h946EIRc4u5kfdZZGZxBE1qAW9DoMwVuxLkbgwQ/Qp6HbPoTmd506Cp9iiT+RJglJjHXF69UgdGSeK9oJxnmLu1OjthFMe9cBr4eJVuRuLebSzf3mXlIEApO2PETvmrrbfwckfKfi3uwhahiTMCt+YsQWi0a9XlasCAeCocYK0e5i2yo9MNlpTSQqO7+y5XwGcCsAjxILSPcVEuZE2VzoGYh+a0YsdbjVS81fiQbx8619oFup7Pm+6j+LDeNs1UXv3v9VxRz0Xlr3Sz1c7JK0z4y9453I7nhiAtsJKhBhNweW9IAgM+u0IJ7i6XRCEM1IQT5M7T42YqleSd++uwVb1C/gXMHzaVhakra0c5AfXtgfxi6ZwiLEAVOaPANI2Fxgl+MJvIsC0c5fYurN1F4FA+7YBgQTRoS2Lppi6GVJ6ffRR9zpJRyOZ3c2MKZniFrdT4r96rOAtxNNWlwoTqMZ+/Nmid/rvknbGIlRqcKAlqLRMJJXckjUfh6vObpK1vjBTbUZuMkqA2bydaUIbEnfGTgsDRxbAlYz4ZTSvT5xAaSuZZTqgZIVyLFtDlmAKim7OqWykAGZXUs2D5anjzaslQ4/u36gy7RNFYOM4//cNFiQLn2leOPBoLtg/lRbvK5TuM8WHgt+j9GVvaTp7B7nM1fMpS6BhxBU5sU75oJWzNTTrVrJsyf3piy+jv/HqBYRCWvjCDst2qagWORdR7eh5PibqLQDlwZbLMMQhTYpdNdqpA+AWDsDsxIWRfh5UcWVULTYmblWYv0V7ohjO7auN8XL4C3s1+LsnjcVbaHm4nmCdaJm+KlyvK9cYXxBObvXT6oVznRaUSZHALj5IAw9bQmMq7sXOftY0iBz1vZrRmigm3yRFLbFiGj4FioT+fGYlyQPcXSYTkpzdcplEip8tGmNd0e6PSebdBAt9YisQocgp0fT1ZMSqZuk65PIEP3wPaGuQSBkc1BaNS9QMFq1eB2TlAFaMLQOTrYzvaFLM0JRo2lCKDNBEMyCMVtlU8Zg4Ph1pU9pZh2nRjblTemxZIdbQ/OoXgM7ZL9k9XHvDQ4ay/mK28trRl/0lr+z0DBZ5pd9uxsdxP1K+uEvJYzmJwiSRZj3J1ITX/HFY88DYeSAHShXh+/CVtbeZ5iWEFuthybDjOCIIVgDwPcCBGQ9b0p+ly5YlkeCExnRedq1H4XBSoHx3BrsKVqTCB+9+mnv6Xdd1+0YaJ79r8WkUhqTr6IWtxtSPUqEhM3nQcDKske6+J0OHuvooOckiT7+cI01yIAfJEj9Sd6L1qZzXN4YW9jA4j4vCl86iOe7jSkVHqZa55mKCQ6460T2QxsGshC0e7Kl6KnKF7Cr9ozCoEFDphc8zw21Z8/QoWHk/dkOxCMgfpcNFF13YTdzBEDJaQdEof7Y35zd3WPTLIWWlA2GVWTt2jX6/MOfzxRJmIWJXSC5+KwTPApK8SKRaqtsMEbAJEIoLs0YtE1c60pWHxEfuXEqblCrA+oBRRi4AUSVMzEnPjmFCa59o+Z9RD0JE2kVYfIHQoxTnhk3tOyJ8EvPn9Z001AWycSyX3b9W3JRS9/D/YZ005u+QvZsH9jt2LN7SQk93V8ZETihj9vQ7B/zgI49Gq2Rd9Fx7DN5whQoBydkkR00uMxNAF31Xnx9bQopu8XQyM2Hrbc/ILvH5MBbD4fjcowtcdO1uS0OWsXi2fcKvgKtDZ85P28obkozA2vSESzopPjp6Gf6r9+lydaBXyxfejOdV1lQXDcmzis47VIMJuf46uBO+6VVv0NaN8Z93SDsNtBaphjWEVGgIYTN8v9WfKSyBoFiBNAOJOCh96/1yIoJJfcIw+QsERxqeGUfInBmp6mHJzR5sd1XcJ0AoSW+BNYrB1Us4UZ38yM6tg501eJ34jZtT1vLWohN4NjLHh3uP8tC2CrH/1BjBcSsGMYhO5ZeDsYZEgDRQhNxTO3G/Icu0HfIgvaaJbUEOv+9rbhVZpnhJaDDlaqsj6iPkYM/PBz/hSR3qMdIHAz9zkk1OwnDdv0AnbIICYNVA6e/i3Cns/lKJky9+4Rn+czO3b7vPRI8Cwopp6kOYWG+ayPtayzbN9kGPAhPbk19w+EP1nqbIcVAG3UUcUCyfFstIRki8D9Ok86dfNPhBjxhN5qbHmsdl0WKCZJ7Z4bGVXBMlEtuGmQDT/r2nn//UN3Sa3MFrrYBe7HfHDJLvlJsUdTF1BkEtAAHZ9J+9cJuIZ+FcsLvSkdQA/gE57VeT4tvXPCPFv6HGuJSc1H4+5yfmjMwibxERm69QbN2YFIFGFtBfGjQQn/P0NOrCCwtyF8VlkXODHXsq+DFi/JSw4pc6R9rRVkAUzZpRBvHG52YJNZR+glsfR2n9V3XH9zxyIWJsoWtZp5OpDYVwe7T3XtM4Ou0T8SwccHyWpuZyJOEsRYQiB+36zINVeRjjxvpXf9QpQ02RZ4OlYR2JVMAXYRPvqI2X9FqQYNroT/hcuYd9PnRD0h3SuhBo3aLej74AwKYou/Aq1lq09frBIn6dZDBo8W7XQa+p06DFDM8eu94S2caaOzSZr2wfUC0g6fkCOh774+OPZtyBRFyKj1TIz7FbnjeRgmgGsKn/iXNo80VX1XPM1IlvOCMGMYgqTL+yRnD7M7iIifcTaZNDI4MQfXsXxXallagOlBpwhK4VN95Zn8jVk2yQECs67LFRjReZvOMM06IlA6140abUquYXpc4lXjVoVtBXcR66Q4XnnVOr9xghaqkPETFBCXhoATZ8w7m3El6AltrkE7kxxq18l1Y8gCb/ZR/yuKaU22b62P1K71G+llbhHNCmQrGkX0PiNOMKS0SOYMgjWfPdqwrzCS9ZdvO1FsF7+QflRs3MD2xe5hRpku9aU422FpEYpeteu3D8gLjMdcfn0vCkbgek6GyGwk4slJDZJYMVTtdRpm04aNilWxEnV/4LW7GJbzzBIzAFVCUXudGQmw6XfXSc4ArWbJ7UP3WEJJ1RhFGfdzBJH0APCTGrdbqMB9S8/ZosYSl0PYW2Zjx4MoLaWY0iStfrhtcBhLDo+S0TSp9rtz5H84hNdxQo7enyUsyVhy/VpoirI41qaB95GfNbd/Qh/IB5ftHOhrDNQlGm2bhlBvUJMGZp1qG8aeVVfhHzYhKLbgjhBG2/lm3ItwOl1zAGwMeGHNh60hOiZDELOvmyvgtdhOTWs7ZVVYPIKFy86hXLHqqggw6CMkimg6IYvjYdso72YIN78HIVwiCDQStTgSt77dVuM6qjmpzU0JEdu5fdttGqbJV1fQ3yO9VgsNlGwiWdyIUnpxcDA7VqiIk7gvJ6SXpxMVjf+DQopqJOEweamCuidnrARO9bXD9o7uHUsuMDGWMkISSRJwNj0ZcY+cbI4mzNNkbc6dx36n6hJ5SVwln+vCms70zCNEybONuf9O5klHFD9Ljb+l3QKVeF783ZmCbCwqi8jGVmwm4KX+9OhuCgDuqOCeCd2MVxO2jQ+IlgbvPoE9sPNnkwTD1QHT8FB8tcmhVU1OOUyzPC9m2+c473gzLRoiySdwZcuSysWAbJoc+9Qi+TcywRgqkNYOOkVHSdk+3VjwaVJ6PMc8SQDL/pzUlY867oE2hQIGeoCiZ9mRQ2pfHnJAbu9NuPdE7BN8zSqt5meXYI67hFn/3+XEqc4rrWrJPCKOkoihh9N7mDbixzMx6qAHur4S7Fmr1seDSQcuh5ijFrlQ4amPHiukDEZBuxH2N8lR0E6p7MjprJ+qYH2+zarusq0+6/uA/0UDH+T6lCkaXT5rJh9LiOlWRLpE8TnVCNykkOyEodGKrp9xZiiM/2CVKRT7pK7FNSeek2iRUAaDPOX/G77QYf3a38gw50m2G27tLWQwU/gvjLJK2GJ7v8tb3gmYS3crgkLwLLNuucm6bwZDnilvCkEYmHh6AZpvqXPOr7zZ/JLlEA52ThIdgkITUGIR5zuyTOAiYU8Ei61Ig+7bzxbOBxvgqk5tfwS4u6DoLoK3n65u+kzIUkxJxXgHiWOJWLNrMJEEOBB7bi2iSaHX/6aE2lFxJhZMlJhb1hDrGKtsHNil7W7jIFRqHNCdmGRpg+3d14Sgv8Ie3JrbamWH4zIMHEFlgwgqnayRAz+jcHFTZSubwUOfoCwI6WXBaxhU0RvjbNOGFhx5vqIhxhECFpYyxFdFntouZgU0tfqKlIzxDxUuuDx/ZsgWLAsll3ksCWMlJhOqVY/1lmyROVKTT98moVDsXjKyOD8CTzOYCs6pJBh+f1M3e7Dg3nBWSLWRRIWkLT2dr4jaNMF1hnhDEQEa8Zc3uJzds2pX6MdAcOFb+BGVo3qxP1ba/XfYnl4OxXoeIxJghOX6c1qXAl76+NJqumbdvblGohmQ3QUh4sVSROYGzntN6STi15quY1iAzCnak6WZgs0vKIe4O3L1ZFTrHMnZgIlWyXP+iufLYAV0mtccz3SrV4n19wehC+RaWKLhmPOjEiLVQ3jPVU7RpvSdHp2HEZmWov667fdeEmMHRqPdkq8t3tWdnKWMyyoucXRR3G8pReKv60s5y4L4C8yIEJT/qOdVrFju5jHfgOEaGdCqljDuk49OUc+i2J3qXUYzqPdxRuvIUJ5yuvyLOCLBgKF6Xgt8DnwVyzKnoaSaG6plHQdkV2K5a2FUdM5H8qRQUm0Q2FALt9bj73HvmD6vsxgJ4RByc6Ig6JsPv/v8W3rhA1SZJO6KN3eM9yfpMkOwbUyNVyW3j8k/LMbYPuUQF4xMnd+yrTzEVls4yEk6ta6aY3LhoTDm+h3BlMLKXYV17UqTajAQtE2VeppRoqZUUbl3liE6XelX01AAmNspqK/K6xN6KdrTXymDy28Xjxu5PAMjBNfmepHMPbj/n0PtVncoAPVZ8BnYxOjvOEjjMZ3LLISCK06BKUPz88Q0PVfK0L0Xb+96tv6cxVMIbV5mFillxMR2oHe7raYjZWTsnu8inWC67m3gx/luaC/4jK9B4GrFXNiYC0aaJTQW73scHFDONlLMYZ43RWOTfWbcy43BM9qU3lNEJgJzaq8aUQgrR9MjZL1ttgZCAYf/G593exT8eSGnHHGZOzY3DHF0N8pk63rKJTGUnORa9HU0jIceMDwpCMxfeSiZz94kXH2J5osVsKieK4J/aK14OP+oJ4OUTI5L0yVoV91IxXQLbAH3MOuLbUzwNDyOOIYyWe+HvElj1thTx3UuZkC8xp78l2cuF67RaMMmVpr5et5iPbrB1Pehy1lKhTOvcnYT5HLUoIuLGSNdkkASfQLAkKTRM3BaO1DzCAe7erjLj6knkgG3KgDE6YpsFiThyB3V4dr9maXWjbGUZ0zlPJ7q3fxE7qcYIwO3Mz+p3vGrX0JhImdt1WRZJS3O8nBjgWZd62k2AEooYQDz/5RDcASWYuE7TQDMbM39vxkVzufZU1o++CKNaF/pN4rYrtiHzmRmS2MdS51EJLB9q/8sS+DXP98sIpAyesTU7qFaZRNpsQh2k6cxbG5gEAuC/zGtvunlbkLlgi9YUHkKUKPZqN//wfYgyzqaBcUOOfqL1gLwE+27p7s8Zx209s/EaO4+j1/3c02899HpqOurmi3cv6PhPmEW5hl7Wwf3tWX/VOWyiXdkEGP1E/fQ5CNOEyNjfjY9xGiPSnnwXmhvNDqXPxJB81GmBc1akDYYTrNDd0jnF3jTTU7hnnDq4gwNwCEAuUQ4OA9LsFoI4e9KI/xYI92rx39UImYpQ6yWUFortV4VkwLDTIv3zTP39pOkUtRO7NUbTzlZKsYp3Gb3Ushk9u7a1rdjvvzayPZ7qPlbAoawVs6Vhr8m8tZV4DarVyKKKCjBV7INTXtaFY1HQmUMSjtdIpqX5TRTadEBiaLGEnmfnuY88mKRFYKJ7+WACdHKlGUI691o+qL5Odx4cr7ypwmxywHQgrg+ErnCXP0nz/y4s5Wcy2JXD2msnhRIVihyxZrlGg0Gay8uv6bP9QitNvo51L/shIbG4+ORIw8zark6kjO506psO1Gd+nIHhu4L4I4MpWFtbnYxXgj7NA/dYhA770hdCaRo2EXRMPkiwM3TLHeatjrmG966NAFak+qBbLfgOANh1xJNG2+y65vzOaAd0E3AghdtMDV/mznKGvhEjlBm2y6ADUiHmmZSQKGcX4Q0vSCXwstAPCog7sf1fygFzqB0L6BqWZk6DvJKuuwr3Z2k1Ni3Ie2SoUsOayRQ5Q4chU4Ic3E/pST+Svmtbovk/bIQcUNLbD2XZdMQFdwiyXoJOwK8D002d3z8W5cdzl8n3di5yyNjl+mzkyvLQt1nq2OJcMT76OdOD6wMzGAYs2EOwL35jfd07WdrWzdMYpulNeK02K0WuzRuIkZN98rAEu5LXwiUXz2LGKvHLff/jtcTRTm44/iKNBDnspyZsUZai/spesM+JydGg4hvNlqMB/Hjzx4O9UQaSRZlOrAJi/KZOKJv3+B3F12RgQ/rmFjr2yhl6C/dlMzSnKs8imgJO/mt1/G+KLcNyQkWojPxKUB8IunoSJJbIUBDuKHXwubveAYbz9WHLRW31Nh9LzsjO3MTxhheFmendKJDBzdpbbjXy3ifprlwAyC122Op6zZRGrJRdFS1otq2b5ODlzXQ/3mr68aV8zHGD5/q92D3NopRr2w63GW9H/QYSS3/WlDE0lWiR3B7+UNRGu7SNf4+vQGDrqS7Q4Dh3YdpTX28/rYX3LQHYPsOh2B5gsPE8C3oUPxhfTwzhBGA+oMe1UazkVDGW6hIhAft6znBmARWcNq7LSnbIcUhbfzbciizdVOOepU5IrBr6uZdzbVnn/BdNa6vR8Mp7mlFioxBZKkE5NzPqRWBnKEdnujdRuR+GWqwrYDQjaq079ULJc56KU08RI+nzYGykqnIMSlOcSL9B8NKI/Hb0skR8iPytcTVUpdvrm99QgJhOAqh8URW+DWlO3bsYrrEg6ibxiaKVrZiaD6ILKRW2Pnc7cipl5sv8J1vhPWj1oJ91TLHUUI1jk2B1NiGPYkLTSo2zyi+83m3WeXn1jz91d42nI3A2YbRA4SYXNM11vbD2kO3/u/Z9BwUyT0hcuBVqbPpltG9rphOwYCaH81YcoABfAJ5aDUu71+voYWj0wbZDHUNgMgq6+hzxACXmKaMQ16UJLGYFHLVEuJNcOwS5LwRbtD9Ekxkjdz2Fxw5xkSeQaGCikYy7iMMONmcrtbKSIoZ2hA1Rx9aAKMdRgvoLislJv67bIQMllMCabkmZoJqmqea8TMCTKMj0IeBbE4WQ8sfIJ+UGU1bZOKOMROAKMwZyqiI5tpFWaU/6dARahLPFHwewdvaKYyPxf9L27JJk/QHZf7F784nipUgkGrNeimDN4ODKwZYrzZFOTII6Gk+a26OVnFidv0tcUl18uusqINyZ0V7LjSPmKxad8ephxrN81HO9Bx/53f49VWWGbzqrIVJAKiG/AJJH1G1iP5cwgMhPy3o8hAAXEOMHlz1EfAtnnS2I7VbPaL+cPmBnw4dh4m5qN4863htXpZIwccGKD3vuzu84QMDg5BGuTBkm3NYmqYa18V9NA0yXObGUuaXaxolagAKcsfkOZqBl79uxh5Ag0j5Wwey8mRK8dgpQQ93xiLa4skzWfypNP4AkRjgxd9MLGmsA2YwPEa/BH9UfGmd7qEOwn1doAOn+p0Bk2NrSdjqG0rEIproz2yFJyxGq7QjUdUg65Mk04xr2538gEGDMYpZZYXAYdZoXu87SokgHwgVRWDrRaT/ZS3KLQn/onJI7ovSzBLzYdfd4G9mBmKhCch/dsKQFnOvI0U6Zg7iKQUFMmFoii9ADD+XeLgYoAGAQVp0K5CurQxCmkMn3UlBwBmty2iPS6WRLnNpT0QSeX1IjzvbIH57gkfjhWhODzS5f9KdFZkKPQ7r6KleRnJNNAVz++bsV+US0oicAduCJ+xXjr0qhP9DtDSTHdxxj3O0I9QfckIg1Q/NBBJXMdjO+7H4xUyo0uDedbT0gO4N7585k9uK0sytNruFCNBQn2gPAPAbxLbGcHVjWmWMVzBIxksGIC+VMDIbaKGVTcgeVmV856Ugezo2CicBnR66SW2WNzm76wXrkCHLChsnv3APGxpVajziGnh/O6Uz/umIMer7e9KtJzkbC3WgeH1JVuWR+oNy9eRmh5u//GTpMtDE5GP/Erjh+YgS8C0RNUzNutTEO053cnSus0FSxdRFa6Y2A/vtgt2jBXMhb+qzXWK3AS/zF+AaLq5KdzL3V7NfkgMEJLrY2hJ698yqYs5/1RWztNWasXmMHyMErpLBgRFNzccI3n/paY00lXRNCjTtkFqhabkOIqdaNqdZWNYQPQgCDMzXYv7W3+t7MX8PJ0LL1/R54nil7FhK5HQWRDR0TCqx9yojP3CO1XILc1rya4dfPA9KyCRRA2XOyH/T7xAHznwmSGzqtY+lfN6zdZ7z89KRCAjouBRFYsHUDS4uMs/BH1lV7T53LV8fu/HKauaYCj0BCDaNHgIvWkCUin86ZsXPWjBGr7jw7+ew/fObH9luX/az5a5pxJu1zZpIu29sc99LL3vDKwjgIrisyzNOBygCDyJDKhrxH68ILKDUulkTfMw3FhrMfcPRhRIWFmU/aL/PicOx4ZM0pxA8H2XJACxdx+kd+M1q3auzJJLCuifhpelNcvB+DxRfxX0NBoOqRR1XJeeKvdRgnm4jo5gC0OMhJTykww4U/U1xbcPCYOfXXKQdne7usfquXW+dHCOkI0EFyV/mWSMJNXm52gIyov8h+JUdkZoq7iRO/MZ+47HBJ+rmm918KOe5a2miRSl9V+OgDvJ9IKsdpjBKYodzsaOq5JUjHSlOwR211kuB/UeRPZGBJCJoUBx4ak3tFoVeDKF0P1wOa+3wHrBaGF6h+hSDfx+CLJ/cYWuavpZZcUs7Hy7jVxAsZngxQkZjn2iBmh3J/H+g4kpqxjdbjdsF/+iS+d/y/oBcVW+y74gReeo5iOnfVRxJ3LCPXrAq75sxsnh7mZvMPx38MEJJlRzlvpS9ep7bj46M12sfOapLJ1IHN3krzRk2i4XHUIZ/GsPbkQabnhPlInUCGjXBTWyQJNsavoxtGSLJF2CbY6liXdHwtBgvnGrp69VuAIiBllp1CDJZvDvNe0dN1ewsfBuwHHfTT9sPRma/pxKXiB9s6+fBnjBkXXthLSg/0TvZ6SFsRSHiovjfkHNsO8vM2I7SzZyhZtt0oxU0XCygyz4/0L62YxusA51grStA/6f/tieZJb1q/88tUWc9KABPxUdpQvoWK9pCqWzZoDK3rJYrfYkzoMKxo7dxtwZcoe4a3Qo5aeWuMtad2rbKtwFDHG3IwvYdalk2hVVoehduD/Zzjf2p/EbZ04gnOdavrACnhwfPKF00u3n5GxmhecLx23cSLJzy6BpIsrHstnKCPhFTPzhYTsZMcLQ6zK4FA9Jeaf8Ags4GFOc94ZowCwORASin8ueaJYo3O6whBvDnxwnSk67zOt4A5M0QOjoPdBKbqTOKaOOHPYfbhBEs4d8avNjC/SzkzGbkcerWJOzp5BPWUJIvD/QANFfanUcwgWO2Terz8+SDG0l4lngAMx+NWe9RSDpex/LRqS4yCwQk9avAqIg8V5swVf1z4RxGmR7JdI01EKdeP3aE30fzkBpr80D+cDeWwiZhU+BWUcYjNEEtoU1KMedk0ipAJs0z368risAYQI4vb0qNbOkeqP9dPmMcf9RNwhqaeuAdaWNqzjarXvoLGrMjBhws3SrC23HWPRdwyqNTZXFCNC87RnzntgLaTfWhMmGgrUP6VvQv5Oa9Rh3JXwylaR/UuG6ONRxBC1OQ+p4BDDUg2fzou9baCXeM2tchh3cpERvx8xqkXlgpUudtKHwjCI7PAkdEcXnTlU4m9YcFTsLF28FjyN72DvtJI/yah72x2saQjl5Eja3Ju+1/TfdUA5hU1aO4Zc6uHJKukjoWd07CFBjMAJkZ4b5P//x7t1Q8ymeVXuQX+VF8oM9rtfbqb7WiG0huinbxC/REMxeirlg4oPVaMRG8mA4cC7XtIZqId9OrMPQEQwt3evwTi/+M/mupU/3rhoQRaA7fxxebePb8tzxQI2lud8mi7/UfZhSKnkCibmXZViPv9GuHO4XFo6VJOUyqwlHCu+0kq7BVxZwzjvplNervn99pEoaIzn3KouKYBnsGiHcDBQeQy02kXcs5hIWkpuwCaCqxVxXRvB7azV98KEAIodk61G3VNCx0Gu1ypMzXutsMzKf6f1zBnoCu1HZjAVFQXDNA7Hm/HH1X1wsQhdgNGLnk7mNzBFVS93rpmYiUPR0IS7qr2tHNwyafeQRmL7TUkJqsrg80Q9M/BAOwAflWwVTIyY9EdGICrdEifLbUA4dIVTv52o/tWc0PRk4u8eX4nsCMZc9Nk70uFMXHrdJsLeBx1A3s6YSG8nJPBHzGRhscaWoq7ZH14D6H1jAqs2b1FKKXkV63+EJEzOGS9pHhgqitWaw4jSdUpQszlAvABL1vxiCOAmW7oo19KQamgzu82XMc+9a8viiFbVEh6XS9MGeTW8w7wzkqN5P3vr5FeKDrXk/NWeosFjmqnKNVd0kXhNxGAzm38pYVDwydWd3w+AnHV7GKEUW2gnpL7eYQVJqxuk05mYQEtHAuBswqPSBxcZkPIhjqPcJHgWGpaMlVRCEJ/xUyWM/Rh7HSZ6EE3NzMnYzrgTTzDmNyJWI4ezxVuVW0ROnwp4kzStW9+AxkhY506UJSSkXYCUr0dOC/4mn1EyWCkX9OKiYjJ6svkZtKzxxG1Az4spEMyEeZwPJzjOQhiFAsVMDppX
\ No newline at end of file
diff --git a/drpy_js/麻雀视频[优].js b/drpy_js/麻雀视频[优].js
deleted file mode 100644
index 99a54b4..0000000
--- a/drpy_js/麻雀视频[优].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/41WTW/bRhC9+1cQisAPxyHtAr1IYIO0DdAUaX1wnYtiCGtyJa1McundpWw1EJBDECBFGzhADgXak1HAAXoq0AKF4/4b27L/RWeX36LklgeLnH0zO/Pmza4niGksCbDmai/WNHgEEQHuaMbt+cfbX17enL2+PX3Xu7z4ec/YUOsjygUsj4SIecdxjo6O7PBQTGzPywAxYhz3ExZUUHGAppjlQGeQRM5DQLiZSwp2ArLPnWfUf0q4sFFM7HgUPxTTGLuDqRcgznWGogNX/hlRoXtIuPoUI+bqiGHk6jEaSqj8yQJzWPVGu3eETxHu+nrm4Tg+FogE0qd0eRINaOHiCeLDNsSvbYL2JW2fpKbDhHgHO8re0TZT24AEArMUtlU1QW5G9Tvjrm7z8aCjvZhlPcDIx4x3spbJx9jlmD14NMSRMMD5m+3Pnzx93N99lEXJHAUJMU2gf59ubmZpKWL7EQpl0+fv/7r65w8dfqDxV2/O9PnHi5s35/rVDx+uL343qh5pkiGdEKyLiT5BuidyABK4j4+9IPFxWYjUQF+Jo6MJluDUSnh/QnxMAUf3x46gPIMH6PtpR2uPuS3ojmAkGpqmpbmfVWomUZyIQrj5k22RUZw/Kl0pdLvQp3Y/jVAHjoHWVts07FSzD/ZFZFi2F0BDTau10dwKKhUMQf461BJ77pbuJVzQsM/wEB+7Bmyj9s0rLSLMumlrrDSoTxOljZKb67cfbn46KRm8PX119dur+cnr/+AlwEI7ZvgwwVzSk711i3UT5g9ETCNwrHNXOhUQIGpDg9YsQpU2MxCMgPiC0gOCzWWwPKflK0oxynnp8iytIAv/1fbOd1Z3KVCRnE1Gr5VGbO2Bd/q6wgmLhEU13yZwtrasGoZ5EkiqcqpLqpohyEAzcwdXa7VW0bQi6GrmiqOg0oLlPFr/p7CcD5VG3aEEz6xsj1y6l3+/nJ+fgVDHnEYdHwnUVddIl4TDLsMhYgddqKPrY57fEpfnPyqXO4X8bPtLOd6zMpGADk01tJVqZDPkmQxQtWSHSHgj07HXnzvmc/++5Vi9rb0S7zgqjHSBKLUwxdkPsZZdcXdcCHLO5Us9V6NymwCg+FpIfyTCoJxUcxVM0guwr3e2v02PMVM6Wo3SJK5iBRrtCfXVIQ/uctWWTbLTJjVwJZXNtZh4tRCyww2QvJRrKGlowuStXYNJQxOWCojXkJmomunJS2bAaFhDSyuRHQtRbBIhRUaE7UWcCGzZY0oi02i328YC3dINmiB37lX0syTugLLHCDQHwRckXMYi6lyFffN/hqq5RBTUYbSlRuALZiVP656xMLd5Unac8JGpwlYQM2sFJ4nSdOHcqDkf5euTX+d/nlZHOW1VEPQ292w+okd3jvZs7V+uaqpnUQoAAA==
\ No newline at end of file
diff --git a/drpy_js/黑料不打烊-z.js b/drpy_js/黑料不打烊-z.js
deleted file mode 100644
index c9c8388..0000000
--- a/drpy_js/黑料不打烊-z.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/黑料不打烊[密].js b/drpy_js/黑料不打烊[密].js
deleted file mode 100644
index c89ee00..0000000
--- a/drpy_js/黑料不打烊[密].js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+m7keaWmeS4jeaJk+eDilvlr4ZdJywKICAgIGhvc3Q6ICdodHRwczovL2hsNDkuY28nLAogICAgdXJsOiAnL2NhdGVnb3J5L2Z5Y2xhc3MvZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL2luZGV4L3NlYXJjaF9hcnRpY2xlP3dvcmQ9KiomcGFnZT1meXBhZ2UnLAogICAgc2VhcmNoYWJsZTogMSwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCcsCiAgICB9LAogICAgY2xhc3NfcGFyc2U6ICcuc2xpZGVyLWNvbnRlbnQmJmE7c3BhbiYmVGV4dDthJiZocmVmOy4qLyhcXGQrKVwuaHRtbCcsCiAgICBob3N0SnM6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgSE9TVCA9ICdodHRwczovL21nai51enJweS5jb20nOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChydWxlLmhvc3QpOwogICAgICAgICAgICBIT1NUID0gcGRmaChodG1sLCAiLmJveC13cmFwJiZhJiZocmVmIikgfHwgSE9TVDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGxvZyhg6I635Y+WSG9zdOmUmeivryR7ZS5tZXNzYWdlfWApOwogICAgICAgIH0KICAgIH0pLAogICAgaGlrZXJMaXN0Q29sOiAiY2FyZF9waWNfMSIsCiAgICBoaWtlckNsYXNzTGlzdENvbDogImNhcmRfcGljXzEiLAogICAgbGF6eTogdHlwZW9mIE1ZX05BTUUgIT09ICJ1bmRlZmluZWQiID8gJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICB2YXIgbGlzdCA9IGpzcC5wZGZhKHJlcXVlc3QoaW5wdXQpLCAnLmRwbGF5ZXInKTsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6ICIiCiAgICAgICAgfTsKICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09ICcxJykgewogICAgICAgICAgICBsZXQgdXJsID0gSlNPTi5wYXJzZShwZGZoKGxpc3RbMF0sICcuZHBsYXllciYmY29uZmlnJykpLnZpZGVvLnVybDsKICAgICAgICAgICAgaW5wdXQudXJsID0gdXJsLnN0YXJ0c1dpdGgoImh0dHAiKSA/IHVybCA6ICJodHRwczovL2hscy52ZHR1enYuY29tIiArIHVybDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgYSA9IFtdCiAgICAgICAgICAgIGxpc3QuZm9yRWFjaCgoZGF0YSwgaWQpID0+IGEucHVzaCgn56ysJyArIChpZCArIDEpICsgJ+mDqCcpKQogICAgICAgICAgICBpbnB1dC51cmwgPSAkKGEsIDEpCiAgICAgICAgICAgICAgICAuc2VsZWN0KGxpc3QgPT4gewogICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQubWF0Y2goL1xkKy8pWzBdIC0gMQogICAgICAgICAgICAgICAgICAgIHJldHVybiAkKEpTT04ucGFyc2UocGRmaChsaXN0W2lucHV0XSwgJy5kcGxheWVyJiZjb25maWcnKSkKICAgICAgICAgICAgICAgICAgICAgICAgLnZpZGVvLnVybCkKICAgICAgICAgICAgICAgICAgICAgICAgLmxhenlSdWxlKCgpID0+IGlucHV0LnN0YXJ0c1dpdGgoImh0dHAiKSA/IGlucHV0IDogImh0dHBzOi8vaGxzLnZkdHV6di5jb20iICsgaW5wdXQpCiAgICAgICAgICAgICAgICB9LCBsaXN0KQogICAgICAgIH0KICAgIH0pIDogdm9pZCAwLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxpbWl0OiA2LAogICAgcHJveHlfcnVsZTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICAvL2xvZyhpbnB1dCk7CiAgICAgICAgLy8g5rWL6K+VOmh0dHBzOi8vd3d3Lndha2F0b29sLmNvbS9iYXNlNjRpbWcKICAgICAgICBpZiAoaW5wdXQpIHsKICAgICAgICAgICAgbGV0IHQxID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CiAgICAgICAgICAgIGxldCBfdHlwZSA9IGlucHV0LnVybC5zcGxpdCgnLicpLnNsaWNlKC0xKVswXTsKICAgICAgICAgICAgbGV0IGRhdGEgPSByZXF1ZXN0KGlucHV0LnVybCwge3RvQmFzZTY0OiB0cnVlfSk7CiAgICAgICAgICAgIC8vbG9nKGRhdGEpOwogICAgICAgICAgICBsZXQgdDIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgICAgICAgICAgbG9nKGDnvZHnu5zor7fmsYLojrflj5blm77niYfogJfml7Y6JHt0MiAtIHQxfW1zYCk7CiAgICAgICAgICAgIC8vIGxvZyhg5b2T5YmN57q/56iLOiR7amF2YS5sYW5nLlRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0TmFtZSgpfWApOwoKICAgICAgICAgICAgbGV0IGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKCJmNWQ5NjVkZjc1MzM2MjcwIik7CiAgICAgICAgICAgIGxldCBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKCI5N2I2MDM5NGFiYzJmYmUxIik7CiAgICAgICAgICAgIGxldCBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdCh7CiAgICAgICAgICAgICAgICBjaXBoZXJ0ZXh0OiBDcnlwdG9KUy5lbmMuQmFzZTY0LnBhcnNlKGRhdGEpCiAgICAgICAgICAgIH0sIGtleSwgewogICAgICAgICAgICAgICAgaXY6IGl2LAogICAgICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsCiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczcKICAgICAgICAgICAgfSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkJhc2U2NCk7CiAgICAgICAgICAgIC8vIC50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCkudG9UeXBlZEFycmF5KENyeXB0b0pTLmVuYy5VdGY4KTsgLy/nm7TmjqXovazlj4LmlbAz5Y+v55So55qE5a2X6IqC5rWB5pa55rOVCiAgICAgICAgICAgIGxldCBpbWdfYmFzZTY0ID0gJ2RhdGE6aW1hZ2UvJyArIF90eXBlICsgJztiYXNlNjQsJyArIGVuY3J5cHRlZDsKICAgICAgICAgICAgbGV0IHQzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CiAgICAgICAgICAgIGxvZyhg5bey6I635Y+W5Zu+54mHJHtpbnB1dC51cmx96Kej5a+G6ICX5pe2OiR7dDMgLSB0Mn1tc2ApOwogICAgICAgICAgICAvLyAvLyBpbnB1dCA9IFsyMDAsICd0ZXh0L3BsYWluJywgaW1nX2Jhc2U2NF07CiAgICAgICAgICAgIC8vIGlucHV0ID0gWzMwMiwgJ3RleHQvaHRtbCcsICcnLCB7TG9jYXRpb246J2h0dHBzOi8vd3d3LmJhaWR1LmNvbSd9XTsKICAgICAgICAgICAgaW5wdXQgPSBbMjAwLCAnaW1hZ2UvJyArIF90eXBlLCBpbWdfYmFzZTY0LCBudWxsLCAxXTsKICAgICAgICAgICAgLy8gaW5wdXQgPSBbMjAwLCAndGV4dC9wbGFpbicsIGRhdGFdOwogICAgICAgIH0KICAgIH0pLAogICAg6aKE5aSE55CGOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHJ1bGUuY2F0ZV9leGNsdWRlID0gJyc7CiAgICB9KSwKICAgIOaOqOiNkDogJyonLAogICAg5LiA57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQgbGlzdCA9IHBkZmEoaHRtbCwgJy52aWRlby1pdGVtJyk7CiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgICAgICB2YXIgcGljID0gcGRmaChpdGVtLCAnaW1nJiZvbmxvYWQnKTsKICAgICAgICAgICAgdmFyIHVybCA9IHBkKGl0ZW0sICdhJiZocmVmJywgTVlfVVJMKTsKICAgICAgICAgICAgdmFyIHRpdGxlID0gcGRmaChpdGVtLCAnLnRpdGxlJiZUZXh0Jyk7CiAgICAgICAgICAgIGlmICh0aXRsZSkgewogICAgICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgaW1nOiBwaWMsCiAgICAgICAgICAgICAgICAgICAgZGVzYzogIjAiLAogICAgICAgICAgICAgICAgICAgIHVybDogdXJsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAogICAgLy/kuIDnuqc6ICcudmlkZW8taXRlbTsudGl0bGUmJlRleHQ7aW1nJiZvbmxvYWQ7O2EmJmhyZWYnLAogICAg5Zu+54mH5pu/5o2iOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlmICgvbG9hZEltZy8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zcGxpdCgiJyIpWzFdOwogICAgICAgIH0KICAgICAgICAvLyB0aW3lo7PlrZDkuJPnlKjlm77niYfop6Plr4YKICAgICAgICAvLyBpbnB1dCA9IGlucHV0ICsgJ0BPcHRpb246eyJtb2RlIjoiQ0JDIiwiaW5iYXNlNjQiOmZhbHNlLCJrZXkiOiJmNWQ5NjVkZjc1MzM2MjcwIiwiaXYiOiI5N2I2MDM5NGFiYzJmYmUxIn0nOwogICAgICAgIGlucHV0ID0gZ2V0UHJveHlVcmwoKSArICcmdXJsPScgKyBpbnB1dDsKICAgIH0pLAogICAg5LqM57qnOiAiKiIsCiAgICDmkJzntKI6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBsZXQgdSA9IGlucHV0LnNwbGl0KCI/Iik7CiAgICAgICAgbGV0IGggPSBwb3N0KHVbMF0sIHsKICAgICAgICAgICAgYm9keTogdVsxXQogICAgICAgIH0pOwogICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShoKS5kYXRhLmxpc3Q7CgogICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgICAgbGV0IHBpYyA9IGl0ZW0udGh1bWI7CiAgICAgICAgICAgIGxldCB1cmwgPSBgJHtydWxlLmhvc3R9L2FyY2hpdmVzLyR7aXRlbS5pZH0uaHRtbGAKICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLAogICAgICAgICAgICAgICAgZGVzYzogaXRlbS5jcmVhdGVkX2RhdGUsCiAgICAgICAgICAgICAgICBpbWc6IHBpYywKICAgICAgICAgICAgICAgIHVybDogdXJsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pCn0=
\ No newline at end of file
diff --git a/drpy_js/黑木耳资源[资].js b/drpy_js/黑木耳资源[资].js
deleted file mode 100644
index 0a061eb..0000000
--- a/drpy_js/黑木耳资源[资].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/ytLLFIoKs1JVbBVqOZSAIJnKxY+m7vfSkH9ZXv7y9lthuo6YOGSzJKcVJDo7onP5qx40bD5xdaWZ7smRAOpWKiSjPziEqCKjJKSgmIrff3y8nK9jNTM3NLUIr2SMqgafX2gstzUkMwUoEpDY7hOmBBUIDmxJDU+tSI5pzQFZGnc8ylbn+7dqFIDYrxY3va0czmIvXvPi85dQMbTrhXP9qxWgeotSCwqTo0vLcqBGFcLAEfuq3jiAAAA
\ No newline at end of file
diff --git a/drpy_js/黑狐影院.js b/drpy_js/黑狐影院.js
deleted file mode 100644
index 76a203a..0000000
--- a/drpy_js/黑狐影院.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOSw++yJ8kLPZGH7bSG3+EXPZ1ZxpDiw+Y/hnLXhjkYrol4wPNMVOaHlSfos84fjU8M3kwee+55NEqqhXAUEj+olcSokm1FpMB31qa+ZYmv3X5Lo427o9ac16YJoItf2xxJrpiMGFX/K9RLoNC42xaYzBJrt9n2jIEZ1mejIDmq9oVrhjvynYeuA5rFwfcnNnKJAnL/F+u8tevTK21AZmT/Oa0O+s3qTOx7W9jQykPvhlA5xmUOzRv2n9PJovgX91Q15FeGH2yq71L9c8jKSFypXjSe4LxL0R00Z2zz9fUjSpg==
\ No newline at end of file
diff --git a/drpy_js/갖였hd.js b/drpy_js/갖였hd.js
deleted file mode 100644
index 7cee15c..0000000
--- a/drpy_js/갖였hd.js
+++ /dev/null
@@ -1 +0,0 @@
-dmFyIHJ1bGUgPSB7CiAgICAgICAgICAgIHRpdGxlOiAn54ix55yLaGQnLAogICAgICAgICAgICBob3N0OiAnaHR0cHM6Ly93d3cuYWlrYW5oZC52aXAnLAogICAgICAgICAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0vJywKICAgICAgICAgICAgc2VhcmNoVXJsOiAnL3Jzcy54bWw/d2Q9KionLAogICAgICAgICAgICBzZWFyY2hhYmxlOiAyLAogICAgICAgICAgICBxdWlja1NlYXJjaDogMCwKICAgICAgICAgICAgZmlsdGVyYWJsZTogMCwKICAgICAgICAgICAgZmlsdGVyOiAnJywKICAgICAgICAgICAgZmlsdGVyX3VybDogJycsCiAgICAgICAgICAgIGZpbHRlcl9kZWY6IHt9LAogICAgICAgICAgICBoZWFkZXJzOiB7CidVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjYuMC4wLjAgU2FmYXJpLzUzNy4zNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRpbWVvdXQ6IDUwMDAsCiAgICAgICAgICAgIGNsYXNzX3BhcnNlOiAndWwudG9wLWJhci1tZW51JiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKFxcZCspLycsCiAgICAgICAgICAgIGNhdGVfZXhjbHVkZTogJ+eIseeci+WKqOa8q+WFrOWRinzkvKbnkIbliacnLAogICAgICAgICAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgICAgICAgICBsYXp5OiBganM6aW5wdXQgPSB7cGFyc2U6IDEsIHVybDogaW5wdXQsIGpzOiAnJ31gLAogICAgICAgICAgICBkb3VibGU6IHRydWUsCiAgICAgICAgICAgIOaOqOiNkDogJyonLAogICAgICAgICAgICDkuIDnuqc6ICdib2R5JiYudmlkZW8tY29udGVudC1pdGVtOy50ZXh0LW92ZXJmbG93JiZUZXh0Oy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsudmlkZW8tdGl0bGUmJlRleHQ7YSYmaHJlZjsudGV4dC1tdXRlZCYmVGV4dCcsCiAgICAgICAgICAgIOS6jOe6pzogewogICAgICAgICAgICAgICAgdGl0bGU6ICdoMSYmVGV4dDsuZXdhdmUtY29sbGFwc2UtaXRlbSYmbGkmJlRleHQnLAogICAgICAgICAgICAgICAgaW1nOiAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJywKICAgICAgICAgICAgICAgIGRlc2M6ICcuZXdhdmUtY29sbGFwc2UtaXRlbSYmbGk6ZXEoMSkmJlRleHQ7LnJvdzplcSgyKSYmbGk6ZXEoMSkmJlRleHQ7LnJvdzplcSgyKSYmbGkmJlRleHQ7LmRldGFpbC1pbmZvLXRleHQmJnAmJlRleHQ7LmV3YXZlLWNvbGxhcHNlLWl0ZW0mJnAmJlRleHQnLAogICAgICAgICAgICAgICAgY29udGVudDogJy5tYi0wOmVxKC0xKSYmVGV4dCcsCiAgICAgICAgICAgICAgICB0YWJzOiAnLmV3YXZlLXBsYXlsaXN0LXRhYiBhJywKICAgICAgICAgICAgICAgIGxpc3RzOiAnLmV3YXZlLXBsYXlsaXN0LWNvbnRlbnQ6ZXEoI2lkKSYmbGknLAogICAgICAgICAgICB9LAogICAgICAgICAgICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBpdGVtcyA9IHBkZmEoaHRtbCwgJ3JzcyYmaXRlbScpOwogICAgICAgIC8vIGxvZyhpdGVtcyk7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgaXQgPSBpdC5yZXBsYWNlKC90aXRsZXxsaW5rfGF1dGhvcnxwdWJkYXRlfGRlc2NyaXB0aW9uL2csICdwJyk7CiAgICAgICAgICAgIGxldCB1cmwgPSBwZGZoKGl0LCAncDplcSgxKSYmVGV4dCcpOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsICdwJiZUZXh0JyksCiAgICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsICdwOmVxKDMpJiZUZXh0JyksCiAgICAgICAgICAgICAgICBjb250ZW50OiBwZGZoKGl0LCAncDplcSgyKSYmVGV4dCcpLAogICAgICAgICAgICAgICAgcGljX3VybDogIiIsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAogICAgICAgIH0=
\ No newline at end of file
diff --git a/drpy_js/갖였똬양[턍].js b/drpy_js/갖였똬양[턍].js
deleted file mode 100644
index 970674a..0000000
--- a/drpy_js/갖였똬양[턍].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAC0soWYC/41STWsTQRi++yuGUNy21mxy8LJLlFo9CBUPJSeR8Lo76U46++HMu9LVFARRlPqRgwehpQUPJqCigR601X/TzcZ/4ezOROIh4JyW5+Pd53lnHoIgIuWUtMjjC0SdYnyWH+07xMp/jafD59aabeuvfj74fP7jY3/y81Px7qyff3s7/XpSWZAhp8pRvBgXh/vF8Zf85fBucfD+nrVW8UEsUdEBYiId285kvdlsYN2L7L+CkLYFVxobEmZDD3brSZBcAw9bgnpxGNLI/w/tDWA8M7p0gaabeRykNCpJQXjBonmavRhBSFurq/9Y4H5ZuamhBynzdrYq3CENjXUZRyq0zEABBZ8K6ZhNl8dqSyour2/TCC0V4fad67c2b3ba6+Zfe8bIdqjYZBI3YhW0hnQXO83aHLdRVlogQBbSOFUXcKXRMEGqDXTKWuU9Pxv9fjqy5hm9u4xF2zJgXI01bMIh6yQgpPKhSKlGOTzKHLLUk3WMt1Ao1/LyCmldnavJoiRF9cRqSSoD9QRq5JLGXF1zRU/y47TaVxe4NMMnb0bT1wOVZrb+8+9PitOhAnoyjhwfENyyiOuC75dVXRV+Jj19paUz72RwWJx8MMDeHxThd5T7AgAA
\ No newline at end of file
diff --git a/drpy_js/똬양瞳窟.js b/drpy_js/똬양瞳窟.js
deleted file mode 100644
index dbe980e..0000000
--- a/drpy_js/똬양瞳窟.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/양것것.js b/drpy_js/양것것.js
deleted file mode 100644
index 73432c3..0000000
--- a/drpy_js/양것것.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/양섞TV.js b/drpy_js/양섞TV.js
deleted file mode 100644
index 48f32da..0000000
--- a/drpy_js/양섞TV.js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAC0soWYC/61TwW7UMBC98xWRkNJN1CSllB6yQog/qEThuprNOhsXx0ntydIFKnFCQirVag9waC9wYHup1EocoPxOybZ/ge24KN3ugQO+JH7z3szzjD0C4YiKEeex8+aeoxZSZCR2Vn5/mF0fvd9+sbJq4KyQqNAMsZRxFI1CulPtUByFSWIZlWCKEMmseBWl44SBlIFd6biEIVE/YYY5s3xJQCTZc6Nq/iPfD4J/0EBfO1xvoN2KJi+fGTx21hospQyJaGgWMn56JQipDxdyGAV9EEFOeOUw2gXX3SZ7qL+ZIGk39KNO6D/x2sUTQNIjewmrBqZBJ+eXPyf1p7Prz7/e1ofTqy8H9bdjyy0ZjG+qoahIgzJ4PVZKy2E0p6qnm82uPjy5+jhRUd+GL3+8m1/MtNk8YFRiQDknwpo1U+rSfOi6A0AICkGHlAPrhphVeX/hNGWzv0l8cWASN/Nuzzx7YIUh5SgK1y1jsttZ827J9VKFtTHd+wUDLdKAyESz2rk2vWUV1peiD5eij5aiG3c9JgVHwtE4QJIH2o7qYVrcYSL0pb0Urgu3A62BP93ams+m9fS0xdCDMVr9GsyYtJv7dKD8QMwL7MTaB1AuO3/1nreQode8HTsuG9y392JyPP/+9T9fg/0/B+TGrPcDAAA=
\ No newline at end of file
diff --git a/drpy_js/양촬.js b/drpy_js/양촬.js
deleted file mode 100644
index 4f58d6c..0000000
--- a/drpy_js/양촬.js
+++ /dev/null
@@ -1 +0,0 @@
-qz2VfkB3O9fqiff5MjJa/ASdotKRYPNu8cLtwdABO3MDeyNp8SITwKEVrcmMRsD6s0DQiKXK91uXHy81Bhzh8xPZzDl/A9cOXQrBxH+Qn2Zl2eNL3Ogzx+kAqZMq7TDGW7Ndfho+4VAcQyAx6N07mAlW7fQJ1OyPHoh6N6d8fVOWOuNt6OC4A33+fTNN4LG/q/XFLtl36zoiB91RSan78yoe9aF22BQQ01lcOoaLkNU/Xo1WjNmDpUoxU636Gq2/XCZvTntOUeLK3C/STS7Lz+6dluVo0GnwUURaXL7gNR38fEglQqZY3FWrKfeeL93sbH7mvT+Uxk+l0Qy4iV2UL5HM/s8pWVCsa/NbKoHNvgid/QPZ+R+ndB22I2f49WtUmVex6ORVqKkjql+vWn5YM/OHxuUGMWjS0eyRUNQf2Y5+OY2ZrS264voFFE8dIGgntpJzleO5Z+svqdv9KqOTGfnDIkuqZU2owc5MBPJaX0jPht5t8Wkplht0wxQrLcLw/d7kCClFVHuSd1mrkQrrLg==
\ No newline at end of file
diff --git a/drpy_js/양홀홀.js b/drpy_js/양홀홀.js
deleted file mode 100644
index fbb26a0..0000000
--- a/drpy_js/양홀홀.js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/유궝[턍].js b/drpy_js/유궝[턍].js
deleted file mode 100644
index 1cb829b..0000000
--- a/drpy_js/유궝[턍].js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/있꿇TV[쵱].js b/drpy_js/있꿇TV[쵱].js
deleted file mode 100644
index b1e097e..0000000
--- a/drpy_js/있꿇TV[쵱].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAAAAAAAAA31TS2/TQBC++1dYIDlxmngTFaRiN1RF4gACcaDhQlG6tcfxputHves8KJHoEYlCeJ4qgbjQC+LCAQqif6ZN2hs/gVk7KQcQB6/nm/1mvt2Z2R5N9TTjoDf1HY1mMohTWy+dfX9x8vzz8bdxqapJJjmgD9Hp3pO1e+gKYiHRE0iZCJuQfr9vcXBp3LBknMz2bwpkKBuoBymCnVJLQFpb7UAkS7h3+861G7eut1urpVFVm/54O32/i95M+rWlXDWEOEOVy/V6vaphyhBaKUcGwd2ssFjkwcBKgoT0Yo/IYQKEecQfupwKQRLaAQTqZwUy5BjngaSMt/4VnXA6LKJxEfg1SKTWeagAmrrBX6G0SwdEZJ0OCLkSMq/ZMPpes1IxlGyzUDc4C5lsLtbP09BNVdJGVde2M+Zu3c2dhcNnXEL6h6Dll2knNBWqCxdDiLJa7Ps1l0Y9KmoK65w51DDyTikjSMF3SHl93VswUdOlEtowcHnmQdGUQqTtgY99wfJrkm62U4hoCKpRZ7uvzt4cnewfTA+PVKt+vRsfFmjy8tPk9U/VMVWv+alkmgF6FGgXrfn3aJDugKwgoYlH4PTh0NY3usLWOEh9y409aHZFYiWeH5RT2M6womUWJZk0rZBKNyiTZeaneMSyVVkxl0kBrhLzfuOB6RRZVPI81TxEOXL++oWc6GjM18skXMyWHoXJJWJJJaPiTBNfQK6n3oLeHdh6varPbohWfjFF1EfaSAcu4D/8xoyvnpZ1XpiFefgGljwfClu/glMZZ3m7fYpJq9rk2cHp3hiLWMEyHX99PD38iMDqMQ9ih4Udw6BcFoZHJa3FKeuwiHLHwjlmtS7IhLpbtR6DvjCMNRhIh9qwXa6bxWSorIdPi6xKYjLen375gKAr4sjmTEhHDYKTMNeByGEecmYTo6ZFG/0GXSBjrDQEAAA=
\ No newline at end of file
diff --git a/drpy_js/🎒📌央视大全[🎒] .js b/drpy_js/🎒📌央视大全[🎒] .js
deleted file mode 100644
index a8792b6..0000000
--- a/drpy_js/🎒📌央视大全[🎒] .js
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/drpy_js/🤡星芽短剧[🤡].js b/drpy_js/🤡星芽短剧[🤡].js
deleted file mode 100644
index 056edcf..0000000
--- a/drpy_js/🤡星芽短剧[🤡].js
+++ /dev/null
@@ -1 +0,0 @@
-H4sIAIioBmcC/71X6YvjyBX/vn+F0ll8xG1bkuWrm87idvu+b7dDMDpKVtmlw1LJlj0MLCwbmCQfckAYkiULgTAfsgtZkg/LJPPfTE/v/Bdbkuxpe7pndghLCoyl93717nr1tOJNyrQRoC6oRx9RZN1+85+bv/7mjArevPjmu2e/Cp56VAwxAoT46umX3/36xe2XX988ecYbxo6r6BYmTAVjwzqLxwkjtlbm27kTE7UdxDYRQcRFpNtSfMXGsQJ4DEx5I0NE/nco/2XqgoNxRVfB1OBn4JMdeCoi3rKmULqQN95jAG8McMEEHj2SUcx9pnSTOvFYLIFZF/TJ48cBV8RUs1Wyy3303y24BRcst9NrAd4UlYFv4yoR99+PmLzgBoD1SUsbioueRz+jmEPbfRhzSvnrgHMWLHNWJbdfqZU6mOXy1UED1bih3rhsFJZ2wbJKXZaHw85oqS4seDnsdaRhDWacpjNYZBPbeXopb21cRBunuu2hZrffmNi5TIVbFFF7xICMUExdThQh36/me8nqtsCptXmksRlcI+uq2nEYPFH4jKQlLE1b0Q7TdJqG1jGL2X7cHq+Kc7G3dLKG0heyaWe1TrYlyEQsvjwf9es9rBhdIZJy5s6qhTIcZOjKfCOWExO6PYH00ID1fk9rF51xWos45vVKL9TG4nopZYVBPN10StIgr7VLvQi71WBKnMe7g5FSApOcrcmAnmzlbhHVQK8YYbPblNwwstf5lDZb99BWWyaFTs3JOpYwqJWcyna1LQ0bM0HuMW3JqUgLkR90I716vs+0mQyNmEW1vrEZU5UVK58tITVd6Drd6wgrjKpKfkY3+L6obBvEGFwws1VnpMJLp88NFsOZPWwXr02k5zLlZVPU1m6+LoL7bPrpJMUoAdM62x0Yd52MoznDiFakkzPqJH1yesfI2VjRTbjlMdQ1lws2VUUoibAFq5XBtsI0YcWqaN2kmK+kKgtjPMxXszECQqCcg615IdGYXzuN/oAm/1YFDbeTcbU6IeDm1TXX6necxpUroIomLNpKpeFmnOgawmhAFFQ2hEfX+zmm3q+wlatCsjWvkF+DqcA15MdNWRhlIT9y0JitGoLagS2V1E65ieRObFazxuvezO4kBKz2m93LqDhcJweovqhpuag4mWqSpBWyCytBH/prIB7Luqm6rjKHDJXXbJkXsW0C02WOIa+r8BCxIkElQZpqvApcRCLGxujYkRDbIl2AHF8Nu4CGvoUI8fFkjKZCdajZzjmV0yRThxLFMOdUg6UZtsbQeerShkiKd9tMLsbSdJqlY7QLWK/CFMkbAiMg1CCOJxPpWCJFhWrlfqN+SiG4AFQJiAs9TA194+Ic0ZVXTNKa4pk0MY9jM8RGjqEaugBJG+3xMm/CnaRD0yWwmmJ9AbwiuLxm1sWJxNXo1dVyO2wIuDxuqqjDZvVVK2mAXrJhTdLDMWN2BuOrdW5pLZxFFcN2Y5IvzFMNfhTlaKepCSuNYYupjFYv5BqLrn6VxoYOQYvTFoNCtFRvXTvLvEU7qjOajXMKHU03VbWUL8Nssoc2E2SUAcRZripX2wtDjyqIqxZNm10PKlGuTefWV2Ly+meHXpDWPt3l6R0pIn5CkfTtgzrg/ZwclQmRoWs8Il1YmppA1FUVaNLUwjy2rXu1s5Ppdngv7/u8PoARTKLNBXWBdFxeunVoOXOkgLR3TQPIZUhA5m2ED7kmv56+H6Hz0FOa5bJchknzNMtnE1wieXQALH76ITjb9jGuI7o6GFSupnImLdKMmI4mpBQT5WQgREkLot1XiUtKLCfJ0gOx8OWwCYFOi3KGo8WMkABA5DNEmCwmUzIt0zydPdxp2Yahm3iqsKnkvTSUyTXv5fPwfj8E5HUSI3Hf6WoAGNEcgitw1BBFERg4WtBEXYLazAXOttA4hAzIKY/m9qdcX7hzBTl4DDm1Jx7q8X4oUYFuk8kjSdO0T/InBLeDuBPMk2c3XzwP3H729as/uANL4OV//3zz+6cvv/3jy+f/CJBR5vWnT27+/sLlvPrTP92/10//dfP5E39f8FCiP74wATaQCaQDiUByxyVlviEzimkRfdi0gU9F/HZzRn08t2JY72GTuBkKhamLnx/cGFAzbPxm6NovT43HOj2i7zTQb4iP/TiEfZik297YcWfBy28/vX3+7AdsQABTErHhF788p95ad3bKVOgnnkUxqInIloAVCt6bx5hgOEw9Otp46KS/3wQkWiIIBQ8HtAC5XIPB8PmdZ+dvm+CaqWAVEUEmWNrAwiFP4MEmzxMe8wRS7bWaMS9eIXdTOObSYwha+A7ukUh3KvCiEoL4OCp7edANzcMz7cEA6yafFGpcApiH6JNjqhuaIBWhII7tGDEonR9pkmKGbSmhY/V3pSCd3mPsRvEDmR7lPhCqsyOYqK/82fqU+oF1TxTJunisUgHqAyo3ZCQ+O4TpmEeR4Ou/7L8j3mQ5/NEDjxbAXWCR3hqSwkcF/vL5bz+snIl3ll/RP2b5vFU5O++s95aQa4mf2+DtV18FIyQq5BvEjwUpieDHu8Ig1+B0BSWgu5l5MCrD1tW9RrHSpV2X8y26XwEuwoDiDnCX+/sgt4XJZKIhDW7c9z/tgu+AeUXpeTbXoRYK/jQYfkdLevW7L27//bcPyNguNYa+z8vpW64KurQ5o+4fkBMMHPeCqBWuj0vroRi6mtwe8M4Gsa9Y/2Nvepx1d+f/uV/8qH3i/f3hHbXhXX66holdHgxq2NQl27ve/+fD/Ph70EavdnAQAAA=
\ No newline at end of file
diff --git a/drpy_libs/cheerio.min.js b/drpy_libs/cheerio.min.js
deleted file mode 100644
index 7d6375e..0000000
--- a/drpy_libs/cheerio.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var e,t=function(){return t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(e){this.children=e}}class g extends A{constructor(){super(...arguments),this.type=e.CDATA}get nodeType(){return 4}}class N extends A{constructor(){super(...arguments),this.type=e.Root}get nodeType(){return 9}}class C extends A{constructor(t,n,r=[],i=("script"===t?e.Script:"style"===t?e.Style:e.Tag)){super(r),this.name=t,this.attribs=n,this.type=i}get nodeType(){return 1}get tagName(){return this.name}set tagName(e){this.name=e}get attributes(){return Object.keys(this.attribs).map((e=>{var t,n;return{name:e,value:this.attribs[e],namespace:null===(t=this["x-attribsNamespace"])||void 0===t?void 0:t[e],prefix:null===(n=this["x-attribsPrefix"])||void 0===n?void 0:n[e]}}))}}function I(t){return(n=t).type===e.Tag||n.type===e.Script||n.type===e.Style;var n}function S(t){return t.type===e.CDATA}function b(t){return t.type===e.Text}function O(t){return t.type===e.Comment}function y(t){return t.type===e.Directive}function L(t){return t.type===e.Root}function k(e){return Object.prototype.hasOwnProperty.call(e,"children")}function v(e,t=!1){let n;if(b(e))n=new m(e.data);else if(O(e))n=new T(e.data);else if(I(e)){const r=t?D(e.children):[],i=new C(e.name,{...e.attribs},r);r.forEach((e=>e.parent=i)),null!=e.namespace&&(i.namespace=e.namespace),e["x-attribsNamespace"]&&(i["x-attribsNamespace"]={...e["x-attribsNamespace"]}),e["x-attribsPrefix"]&&(i["x-attribsPrefix"]={...e["x-attribsPrefix"]}),n=i}else if(S(e)){const r=t?D(e.children):[],i=new g(r);r.forEach((e=>e.parent=i)),n=i}else if(L(e)){const r=t?D(e.children):[],i=new N(r);r.forEach((e=>e.parent=i)),e["x-mode"]&&(i["x-mode"]=e["x-mode"]),n=i}else{if(!y(e))throw new Error(`Not implemented yet: ${e.type}`);{const t=new _(e.name,e.data);null!=e["x-name"]&&(t["x-name"]=e["x-name"],t["x-publicId"]=e["x-publicId"],t["x-systemId"]=e["x-systemId"]),n=t}}return n.startIndex=e.startIndex,n.endIndex=e.endIndex,null!=e.sourceCodeLocation&&(n.sourceCodeLocation=e.sourceCodeLocation),n}function D(e){const t=e.map((e=>v(e,!0)));for(let e=1;e$\x80-\uFFFF]/g,x=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),w=null!=String.prototype.codePointAt?(e,t)=>e.codePointAt(t):(e,t)=>55296==(64512&e.charCodeAt(t))?1024*(e.charCodeAt(t)-55296)+e.charCodeAt(t+1)-56320+65536:e.charCodeAt(t);function B(e){let t,n="",r=0;for(;null!==(t=P.exec(e));){const i=t.index,s=e.charCodeAt(i),a=x.get(s);void 0!==a?(n+=e.substring(r,i)+a,r=i+1):(n+=`${e.substring(r,i)}${w(e,i).toString(16)};`,r=P.lastIndex+=Number(55296==(64512&s)))}return n+e.substr(r)}function F(e,t){return function(n){let r,i=0,s="";for(;r=e.exec(n);)i!==r.index&&(s+=n.substring(i,r.index)),s+=t.get(r[0].charCodeAt(0)),i=r.index+1;return s+n.substring(i)}}const U=F(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),H=F(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])),G=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((e=>[e.toLowerCase(),e]))),Y=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((e=>[e.toLowerCase(),e]))),q=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function K(e){return e.replace(/"/g,""")}const j=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function V(e,t={}){const n="length"in e?e:[e];let r="";for(let e=0;e`;case c:return function(e){return`\x3c!--${e.data}--\x3e`}(e);case p:return function(e){return``}(e);case l:case h:case u:return function(e,t){var n;"foreign"===t.xmlMode&&(e.name=null!==(n=G.get(e.name))&&void 0!==n?n:e.name,e.parent&&Q.has(e.parent.name)&&(t={...t,xmlMode:!1}));!t.xmlMode&&X.has(e.name)&&(t={...t,xmlMode:"foreign"});let r=`<${e.name}`;const i=function(e,t){var n;if(!e)return;const r=!1===(null!==(n=t.encodeEntities)&&void 0!==n?n:t.decodeEntities)?K:t.xmlMode||"utf8"!==t.encodeEntities?B:U;return Object.keys(e).map((n=>{var i,s;const a=null!==(i=e[n])&&void 0!==i?i:"";return"foreign"===t.xmlMode&&(n=null!==(s=Y.get(n))&&void 0!==s?s:n),t.emptyAttrs||t.xmlMode||""!==a?`${n}="${r(a)}"`:n})).join(" ")}(e.attribs,t);i&&(r+=` ${i}`);0===e.children.length&&(t.xmlMode?!1!==t.selfClosingTags:t.selfClosingTags&&j.has(e.name))?(t.xmlMode||(r+=" "),r+="/>"):(r+=">",e.children.length>0&&(r+=V(e.children,t)),!t.xmlMode&&j.has(e.name)||(r+=`${e.name}>`));return r}(e,t);case a:return function(e,t){var n;let r=e.data||"";!1===(null!==(n=t.encodeEntities)&&void 0!==n?n:t.decodeEntities)||!t.xmlMode&&e.parent&&q.has(e.parent.name)||(r=t.xmlMode||"utf8"!==t.encodeEntities?B(r):H(r));return r}(e,t)}}const Q=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),X=new Set(["svg","math"]);function $(e,t){return V(e,t)}function z(e){return Array.isArray(e)?e.map(z).join(""):k(e)&&!O(e)?z(e.children):b(e)?e.data:""}function J(t){return Array.isArray(t)?t.map(J).join(""):k(t)&&(t.type===e.Tag||S(t))?J(t.children):b(t)?t.data:""}function Z(e){return k(e)?e.children:[]}function ee(e){return e.parent||null}function te(e){const t=ee(e);if(null!=t)return Z(t);const n=[e];let{prev:r,next:i}=e;for(;null!=r;)n.unshift(r),({prev:r}=r);for(;null!=i;)n.push(i),({next:i}=i);return n}function ne(e){let{next:t}=e;for(;null!==t&&!I(t);)({next:t}=t);return t}function re(e){let{prev:t}=e;for(;null!==t&&!I(t);)({prev:t}=t);return t}function ie(e){if(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.parent){const t=e.parent.children;t.splice(t.lastIndexOf(e),1)}}function se(e,t,n=!0,r=1/0){return Array.isArray(t)||(t=[t]),ae(e,t,n,r)}function ae(e,t,n,r){const i=[];for(const s of t){if(e(s)&&(i.push(s),--r<=0))break;if(n&&k(s)&&s.children.length>0){const t=ae(e,s.children,n,r);if(i.push(...t),r-=t.length,r<=0)break}}return i}function oe(e,t,n=!0){let r=null;for(let i=0;i0&&(r=oe(e,s.children,!0)))}return r}const ce={tag_name:e=>"function"==typeof e?t=>I(t)&&e(t.name):"*"===e?I:t=>I(t)&&t.name===e,tag_type:e=>"function"==typeof e?t=>e(t.type):t=>t.type===e,tag_contains:e=>"function"==typeof e?t=>b(t)&&e(t.data):t=>b(t)&&t.data===e};function le(e,t){return"function"==typeof t?n=>I(n)&&t(n.attribs[e]):n=>I(n)&&n.attribs[e]===t}function he(e,t){return n=>e(n)||t(n)}function ue(e){const t=Object.keys(e).map((t=>{const n=e[t];return Object.prototype.hasOwnProperty.call(ce,t)?ce[t](n):le(t,n)}));return 0===t.length?null:t.reduce(he)}function pe(e,t,n=!0,r=1/0){return se(ce.tag_name(e),t,n,r)}var fe;function de(e,t){const n=[],r=[];if(e===t)return 0;let i=k(e)?e:e.parent;for(;i;)n.unshift(i),i=i.parent;for(i=k(t)?t:t.parent;i;)r.unshift(i),i=i.parent;const s=Math.min(n.length,r.length);let a=0;for(;ac.indexOf(h)?o===t?fe.FOLLOWING|fe.CONTAINED_BY:fe.FOLLOWING:o===e?fe.PRECEDING|fe.CONTAINS:fe.PRECEDING}function Ee(e){return(e=e.filter(((e,t,n)=>!n.includes(e,t+1)))).sort(((e,t)=>{const n=de(e,t);return n&fe.PRECEDING?-1:n&fe.FOLLOWING?1:0})),e}!function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"}(fe||(fe={}));const me=["url","type","lang"],Te=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function _e(e){return pe("media:content",e).map((e=>{const{attribs:t}=e,n={medium:t.medium,isDefault:!!t.isDefault};for(const e of me)t[e]&&(n[e]=t[e]);for(const e of Te)t[e]&&(n[e]=parseInt(t[e],10));return t.expression&&(n.expression=t.expression),n}))}function Ae(e,t){return pe(e,t,!0,1)[0]}function ge(e,t,n=!1){return z(pe(e,t,n,1)).trim()}function Ne(e,t,n,r,i=!1){const s=ge(n,r,i);s&&(e[t]=s)}function Ce(e){return"rss"===e||"feed"===e||"rdf:RDF"===e}var Ie,Se=Object.freeze({__proto__:null,isTag:I,isCDATA:S,isText:b,isComment:O,isDocument:L,hasChildren:k,getOuterHTML:$,getInnerHTML:function(e,t){return k(e)?e.children.map((e=>$(e,t))).join(""):""},getText:function e(t){return Array.isArray(t)?t.map(e).join(""):I(t)?"br"===t.name?"\n":e(t.children):S(t)?e(t.children):b(t)?t.data:""},textContent:z,innerText:J,getChildren:Z,getParent:ee,getSiblings:te,getAttributeValue:function(e,t){var n;return null===(n=e.attribs)||void 0===n?void 0:n[t]},hasAttrib:function(e,t){return null!=e.attribs&&Object.prototype.hasOwnProperty.call(e.attribs,t)&&null!=e.attribs[t]},getName:function(e){return e.name},nextElementSibling:ne,prevElementSibling:re,removeElement:ie,replaceElement:function(e,t){const n=t.prev=e.prev;n&&(n.next=t);const r=t.next=e.next;r&&(r.prev=t);const i=t.parent=e.parent;if(i){const n=i.children;n[n.lastIndexOf(e)]=t,e.parent=null}},appendChild:function(e,t){if(ie(t),t.next=null,t.parent=e,e.children.push(t)>1){const n=e.children[e.children.length-2];n.next=t,t.prev=n}else t.prev=null},append:function(e,t){ie(t);const{parent:n}=e,r=e.next;if(t.next=r,t.prev=e,e.next=t,t.parent=n,r){if(r.prev=t,n){const e=n.children;e.splice(e.lastIndexOf(r),0,t)}}else n&&n.children.push(t)},prependChild:function(e,t){if(ie(t),t.parent=e,t.prev=null,1!==e.children.unshift(t)){const n=e.children[1];n.prev=t,t.next=n}else t.next=null},prepend:function(e,t){ie(t);const{parent:n}=e;if(n){const r=n.children;r.splice(r.indexOf(e),0,t)}e.prev&&(e.prev.next=t),t.parent=n,t.prev=e.prev,t.next=e,e.prev=t},filter:se,find:ae,findOneChild:function(e,t){return t.find(e)},findOne:oe,existsOne:function e(t,n){return n.some((n=>I(n)&&(t(n)||n.children.length>0&&e(t,n.children))))},findAll:function(e,t){var n;const r=[],i=t.filter(I);let s;for(;s=i.shift();){const t=null===(n=s.children)||void 0===n?void 0:n.filter(I);t&&t.length>0&&i.unshift(...t),e(s)&&r.push(s)}return r},testElement:function(e,t){const n=ue(e);return!n||n(t)},getElements:function(e,t,n,r=1/0){const i=ue(e);return i?se(i,t,n,r):[]},getElementById:function(e,t,n=!0){return Array.isArray(t)||(t=[t]),oe(le("id",e),t,n)},getElementsByTagName:pe,getElementsByTagType:function(e,t,n=!0,r=1/0){return se(ce.tag_type(e),t,n,r)},removeSubsets:function(e){let t=e.length;for(;--t>=0;){const n=e[t];if(t>0&&e.lastIndexOf(n,t-1)>=0)e.splice(t,1);else for(let r=n.parent;r;r=r.parent)if(e.includes(r)){e.splice(t,1);break}}return e},get DocumentPosition(){return fe},compareDocumentPosition:de,uniqueSort:Ee,getFeed:function(e){const t=Ae(Ce,e);return t?"feed"===t.name?function(e){var t;const n=e.children,r={type:"atom",items:pe("entry",n).map((e=>{var t;const{children:n}=e,r={media:_e(n)};Ne(r,"id","id",n),Ne(r,"title","title",n);const i=null===(t=Ae("link",n))||void 0===t?void 0:t.attribs.href;i&&(r.link=i);const s=ge("summary",n)||ge("content",n);s&&(r.description=s);const a=ge("updated",n);return a&&(r.pubDate=new Date(a)),r}))};Ne(r,"id","id",n),Ne(r,"title","title",n);const i=null===(t=Ae("link",n))||void 0===t?void 0:t.attribs.href;i&&(r.link=i);Ne(r,"description","subtitle",n);const s=ge("updated",n);s&&(r.updated=new Date(s));return Ne(r,"author","email",n,!0),r}(t):function(e){var t,n;const r=null!==(n=null===(t=Ae("channel",e.children))||void 0===t?void 0:t.children)&&void 0!==n?n:[],i={type:e.name.substr(0,3),id:"",items:pe("item",e.children).map((e=>{const{children:t}=e,n={media:_e(t)};Ne(n,"id","guid",t),Ne(n,"title","title",t),Ne(n,"link","link",t),Ne(n,"description","description",t);const r=ge("pubDate",t);return r&&(n.pubDate=new Date(r)),n}))};Ne(i,"title","title",r),Ne(i,"link","link",r),Ne(i,"description","description",r);const s=ge("lastBuildDate",r);s&&(i.updated=new Date(s));return Ne(i,"author","managingEditor",r,!0),i}(t):null}}),be="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function Oe(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)t.push(n);return t}function ye(e,t){if(e.forEach)return e.forEach(t);for(var n=0;n1&&c.shift(),this._hasParentSelector=null;const l=this._trace(c,t,["$"],i,s,n).filter((function(e){return e&&!e.isParentSelector}));return l.length?o||1!==l.length||l[0].hasArrExpr?l.reduce(((e,t)=>{const n=this._getPreferredOutput(t);return a&&Array.isArray(n)?e=e.concat(n):e.push(n),e}),[]):this._getPreferredOutput(l[0]):o?[]:void 0},He.prototype._getPreferredOutput=function(e){const t=this.currResultType;switch(t){case"all":{const t=Array.isArray(e.path)?e.path:He.toPathArray(e.path);return e.pointer=He.toPointer(t),e.path="string"==typeof e.path?e.path:He.toPathString(e.path),e}case"value":case"parent":case"parentProperty":return e[t];case"path":return He.toPathString(e[t]);case"pointer":return He.toPointer(e.path);default:throw new TypeError("Unknown result type")}},He.prototype._handleCallback=function(e,t,n){if(t){const r=this._getPreferredOutput(e);e.path="string"==typeof e.path?e.path:He.toPathString(e.path),t(r,n,e)}},He.prototype._trace=function(e,t,n,r,i,s,a,o){let c;if(!e.length)return c={path:n,value:t,parent:r,parentProperty:i,hasArrExpr:a},this._handleCallback(c,s,"value"),c;const l=e[0],h=e.slice(1),u=[];function p(e){Array.isArray(e)?e.forEach((e=>{u.push(e)})):u.push(e)}if(("string"!=typeof l||o)&&t&&we.call(t,l))p(this._trace(h,t[l],Be(n,l),t,l,s,a));else if("*"===l)this._walk(t,(e=>{p(this._trace(h,t[e],Be(n,e),t,e,s,!0,!0))}));else if(".."===l)p(this._trace(h,t,n,r,i,s,a)),this._walk(t,(r=>{"object"==typeof t[r]&&p(this._trace(e.slice(),t[r],Be(n,r),t,r,s,!0))}));else{if("^"===l)return this._hasParentSelector=!0,{path:n.slice(0,-1),expr:h,isParentSelector:!0};if("~"===l)return c={path:Be(n,l),value:i,parent:r,parentProperty:null},this._handleCallback(c,s,"property"),c;if("$"===l)p(this._trace(h,t,n,null,null,s,a));else if(/^(-?\d*):(-?\d*):?(\d*)$/u.test(l))p(this._slice(l,h,t,n,r,i,s));else if(0===l.indexOf("?(")){if(this.currPreventEval)throw new Error("Eval [?(expr)] prevented in JSONPath expression.");const e=l.replace(/^\?\((.*?)\)$/u,"$1");this._walk(t,(a=>{this._eval(e,t[a],a,n,r,i)&&p(this._trace(h,t[a],Be(n,a),t,a,s,!0))}))}else if("("===l[0]){if(this.currPreventEval)throw new Error("Eval [(expr)] prevented in JSONPath expression.");p(this._trace(Fe(this._eval(l,t,n[n.length-1],n.slice(0,-1),r,i),h),t,n,r,i,s,a))}else if("@"===l[0]){let e=!1;const a=l.slice(1,-2);switch(a){case"scalar":t&&["object","function"].includes(typeof t)||(e=!0);break;case"boolean":case"string":case"undefined":case"function":typeof t===a&&(e=!0);break;case"integer":!Number.isFinite(t)||t%1||(e=!0);break;case"number":Number.isFinite(t)&&(e=!0);break;case"nonFinite":"number"!=typeof t||Number.isFinite(t)||(e=!0);break;case"object":t&&typeof t===a&&(e=!0);break;case"array":Array.isArray(t)&&(e=!0);break;case"other":e=this.currOtherTypeCallback(t,n,r,i);break;case"null":null===t&&(e=!0);break;default:throw new TypeError("Unknown value type "+a)}if(e)return c={path:n,value:t,parent:r,parentProperty:i},this._handleCallback(c,s,"value"),c}else if("`"===l[0]&&t&&we.call(t,l.slice(1))){const e=l.slice(1);p(this._trace(h,t[e],Be(n,e),t,e,s,a,!0))}else if(l.includes(",")){const e=l.split(",");for(const a of e)p(this._trace(Fe(a,h),t,n,r,i,s,!0))}else!o&&t&&we.call(t,l)&&p(this._trace(h,t[l],Be(n,l),t,l,s,a,!0))}if(this._hasParentSelector)for(let e=0;e{t(e)}))},He.prototype._slice=function(e,t,n,r,i,s,a){if(!Array.isArray(n))return;const o=n.length,c=e.split(":"),l=c[2]&&Number.parseInt(c[2])||1;let h=c[0]&&Number.parseInt(c[0])||0,u=c[1]&&Number.parseInt(c[1])||o;h=h<0?Math.max(0,h+o):Math.min(o,h),u=u<0?Math.max(0,u+o):Math.min(o,u);const p=[];for(let e=h;e{p.push(e)}))}return p},He.prototype._eval=function(e,t,n,r,i,s){this.currSandbox._$_parentProperty=s,this.currSandbox._$_parent=i,this.currSandbox._$_property=n,this.currSandbox._$_root=this.json,this.currSandbox._$_v=t;const a=e.includes("@path");a&&(this.currSandbox._$_path=He.toPathString(r.concat([n])));const o="script:"+e;if(!He.cache[o]){let t=e.replace(/@parentProperty/gu,"_$_parentProperty").replace(/@parent/gu,"_$_parent").replace(/@property/gu,"_$_property").replace(/@root/gu,"_$_root").replace(/@([.\s)[])/gu,"_$_v$1");a&&(t=t.replace(/@path/gu,"_$_path")),He.cache[o]=new this.vm.Script(t)}try{return He.cache[o].runInNewContext(this.currSandbox)}catch(t){throw new Error("jsonPath: "+t.message+": "+e)}},He.cache={},He.toPathString=function(e){const t=e,n=t.length;let r="$";for(let e=1;e":">"},i=/[&"'<>]/g,s=e.exports={};function a(e,t){return n.hasOwnProperty.call(e,t)}function o(e){return r[e]}function c(e,t,n){var r,i,s;if(e instanceof Error&&(e=(i=e).name+": "+i.message),Object.setPrototypeOf?(r=new Error(e),Object.setPrototypeOf(r,c.prototype)):(r=this,Object.defineProperty(r,"message",{enumerable:!1,writable:!0,value:e})),Object.defineProperty(r,"name",{value:"Template render error"}),Error.captureStackTrace&&Error.captureStackTrace(r,this.constructor),i){var a=Object.getOwnPropertyDescriptor(i,"stack");(s=a&&(a.get||function(){return a.value}))||(s=function(){return i.stack})}else{var o=new Error(e).stack;s=function(){return o}}return Object.defineProperty(r,"stack",{get:function(){return s.call(r)}}),Object.defineProperty(r,"cause",{value:i}),r.lineno=t,r.colno=n,r.firstUpdate=!0,r.Update=function(e){var t="("+(e||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?t+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(t+=" [Line "+this.lineno+"]")),t+="\n ",this.firstUpdate&&(t+=" "),this.message=t+(this.message||""),this.firstUpdate=!1,this},r}function l(e){return"[object Function]"===n.toString.call(e)}function h(e){return"[object Array]"===n.toString.call(e)}function u(e){return"[object String]"===n.toString.call(e)}function p(e){return"[object Object]"===n.toString.call(e)}function f(e){var t=function(e){return e?"string"==typeof e?e.split("."):[e]:[]}(e);return function(e){for(var n=e,r=0;r1)for(var n=1;n0&&a.length>i){a.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=e,o.type=t,o.count=a.length,function(e){"function"==typeof console.warn?console.warn(e):console.log(e)}(o)}}else a=s[t]=n,++e._eventsCount;return e}function bt(e,t,n){var r=!1;function i(){e.removeListener(t,i),r||(r=!0,n.apply(e,arguments))}return i.listener=n,i}function Ot(e){var t=this._events;if(t){var n=t[e];if("function"==typeof n)return 1;if(n)return n.length}return 0}function yt(e,t){for(var n=new Array(t);t--;)n[t]=e[t];return n}function Lt(){var e;Tt.call(this),this.__emitError=(e=this,function(t){e.emit("error",t)})}function kt(){return new Lt}mt.prototype=Object.create(null),Tt.EventEmitter=Tt,Tt.usingDomains=!1,Tt.prototype.domain=void 0,Tt.prototype._events=void 0,Tt.prototype._maxListeners=void 0,Tt.defaultMaxListeners=10,Tt.init=function(){this.domain=null,Tt.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new mt,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Tt.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Tt.prototype.getMaxListeners=function(){return _t(this)},Tt.prototype.emit=function(e){var t,n,r,i,s,a,o,c="error"===e;if(a=this._events)c=c&&null==a.error;else if(!c)return!1;if(o=this.domain,c){if(t=arguments[1],!o){if(t instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=o,t.domainThrown=!1,o.emit("error",t),!1}if(!(n=a[e]))return!1;var h="function"==typeof n;switch(r=arguments.length){case 1:At(n,h,this);break;case 2:gt(n,h,this,arguments[1]);break;case 3:Nt(n,h,this,arguments[1],arguments[2]);break;case 4:Ct(n,h,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(r-1),s=1;s0;)if(n[s]===t||n[s].listener&&n[s].listener===t){a=n[s].listener,i=s;break}if(i<0)return this;if(1===n.length){if(n[0]=void 0,0==--this._eventsCount)return this._events=new mt,this;delete r[e]}else!function(e,t){for(var n=t,r=n+1,i=e.length;r0?Reflect.ownKeys(this._events):[]},("function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e})(Lt,Tt),Lt.prototype.add=function(e){e.on("error",this.__emitError)},Lt.prototype.remove=function(e){e.removeListener("error",this.__emitError)},Lt.prototype.bind=function(e){var t=this.__emitError;return function(){var n=Array.prototype.slice.call(arguments);try{e.apply(null,n)}catch(e){t(e)}}},Lt.prototype.intercept=function(e){var t=this.__emitError;return function(n){if(n)t(n);else{var r=Array.prototype.slice.call(arguments,1);try{e.apply(null,r)}catch(n){t(n)}}}},Lt.prototype.run=function(e){var t=this.__emitError;try{e()}catch(e){t(e)}return this},Lt.prototype.dispose=function(){return this.removeAllListeners(),this},Lt.prototype.enter=Lt.prototype.exit=function(){return this};var vt,Dt={Domain:Lt,createDomain:kt,create:kt},Rt="function"==typeof setImmediate,Mt=Pt;function Pt(e){xt.length||(Ut(),wt=!0),xt[xt.length]=e}var xt=[],wt=!1,Bt=0;function Ft(){for(;Bt1024){for(var t=0,n=xt.length-Bt;t=!".indexOf(r)){this.forward();var o,c=["==","===","!=","!==","<=",">=","//","**"],l=r+this.current();switch(-1!==je.indexOf(c,l)&&(this.forward(),r=l,-1!==je.indexOf(c,l+this.current())&&(r=l+this.current(),this.forward())),r){case"(":o="left-paren";break;case")":o="right-paren";break;case"[":o="left-bracket";break;case"]":o="right-bracket";break;case"{":o="left-curly";break;case"}":o="right-curly";break;case",":o="comma";break;case":":o="colon";break;case"~":o="tilde";break;case"|":o="pipe";break;default:o="operator"}return Kt(o,r,t,n)}if((e=this._extractUntil(" \n\t\r ()[]{}%*-+~/#,:|.<>=!")).match(/^[-+]?[0-9]+$/))return"."===this.current()?(this.forward(),Kt("float",e+"."+this._extract("0123456789"),t,n)):Kt("int",e,t,n);if(e.match(/^(true|false)$/))return Kt("boolean",e,t,n);if("none"===e)return Kt("none",e,t,n);if("null"===e)return Kt("none",e,t,n);if(e)return Kt("symbol",e,t,n);throw new Error("Unexpected value while parsing: "+e)}var h,u=this.tags.BLOCK_START.charAt(0)+this.tags.VARIABLE_START.charAt(0)+this.tags.COMMENT_START.charAt(0)+this.tags.COMMENT_END.charAt(0);if(this.isFinished())return null;if((e=this._extractString(this.tags.BLOCK_START+"-"))||(e=this._extractString(this.tags.BLOCK_START)))return this.in_code=!0,Kt("block-start",e,t,n);if((e=this._extractString(this.tags.VARIABLE_START+"-"))||(e=this._extractString(this.tags.VARIABLE_START)))return this.in_code=!0,Kt("variable-start",e,t,n);e="";var p=!1;for(this._matches(this.tags.COMMENT_START)&&(p=!0,e=this._extractString(this.tags.COMMENT_START));null!==(h=this._extractUntil(u));){if(e+=h,(this._matches(this.tags.BLOCK_START)||this._matches(this.tags.VARIABLE_START)||this._matches(this.tags.COMMENT_START))&&!p){if(this.lstripBlocks&&this._matches(this.tags.BLOCK_START)&&this.colno>0&&this.colno<=e.length){var f=e.slice(-this.colno);if(/^\s+$/.test(f)&&!(e=e.slice(0,-this.colno)).length)return this.nextToken()}break}if(this._matches(this.tags.COMMENT_END)){if(!p)throw new Error("unexpected end of comment");e+=this._extractString(this.tags.COMMENT_END);break}e+=this.current(),this.forward()}if(null===h&&p)throw new Error("expected end of comment, got end of file");return Kt(p?"comment":"data",e,t,n)},t._parseString=function(e){this.forward();for(var t="";!this.isFinished()&&this.current()!==e;){var n=this.current();if("\\"===n){switch(this.forward(),this.current()){case"n":t+="\n";break;case"t":t+="\t";break;case"r":t+="\r";break;default:t+=this.current()}this.forward()}else t+=n,this.forward()}return this.forward(),t},t._matches=function(e){return this.index+e.length>this.len?null:this.str.slice(this.index,this.index+e.length)===e},t._extractString=function(e){return this._matches(e)?(this.forwardN(e.length),e):null},t._extractUntil=function(e){return this._extractMatching(!0,e||"")},t._extract=function(e){return this._extractMatching(!1,e)},t._extractMatching=function(e,t){if(this.isFinished())return null;var n=t.indexOf(this.current());if(e&&-1===n||!e&&-1!==n){var r=this.current();this.forward();for(var i=t.indexOf(this.current());(e&&-1===i||!e&&-1!==i)&&!this.isFinished();)r+=this.current(),this.forward(),i=t.indexOf(this.current());return r}return""},t._extractRegex=function(e){var t=this.currentStr().match(e);return t?(this.forwardN(t[0].length),t):null},t.isFinished=function(){return this.index>=this.len},t.forwardN=function(e){for(var t=0;t2?i-2:0),a=2;a0||!n)&&Et.stdout.write(" ".repeat(t));var s=i===r.length-1?"":"\n";Et.stdout.write(""+e+s)}))}var hr={Node:on,Root:hn,NodeList:ln,Value:cn,Literal:un,Symbol:pn,Group:fn,Array:dn,Pair:En,Dict:mn,Output:Un,Capture:Hn,TemplateData:Gn,If:_n,IfAsync:An,InlineIf:gn,For:Nn,AsyncEach:Cn,AsyncAll:In,Macro:Sn,Caller:bn,Import:On,FromImport:yn,FunCall:Ln,Filter:kn,FilterAsync:vn,KeywordArgs:Dn,Block:Rn,Super:Mn,Extends:Pn,Include:xn,Set:wn,Switch:Bn,Case:Fn,LookupVal:Tn,BinOp:qn,In:Kn,Is:jn,Or:Vn,And:Wn,Not:Qn,Add:Xn,Concat:$n,Sub:zn,Mul:Jn,Div:Zn,FloorDiv:er,Mod:tr,Pow:nr,Neg:rr,Pos:ir,Compare:sr,CompareOperand:ar,CallExtension:or,CallExtensionAsync:cr,printNodes:function e(t,n){if(n=n||0,lr(t.typename+": ",n),t instanceof ln)lr("\n"),t.children.forEach((function(t){e(t,n+2)}));else if(t instanceof or)lr(t.extName+"."+t.prop+"\n"),t.args&&e(t.args,n+2),t.contentArgs&&t.contentArgs.forEach((function(t){e(t,n+2)}));else{var r=[],i=null;t.iterFields((function(e,t){e instanceof on?r.push([t,e]):(i=i||{})[t]=e})),i?lr(JSON.stringify(i,null,2)+"\n",null,!0):lr("\n"),r.forEach((function(t){var r=t[0],i=t[1];lr("["+r+"] =>",n+2),e(i,n+4)}))}}};function ur(e,t){return ur=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},ur(e,t)}hr.Node,hr.Root,hr.NodeList,hr.Value,hr.Literal,hr.Group,hr.Pair,hr.Dict,hr.Output,hr.Capture,hr.TemplateData,hr.If,hr.IfAsync,hr.InlineIf,hr.For,hr.AsyncEach,hr.AsyncAll,hr.Macro,hr.Caller,hr.Import,hr.FromImport,hr.FunCall,hr.Filter,hr.FilterAsync,hr.KeywordArgs,hr.Block,hr.Super,hr.Extends,hr.Include,hr.Switch,hr.Case,hr.LookupVal,hr.BinOp,hr.In,hr.Is,hr.Or,hr.And,hr.Not,hr.Add,hr.Concat,hr.Sub,hr.Mul,hr.Div,hr.FloorDiv,hr.Mod,hr.Pow,hr.Neg,hr.Pos,hr.Compare,hr.CompareOperand,hr.CallExtension,hr.CallExtensionAsync,hr.printNodes;var pr=function(e){var t,n;function r(){return e.apply(this,arguments)||this}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,ur(t,n);var i=r.prototype;return i.init=function(e){this.tokens=e,this.peeked=null,this.breakOnBlocks=null,this.dropLeadingWhitespace=!1,this.extensions=[]},i.nextToken=function(e){var t;if(this.peeked){if(e||this.peeked.type!==Vt.TOKEN_WHITESPACE)return t=this.peeked,this.peeked=null,t;this.peeked=null}if(t=this.tokens.nextToken(),!e)for(;t&&t.type===Vt.TOKEN_WHITESPACE;)t=this.tokens.nextToken();return t},i.peekToken=function(){return this.peeked=this.peeked||this.nextToken(),this.peeked},i.pushToken=function(e){if(this.peeked)throw new Error("pushToken: can only push one token on between reads");this.peeked=e},i.error=function(e,t,n){if(void 0===t||void 0===n){var r=this.peekToken()||{};t=r.lineno,n=r.colno}return void 0!==t&&(t+=1),void 0!==n&&(n+=1),new je.TemplateError(e,t,n)},i.fail=function(e,t,n){throw this.error(e,t,n)},i.skip=function(e){var t=this.nextToken();return!(!t||t.type!==e)||(this.pushToken(t),!1)},i.expect=function(e){var t=this.nextToken();return t.type!==e&&this.fail("expected "+e+", got "+t.type,t.lineno,t.colno),t},i.skipValue=function(e,t){var n=this.nextToken();return!(!n||n.type!==e||n.value!==t)||(this.pushToken(n),!1)},i.skipSymbol=function(e){return this.skipValue(Vt.TOKEN_SYMBOL,e)},i.advanceAfterBlockEnd=function(e){var t;return e||((t=this.peekToken())||this.fail("unexpected end of file"),t.type!==Vt.TOKEN_SYMBOL&&this.fail("advanceAfterBlockEnd: expected symbol token or explicit name to be passed"),e=this.nextToken().value),(t=this.nextToken())&&t.type===Vt.TOKEN_BLOCK_END?"-"===t.value.charAt(0)&&(this.dropLeadingWhitespace=!0):this.fail("expected block end in "+e+" statement"),t},i.advanceAfterVariableEnd=function(){var e=this.nextToken();e&&e.type===Vt.TOKEN_VARIABLE_END?this.dropLeadingWhitespace="-"===e.value.charAt(e.value.length-this.tokens.tags.VARIABLE_END.length-1):(this.pushToken(e),this.fail("expected variable end"))},i.parseFor=function(){var e,t,n=this.peekToken();if(this.skipSymbol("for")?(e=new hr.For(n.lineno,n.colno),t="endfor"):this.skipSymbol("asyncEach")?(e=new hr.AsyncEach(n.lineno,n.colno),t="endeach"):this.skipSymbol("asyncAll")?(e=new hr.AsyncAll(n.lineno,n.colno),t="endall"):this.fail("parseFor: expected for{Async}",n.lineno,n.colno),e.name=this.parsePrimary(),e.name instanceof hr.Symbol||this.fail("parseFor: variable name expected for loop"),this.peekToken().type===Vt.TOKEN_COMMA){var r=e.name;for(e.name=new hr.Array(r.lineno,r.colno),e.name.addChild(r);this.skip(Vt.TOKEN_COMMA);){var i=this.parsePrimary();e.name.addChild(i)}}return this.skipSymbol("in")||this.fail('parseFor: expected "in" keyword for loop',n.lineno,n.colno),e.arr=this.parseExpression(),this.advanceAfterBlockEnd(n.value),e.body=this.parseUntilBlocks(t,"else"),this.skipSymbol("else")&&(this.advanceAfterBlockEnd("else"),e.else_=this.parseUntilBlocks(t)),this.advanceAfterBlockEnd(),e},i.parseMacro=function(){var e=this.peekToken();this.skipSymbol("macro")||this.fail("expected macro");var t=this.parsePrimary(!0),n=this.parseSignature(),r=new hr.Macro(e.lineno,e.colno,t,n);return this.advanceAfterBlockEnd(e.value),r.body=this.parseUntilBlocks("endmacro"),this.advanceAfterBlockEnd(),r},i.parseCall=function(){var e=this.peekToken();this.skipSymbol("call")||this.fail("expected call");var t=this.parseSignature(!0)||new hr.NodeList,n=this.parsePrimary();this.advanceAfterBlockEnd(e.value);var r=this.parseUntilBlocks("endcall");this.advanceAfterBlockEnd();var i=new hr.Symbol(e.lineno,e.colno,"caller"),s=new hr.Caller(e.lineno,e.colno,i,t,r),a=n.args.children;return a[a.length-1]instanceof hr.KeywordArgs||a.push(new hr.KeywordArgs),a[a.length-1].addChild(new hr.Pair(e.lineno,e.colno,i,s)),new hr.Output(e.lineno,e.colno,[n])},i.parseWithContext=function(){var e=this.peekToken(),t=null;return this.skipSymbol("with")?t=!0:this.skipSymbol("without")&&(t=!1),null!==t&&(this.skipSymbol("context")||this.fail("parseFrom: expected context after with/without",e.lineno,e.colno)),t},i.parseImport=function(){var e=this.peekToken();this.skipSymbol("import")||this.fail("parseImport: expected import",e.lineno,e.colno);var t=this.parseExpression();this.skipSymbol("as")||this.fail('parseImport: expected "as" keyword',e.lineno,e.colno);var n=this.parseExpression(),r=this.parseWithContext(),i=new hr.Import(e.lineno,e.colno,t,n,r);return this.advanceAfterBlockEnd(e.value),i},i.parseFrom=function(){var e=this.peekToken();this.skipSymbol("from")||this.fail("parseFrom: expected from");var t=this.parseExpression();this.skipSymbol("import")||this.fail("parseFrom: expected import",e.lineno,e.colno);for(var n,r=new hr.NodeList;;){var i=this.peekToken();if(i.type===Vt.TOKEN_BLOCK_END){r.children.length||this.fail("parseFrom: Expected at least one import name",e.lineno,e.colno),"-"===i.value.charAt(0)&&(this.dropLeadingWhitespace=!0),this.nextToken();break}r.children.length>0&&!this.skip(Vt.TOKEN_COMMA)&&this.fail("parseFrom: expected comma",e.lineno,e.colno);var s=this.parsePrimary();if("_"===s.value.charAt(0)&&this.fail("parseFrom: names starting with an underscore cannot be imported",s.lineno,s.colno),this.skipSymbol("as")){var a=this.parsePrimary();r.addChild(new hr.Pair(s.lineno,s.colno,s,a))}else r.addChild(s);n=this.parseWithContext()}return new hr.FromImport(e.lineno,e.colno,t,r,n)},i.parseBlock=function(){var e=this.peekToken();this.skipSymbol("block")||this.fail("parseBlock: expected block",e.lineno,e.colno);var t=new hr.Block(e.lineno,e.colno);t.name=this.parsePrimary(),t.name instanceof hr.Symbol||this.fail("parseBlock: variable name expected",e.lineno,e.colno),this.advanceAfterBlockEnd(e.value),t.body=this.parseUntilBlocks("endblock"),this.skipSymbol("endblock"),this.skipSymbol(t.name.value);var n=this.peekToken();return n||this.fail("parseBlock: expected endblock, got end of file"),this.advanceAfterBlockEnd(n.value),t},i.parseExtends=function(){var e="extends",t=this.peekToken();this.skipSymbol(e)||this.fail("parseTemplateRef: expected extends");var n=new hr.Extends(t.lineno,t.colno);return n.template=this.parseExpression(),this.advanceAfterBlockEnd(t.value),n},i.parseInclude=function(){var e="include",t=this.peekToken();this.skipSymbol(e)||this.fail("parseInclude: expected include");var n=new hr.Include(t.lineno,t.colno);return n.template=this.parseExpression(),this.skipSymbol("ignore")&&this.skipSymbol("missing")&&(n.ignoreMissing=!0),this.advanceAfterBlockEnd(t.value),n},i.parseIf=function(){var e,t=this.peekToken();this.skipSymbol("if")||this.skipSymbol("elif")||this.skipSymbol("elseif")?e=new hr.If(t.lineno,t.colno):this.skipSymbol("ifAsync")?e=new hr.IfAsync(t.lineno,t.colno):this.fail("parseIf: expected if, elif, or elseif",t.lineno,t.colno),e.cond=this.parseExpression(),this.advanceAfterBlockEnd(t.value),e.body=this.parseUntilBlocks("elif","elseif","else","endif");var n=this.peekToken();switch(n&&n.value){case"elseif":case"elif":e.else_=this.parseIf();break;case"else":this.advanceAfterBlockEnd(),e.else_=this.parseUntilBlocks("endif"),this.advanceAfterBlockEnd();break;case"endif":e.else_=null,this.advanceAfterBlockEnd();break;default:this.fail("parseIf: expected elif, else, or endif, got end of file")}return e},i.parseSet=function(){var e=this.peekToken();this.skipSymbol("set")||this.fail("parseSet: expected set",e.lineno,e.colno);for(var t,n=new hr.Set(e.lineno,e.colno,[]);(t=this.parsePrimary())&&(n.targets.push(t),this.skip(Vt.TOKEN_COMMA)););return this.skipValue(Vt.TOKEN_OPERATOR,"=")?(n.value=this.parseExpression(),this.advanceAfterBlockEnd(e.value)):this.skip(Vt.TOKEN_BLOCK_END)?(n.body=new hr.Capture(e.lineno,e.colno,this.parseUntilBlocks("endset")),n.value=null,this.advanceAfterBlockEnd()):this.fail("parseSet: expected = or block end in set tag",e.lineno,e.colno),n},i.parseSwitch=function(){var e="switch",t="endswitch",n="case",r="default",i=this.peekToken();this.skipSymbol(e)||this.skipSymbol(n)||this.skipSymbol(r)||this.fail('parseSwitch: expected "switch," "case" or "default"',i.lineno,i.colno);var s=this.parseExpression();this.advanceAfterBlockEnd(e),this.parseUntilBlocks(n,r,t);var a,o=this.peekToken(),c=[];do{this.skipSymbol(n);var l=this.parseExpression();this.advanceAfterBlockEnd(e);var h=this.parseUntilBlocks(n,r,t);c.push(new hr.Case(o.line,o.col,l,h)),o=this.peekToken()}while(o&&o.value===n);switch(o.value){case r:this.advanceAfterBlockEnd(),a=this.parseUntilBlocks(t),this.advanceAfterBlockEnd();break;case t:this.advanceAfterBlockEnd();break;default:this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.')}return new hr.Switch(i.lineno,i.colno,s,c,a)},i.parseStatement=function(){var e=this.peekToken();if(e.type!==Vt.TOKEN_SYMBOL&&this.fail("tag name expected",e.lineno,e.colno),this.breakOnBlocks&&-1!==je.indexOf(this.breakOnBlocks,e.value))return null;switch(e.value){case"raw":return this.parseRaw();case"verbatim":return this.parseRaw("verbatim");case"if":case"ifAsync":return this.parseIf();case"for":case"asyncEach":case"asyncAll":return this.parseFor();case"block":return this.parseBlock();case"extends":return this.parseExtends();case"include":return this.parseInclude();case"set":return this.parseSet();case"macro":return this.parseMacro();case"call":return this.parseCall();case"import":return this.parseImport();case"from":return this.parseFrom();case"filter":return this.parseFilterStatement();case"switch":return this.parseSwitch();default:if(this.extensions.length)for(var t=0;t0;){var o=s[0],c=s[1],l=s[2];l===e?r+=1:l===t&&(r-=1),0===r?(i+=c,this.tokens.backN(o.length-c.length)):i+=o}return new hr.Output(a.lineno,a.colno,[new hr.TemplateData(a.lineno,a.colno,i)])},i.parsePostfix=function(e){for(var t,n=this.peekToken();n;){if(n.type===Vt.TOKEN_LEFT_PAREN)e=new hr.FunCall(n.lineno,n.colno,e,this.parseSignature());else if(n.type===Vt.TOKEN_LEFT_BRACKET)(t=this.parseAggregate()).children.length>1&&this.fail("invalid index"),e=new hr.LookupVal(n.lineno,n.colno,e,t.children[0]);else{if(n.type!==Vt.TOKEN_OPERATOR||"."!==n.value)break;this.nextToken();var r=this.nextToken();r.type!==Vt.TOKEN_SYMBOL&&this.fail("expected name as lookup value, got "+r.value,r.lineno,r.colno),t=new hr.Literal(r.lineno,r.colno,r.value),e=new hr.LookupVal(n.lineno,n.colno,e,t)}n=this.peekToken()}return e},i.parseExpression=function(){return this.parseInlineIf()},i.parseInlineIf=function(){var e=this.parseOr();if(this.skipSymbol("if")){var t=this.parseOr(),n=e;(e=new hr.InlineIf(e.lineno,e.colno)).body=n,e.cond=t,this.skipSymbol("else")?e.else_=this.parseOr():e.else_=null}return e},i.parseOr=function(){for(var e=this.parseAnd();this.skipSymbol("or");){var t=this.parseAnd();e=new hr.Or(e.lineno,e.colno,e,t)}return e},i.parseAnd=function(){for(var e=this.parseNot();this.skipSymbol("and");){var t=this.parseNot();e=new hr.And(e.lineno,e.colno,e,t)}return e},i.parseNot=function(){var e=this.peekToken();return this.skipSymbol("not")?new hr.Not(e.lineno,e.colno,this.parseNot()):this.parseIn()},i.parseIn=function(){for(var e=this.parseIs();;){var t=this.nextToken();if(!t)break;var n=t.type===Vt.TOKEN_SYMBOL&&"not"===t.value;if(n||this.pushToken(t),!this.skipSymbol("in")){n&&this.pushToken(t);break}var r=this.parseIs();e=new hr.In(e.lineno,e.colno,e,r),n&&(e=new hr.Not(e.lineno,e.colno,e))}return e},i.parseIs=function(){var e=this.parseCompare();if(this.skipSymbol("is")){var t=this.skipSymbol("not"),n=this.parseCompare();e=new hr.Is(e.lineno,e.colno,e,n),t&&(e=new hr.Not(e.lineno,e.colno,e))}return e},i.parseCompare=function(){for(var e=["==","===","!=","!==","<",">","<=",">="],t=this.parseConcat(),n=[];;){var r=this.nextToken();if(!r)break;if(-1===e.indexOf(r.value)){this.pushToken(r);break}n.push(new hr.CompareOperand(r.lineno,r.colno,this.parseConcat(),r.value))}return n.length?new hr.Compare(n[0].lineno,n[0].colno,t,n):t},i.parseConcat=function(){for(var e=this.parseAdd();this.skipValue(Vt.TOKEN_TILDE,"~");){var t=this.parseAdd();e=new hr.Concat(e.lineno,e.colno,e,t)}return e},i.parseAdd=function(){for(var e=this.parseSub();this.skipValue(Vt.TOKEN_OPERATOR,"+");){var t=this.parseSub();e=new hr.Add(e.lineno,e.colno,e,t)}return e},i.parseSub=function(){for(var e=this.parseMul();this.skipValue(Vt.TOKEN_OPERATOR,"-");){var t=this.parseMul();e=new hr.Sub(e.lineno,e.colno,e,t)}return e},i.parseMul=function(){for(var e=this.parseDiv();this.skipValue(Vt.TOKEN_OPERATOR,"*");){var t=this.parseDiv();e=new hr.Mul(e.lineno,e.colno,e,t)}return e},i.parseDiv=function(){for(var e=this.parseFloorDiv();this.skipValue(Vt.TOKEN_OPERATOR,"/");){var t=this.parseFloorDiv();e=new hr.Div(e.lineno,e.colno,e,t)}return e},i.parseFloorDiv=function(){for(var e=this.parseMod();this.skipValue(Vt.TOKEN_OPERATOR,"//");){var t=this.parseMod();e=new hr.FloorDiv(e.lineno,e.colno,e,t)}return e},i.parseMod=function(){for(var e=this.parsePow();this.skipValue(Vt.TOKEN_OPERATOR,"%");){var t=this.parsePow();e=new hr.Mod(e.lineno,e.colno,e,t)}return e},i.parsePow=function(){for(var e=this.parseUnary();this.skipValue(Vt.TOKEN_OPERATOR,"**");){var t=this.parseUnary();e=new hr.Pow(e.lineno,e.colno,e,t)}return e},i.parseUnary=function(e){var t,n=this.peekToken();return t=this.skipValue(Vt.TOKEN_OPERATOR,"-")?new hr.Neg(n.lineno,n.colno,this.parseUnary(!0)):this.skipValue(Vt.TOKEN_OPERATOR,"+")?new hr.Pos(n.lineno,n.colno,this.parseUnary(!0)):this.parsePrimary(),e||(t=this.parseFilter(t)),t},i.parsePrimary=function(e){var t,n=this.nextToken(),r=null;if(n?n.type===Vt.TOKEN_STRING?t=n.value:n.type===Vt.TOKEN_INT?t=parseInt(n.value,10):n.type===Vt.TOKEN_FLOAT?t=parseFloat(n.value):n.type===Vt.TOKEN_BOOLEAN?"true"===n.value?t=!0:"false"===n.value?t=!1:this.fail("invalid boolean: "+n.value,n.lineno,n.colno):n.type===Vt.TOKEN_NONE?t=null:n.type===Vt.TOKEN_REGEX&&(t=new RegExp(n.value.body,n.value.flags)):this.fail("expected expression, got end of file"),void 0!==t?r=new hr.Literal(n.lineno,n.colno,t):n.type===Vt.TOKEN_SYMBOL?r=new hr.Symbol(n.lineno,n.colno,n.value):(this.pushToken(n),r=this.parseAggregate()),e||(r=this.parsePostfix(r)),r)return r;throw this.error("unexpected token: "+n.value,n.lineno,n.colno)},i.parseFilterName=function(){for(var e=this.expect(Vt.TOKEN_SYMBOL),t=e.value;this.skipValue(Vt.TOKEN_OPERATOR,".");)t+="."+this.expect(Vt.TOKEN_SYMBOL).value;return new hr.Symbol(e.lineno,e.colno,t)},i.parseFilterArgs=function(e){return this.peekToken().type===Vt.TOKEN_LEFT_PAREN?this.parsePostfix(e).args.children:[]},i.parseFilter=function(e){for(;this.skip(Vt.TOKEN_PIPE);){var t=this.parseFilterName();e=new hr.Filter(t.lineno,t.colno,t,new hr.NodeList(t.lineno,t.colno,[e].concat(this.parseFilterArgs(e))))}return e},i.parseFilterStatement=function(){var e=this.peekToken();this.skipSymbol("filter")||this.fail("parseFilterStatement: expected filter");var t=this.parseFilterName(),n=this.parseFilterArgs(t);this.advanceAfterBlockEnd(e.value);var r=new hr.Capture(t.lineno,t.colno,this.parseUntilBlocks("endfilter"));this.advanceAfterBlockEnd();var i=new hr.Filter(t.lineno,t.colno,t,new hr.NodeList(t.lineno,t.colno,[r].concat(n)));return new hr.Output(t.lineno,t.colno,[i])},i.parseAggregate=function(){var e,t=this.nextToken();switch(t.type){case Vt.TOKEN_LEFT_PAREN:e=new hr.Group(t.lineno,t.colno);break;case Vt.TOKEN_LEFT_BRACKET:e=new hr.Array(t.lineno,t.colno);break;case Vt.TOKEN_LEFT_CURLY:e=new hr.Dict(t.lineno,t.colno);break;default:return null}for(;;){var n=this.peekToken().type;if(n===Vt.TOKEN_RIGHT_PAREN||n===Vt.TOKEN_RIGHT_BRACKET||n===Vt.TOKEN_RIGHT_CURLY){this.nextToken();break}if(e.children.length>0&&(this.skip(Vt.TOKEN_COMMA)||this.fail("parseAggregate: expected comma after expression",t.lineno,t.colno)),e instanceof hr.Dict){var r=this.parsePrimary();this.skip(Vt.TOKEN_COLON)||this.fail("parseAggregate: expected colon after dict key",t.lineno,t.colno);var i=this.parseExpression();e.addChild(new hr.Pair(r.lineno,r.colno,r,i))}else{var s=this.parseExpression();e.addChild(s)}}return e},i.parseSignature=function(e,t){var n=this.peekToken();if(!t&&n.type!==Vt.TOKEN_LEFT_PAREN){if(e)return null;this.fail("expected arguments",n.lineno,n.colno)}n.type===Vt.TOKEN_LEFT_PAREN&&(n=this.nextToken());for(var r=new hr.NodeList(n.lineno,n.colno),i=new hr.KeywordArgs(n.lineno,n.colno),s=!1;;){if(n=this.peekToken(),!t&&n.type===Vt.TOKEN_RIGHT_PAREN){this.nextToken();break}if(t&&n.type===Vt.TOKEN_BLOCK_END)break;if(s&&!this.skip(Vt.TOKEN_COMMA))this.fail("parseSignature: expected comma after expression",n.lineno,n.colno);else{var a=this.parseExpression();this.skipValue(Vt.TOKEN_OPERATOR,"=")?i.addChild(new hr.Pair(a.lineno,a.colno,a,this.parseExpression())):r.addChild(a)}s=!0}return i.children.length&&r.addChild(i),r},i.parseUntilBlocks=function(){for(var e=this.breakOnBlocks,t=arguments.length,n=new Array(t),r=0;re.length)a=i.slice(0,e.length),i.slice(a.length,o).forEach((function(e,n){n":">","<=":"<=",">=":">="},Pr=function(e){var t,n;function r(){return e.apply(this,arguments)||this}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,vr(t,n);var i=r.prototype;return i.init=function(e,t){this.templateName=e,this.codebuf=[],this.lastId=0,this.buffer=null,this.bufferStack=[],this._scopeClosers="",this.inBlock=!1,this.throwOnUndefined=t},i.fail=function(e,t,n){throw void 0!==t&&(t+=1),void 0!==n&&(n+=1),new Dr(e,t,n)},i._pushBuffer=function(){var e=this._tmpid();return this.bufferStack.push(this.buffer),this.buffer=e,this._emit("var "+this.buffer+' = "";'),e},i._popBuffer=function(){this.buffer=this.bufferStack.pop()},i._emit=function(e){this.codebuf.push(e)},i._emitLine=function(e){this._emit(e+"\n")},i._emitLines=function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r0&&i._emit(","),i.compile(e,t)})),r&&this._emit(r)},i._compileExpression=function(e,t){this.assertType(e,hr.Literal,hr.Symbol,hr.Group,hr.Array,hr.Dict,hr.FunCall,hr.Caller,hr.Filter,hr.LookupVal,hr.Compare,hr.InlineIf,hr.In,hr.Is,hr.And,hr.Or,hr.Not,hr.Add,hr.Concat,hr.Sub,hr.Mul,hr.Div,hr.FloorDiv,hr.Mod,hr.Pow,hr.Neg,hr.Pos,hr.Compare,hr.NodeList),this.compile(e,t)},i.assertType=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r0&&r._emit(","),e){r._emitLine("function(cb) {"),r._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}");var i=r._pushBuffer();r._withScopedSyntax((function(){r.compile(e,t),r._emitLine("cb(null, "+i+");")})),r._popBuffer(),r._emitLine("return "+i+";"),r._emitLine("}")}else r._emit("null")})),n){var o=this._tmpid();this._emitLine(", "+this._makeCallback(o)),this._emitLine(this.buffer+" += runtime.suppressValue("+o+", "+a+" && env.opts.autoescape);"),this._addScopeLevel()}else this._emit(")"),this._emit(", "+a+" && env.opts.autoescape);\n")},i.compileCallExtensionAsync=function(e,t){this.compileCallExtension(e,t,!0)},i.compileNodeList=function(e,t){this._compileChildren(e,t)},i.compileLiteral=function(e){if("string"==typeof e.value){var t=e.value.replace(/\\/g,"\\\\");t=(t=(t=(t=(t=t.replace(/"/g,'\\"')).replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/\t/g,"\\t")).replace(/\u2028/g,"\\u2028"),this._emit('"'+t+'"')}else null===e.value?this._emit("null"):this._emit(e.value.toString())},i.compileSymbol=function(e,t){var n=e.value,r=t.lookup(n);r?this._emit(r):this._emit('runtime.contextOrFrameLookup(context, frame, "'+n+'")')},i.compileGroup=function(e,t){this._compileAggregate(e,t,"(",")")},i.compileArray=function(e,t){this._compileAggregate(e,t,"[","]")},i.compileDict=function(e,t){this._compileAggregate(e,t,"{","}")},i.compilePair=function(e,t){var n=e.key,r=e.value;n instanceof hr.Symbol?n=new hr.Literal(n.lineno,n.colno,n.value):n instanceof hr.Literal&&"string"==typeof n.value||this.fail("compilePair: Dict keys must be strings or names",n.lineno,n.colno),this.compile(n,t),this._emit(": "),this._compileExpression(r,t)},i.compileInlineIf=function(e,t){this._emit("("),this.compile(e.cond,t),this._emit("?"),this.compile(e.body,t),this._emit(":"),null!==e.else_?this.compile(e.else_,t):this._emit('""'),this._emit(")")},i.compileIn=function(e,t){this._emit("runtime.inOperator("),this.compile(e.left,t),this._emit(","),this.compile(e.right,t),this._emit(")")},i.compileIs=function(e,t){var n=e.right.name?e.right.name.value:e.right.value;this._emit('env.getTest("'+n+'").call(context, '),this.compile(e.left,t),e.right.args&&(this._emit(","),this.compile(e.right.args,t)),this._emit(") === true")},i._binOpEmitter=function(e,t,n){this.compile(e.left,t),this._emit(n),this.compile(e.right,t)},i.compileOr=function(e,t){return this._binOpEmitter(e,t," || ")},i.compileAnd=function(e,t){return this._binOpEmitter(e,t," && ")},i.compileAdd=function(e,t){return this._binOpEmitter(e,t," + ")},i.compileConcat=function(e,t){return this._binOpEmitter(e,t,' + "" + ')},i.compileSub=function(e,t){return this._binOpEmitter(e,t," - ")},i.compileMul=function(e,t){return this._binOpEmitter(e,t," * ")},i.compileDiv=function(e,t){return this._binOpEmitter(e,t," / ")},i.compileMod=function(e,t){return this._binOpEmitter(e,t," % ")},i.compileNot=function(e,t){this._emit("!"),this.compile(e.target,t)},i.compileFloorDiv=function(e,t){this._emit("Math.floor("),this.compile(e.left,t),this._emit(" / "),this.compile(e.right,t),this._emit(")")},i.compilePow=function(e,t){this._emit("Math.pow("),this.compile(e.left,t),this._emit(", "),this.compile(e.right,t),this._emit(")")},i.compileNeg=function(e,t){this._emit("-"),this.compile(e.target,t)},i.compilePos=function(e,t){this._emit("+"),this.compile(e.target,t)},i.compileCompare=function(e,t){var n=this;this.compile(e.expr,t),e.ops.forEach((function(e){n._emit(" "+Mr[e.type]+" "),n.compile(e.expr,t)}))},i.compileLookupVal=function(e,t){this._emit("runtime.memberLookup(("),this._compileExpression(e.target,t),this._emit("),"),this._compileExpression(e.val,t),this._emit(")")},i._getNodeName=function(e){switch(e.typename){case"Symbol":return e.value;case"FunCall":return"the return value of ("+this._getNodeName(e.name)+")";case"LookupVal":return this._getNodeName(e.target)+'["'+this._getNodeName(e.val)+'"]';case"Literal":return e.value.toString();default:return"--expression--"}},i.compileFunCall=function(e,t){this._emit("(lineno = "+e.lineno+", colno = "+e.colno+", "),this._emit("runtime.callWrap("),this._compileExpression(e.name,t),this._emit(', "'+this._getNodeName(e.name).replace(/"/g,'\\"')+'", context, '),this._compileAggregate(e.args,t,"[","])"),this._emit(")")},i.compileFilter=function(e,t){var n=e.name;this.assertType(n,hr.Symbol),this._emit('env.getFilter("'+n.value+'").call(context, '),this._compileAggregate(e.args,t),this._emit(")")},i.compileFilterAsync=function(e,t){var n=e.name,r=e.symbol.value;this.assertType(n,hr.Symbol),t.set(r,r),this._emit('env.getFilter("'+n.value+'").call(context, '),this._compileAggregate(e.args,t),this._emitLine(", "+this._makeCallback(r)),this._addScopeLevel()},i.compileKeywordArgs=function(e,t){this._emit("runtime.makeKeywordArgs("),this.compileDict(e,t),this._emit(")")},i.compileSet=function(e,t){var n=this,r=[];e.targets.forEach((function(e){var i=e.value,s=t.lookup(i);null==s&&(s=n._tmpid(),n._emitLine("var "+s+";")),r.push(s)})),e.value?(this._emit(r.join(" = ")+" = "),this._compileExpression(e.value,t),this._emitLine(";")):(this._emit(r.join(" = ")+" = "),this.compile(e.body,t),this._emitLine(";")),e.targets.forEach((function(e,t){var i=r[t],s=e.value;n._emitLine('frame.set("'+s+'", '+i+", true);"),n._emitLine("if(frame.topLevel) {"),n._emitLine('context.setVariable("'+s+'", '+i+");"),n._emitLine("}"),"_"!==s.charAt(0)&&(n._emitLine("if(frame.topLevel) {"),n._emitLine('context.addExport("'+s+'", '+i+");"),n._emitLine("}"))}))},i.compileSwitch=function(e,t){var n=this;this._emit("switch ("),this.compile(e.expr,t),this._emit(") {"),e.cases.forEach((function(e,r){n._emit("case "),n.compile(e.cond,t),n._emit(": "),n.compile(e.body,t),e.body.children.length&&n._emitLine("break;")})),e.default&&(this._emit("default:"),this.compile(e.default,t)),this._emit("}")},i.compileIf=function(e,t,n){var r=this;this._emit("if("),this._compileExpression(e.cond,t),this._emitLine(") {"),this._withScopedSyntax((function(){r.compile(e.body,t),n&&r._emit("cb()")})),e.else_?(this._emitLine("}\nelse {"),this._withScopedSyntax((function(){r.compile(e.else_,t),n&&r._emit("cb()")}))):n&&(this._emitLine("}\nelse {"),this._emit("cb()")),this._emitLine("}")},i.compileIfAsync=function(e,t){this._emit("(function(cb) {"),this.compileIf(e,t,!0),this._emit("})("+this._makeCallback()),this._addScopeLevel()},i._emitLoopBindings=function(e,t,n,r){var i=this;[{name:"index",val:n+" + 1"},{name:"index0",val:n},{name:"revindex",val:r+" - "+n},{name:"revindex0",val:r+" - "+n+" - 1"},{name:"first",val:n+" === 0"},{name:"last",val:n+" === "+r+" - 1"},{name:"length",val:r}].forEach((function(e){i._emitLine('frame.set("loop.'+e.name+'", '+e.val+");")}))},i.compileFor=function(e,t){var n=this,r=this._tmpid(),i=this._tmpid(),s=this._tmpid();if(t=t.push(),this._emitLine("frame = frame.push();"),this._emit("var "+s+" = "),this._compileExpression(e.arr,t),this._emitLine(";"),this._emit("if("+s+") {"),this._emitLine(s+" = runtime.fromIterator("+s+");"),e.name instanceof hr.Array){this._emitLine("var "+r+";"),this._emitLine("if(runtime.isArray("+s+")) {"),this._emitLine("var "+i+" = "+s+".length;"),this._emitLine("for("+r+"=0; "+r+" < "+s+".length; "+r+"++) {"),e.name.children.forEach((function(i,a){var o=n._tmpid();n._emitLine("var "+o+" = "+s+"["+r+"]["+a+"];"),n._emitLine('frame.set("'+i+'", '+s+"["+r+"]["+a+"]);"),t.set(e.name.children[a].value,o)})),this._emitLoopBindings(e,s,r,i),this._withScopedSyntax((function(){n.compile(e.body,t)})),this._emitLine("}"),this._emitLine("} else {");var a=e.name.children,o=a[0],c=a[1],l=this._tmpid(),h=this._tmpid();t.set(o.value,l),t.set(c.value,h),this._emitLine(r+" = -1;"),this._emitLine("var "+i+" = runtime.keys("+s+").length;"),this._emitLine("for(var "+l+" in "+s+") {"),this._emitLine(r+"++;"),this._emitLine("var "+h+" = "+s+"["+l+"];"),this._emitLine('frame.set("'+o.value+'", '+l+");"),this._emitLine('frame.set("'+c.value+'", '+h+");"),this._emitLoopBindings(e,s,r,i),this._withScopedSyntax((function(){n.compile(e.body,t)})),this._emitLine("}"),this._emitLine("}")}else{var u=this._tmpid();t.set(e.name.value,u),this._emitLine("var "+i+" = "+s+".length;"),this._emitLine("for(var "+r+"=0; "+r+" < "+s+".length; "+r+"++) {"),this._emitLine("var "+u+" = "+s+"["+r+"];"),this._emitLine('frame.set("'+e.name.value+'", '+u+");"),this._emitLoopBindings(e,s,r,i),this._withScopedSyntax((function(){n.compile(e.body,t)})),this._emitLine("}")}this._emitLine("}"),e.else_&&(this._emitLine("if (!"+i+") {"),this.compile(e.else_,t),this._emitLine("}")),this._emitLine("frame = frame.pop();")},i._compileAsyncLoop=function(e,t,n){var r=this,i=this._tmpid(),s=this._tmpid(),a=this._tmpid(),o=n?"asyncAll":"asyncEach";if(t=t.push(),this._emitLine("frame = frame.push();"),this._emit("var "+a+" = runtime.fromIterator("),this._compileExpression(e.arr,t),this._emitLine(");"),e.name instanceof hr.Array){var c=e.name.children.length;this._emit("runtime."+o+"("+a+", "+c+", function("),e.name.children.forEach((function(e){r._emit(e.value+",")})),this._emit(i+","+s+",next) {"),e.name.children.forEach((function(e){var n=e.value;t.set(n,n),r._emitLine('frame.set("'+n+'", '+n+");")}))}else{var l=e.name.value;this._emitLine("runtime."+o+"("+a+", 1, function("+l+", "+i+", "+s+",next) {"),this._emitLine('frame.set("'+l+'", '+l+");"),t.set(l,l)}this._emitLoopBindings(e,a,i,s),this._withScopedSyntax((function(){var s;n&&(s=r._pushBuffer()),r.compile(e.body,t),r._emitLine("next("+i+(s?","+s:"")+");"),n&&r._popBuffer()}));var h=this._tmpid();this._emitLine("}, "+this._makeCallback(h)),this._addScopeLevel(),n&&this._emitLine(this.buffer+" += "+h+";"),e.else_&&(this._emitLine("if (!"+a+".length) {"),this.compile(e.else_,t),this._emitLine("}")),this._emitLine("frame = frame.pop();")},i.compileAsyncEach=function(e,t){this._compileAsyncLoop(e,t)},i.compileAsyncAll=function(e,t){this._compileAsyncLoop(e,t,!0)},i._compileMacro=function(e,t){var n=this,r=[],i=null,s="macro_"+this._tmpid(),a=void 0!==t;e.args.children.forEach((function(t,s){s===e.args.children.length-1&&t instanceof hr.Dict?i=t:(n.assertType(t,hr.Symbol),r.push(t))}));var o,c=[].concat(r.map((function(e){return"l_"+e.value})),["kwargs"]),l=r.map((function(e){return'"'+e.value+'"'})),h=(i&&i.children||[]).map((function(e){return'"'+e.key.value+'"'}));o=a?t.push(!0):new Rr,this._emitLines("var "+s+" = runtime.makeMacro(","["+l.join(", ")+"], ","["+h.join(", ")+"], ","function ("+c.join(", ")+") {","var callerFrame = frame;","frame = "+(a?"frame.push(true);":"new runtime.Frame();"),"kwargs = kwargs || {};",'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {','frame.set("caller", kwargs.caller); }'),r.forEach((function(e){n._emitLine('frame.set("'+e.value+'", l_'+e.value+");"),o.set(e.value,"l_"+e.value)})),i&&i.children.forEach((function(e){var t=e.key.value;n._emit('frame.set("'+t+'", '),n._emit('Object.prototype.hasOwnProperty.call(kwargs, "'+t+'")'),n._emit(' ? kwargs["'+t+'"] : '),n._compileExpression(e.value,o),n._emit(");")}));var u=this._pushBuffer();return this._withScopedSyntax((function(){n.compile(e.body,o)})),this._emitLine("frame = "+(a?"frame.pop();":"callerFrame;")),this._emitLine("return new runtime.SafeString("+u+");"),this._emitLine("});"),this._popBuffer(),s},i.compileMacro=function(e,t){var n=this._compileMacro(e),r=e.name.value;t.set(r,n),t.parent?this._emitLine('frame.set("'+r+'", '+n+");"):("_"!==e.name.value.charAt(0)&&this._emitLine('context.addExport("'+r+'");'),this._emitLine('context.setVariable("'+r+'", '+n+");"))},i.compileCaller=function(e,t){this._emit("(function (){");var n=this._compileMacro(e,t);this._emit("return "+n+";})()")},i._compileGetTemplate=function(e,t,n,r){var i=this._tmpid(),s=this._templateName(),a=this._makeCallback(i),o=n?"true":"false",c=r?"true":"false";return this._emit("env.getTemplate("),this._compileExpression(e.template,t),this._emitLine(", "+o+", "+s+", "+c+", "+a),i},i.compileImport=function(e,t){var n=e.target.value,r=this._compileGetTemplate(e,t,!1,!1);this._addScopeLevel(),this._emitLine(r+".getExported("+(e.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(r)),this._addScopeLevel(),t.set(n,r),t.parent?this._emitLine('frame.set("'+n+'", '+r+");"):this._emitLine('context.setVariable("'+n+'", '+r+");")},i.compileFromImport=function(e,t){var n=this,r=this._compileGetTemplate(e,t,!1,!1);this._addScopeLevel(),this._emitLine(r+".getExported("+(e.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(r)),this._addScopeLevel(),e.names.children.forEach((function(e){var i,s,a=n._tmpid();e instanceof hr.Pair?(i=e.key.value,s=e.value.value):s=i=e.value,n._emitLine("if(Object.prototype.hasOwnProperty.call("+r+', "'+i+'")) {'),n._emitLine("var "+a+" = "+r+"."+i+";"),n._emitLine("} else {"),n._emitLine("cb(new Error(\"cannot import '"+i+"'\")); return;"),n._emitLine("}"),t.set(s,a),t.parent?n._emitLine('frame.set("'+s+'", '+a+");"):n._emitLine('context.setVariable("'+s+'", '+a+");")}))},i.compileBlock=function(e){var t=this._tmpid();this.inBlock||this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '),this._emit('context.getBlock("'+e.name.value+'")'),this.inBlock||this._emit(")"),this._emitLine("(env, context, frame, runtime, "+this._makeCallback(t)),this._emitLine(this.buffer+" += "+t+";"),this._addScopeLevel()},i.compileSuper=function(e,t){var n=e.blockName.value,r=e.symbol.value,i=this._makeCallback(r);this._emitLine('context.getSuper(env, "'+n+'", b_'+n+", frame, runtime, "+i),this._emitLine(r+" = runtime.markSafe("+r+");"),this._addScopeLevel(),t.set(r,r)},i.compileExtends=function(e,t){var n=this._tmpid(),r=this._compileGetTemplate(e,t,!0,!1);this._emitLine("parentTemplate = "+r),this._emitLine("for(var "+n+" in parentTemplate.blocks) {"),this._emitLine("context.addBlock("+n+", parentTemplate.blocks["+n+"]);"),this._emitLine("}"),this._addScopeLevel()},i.compileInclude=function(e,t){this._emitLine("var tasks = [];"),this._emitLine("tasks.push("),this._emitLine("function(callback) {");var n=this._compileGetTemplate(e,t,!1,e.ignoreMissing);this._emitLine("callback(null,"+n+");});"),this._emitLine("});");var r=this._tmpid();this._emitLine("tasks.push("),this._emitLine("function(template, callback){"),this._emitLine("template.render(context.getVariables(), frame, "+this._makeCallback(r)),this._emitLine("callback(null,"+r+");});"),this._emitLine("});"),this._emitLine("tasks.push("),this._emitLine("function(result, callback){"),this._emitLine(this.buffer+" += result;"),this._emitLine("callback(null);"),this._emitLine("});"),this._emitLine("env.waterfall(tasks, function(){"),this._addScopeLevel()},i.compileTemplateData=function(e,t){this.compileLiteral(e,t)},i.compileCapture=function(e,t){var n=this,r=this.buffer;this.buffer="output",this._emitLine("(function() {"),this._emitLine('var output = "";'),this._withScopedSyntax((function(){n.compile(e.body,t)})),this._emitLine("return output;"),this._emitLine("})()"),this.buffer=r},i.compileOutput=function(e,t){var n=this;e.children.forEach((function(r){r instanceof hr.TemplateData?r.value&&(n._emit(n.buffer+" += "),n.compileLiteral(r,t),n._emitLine(";")):(n._emit(n.buffer+" += runtime.suppressValue("),n.throwOnUndefined&&n._emit("runtime.ensureDefined("),n.compile(r,t),n.throwOnUndefined&&n._emit(","+e.lineno+","+e.colno+")"),n._emit(", env.opts.autoescape);\n"))}))},i.compileRoot=function(e,t){var n=this;t&&this.fail("compileRoot: root node can't have frame"),t=new Rr,this._emitFuncBegin(e,"root"),this._emitLine("var parentTemplate = null;"),this._compileChildren(e,t),this._emitLine("if(parentTemplate) {"),this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"),this._emitLine("} else {"),this._emitLine("cb(null, "+this.buffer+");"),this._emitLine("}"),this._emitFuncEnd(!0),this.inBlock=!0;var r=[],i=e.findAll(hr.Block);i.forEach((function(e,t){var i=e.name.value;if(-1!==r.indexOf(i))throw new Error('Block "'+i+'" defined more than once.');r.push(i),n._emitFuncBegin(e,"b_"+i);var s=new Rr;n._emitLine("var frame = frame.push(true);"),n.compile(e.body,s),n._emitFuncEnd()})),this._emitLine("return {"),i.forEach((function(e,t){var r="b_"+e.name.value;n._emitLine(r+": "+r+",")})),this._emitLine("root: root\n};")},i.compile=function(e,t){var n=this["compile"+e.typename];n?n.call(this,e,t):this.fail("compile: Cannot compile node: "+e.typename,e.lineno,e.colno)},i.getCode=function(){return this.codebuf.join("")},r}(en.Obj),xr={compile:function(e,t,n,r,i){void 0===i&&(i={});var s=new Pr(r,i.throwOnUndefined),a=(n||[]).map((function(e){return e.preprocess})).filter((function(e){return!!e})).reduce((function(e,t){return t(e)}),e);return s.compile(Nr.transform(fr.parse(a,n,i),t,r)),s.getCode()},Compiler:Pr},wr=Ke((function(e){var t=e.exports={};function n(e,t){return null==e||!1===e?t:e}function r(e){return e!=e}function i(e){var t=(e=n(e,"")).toLowerCase();return kr.copySafeness(e,t.charAt(0).toUpperCase()+t.slice(1))}function s(e){if(je.isString(e))return e.split("");if(je.isObject(e))return je._entries(e||{}).map((function(e){return{key:e[0],value:e[1]}}));if(je.isArray(e))return e;throw new je.TemplateError("list filter: type not iterable")}function a(e){return function(t,n,r){void 0===n&&(n="truthy");var i=this,s=i.env.getTest(n);return je.toArray(t).filter((function(t){return s.call(i,t,r)===e}))}}function o(e){return kr.copySafeness(e,e.replace(/^\s*|\s*$/g,""))}t.abs=Math.abs,t.batch=function(e,t,n){var r,i=[],s=[];for(r=0;r=t)return e;var r=t-e.length,i=je.repeat(" ",r/2-r%2),s=je.repeat(" ",r/2);return kr.copySafeness(e,i+e+s)},t.default=function(e,t,n){return n?e||t:void 0!==e?e:t},t.dictsort=function(e,t,n){if(!je.isObject(e))throw new je.TemplateError("dictsort filter: val must be an object");var r,i=[];for(var s in e)i.push([s,e[s]]);if(void 0===n||"key"===n)r=0;else{if("value"!==n)throw new je.TemplateError("dictsort filter: You can only sort by either key or value");r=1}return i.sort((function(e,n){var i=e[r],s=n[r];return t||(je.isString(i)&&(i=i.toUpperCase()),je.isString(s)&&(s=s.toUpperCase())),i>s?1:i===s?0:-1})),i},t.dump=function(e,t){return JSON.stringify(e,null,t)},t.escape=function(e){return e instanceof kr.SafeString?e:(e=null==e?"":e,kr.markSafe(je.escape(e.toString())))},t.safe=function(e){return e instanceof kr.SafeString?e:(e=null==e?"":e,kr.markSafe(e.toString()))},t.first=function(e){return e[0]},t.forceescape=function(e){return e=null==e?"":e,kr.markSafe(je.escape(e.toString()))},t.groupby=function(e,t){return je.groupBy(e,t,this.env.opts.throwOnUndefined)},t.indent=function(e,t,r){if(""===(e=n(e,"")))return"";t=t||4;var i=e.split("\n"),s=je.repeat(" ",t),a=i.map((function(e,t){return 0!==t||r?""+s+e:e})).join("\n");return kr.copySafeness(e,a)},t.join=function(e,t,n){return t=t||"",n&&(e=je.map(e,(function(e){return e[n]}))),e.join(t)},t.last=function(e){return e[e.length-1]},t.length=function(e){var t=n(e,"");return void 0!==t?"function"==typeof Map&&t instanceof Map||"function"==typeof Set&&t instanceof Set?t.size:!je.isObject(t)||t instanceof kr.SafeString?t.length:je.keys(t).length:0},t.list=s,t.lower=function(e){return(e=n(e,"")).toLowerCase()},t.nl2br=function(e){return null==e?"":kr.copySafeness(e,e.replace(/\r\n|\n/g,"
\n"))},t.random=function(e){return e[Math.floor(Math.random()*e.length)]},t.reject=a(!1),t.rejectattr=function(e,t){return e.filter((function(e){return!e[t]}))},t.select=a(!0),t.selectattr=function(e,t){return e.filter((function(e){return!!e[t]}))},t.replace=function(e,t,n,r){var i=e;if(t instanceof RegExp)return e.replace(t,n);void 0===r&&(r=-1);var s="";if("number"==typeof t)t=""+t;else if("string"!=typeof t)return e;if("number"==typeof e&&(e=""+e),"string"!=typeof e&&!(e instanceof kr.SafeString))return e;if(""===t)return s=n+e.split("").join(n)+n,kr.copySafeness(e,s);var a=e.indexOf(t);if(0===r||-1===a)return e;for(var o=0,c=0;a>-1&&(-1===r||c=i&&h.push(n),s.push(h)}return s},t.sum=function(e,t,n){return void 0===n&&(n=0),t&&(e=je.map(e,(function(e){return e[t]}))),n+e.reduce((function(e,t){return e+t}),0)},t.sort=kr.makeMacro(["value","reverse","case_sensitive","attribute"],[],(function(e,t,n,r){var i=this,s=je.map(e,(function(e){return e})),a=je.getAttrGetter(r);return s.sort((function(e,s){var o=r?a(e):e,c=r?a(s):s;if(i.env.opts.throwOnUndefined&&r&&(void 0===o||void 0===c))throw new TypeError('sort: attribute "'+r+'" resolved to undefined');return!n&&je.isString(o)&&je.isString(c)&&(o=o.toLowerCase(),c=c.toLowerCase()),oc?t?-1:1:0})),s})),t.string=function(e){return kr.copySafeness(e,e)},t.striptags=function(e,t){var r=o((e=n(e,"")).replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>|/gi,"")),i="";return i=t?r.replace(/^ +| +$/gm,"").replace(/ +/g," ").replace(/(\r\n)/g,"\n").replace(/\n\n\n+/g,"\n\n"):r.replace(/\s+/gi," "),kr.copySafeness(e,i)},t.title=function(e){var t=(e=n(e,"")).split(" ").map((function(e){return i(e)}));return kr.copySafeness(e,t.join(" "))},t.trim=o,t.truncate=function(e,t,r,i){var s=e;if(t=t||255,(e=n(e,"")).length<=t)return e;if(r)e=e.substring(0,t);else{var a=e.lastIndexOf(" ",t);-1===a&&(a=t),e=e.substring(0,a)}return e+=null!=i?i:"...",kr.copySafeness(s,e)},t.upper=function(e){return(e=n(e,"")).toUpperCase()},t.urlencode=function(e){var t=encodeURIComponent;return je.isString(e)?t(e):(je.isArray(e)?e:je._entries(e)).map((function(e){var n=e[0],r=e[1];return t(n)+"="+t(r)})).join("&")};var c=/^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/,l=/^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,h=/^https?:\/\/.*$/,u=/^www\./,p=/\.(?:org|net|com)(?:\:|\/|$)/;t.urlize=function(e,t,n){r(t)&&(t=1/0);var i=!0===n?' rel="nofollow"':"";return e.split(/(\s+)/).filter((function(e){return e&&e.length})).map((function(e){var n=e.match(c),r=n?n[1]:e,s=r.substr(0,t);return h.test(r)?'"+s+"":u.test(r)?'"+s+"":l.test(r)?''+r+"":p.test(r)?'"+s+"":e})).join("")},t.wordcount=function(e){var t=(e=n(e,""))?e.match(/\w+/g):null;return t?t.length:null},t.float=function(e,t){var n=parseFloat(e);return r(n)?t:n};var f=kr.makeMacro(["value","default","base"],[],(function(e,t,n){void 0===n&&(n=10);var i=parseInt(e,n);return r(i)?t:i}));t.int=f,t.d=t.default,t.e=t.escape})),Br={};function Fr(e,t){for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var Ur=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Hr=function(e){return Ur.exec(e).slice(1)};function Gr(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:"/";if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=Fr(jr(e.split("/"),(function(e){return!!e})),!t).join("/"))||"."}function Yr(e){var t=qr(e),n="/"===Vr(e,-1);return(e=Fr(jr(e.split("/"),(function(e){return!!e})),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function qr(e){return"/"===e.charAt(0)}var Kr={extname:function(e){return Hr(e)[3]},basename:function(e,t){var n=Hr(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},dirname:function(e){var t=Hr(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."},sep:"/",delimiter:":",relative:function(e,t){function n(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=Gr(e).substr(1),t=Gr(t).substr(1);for(var r=n(e.split("/")),i=n(t.split("/")),s=Math.min(r.length,i.length),a=s,o=0;o=t},t.greaterthan=function(e,t){return e>t},t.gt=t.greaterthan,t.le=function(e,t){return e<=t},t.lessthan=function(e,t){return e=e.length&&(t=0),this.current=e[t],this.current}}}ni.callable,ni.defined,ni.divisibleby,ni.escaped,ni.equalto,ni.eq,ni.sameas,ni.even,ni.falsy,ni.ge,ni.greaterthan,ni.gt,ni.le,ni.lessthan,ni.lt,ni.lower,ni.ne,ni.number,ni.odd,ni.string,ni.truthy,ni.undefined,ni.upper,ni.iterable,ni.mapping;var ii=function(){return{range:function(e,t,n){void 0===t?(t=e,e=0,n=1):n||(n=1);var r=[];if(n>0)for(var i=e;it;s+=n)r.push(s);return r},cycler:function(){return ri(Array.prototype.slice.call(arguments))},joiner:function(e){return function(e){e=e||",";var t=!0;return function(){var n=t?"":e;return t=!1,n}}(e)}}};function si(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,ai(e,t)}function ai(e,t){return ai=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},ai(e,t)}var oi=ti.FileSystemLoader,ci=ti.WebLoader,li=ti.PrecompiledLoader,hi=en.Obj,ui=en.EmitterObj,pi=kr.handleError,fi=kr.Frame;function di(e,t,n){Gt((function(){e(t,n)}))}var Ei={type:"code",obj:{root:function(e,t,n,r,i){try{i(null,"")}catch(e){i(pi(e,null,null))}}}},mi=function(e){function t(){return e.apply(this,arguments)||this}si(t,e);var n=t.prototype;return n.init=function(e,t){var n=this;t=this.opts=t||{},this.opts.dev=!!t.dev,this.opts.autoescape=null==t.autoescape||t.autoescape,this.opts.throwOnUndefined=!!t.throwOnUndefined,this.opts.trimBlocks=!!t.trimBlocks,this.opts.lstripBlocks=!!t.lstripBlocks,this.loaders=[],e?this.loaders=je.isArray(e)?e:[e]:oi?this.loaders=[new oi("views")]:ci&&(this.loaders=[new ci("/views")]),"undefined"!=typeof window&&window.jinja2Precompiled&&this.loaders.unshift(new li(window.jinja2Precompiled)),this._initLoaders(),this.globals=ii(),this.filters={},this.tests={},this.asyncFilters=[],this.extensions={},this.extensionsList=[],je._entries(wr).forEach((function(e){var t=e[0],r=e[1];return n.addFilter(t,r)})),je._entries(ni).forEach((function(e){var t=e[0],r=e[1];return n.addTest(t,r)}))},n._initLoaders=function(){var e=this;this.loaders.forEach((function(t){t.cache={},"function"==typeof t.on&&(t.on("update",(function(n,r){t.cache[n]=null,e.emit("update",n,r,t)})),t.on("load",(function(n,r){e.emit("load",n,r,t)})))}))},n.invalidateCache=function(){this.loaders.forEach((function(e){e.cache={}}))},n.addExtension=function(e,t){return t.__name=e,this.extensions[e]=t,this.extensionsList.push(t),this},n.removeExtension=function(e){var t=this.getExtension(e);t&&(this.extensionsList=je.without(this.extensionsList,t),delete this.extensions[e])},n.getExtension=function(e){return this.extensions[e]},n.hasExtension=function(e){return!!this.extensions[e]},n.addGlobal=function(e,t){return this.globals[e]=t,this},n.getGlobal=function(e){if(void 0===this.globals[e])throw new Error("global not found: "+e);return this.globals[e]},n.addFilter=function(e,t,n){var r=t;return n&&this.asyncFilters.push(e),this.filters[e]=r,this},n.getFilter=function(e){if(!this.filters[e])throw new Error("filter not found: "+e);return this.filters[e]},n.addTest=function(e,t){return this.tests[e]=t,this},n.getTest=function(e){if(!this.tests[e])throw new Error("test not found: "+e);return this.tests[e]},n.resolveTemplate=function(e,t,n){return!(!e.isRelative||!t)&&e.isRelative(n)&&e.resolve?e.resolve(t,n):n},n.getTemplate=function(e,t,n,r,i){var s,a=this,o=this,c=null;if(e&&e.raw&&(e=e.raw),je.isFunction(n)&&(i=n,n=null,t=t||!1),je.isFunction(t)&&(i=t,t=!1),e instanceof _i)c=e;else{if("string"!=typeof e)throw new Error("template names must be a string: "+e);for(var l=0;le.length-3)return!1;var n=e.charCodeAt(t+1);return(n>=Pi.LowerA&&n<=Pi.LowerZ||n>=Pi.UpperA&&n<=Pi.UpperZ||n===Pi.Exclamation)&&e.includes(">",t+2)}!function(e){e[e.LowerA=97]="LowerA",e[e.LowerZ=122]="LowerZ",e[e.UpperA=65]="UpperA",e[e.UpperZ=90]="UpperZ",e[e.Exclamation=33]="Exclamation"}(Pi||(Pi={}));var Hi=Object.prototype.hasOwnProperty,Gi=/\s+/,Yi={null:null,true:!0,false:!1},qi=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,Ki=/^{[^]*}$|^\[[^]*]$/;function ji(e,t,n){var r;if(e&&I(e))return null!==(r=e.attribs)&&void 0!==r||(e.attribs={}),t?Hi.call(e.attribs,t)?!n&&qi.test(t)?t:e.attribs[t]:"option"===e.name&&"value"===t?Li(e.children):"input"!==e.name||"radio"!==e.attribs.type&&"checkbox"!==e.attribs.type||"value"!==t?void 0:"on":e.attribs}function Vi(e,t,n){null===n?zi(e,t):e.attribs[t]="".concat(n)}function Wi(e,t,n){return t in e?e[t]:!n&&qi.test(t)?void 0!==ji(e,t,!1):ji(e,t,n)}function Qi(e,t,n,r){t in e?e[t]=n:Vi(e,t,!r&&qi.test(t)?n?"":null:"".concat(n))}function Xi(e,t,n){var r,i=e;null!==(r=i.data)&&void 0!==r||(i.data={}),"object"==typeof t?Object.assign(i.data,t):"string"==typeof t&&void 0!==n&&(i.data[t]=n)}function $i(e,t){var n,r,i,s;null==t?r=(n=Object.keys(e.attribs).filter((function(e){return e.startsWith("data-")}))).map((function(e){return e.slice("data-".length).replace(/[_.-](\w|$)/g,(function(e,t){return t.toUpperCase()}))})):(n=["data-"+(s=t,s.replace(/[A-Z]/g,"-$&").toLowerCase())],r=[t]);for(var a=0;a1?this:ji(this[0],e,this.options.xmlMode)},prop:function(e,t){var n,r=this;if("string"==typeof e&&void 0===t){var i=this[0];if(!i||!I(i))return;switch(e){case"style":var s=this.css(),a=Object.keys(s);return a.forEach((function(e,t){s[t]=e})),s.length=a.length,s;case"tagName":case"nodeName":return i.name.toUpperCase();case"href":case"src":var o=null===(n=i.attribs)||void 0===n?void 0:n[e];return"undefined"==typeof URL||("href"!==e||"a"!==i.tagName&&"link"!==i.name)&&("src"!==e||"img"!==i.tagName&&"iframe"!==i.tagName&&"audio"!==i.tagName&&"video"!==i.tagName&&"source"!==i.tagName)||void 0===o||!this.options.baseURI?o:new URL(o,this.options.baseURI).href;case"innerText":return J(i);case"textContent":return z(i);case"outerHTML":return this.clone().wrap("").parent().html();case"innerHTML":return this.html();default:return Wi(i,e,this.options.xmlMode)}}if("object"==typeof e||void 0!==t){if("function"==typeof t){if("object"==typeof e)throw new Error("Bad combination of arguments.");return Bi(this,(function(n,i){I(n)&&Qi(n,e,t.call(n,i,Wi(n,e,r.options.xmlMode)),r.options.xmlMode)}))}return Bi(this,(function(n){I(n)&&("object"==typeof e?Object.keys(e).forEach((function(t){var i=e[t];Qi(n,t,i,r.options.xmlMode)})):Qi(n,e,t,r.options.xmlMode))}))}},data:function(e,t){var n,r=this[0];if(r&&I(r)){var i=r;return null!==(n=i.data)&&void 0!==n||(i.data={}),e?"object"==typeof e||void 0!==t?(Bi(this,(function(n){I(n)&&("object"==typeof e?Xi(n,e):Xi(n,e,t))})),this):Hi.call(i.data,e)?i.data[e]:$i(i,e):$i(i)}},val:function(e){var t=0===arguments.length,n=this[0];if(!n||!I(n))return t?void 0:this;switch(n.name){case"textarea":return this.text(e);case"select":var r=this.find("option:selected");if(!t){if(null==this.attr("multiple")&&"object"==typeof e)return this;this.find("option").removeAttr("selected");for(var i="object"!=typeof e?[e]:e,s=0;s-1;){var i=r+e.length;if((0===r||Gi.test(n[r-1]))&&(i===n.length||Gi.test(n[i])))return!0}return!1}))},addClass:function e(t){if("function"==typeof t)return Bi(this,(function(n,r){if(I(n)){var i=n.attribs.class||"";e.call([n],t.call(n,r,i))}}));if(!t||"string"!=typeof t)return this;for(var n=t.split(Gi),r=this.length,i=0;i=0&&(t.splice(o,1),s=!0,a--)}s&&(e.attribs.class=t.join(" "))}}))},toggleClass:function e(t,n){if("function"==typeof t)return Bi(this,(function(r,i){I(r)&&e.call([r],t.call(r,i,r.attribs.class||"",n),n)}));if(!t||"string"!=typeof t)return this;for(var r=t.split(Gi),i=r.length,s="boolean"==typeof n?n?1:-1:0,a=this.length,o=0;o=0&&u<0?l.push(r[h]):s<=0&&u>=0&&l.splice(u,1)}c.attribs.class=l.join(" ")}}return this}});!function(e){e.Attribute="attribute",e.Pseudo="pseudo",e.PseudoElement="pseudo-element",e.Tag="tag",e.Universal="universal",e.Adjacent="adjacent",e.Child="child",e.Descendant="descendant",e.Parent="parent",e.Sibling="sibling",e.ColumnCombinator="column-combinator"}(Zi||(Zi={})),function(e){e.Any="any",e.Element="element",e.End="end",e.Equals="equals",e.Exists="exists",e.Hyphen="hyphen",e.Not="not",e.Start="start"}(es||(es={}));const ns=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,rs=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,is=new Map([[126,es.Element],[94,es.Start],[36,es.End],[42,es.Any],[33,es.Not],[124,es.Hyphen]]),ss=new Set(["has","not","matches","is","where","host","host-context"]);function as(e){switch(e.type){case Zi.Adjacent:case Zi.Child:case Zi.Descendant:case Zi.Parent:case Zi.Sibling:case Zi.ColumnCombinator:return!0;default:return!1}}const os=new Set(["contains","icontains"]);function cs(e,t,n){const r=parseInt(t,16)-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)}function ls(e){return e.replace(rs,cs)}function hs(e){return 39===e||34===e}function us(e){return 32===e||9===e||10===e||12===e||13===e}function ps(e){const t=[],n=fs(t,`${e}`,0);if(n0&&n0&&as(r[r.length-1]))throw new Error("Did not expect successive traversals.")}function l(e){r.length>0&&r[r.length-1].type===Zi.Descendant?r[r.length-1].type=e:(c(),r.push({type:e}))}function h(e,t){r.push({type:Zi.Attribute,name:e,action:t,value:i(1),namespace:null,ignoreCase:"quirks"})}function u(){if(r.length&&r[r.length-1].type===Zi.Descendant&&r.pop(),0===r.length)throw new Error("Empty sub-selector");e.push(r)}if(s(0),t.length===n)return n;e:for(;n=0&&r>=1)):e.type===Zi.Pseudo&&(e.data?"has"===e.name||"contains"===e.name?r=0:Array.isArray(e.data)?(r=Math.min(...e.data.map((e=>Math.min(...e.map(gs))))),r<0&&(r=0)):r=2:r=3),r}const Ns=/[-[\]{}()*+?.,\\^$|#\s]/g;function Cs(e){return e.replace(Ns,"\\$&")}const Is=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);function Ss(e,t){return"boolean"==typeof e.ignoreCase?e.ignoreCase:"quirks"===e.ignoreCase?!!t.quirksMode:!t.xmlMode&&Is.has(e.name)}const bs={equals(e,t,n){const{adapter:r}=n,{name:i}=t;let{value:s}=t;return Ss(t,n)?(s=s.toLowerCase(),t=>{const n=r.getAttributeValue(t,i);return null!=n&&n.length===s.length&&n.toLowerCase()===s&&e(t)}):t=>r.getAttributeValue(t,i)===s&&e(t)},hyphen(e,t,n){const{adapter:r}=n,{name:i}=t;let{value:s}=t;const a=s.length;return Ss(t,n)?(s=s.toLowerCase(),function(t){const n=r.getAttributeValue(t,i);return null!=n&&(n.length===a||"-"===n.charAt(a))&&n.substr(0,a).toLowerCase()===s&&e(t)}):function(t){const n=r.getAttributeValue(t,i);return null!=n&&(n.length===a||"-"===n.charAt(a))&&n.substr(0,a)===s&&e(t)}},element(e,t,n){const{adapter:r}=n,{name:i,value:s}=t;if(/\s/.test(s))return ds.falseFunc;const a=new RegExp(`(?:^|\\s)${Cs(s)}(?:$|\\s)`,Ss(t,n)?"i":"");return function(t){const n=r.getAttributeValue(t,i);return null!=n&&n.length>=s.length&&a.test(n)&&e(t)}},exists:(e,{name:t},{adapter:n})=>r=>n.hasAttrib(r,t)&&e(r),start(e,t,n){const{adapter:r}=n,{name:i}=t;let{value:s}=t;const a=s.length;return 0===a?ds.falseFunc:Ss(t,n)?(s=s.toLowerCase(),t=>{const n=r.getAttributeValue(t,i);return null!=n&&n.length>=a&&n.substr(0,a).toLowerCase()===s&&e(t)}):t=>{var n;return!!(null===(n=r.getAttributeValue(t,i))||void 0===n?void 0:n.startsWith(s))&&e(t)}},end(e,t,n){const{adapter:r}=n,{name:i}=t;let{value:s}=t;const a=-s.length;return 0===a?ds.falseFunc:Ss(t,n)?(s=s.toLowerCase(),t=>{var n;return(null===(n=r.getAttributeValue(t,i))||void 0===n?void 0:n.substr(a).toLowerCase())===s&&e(t)}):t=>{var n;return!!(null===(n=r.getAttributeValue(t,i))||void 0===n?void 0:n.endsWith(s))&&e(t)}},any(e,t,n){const{adapter:r}=n,{name:i,value:s}=t;if(""===s)return ds.falseFunc;if(Ss(t,n)){const t=new RegExp(Cs(s),"i");return function(n){const a=r.getAttributeValue(n,i);return null!=a&&a.length>=s.length&&t.test(a)&&e(n)}}return t=>{var n;return!!(null===(n=r.getAttributeValue(t,i))||void 0===n?void 0:n.includes(s))&&e(t)}},not(e,t,n){const{adapter:r}=n,{name:i}=t;let{value:s}=t;return""===s?t=>!!r.getAttributeValue(t,i)&&e(t):Ss(t,n)?(s=s.toLowerCase(),t=>{const n=r.getAttributeValue(t,i);return(null==n||n.length!==s.length||n.toLowerCase()!==s)&&e(t)}):t=>r.getAttributeValue(t,i)!==s&&e(t)}};var Os=Ke((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;var n=new Set([9,10,12,13,32]),r="0".charCodeAt(0),i="9".charCodeAt(0);t.parse=function(e){if("even"===(e=e.trim().toLowerCase()))return[2,0];if("odd"===e)return[2,1];var t=0,s=0,a=c(),o=l();if(t=r&&e.charCodeAt(t)<=i;)s=10*s+(e.charCodeAt(t)-r),t++;return t===n?null:s}function h(){for(;t=n};var r=Math.abs(t),i=(n%r+r)%r;return t>1?function(e){return e>=n&&e%r===i}:function(e){return e<=n&&e%r===i}}}));qe(ys),ys.compile;var Ls=Os,ks=ys,vs=Ke((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.compile=t.parse=void 0,Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return Ls.parse}}),Object.defineProperty(t,"compile",{enumerable:!0,get:function(){return ks.compile}}),t.default=function(e){return(0,ks.compile)((0,Ls.parse)(e))}})),Ds=qe(vs);function Rs(e,t){return n=>{const r=t.getParent(n);return null!=r&&t.isTag(r)&&e(n)}}vs.compile,vs.parse;const Ms={contains:(e,t,{adapter:n})=>function(r){return e(r)&&n.getText(r).includes(t)},icontains(e,t,{adapter:n}){const r=t.toLowerCase();return function(t){return e(t)&&n.getText(t).toLowerCase().includes(r)}},"nth-child"(e,t,{adapter:n,equals:r}){const i=Ds(t);return i===ds.falseFunc?ds.falseFunc:i===ds.trueFunc?Rs(e,n):function(t){const s=n.getSiblings(t);let a=0;for(let e=0;e=0&&!r(t,s[e]);e--)n.isTag(s[e])&&a++;return i(a)&&e(t)}},"nth-of-type"(e,t,{adapter:n,equals:r}){const i=Ds(t);return i===ds.falseFunc?ds.falseFunc:i===ds.trueFunc?Rs(e,n):function(t){const s=n.getSiblings(t);let a=0;for(let e=0;e=0;e--){const i=s[e];if(r(t,i))break;n.isTag(i)&&n.getName(i)===n.getName(t)&&a++}return i(a)&&e(t)}},root:(e,t,{adapter:n})=>t=>{const r=n.getParent(t);return(null==r||!n.isTag(r))&&e(t)},scope(e,t,n,r){const{equals:i}=n;return r&&0!==r.length?1===r.length?t=>i(r[0],t)&&e(t):t=>r.includes(t)&&e(t):Ms.root(e,t,n)},hover:Ps("isHovered"),visited:Ps("isVisited"),active:Ps("isActive")};function Ps(e){return function(t,n,{adapter:r}){const i=r[e];return"function"!=typeof i?ds.falseFunc:function(e){return i(e)&&t(e)}}}const xs={empty:(e,{adapter:t})=>!t.getChildren(e).some((e=>t.isTag(e)||""!==t.getText(e))),"first-child"(e,{adapter:t,equals:n}){if(t.prevElementSibling)return null==t.prevElementSibling(e);const r=t.getSiblings(e).find((e=>t.isTag(e)));return null!=r&&n(e,r)},"last-child"(e,{adapter:t,equals:n}){const r=t.getSiblings(e);for(let i=r.length-1;i>=0;i--){if(n(e,r[i]))return!0;if(t.isTag(r[i]))break}return!1},"first-of-type"(e,{adapter:t,equals:n}){const r=t.getSiblings(e),i=t.getName(e);for(let s=0;s=0;s--){const a=r[s];if(n(e,a))return!0;if(t.isTag(a)&&t.getName(a)===i)break}return!1},"only-of-type"(e,{adapter:t,equals:n}){const r=t.getName(e);return t.getSiblings(e).every((i=>n(e,i)||!t.isTag(i)||t.getName(i)!==r))},"only-child":(e,{adapter:t,equals:n})=>t.getSiblings(e).every((r=>n(e,r)||!t.isTag(r)))};function ws(e,t,n,r){if(null===n){if(e.length>r)throw new Error(`Pseudo-class :${t} requires an argument`)}else if(e.length===r)throw new Error(`Pseudo-class :${t} doesn't have any arguments`)}const Bs={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:":is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )",enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])",selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"},Fs={};function Us(e,t){const n=t.getSiblings(e);if(n.length<=1)return[];const r=n.indexOf(e);return r<0||r===n.length-1?[]:n.slice(r+1).filter(t.isTag)}function Hs(e){return{xmlMode:!!e.xmlMode,lowerCaseAttributeNames:!!e.lowerCaseAttributeNames,lowerCaseTags:!!e.lowerCaseTags,quirksMode:!!e.quirksMode,cacheResults:!!e.cacheResults,pseudos:e.pseudos,adapter:e.adapter,equals:e.equals}}const Gs=(e,t,n,r,i)=>{const s=i(t,Hs(n),r);return s===ds.trueFunc?e:s===ds.falseFunc?ds.falseFunc:t=>s(t)&&e(t)},Ys={is:Gs,matches:Gs,where:Gs,not(e,t,n,r,i){const s=i(t,Hs(n),r);return s===ds.falseFunc?e:s===ds.trueFunc?ds.falseFunc:t=>!s(t)&&e(t)},has(e,t,n,r,i){const{adapter:s}=n,a=Hs(n);a.relativeSelector=!0;const o=t.some((e=>e.some(Ts)))?[Fs]:void 0,c=i(t,a,o);if(c===ds.falseFunc)return ds.falseFunc;const l=function(e,t){return e===ds.falseFunc?ds.falseFunc:n=>t.isTag(n)&&e(n)}(c,s);if(o&&c!==ds.trueFunc){const{shouldTestNextSiblings:t=!1}=c;return n=>{if(!e(n))return!1;o[0]=n;const r=s.getChildren(n),i=t?[...r,...Us(n,s)]:r;return s.existsOne(l,i)}}return t=>e(t)&&s.existsOne(l,s.getChildren(t))}};function qs(e,t){const n=t.getParent(e);return n&&t.isTag(n)?n:null}function Ks(e,t,n,r,i){const{adapter:s,equals:a}=n;switch(t.type){case Zi.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case Zi.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case Zi.Attribute:if(null!=t.namespace)throw new Error("Namespaced attributes are not yet supported by css-select");return n.xmlMode&&!n.lowerCaseAttributeNames||(t.name=t.name.toLowerCase()),bs[t.action](e,t,n);case Zi.Pseudo:return function(e,t,n,r,i){var s;const{name:a,data:o}=t;if(Array.isArray(o)){if(!(a in Ys))throw new Error(`Unknown pseudo-class :${a}(${o})`);return Ys[a](e,o,n,r,i)}const c=null===(s=n.pseudos)||void 0===s?void 0:s[a],l="string"==typeof c?c:Bs[a];if("string"==typeof l){if(null!=o)throw new Error(`Pseudo ${a} doesn't have any arguments`);const t=ps(l);return Ys.is(e,t,n,r,i)}if("function"==typeof c)return ws(c,a,o,1),t=>c(t,o)&&e(t);if(a in Ms)return Ms[a](e,o,n,r);if(a in xs){const t=xs[a];return ws(t,a,o,2),r=>t(r,n,o)&&e(r)}throw new Error(`Unknown pseudo-class :${a}`)}(e,t,n,r,i);case Zi.Tag:{if(null!=t.namespace)throw new Error("Namespaced tag names are not yet supported by css-select");let{name:r}=t;return n.xmlMode&&!n.lowerCaseTags||(r=r.toLowerCase()),function(t){return s.getName(t)===r&&e(t)}}case Zi.Descendant:{if(!1===n.cacheResults||"undefined"==typeof WeakSet)return function(t){let n=t;for(;n=qs(n,s);)if(e(n))return!0;return!1};const t=new WeakSet;return function(n){let r=n;for(;r=qs(r,s);)if(!t.has(r)){if(s.isTag(r)&&e(r))return!0;t.add(r)}return!1}}case"_flexibleDescendant":return function(t){let n=t;do{if(e(n))return!0}while(n=qs(n,s));return!1};case Zi.Parent:return function(t){return s.getChildren(t).some((t=>s.isTag(t)&&e(t)))};case Zi.Child:return function(t){const n=s.getParent(t);return null!=n&&s.isTag(n)&&e(n)};case Zi.Sibling:return function(t){const n=s.getSiblings(t);for(let r=0;re.some(js))))}const Vs={type:Zi.Descendant},Ws={type:"_flexibleDescendant"},Qs={type:Zi.Pseudo,name:"scope",data:null};function Xs(e,t,n){var r;e.forEach(As),n=null!==(r=t.context)&&void 0!==r?r:n;const i=Array.isArray(n),s=n&&(Array.isArray(n)?n:[n]);if(!1!==t.relativeSelector)!function(e,{adapter:t},n){const r=!!(null==n?void 0:n.every((e=>{const n=t.isTag(e)&&t.getParent(e);return e===Fs||n&&t.isTag(n)})));for(const t of e){if(t.length>0&&Ts(t[0])&&t[0].type!==Zi.Descendant);else{if(!r||t.some(js))continue;t.unshift(Vs)}t.unshift(Qs)}}(e,t,s);else if(e.some((e=>e.length>0&&Ts(e[0]))))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let a=!1;const o=e.map((e=>{if(e.length>=2){const[t,n]=e;t.type!==Zi.Pseudo||"scope"!==t.name||(i&&n.type===Zi.Descendant?e[1]=Ws:n.type!==Zi.Adjacent&&n.type!==Zi.Sibling||(a=!0))}return function(e,t,n){var r;return e.reduce(((e,r)=>e===ds.falseFunc?ds.falseFunc:Ks(e,r,t,n,Xs)),null!==(r=t.rootFunc)&&void 0!==r?r:ds.trueFunc)}(e,t,s)})).reduce($s,ds.falseFunc);return o.shouldTestNextSiblings=a,o}function $s(e,t){return t===ds.falseFunc||e===ds.trueFunc?e:e===ds.falseFunc||t===ds.trueFunc?t:function(n){return e(n)||t(n)}}const zs=(e,t)=>e===t,Js={adapter:Se,equals:zs};const Zs=(ea=Xs,function(e,t,n){const r=function(e){var t,n,r,i;const s=null!=e?e:Js;return null!==(t=s.adapter)&&void 0!==t||(s.adapter=Se),null!==(n=s.equals)&&void 0!==n||(s.equals=null!==(i=null===(r=s.adapter)||void 0===r?void 0:r.equals)&&void 0!==i?i:zs),s}(t);return ea(e,r,n)});var ea;function ta(e,t,n=!1){return n&&(e=function(e,t){const n=Array.isArray(e)?e.slice(0):[e],r=n.length;for(let e=0;ee.some(ra))))}function ia(e){const t=[],n=[];for(const r of e)r.some(ra)?t.push(r):n.push(r);return[n,t]}const sa={type:Zi.Universal,namespace:null},aa={type:Zi.Pseudo,name:"scope",data:null};function oa(e,t,n={}){return ca([e],t,n)}function ca(e,t,n={}){if("function"==typeof t)return e.some(t);const[r,i]=ia(ps(t));return r.length>0&&e.some(Zs(r,n))||i.some((t=>ua(t,e,n).length>0))}function la(e,t,n={}){return ha(ps(e),t,n)}function ha(e,t,n){if(0===t.length)return[];const[r,i]=ia(e);let s;if(r.length){const e=Ea(t,r,n);if(0===i.length)return e;e.length&&(s=new Set(e))}for(let e=0;eI(e)&&!s.has(e))):t;if(0===a.length)break;const o=ua(r,t,n);if(o.length)if(s)o.forEach((e=>s.add(e)));else{if(e===i.length-1)return o;s=new Set(o)}}return void 0!==s?s.size===t.length?t:t.filter((e=>s.has(e))):[]}function ua(e,t,n){var r;if(e.some(as)){const i=null!==(r=n.root)&&void 0!==r?r:function(e){for(;e.parent;)e=e.parent;return e}(t[0]),s={...n,context:t,relativeSelector:!1};return e.push(aa),pa(i,e,s,!0,t.length)}return pa(t,e,n,!1,t.length)}function pa(e,t,n,r,i){const s=t.findIndex(ra),a=t.slice(0,s),o=t[s],c=t.length-1===s?i:1/0,l=function(e,t,n){const r=null!=t?parseInt(t,10):NaN;switch(e){case"first":return 1;case"nth":case"eq":return isFinite(r)?r>=0?r+1:1/0:0;case"lt":return isFinite(r)?r>=0?Math.min(r,n):1/0:0;case"gt":return isFinite(r)?1/0:0;case"odd":return 2*n;case"even":return 2*n-1;case"last":case"not":return 1/0}}(o.name,o.data,c);if(0===l)return[];const h=(0!==a.length||Array.isArray(e)?0===a.length?(Array.isArray(e)?e:[e]).filter(I):r||a.some(as)?fa(e,[a],n,l):Ea(e,[a],n):Z(e).filter(I)).slice(0,l);let u=function(e,t,n,r){const i="string"==typeof n?parseInt(n,10):NaN;switch(e){case"first":case"lt":return t;case"last":return t.length>0?[t[t.length-1]]:t;case"nth":case"eq":return isFinite(i)&&Math.abs(i)t%2==0));case"odd":return t.filter(((e,t)=>t%2==1));case"not":{const e=new Set(ha(n,t,r));return t.filter((t=>!e.has(t)))}}}(o.name,h,o.data,n);if(0===u.length||t.length===s+1)return u;const p=t.slice(s+1),f=p.some(as);if(f){if(as(p[0])){const{type:e}=p[0];e!==Zi.Sibling&&e!==Zi.Adjacent||(u=ta(u,Se,!0)),p.unshift(sa)}n={...n,relativeSelector:!1,rootFunc:e=>u.includes(e)}}else n.rootFunc&&n.rootFunc!==Es&&(n={...n,rootFunc:Es});return p.some(ra)?pa(u,p,n,!1,i):f?fa(u,[p],n,i):Ea(u,[p],n)}function fa(e,t,n,r){return da(e,Zs(t,n,e),r)}function da(e,t,n=1/0){return ae((e=>I(e)&&t(e)),ta(e,Se,t.shouldTestNextSiblings),!0,n)}function Ea(e,t,n){const r=(Array.isArray(e)?e:[e]).filter(I);if(0===r.length)return r;const i=Zs(t,n);return i===Es?r:r.filter(i)}var ma=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,s=t.length;i1&&s.length>1?n.reduce((function(e,t){return t(e)}),s):s)}}}var Aa=_a((function(e,t){for(var n,r=[],i=0;ipa(t,e,n,!0,r)));return i.length&&a.push(fa(t,i,n,r)),0===a.length?[]:1===a.length?a[0]:Ee(a.reduce(((e,t)=>[...e,...t])))}(e,i,s))},parent:Ia,parents:Sa,parentsUntil:ba,closest:function(e){var t,n=[];if(!e)return this._make(n);var r={xmlMode:this.options.xmlMode,root:null===(t=this._root)||void 0===t?void 0:t[0]},i="string"==typeof e?function(t){return oa(t,e,r)}:Pa(e);return Bi(this,(function(e){for(;e&&I(e);){if(i(e,0)){n.includes(e)||n.push(e);break}e=e.parent}})),this._make(n)},next:Oa,nextAll:ya,nextUntil:La,prev:ka,prevAll:va,prevUntil:Da,siblings:Ra,children:Ma,contents:function(){var e=this.toArray().reduce((function(e,t){return k(t)?e.concat(t.children):e}),[]);return this._make(e)},each:function(e){for(var t=0,n=this.length;t0})},first:function(){return this.length>1?this._make(this[0]):this},last:function(){return this.length>0?this._make(this[this.length-1]):this},eq:function(e){var t;return 0===(e=+e)&&this.length<=1?this:(e<0&&(e=this.length+e),this._make(null!==(t=this[e])&&void 0!==t?t:[]))},get:function(e){return null==e?this.toArray():this[e<0?this.length+e:e]},toArray:function(){return Array.prototype.slice.call(this)},index:function(e){var t,n;return null==e?(t=this.parent().children(),n=this[0]):"string"==typeof e?(t=this._make(e),n=this[0]):(t=this,n=wi(e)?e[0]:e),Array.prototype.indexOf.call(t,n)},slice:function(e,t){return this._make(Array.prototype.slice.call(this,e,t))},end:function(){var e;return null!==(e=this.prevObject)&&void 0!==e?e:this._make([])},add:function(e,t){var n=this._make(e,t),r=Ee(ma(ma([],this.get(),!0),n.get(),!0));return this._make(r)},addBack:function(e){return this.prevObject?this.add(e?this.prevObject.filter(e):this.prevObject):this}});function Ba(e,t){var n=Array.isArray(e)?e:[e];t?t.children=n:t=null;for(var r=0;r=e.length?null:e[t+n],h=0;h-1&&(p.children.splice(f,1),i===p&&t>f&&o[0]--)}u.parent=i,u.prev&&(u.prev.next=null!==(s=u.next)&&void 0!==s?s:null),u.next&&(u.next.prev=null!==(a=u.prev)&&void 0!==a?a:null),u.prev=0===h?c:r[h-1],u.next=h===r.length-1?l:r[h+1]}return c&&(c.next=r[0]),l&&(l.prev=r[r.length-1]),e.splice.apply(e,o)}var Ga=Ua((function(e,t,n){Ha(t,t.length,0,e,n)})),Ya=Ua((function(e,t,n){Ha(t,0,0,e,n)}));function qa(e){return function(t){for(var n=this.length-1,r=this.parents().last(),i=0;i0&&void 0!==t&&(n[t]+=";".concat(o))}else n[t=s.slice(0,a).trim()]=s.slice(a+1).trim()}return n}(e.attribs.style);if("string"==typeof t)return n[t];if(Array.isArray(t)){var r={};return t.forEach((function(e){null!=n[e]&&(r[e]=n[e])})),r}return n}}var Xa=Object.freeze({__proto__:null,css:function(e,t){return null!=e&&null!=t||"object"==typeof e&&!Array.isArray(e)?Bi(this,(function(n,r){I(n)&&Wa(n,e,t,r)})):0!==this.length?Qa(this[0],e):void 0}}),$a=/%20/g,za=/\r?\n/g;var Ja=Object.freeze({__proto__:null,serialize:function(){var e=this.serializeArray().map((function(e){return"".concat(encodeURIComponent(e.name),"=").concat(encodeURIComponent(e.value))}));return e.join("&").replace($a,"+")},serializeArray:function(){var e=this;return this.map((function(t,n){var r=e._make(n);return I(n)&&"form"===n.name?r.find("input,select,textarea,keygen").toArray():r.filter("input,select,textarea,keygen").toArray()})).filter('[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))').map((function(t,n){var r,i=e._make(n),s=i.attr("name"),a=null!==(r=i.val())&&void 0!==r?r:"";return Array.isArray(a)?a.map((function(e){return{name:s,value:e.replace(za,"\r\n")}})):{name:s,value:a.replace(za,"\r\n")}})).toArray()}}),Za=function(e,t,n){if(this.length=0,this.options=n,this._root=t,e){for(var r=0;r=55296&&e<=57343}function po(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159}function fo(e){return e>=64976&&e<=65007||ro.has(e)}var Eo;!function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"}(Eo=Eo||(Eo={}));class mo{constructor(e){this.handler=e,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=65536,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+Number(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(e){const{line:t,col:n,offset:r}=this;return{code:e,startLine:t,endLine:t,startCol:n,endCol:n,startOffset:r,endOffset:r}}_err(e){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(e)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.html.length-1){const t=this.html.charCodeAt(this.pos+1);if(function(e){return e>=56320&&e<=57343}(t))return this.pos++,this._addGap(),1024*(e-55296)+9216+t}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,io.EOF;return this._err(Eo.surrogateInInputStream),e}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(e,t){this.html.length>0?this.html+=e:this.html=e,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(e,t){if(this.pos+e.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(t)return this.html.startsWith(e,this.pos);for(let t=0;t=this.html.length?(this.endOfChunkHit=!this.lastChunkWritten,io.EOF):this.html.charCodeAt(t)}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,io.EOF;let e=this.html.charCodeAt(this.pos);if(e===io.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,io.LINE_FEED;if(e===io.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine))return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance();this.skipNextNewLine=!1,uo(e)&&(e=this._processSurrogate(e));return null===this.handler.onParseError||e>31&&e<127||e===io.LINE_FEED||e===io.CARRIAGE_RETURN||e>159&&e<64976||this._checkForProblematicCharacters(e),e}_checkForProblematicCharacters(e){po(e)?this._err(Eo.controlCharacterInInputStream):fo(e)&&this._err(Eo.noncharacterInInputStream)}retreat(e){for(this.pos-=e;this.pos=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null}!function(e){e[e.CHARACTER=0]="CHARACTER",e[e.NULL_CHARACTER=1]="NULL_CHARACTER",e[e.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",e[e.START_TAG=3]="START_TAG",e[e.END_TAG=4]="END_TAG",e[e.COMMENT=5]="COMMENT",e[e.DOCTYPE=6]="DOCTYPE",e[e.EOF=7]="EOF",e[e.HIBERNATION=8]="HIBERNATION"}(To=To||(To={}));var Ao=Ke((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏઑඡ༉༦ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲϏϢϸontourIntegraìȹoɴ\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲy;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱còJTabcdfgorstרׯؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ߂ߐĀiyޱrc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣসে্ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४ĀnrࢃgleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpwਖਛgȀLRlr৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼અઋp;椅y;䐜Ādl੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑඞcy;䐊cute;䅃ƀaeyહાron;䅇dil;䅅;䐝ƀgswે૰ativeƀMTV૨ediumSpace;怋hiĀcn૦ëeryThiîtedĀGLଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷreak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪௫ఄ಄ದൡඅ櫬Āoungruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater;EFGLSTஶஷ扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨setĀ;Eೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂෛ෧ขภยา฿ไlig;䅒cute耻Ó䃓Āiyීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲcr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬืde耻Õ䃕es;樷ml耻Ö䃖erĀBP๋Āar๐๓r;怾acĀek๚;揞et;掴arenthesis;揜ҀacfhilorsງຊຏຒດຝະrtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ檻cedesȀ;EST່້扺qual;檯lantEqual;扼ilde;找me;怳Ādpuct;戏ortionĀ;aȥl;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL憒ar;懥eftArrow;懄eiling;按oǵ\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄቕቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHcቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗ĀeiቻDzኀ\0ኇefore;戴a;䎘ĀcnኘkSpace;쀀 Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtèa;䎖r;愨pf;愤cr;쀀𝒵ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒;Eaeiopᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;eᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;eᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰᝃᝈ០៦ᠹᡐᜍ᥈ᥰot;櫭ĀcrᛶkȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;tbrk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯᝳ;䎲;愶een;扬r;쀀𝔟gcostuvwឍឝឳេ៕៛ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀakoᠦᠵĀcn៲ᠣkƀlst֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ;敛;敘;攘;攔;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģbar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;elƀ;bhᥨᥩᥫ䁜;槅sub;柈ŬᥴlĀ;e怢t»pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭒\0᯽\0ᰌƀcprᦲute;䄇̀;abcdsᦿᧀᧄ᧕᧙戩nd;橄rcup;橉Āau᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r;Ecefms᩠ᩢᩫ᪤᪪旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ\0\0aĀ;t䀬;䁀ƀ;fl戁îᅠeĀmxent»eóɍǧ\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯delprvw᭠᭬᭷ᮂᮬᯔarrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;pᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰻᰿ᱝᱩᱵᲞᲬᲷᴍᵻᶑᶫᶻ᷆᷍ròar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂᳖᳜᳠mƀ;oș᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄĀDoḆᴴoôĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»ṺƀaeiἒἚls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧\0耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₥₰₴⃰℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽ƀ;qsؾٌlanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqrⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0proør;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼ròòΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonóquigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roøurĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨íistĀ;sடr;쀀𝔫ȀEest⩦⩹⩼ƀ;qs⩭ƀ;qs⩴lanôií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast⭕⭚⭟lleìl;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖchimpqu⮽⯍⯙⬄⯤⯯Ȁ;cerല⯆ഷ⯉uå;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭ååഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñĀ;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;cⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācrir;榿;쀀𝔬ͯ\0\0\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕⶥⶨrò᪀Āirⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔǒr;榷rp;榹;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ\0\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ脀¶;l䂶leìЃɩ\0\0m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳ᤈ⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t⾴ïrel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⋢⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔ABHabcdefhilmnoprstuxけさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstwガクシスゼゾダッデナp;極Ā;fゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ìâヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘rrowĀ;tㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowóarpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓ròaòՑ;怏oustĀ;a㈞掱che»mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì耻䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;qኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫwar;椪lig耻ß䃟㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rëƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproøim»ኬsðኞĀas㚺㚮ðrn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈadempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xôheadĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roðtré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜtré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((function(e){return e.charCodeAt(0)})))}));qe(Ao);var go=Ke((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=new Uint16Array("Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((function(e){return e.charCodeAt(0)})))}));qe(go);var No=Ke((function(e,t){var n;Object.defineProperty(t,"__esModule",{value:!0}),t.replaceCodePoint=t.fromCodePoint=void 0;var r=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function i(e){var t;return e>=55296&&e<=57343||e>1114111?65533:null!==(t=r.get(e))&&void 0!==t?t:e}t.fromCodePoint=null!==(n=String.fromCodePoint)&&void 0!==n?n:function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),t+=String.fromCharCode(e)},t.replaceCodePoint=i,t.default=function(e){return(0,t.fromCodePoint)(i(e))}}));qe(No),No.replaceCodePoint,No.fromCodePoint;var Co=Ao,Io=go,So=No,bo=Ke((function(e,t){var n=Ge&&Ge.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXML=t.decodeHTMLStrict=t.decodeHTML=t.determineBranch=t.BinTrieFlags=t.fromCodePoint=t.replaceCodePoint=t.decodeCodePoint=t.xmlDecodeTree=t.htmlDecodeTree=void 0;var r=n(Co);t.htmlDecodeTree=r.default;var i=n(Io);t.xmlDecodeTree=i.default;var s=n(So);t.decodeCodePoint=s.default;var a,o,c=So;function l(e){return function(t,n){for(var r="",i=0,c=0;(c=t.indexOf("&",c))>=0;)if(r+=t.slice(i,c),i=c,c+=1,t.charCodeAt(c)!==a.NUM){for(var l=0,u=1,p=0,f=e[p];c>14)-1))break;p+=E}}if(0!==l)r+=1===(E=(e[l]&o.VALUE_LENGTH)>>14)?String.fromCharCode(e[l]&~o.VALUE_LENGTH):2===E?String.fromCharCode(e[l+1]):String.fromCharCode(e[l+1],e[l+2]),i=c-u+1}else{var m=c+1,T=10,_=t.charCodeAt(m);(_|a.To_LOWER_BIT)===a.LOWER_X&&(T=16,c+=1,m+=1);do{_=t.charCodeAt(++c)}while(_>=a.ZERO&&_<=a.NINE||16===T&&(_|a.To_LOWER_BIT)>=a.LOWER_A&&(_|a.To_LOWER_BIT)<=a.LOWER_F);if(m!==c){var A=t.substring(m,c),g=parseInt(A,T);if(t.charCodeAt(c)===a.SEMI)c+=1;else if(n)continue;r+=(0,s.default)(g),i=c}}return r+t.slice(i)}}function h(e,t,n,r){var i=(t&o.BRANCH_LENGTH)>>7,s=t&o.JUMP_TABLE;if(0===i)return 0!==s&&r===s?n:-1;if(s){var a=r-s;return a<0||a>=i?-1:e[n+a]-1}for(var c=n,l=c+i-1;c<=l;){var h=c+l>>>1,u=e[h];if(ur))return e[h+i];l=h-1}}return-1}Object.defineProperty(t,"replaceCodePoint",{enumerable:!0,get:function(){return c.replaceCodePoint}}),Object.defineProperty(t,"fromCodePoint",{enumerable:!0,get:function(){return c.fromCodePoint}}),function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.To_LOWER_BIT=32]="To_LOWER_BIT"}(a||(a={})),function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"}(o=t.BinTrieFlags||(t.BinTrieFlags={})),t.determineBranch=h;var u=l(r.default),p=l(i.default);t.decodeHTML=function(e){return u(e,!1)},t.decodeHTMLStrict=function(e){return u(e,!0)},t.decodeXML=function(e){return p(e,!0)}}));qe(bo),bo.decodeXML,bo.decodeHTMLStrict,bo.decodeHTML;var Oo=bo.determineBranch,yo=bo.BinTrieFlags,Lo=bo.fromCodePoint,ko=bo.replaceCodePoint;bo.decodeCodePoint;var vo,Do,Ro,Mo,Po,xo=bo.xmlDecodeTree,wo=bo.htmlDecodeTree;!function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"}(vo=vo||(vo={})),function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"}(Do=Do||(Do={})),function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"}(Ro=Ro||(Ro={})),function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"}(Mo=Mo||(Mo={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SECTION=94]="SECTION",e[e.SELECT=95]="SELECT",e[e.SOURCE=96]="SOURCE",e[e.SMALL=97]="SMALL",e[e.SPAN=98]="SPAN",e[e.STRIKE=99]="STRIKE",e[e.STRONG=100]="STRONG",e[e.STYLE=101]="STYLE",e[e.SUB=102]="SUB",e[e.SUMMARY=103]="SUMMARY",e[e.SUP=104]="SUP",e[e.TABLE=105]="TABLE",e[e.TBODY=106]="TBODY",e[e.TEMPLATE=107]="TEMPLATE",e[e.TEXTAREA=108]="TEXTAREA",e[e.TFOOT=109]="TFOOT",e[e.TD=110]="TD",e[e.TH=111]="TH",e[e.THEAD=112]="THEAD",e[e.TITLE=113]="TITLE",e[e.TR=114]="TR",e[e.TRACK=115]="TRACK",e[e.TT=116]="TT",e[e.U=117]="U",e[e.UL=118]="UL",e[e.SVG=119]="SVG",e[e.VAR=120]="VAR",e[e.WBR=121]="WBR",e[e.XMP=122]="XMP"}(Po=Po||(Po={}));const Bo=new Map([[Mo.A,Po.A],[Mo.ADDRESS,Po.ADDRESS],[Mo.ANNOTATION_XML,Po.ANNOTATION_XML],[Mo.APPLET,Po.APPLET],[Mo.AREA,Po.AREA],[Mo.ARTICLE,Po.ARTICLE],[Mo.ASIDE,Po.ASIDE],[Mo.B,Po.B],[Mo.BASE,Po.BASE],[Mo.BASEFONT,Po.BASEFONT],[Mo.BGSOUND,Po.BGSOUND],[Mo.BIG,Po.BIG],[Mo.BLOCKQUOTE,Po.BLOCKQUOTE],[Mo.BODY,Po.BODY],[Mo.BR,Po.BR],[Mo.BUTTON,Po.BUTTON],[Mo.CAPTION,Po.CAPTION],[Mo.CENTER,Po.CENTER],[Mo.CODE,Po.CODE],[Mo.COL,Po.COL],[Mo.COLGROUP,Po.COLGROUP],[Mo.DD,Po.DD],[Mo.DESC,Po.DESC],[Mo.DETAILS,Po.DETAILS],[Mo.DIALOG,Po.DIALOG],[Mo.DIR,Po.DIR],[Mo.DIV,Po.DIV],[Mo.DL,Po.DL],[Mo.DT,Po.DT],[Mo.EM,Po.EM],[Mo.EMBED,Po.EMBED],[Mo.FIELDSET,Po.FIELDSET],[Mo.FIGCAPTION,Po.FIGCAPTION],[Mo.FIGURE,Po.FIGURE],[Mo.FONT,Po.FONT],[Mo.FOOTER,Po.FOOTER],[Mo.FOREIGN_OBJECT,Po.FOREIGN_OBJECT],[Mo.FORM,Po.FORM],[Mo.FRAME,Po.FRAME],[Mo.FRAMESET,Po.FRAMESET],[Mo.H1,Po.H1],[Mo.H2,Po.H2],[Mo.H3,Po.H3],[Mo.H4,Po.H4],[Mo.H5,Po.H5],[Mo.H6,Po.H6],[Mo.HEAD,Po.HEAD],[Mo.HEADER,Po.HEADER],[Mo.HGROUP,Po.HGROUP],[Mo.HR,Po.HR],[Mo.HTML,Po.HTML],[Mo.I,Po.I],[Mo.IMG,Po.IMG],[Mo.IMAGE,Po.IMAGE],[Mo.INPUT,Po.INPUT],[Mo.IFRAME,Po.IFRAME],[Mo.KEYGEN,Po.KEYGEN],[Mo.LABEL,Po.LABEL],[Mo.LI,Po.LI],[Mo.LINK,Po.LINK],[Mo.LISTING,Po.LISTING],[Mo.MAIN,Po.MAIN],[Mo.MALIGNMARK,Po.MALIGNMARK],[Mo.MARQUEE,Po.MARQUEE],[Mo.MATH,Po.MATH],[Mo.MENU,Po.MENU],[Mo.META,Po.META],[Mo.MGLYPH,Po.MGLYPH],[Mo.MI,Po.MI],[Mo.MO,Po.MO],[Mo.MN,Po.MN],[Mo.MS,Po.MS],[Mo.MTEXT,Po.MTEXT],[Mo.NAV,Po.NAV],[Mo.NOBR,Po.NOBR],[Mo.NOFRAMES,Po.NOFRAMES],[Mo.NOEMBED,Po.NOEMBED],[Mo.NOSCRIPT,Po.NOSCRIPT],[Mo.OBJECT,Po.OBJECT],[Mo.OL,Po.OL],[Mo.OPTGROUP,Po.OPTGROUP],[Mo.OPTION,Po.OPTION],[Mo.P,Po.P],[Mo.PARAM,Po.PARAM],[Mo.PLAINTEXT,Po.PLAINTEXT],[Mo.PRE,Po.PRE],[Mo.RB,Po.RB],[Mo.RP,Po.RP],[Mo.RT,Po.RT],[Mo.RTC,Po.RTC],[Mo.RUBY,Po.RUBY],[Mo.S,Po.S],[Mo.SCRIPT,Po.SCRIPT],[Mo.SECTION,Po.SECTION],[Mo.SELECT,Po.SELECT],[Mo.SOURCE,Po.SOURCE],[Mo.SMALL,Po.SMALL],[Mo.SPAN,Po.SPAN],[Mo.STRIKE,Po.STRIKE],[Mo.STRONG,Po.STRONG],[Mo.STYLE,Po.STYLE],[Mo.SUB,Po.SUB],[Mo.SUMMARY,Po.SUMMARY],[Mo.SUP,Po.SUP],[Mo.TABLE,Po.TABLE],[Mo.TBODY,Po.TBODY],[Mo.TEMPLATE,Po.TEMPLATE],[Mo.TEXTAREA,Po.TEXTAREA],[Mo.TFOOT,Po.TFOOT],[Mo.TD,Po.TD],[Mo.TH,Po.TH],[Mo.THEAD,Po.THEAD],[Mo.TITLE,Po.TITLE],[Mo.TR,Po.TR],[Mo.TRACK,Po.TRACK],[Mo.TT,Po.TT],[Mo.U,Po.U],[Mo.UL,Po.UL],[Mo.SVG,Po.SVG],[Mo.VAR,Po.VAR],[Mo.WBR,Po.WBR],[Mo.XMP,Po.XMP]]);function Fo(e){var t;return null!==(t=Bo.get(e))&&void 0!==t?t:Po.UNKNOWN}const Uo=Po,Ho={[vo.HTML]:new Set([Uo.ADDRESS,Uo.APPLET,Uo.AREA,Uo.ARTICLE,Uo.ASIDE,Uo.BASE,Uo.BASEFONT,Uo.BGSOUND,Uo.BLOCKQUOTE,Uo.BODY,Uo.BR,Uo.BUTTON,Uo.CAPTION,Uo.CENTER,Uo.COL,Uo.COLGROUP,Uo.DD,Uo.DETAILS,Uo.DIR,Uo.DIV,Uo.DL,Uo.DT,Uo.EMBED,Uo.FIELDSET,Uo.FIGCAPTION,Uo.FIGURE,Uo.FOOTER,Uo.FORM,Uo.FRAME,Uo.FRAMESET,Uo.H1,Uo.H2,Uo.H3,Uo.H4,Uo.H5,Uo.H6,Uo.HEAD,Uo.HEADER,Uo.HGROUP,Uo.HR,Uo.HTML,Uo.IFRAME,Uo.IMG,Uo.INPUT,Uo.LI,Uo.LINK,Uo.LISTING,Uo.MAIN,Uo.MARQUEE,Uo.MENU,Uo.META,Uo.NAV,Uo.NOEMBED,Uo.NOFRAMES,Uo.NOSCRIPT,Uo.OBJECT,Uo.OL,Uo.P,Uo.PARAM,Uo.PLAINTEXT,Uo.PRE,Uo.SCRIPT,Uo.SECTION,Uo.SELECT,Uo.SOURCE,Uo.STYLE,Uo.SUMMARY,Uo.TABLE,Uo.TBODY,Uo.TD,Uo.TEMPLATE,Uo.TEXTAREA,Uo.TFOOT,Uo.TH,Uo.THEAD,Uo.TITLE,Uo.TR,Uo.TRACK,Uo.UL,Uo.WBR,Uo.XMP]),[vo.MATHML]:new Set([Uo.MI,Uo.MO,Uo.MN,Uo.MS,Uo.MTEXT,Uo.ANNOTATION_XML]),[vo.SVG]:new Set([Uo.TITLE,Uo.FOREIGN_OBJECT,Uo.DESC]),[vo.XLINK]:new Set,[vo.XML]:new Set,[vo.XMLNS]:new Set};function Go(e){return e===Uo.H1||e===Uo.H2||e===Uo.H3||e===Uo.H4||e===Uo.H5||e===Uo.H6}const Yo=new Set([Mo.STYLE,Mo.SCRIPT,Mo.XMP,Mo.IFRAME,Mo.NOEMBED,Mo.NOFRAMES,Mo.PLAINTEXT]);const qo=new Map([[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);var Ko;!function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.NAMED_CHARACTER_REFERENCE=72]="NAMED_CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=73]="AMBIGUOUS_AMPERSAND",e[e.NUMERIC_CHARACTER_REFERENCE=74]="NUMERIC_CHARACTER_REFERENCE",e[e.HEXADEMICAL_CHARACTER_REFERENCE_START=75]="HEXADEMICAL_CHARACTER_REFERENCE_START",e[e.HEXADEMICAL_CHARACTER_REFERENCE=76]="HEXADEMICAL_CHARACTER_REFERENCE",e[e.DECIMAL_CHARACTER_REFERENCE=77]="DECIMAL_CHARACTER_REFERENCE",e[e.NUMERIC_CHARACTER_REFERENCE_END=78]="NUMERIC_CHARACTER_REFERENCE_END"}(Ko||(Ko={}));const jo={DATA:Ko.DATA,RCDATA:Ko.RCDATA,RAWTEXT:Ko.RAWTEXT,SCRIPT_DATA:Ko.SCRIPT_DATA,PLAINTEXT:Ko.PLAINTEXT,CDATA_SECTION:Ko.CDATA_SECTION};function Vo(e){return e>=io.DIGIT_0&&e<=io.DIGIT_9}function Wo(e){return e>=io.LATIN_CAPITAL_A&&e<=io.LATIN_CAPITAL_Z}function Qo(e){return function(e){return e>=io.LATIN_SMALL_A&&e<=io.LATIN_SMALL_Z}(e)||Wo(e)}function Xo(e){return Qo(e)||Vo(e)}function $o(e){return e>=io.LATIN_CAPITAL_A&&e<=io.LATIN_CAPITAL_F}function zo(e){return e>=io.LATIN_SMALL_A&&e<=io.LATIN_SMALL_F}function Jo(e){return e+32}function Zo(e){return e===io.SPACE||e===io.LINE_FEED||e===io.TABULATION||e===io.FORM_FEED}function ec(e){return Zo(e)||e===io.SOLIDUS||e===io.GREATER_THAN_SIGN}class tc{constructor(e,t){this.options=e,this.handler=t,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=Ko.DATA,this.returnState=Ko.DATA,this.charRefCode=-1,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new mo(t),this.currentLocation=this.getCurrentLocation(-1)}_err(e){var t,n;null===(n=(t=this.handler).onParseError)||void 0===n||n.call(t,this.preprocessor.getError(e))}getCurrentLocation(e){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-e,startOffset:this.preprocessor.offset-e,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;const e=this._consume();this._ensureHibernation()||this._callState(e)}this.inLoop=!1}}pause(){this.paused=!0}resume(e){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,this.inLoop||(this._runParsingLoop(),this.paused||null==e||e())}write(e,t,n){this.active=!0,this.preprocessor.write(e,t),this._runParsingLoop(),this.paused||null==n||n()}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e),this._runParsingLoop()}_ensureHibernation(){return!!this.preprocessor.endOfChunkHit&&(this._unconsume(this.consumedAfterSnapshot),this.active=!1,!0)}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(e){this.consumedAfterSnapshot-=e,this.preprocessor.retreat(e)}_reconsumeInState(e,t){this.state=e,this._callState(t)}_advanceBy(e){this.consumedAfterSnapshot+=e;for(let t=0;t0&&this._err(Eo.endTagWithAttributes),e.selfClosing&&this._err(Eo.endTagWithTrailingSolidus),this.handler.onEndTag(e)),this.preprocessor.dropParsedChunk()}emitCurrentComment(e){this.prepareToken(e),this.handler.onComment(e),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(e){this.prepareToken(e),this.handler.onDoctype(e),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(e){if(this.currentCharacterToken){switch(e&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=e.startLine,this.currentCharacterToken.location.endCol=e.startCol,this.currentCharacterToken.location.endOffset=e.startOffset),this.currentCharacterToken.type){case To.CHARACTER:this.handler.onCharacter(this.currentCharacterToken);break;case To.NULL_CHARACTER:this.handler.onNullCharacter(this.currentCharacterToken);break;case To.WHITESPACE_CHARACTER:this.handler.onWhitespaceCharacter(this.currentCharacterToken)}this.currentCharacterToken=null}}_emitEOFToken(){const e=this.getCurrentLocation(0);e&&(e.endLine=e.startLine,e.endCol=e.startCol,e.endOffset=e.startOffset),this._emitCurrentCharacterToken(e),this.handler.onEof({type:To.EOF,location:e}),this.active=!1}_appendCharToCurrentCharacterToken(e,t){if(this.currentCharacterToken){if(this.currentCharacterToken.type===e)return void(this.currentCharacterToken.chars+=t);this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk()}this._createCharacterToken(e,t)}_emitCodePoint(e){const t=Zo(e)?To.WHITESPACE_CHARACTER:e===io.NULL?To.NULL_CHARACTER:To.CHARACTER;this._appendCharToCurrentCharacterToken(t,String.fromCodePoint(e))}_emitChars(e){this._appendCharToCurrentCharacterToken(To.CHARACTER,e)}_matchNamedCharacterReference(e){let t=null,n=0,r=!1;for(let s=0,a=wo[0];s>=0&&(s=Oo(wo,a,s+1,e),!(s<0));e=this._consume()){n+=1,a=wo[s];const o=a&yo.VALUE_LENGTH;if(o){const a=(o>>14)-1;if(e!==io.SEMICOLON&&this._isCharacterReferenceInAttribute()&&((i=this.preprocessor.peek(1))===io.EQUALS_SIGN||Xo(i))?(t=[io.AMPERSAND],s+=a):(t=0===a?[wo[s]&~yo.VALUE_LENGTH]:1===a?[wo[++s]]:[wo[++s],wo[++s]],n=0,r=e!==io.SEMICOLON),0===a){this._consume();break}}}var i;return this._unconsume(n),r&&!this.preprocessor.endOfChunkHit&&this._err(Eo.missingSemicolonAfterCharacterReference),this._unconsume(1),t}_isCharacterReferenceInAttribute(){return this.returnState===Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===Ko.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(e){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(e):this._emitCodePoint(e)}_callState(e){switch(this.state){case Ko.DATA:this._stateData(e);break;case Ko.RCDATA:this._stateRcdata(e);break;case Ko.RAWTEXT:this._stateRawtext(e);break;case Ko.SCRIPT_DATA:this._stateScriptData(e);break;case Ko.PLAINTEXT:this._statePlaintext(e);break;case Ko.TAG_OPEN:this._stateTagOpen(e);break;case Ko.END_TAG_OPEN:this._stateEndTagOpen(e);break;case Ko.TAG_NAME:this._stateTagName(e);break;case Ko.RCDATA_LESS_THAN_SIGN:this._stateRcdataLessThanSign(e);break;case Ko.RCDATA_END_TAG_OPEN:this._stateRcdataEndTagOpen(e);break;case Ko.RCDATA_END_TAG_NAME:this._stateRcdataEndTagName(e);break;case Ko.RAWTEXT_LESS_THAN_SIGN:this._stateRawtextLessThanSign(e);break;case Ko.RAWTEXT_END_TAG_OPEN:this._stateRawtextEndTagOpen(e);break;case Ko.RAWTEXT_END_TAG_NAME:this._stateRawtextEndTagName(e);break;case Ko.SCRIPT_DATA_LESS_THAN_SIGN:this._stateScriptDataLessThanSign(e);break;case Ko.SCRIPT_DATA_END_TAG_OPEN:this._stateScriptDataEndTagOpen(e);break;case Ko.SCRIPT_DATA_END_TAG_NAME:this._stateScriptDataEndTagName(e);break;case Ko.SCRIPT_DATA_ESCAPE_START:this._stateScriptDataEscapeStart(e);break;case Ko.SCRIPT_DATA_ESCAPE_START_DASH:this._stateScriptDataEscapeStartDash(e);break;case Ko.SCRIPT_DATA_ESCAPED:this._stateScriptDataEscaped(e);break;case Ko.SCRIPT_DATA_ESCAPED_DASH:this._stateScriptDataEscapedDash(e);break;case Ko.SCRIPT_DATA_ESCAPED_DASH_DASH:this._stateScriptDataEscapedDashDash(e);break;case Ko.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:this._stateScriptDataEscapedLessThanSign(e);break;case Ko.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:this._stateScriptDataEscapedEndTagOpen(e);break;case Ko.SCRIPT_DATA_ESCAPED_END_TAG_NAME:this._stateScriptDataEscapedEndTagName(e);break;case Ko.SCRIPT_DATA_DOUBLE_ESCAPE_START:this._stateScriptDataDoubleEscapeStart(e);break;case Ko.SCRIPT_DATA_DOUBLE_ESCAPED:this._stateScriptDataDoubleEscaped(e);break;case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:this._stateScriptDataDoubleEscapedDash(e);break;case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:this._stateScriptDataDoubleEscapedDashDash(e);break;case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:this._stateScriptDataDoubleEscapedLessThanSign(e);break;case Ko.SCRIPT_DATA_DOUBLE_ESCAPE_END:this._stateScriptDataDoubleEscapeEnd(e);break;case Ko.BEFORE_ATTRIBUTE_NAME:this._stateBeforeAttributeName(e);break;case Ko.ATTRIBUTE_NAME:this._stateAttributeName(e);break;case Ko.AFTER_ATTRIBUTE_NAME:this._stateAfterAttributeName(e);break;case Ko.BEFORE_ATTRIBUTE_VALUE:this._stateBeforeAttributeValue(e);break;case Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED:this._stateAttributeValueDoubleQuoted(e);break;case Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED:this._stateAttributeValueSingleQuoted(e);break;case Ko.ATTRIBUTE_VALUE_UNQUOTED:this._stateAttributeValueUnquoted(e);break;case Ko.AFTER_ATTRIBUTE_VALUE_QUOTED:this._stateAfterAttributeValueQuoted(e);break;case Ko.SELF_CLOSING_START_TAG:this._stateSelfClosingStartTag(e);break;case Ko.BOGUS_COMMENT:this._stateBogusComment(e);break;case Ko.MARKUP_DECLARATION_OPEN:this._stateMarkupDeclarationOpen(e);break;case Ko.COMMENT_START:this._stateCommentStart(e);break;case Ko.COMMENT_START_DASH:this._stateCommentStartDash(e);break;case Ko.COMMENT:this._stateComment(e);break;case Ko.COMMENT_LESS_THAN_SIGN:this._stateCommentLessThanSign(e);break;case Ko.COMMENT_LESS_THAN_SIGN_BANG:this._stateCommentLessThanSignBang(e);break;case Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH:this._stateCommentLessThanSignBangDash(e);break;case Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:this._stateCommentLessThanSignBangDashDash(e);break;case Ko.COMMENT_END_DASH:this._stateCommentEndDash(e);break;case Ko.COMMENT_END:this._stateCommentEnd(e);break;case Ko.COMMENT_END_BANG:this._stateCommentEndBang(e);break;case Ko.DOCTYPE:this._stateDoctype(e);break;case Ko.BEFORE_DOCTYPE_NAME:this._stateBeforeDoctypeName(e);break;case Ko.DOCTYPE_NAME:this._stateDoctypeName(e);break;case Ko.AFTER_DOCTYPE_NAME:this._stateAfterDoctypeName(e);break;case Ko.AFTER_DOCTYPE_PUBLIC_KEYWORD:this._stateAfterDoctypePublicKeyword(e);break;case Ko.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:this._stateBeforeDoctypePublicIdentifier(e);break;case Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:this._stateDoctypePublicIdentifierDoubleQuoted(e);break;case Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:this._stateDoctypePublicIdentifierSingleQuoted(e);break;case Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:this._stateAfterDoctypePublicIdentifier(e);break;case Ko.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:this._stateBetweenDoctypePublicAndSystemIdentifiers(e);break;case Ko.AFTER_DOCTYPE_SYSTEM_KEYWORD:this._stateAfterDoctypeSystemKeyword(e);break;case Ko.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:this._stateBeforeDoctypeSystemIdentifier(e);break;case Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:this._stateDoctypeSystemIdentifierDoubleQuoted(e);break;case Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:this._stateDoctypeSystemIdentifierSingleQuoted(e);break;case Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:this._stateAfterDoctypeSystemIdentifier(e);break;case Ko.BOGUS_DOCTYPE:this._stateBogusDoctype(e);break;case Ko.CDATA_SECTION:this._stateCdataSection(e);break;case Ko.CDATA_SECTION_BRACKET:this._stateCdataSectionBracket(e);break;case Ko.CDATA_SECTION_END:this._stateCdataSectionEnd(e);break;case Ko.CHARACTER_REFERENCE:this._stateCharacterReference(e);break;case Ko.NAMED_CHARACTER_REFERENCE:this._stateNamedCharacterReference(e);break;case Ko.AMBIGUOUS_AMPERSAND:this._stateAmbiguousAmpersand(e);break;case Ko.NUMERIC_CHARACTER_REFERENCE:this._stateNumericCharacterReference(e);break;case Ko.HEXADEMICAL_CHARACTER_REFERENCE_START:this._stateHexademicalCharacterReferenceStart(e);break;case Ko.HEXADEMICAL_CHARACTER_REFERENCE:this._stateHexademicalCharacterReference(e);break;case Ko.DECIMAL_CHARACTER_REFERENCE:this._stateDecimalCharacterReference(e);break;case Ko.NUMERIC_CHARACTER_REFERENCE_END:this._stateNumericCharacterReferenceEnd(e);break;default:throw new Error("Unknown state")}}_stateData(e){switch(e){case io.LESS_THAN_SIGN:this.state=Ko.TAG_OPEN;break;case io.AMPERSAND:this.returnState=Ko.DATA,this.state=Ko.CHARACTER_REFERENCE;break;case io.NULL:this._err(Eo.unexpectedNullCharacter),this._emitCodePoint(e);break;case io.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_stateRcdata(e){switch(e){case io.AMPERSAND:this.returnState=Ko.RCDATA,this.state=Ko.CHARACTER_REFERENCE;break;case io.LESS_THAN_SIGN:this.state=Ko.RCDATA_LESS_THAN_SIGN;break;case io.NULL:this._err(Eo.unexpectedNullCharacter),this._emitChars("�");break;case io.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_stateRawtext(e){switch(e){case io.LESS_THAN_SIGN:this.state=Ko.RAWTEXT_LESS_THAN_SIGN;break;case io.NULL:this._err(Eo.unexpectedNullCharacter),this._emitChars("�");break;case io.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_stateScriptData(e){switch(e){case io.LESS_THAN_SIGN:this.state=Ko.SCRIPT_DATA_LESS_THAN_SIGN;break;case io.NULL:this._err(Eo.unexpectedNullCharacter),this._emitChars("�");break;case io.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_statePlaintext(e){switch(e){case io.NULL:this._err(Eo.unexpectedNullCharacter),this._emitChars("�");break;case io.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_stateTagOpen(e){if(Qo(e))this._createStartTagToken(),this.state=Ko.TAG_NAME,this._stateTagName(e);else switch(e){case io.EXCLAMATION_MARK:this.state=Ko.MARKUP_DECLARATION_OPEN;break;case io.SOLIDUS:this.state=Ko.END_TAG_OPEN;break;case io.QUESTION_MARK:this._err(Eo.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=Ko.BOGUS_COMMENT,this._stateBogusComment(e);break;case io.EOF:this._err(Eo.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break;default:this._err(Eo.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=Ko.DATA,this._stateData(e)}}_stateEndTagOpen(e){if(Qo(e))this._createEndTagToken(),this.state=Ko.TAG_NAME,this._stateTagName(e);else switch(e){case io.GREATER_THAN_SIGN:this._err(Eo.missingEndTagName),this.state=Ko.DATA;break;case io.EOF:this._err(Eo.eofBeforeTagName),this._emitChars(""),this._emitEOFToken();break;default:this._err(Eo.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=Ko.BOGUS_COMMENT,this._stateBogusComment(e)}}_stateTagName(e){const t=this.currentToken;switch(e){case io.SPACE:case io.LINE_FEED:case io.TABULATION:case io.FORM_FEED:this.state=Ko.BEFORE_ATTRIBUTE_NAME;break;case io.SOLIDUS:this.state=Ko.SELF_CLOSING_START_TAG;break;case io.GREATER_THAN_SIGN:this.state=Ko.DATA,this.emitCurrentTagToken();break;case io.NULL:this._err(Eo.unexpectedNullCharacter),t.tagName+="�";break;case io.EOF:this._err(Eo.eofInTag),this._emitEOFToken();break;default:t.tagName+=String.fromCodePoint(Wo(e)?Jo(e):e)}}_stateRcdataLessThanSign(e){e===io.SOLIDUS?this.state=Ko.RCDATA_END_TAG_OPEN:(this._emitChars("<"),this.state=Ko.RCDATA,this._stateRcdata(e))}_stateRcdataEndTagOpen(e){Qo(e)?(this.state=Ko.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(e)):(this._emitChars(""),this.state=Ko.RCDATA,this._stateRcdata(e))}handleSpecialEndTag(e){if(!this.preprocessor.startsWith(this.lastStartTagName,!1))return!this._ensureHibernation();this._createEndTagToken();this.currentToken.tagName=this.lastStartTagName;switch(this.preprocessor.peek(this.lastStartTagName.length)){case io.SPACE:case io.LINE_FEED:case io.TABULATION:case io.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=Ko.BEFORE_ATTRIBUTE_NAME,!1;case io.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=Ko.SELF_CLOSING_START_TAG,!1;case io.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=Ko.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(e){this.handleSpecialEndTag(e)&&(this._emitChars(""),this.state=Ko.RCDATA,this._stateRcdata(e))}_stateRawtextLessThanSign(e){e===io.SOLIDUS?this.state=Ko.RAWTEXT_END_TAG_OPEN:(this._emitChars("<"),this.state=Ko.RAWTEXT,this._stateRawtext(e))}_stateRawtextEndTagOpen(e){Qo(e)?(this.state=Ko.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(e)):(this._emitChars(""),this.state=Ko.RAWTEXT,this._stateRawtext(e))}_stateRawtextEndTagName(e){this.handleSpecialEndTag(e)&&(this._emitChars(""),this.state=Ko.RAWTEXT,this._stateRawtext(e))}_stateScriptDataLessThanSign(e){switch(e){case io.SOLIDUS:this.state=Ko.SCRIPT_DATA_END_TAG_OPEN;break;case io.EXCLAMATION_MARK:this.state=Ko.SCRIPT_DATA_ESCAPE_START,this._emitChars("");break;case io.NULL:this._err(Eo.unexpectedNullCharacter),this.state=Ko.SCRIPT_DATA_ESCAPED,this._emitChars("�");break;case io.EOF:this._err(Eo.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break;default:this.state=Ko.SCRIPT_DATA_ESCAPED,this._emitCodePoint(e)}}_stateScriptDataEscapedLessThanSign(e){e===io.SOLIDUS?this.state=Ko.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Qo(e)?(this._emitChars("<"),this.state=Ko.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(e)):(this._emitChars("<"),this.state=Ko.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(e))}_stateScriptDataEscapedEndTagOpen(e){Qo(e)?(this.state=Ko.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(e)):(this._emitChars(""),this.state=Ko.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(e))}_stateScriptDataEscapedEndTagName(e){this.handleSpecialEndTag(e)&&(this._emitChars(""),this.state=Ko.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(e))}_stateScriptDataDoubleEscapeStart(e){if(this.preprocessor.startsWith(co,!1)&&ec(this.preprocessor.peek(co.length))){this._emitCodePoint(e);for(let e=0;e");break;case io.NULL:this._err(Eo.unexpectedNullCharacter),this.state=Ko.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars("�");break;case io.EOF:this._err(Eo.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break;default:this.state=Ko.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(e)}}_stateScriptDataDoubleEscapedLessThanSign(e){e===io.SOLIDUS?(this.state=Ko.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=Ko.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(e))}_stateScriptDataDoubleEscapeEnd(e){if(this.preprocessor.startsWith(co,!1)&&ec(this.preprocessor.peek(co.length))){this._emitCodePoint(e);for(let e=0;e1114111)this._err(Eo.characterReferenceOutsideUnicodeRange),this.charRefCode=io.REPLACEMENT_CHARACTER;else if(uo(this.charRefCode))this._err(Eo.surrogateCharacterReference),this.charRefCode=io.REPLACEMENT_CHARACTER;else if(fo(this.charRefCode))this._err(Eo.noncharacterCharacterReference);else if(po(this.charRefCode)||this.charRefCode===io.CARRIAGE_RETURN){this._err(Eo.controlCharacterReference);const e=qo.get(this.charRefCode);void 0!==e&&(this.charRefCode=e)}this._flushCodePointConsumedAsCharacterReference(this.charRefCode),this._reconsumeInState(this.returnState,e)}}const nc=new Set([Po.DD,Po.DT,Po.LI,Po.OPTGROUP,Po.OPTION,Po.P,Po.RB,Po.RP,Po.RT,Po.RTC]),rc=new Set([...nc,Po.CAPTION,Po.COLGROUP,Po.TBODY,Po.TD,Po.TFOOT,Po.TH,Po.THEAD,Po.TR]),ic=new Map([[Po.APPLET,vo.HTML],[Po.CAPTION,vo.HTML],[Po.HTML,vo.HTML],[Po.MARQUEE,vo.HTML],[Po.OBJECT,vo.HTML],[Po.TABLE,vo.HTML],[Po.TD,vo.HTML],[Po.TEMPLATE,vo.HTML],[Po.TH,vo.HTML],[Po.ANNOTATION_XML,vo.MATHML],[Po.MI,vo.MATHML],[Po.MN,vo.MATHML],[Po.MO,vo.MATHML],[Po.MS,vo.MATHML],[Po.MTEXT,vo.MATHML],[Po.DESC,vo.SVG],[Po.FOREIGN_OBJECT,vo.SVG],[Po.TITLE,vo.SVG]]),sc=[Po.H1,Po.H2,Po.H3,Po.H4,Po.H5,Po.H6],ac=[Po.TR,Po.TEMPLATE,Po.HTML],oc=[Po.TBODY,Po.TFOOT,Po.THEAD,Po.TEMPLATE,Po.HTML],cc=[Po.TABLE,Po.TEMPLATE,Po.HTML],lc=[Po.TD,Po.TH];class hc{constructor(e,t,n){this.treeAdapter=t,this.handler=n,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=Po.UNKNOWN,this.current=e}get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}_indexOf(e){return this.items.lastIndexOf(e,this.stackTop)}_isInTemplate(){return this.currentTagId===Po.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===vo.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(e,t){this.stackTop++,this.items[this.stackTop]=e,this.current=e,this.tagIDs[this.stackTop]=t,this.currentTagId=t,this._isInTemplate()&&this.tmplCount++,this.handler.onItemPush(e,t,!0)}pop(){const e=this.current;this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(e,!0)}replace(e,t){const n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&(this.current=t)}insertAfter(e,t,n){const r=this._indexOf(e)+1;this.items.splice(r,0,t),this.tagIDs.splice(r,0,n),this.stackTop++,r===this.stackTop&&this._updateCurrentElement(),this.handler.onItemPush(this.current,this.currentTagId,r===this.stackTop)}popUntilTagNamePopped(e){let t=this.stackTop+1;do{t=this.tagIDs.lastIndexOf(e,t-1)}while(t>0&&this.treeAdapter.getNamespaceURI(this.items[t])!==vo.HTML);this.shortenToLength(t<0?0:t)}shortenToLength(e){for(;this.stackTop>=e;){const t=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,this.stackTop=0;n--)if(e.includes(this.tagIDs[n])&&this.treeAdapter.getNamespaceURI(this.items[n])===t)return n;return-1}clearBackTo(e,t){const n=this._indexOfTagNames(e,t);this.shortenToLength(n+1)}clearBackToTableContext(){this.clearBackTo(cc,vo.HTML)}clearBackToTableBodyContext(){this.clearBackTo(oc,vo.HTML)}clearBackToTableRowContext(){this.clearBackTo(ac,vo.HTML)}remove(e){const t=this._indexOf(e);t>=0&&(t===this.stackTop?this.pop():(this.items.splice(t,1),this.tagIDs.splice(t,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(e,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===Po.BODY?this.items[1]:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){const t=this._indexOf(e)-1;return t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return 0===this.stackTop&&this.tagIDs[0]===Po.HTML}hasInScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.tagIDs[t],r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===vo.HTML)return!0;if(ic.get(n)===r)return!1}return!0}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){const t=this.tagIDs[e],n=this.treeAdapter.getNamespaceURI(this.items[e]);if(Go(t)&&n===vo.HTML)return!0;if(ic.get(t)===n)return!1}return!0}hasInListItemScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.tagIDs[t],r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===vo.HTML)return!0;if((n===Po.UL||n===Po.OL)&&r===vo.HTML||ic.get(n)===r)return!1}return!0}hasInButtonScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.tagIDs[t],r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===vo.HTML)return!0;if(n===Po.BUTTON&&r===vo.HTML||ic.get(n)===r)return!1}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.tagIDs[t];if(this.treeAdapter.getNamespaceURI(this.items[t])===vo.HTML){if(n===e)return!0;if(n===Po.TABLE||n===Po.TEMPLATE||n===Po.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--){const t=this.tagIDs[e];if(this.treeAdapter.getNamespaceURI(this.items[e])===vo.HTML){if(t===Po.TBODY||t===Po.THEAD||t===Po.TFOOT)return!0;if(t===Po.TABLE||t===Po.HTML)return!1}}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.tagIDs[t];if(this.treeAdapter.getNamespaceURI(this.items[t])===vo.HTML){if(n===e)return!0;if(n!==Po.OPTION&&n!==Po.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;nc.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;rc.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;this.currentTagId!==e&&rc.has(this.currentTagId);)this.pop()}}var uc;!function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"}(uc=uc||(uc={}));const pc={type:uc.Marker};class fc{constructor(e){this.treeAdapter=e,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(e,t){const n=[],r=t.length,i=this.treeAdapter.getTagName(e),s=this.treeAdapter.getNamespaceURI(e);for(let e=0;e[e.name,e.value])));let i=0;for(let e=0;er.get(e.name)===e.value))&&(i+=1,i>=3&&this.entries.splice(t.idx,1))}}insertMarker(){this.entries.unshift(pc)}pushElement(e,t){this._ensureNoahArkCondition(e),this.entries.unshift({type:uc.Element,element:e,token:t})}insertElementAfterBookmark(e,t){const n=this.entries.indexOf(this.bookmark);this.entries.splice(n,0,{type:uc.Element,element:e,token:t})}removeEntry(e){const t=this.entries.indexOf(e);t>=0&&this.entries.splice(t,1)}clearToLastMarker(){const e=this.entries.indexOf(pc);e>=0?this.entries.splice(0,e+1):this.entries.length=0}getElementEntryInScopeWithTagName(e){const t=this.entries.find((t=>t.type===uc.Marker||this.treeAdapter.getTagName(t.element)===e));return t&&t.type===uc.Element?t:null}getElementEntry(e){return this.entries.find((t=>t.type===uc.Element&&t.element===e))}}function dc(e){return{nodeName:"#text",value:e,parentNode:null}}const Ec={createDocument:()=>({nodeName:"#document",mode:Ro.NO_QUIRKS,childNodes:[]}),createDocumentFragment:()=>({nodeName:"#document-fragment",childNodes:[]}),createElement:(e,t,n)=>({nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}),createCommentNode:e=>({nodeName:"#comment",data:e,parentNode:null}),appendChild(e,t){e.childNodes.push(t),t.parentNode=e},insertBefore(e,t,n){const r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e},setTemplateContent(e,t){e.content=t},getTemplateContent:e=>e.content,setDocumentType(e,t,n,r){const i=e.childNodes.find((e=>"#documentType"===e.nodeName));if(i)i.name=t,i.publicId=n,i.systemId=r;else{const i={nodeName:"#documentType",name:t,publicId:n,systemId:r,parentNode:null};Ec.appendChild(e,i)}},setDocumentMode(e,t){e.mode=t},getDocumentMode:e=>e.mode,detachNode(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},insertText(e,t){if(e.childNodes.length>0){const n=e.childNodes[e.childNodes.length-1];if(Ec.isTextNode(n))return void(n.value+=t)}Ec.appendChild(e,dc(t))},insertTextBefore(e,t,n){const r=e.childNodes[e.childNodes.indexOf(n)-1];r&&Ec.isTextNode(r)?r.value+=t:Ec.insertBefore(e,dc(t),n)},adoptAttributes(e,t){const n=new Set(e.attrs.map((e=>e.name)));for(let r=0;re.childNodes[0],getChildNodes:e=>e.childNodes,getParentNode:e=>e.parentNode,getAttrList:e=>e.attrs,getTagName:e=>e.tagName,getNamespaceURI:e=>e.namespaceURI,getTextNodeContent:e=>e.value,getCommentNodeContent:e=>e.data,getDocumentTypeNodeName:e=>e.name,getDocumentTypeNodePublicId:e=>e.publicId,getDocumentTypeNodeSystemId:e=>e.systemId,isTextNode:e=>"#text"===e.nodeName,isCommentNode:e=>"#comment"===e.nodeName,isDocumentTypeNode:e=>"#documentType"===e.nodeName,isElementNode:e=>Object.prototype.hasOwnProperty.call(e,"tagName"),setNodeSourceCodeLocation(e,t){e.sourceCodeLocation=t},getNodeSourceCodeLocation:e=>e.sourceCodeLocation,updateNodeSourceCodeLocation(e,t){e.sourceCodeLocation={...e.sourceCodeLocation,...t}}},mc=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],Tc=[...mc,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],_c=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),Ac=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],gc=[...Ac,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function Nc(e,t){return t.some((t=>e.startsWith(t)))}const Cc="text/html",Ic="application/xhtml+xml",Sc=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((e=>[e.toLowerCase(),e]))),bc=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:vo.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:vo.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:vo.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:vo.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:vo.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:vo.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:vo.XLINK}],["xml:base",{prefix:"xml",name:"base",namespace:vo.XML}],["xml:lang",{prefix:"xml",name:"lang",namespace:vo.XML}],["xml:space",{prefix:"xml",name:"space",namespace:vo.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:vo.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:vo.XMLNS}]]),Oc=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((e=>[e.toLowerCase(),e]))),yc=new Set([Po.B,Po.BIG,Po.BLOCKQUOTE,Po.BODY,Po.BR,Po.CENTER,Po.CODE,Po.DD,Po.DIV,Po.DL,Po.DT,Po.EM,Po.EMBED,Po.H1,Po.H2,Po.H3,Po.H4,Po.H5,Po.H6,Po.HEAD,Po.HR,Po.I,Po.IMG,Po.LI,Po.LISTING,Po.MENU,Po.META,Po.NOBR,Po.OL,Po.P,Po.PRE,Po.RUBY,Po.S,Po.SMALL,Po.SPAN,Po.STRONG,Po.STRIKE,Po.SUB,Po.SUP,Po.TABLE,Po.TT,Po.U,Po.UL,Po.VAR]);function Lc(e){for(let t=0;t0&&this._setContextModes(e,t)}onItemPop(e,t){var n,r;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(e,this.currentToken),null===(r=(n=this.treeAdapter).onItemPop)||void 0===r||r.call(n,e,this.openElements.current),t){let e,t;0===this.openElements.stackTop&&this.fragmentContext?(e=this.fragmentContext,t=this.fragmentContextID):({current:e,currentTagId:t}=this.openElements),this._setContextModes(e,t)}}_setContextModes(e,t){const n=e===this.document||this.treeAdapter.getNamespaceURI(e)===vo.HTML;this.currentNotInHTML=!n,this.tokenizer.inForeignNode=!n&&!this._isIntegrationPoint(t,e)}_switchToTextParsing(e,t){this._insertElement(e,vo.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=Rc.TEXT}switchToPlaintextParsing(){this.insertionMode=Rc.TEXT,this.originalInsertionMode=Rc.IN_BODY,this.tokenizer.state=jo.PLAINTEXT}_getAdjustedCurrentElement(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;for(;e;){if(this.treeAdapter.getTagName(e)===Mo.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}}_initTokenizerForFragmentParsing(){if(this.fragmentContext&&this.treeAdapter.getNamespaceURI(this.fragmentContext)===vo.HTML)switch(this.fragmentContextID){case Po.TITLE:case Po.TEXTAREA:this.tokenizer.state=jo.RCDATA;break;case Po.STYLE:case Po.XMP:case Po.IFRAME:case Po.NOEMBED:case Po.NOFRAMES:case Po.NOSCRIPT:this.tokenizer.state=jo.RAWTEXT;break;case Po.SCRIPT:this.tokenizer.state=jo.SCRIPT_DATA;break;case Po.PLAINTEXT:this.tokenizer.state=jo.PLAINTEXT}}_setDocumentType(e){const t=e.name||"",n=e.publicId||"",r=e.systemId||"";if(this.treeAdapter.setDocumentType(this.document,t,n,r),e.location){const t=this.treeAdapter.getChildNodes(this.document).find((e=>this.treeAdapter.isDocumentTypeNode(e)));t&&this.treeAdapter.setNodeSourceCodeLocation(t,e.location)}}_attachElementToTree(e,t){if(this.options.sourceCodeLocationInfo){const n=t&&{...t,startTag:t};this.treeAdapter.setNodeSourceCodeLocation(e,n)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{const t=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(t,e)}}_appendElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n,e.location)}_insertElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n,e.location),this.openElements.push(n,e.tagID)}_insertFakeElement(e,t){const n=this.treeAdapter.createElement(e,vo.HTML,[]);this._attachElementToTree(n,null),this.openElements.push(n,t)}_insertTemplate(e){const t=this.treeAdapter.createElement(e.tagName,vo.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t,e.location),this.openElements.push(t,e.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,null)}_insertFakeRootElement(){const e=this.treeAdapter.createElement(Mo.HTML,vo.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(e,null),this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e,Po.HTML)}_appendCommentNode(e,t){const n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,e.location)}_insertCharacters(e){let t,n;if(this._shouldFosterParentOnInsertion()?(({parent:t,beforeElement:n}=this._findFosterParentingLocation()),n?this.treeAdapter.insertTextBefore(t,e.chars,n):this.treeAdapter.insertText(t,e.chars)):(t=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(t,e.chars)),!e.location)return;const r=this.treeAdapter.getChildNodes(t),i=n?r.lastIndexOf(n):r.length,s=r[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(s)){const{endLine:t,endCol:n,endOffset:r}=e.location;this.treeAdapter.updateNodeSourceCodeLocation(s,{endLine:t,endCol:n,endOffset:r})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(s,e.location)}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_setEndLocation(e,t){if(this.treeAdapter.getNodeSourceCodeLocation(e)&&t.location){const n=t.location,r=this.treeAdapter.getTagName(e),i=t.type===To.END_TAG&&r===t.tagName?{endTag:{...n},endLine:n.endLine,endCol:n.endCol,endOffset:n.endOffset}:{endLine:n.startLine,endCol:n.startCol,endOffset:n.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(e,i)}}shouldProcessStartTagTokenInForeignContent(e){if(!this.currentNotInHTML)return!1;let t,n;return 0===this.openElements.stackTop&&this.fragmentContext?(t=this.fragmentContext,n=this.fragmentContextID):({current:t,currentTagId:n}=this.openElements),(e.tagID!==Po.SVG||this.treeAdapter.getTagName(t)!==Mo.ANNOTATION_XML||this.treeAdapter.getNamespaceURI(t)!==vo.MATHML)&&(this.tokenizer.inForeignNode||(e.tagID===Po.MGLYPH||e.tagID===Po.MALIGNMARK)&&!this._isIntegrationPoint(n,t,vo.HTML))}_processToken(e){switch(e.type){case To.CHARACTER:this.onCharacter(e);break;case To.NULL_CHARACTER:this.onNullCharacter(e);break;case To.COMMENT:this.onComment(e);break;case To.DOCTYPE:this.onDoctype(e);break;case To.START_TAG:this._processStartTag(e);break;case To.END_TAG:this.onEndTag(e);break;case To.EOF:this.onEof(e);break;case To.WHITESPACE_CHARACTER:this.onWhitespaceCharacter(e)}}_isIntegrationPoint(e,t,n){return Dc(e,this.treeAdapter.getNamespaceURI(t),this.treeAdapter.getAttrList(t),n)}_reconstructActiveFormattingElements(){const e=this.activeFormattingElements.entries.length;if(e){const t=this.activeFormattingElements.entries.findIndex((e=>e.type===uc.Marker||this.openElements.contains(e.element)));for(let n=t<0?e-1:t-1;n>=0;n--){const e=this.activeFormattingElements.entries[n];this._insertElement(e.token,this.treeAdapter.getNamespaceURI(e.element)),e.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=Rc.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(Po.P),this.openElements.popUntilTagNamePopped(Po.P)}_resetInsertionMode(){for(let e=this.openElements.stackTop;e>=0;e--)switch(0===e&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[e]){case Po.TR:return void(this.insertionMode=Rc.IN_ROW);case Po.TBODY:case Po.THEAD:case Po.TFOOT:return void(this.insertionMode=Rc.IN_TABLE_BODY);case Po.CAPTION:return void(this.insertionMode=Rc.IN_CAPTION);case Po.COLGROUP:return void(this.insertionMode=Rc.IN_COLUMN_GROUP);case Po.TABLE:return void(this.insertionMode=Rc.IN_TABLE);case Po.BODY:return void(this.insertionMode=Rc.IN_BODY);case Po.FRAMESET:return void(this.insertionMode=Rc.IN_FRAMESET);case Po.SELECT:return void this._resetInsertionModeForSelect(e);case Po.TEMPLATE:return void(this.insertionMode=this.tmplInsertionModeStack[0]);case Po.HTML:return void(this.insertionMode=this.headElement?Rc.AFTER_HEAD:Rc.BEFORE_HEAD);case Po.TD:case Po.TH:if(e>0)return void(this.insertionMode=Rc.IN_CELL);break;case Po.HEAD:if(e>0)return void(this.insertionMode=Rc.IN_HEAD)}this.insertionMode=Rc.IN_BODY}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){const e=this.openElements.tagIDs[t];if(e===Po.TEMPLATE)break;if(e===Po.TABLE)return void(this.insertionMode=Rc.IN_SELECT_IN_TABLE)}this.insertionMode=Rc.IN_SELECT}_isElementCausesFosterParenting(e){return Pc.has(e)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let e=this.openElements.stackTop;e>=0;e--){const t=this.openElements.items[e];switch(this.openElements.tagIDs[e]){case Po.TEMPLATE:if(this.treeAdapter.getNamespaceURI(t)===vo.HTML)return{parent:this.treeAdapter.getTemplateContent(t),beforeElement:null};break;case Po.TABLE:{const n=this.treeAdapter.getParentNode(t);return n?{parent:n,beforeElement:t}:{parent:this.openElements.items[e-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_isSpecialElement(e,t){const n=this.treeAdapter.getNamespaceURI(e);return Ho[n].has(t)}onCharacter(e){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode)!function(e,t){e._insertCharacters(t),e.framesetOk=!1}(this,e);else switch(this.insertionMode){case Rc.INITIAL:Vc(this,e);break;case Rc.BEFORE_HTML:Wc(this,e);break;case Rc.BEFORE_HEAD:Qc(this,e);break;case Rc.IN_HEAD:zc(this,e);break;case Rc.IN_HEAD_NO_SCRIPT:Jc(this,e);break;case Rc.AFTER_HEAD:Zc(this,e);break;case Rc.IN_BODY:case Rc.IN_CAPTION:case Rc.IN_CELL:case Rc.IN_TEMPLATE:nl(this,e);break;case Rc.TEXT:case Rc.IN_SELECT:case Rc.IN_SELECT_IN_TABLE:this._insertCharacters(e);break;case Rc.IN_TABLE:case Rc.IN_TABLE_BODY:case Rc.IN_ROW:ul(this,e);break;case Rc.IN_TABLE_TEXT:ml(this,e);break;case Rc.IN_COLUMN_GROUP:gl(this,e);break;case Rc.AFTER_BODY:kl(this,e);break;case Rc.AFTER_AFTER_BODY:vl(this,e)}}onNullCharacter(e){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode)!function(e,t){t.chars="�",e._insertCharacters(t)}(this,e);else switch(this.insertionMode){case Rc.INITIAL:Vc(this,e);break;case Rc.BEFORE_HTML:Wc(this,e);break;case Rc.BEFORE_HEAD:Qc(this,e);break;case Rc.IN_HEAD:zc(this,e);break;case Rc.IN_HEAD_NO_SCRIPT:Jc(this,e);break;case Rc.AFTER_HEAD:Zc(this,e);break;case Rc.TEXT:this._insertCharacters(e);break;case Rc.IN_TABLE:case Rc.IN_TABLE_BODY:case Rc.IN_ROW:ul(this,e);break;case Rc.IN_COLUMN_GROUP:gl(this,e);break;case Rc.AFTER_BODY:kl(this,e);break;case Rc.AFTER_AFTER_BODY:vl(this,e)}}onComment(e){if(this.skipNextNewLine=!1,this.currentNotInHTML)Kc(this,e);else switch(this.insertionMode){case Rc.INITIAL:case Rc.BEFORE_HTML:case Rc.BEFORE_HEAD:case Rc.IN_HEAD:case Rc.IN_HEAD_NO_SCRIPT:case Rc.AFTER_HEAD:case Rc.IN_BODY:case Rc.IN_TABLE:case Rc.IN_CAPTION:case Rc.IN_COLUMN_GROUP:case Rc.IN_TABLE_BODY:case Rc.IN_ROW:case Rc.IN_CELL:case Rc.IN_SELECT:case Rc.IN_SELECT_IN_TABLE:case Rc.IN_TEMPLATE:case Rc.IN_FRAMESET:case Rc.AFTER_FRAMESET:Kc(this,e);break;case Rc.IN_TABLE_TEXT:Tl(this,e);break;case Rc.AFTER_BODY:!function(e,t){e._appendCommentNode(t,e.openElements.items[0])}(this,e);break;case Rc.AFTER_AFTER_BODY:case Rc.AFTER_AFTER_FRAMESET:!function(e,t){e._appendCommentNode(t,e.document)}(this,e)}}onDoctype(e){switch(this.skipNextNewLine=!1,this.insertionMode){case Rc.INITIAL:!function(e,t){e._setDocumentType(t);const n=t.forceQuirks?Ro.QUIRKS:function(e){if("html"!==e.name)return Ro.QUIRKS;const{systemId:t}=e;if(t&&"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"===t.toLowerCase())return Ro.QUIRKS;let{publicId:n}=e;if(null!==n){if(n=n.toLowerCase(),_c.has(n))return Ro.QUIRKS;let e=null===t?Tc:mc;if(Nc(n,e))return Ro.QUIRKS;if(e=null===t?Ac:gc,Nc(n,e))return Ro.LIMITED_QUIRKS}return Ro.NO_QUIRKS}(t);(function(e){return"html"===e.name&&null===e.publicId&&(null===e.systemId||"about:legacy-compat"===e.systemId)})(t)||e._err(t,Eo.nonConformingDoctype);e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=Rc.BEFORE_HTML}(this,e);break;case Rc.BEFORE_HEAD:case Rc.IN_HEAD:case Rc.IN_HEAD_NO_SCRIPT:case Rc.AFTER_HEAD:this._err(e,Eo.misplacedDoctype);break;case Rc.IN_TABLE_TEXT:Tl(this,e)}}onStartTag(e){this.skipNextNewLine=!1,this.currentToken=e,this._processStartTag(e),e.selfClosing&&!e.ackSelfClosing&&this._err(e,Eo.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(e){this.shouldProcessStartTagTokenInForeignContent(e)?function(e,t){if(function(e){const t=e.tagID;return t===Po.FONT&&e.attrs.some((({name:e})=>e===Do.COLOR||e===Do.SIZE||e===Do.FACE))||yc.has(t)}(t))Dl(e),e._startTagOutsideForeignContent(t);else{const n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===vo.MATHML?Lc(t):r===vo.SVG&&(!function(e){const t=Oc.get(e.tagName);null!=t&&(e.tagName=t,e.tagID=Fo(e.tagName))}(t),kc(t)),vc(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}(this,e):this._startTagOutsideForeignContent(e)}_startTagOutsideForeignContent(e){switch(this.insertionMode){case Rc.INITIAL:Vc(this,e);break;case Rc.BEFORE_HTML:!function(e,t){t.tagID===Po.HTML?(e._insertElement(t,vo.HTML),e.insertionMode=Rc.BEFORE_HEAD):Wc(e,t)}(this,e);break;case Rc.BEFORE_HEAD:!function(e,t){switch(t.tagID){case Po.HTML:ol(e,t);break;case Po.HEAD:e._insertElement(t,vo.HTML),e.headElement=e.openElements.current,e.insertionMode=Rc.IN_HEAD;break;default:Qc(e,t)}}(this,e);break;case Rc.IN_HEAD:Xc(this,e);break;case Rc.IN_HEAD_NO_SCRIPT:!function(e,t){switch(t.tagID){case Po.HTML:ol(e,t);break;case Po.BASEFONT:case Po.BGSOUND:case Po.HEAD:case Po.LINK:case Po.META:case Po.NOFRAMES:case Po.STYLE:Xc(e,t);break;case Po.NOSCRIPT:e._err(t,Eo.nestedNoscriptInHead);break;default:Jc(e,t)}}(this,e);break;case Rc.AFTER_HEAD:!function(e,t){switch(t.tagID){case Po.HTML:ol(e,t);break;case Po.BODY:e._insertElement(t,vo.HTML),e.framesetOk=!1,e.insertionMode=Rc.IN_BODY;break;case Po.FRAMESET:e._insertElement(t,vo.HTML),e.insertionMode=Rc.IN_FRAMESET;break;case Po.BASE:case Po.BASEFONT:case Po.BGSOUND:case Po.LINK:case Po.META:case Po.NOFRAMES:case Po.SCRIPT:case Po.STYLE:case Po.TEMPLATE:case Po.TITLE:e._err(t,Eo.abandonedHeadElementChild),e.openElements.push(e.headElement,Po.HEAD),Xc(e,t),e.openElements.remove(e.headElement);break;case Po.HEAD:e._err(t,Eo.misplacedStartTagForHeadElement);break;default:Zc(e,t)}}(this,e);break;case Rc.IN_BODY:ol(this,e);break;case Rc.IN_TABLE:pl(this,e);break;case Rc.IN_TABLE_TEXT:Tl(this,e);break;case Rc.IN_CAPTION:!function(e,t){const n=t.tagID;_l.has(n)?e.openElements.hasInTableScope(Po.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(Po.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Rc.IN_TABLE,pl(e,t)):ol(e,t)}(this,e);break;case Rc.IN_COLUMN_GROUP:Al(this,e);break;case Rc.IN_TABLE_BODY:Nl(this,e);break;case Rc.IN_ROW:Il(this,e);break;case Rc.IN_CELL:!function(e,t){const n=t.tagID;_l.has(n)?(e.openElements.hasInTableScope(Po.TD)||e.openElements.hasInTableScope(Po.TH))&&(e._closeTableCell(),Il(e,t)):ol(e,t)}(this,e);break;case Rc.IN_SELECT:bl(this,e);break;case Rc.IN_SELECT_IN_TABLE:!function(e,t){const n=t.tagID;n===Po.CAPTION||n===Po.TABLE||n===Po.TBODY||n===Po.TFOOT||n===Po.THEAD||n===Po.TR||n===Po.TD||n===Po.TH?(e.openElements.popUntilTagNamePopped(Po.SELECT),e._resetInsertionMode(),e._processStartTag(t)):bl(e,t)}(this,e);break;case Rc.IN_TEMPLATE:!function(e,t){switch(t.tagID){case Po.BASE:case Po.BASEFONT:case Po.BGSOUND:case Po.LINK:case Po.META:case Po.NOFRAMES:case Po.SCRIPT:case Po.STYLE:case Po.TEMPLATE:case Po.TITLE:Xc(e,t);break;case Po.CAPTION:case Po.COLGROUP:case Po.TBODY:case Po.TFOOT:case Po.THEAD:e.tmplInsertionModeStack[0]=Rc.IN_TABLE,e.insertionMode=Rc.IN_TABLE,pl(e,t);break;case Po.COL:e.tmplInsertionModeStack[0]=Rc.IN_COLUMN_GROUP,e.insertionMode=Rc.IN_COLUMN_GROUP,Al(e,t);break;case Po.TR:e.tmplInsertionModeStack[0]=Rc.IN_TABLE_BODY,e.insertionMode=Rc.IN_TABLE_BODY,Nl(e,t);break;case Po.TD:case Po.TH:e.tmplInsertionModeStack[0]=Rc.IN_ROW,e.insertionMode=Rc.IN_ROW,Il(e,t);break;default:e.tmplInsertionModeStack[0]=Rc.IN_BODY,e.insertionMode=Rc.IN_BODY,ol(e,t)}}(this,e);break;case Rc.AFTER_BODY:!function(e,t){t.tagID===Po.HTML?ol(e,t):kl(e,t)}(this,e);break;case Rc.IN_FRAMESET:!function(e,t){switch(t.tagID){case Po.HTML:ol(e,t);break;case Po.FRAMESET:e._insertElement(t,vo.HTML);break;case Po.FRAME:e._appendElement(t,vo.HTML),t.ackSelfClosing=!0;break;case Po.NOFRAMES:Xc(e,t)}}(this,e);break;case Rc.AFTER_FRAMESET:!function(e,t){switch(t.tagID){case Po.HTML:ol(e,t);break;case Po.NOFRAMES:Xc(e,t)}}(this,e);break;case Rc.AFTER_AFTER_BODY:!function(e,t){t.tagID===Po.HTML?ol(e,t):vl(e,t)}(this,e);break;case Rc.AFTER_AFTER_FRAMESET:!function(e,t){switch(t.tagID){case Po.HTML:ol(e,t);break;case Po.NOFRAMES:Xc(e,t)}}(this,e)}}onEndTag(e){this.skipNextNewLine=!1,this.currentToken=e,this.currentNotInHTML?function(e,t){if(t.tagID===Po.P||t.tagID===Po.BR)return Dl(e),void e._endTagOutsideForeignContent(t);for(let n=e.openElements.stackTop;n>0;n--){const r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===vo.HTML){e._endTagOutsideForeignContent(t);break}const i=e.treeAdapter.getTagName(r);if(i.toLowerCase()===t.tagName){t.tagName=i,e.openElements.shortenToLength(n);break}}}(this,e):this._endTagOutsideForeignContent(e)}_endTagOutsideForeignContent(e){switch(this.insertionMode){case Rc.INITIAL:Vc(this,e);break;case Rc.BEFORE_HTML:!function(e,t){const n=t.tagID;n!==Po.HTML&&n!==Po.HEAD&&n!==Po.BODY&&n!==Po.BR||Wc(e,t)}(this,e);break;case Rc.BEFORE_HEAD:!function(e,t){const n=t.tagID;n===Po.HEAD||n===Po.BODY||n===Po.HTML||n===Po.BR?Qc(e,t):e._err(t,Eo.endTagWithoutMatchingOpenElement)}(this,e);break;case Rc.IN_HEAD:!function(e,t){switch(t.tagID){case Po.HEAD:e.openElements.pop(),e.insertionMode=Rc.AFTER_HEAD;break;case Po.BODY:case Po.BR:case Po.HTML:zc(e,t);break;case Po.TEMPLATE:$c(e,t);break;default:e._err(t,Eo.endTagWithoutMatchingOpenElement)}}(this,e);break;case Rc.IN_HEAD_NO_SCRIPT:!function(e,t){switch(t.tagID){case Po.NOSCRIPT:e.openElements.pop(),e.insertionMode=Rc.IN_HEAD;break;case Po.BR:Jc(e,t);break;default:e._err(t,Eo.endTagWithoutMatchingOpenElement)}}(this,e);break;case Rc.AFTER_HEAD:!function(e,t){switch(t.tagID){case Po.BODY:case Po.HTML:case Po.BR:Zc(e,t);break;case Po.TEMPLATE:$c(e,t);break;default:e._err(t,Eo.endTagWithoutMatchingOpenElement)}}(this,e);break;case Rc.IN_BODY:ll(this,e);break;case Rc.TEXT:!function(e,t){var n;t.tagID===Po.SCRIPT&&(null===(n=e.scriptHandler)||void 0===n||n.call(e,e.openElements.current));e.openElements.pop(),e.insertionMode=e.originalInsertionMode}(this,e);break;case Rc.IN_TABLE:fl(this,e);break;case Rc.IN_TABLE_TEXT:Tl(this,e);break;case Rc.IN_CAPTION:!function(e,t){const n=t.tagID;switch(n){case Po.CAPTION:case Po.TABLE:e.openElements.hasInTableScope(Po.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(Po.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Rc.IN_TABLE,n===Po.TABLE&&fl(e,t));break;case Po.BODY:case Po.COL:case Po.COLGROUP:case Po.HTML:case Po.TBODY:case Po.TD:case Po.TFOOT:case Po.TH:case Po.THEAD:case Po.TR:break;default:ll(e,t)}}(this,e);break;case Rc.IN_COLUMN_GROUP:!function(e,t){switch(t.tagID){case Po.COLGROUP:e.openElements.currentTagId===Po.COLGROUP&&(e.openElements.pop(),e.insertionMode=Rc.IN_TABLE);break;case Po.TEMPLATE:$c(e,t);break;case Po.COL:break;default:gl(e,t)}}(this,e);break;case Rc.IN_TABLE_BODY:Cl(this,e);break;case Rc.IN_ROW:Sl(this,e);break;case Rc.IN_CELL:!function(e,t){const n=t.tagID;switch(n){case Po.TD:case Po.TH:e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=Rc.IN_ROW);break;case Po.TABLE:case Po.TBODY:case Po.TFOOT:case Po.THEAD:case Po.TR:e.openElements.hasInTableScope(n)&&(e._closeTableCell(),Sl(e,t));break;case Po.BODY:case Po.CAPTION:case Po.COL:case Po.COLGROUP:case Po.HTML:break;default:ll(e,t)}}(this,e);break;case Rc.IN_SELECT:Ol(this,e);break;case Rc.IN_SELECT_IN_TABLE:!function(e,t){const n=t.tagID;n===Po.CAPTION||n===Po.TABLE||n===Po.TBODY||n===Po.TFOOT||n===Po.THEAD||n===Po.TR||n===Po.TD||n===Po.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(Po.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Ol(e,t)}(this,e);break;case Rc.IN_TEMPLATE:!function(e,t){t.tagID===Po.TEMPLATE&&$c(e,t)}(this,e);break;case Rc.AFTER_BODY:Ll(this,e);break;case Rc.IN_FRAMESET:!function(e,t){t.tagID!==Po.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagId===Po.FRAMESET||(e.insertionMode=Rc.AFTER_FRAMESET))}(this,e);break;case Rc.AFTER_FRAMESET:!function(e,t){t.tagID===Po.HTML&&(e.insertionMode=Rc.AFTER_AFTER_FRAMESET)}(this,e);break;case Rc.AFTER_AFTER_BODY:vl(this,e)}}onEof(e){switch(this.insertionMode){case Rc.INITIAL:Vc(this,e);break;case Rc.BEFORE_HTML:Wc(this,e);break;case Rc.BEFORE_HEAD:Qc(this,e);break;case Rc.IN_HEAD:zc(this,e);break;case Rc.IN_HEAD_NO_SCRIPT:Jc(this,e);break;case Rc.AFTER_HEAD:Zc(this,e);break;case Rc.IN_BODY:case Rc.IN_TABLE:case Rc.IN_CAPTION:case Rc.IN_COLUMN_GROUP:case Rc.IN_TABLE_BODY:case Rc.IN_ROW:case Rc.IN_CELL:case Rc.IN_SELECT:case Rc.IN_SELECT_IN_TABLE:hl(this,e);break;case Rc.TEXT:!function(e,t){e._err(t,Eo.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t)}(this,e);break;case Rc.IN_TABLE_TEXT:Tl(this,e);break;case Rc.IN_TEMPLATE:yl(this,e);break;case Rc.AFTER_BODY:case Rc.IN_FRAMESET:case Rc.AFTER_FRAMESET:case Rc.AFTER_AFTER_BODY:case Rc.AFTER_AFTER_FRAMESET:jc(this,e)}}onWhitespaceCharacter(e){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,e.chars.charCodeAt(0)===io.LINE_FEED)){if(1===e.chars.length)return;e.chars=e.chars.substr(1)}if(this.tokenizer.inForeignNode)this._insertCharacters(e);else switch(this.insertionMode){case Rc.IN_HEAD:case Rc.IN_HEAD_NO_SCRIPT:case Rc.AFTER_HEAD:case Rc.TEXT:case Rc.IN_COLUMN_GROUP:case Rc.IN_SELECT:case Rc.IN_SELECT_IN_TABLE:case Rc.IN_FRAMESET:case Rc.AFTER_FRAMESET:this._insertCharacters(e);break;case Rc.IN_BODY:case Rc.IN_CAPTION:case Rc.IN_CELL:case Rc.IN_TEMPLATE:case Rc.AFTER_BODY:case Rc.AFTER_AFTER_BODY:case Rc.AFTER_AFTER_FRAMESET:tl(this,e);break;case Rc.IN_TABLE:case Rc.IN_TABLE_BODY:case Rc.IN_ROW:ul(this,e);break;case Rc.IN_TABLE_TEXT:El(this,e)}}}function Bc(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagID)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):cl(e,t),n}function Fc(e,t){let n=null,r=e.openElements.stackTop;for(;r>=0;r--){const i=e.openElements.items[r];if(i===t.element)break;e._isSpecialElement(i,e.openElements.tagIDs[r])&&(n=i)}return n||(e.openElements.shortenToLength(r<0?0:r),e.activeFormattingElements.removeEntry(t)),n}function Uc(e,t,n){let r=t,i=e.openElements.getCommonAncestor(t);for(let s=0,a=i;a!==n;s++,a=i){i=e.openElements.getCommonAncestor(a);const n=e.activeFormattingElements.getElementEntry(a),o=n&&s>=3;!n||o?(o&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(a)):(a=Hc(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(a,r),r=a)}return r}function Hc(e,t){const n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function Gc(e,t,n){const r=Fo(e.treeAdapter.getTagName(t));if(e._isElementCausesFosterParenting(r))e._fosterParentElement(n);else{const i=e.treeAdapter.getNamespaceURI(t);r===Po.TEMPLATE&&i===vo.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}function Yc(e,t,n){const r=e.treeAdapter.getNamespaceURI(n.element),{token:i}=n,s=e.treeAdapter.createElement(i.tagName,r,i.attrs);e._adoptNodes(t,s),e.treeAdapter.appendChild(t,s),e.activeFormattingElements.insertElementAfterBookmark(s,i),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,s,i.tagID)}function qc(e,t){for(let n=0;n<8;n++){const n=Bc(e,t);if(!n)break;const r=Fc(e,n);if(!r)break;e.activeFormattingElements.bookmark=n;const i=Uc(e,r,n.element),s=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(i),s&&Gc(e,s,i),Yc(e,r,n)}}function Kc(e,t){e._appendCommentNode(t,e.openElements.currentTmplContentOrNode)}function jc(e,t){if(e.stopped=!0,t.location){const n=e.fragmentContext?0:2;for(let r=e.openElements.stackTop;r>=n;r--)e._setEndLocation(e.openElements.items[r],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){const n=e.openElements.items[0],r=e.treeAdapter.getNodeSourceCodeLocation(n);if(r&&!r.endTag&&(e._setEndLocation(n,t),e.openElements.stackTop>=1)){const n=e.openElements.items[1],r=e.treeAdapter.getNodeSourceCodeLocation(n);r&&!r.endTag&&e._setEndLocation(n,t)}}}}function Vc(e,t){e._err(t,Eo.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,Ro.QUIRKS),e.insertionMode=Rc.BEFORE_HTML,e._processToken(t)}function Wc(e,t){e._insertFakeRootElement(),e.insertionMode=Rc.BEFORE_HEAD,e._processToken(t)}function Qc(e,t){e._insertFakeElement(Mo.HEAD,Po.HEAD),e.headElement=e.openElements.current,e.insertionMode=Rc.IN_HEAD,e._processToken(t)}function Xc(e,t){switch(t.tagID){case Po.HTML:ol(e,t);break;case Po.BASE:case Po.BASEFONT:case Po.BGSOUND:case Po.LINK:case Po.META:e._appendElement(t,vo.HTML),t.ackSelfClosing=!0;break;case Po.TITLE:e._switchToTextParsing(t,jo.RCDATA);break;case Po.NOSCRIPT:e.options.scriptingEnabled?e._switchToTextParsing(t,jo.RAWTEXT):(e._insertElement(t,vo.HTML),e.insertionMode=Rc.IN_HEAD_NO_SCRIPT);break;case Po.NOFRAMES:case Po.STYLE:e._switchToTextParsing(t,jo.RAWTEXT);break;case Po.SCRIPT:e._switchToTextParsing(t,jo.SCRIPT_DATA);break;case Po.TEMPLATE:e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=Rc.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(Rc.IN_TEMPLATE);break;case Po.HEAD:e._err(t,Eo.misplacedStartTagForHeadElement);break;default:zc(e,t)}}function $c(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==Po.TEMPLATE&&e._err(t,Eo.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(Po.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,Eo.endTagWithoutMatchingOpenElement)}function zc(e,t){e.openElements.pop(),e.insertionMode=Rc.AFTER_HEAD,e._processToken(t)}function Jc(e,t){const n=t.type===To.EOF?Eo.openElementsLeftAfterEof:Eo.disallowedContentInNoscriptInHead;e._err(t,n),e.openElements.pop(),e.insertionMode=Rc.IN_HEAD,e._processToken(t)}function Zc(e,t){e._insertFakeElement(Mo.BODY,Po.BODY),e.insertionMode=Rc.IN_BODY,el(e,t)}function el(e,t){switch(t.type){case To.CHARACTER:nl(e,t);break;case To.WHITESPACE_CHARACTER:tl(e,t);break;case To.COMMENT:Kc(e,t);break;case To.START_TAG:ol(e,t);break;case To.END_TAG:ll(e,t);break;case To.EOF:hl(e,t)}}function tl(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function nl(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function rl(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,vo.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function il(e){const t=_o(e,Do.TYPE);return null!=t&&"hidden"===t.toLowerCase()}function sl(e,t){e._switchToTextParsing(t,jo.RAWTEXT)}function al(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,vo.HTML)}function ol(e,t){switch(t.tagID){case Po.I:case Po.S:case Po.B:case Po.U:case Po.EM:case Po.TT:case Po.BIG:case Po.CODE:case Po.FONT:case Po.SMALL:case Po.STRIKE:case Po.STRONG:!function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,vo.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t);break;case Po.A:!function(e,t){const n=e.activeFormattingElements.getElementEntryInScopeWithTagName(Mo.A);n&&(qc(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,vo.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t);break;case Po.H1:case Po.H2:case Po.H3:case Po.H4:case Po.H5:case Po.H6:!function(e,t){e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),Go(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,vo.HTML)}(e,t);break;case Po.P:case Po.DL:case Po.OL:case Po.UL:case Po.DIV:case Po.DIR:case Po.NAV:case Po.MAIN:case Po.MENU:case Po.ASIDE:case Po.CENTER:case Po.FIGURE:case Po.FOOTER:case Po.HEADER:case Po.HGROUP:case Po.DIALOG:case Po.DETAILS:case Po.ADDRESS:case Po.ARTICLE:case Po.SECTION:case Po.SUMMARY:case Po.FIELDSET:case Po.BLOCKQUOTE:case Po.FIGCAPTION:!function(e,t){e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),e._insertElement(t,vo.HTML)}(e,t);break;case Po.LI:case Po.DD:case Po.DT:!function(e,t){e.framesetOk=!1;const n=t.tagID;for(let t=e.openElements.stackTop;t>=0;t--){const r=e.openElements.tagIDs[t];if(n===Po.LI&&r===Po.LI||(n===Po.DD||n===Po.DT)&&(r===Po.DD||r===Po.DT)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r);break}if(r!==Po.ADDRESS&&r!==Po.DIV&&r!==Po.P&&e._isSpecialElement(e.openElements.items[t],r))break}e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),e._insertElement(t,vo.HTML)}(e,t);break;case Po.BR:case Po.IMG:case Po.WBR:case Po.AREA:case Po.EMBED:case Po.KEYGEN:rl(e,t);break;case Po.HR:!function(e,t){e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),e._appendElement(t,vo.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}(e,t);break;case Po.RB:case Po.RTC:!function(e,t){e.openElements.hasInScope(Po.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,vo.HTML)}(e,t);break;case Po.RT:case Po.RP:!function(e,t){e.openElements.hasInScope(Po.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(Po.RTC),e._insertElement(t,vo.HTML)}(e,t);break;case Po.PRE:case Po.LISTING:!function(e,t){e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),e._insertElement(t,vo.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}(e,t);break;case Po.XMP:!function(e,t){e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,jo.RAWTEXT)}(e,t);break;case Po.SVG:!function(e,t){e._reconstructActiveFormattingElements(),kc(t),vc(t),t.selfClosing?e._appendElement(t,vo.SVG):e._insertElement(t,vo.SVG),t.ackSelfClosing=!0}(e,t);break;case Po.HTML:!function(e,t){0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}(e,t);break;case Po.BASE:case Po.LINK:case Po.META:case Po.STYLE:case Po.TITLE:case Po.SCRIPT:case Po.BGSOUND:case Po.BASEFONT:case Po.TEMPLATE:Xc(e,t);break;case Po.BODY:!function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,t);break;case Po.FORM:!function(e,t){const n=e.openElements.tmplCount>0;e.formElement&&!n||(e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),e._insertElement(t,vo.HTML),n||(e.formElement=e.openElements.current))}(e,t);break;case Po.NOBR:!function(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(Po.NOBR)&&(qc(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,vo.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t);break;case Po.MATH:!function(e,t){e._reconstructActiveFormattingElements(),Lc(t),vc(t),t.selfClosing?e._appendElement(t,vo.MATHML):e._insertElement(t,vo.MATHML),t.ackSelfClosing=!0}(e,t);break;case Po.TABLE:!function(e,t){e.treeAdapter.getDocumentMode(e.document)!==Ro.QUIRKS&&e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),e._insertElement(t,vo.HTML),e.framesetOk=!1,e.insertionMode=Rc.IN_TABLE}(e,t);break;case Po.INPUT:!function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,vo.HTML),il(t)||(e.framesetOk=!1),t.ackSelfClosing=!0}(e,t);break;case Po.PARAM:case Po.TRACK:case Po.SOURCE:!function(e,t){e._appendElement(t,vo.HTML),t.ackSelfClosing=!0}(e,t);break;case Po.IMAGE:!function(e,t){t.tagName=Mo.IMG,t.tagID=Po.IMG,rl(e,t)}(e,t);break;case Po.BUTTON:!function(e,t){e.openElements.hasInScope(Po.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(Po.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,vo.HTML),e.framesetOk=!1}(e,t);break;case Po.APPLET:case Po.OBJECT:case Po.MARQUEE:!function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,vo.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}(e,t);break;case Po.IFRAME:!function(e,t){e.framesetOk=!1,e._switchToTextParsing(t,jo.RAWTEXT)}(e,t);break;case Po.SELECT:!function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,vo.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===Rc.IN_TABLE||e.insertionMode===Rc.IN_CAPTION||e.insertionMode===Rc.IN_TABLE_BODY||e.insertionMode===Rc.IN_ROW||e.insertionMode===Rc.IN_CELL?Rc.IN_SELECT_IN_TABLE:Rc.IN_SELECT}(e,t);break;case Po.OPTION:case Po.OPTGROUP:!function(e,t){e.openElements.currentTagId===Po.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,vo.HTML)}(e,t);break;case Po.NOEMBED:sl(e,t);break;case Po.FRAMESET:!function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,vo.HTML),e.insertionMode=Rc.IN_FRAMESET)}(e,t);break;case Po.TEXTAREA:!function(e,t){e._insertElement(t,vo.HTML),e.skipNextNewLine=!0,e.tokenizer.state=jo.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=Rc.TEXT}(e,t);break;case Po.NOSCRIPT:e.options.scriptingEnabled?sl(e,t):al(e,t);break;case Po.PLAINTEXT:!function(e,t){e.openElements.hasInButtonScope(Po.P)&&e._closePElement(),e._insertElement(t,vo.HTML),e.tokenizer.state=jo.PLAINTEXT}(e,t);break;case Po.COL:case Po.TH:case Po.TD:case Po.TR:case Po.HEAD:case Po.FRAME:case Po.TBODY:case Po.TFOOT:case Po.THEAD:case Po.CAPTION:case Po.COLGROUP:break;default:al(e,t)}}function cl(e,t){const n=t.tagName,r=t.tagID;for(let t=e.openElements.stackTop;t>0;t--){const i=e.openElements.items[t],s=e.openElements.tagIDs[t];if(r===s&&(r!==Po.UNKNOWN||e.treeAdapter.getTagName(i)===n)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.stackTop>=t&&e.openElements.shortenToLength(t);break}if(e._isSpecialElement(i,s))break}}function ll(e,t){switch(t.tagID){case Po.A:case Po.B:case Po.I:case Po.S:case Po.U:case Po.EM:case Po.TT:case Po.BIG:case Po.CODE:case Po.FONT:case Po.NOBR:case Po.SMALL:case Po.STRIKE:case Po.STRONG:qc(e,t);break;case Po.P:!function(e){e.openElements.hasInButtonScope(Po.P)||e._insertFakeElement(Mo.P,Po.P),e._closePElement()}(e);break;case Po.DL:case Po.UL:case Po.OL:case Po.DIR:case Po.DIV:case Po.NAV:case Po.PRE:case Po.MAIN:case Po.MENU:case Po.ASIDE:case Po.BUTTON:case Po.CENTER:case Po.FIGURE:case Po.FOOTER:case Po.HEADER:case Po.HGROUP:case Po.DIALOG:case Po.ADDRESS:case Po.ARTICLE:case Po.DETAILS:case Po.SECTION:case Po.SUMMARY:case Po.LISTING:case Po.FIELDSET:case Po.BLOCKQUOTE:case Po.FIGCAPTION:!function(e,t){const n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}(e,t);break;case Po.LI:!function(e){e.openElements.hasInListItemScope(Po.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(Po.LI),e.openElements.popUntilTagNamePopped(Po.LI))}(e);break;case Po.DD:case Po.DT:!function(e,t){const n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,t);break;case Po.H1:case Po.H2:case Po.H3:case Po.H4:case Po.H5:case Po.H6:!function(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}(e);break;case Po.BR:!function(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(Mo.BR,Po.BR),e.openElements.pop(),e.framesetOk=!1}(e);break;case Po.BODY:!function(e,t){if(e.openElements.hasInScope(Po.BODY)&&(e.insertionMode=Rc.AFTER_BODY,e.options.sourceCodeLocationInfo)){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e._setEndLocation(n,t)}}(e,t);break;case Po.HTML:!function(e,t){e.openElements.hasInScope(Po.BODY)&&(e.insertionMode=Rc.AFTER_BODY,Ll(e,t))}(e,t);break;case Po.FORM:!function(e){const t=e.openElements.tmplCount>0,{formElement:n}=e;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(Po.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(Po.FORM):n&&e.openElements.remove(n))}(e);break;case Po.APPLET:case Po.OBJECT:case Po.MARQUEE:!function(e,t){const n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}(e,t);break;case Po.TEMPLATE:$c(e,t);break;default:cl(e,t)}}function hl(e,t){e.tmplInsertionModeStack.length>0?yl(e,t):jc(e,t)}function ul(e,t){if(Pc.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=Rc.IN_TABLE_TEXT,t.type){case To.CHARACTER:ml(e,t);break;case To.WHITESPACE_CHARACTER:El(e,t)}else dl(e,t)}function pl(e,t){switch(t.tagID){case Po.TD:case Po.TH:case Po.TR:!function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(Mo.TBODY,Po.TBODY),e.insertionMode=Rc.IN_TABLE_BODY,Nl(e,t)}(e,t);break;case Po.STYLE:case Po.SCRIPT:case Po.TEMPLATE:Xc(e,t);break;case Po.COL:!function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(Mo.COLGROUP,Po.COLGROUP),e.insertionMode=Rc.IN_COLUMN_GROUP,Al(e,t)}(e,t);break;case Po.FORM:!function(e,t){e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,vo.HTML),e.formElement=e.openElements.current,e.openElements.pop())}(e,t);break;case Po.TABLE:!function(e,t){e.openElements.hasInTableScope(Po.TABLE)&&(e.openElements.popUntilTagNamePopped(Po.TABLE),e._resetInsertionMode(),e._processStartTag(t))}(e,t);break;case Po.TBODY:case Po.TFOOT:case Po.THEAD:!function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,vo.HTML),e.insertionMode=Rc.IN_TABLE_BODY}(e,t);break;case Po.INPUT:!function(e,t){il(t)?e._appendElement(t,vo.HTML):dl(e,t),t.ackSelfClosing=!0}(e,t);break;case Po.CAPTION:!function(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,vo.HTML),e.insertionMode=Rc.IN_CAPTION}(e,t);break;case Po.COLGROUP:!function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,vo.HTML),e.insertionMode=Rc.IN_COLUMN_GROUP}(e,t);break;default:dl(e,t)}}function fl(e,t){switch(t.tagID){case Po.TABLE:e.openElements.hasInTableScope(Po.TABLE)&&(e.openElements.popUntilTagNamePopped(Po.TABLE),e._resetInsertionMode());break;case Po.TEMPLATE:$c(e,t);break;case Po.BODY:case Po.CAPTION:case Po.COL:case Po.COLGROUP:case Po.HTML:case Po.TBODY:case Po.TD:case Po.TFOOT:case Po.TH:case Po.THEAD:case Po.TR:break;default:dl(e,t)}}function dl(e,t){const n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,el(e,t),e.fosterParentingEnabled=n}function El(e,t){e.pendingCharacterTokens.push(t)}function ml(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0}function Tl(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n0&&e.openElements.currentTagId===Po.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===Po.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===Po.OPTGROUP&&e.openElements.pop();break;case Po.OPTION:e.openElements.currentTagId===Po.OPTION&&e.openElements.pop();break;case Po.SELECT:e.openElements.hasInSelectScope(Po.SELECT)&&(e.openElements.popUntilTagNamePopped(Po.SELECT),e._resetInsertionMode());break;case Po.TEMPLATE:$c(e,t)}}function yl(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(Po.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):jc(e,t)}function Ll(e,t){var n;if(t.tagID===Po.HTML){if(e.fragmentContext||(e.insertionMode=Rc.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===Po.HTML){e._setEndLocation(e.openElements.items[0],t);const r=e.openElements.items[1];r&&!(null===(n=e.treeAdapter.getNodeSourceCodeLocation(r))||void 0===n?void 0:n.endTag)&&e._setEndLocation(r,t)}}else kl(e,t)}function kl(e,t){e.insertionMode=Rc.IN_BODY,el(e,t)}function vl(e,t){e.insertionMode=Rc.IN_BODY,el(e,t)}function Dl(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==vo.HTML&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}var Rl=Ke((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.escapeText=t.escapeAttribute=t.escapeUTF8=t.escape=t.encodeXML=t.getCodePoint=t.xmlReplacer=void 0,t.xmlReplacer=/["&'<>$\x80-\uFFFF]/g;var n=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]);function r(e){for(var r,i="",s=0;null!==(r=t.xmlReplacer.exec(e));){var a=r.index,o=e.charCodeAt(a),c=n.get(o);void 0!==c?(i+=e.substring(s,a)+c,s=a+1):(i+="".concat(e.substring(s,a),"").concat((0,t.getCodePoint)(e,a).toString(16),";"),s=t.xmlReplacer.lastIndex+=Number(55296==(64512&o)))}return i+e.substr(s)}function i(e,t){return function(n){for(var r,i=0,s="";r=e.exec(n);)i!==r.index&&(s+=n.substring(i,r.index)),s+=t.get(r[0].charCodeAt(0)),i=r.index+1;return s+n.substring(i)}}t.getCodePoint=null!=String.prototype.codePointAt?function(e,t){return e.codePointAt(t)}:function(e,t){return 55296==(64512&e.charCodeAt(t))?1024*(e.charCodeAt(t)-55296)+e.charCodeAt(t+1)-56320+65536:e.charCodeAt(t)},t.encodeXML=r,t.escape=r,t.escapeUTF8=i(/[&<>'"]/g,n),t.escapeAttribute=i(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),t.escapeText=i(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]))}));qe(Rl);var Ml=Rl.escapeText,Pl=Rl.escapeAttribute;Rl.escapeUTF8,Rl.escape,Rl.encodeXML,Rl.getCodePoint,Rl.xmlReplacer;const xl=new Set([Mo.AREA,Mo.BASE,Mo.BASEFONT,Mo.BGSOUND,Mo.BR,Mo.COL,Mo.EMBED,Mo.FRAME,Mo.HR,Mo.IMG,Mo.INPUT,Mo.KEYGEN,Mo.LINK,Mo.META,Mo.PARAM,Mo.SOURCE,Mo.TRACK,Mo.WBR]);const wl={treeAdapter:Ec,scriptingEnabled:!0};function Bl(e,t){return Fl(e,{...wl,...t})}function Fl(e,t){return t.treeAdapter.isElementNode(e)?function(e,t){const n=t.treeAdapter.getTagName(e);return`<${n}${function(e,{treeAdapter:t}){let n="";for(const r of t.getAttrList(e)){if(n+=" ",r.namespace)switch(r.namespace){case vo.XML:n+=`xml:${r.name}`;break;case vo.XMLNS:"xmlns"!==r.name&&(n+="xmlns:"),n+=r.name;break;case vo.XLINK:n+=`xlink:${r.name}`;break;default:n+=`${r.prefix}:${r.name}`}else n+=r.name;n+=`="${Pl(r.value)}"`}return n}(e,t)}>${function(e,t){return t.treeAdapter.isElementNode(e)&&t.treeAdapter.getNamespaceURI(e)===vo.HTML&&xl.has(t.treeAdapter.getTagName(e))}(e,t)?"":`${function(e,t){let n="";const r=t.treeAdapter.isElementNode(e)&&t.treeAdapter.getTagName(e)===Mo.TEMPLATE&&t.treeAdapter.getNamespaceURI(e)===vo.HTML?t.treeAdapter.getTemplateContent(e):e,i=t.treeAdapter.getChildNodes(r);if(i)for(const e of i)n+=Fl(e,t);return n}(e,t)}${n}>`}`}(e,t):t.treeAdapter.isTextNode(e)?function(e,t){const{treeAdapter:n}=t,r=n.getTextNodeContent(e),i=n.getParentNode(e),s=i&&n.isElementNode(i)&&n.getTagName(i);return s&&n.getNamespaceURI(i)===vo.HTML&&(a=s,o=t.scriptingEnabled,Yo.has(a)||o&&a===Mo.NOSCRIPT)?r:Ml(r);var a,o}(e,t):t.treeAdapter.isCommentNode(e)?function(e,{treeAdapter:t}){return`\x3c!--${t.getCommentNodeContent(e)}--\x3e`}(e,t):t.treeAdapter.isDocumentTypeNode(e)?function(e,{treeAdapter:t}){return``}(e,t):""}function Ul(e){return new m(e)}function Hl(e){const t=e.includes('"')?"'":'"';return t+e+t}const Gl={isCommentNode:O,isElementNode:I,isTextNode:b,createDocument(){const e=new N([]);return e["x-mode"]=Ro.NO_QUIRKS,e},createDocumentFragment:()=>new N([]),createElement(e,t,n){const r=Object.create(null),i=Object.create(null),s=Object.create(null);for(let e=0;enew T(e),appendChild(e,t){const n=e.children[e.children.length-1];n&&(n.next=t,t.prev=n),e.children.push(t),t.parent=e},insertBefore(e,t,n){const r=e.children.indexOf(n),{prev:i}=n;i&&(i.next=t,t.prev=i),n.prev=t,t.next=n,e.children.splice(r,0,t),t.parent=e},setTemplateContent(e,t){Gl.appendChild(e,t)},getTemplateContent:e=>e.children[0],setDocumentType(e,t,n,r){const i=function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=` PUBLIC ${Hl(t)}`:n&&(r+=" SYSTEM"),n&&(r+=` ${Hl(n)}`),r}(t,n,r);let s=e.children.find((e=>y(e)&&"!doctype"===e.name));s?s.data=null!=i?i:null:(s=new _("!doctype",i),Gl.appendChild(e,s)),s["x-name"]=null!=t?t:void 0,s["x-publicId"]=null!=n?n:void 0,s["x-systemId"]=null!=r?r:void 0},setDocumentMode(e,t){e["x-mode"]=t},getDocumentMode:e=>e["x-mode"],detachNode(e){if(e.parent){const t=e.parent.children.indexOf(e),{prev:n,next:r}=e;e.prev=null,e.next=null,n&&(n.next=r),r&&(r.prev=n),e.parent.children.splice(t,1),e.parent=null}},insertText(e,t){const n=e.children[e.children.length-1];n&&b(n)?n.data+=t:Gl.appendChild(e,Ul(t))},insertTextBefore(e,t,n){const r=e.children[e.children.indexOf(n)-1];r&&b(r)?r.data+=t:Gl.insertBefore(e,Ul(t),n)},adoptAttributes(e,t){for(let n=0;ne.children[0],getChildNodes:e=>e.children,getParentNode:e=>e.parent,getAttrList:e=>e.attributes,getTagName:e=>e.name,getNamespaceURI:e=>e.namespace,getTextNodeContent:e=>e.data,getCommentNodeContent:e=>e.data,getDocumentTypeNodeName(e){var t;return null!==(t=e["x-name"])&&void 0!==t?t:""},getDocumentTypeNodePublicId(e){var t;return null!==(t=e["x-publicId"])&&void 0!==t?t:""},getDocumentTypeNodeSystemId(e){var t;return null!==(t=e["x-systemId"])&&void 0!==t?t:""},isDocumentTypeNode:e=>y(e)&&"!doctype"===e.name,setNodeSourceCodeLocation(e,t){t&&(e.startIndex=t.startOffset,e.endIndex=t.endOffset),e.sourceCodeLocation=t},getNodeSourceCodeLocation:e=>e.sourceCodeLocation,updateNodeSourceCodeLocation(e,t){null!=t.endOffset&&(e.endIndex=t.endOffset),e.sourceCodeLocation={...e.sourceCodeLocation,...t}}};var Yl=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,s=t.length;i=Kl.Zero&&e<=Kl.Nine}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Num=35]="Num",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(Kl||(Kl={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"}(jl||(jl={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(Vl||(Vl={}));const zl={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])};class Jl{constructor({xmlMode:e=!1,decodeEntities:t=!0},n){this.cbs=n,this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=e,this.decodeEntities=t,this.entityTrie=e?xo:wo}reset(){this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=jl.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===Kl.Amp&&(this.state=jl.BeforeEntity)}stateSpecialStartSequence(e){const t=this.sequenceIndex===this.currentSequence.length;if(t?Xl(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=jl.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===Kl.Gt||Ql(e)){const t=this.index-this.currentSequence.length;if(this.sectionStart=Kl.LowerA&&e<=Kl.LowerZ||e>=Kl.UpperA&&e<=Kl.UpperZ}(e)}startSpecial(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=jl.SpecialStartSequence}stateBeforeTagName(e){if(e===Kl.ExclamationMark)this.state=jl.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===Kl.Questionmark)this.state=jl.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){const t=32|e;this.sectionStart=this.index,this.xmlMode||t!==zl.TitleEnd[2]?this.state=this.xmlMode||t!==zl.ScriptEnd[2]?jl.InTagName:jl.BeforeSpecialS:this.startSpecial(zl.TitleEnd,3)}else e===Kl.Slash?this.state=jl.BeforeClosingTagName:(this.state=jl.Text,this.stateText(e))}stateInTagName(e){Xl(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateBeforeClosingTagName(e){Ql(e)||(e===Kl.Gt?this.state=jl.Text:(this.state=this.isTagStartChar(e)?jl.InClosingTagName:jl.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(e){(e===Kl.Gt||Ql(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.AfterClosingTagName,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(e){e===Kl.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=jl.InSpecialTag,this.sequenceIndex=0):this.state=jl.Text,this.baseState=this.state,this.sectionStart=this.index+1):e===Kl.Slash?this.state=jl.InSelfClosingTag:Ql(e)||(this.state=jl.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(e){e===Kl.Gt?(this.cbs.onselfclosingtag(this.index),this.state=jl.Text,this.baseState=jl.Text,this.sectionStart=this.index+1,this.isSpecial=!1):Ql(e)||(this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateInAttributeName(e){(e===Kl.Eq||Xl(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.AfterAttributeName,this.stateAfterAttributeName(e))}stateAfterAttributeName(e){e===Kl.Eq?this.state=jl.BeforeAttributeValue:e===Kl.Slash||e===Kl.Gt?(this.cbs.onattribend(Vl.NoValue,this.index),this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e)):Ql(e)||(this.cbs.onattribend(Vl.NoValue,this.index),this.state=jl.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(e){e===Kl.DoubleQuote?(this.state=jl.InAttributeValueDq,this.sectionStart=this.index+1):e===Kl.SingleQuote?(this.state=jl.InAttributeValueSq,this.sectionStart=this.index+1):Ql(e)||(this.sectionStart=this.index,this.state=jl.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))}handleInAttributeValue(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===Kl.DoubleQuote?Vl.Double:Vl.Single,this.index),this.state=jl.BeforeAttributeName):this.decodeEntities&&e===Kl.Amp&&(this.baseState=this.state,this.state=jl.BeforeEntity)}stateInAttributeValueDoubleQuotes(e){this.handleInAttributeValue(e,Kl.DoubleQuote)}stateInAttributeValueSingleQuotes(e){this.handleInAttributeValue(e,Kl.SingleQuote)}stateInAttributeValueNoQuotes(e){Ql(e)||e===Kl.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(Vl.Unquoted,this.index),this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===Kl.Amp&&(this.baseState=this.state,this.state=jl.BeforeEntity)}stateBeforeDeclaration(e){e===Kl.OpeningSquareBracket?(this.state=jl.CDATASequence,this.sequenceIndex=0):this.state=e===Kl.Dash?jl.BeforeComment:jl.InDeclaration}stateInDeclaration(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=jl.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeComment(e){e===Kl.Dash?(this.state=jl.InCommentLike,this.currentSequence=zl.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=jl.InDeclaration}stateInSpecialComment(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){const t=32|e;t===zl.ScriptEnd[3]?this.startSpecial(zl.ScriptEnd,4):t===zl.StyleEnd[3]?this.startSpecial(zl.StyleEnd,4):(this.state=jl.InTagName,this.stateInTagName(e))}stateBeforeEntity(e){this.entityExcess=1,this.entityResult=0,e===Kl.Num?this.state=jl.BeforeNumericEntity:e===Kl.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=jl.InNamedEntity,this.stateInNamedEntity(e))}stateInNamedEntity(e){if(this.entityExcess+=1,this.trieIndex=Oo(this.entityTrie,this.trieCurrent,this.trieIndex+1,e),this.trieIndex<0)return this.emitNamedEntity(),void this.index--;this.trieCurrent=this.entityTrie[this.trieIndex];const t=this.trieCurrent&yo.VALUE_LENGTH;if(t){const n=(t>>14)-1;if(this.allowLegacyEntity()||e===Kl.Semi){const e=this.index-this.entityExcess+1;e>this.sectionStart&&this.emitPartial(this.sectionStart,e),this.entityResult=this.trieIndex,this.trieIndex+=n,this.entityExcess=0,this.sectionStart=this.index+1,0===n&&this.emitNamedEntity()}else this.trieIndex+=n}}emitNamedEntity(){if(this.state=this.baseState,0===this.entityResult)return;switch((this.entityTrie[this.entityResult]&yo.VALUE_LENGTH)>>14){case 1:this.emitCodePoint(this.entityTrie[this.entityResult]&~yo.VALUE_LENGTH);break;case 2:this.emitCodePoint(this.entityTrie[this.entityResult+1]);break;case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}}stateBeforeNumericEntity(e){(32|e)===Kl.LowerX?(this.entityExcess++,this.state=jl.InHexEntity):(this.state=jl.InNumericEntity,this.stateInNumericEntity(e))}emitNumericEntity(e){const t=this.index-this.entityExcess-1;t+2+Number(this.state===jl.InHexEntity)!==this.index&&(t>this.sectionStart&&this.emitPartial(this.sectionStart,t),this.sectionStart=this.index+Number(e),this.emitCodePoint(ko(this.entityResult))),this.state=this.baseState}stateInNumericEntity(e){e===Kl.Semi?this.emitNumericEntity(!0):$l(e)?(this.entityResult=10*this.entityResult+(e-Kl.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)}stateInHexEntity(e){e===Kl.Semi?this.emitNumericEntity(!0):$l(e)?(this.entityResult=16*this.entityResult+(e-Kl.Zero),this.entityExcess++):!function(e){return e>=Kl.UpperA&&e<=Kl.UpperF||e>=Kl.LowerA&&e<=Kl.LowerF}(e)?(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--):(this.entityResult=16*this.entityResult+((32|e)-Kl.LowerA+10),this.entityExcess++)}allowLegacyEntity(){return!this.xmlMode&&(this.baseState===jl.Text||this.baseState===jl.InSpecialTag)}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===jl.Text||this.state===jl.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==jl.InAttributeValueDq&&this.state!==jl.InAttributeValueSq&&this.state!==jl.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index0&&s.has(this.stack[this.stack.length-1]);){const e=this.stack.pop();null===(n=(t=this.cbs).onclosetag)||void 0===n||n.call(t,e,!0)}this.isVoidElement(e)||(this.stack.push(e),ah.has(e)?this.foreignContext.push(!0):oh.has(e)&&this.foreignContext.push(!1)),null===(i=(r=this.cbs).onopentagname)||void 0===i||i.call(r,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var t,n;this.startIndex=this.openTagStart,this.attribs&&(null===(n=(t=this.cbs).onopentag)||void 0===n||n.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,t){var n,r,i,s,a,o;this.endIndex=t;let c=this.getSlice(e,t);if(this.lowerCaseTagNames&&(c=c.toLowerCase()),(ah.has(c)||oh.has(c))&&this.foreignContext.pop(),this.isVoidElement(c))this.options.xmlMode||"br"!==c||(null===(r=(n=this.cbs).onopentagname)||void 0===r||r.call(n,"br"),null===(s=(i=this.cbs).onopentag)||void 0===s||s.call(i,"br",{},!0),null===(o=(a=this.cbs).onclosetag)||void 0===o||o.call(a,"br",!1));else{const e=this.stack.lastIndexOf(c);if(-1!==e)if(this.cbs.onclosetag){let t=this.stack.length-e;for(;t--;)this.cbs.onclosetag(this.stack.pop(),0!==t)}else this.stack.length=e;else this.options.xmlMode||"p"!==c||(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1}onselfclosingtag(e){this.endIndex=e,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var t,n;const r=this.tagname;this.endOpenTag(e),this.stack[this.stack.length-1]===r&&(null===(n=(t=this.cbs).onclosetag)||void 0===n||n.call(t,r,!e),this.stack.pop())}onattribname(e,t){this.startIndex=e;const n=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?n.toLowerCase():n}onattribdata(e,t){this.attribvalue+=this.getSlice(e,t)}onattribentity(e){this.attribvalue+=Lo(e)}onattribend(e,t){var n,r;this.endIndex=t,null===(r=(n=this.cbs).onattribute)||void 0===r||r.call(n,this.attribname,this.attribvalue,e===Vl.Double?'"':e===Vl.Single?"'":e===Vl.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){const t=e.search(ch);let n=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(n=n.toLowerCase()),n}ondeclaration(e,t){this.endIndex=t;const n=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){const e=this.getInstructionName(n);this.cbs.onprocessinginstruction(`!${e}`,`!${n}`)}this.startIndex=t+1}onprocessinginstruction(e,t){this.endIndex=t;const n=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){const e=this.getInstructionName(n);this.cbs.onprocessinginstruction(`?${e}`,`?${n}`)}this.startIndex=t+1}oncomment(e,t,n){var r,i,s,a;this.endIndex=t,null===(i=(r=this.cbs).oncomment)||void 0===i||i.call(r,this.getSlice(e,t-n)),null===(a=(s=this.cbs).oncommentend)||void 0===a||a.call(s),this.startIndex=t+1}oncdata(e,t,n){var r,i,s,a,o,c,l,h,u,p;this.endIndex=t;const f=this.getSlice(e,t-n);this.options.xmlMode||this.options.recognizeCDATA?(null===(i=(r=this.cbs).oncdatastart)||void 0===i||i.call(r),null===(a=(s=this.cbs).ontext)||void 0===a||a.call(s,f),null===(c=(o=this.cbs).oncdataend)||void 0===c||c.call(o)):(null===(h=(l=this.cbs).oncomment)||void 0===h||h.call(l,`[CDATA[${f}]]`),null===(p=(u=this.cbs).oncommentend)||void 0===p||p.call(u)),this.startIndex=t+1}onend(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let e=this.stack.length;e>0;this.cbs.onclosetag(this.stack[--e],!0));}null===(t=(e=this.cbs).onend)||void 0===t||t.call(e)}reset(){var e,t,n,r;null===(t=(e=this.cbs).onreset)||void 0===t||t.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,null===(r=(n=this.cbs).onparserinit)||void 0===r||r.call(n,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(e){this.reset(),this.end(e)}getSlice(e,t){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let n=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);for(;t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),n+=this.buffers[0].slice(0,t-this.bufferOffset);return n}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var t,n;this.ended?null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))}end(e){var t,n;this.ended?null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
- thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);
- }
- } else {
- // Copy one word at a time
- for (var j = 0; j < thatSigBytes; j += 4) {
- thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];
- }
- }
- this.sigBytes += thatSigBytes;
-
- // Chainable
- return this;
- },
-
- /**
- * Removes insignificant bits.
- *
- * @example
- *
- * wordArray.clamp();
- */
- clamp: function () {
- // Shortcuts
- var words = this.words;
- var sigBytes = this.sigBytes;
-
- // Clamp
- words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);
- words.length = Math.ceil(sigBytes / 4);
- },
-
- /**
- * Creates a copy of this word array.
- *
- * @return {WordArray} The clone.
- *
- * @example
- *
- * var clone = wordArray.clone();
- */
- clone: function () {
- var clone = Base.clone.call(this);
- clone.words = this.words.slice(0);
-
- return clone;
- },
-
- /**
- * Creates a word array filled with random bytes.
- *
- * @param {number} nBytes The number of random bytes to generate.
- *
- * @return {WordArray} The random word array.
- *
- * @static
- *
- * @example
- *
- * var wordArray = CryptoJS.lib.WordArray.random(16);
- */
- random: function (nBytes) {
- var words = [];
-
- for (var i = 0; i < nBytes; i += 4) {
- words.push(cryptoSecureRandomInt());
- }
-
- return new WordArray.init(words, nBytes);
- }
- });
-
- /**
- * Encoder namespace.
- */
- var C_enc = C.enc = {};
-
- /**
- * Hex encoding strategy.
- */
- var Hex = C_enc.Hex = {
- /**
- * Converts a word array to a hex string.
- *
- * @param {WordArray} wordArray The word array.
- *
- * @return {string} The hex string.
- *
- * @static
- *
- * @example
- *
- * var hexString = CryptoJS.enc.Hex.stringify(wordArray);
- */
- stringify: function (wordArray) {
- // Shortcuts
- var words = wordArray.words;
- var sigBytes = wordArray.sigBytes;
-
- // Convert
- var hexChars = [];
- for (var i = 0; i < sigBytes; i++) {
- var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
- hexChars.push((bite >>> 4).toString(16));
- hexChars.push((bite & 0x0f).toString(16));
- }
-
- return hexChars.join('');
- },
-
- /**
- * Converts a hex string to a word array.
- *
- * @param {string} hexStr The hex string.
- *
- * @return {WordArray} The word array.
- *
- * @static
- *
- * @example
- *
- * var wordArray = CryptoJS.enc.Hex.parse(hexString);
- */
- parse: function (hexStr) {
- // Shortcut
- var hexStrLength = hexStr.length;
-
- // Convert
- var words = [];
- for (var i = 0; i < hexStrLength; i += 2) {
- words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);
- }
-
- return new WordArray.init(words, hexStrLength / 2);
- }
- };
-
- /**
- * Latin1 encoding strategy.
- */
- var Latin1 = C_enc.Latin1 = {
- /**
- * Converts a word array to a Latin1 string.
- *
- * @param {WordArray} wordArray The word array.
- *
- * @return {string} The Latin1 string.
- *
- * @static
- *
- * @example
- *
- * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
- */
- stringify: function (wordArray) {
- // Shortcuts
- var words = wordArray.words;
- var sigBytes = wordArray.sigBytes;
-
- // Convert
- var latin1Chars = [];
- for (var i = 0; i < sigBytes; i++) {
- var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
- latin1Chars.push(String.fromCharCode(bite));
- }
-
- return latin1Chars.join('');
- },
-
- /**
- * Converts a Latin1 string to a word array.
- *
- * @param {string} latin1Str The Latin1 string.
- *
- * @return {WordArray} The word array.
- *
- * @static
- *
- * @example
- *
- * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
- */
- parse: function (latin1Str) {
- // Shortcut
- var latin1StrLength = latin1Str.length;
-
- // Convert
- var words = [];
- for (var i = 0; i < latin1StrLength; i++) {
- words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
- }
-
- return new WordArray.init(words, latin1StrLength);
- }
- };
-
- /**
- * UTF-8 encoding strategy.
- */
- var Utf8 = C_enc.Utf8 = {
- /**
- * Converts a word array to a UTF-8 string.
- *
- * @param {WordArray} wordArray The word array.
- *
- * @return {string} The UTF-8 string.
- *
- * @static
- *
- * @example
- *
- * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
- */
- stringify: function (wordArray) {
- try {
- return decodeURIComponent(escape(Latin1.stringify(wordArray)));
- } catch (e) {
- throw new Error('Malformed UTF-8 data');
- }
- },
-
- /**
- * Converts a UTF-8 string to a word array.
- *
- * @param {string} utf8Str The UTF-8 string.
- *
- * @return {WordArray} The word array.
- *
- * @static
- *
- * @example
- *
- * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
- */
- parse: function (utf8Str) {
- return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
- }
- };
-
- /**
- * Abstract buffered block algorithm template.
- *
- * The property blockSize must be implemented in a concrete subtype.
- *
- * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0
- */
- var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
- /**
- * Resets this block algorithm's data buffer to its initial state.
- *
- * @example
- *
- * bufferedBlockAlgorithm.reset();
- */
- reset: function () {
- // Initial values
- this._data = new WordArray.init();
- this._nDataBytes = 0;
- },
-
- /**
- * Adds new data to this block algorithm's buffer.
- *
- * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
- *
- * @example
- *
- * bufferedBlockAlgorithm._append('data');
- * bufferedBlockAlgorithm._append(wordArray);
- */
- _append: function (data) {
- // Convert string to WordArray, else assume WordArray already
- if (typeof data == 'string') {
- data = Utf8.parse(data);
- }
-
- // Append
- this._data.concat(data);
- this._nDataBytes += data.sigBytes;
- },
-
- /**
- * Processes available data blocks.
- *
- * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
- *
- * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
- *
- * @return {WordArray} The processed data.
- *
- * @example
- *
- * var processedData = bufferedBlockAlgorithm._process();
- * var processedData = bufferedBlockAlgorithm._process(!!'flush');
- */
- _process: function (doFlush) {
- var processedWords;
-
- // Shortcuts
- var data = this._data;
- var dataWords = data.words;
- var dataSigBytes = data.sigBytes;
- var blockSize = this.blockSize;
- var blockSizeBytes = blockSize * 4;
-
- // Count blocks ready
- var nBlocksReady = dataSigBytes / blockSizeBytes;
- if (doFlush) {
- // Round up to include partial blocks
- nBlocksReady = Math.ceil(nBlocksReady);
- } else {
- // Round down to include only full blocks,
- // less the number of blocks that must remain in the buffer
- nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
- }
-
- // Count words ready
- var nWordsReady = nBlocksReady * blockSize;
-
- // Count bytes ready
- var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);
-
- // Process blocks
- if (nWordsReady) {
- for (var offset = 0; offset < nWordsReady; offset += blockSize) {
- // Perform concrete-algorithm logic
- this._doProcessBlock(dataWords, offset);
- }
-
- // Remove processed words
- processedWords = dataWords.splice(0, nWordsReady);
- data.sigBytes -= nBytesReady;
- }
-
- // Return processed words
- return new WordArray.init(processedWords, nBytesReady);
- },
-
- /**
- * Creates a copy of this object.
- *
- * @return {Object} The clone.
- *
- * @example
- *
- * var clone = bufferedBlockAlgorithm.clone();
- */
- clone: function () {
- var clone = Base.clone.call(this);
- clone._data = this._data.clone();
-
- return clone;
- },
-
- _minBufferSize: 0
- });
-
- /**
- * Abstract hasher template.
- *
- * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)
- */
- var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
- /**
- * Configuration options.
- */
- cfg: Base.extend(),
-
- /**
- * Initializes a newly created hasher.
- *
- * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
- *
- * @example
- *
- * var hasher = CryptoJS.algo.SHA256.create();
- */
- init: function (cfg) {
- // Apply config defaults
- this.cfg = this.cfg.extend(cfg);
-
- // Set initial values
- this.reset();
- },
-
- /**
- * Resets this hasher to its initial state.
- *
- * @example
- *
- * hasher.reset();
- */
- reset: function () {
- // Reset data buffer
- BufferedBlockAlgorithm.reset.call(this);
-
- // Perform concrete-hasher logic
- this._doReset();
- },
-
- /**
- * Updates this hasher with a message.
- *
- * @param {WordArray|string} messageUpdate The message to append.
- *
- * @return {Hasher} This hasher.
- *
- * @example
- *
- * hasher.update('message');
- * hasher.update(wordArray);
- */
- update: function (messageUpdate) {
- // Append
- this._append(messageUpdate);
-
- // Update the hash
- this._process();
-
- // Chainable
- return this;
- },
-
- /**
- * Finalizes the hash computation.
- * Note that the finalize operation is effectively a destructive, read-once operation.
- *
- * @param {WordArray|string} messageUpdate (Optional) A final message update.
- *
- * @return {WordArray} The hash.
- *
- * @example
- *
- * var hash = hasher.finalize();
- * var hash = hasher.finalize('message');
- * var hash = hasher.finalize(wordArray);
- */
- finalize: function (messageUpdate) {
- // Final message update
- if (messageUpdate) {
- this._append(messageUpdate);
- }
-
- // Perform concrete-hasher logic
- var hash = this._doFinalize();
-
- return hash;
- },
-
- blockSize: 512/32,
-
- /**
- * Creates a shortcut function to a hasher's object interface.
- *
- * @param {Hasher} hasher The hasher to create a helper for.
- *
- * @return {Function} The shortcut function.
- *
- * @static
- *
- * @example
- *
- * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
- */
- _createHelper: function (hasher) {
- return function (message, cfg) {
- return new hasher.init(cfg).finalize(message);
- };
- },
-
- /**
- * Creates a shortcut function to the HMAC's object interface.
- *
- * @param {Hasher} hasher The hasher to use in this HMAC helper.
- *
- * @return {Function} The shortcut function.
- *
- * @static
- *
- * @example
- *
- * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
- */
- _createHmacHelper: function (hasher) {
- return function (message, key) {
- return new C_algo.HMAC.init(hasher, key).finalize(message);
- };
- }
- });
-
- /**
- * Algorithm namespace.
- */
- var C_algo = C.algo = {};
-
- return C;
- }(Math));
-
-
- (function (undefined) {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var Base = C_lib.Base;
- var X32WordArray = C_lib.WordArray;
-
- /**
- * x64 namespace.
- */
- var C_x64 = C.x64 = {};
-
- /**
- * A 64-bit word.
- */
- var X64Word = C_x64.Word = Base.extend({
- /**
- * Initializes a newly created 64-bit word.
- *
- * @param {number} high The high 32 bits.
- * @param {number} low The low 32 bits.
- *
- * @example
- *
- * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);
- */
- init: function (high, low) {
- this.high = high;
- this.low = low;
- }
-
- /**
- * Bitwise NOTs this word.
- *
- * @return {X64Word} A new x64-Word object after negating.
- *
- * @example
- *
- * var negated = x64Word.not();
- */
- // not: function () {
- // var high = ~this.high;
- // var low = ~this.low;
-
- // return X64Word.create(high, low);
- // },
-
- /**
- * Bitwise ANDs this word with the passed word.
- *
- * @param {X64Word} word The x64-Word to AND with this word.
- *
- * @return {X64Word} A new x64-Word object after ANDing.
- *
- * @example
- *
- * var anded = x64Word.and(anotherX64Word);
- */
- // and: function (word) {
- // var high = this.high & word.high;
- // var low = this.low & word.low;
-
- // return X64Word.create(high, low);
- // },
-
- /**
- * Bitwise ORs this word with the passed word.
- *
- * @param {X64Word} word The x64-Word to OR with this word.
- *
- * @return {X64Word} A new x64-Word object after ORing.
- *
- * @example
- *
- * var ored = x64Word.or(anotherX64Word);
- */
- // or: function (word) {
- // var high = this.high | word.high;
- // var low = this.low | word.low;
-
- // return X64Word.create(high, low);
- // },
-
- /**
- * Bitwise XORs this word with the passed word.
- *
- * @param {X64Word} word The x64-Word to XOR with this word.
- *
- * @return {X64Word} A new x64-Word object after XORing.
- *
- * @example
- *
- * var xored = x64Word.xor(anotherX64Word);
- */
- // xor: function (word) {
- // var high = this.high ^ word.high;
- // var low = this.low ^ word.low;
-
- // return X64Word.create(high, low);
- // },
-
- /**
- * Shifts this word n bits to the left.
- *
- * @param {number} n The number of bits to shift.
- *
- * @return {X64Word} A new x64-Word object after shifting.
- *
- * @example
- *
- * var shifted = x64Word.shiftL(25);
- */
- // shiftL: function (n) {
- // if (n < 32) {
- // var high = (this.high << n) | (this.low >>> (32 - n));
- // var low = this.low << n;
- // } else {
- // var high = this.low << (n - 32);
- // var low = 0;
- // }
-
- // return X64Word.create(high, low);
- // },
-
- /**
- * Shifts this word n bits to the right.
- *
- * @param {number} n The number of bits to shift.
- *
- * @return {X64Word} A new x64-Word object after shifting.
- *
- * @example
- *
- * var shifted = x64Word.shiftR(7);
- */
- // shiftR: function (n) {
- // if (n < 32) {
- // var low = (this.low >>> n) | (this.high << (32 - n));
- // var high = this.high >>> n;
- // } else {
- // var low = this.high >>> (n - 32);
- // var high = 0;
- // }
-
- // return X64Word.create(high, low);
- // },
-
- /**
- * Rotates this word n bits to the left.
- *
- * @param {number} n The number of bits to rotate.
- *
- * @return {X64Word} A new x64-Word object after rotating.
- *
- * @example
- *
- * var rotated = x64Word.rotL(25);
- */
- // rotL: function (n) {
- // return this.shiftL(n).or(this.shiftR(64 - n));
- // },
-
- /**
- * Rotates this word n bits to the right.
- *
- * @param {number} n The number of bits to rotate.
- *
- * @return {X64Word} A new x64-Word object after rotating.
- *
- * @example
- *
- * var rotated = x64Word.rotR(7);
- */
- // rotR: function (n) {
- // return this.shiftR(n).or(this.shiftL(64 - n));
- // },
-
- /**
- * Adds this word with the passed word.
- *
- * @param {X64Word} word The x64-Word to add with this word.
- *
- * @return {X64Word} A new x64-Word object after adding.
- *
- * @example
- *
- * var added = x64Word.add(anotherX64Word);
- */
- // add: function (word) {
- // var low = (this.low + word.low) | 0;
- // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
- // var high = (this.high + word.high + carry) | 0;
-
- // return X64Word.create(high, low);
- // }
- });
-
- /**
- * An array of 64-bit words.
- *
- * @property {Array} words The array of CryptoJS.x64.Word objects.
- * @property {number} sigBytes The number of significant bytes in this word array.
- */
- var X64WordArray = C_x64.WordArray = Base.extend({
- /**
- * Initializes a newly created word array.
- *
- * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
- * @param {number} sigBytes (Optional) The number of significant bytes in the words.
- *
- * @example
- *
- * var wordArray = CryptoJS.x64.WordArray.create();
- *
- * var wordArray = CryptoJS.x64.WordArray.create([
- * CryptoJS.x64.Word.create(0x00010203, 0x04050607),
- * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
- * ]);
- *
- * var wordArray = CryptoJS.x64.WordArray.create([
- * CryptoJS.x64.Word.create(0x00010203, 0x04050607),
- * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
- * ], 10);
- */
- init: function (words, sigBytes) {
- words = this.words = words || [];
-
- if (sigBytes != undefined) {
- this.sigBytes = sigBytes;
- } else {
- this.sigBytes = words.length * 8;
- }
- },
-
- /**
- * Converts this 64-bit word array to a 32-bit word array.
- *
- * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.
- *
- * @example
- *
- * var x32WordArray = x64WordArray.toX32();
- */
- toX32: function () {
- // Shortcuts
- var x64Words = this.words;
- var x64WordsLength = x64Words.length;
-
- // Convert
- var x32Words = [];
- for (var i = 0; i < x64WordsLength; i++) {
- var x64Word = x64Words[i];
- x32Words.push(x64Word.high);
- x32Words.push(x64Word.low);
- }
-
- return X32WordArray.create(x32Words, this.sigBytes);
- },
-
- /**
- * Creates a copy of this word array.
- *
- * @return {X64WordArray} The clone.
- *
- * @example
- *
- * var clone = x64WordArray.clone();
- */
- clone: function () {
- var clone = Base.clone.call(this);
-
- // Clone "words" array
- var words = clone.words = this.words.slice(0);
-
- // Clone each X64Word object
- var wordsLength = words.length;
- for (var i = 0; i < wordsLength; i++) {
- words[i] = words[i].clone();
- }
-
- return clone;
- }
- });
- }());
-
-
- (function () {
- // Check if typed arrays are supported
- if (typeof ArrayBuffer != 'function') {
- return;
- }
-
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
-
- // Reference original init
- var superInit = WordArray.init;
-
- // Augment WordArray.init to handle typed arrays
- var subInit = WordArray.init = function (typedArray) {
- // Convert buffers to uint8
- if (typedArray instanceof ArrayBuffer) {
- typedArray = new Uint8Array(typedArray);
- }
-
- // Convert other array views to uint8
- if (
- typedArray instanceof Int8Array ||
- (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) ||
- typedArray instanceof Int16Array ||
- typedArray instanceof Uint16Array ||
- typedArray instanceof Int32Array ||
- typedArray instanceof Uint32Array ||
- typedArray instanceof Float32Array ||
- typedArray instanceof Float64Array
- ) {
- typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
- }
-
- // Handle Uint8Array
- if (typedArray instanceof Uint8Array) {
- // Shortcut
- var typedArrayByteLength = typedArray.byteLength;
-
- // Extract bytes
- var words = [];
- for (var i = 0; i < typedArrayByteLength; i++) {
- words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);
- }
-
- // Initialize this word array
- superInit.call(this, words, typedArrayByteLength);
- } else {
- // Else call normal init
- superInit.apply(this, arguments);
- }
- };
-
- subInit.prototype = WordArray;
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var C_enc = C.enc;
-
- /**
- * UTF-16 BE encoding strategy.
- */
- var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
- /**
- * Converts a word array to a UTF-16 BE string.
- *
- * @param {WordArray} wordArray The word array.
- *
- * @return {string} The UTF-16 BE string.
- *
- * @static
- *
- * @example
- *
- * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
- */
- stringify: function (wordArray) {
- // Shortcuts
- var words = wordArray.words;
- var sigBytes = wordArray.sigBytes;
-
- // Convert
- var utf16Chars = [];
- for (var i = 0; i < sigBytes; i += 2) {
- var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;
- utf16Chars.push(String.fromCharCode(codePoint));
- }
-
- return utf16Chars.join('');
- },
-
- /**
- * Converts a UTF-16 BE string to a word array.
- *
- * @param {string} utf16Str The UTF-16 BE string.
- *
- * @return {WordArray} The word array.
- *
- * @static
- *
- * @example
- *
- * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
- */
- parse: function (utf16Str) {
- // Shortcut
- var utf16StrLength = utf16Str.length;
-
- // Convert
- var words = [];
- for (var i = 0; i < utf16StrLength; i++) {
- words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);
- }
-
- return WordArray.create(words, utf16StrLength * 2);
- }
- };
-
- /**
- * UTF-16 LE encoding strategy.
- */
- C_enc.Utf16LE = {
- /**
- * Converts a word array to a UTF-16 LE string.
- *
- * @param {WordArray} wordArray The word array.
- *
- * @return {string} The UTF-16 LE string.
- *
- * @static
- *
- * @example
- *
- * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
- */
- stringify: function (wordArray) {
- // Shortcuts
- var words = wordArray.words;
- var sigBytes = wordArray.sigBytes;
-
- // Convert
- var utf16Chars = [];
- for (var i = 0; i < sigBytes; i += 2) {
- var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);
- utf16Chars.push(String.fromCharCode(codePoint));
- }
-
- return utf16Chars.join('');
- },
-
- /**
- * Converts a UTF-16 LE string to a word array.
- *
- * @param {string} utf16Str The UTF-16 LE string.
- *
- * @return {WordArray} The word array.
- *
- * @static
- *
- * @example
- *
- * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
- */
- parse: function (utf16Str) {
- // Shortcut
- var utf16StrLength = utf16Str.length;
-
- // Convert
- var words = [];
- for (var i = 0; i < utf16StrLength; i++) {
- words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));
- }
-
- return WordArray.create(words, utf16StrLength * 2);
- }
- };
-
- function swapEndian(word) {
- return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);
- }
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var C_enc = C.enc;
-
- /**
- * Base64 encoding strategy.
- */
- var Base64 = C_enc.Base64 = {
- /**
- * Converts a word array to a Base64 string.
- *
- * @param {WordArray} wordArray The word array.
- *
- * @return {string} The Base64 string.
- *
- * @static
- *
- * @example
- *
- * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
- */
- stringify: function (wordArray) {
- // Shortcuts
- var words = wordArray.words;
- var sigBytes = wordArray.sigBytes;
- var map = this._map;
-
- // Clamp excess bits
- wordArray.clamp();
-
- // Convert
- var base64Chars = [];
- for (var i = 0; i < sigBytes; i += 3) {
- var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
- var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
- var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
-
- var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
-
- for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
- base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
- }
- }
-
- // Add padding
- var paddingChar = map.charAt(64);
- if (paddingChar) {
- while (base64Chars.length % 4) {
- base64Chars.push(paddingChar);
- }
- }
-
- return base64Chars.join('');
- },
-
- /**
- * Converts a Base64 string to a word array.
- *
- * @param {string} base64Str The Base64 string.
- *
- * @return {WordArray} The word array.
- *
- * @static
- *
- * @example
- *
- * var wordArray = CryptoJS.enc.Base64.parse(base64String);
- */
- parse: function (base64Str) {
- // Shortcuts
- var base64StrLength = base64Str.length;
- var map = this._map;
- var reverseMap = this._reverseMap;
-
- if (!reverseMap) {
- reverseMap = this._reverseMap = [];
- for (var j = 0; j < map.length; j++) {
- reverseMap[map.charCodeAt(j)] = j;
- }
- }
-
- // Ignore padding
- var paddingChar = map.charAt(64);
- if (paddingChar) {
- var paddingIndex = base64Str.indexOf(paddingChar);
- if (paddingIndex !== -1) {
- base64StrLength = paddingIndex;
- }
- }
-
- // Convert
- return parseLoop(base64Str, base64StrLength, reverseMap);
-
- },
-
- _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
- };
-
- function parseLoop(base64Str, base64StrLength, reverseMap) {
- var words = [];
- var nBytes = 0;
- for (var i = 0; i < base64StrLength; i++) {
- if (i % 4) {
- var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
- var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
- var bitsCombined = bits1 | bits2;
- words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
- nBytes++;
- }
- }
- return WordArray.create(words, nBytes);
- }
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var C_enc = C.enc;
-
- /**
- * Base64url encoding strategy.
- */
- var Base64url = C_enc.Base64url = {
- /**
- * Converts a word array to a Base64url string.
- *
- * @param {WordArray} wordArray The word array.
- *
- * @param {boolean} urlSafe Whether to use url safe
- *
- * @return {string} The Base64url string.
- *
- * @static
- *
- * @example
- *
- * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);
- */
- stringify: function (wordArray, urlSafe=true) {
- // Shortcuts
- var words = wordArray.words;
- var sigBytes = wordArray.sigBytes;
- var map = urlSafe ? this._safe_map : this._map;
-
- // Clamp excess bits
- wordArray.clamp();
-
- // Convert
- var base64Chars = [];
- for (var i = 0; i < sigBytes; i += 3) {
- var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
- var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
- var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
-
- var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
-
- for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
- base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
- }
- }
-
- // Add padding
- var paddingChar = map.charAt(64);
- if (paddingChar) {
- while (base64Chars.length % 4) {
- base64Chars.push(paddingChar);
- }
- }
-
- return base64Chars.join('');
- },
-
- /**
- * Converts a Base64url string to a word array.
- *
- * @param {string} base64Str The Base64url string.
- *
- * @param {boolean} urlSafe Whether to use url safe
- *
- * @return {WordArray} The word array.
- *
- * @static
- *
- * @example
- *
- * var wordArray = CryptoJS.enc.Base64url.parse(base64String);
- */
- parse: function (base64Str, urlSafe=true) {
- // Shortcuts
- var base64StrLength = base64Str.length;
- var map = urlSafe ? this._safe_map : this._map;
- var reverseMap = this._reverseMap;
-
- if (!reverseMap) {
- reverseMap = this._reverseMap = [];
- for (var j = 0; j < map.length; j++) {
- reverseMap[map.charCodeAt(j)] = j;
- }
- }
-
- // Ignore padding
- var paddingChar = map.charAt(64);
- if (paddingChar) {
- var paddingIndex = base64Str.indexOf(paddingChar);
- if (paddingIndex !== -1) {
- base64StrLength = paddingIndex;
- }
- }
-
- // Convert
- return parseLoop(base64Str, base64StrLength, reverseMap);
-
- },
-
- _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
- _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
- };
-
- function parseLoop(base64Str, base64StrLength, reverseMap) {
- var words = [];
- var nBytes = 0;
- for (var i = 0; i < base64StrLength; i++) {
- if (i % 4) {
- var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
- var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
- var bitsCombined = bits1 | bits2;
- words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
- nBytes++;
- }
- }
- return WordArray.create(words, nBytes);
- }
- }());
-
- (function (Math) {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var Hasher = C_lib.Hasher;
- var C_algo = C.algo;
-
- // Constants table
- var T = [];
-
- // Compute constants
- (function () {
- for (var i = 0; i < 64; i++) {
- T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
- }
- }());
-
- /**
- * MD5 hash algorithm.
- */
- var MD5 = C_algo.MD5 = Hasher.extend({
- _doReset: function () {
- this._hash = new WordArray.init([
- 0x67452301, 0xefcdab89,
- 0x98badcfe, 0x10325476
- ]);
- },
-
- _doProcessBlock: function (M, offset) {
- // Swap endian
- for (var i = 0; i < 16; i++) {
- // Shortcuts
- var offset_i = offset + i;
- var M_offset_i = M[offset_i];
-
- M[offset_i] = (
- (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
- (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
- );
- }
-
- // Shortcuts
- var H = this._hash.words;
-
- var M_offset_0 = M[offset + 0];
- var M_offset_1 = M[offset + 1];
- var M_offset_2 = M[offset + 2];
- var M_offset_3 = M[offset + 3];
- var M_offset_4 = M[offset + 4];
- var M_offset_5 = M[offset + 5];
- var M_offset_6 = M[offset + 6];
- var M_offset_7 = M[offset + 7];
- var M_offset_8 = M[offset + 8];
- var M_offset_9 = M[offset + 9];
- var M_offset_10 = M[offset + 10];
- var M_offset_11 = M[offset + 11];
- var M_offset_12 = M[offset + 12];
- var M_offset_13 = M[offset + 13];
- var M_offset_14 = M[offset + 14];
- var M_offset_15 = M[offset + 15];
-
- // Working varialbes
- var a = H[0];
- var b = H[1];
- var c = H[2];
- var d = H[3];
-
- // Computation
- a = FF(a, b, c, d, M_offset_0, 7, T[0]);
- d = FF(d, a, b, c, M_offset_1, 12, T[1]);
- c = FF(c, d, a, b, M_offset_2, 17, T[2]);
- b = FF(b, c, d, a, M_offset_3, 22, T[3]);
- a = FF(a, b, c, d, M_offset_4, 7, T[4]);
- d = FF(d, a, b, c, M_offset_5, 12, T[5]);
- c = FF(c, d, a, b, M_offset_6, 17, T[6]);
- b = FF(b, c, d, a, M_offset_7, 22, T[7]);
- a = FF(a, b, c, d, M_offset_8, 7, T[8]);
- d = FF(d, a, b, c, M_offset_9, 12, T[9]);
- c = FF(c, d, a, b, M_offset_10, 17, T[10]);
- b = FF(b, c, d, a, M_offset_11, 22, T[11]);
- a = FF(a, b, c, d, M_offset_12, 7, T[12]);
- d = FF(d, a, b, c, M_offset_13, 12, T[13]);
- c = FF(c, d, a, b, M_offset_14, 17, T[14]);
- b = FF(b, c, d, a, M_offset_15, 22, T[15]);
-
- a = GG(a, b, c, d, M_offset_1, 5, T[16]);
- d = GG(d, a, b, c, M_offset_6, 9, T[17]);
- c = GG(c, d, a, b, M_offset_11, 14, T[18]);
- b = GG(b, c, d, a, M_offset_0, 20, T[19]);
- a = GG(a, b, c, d, M_offset_5, 5, T[20]);
- d = GG(d, a, b, c, M_offset_10, 9, T[21]);
- c = GG(c, d, a, b, M_offset_15, 14, T[22]);
- b = GG(b, c, d, a, M_offset_4, 20, T[23]);
- a = GG(a, b, c, d, M_offset_9, 5, T[24]);
- d = GG(d, a, b, c, M_offset_14, 9, T[25]);
- c = GG(c, d, a, b, M_offset_3, 14, T[26]);
- b = GG(b, c, d, a, M_offset_8, 20, T[27]);
- a = GG(a, b, c, d, M_offset_13, 5, T[28]);
- d = GG(d, a, b, c, M_offset_2, 9, T[29]);
- c = GG(c, d, a, b, M_offset_7, 14, T[30]);
- b = GG(b, c, d, a, M_offset_12, 20, T[31]);
-
- a = HH(a, b, c, d, M_offset_5, 4, T[32]);
- d = HH(d, a, b, c, M_offset_8, 11, T[33]);
- c = HH(c, d, a, b, M_offset_11, 16, T[34]);
- b = HH(b, c, d, a, M_offset_14, 23, T[35]);
- a = HH(a, b, c, d, M_offset_1, 4, T[36]);
- d = HH(d, a, b, c, M_offset_4, 11, T[37]);
- c = HH(c, d, a, b, M_offset_7, 16, T[38]);
- b = HH(b, c, d, a, M_offset_10, 23, T[39]);
- a = HH(a, b, c, d, M_offset_13, 4, T[40]);
- d = HH(d, a, b, c, M_offset_0, 11, T[41]);
- c = HH(c, d, a, b, M_offset_3, 16, T[42]);
- b = HH(b, c, d, a, M_offset_6, 23, T[43]);
- a = HH(a, b, c, d, M_offset_9, 4, T[44]);
- d = HH(d, a, b, c, M_offset_12, 11, T[45]);
- c = HH(c, d, a, b, M_offset_15, 16, T[46]);
- b = HH(b, c, d, a, M_offset_2, 23, T[47]);
-
- a = II(a, b, c, d, M_offset_0, 6, T[48]);
- d = II(d, a, b, c, M_offset_7, 10, T[49]);
- c = II(c, d, a, b, M_offset_14, 15, T[50]);
- b = II(b, c, d, a, M_offset_5, 21, T[51]);
- a = II(a, b, c, d, M_offset_12, 6, T[52]);
- d = II(d, a, b, c, M_offset_3, 10, T[53]);
- c = II(c, d, a, b, M_offset_10, 15, T[54]);
- b = II(b, c, d, a, M_offset_1, 21, T[55]);
- a = II(a, b, c, d, M_offset_8, 6, T[56]);
- d = II(d, a, b, c, M_offset_15, 10, T[57]);
- c = II(c, d, a, b, M_offset_6, 15, T[58]);
- b = II(b, c, d, a, M_offset_13, 21, T[59]);
- a = II(a, b, c, d, M_offset_4, 6, T[60]);
- d = II(d, a, b, c, M_offset_11, 10, T[61]);
- c = II(c, d, a, b, M_offset_2, 15, T[62]);
- b = II(b, c, d, a, M_offset_9, 21, T[63]);
-
- // Intermediate hash value
- H[0] = (H[0] + a) | 0;
- H[1] = (H[1] + b) | 0;
- H[2] = (H[2] + c) | 0;
- H[3] = (H[3] + d) | 0;
- },
-
- _doFinalize: function () {
- // Shortcuts
- var data = this._data;
- var dataWords = data.words;
-
- var nBitsTotal = this._nDataBytes * 8;
- var nBitsLeft = data.sigBytes * 8;
-
- // Add padding
- dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
-
- var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
- var nBitsTotalL = nBitsTotal;
- dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (
- (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |
- (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)
- );
- dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
- (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |
- (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)
- );
-
- data.sigBytes = (dataWords.length + 1) * 4;
-
- // Hash final blocks
- this._process();
-
- // Shortcuts
- var hash = this._hash;
- var H = hash.words;
-
- // Swap endian
- for (var i = 0; i < 4; i++) {
- // Shortcut
- var H_i = H[i];
-
- H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
- (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
- }
-
- // Return final computed hash
- return hash;
- },
-
- clone: function () {
- var clone = Hasher.clone.call(this);
- clone._hash = this._hash.clone();
-
- return clone;
- }
- });
-
- function FF(a, b, c, d, x, s, t) {
- var n = a + ((b & c) | (~b & d)) + x + t;
- return ((n << s) | (n >>> (32 - s))) + b;
- }
-
- function GG(a, b, c, d, x, s, t) {
- var n = a + ((b & d) | (c & ~d)) + x + t;
- return ((n << s) | (n >>> (32 - s))) + b;
- }
-
- function HH(a, b, c, d, x, s, t) {
- var n = a + (b ^ c ^ d) + x + t;
- return ((n << s) | (n >>> (32 - s))) + b;
- }
-
- function II(a, b, c, d, x, s, t) {
- var n = a + (c ^ (b | ~d)) + x + t;
- return ((n << s) | (n >>> (32 - s))) + b;
- }
-
- /**
- * Shortcut function to the hasher's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- *
- * @return {WordArray} The hash.
- *
- * @static
- *
- * @example
- *
- * var hash = CryptoJS.MD5('message');
- * var hash = CryptoJS.MD5(wordArray);
- */
- C.MD5 = Hasher._createHelper(MD5);
-
- /**
- * Shortcut function to the HMAC's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- * @param {WordArray|string} key The secret key.
- *
- * @return {WordArray} The HMAC.
- *
- * @static
- *
- * @example
- *
- * var hmac = CryptoJS.HmacMD5(message, key);
- */
- C.HmacMD5 = Hasher._createHmacHelper(MD5);
- }(Math));
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var Hasher = C_lib.Hasher;
- var C_algo = C.algo;
-
- // Reusable object
- var W = [];
-
- /**
- * SHA-1 hash algorithm.
- */
- var SHA1 = C_algo.SHA1 = Hasher.extend({
- _doReset: function () {
- this._hash = new WordArray.init([
- 0x67452301, 0xefcdab89,
- 0x98badcfe, 0x10325476,
- 0xc3d2e1f0
- ]);
- },
-
- _doProcessBlock: function (M, offset) {
- // Shortcut
- var H = this._hash.words;
-
- // Working variables
- var a = H[0];
- var b = H[1];
- var c = H[2];
- var d = H[3];
- var e = H[4];
-
- // Computation
- for (var i = 0; i < 80; i++) {
- if (i < 16) {
- W[i] = M[offset + i] | 0;
- } else {
- var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
- W[i] = (n << 1) | (n >>> 31);
- }
-
- var t = ((a << 5) | (a >>> 27)) + e + W[i];
- if (i < 20) {
- t += ((b & c) | (~b & d)) + 0x5a827999;
- } else if (i < 40) {
- t += (b ^ c ^ d) + 0x6ed9eba1;
- } else if (i < 60) {
- t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;
- } else /* if (i < 80) */ {
- t += (b ^ c ^ d) - 0x359d3e2a;
- }
-
- e = d;
- d = c;
- c = (b << 30) | (b >>> 2);
- b = a;
- a = t;
- }
-
- // Intermediate hash value
- H[0] = (H[0] + a) | 0;
- H[1] = (H[1] + b) | 0;
- H[2] = (H[2] + c) | 0;
- H[3] = (H[3] + d) | 0;
- H[4] = (H[4] + e) | 0;
- },
-
- _doFinalize: function () {
- // Shortcuts
- var data = this._data;
- var dataWords = data.words;
-
- var nBitsTotal = this._nDataBytes * 8;
- var nBitsLeft = data.sigBytes * 8;
-
- // Add padding
- dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
- dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
- dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
- data.sigBytes = dataWords.length * 4;
-
- // Hash final blocks
- this._process();
-
- // Return final computed hash
- return this._hash;
- },
-
- clone: function () {
- var clone = Hasher.clone.call(this);
- clone._hash = this._hash.clone();
-
- return clone;
- }
- });
-
- /**
- * Shortcut function to the hasher's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- *
- * @return {WordArray} The hash.
- *
- * @static
- *
- * @example
- *
- * var hash = CryptoJS.SHA1('message');
- * var hash = CryptoJS.SHA1(wordArray);
- */
- C.SHA1 = Hasher._createHelper(SHA1);
-
- /**
- * Shortcut function to the HMAC's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- * @param {WordArray|string} key The secret key.
- *
- * @return {WordArray} The HMAC.
- *
- * @static
- *
- * @example
- *
- * var hmac = CryptoJS.HmacSHA1(message, key);
- */
- C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
- }());
-
-
- (function (Math) {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var Hasher = C_lib.Hasher;
- var C_algo = C.algo;
-
- // Initialization and round constants tables
- var H = [];
- var K = [];
-
- // Compute constants
- (function () {
- function isPrime(n) {
- var sqrtN = Math.sqrt(n);
- for (var factor = 2; factor <= sqrtN; factor++) {
- if (!(n % factor)) {
- return false;
- }
- }
-
- return true;
- }
-
- function getFractionalBits(n) {
- return ((n - (n | 0)) * 0x100000000) | 0;
- }
-
- var n = 2;
- var nPrime = 0;
- while (nPrime < 64) {
- if (isPrime(n)) {
- if (nPrime < 8) {
- H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));
- }
- K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));
-
- nPrime++;
- }
-
- n++;
- }
- }());
-
- // Reusable object
- var W = [];
-
- /**
- * SHA-256 hash algorithm.
- */
- var SHA256 = C_algo.SHA256 = Hasher.extend({
- _doReset: function () {
- this._hash = new WordArray.init(H.slice(0));
- },
-
- _doProcessBlock: function (M, offset) {
- // Shortcut
- var H = this._hash.words;
-
- // Working variables
- var a = H[0];
- var b = H[1];
- var c = H[2];
- var d = H[3];
- var e = H[4];
- var f = H[5];
- var g = H[6];
- var h = H[7];
-
- // Computation
- for (var i = 0; i < 64; i++) {
- if (i < 16) {
- W[i] = M[offset + i] | 0;
- } else {
- var gamma0x = W[i - 15];
- var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^
- ((gamma0x << 14) | (gamma0x >>> 18)) ^
- (gamma0x >>> 3);
-
- var gamma1x = W[i - 2];
- var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^
- ((gamma1x << 13) | (gamma1x >>> 19)) ^
- (gamma1x >>> 10);
-
- W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
- }
-
- var ch = (e & f) ^ (~e & g);
- var maj = (a & b) ^ (a & c) ^ (b & c);
-
- var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));
- var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));
-
- var t1 = h + sigma1 + ch + K[i] + W[i];
- var t2 = sigma0 + maj;
-
- h = g;
- g = f;
- f = e;
- e = (d + t1) | 0;
- d = c;
- c = b;
- b = a;
- a = (t1 + t2) | 0;
- }
-
- // Intermediate hash value
- H[0] = (H[0] + a) | 0;
- H[1] = (H[1] + b) | 0;
- H[2] = (H[2] + c) | 0;
- H[3] = (H[3] + d) | 0;
- H[4] = (H[4] + e) | 0;
- H[5] = (H[5] + f) | 0;
- H[6] = (H[6] + g) | 0;
- H[7] = (H[7] + h) | 0;
- },
-
- _doFinalize: function () {
- // Shortcuts
- var data = this._data;
- var dataWords = data.words;
-
- var nBitsTotal = this._nDataBytes * 8;
- var nBitsLeft = data.sigBytes * 8;
-
- // Add padding
- dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
- dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
- dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
- data.sigBytes = dataWords.length * 4;
-
- // Hash final blocks
- this._process();
-
- // Return final computed hash
- return this._hash;
- },
-
- clone: function () {
- var clone = Hasher.clone.call(this);
- clone._hash = this._hash.clone();
-
- return clone;
- }
- });
-
- /**
- * Shortcut function to the hasher's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- *
- * @return {WordArray} The hash.
- *
- * @static
- *
- * @example
- *
- * var hash = CryptoJS.SHA256('message');
- * var hash = CryptoJS.SHA256(wordArray);
- */
- C.SHA256 = Hasher._createHelper(SHA256);
-
- /**
- * Shortcut function to the HMAC's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- * @param {WordArray|string} key The secret key.
- *
- * @return {WordArray} The HMAC.
- *
- * @static
- *
- * @example
- *
- * var hmac = CryptoJS.HmacSHA256(message, key);
- */
- C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
- }(Math));
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var C_algo = C.algo;
- var SHA256 = C_algo.SHA256;
-
- /**
- * SHA-224 hash algorithm.
- */
- var SHA224 = C_algo.SHA224 = SHA256.extend({
- _doReset: function () {
- this._hash = new WordArray.init([
- 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
- 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
- ]);
- },
-
- _doFinalize: function () {
- var hash = SHA256._doFinalize.call(this);
-
- hash.sigBytes -= 4;
-
- return hash;
- }
- });
-
- /**
- * Shortcut function to the hasher's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- *
- * @return {WordArray} The hash.
- *
- * @static
- *
- * @example
- *
- * var hash = CryptoJS.SHA224('message');
- * var hash = CryptoJS.SHA224(wordArray);
- */
- C.SHA224 = SHA256._createHelper(SHA224);
-
- /**
- * Shortcut function to the HMAC's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- * @param {WordArray|string} key The secret key.
- *
- * @return {WordArray} The HMAC.
- *
- * @static
- *
- * @example
- *
- * var hmac = CryptoJS.HmacSHA224(message, key);
- */
- C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var Hasher = C_lib.Hasher;
- var C_x64 = C.x64;
- var X64Word = C_x64.Word;
- var X64WordArray = C_x64.WordArray;
- var C_algo = C.algo;
-
- function X64Word_create() {
- return X64Word.create.apply(X64Word, arguments);
- }
-
- // Constants
- var K = [
- X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),
- X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),
- X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),
- X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),
- X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),
- X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),
- X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),
- X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),
- X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),
- X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),
- X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),
- X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),
- X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),
- X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),
- X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),
- X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),
- X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),
- X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),
- X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),
- X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),
- X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),
- X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),
- X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),
- X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),
- X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),
- X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),
- X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),
- X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),
- X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),
- X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),
- X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),
- X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),
- X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),
- X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),
- X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),
- X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),
- X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),
- X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),
- X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),
- X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)
- ];
-
- // Reusable objects
- var W = [];
- (function () {
- for (var i = 0; i < 80; i++) {
- W[i] = X64Word_create();
- }
- }());
-
- /**
- * SHA-512 hash algorithm.
- */
- var SHA512 = C_algo.SHA512 = Hasher.extend({
- _doReset: function () {
- this._hash = new X64WordArray.init([
- new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),
- new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),
- new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),
- new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)
- ]);
- },
-
- _doProcessBlock: function (M, offset) {
- // Shortcuts
- var H = this._hash.words;
-
- var H0 = H[0];
- var H1 = H[1];
- var H2 = H[2];
- var H3 = H[3];
- var H4 = H[4];
- var H5 = H[5];
- var H6 = H[6];
- var H7 = H[7];
-
- var H0h = H0.high;
- var H0l = H0.low;
- var H1h = H1.high;
- var H1l = H1.low;
- var H2h = H2.high;
- var H2l = H2.low;
- var H3h = H3.high;
- var H3l = H3.low;
- var H4h = H4.high;
- var H4l = H4.low;
- var H5h = H5.high;
- var H5l = H5.low;
- var H6h = H6.high;
- var H6l = H6.low;
- var H7h = H7.high;
- var H7l = H7.low;
-
- // Working variables
- var ah = H0h;
- var al = H0l;
- var bh = H1h;
- var bl = H1l;
- var ch = H2h;
- var cl = H2l;
- var dh = H3h;
- var dl = H3l;
- var eh = H4h;
- var el = H4l;
- var fh = H5h;
- var fl = H5l;
- var gh = H6h;
- var gl = H6l;
- var hh = H7h;
- var hl = H7l;
-
- // Rounds
- for (var i = 0; i < 80; i++) {
- var Wil;
- var Wih;
-
- // Shortcut
- var Wi = W[i];
-
- // Extend message
- if (i < 16) {
- Wih = Wi.high = M[offset + i * 2] | 0;
- Wil = Wi.low = M[offset + i * 2 + 1] | 0;
- } else {
- // Gamma0
- var gamma0x = W[i - 15];
- var gamma0xh = gamma0x.high;
- var gamma0xl = gamma0x.low;
- var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);
- var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));
-
- // Gamma1
- var gamma1x = W[i - 2];
- var gamma1xh = gamma1x.high;
- var gamma1xl = gamma1x.low;
- var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);
- var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));
-
- // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
- var Wi7 = W[i - 7];
- var Wi7h = Wi7.high;
- var Wi7l = Wi7.low;
-
- var Wi16 = W[i - 16];
- var Wi16h = Wi16.high;
- var Wi16l = Wi16.low;
-
- Wil = gamma0l + Wi7l;
- Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);
- Wil = Wil + gamma1l;
- Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);
- Wil = Wil + Wi16l;
- Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);
-
- Wi.high = Wih;
- Wi.low = Wil;
- }
-
- var chh = (eh & fh) ^ (~eh & gh);
- var chl = (el & fl) ^ (~el & gl);
- var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
- var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
-
- var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
- var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
- var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));
- var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));
-
- // t1 = h + sigma1 + ch + K[i] + W[i]
- var Ki = K[i];
- var Kih = Ki.high;
- var Kil = Ki.low;
-
- var t1l = hl + sigma1l;
- var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
- var t1l = t1l + chl;
- var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
- var t1l = t1l + Kil;
- var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);
- var t1l = t1l + Wil;
- var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);
-
- // t2 = sigma0 + maj
- var t2l = sigma0l + majl;
- var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
-
- // Update working variables
- hh = gh;
- hl = gl;
- gh = fh;
- gl = fl;
- fh = eh;
- fl = el;
- el = (dl + t1l) | 0;
- eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
- dh = ch;
- dl = cl;
- ch = bh;
- cl = bl;
- bh = ah;
- bl = al;
- al = (t1l + t2l) | 0;
- ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
- }
-
- // Intermediate hash value
- H0l = H0.low = (H0l + al);
- H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));
- H1l = H1.low = (H1l + bl);
- H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));
- H2l = H2.low = (H2l + cl);
- H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));
- H3l = H3.low = (H3l + dl);
- H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));
- H4l = H4.low = (H4l + el);
- H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));
- H5l = H5.low = (H5l + fl);
- H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));
- H6l = H6.low = (H6l + gl);
- H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));
- H7l = H7.low = (H7l + hl);
- H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));
- },
-
- _doFinalize: function () {
- // Shortcuts
- var data = this._data;
- var dataWords = data.words;
-
- var nBitsTotal = this._nDataBytes * 8;
- var nBitsLeft = data.sigBytes * 8;
-
- // Add padding
- dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
- dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);
- dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;
- data.sigBytes = dataWords.length * 4;
-
- // Hash final blocks
- this._process();
-
- // Convert hash to 32-bit word array before returning
- var hash = this._hash.toX32();
-
- // Return final computed hash
- return hash;
- },
-
- clone: function () {
- var clone = Hasher.clone.call(this);
- clone._hash = this._hash.clone();
-
- return clone;
- },
-
- blockSize: 1024/32
- });
-
- /**
- * Shortcut function to the hasher's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- *
- * @return {WordArray} The hash.
- *
- * @static
- *
- * @example
- *
- * var hash = CryptoJS.SHA512('message');
- * var hash = CryptoJS.SHA512(wordArray);
- */
- C.SHA512 = Hasher._createHelper(SHA512);
-
- /**
- * Shortcut function to the HMAC's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- * @param {WordArray|string} key The secret key.
- *
- * @return {WordArray} The HMAC.
- *
- * @static
- *
- * @example
- *
- * var hmac = CryptoJS.HmacSHA512(message, key);
- */
- C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_x64 = C.x64;
- var X64Word = C_x64.Word;
- var X64WordArray = C_x64.WordArray;
- var C_algo = C.algo;
- var SHA512 = C_algo.SHA512;
-
- /**
- * SHA-384 hash algorithm.
- */
- var SHA384 = C_algo.SHA384 = SHA512.extend({
- _doReset: function () {
- this._hash = new X64WordArray.init([
- new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),
- new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),
- new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),
- new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)
- ]);
- },
-
- _doFinalize: function () {
- var hash = SHA512._doFinalize.call(this);
-
- hash.sigBytes -= 16;
-
- return hash;
- }
- });
-
- /**
- * Shortcut function to the hasher's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- *
- * @return {WordArray} The hash.
- *
- * @static
- *
- * @example
- *
- * var hash = CryptoJS.SHA384('message');
- * var hash = CryptoJS.SHA384(wordArray);
- */
- C.SHA384 = SHA512._createHelper(SHA384);
-
- /**
- * Shortcut function to the HMAC's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- * @param {WordArray|string} key The secret key.
- *
- * @return {WordArray} The HMAC.
- *
- * @static
- *
- * @example
- *
- * var hmac = CryptoJS.HmacSHA384(message, key);
- */
- C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
- }());
-
-
- (function (Math) {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var Hasher = C_lib.Hasher;
- var C_x64 = C.x64;
- var X64Word = C_x64.Word;
- var C_algo = C.algo;
-
- // Constants tables
- var RHO_OFFSETS = [];
- var PI_INDEXES = [];
- var ROUND_CONSTANTS = [];
-
- // Compute Constants
- (function () {
- // Compute rho offset constants
- var x = 1, y = 0;
- for (var t = 0; t < 24; t++) {
- RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;
-
- var newX = y % 5;
- var newY = (2 * x + 3 * y) % 5;
- x = newX;
- y = newY;
- }
-
- // Compute pi index constants
- for (var x = 0; x < 5; x++) {
- for (var y = 0; y < 5; y++) {
- PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;
- }
- }
-
- // Compute round constants
- var LFSR = 0x01;
- for (var i = 0; i < 24; i++) {
- var roundConstantMsw = 0;
- var roundConstantLsw = 0;
-
- for (var j = 0; j < 7; j++) {
- if (LFSR & 0x01) {
- var bitPosition = (1 << j) - 1;
- if (bitPosition < 32) {
- roundConstantLsw ^= 1 << bitPosition;
- } else /* if (bitPosition >= 32) */ {
- roundConstantMsw ^= 1 << (bitPosition - 32);
- }
- }
-
- // Compute next LFSR
- if (LFSR & 0x80) {
- // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1
- LFSR = (LFSR << 1) ^ 0x71;
- } else {
- LFSR <<= 1;
- }
- }
-
- ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
- }
- }());
-
- // Reusable objects for temporary values
- var T = [];
- (function () {
- for (var i = 0; i < 25; i++) {
- T[i] = X64Word.create();
- }
- }());
-
- /**
- * SHA-3 hash algorithm.
- */
- var SHA3 = C_algo.SHA3 = Hasher.extend({
- /**
- * Configuration options.
- *
- * @property {number} outputLength
- * The desired number of bits in the output hash.
- * Only values permitted are: 224, 256, 384, 512.
- * Default: 512
- */
- cfg: Hasher.cfg.extend({
- outputLength: 512
- }),
-
- _doReset: function () {
- var state = this._state = []
- for (var i = 0; i < 25; i++) {
- state[i] = new X64Word.init();
- }
-
- this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
- },
-
- _doProcessBlock: function (M, offset) {
- // Shortcuts
- var state = this._state;
- var nBlockSizeLanes = this.blockSize / 2;
-
- // Absorb
- for (var i = 0; i < nBlockSizeLanes; i++) {
- // Shortcuts
- var M2i = M[offset + 2 * i];
- var M2i1 = M[offset + 2 * i + 1];
-
- // Swap endian
- M2i = (
- (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |
- (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)
- );
- M2i1 = (
- (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |
- (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)
- );
-
- // Absorb message into state
- var lane = state[i];
- lane.high ^= M2i1;
- lane.low ^= M2i;
- }
-
- // Rounds
- for (var round = 0; round < 24; round++) {
- // Theta
- for (var x = 0; x < 5; x++) {
- // Mix column lanes
- var tMsw = 0, tLsw = 0;
- for (var y = 0; y < 5; y++) {
- var lane = state[x + 5 * y];
- tMsw ^= lane.high;
- tLsw ^= lane.low;
- }
-
- // Temporary values
- var Tx = T[x];
- Tx.high = tMsw;
- Tx.low = tLsw;
- }
- for (var x = 0; x < 5; x++) {
- // Shortcuts
- var Tx4 = T[(x + 4) % 5];
- var Tx1 = T[(x + 1) % 5];
- var Tx1Msw = Tx1.high;
- var Tx1Lsw = Tx1.low;
-
- // Mix surrounding columns
- var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));
- var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));
- for (var y = 0; y < 5; y++) {
- var lane = state[x + 5 * y];
- lane.high ^= tMsw;
- lane.low ^= tLsw;
- }
- }
-
- // Rho Pi
- for (var laneIndex = 1; laneIndex < 25; laneIndex++) {
- var tMsw;
- var tLsw;
-
- // Shortcuts
- var lane = state[laneIndex];
- var laneMsw = lane.high;
- var laneLsw = lane.low;
- var rhoOffset = RHO_OFFSETS[laneIndex];
-
- // Rotate lanes
- if (rhoOffset < 32) {
- tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));
- tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));
- } else /* if (rhoOffset >= 32) */ {
- tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));
- tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));
- }
-
- // Transpose lanes
- var TPiLane = T[PI_INDEXES[laneIndex]];
- TPiLane.high = tMsw;
- TPiLane.low = tLsw;
- }
-
- // Rho pi at x = y = 0
- var T0 = T[0];
- var state0 = state[0];
- T0.high = state0.high;
- T0.low = state0.low;
-
- // Chi
- for (var x = 0; x < 5; x++) {
- for (var y = 0; y < 5; y++) {
- // Shortcuts
- var laneIndex = x + 5 * y;
- var lane = state[laneIndex];
- var TLane = T[laneIndex];
- var Tx1Lane = T[((x + 1) % 5) + 5 * y];
- var Tx2Lane = T[((x + 2) % 5) + 5 * y];
-
- // Mix rows
- lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);
- lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);
- }
- }
-
- // Iota
- var lane = state[0];
- var roundConstant = ROUND_CONSTANTS[round];
- lane.high ^= roundConstant.high;
- lane.low ^= roundConstant.low;
- }
- },
-
- _doFinalize: function () {
- // Shortcuts
- var data = this._data;
- var dataWords = data.words;
- var nBitsTotal = this._nDataBytes * 8;
- var nBitsLeft = data.sigBytes * 8;
- var blockSizeBits = this.blockSize * 32;
-
- // Add padding
- dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);
- dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;
- data.sigBytes = dataWords.length * 4;
-
- // Hash final blocks
- this._process();
-
- // Shortcuts
- var state = this._state;
- var outputLengthBytes = this.cfg.outputLength / 8;
- var outputLengthLanes = outputLengthBytes / 8;
-
- // Squeeze
- var hashWords = [];
- for (var i = 0; i < outputLengthLanes; i++) {
- // Shortcuts
- var lane = state[i];
- var laneMsw = lane.high;
- var laneLsw = lane.low;
-
- // Swap endian
- laneMsw = (
- (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |
- (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)
- );
- laneLsw = (
- (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |
- (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)
- );
-
- // Squeeze state to retrieve hash
- hashWords.push(laneLsw);
- hashWords.push(laneMsw);
- }
-
- // Return final computed hash
- return new WordArray.init(hashWords, outputLengthBytes);
- },
-
- clone: function () {
- var clone = Hasher.clone.call(this);
-
- var state = clone._state = this._state.slice(0);
- for (var i = 0; i < 25; i++) {
- state[i] = state[i].clone();
- }
-
- return clone;
- }
- });
-
- /**
- * Shortcut function to the hasher's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- *
- * @return {WordArray} The hash.
- *
- * @static
- *
- * @example
- *
- * var hash = CryptoJS.SHA3('message');
- * var hash = CryptoJS.SHA3(wordArray);
- */
- C.SHA3 = Hasher._createHelper(SHA3);
-
- /**
- * Shortcut function to the HMAC's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- * @param {WordArray|string} key The secret key.
- *
- * @return {WordArray} The HMAC.
- *
- * @static
- *
- * @example
- *
- * var hmac = CryptoJS.HmacSHA3(message, key);
- */
- C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
- }(Math));
-
-
- /** @preserve
- (c) 2012 by Cédric Mesnil. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
- - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
- (function (Math) {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var Hasher = C_lib.Hasher;
- var C_algo = C.algo;
-
- // Constants table
- var _zl = WordArray.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]);
- var _zr = WordArray.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]);
- var _sl = WordArray.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 ]);
- var _sr = WordArray.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 ]);
-
- var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);
- var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);
-
- /**
- * RIPEMD160 hash algorithm.
- */
- var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
- _doReset: function () {
- this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);
- },
-
- _doProcessBlock: function (M, offset) {
-
- // Swap endian
- for (var i = 0; i < 16; i++) {
- // Shortcuts
- var offset_i = offset + i;
- var M_offset_i = M[offset_i];
-
- // Swap
- M[offset_i] = (
- (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
- (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
- );
- }
- // Shortcut
- var H = this._hash.words;
- var hl = _hl.words;
- var hr = _hr.words;
- var zl = _zl.words;
- var zr = _zr.words;
- var sl = _sl.words;
- var sr = _sr.words;
-
- // Working variables
- var al, bl, cl, dl, el;
- var ar, br, cr, dr, er;
-
- ar = al = H[0];
- br = bl = H[1];
- cr = cl = H[2];
- dr = dl = H[3];
- er = el = H[4];
- // Computation
- var t;
- for (var i = 0; i < 80; i += 1) {
- t = (al + M[offset+zl[i]])|0;
- if (i<16){
- t += f1(bl,cl,dl) + hl[0];
- } else if (i<32) {
- t += f2(bl,cl,dl) + hl[1];
- } else if (i<48) {
- t += f3(bl,cl,dl) + hl[2];
- } else if (i<64) {
- t += f4(bl,cl,dl) + hl[3];
- } else {// if (i<80) {
- t += f5(bl,cl,dl) + hl[4];
- }
- t = t|0;
- t = rotl(t,sl[i]);
- t = (t+el)|0;
- al = el;
- el = dl;
- dl = rotl(cl, 10);
- cl = bl;
- bl = t;
-
- t = (ar + M[offset+zr[i]])|0;
- if (i<16){
- t += f5(br,cr,dr) + hr[0];
- } else if (i<32) {
- t += f4(br,cr,dr) + hr[1];
- } else if (i<48) {
- t += f3(br,cr,dr) + hr[2];
- } else if (i<64) {
- t += f2(br,cr,dr) + hr[3];
- } else {// if (i<80) {
- t += f1(br,cr,dr) + hr[4];
- }
- t = t|0;
- t = rotl(t,sr[i]) ;
- t = (t+er)|0;
- ar = er;
- er = dr;
- dr = rotl(cr, 10);
- cr = br;
- br = t;
- }
- // Intermediate hash value
- t = (H[1] + cl + dr)|0;
- H[1] = (H[2] + dl + er)|0;
- H[2] = (H[3] + el + ar)|0;
- H[3] = (H[4] + al + br)|0;
- H[4] = (H[0] + bl + cr)|0;
- H[0] = t;
- },
-
- _doFinalize: function () {
- // Shortcuts
- var data = this._data;
- var dataWords = data.words;
-
- var nBitsTotal = this._nDataBytes * 8;
- var nBitsLeft = data.sigBytes * 8;
-
- // Add padding
- dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
- dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
- (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
- (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
- );
- data.sigBytes = (dataWords.length + 1) * 4;
-
- // Hash final blocks
- this._process();
-
- // Shortcuts
- var hash = this._hash;
- var H = hash.words;
-
- // Swap endian
- for (var i = 0; i < 5; i++) {
- // Shortcut
- var H_i = H[i];
-
- // Swap
- H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
- (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
- }
-
- // Return final computed hash
- return hash;
- },
-
- clone: function () {
- var clone = Hasher.clone.call(this);
- clone._hash = this._hash.clone();
-
- return clone;
- }
- });
-
-
- function f1(x, y, z) {
- return ((x) ^ (y) ^ (z));
-
- }
-
- function f2(x, y, z) {
- return (((x)&(y)) | ((~x)&(z)));
- }
-
- function f3(x, y, z) {
- return (((x) | (~(y))) ^ (z));
- }
-
- function f4(x, y, z) {
- return (((x) & (z)) | ((y)&(~(z))));
- }
-
- function f5(x, y, z) {
- return ((x) ^ ((y) |(~(z))));
-
- }
-
- function rotl(x,n) {
- return (x<>>(32-n));
- }
-
-
- /**
- * Shortcut function to the hasher's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- *
- * @return {WordArray} The hash.
- *
- * @static
- *
- * @example
- *
- * var hash = CryptoJS.RIPEMD160('message');
- * var hash = CryptoJS.RIPEMD160(wordArray);
- */
- C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
-
- /**
- * Shortcut function to the HMAC's object interface.
- *
- * @param {WordArray|string} message The message to hash.
- * @param {WordArray|string} key The secret key.
- *
- * @return {WordArray} The HMAC.
- *
- * @static
- *
- * @example
- *
- * var hmac = CryptoJS.HmacRIPEMD160(message, key);
- */
- C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
- }(Math));
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var Base = C_lib.Base;
- var C_enc = C.enc;
- var Utf8 = C_enc.Utf8;
- var C_algo = C.algo;
-
- /**
- * HMAC algorithm.
- */
- var HMAC = C_algo.HMAC = Base.extend({
- /**
- * Initializes a newly created HMAC.
- *
- * @param {Hasher} hasher The hash algorithm to use.
- * @param {WordArray|string} key The secret key.
- *
- * @example
- *
- * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
- */
- init: function (hasher, key) {
- // Init hasher
- hasher = this._hasher = new hasher.init();
-
- // Convert string to WordArray, else assume WordArray already
- if (typeof key == 'string') {
- key = Utf8.parse(key);
- }
-
- // Shortcuts
- var hasherBlockSize = hasher.blockSize;
- var hasherBlockSizeBytes = hasherBlockSize * 4;
-
- // Allow arbitrary length keys
- if (key.sigBytes > hasherBlockSizeBytes) {
- key = hasher.finalize(key);
- }
-
- // Clamp excess bits
- key.clamp();
-
- // Clone key for inner and outer pads
- var oKey = this._oKey = key.clone();
- var iKey = this._iKey = key.clone();
-
- // Shortcuts
- var oKeyWords = oKey.words;
- var iKeyWords = iKey.words;
-
- // XOR keys with pad constants
- for (var i = 0; i < hasherBlockSize; i++) {
- oKeyWords[i] ^= 0x5c5c5c5c;
- iKeyWords[i] ^= 0x36363636;
- }
- oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
-
- // Set initial values
- this.reset();
- },
-
- /**
- * Resets this HMAC to its initial state.
- *
- * @example
- *
- * hmacHasher.reset();
- */
- reset: function () {
- // Shortcut
- var hasher = this._hasher;
-
- // Reset
- hasher.reset();
- hasher.update(this._iKey);
- },
-
- /**
- * Updates this HMAC with a message.
- *
- * @param {WordArray|string} messageUpdate The message to append.
- *
- * @return {HMAC} This HMAC instance.
- *
- * @example
- *
- * hmacHasher.update('message');
- * hmacHasher.update(wordArray);
- */
- update: function (messageUpdate) {
- this._hasher.update(messageUpdate);
-
- // Chainable
- return this;
- },
-
- /**
- * Finalizes the HMAC computation.
- * Note that the finalize operation is effectively a destructive, read-once operation.
- *
- * @param {WordArray|string} messageUpdate (Optional) A final message update.
- *
- * @return {WordArray} The HMAC.
- *
- * @example
- *
- * var hmac = hmacHasher.finalize();
- * var hmac = hmacHasher.finalize('message');
- * var hmac = hmacHasher.finalize(wordArray);
- */
- finalize: function (messageUpdate) {
- // Shortcut
- var hasher = this._hasher;
-
- // Compute HMAC
- var innerHash = hasher.finalize(messageUpdate);
- hasher.reset();
- var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));
-
- return hmac;
- }
- });
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var Base = C_lib.Base;
- var WordArray = C_lib.WordArray;
- var C_algo = C.algo;
- var SHA1 = C_algo.SHA1;
- var HMAC = C_algo.HMAC;
-
- /**
- * Password-Based Key Derivation Function 2 algorithm.
- */
- var PBKDF2 = C_algo.PBKDF2 = Base.extend({
- /**
- * Configuration options.
- *
- * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
- * @property {Hasher} hasher The hasher to use. Default: SHA1
- * @property {number} iterations The number of iterations to perform. Default: 1
- */
- cfg: Base.extend({
- keySize: 128/32,
- hasher: SHA1,
- iterations: 1
- }),
-
- /**
- * Initializes a newly created key derivation function.
- *
- * @param {Object} cfg (Optional) The configuration options to use for the derivation.
- *
- * @example
- *
- * var kdf = CryptoJS.algo.PBKDF2.create();
- * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
- * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
- */
- init: function (cfg) {
- this.cfg = this.cfg.extend(cfg);
- },
-
- /**
- * Computes the Password-Based Key Derivation Function 2.
- *
- * @param {WordArray|string} password The password.
- * @param {WordArray|string} salt A salt.
- *
- * @return {WordArray} The derived key.
- *
- * @example
- *
- * var key = kdf.compute(password, salt);
- */
- compute: function (password, salt) {
- // Shortcut
- var cfg = this.cfg;
-
- // Init HMAC
- var hmac = HMAC.create(cfg.hasher, password);
-
- // Initial values
- var derivedKey = WordArray.create();
- var blockIndex = WordArray.create([0x00000001]);
-
- // Shortcuts
- var derivedKeyWords = derivedKey.words;
- var blockIndexWords = blockIndex.words;
- var keySize = cfg.keySize;
- var iterations = cfg.iterations;
-
- // Generate key
- while (derivedKeyWords.length < keySize) {
- var block = hmac.update(salt).finalize(blockIndex);
- hmac.reset();
-
- // Shortcuts
- var blockWords = block.words;
- var blockWordsLength = blockWords.length;
-
- // Iterations
- var intermediate = block;
- for (var i = 1; i < iterations; i++) {
- intermediate = hmac.finalize(intermediate);
- hmac.reset();
-
- // Shortcut
- var intermediateWords = intermediate.words;
-
- // XOR intermediate with block
- for (var j = 0; j < blockWordsLength; j++) {
- blockWords[j] ^= intermediateWords[j];
- }
- }
-
- derivedKey.concat(block);
- blockIndexWords[0]++;
- }
- derivedKey.sigBytes = keySize * 4;
-
- return derivedKey;
- }
- });
-
- /**
- * Computes the Password-Based Key Derivation Function 2.
- *
- * @param {WordArray|string} password The password.
- * @param {WordArray|string} salt A salt.
- * @param {Object} cfg (Optional) The configuration options to use for this computation.
- *
- * @return {WordArray} The derived key.
- *
- * @static
- *
- * @example
- *
- * var key = CryptoJS.PBKDF2(password, salt);
- * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });
- * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });
- */
- C.PBKDF2 = function (password, salt, cfg) {
- return PBKDF2.create(cfg).compute(password, salt);
- };
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var Base = C_lib.Base;
- var WordArray = C_lib.WordArray;
- var C_algo = C.algo;
- var MD5 = C_algo.MD5;
-
- /**
- * This key derivation function is meant to conform with EVP_BytesToKey.
- * www.openssl.org/docs/crypto/EVP_BytesToKey.html
- */
- var EvpKDF = C_algo.EvpKDF = Base.extend({
- /**
- * Configuration options.
- *
- * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
- * @property {Hasher} hasher The hash algorithm to use. Default: MD5
- * @property {number} iterations The number of iterations to perform. Default: 1
- */
- cfg: Base.extend({
- keySize: 128/32,
- hasher: MD5,
- iterations: 1
- }),
-
- /**
- * Initializes a newly created key derivation function.
- *
- * @param {Object} cfg (Optional) The configuration options to use for the derivation.
- *
- * @example
- *
- * var kdf = CryptoJS.algo.EvpKDF.create();
- * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
- * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
- */
- init: function (cfg) {
- this.cfg = this.cfg.extend(cfg);
- },
-
- /**
- * Derives a key from a password.
- *
- * @param {WordArray|string} password The password.
- * @param {WordArray|string} salt A salt.
- *
- * @return {WordArray} The derived key.
- *
- * @example
- *
- * var key = kdf.compute(password, salt);
- */
- compute: function (password, salt) {
- var block;
-
- // Shortcut
- var cfg = this.cfg;
-
- // Init hasher
- var hasher = cfg.hasher.create();
-
- // Initial values
- var derivedKey = WordArray.create();
-
- // Shortcuts
- var derivedKeyWords = derivedKey.words;
- var keySize = cfg.keySize;
- var iterations = cfg.iterations;
-
- // Generate key
- while (derivedKeyWords.length < keySize) {
- if (block) {
- hasher.update(block);
- }
- block = hasher.update(password).finalize(salt);
- hasher.reset();
-
- // Iterations
- for (var i = 1; i < iterations; i++) {
- block = hasher.finalize(block);
- hasher.reset();
- }
-
- derivedKey.concat(block);
- }
- derivedKey.sigBytes = keySize * 4;
-
- return derivedKey;
- }
- });
-
- /**
- * Derives a key from a password.
- *
- * @param {WordArray|string} password The password.
- * @param {WordArray|string} salt A salt.
- * @param {Object} cfg (Optional) The configuration options to use for this computation.
- *
- * @return {WordArray} The derived key.
- *
- * @static
- *
- * @example
- *
- * var key = CryptoJS.EvpKDF(password, salt);
- * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });
- * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });
- */
- C.EvpKDF = function (password, salt, cfg) {
- return EvpKDF.create(cfg).compute(password, salt);
- };
- }());
-
-
- /**
- * Cipher core components.
- */
- CryptoJS.lib.Cipher || (function (undefined) {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var Base = C_lib.Base;
- var WordArray = C_lib.WordArray;
- var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
- var C_enc = C.enc;
- var Utf8 = C_enc.Utf8;
- var Base64 = C_enc.Base64;
- var C_algo = C.algo;
- var EvpKDF = C_algo.EvpKDF;
-
- /**
- * Abstract base cipher template.
- *
- * @property {number} keySize This cipher's key size. Default: 4 (128 bits)
- * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)
- * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.
- * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.
- */
- var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
- /**
- * Configuration options.
- *
- * @property {WordArray} iv The IV to use for this operation.
- */
- cfg: Base.extend(),
-
- /**
- * Creates this cipher in encryption mode.
- *
- * @param {WordArray} key The key.
- * @param {Object} cfg (Optional) The configuration options to use for this operation.
- *
- * @return {Cipher} A cipher instance.
- *
- * @static
- *
- * @example
- *
- * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
- */
- createEncryptor: function (key, cfg) {
- return this.create(this._ENC_XFORM_MODE, key, cfg);
- },
-
- /**
- * Creates this cipher in decryption mode.
- *
- * @param {WordArray} key The key.
- * @param {Object} cfg (Optional) The configuration options to use for this operation.
- *
- * @return {Cipher} A cipher instance.
- *
- * @static
- *
- * @example
- *
- * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
- */
- createDecryptor: function (key, cfg) {
- return this.create(this._DEC_XFORM_MODE, key, cfg);
- },
-
- /**
- * Initializes a newly created cipher.
- *
- * @param {number} xformMode Either the encryption or decryption transormation mode constant.
- * @param {WordArray} key The key.
- * @param {Object} cfg (Optional) The configuration options to use for this operation.
- *
- * @example
- *
- * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
- */
- init: function (xformMode, key, cfg) {
- // Apply config defaults
- this.cfg = this.cfg.extend(cfg);
-
- // Store transform mode and key
- this._xformMode = xformMode;
- this._key = key;
-
- // Set initial values
- this.reset();
- },
-
- /**
- * Resets this cipher to its initial state.
- *
- * @example
- *
- * cipher.reset();
- */
- reset: function () {
- // Reset data buffer
- BufferedBlockAlgorithm.reset.call(this);
-
- // Perform concrete-cipher logic
- this._doReset();
- },
-
- /**
- * Adds data to be encrypted or decrypted.
- *
- * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
- *
- * @return {WordArray} The data after processing.
- *
- * @example
- *
- * var encrypted = cipher.process('data');
- * var encrypted = cipher.process(wordArray);
- */
- process: function (dataUpdate) {
- // Append
- this._append(dataUpdate);
-
- // Process available blocks
- return this._process();
- },
-
- /**
- * Finalizes the encryption or decryption process.
- * Note that the finalize operation is effectively a destructive, read-once operation.
- *
- * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
- *
- * @return {WordArray} The data after final processing.
- *
- * @example
- *
- * var encrypted = cipher.finalize();
- * var encrypted = cipher.finalize('data');
- * var encrypted = cipher.finalize(wordArray);
- */
- finalize: function (dataUpdate) {
- // Final data update
- if (dataUpdate) {
- this._append(dataUpdate);
- }
-
- // Perform concrete-cipher logic
- var finalProcessedData = this._doFinalize();
-
- return finalProcessedData;
- },
-
- keySize: 128/32,
-
- ivSize: 128/32,
-
- _ENC_XFORM_MODE: 1,
-
- _DEC_XFORM_MODE: 2,
-
- /**
- * Creates shortcut functions to a cipher's object interface.
- *
- * @param {Cipher} cipher The cipher to create a helper for.
- *
- * @return {Object} An object with encrypt and decrypt shortcut functions.
- *
- * @static
- *
- * @example
- *
- * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
- */
- _createHelper: (function () {
- function selectCipherStrategy(key) {
- if (typeof key == 'string') {
- return PasswordBasedCipher;
- } else {
- return SerializableCipher;
- }
- }
-
- return function (cipher) {
- return {
- encrypt: function (message, key, cfg) {
- return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
- },
-
- decrypt: function (ciphertext, key, cfg) {
- return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
- }
- };
- };
- }())
- });
-
- /**
- * Abstract base stream cipher template.
- *
- * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)
- */
- var StreamCipher = C_lib.StreamCipher = Cipher.extend({
- _doFinalize: function () {
- // Process partial blocks
- var finalProcessedBlocks = this._process(!!'flush');
-
- return finalProcessedBlocks;
- },
-
- blockSize: 1
- });
-
- /**
- * Mode namespace.
- */
- var C_mode = C.mode = {};
-
- /**
- * Abstract base block cipher mode template.
- */
- var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
- /**
- * Creates this mode for encryption.
- *
- * @param {Cipher} cipher A block cipher instance.
- * @param {Array} iv The IV words.
- *
- * @static
- *
- * @example
- *
- * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
- */
- createEncryptor: function (cipher, iv) {
- return this.Encryptor.create(cipher, iv);
- },
-
- /**
- * Creates this mode for decryption.
- *
- * @param {Cipher} cipher A block cipher instance.
- * @param {Array} iv The IV words.
- *
- * @static
- *
- * @example
- *
- * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
- */
- createDecryptor: function (cipher, iv) {
- return this.Decryptor.create(cipher, iv);
- },
-
- /**
- * Initializes a newly created mode.
- *
- * @param {Cipher} cipher A block cipher instance.
- * @param {Array} iv The IV words.
- *
- * @example
- *
- * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
- */
- init: function (cipher, iv) {
- this._cipher = cipher;
- this._iv = iv;
- }
- });
-
- /**
- * Cipher Block Chaining mode.
- */
- var CBC = C_mode.CBC = (function () {
- /**
- * Abstract base CBC mode.
- */
- var CBC = BlockCipherMode.extend();
-
- /**
- * CBC encryptor.
- */
- CBC.Encryptor = CBC.extend({
- /**
- * Processes the data block at offset.
- *
- * @param {Array} words The data words to operate on.
- * @param {number} offset The offset where the block starts.
- *
- * @example
- *
- * mode.processBlock(data.words, offset);
- */
- processBlock: function (words, offset) {
- // Shortcuts
- var cipher = this._cipher;
- var blockSize = cipher.blockSize;
-
- // XOR and encrypt
- xorBlock.call(this, words, offset, blockSize);
- cipher.encryptBlock(words, offset);
-
- // Remember this block to use with next block
- this._prevBlock = words.slice(offset, offset + blockSize);
- }
- });
-
- /**
- * CBC decryptor.
- */
- CBC.Decryptor = CBC.extend({
- /**
- * Processes the data block at offset.
- *
- * @param {Array} words The data words to operate on.
- * @param {number} offset The offset where the block starts.
- *
- * @example
- *
- * mode.processBlock(data.words, offset);
- */
- processBlock: function (words, offset) {
- // Shortcuts
- var cipher = this._cipher;
- var blockSize = cipher.blockSize;
-
- // Remember this block to use with next block
- var thisBlock = words.slice(offset, offset + blockSize);
-
- // Decrypt and XOR
- cipher.decryptBlock(words, offset);
- xorBlock.call(this, words, offset, blockSize);
-
- // This block becomes the previous block
- this._prevBlock = thisBlock;
- }
- });
-
- function xorBlock(words, offset, blockSize) {
- var block;
-
- // Shortcut
- var iv = this._iv;
-
- // Choose mixing block
- if (iv) {
- block = iv;
-
- // Remove IV for subsequent blocks
- this._iv = undefined;
- } else {
- block = this._prevBlock;
- }
-
- // XOR blocks
- for (var i = 0; i < blockSize; i++) {
- words[offset + i] ^= block[i];
- }
- }
-
- return CBC;
- }());
-
- /**
- * Padding namespace.
- */
- var C_pad = C.pad = {};
-
- /**
- * PKCS #5/7 padding strategy.
- */
- var Pkcs7 = C_pad.Pkcs7 = {
- /**
- * Pads data using the algorithm defined in PKCS #5/7.
- *
- * @param {WordArray} data The data to pad.
- * @param {number} blockSize The multiple that the data should be padded to.
- *
- * @static
- *
- * @example
- *
- * CryptoJS.pad.Pkcs7.pad(wordArray, 4);
- */
- pad: function (data, blockSize) {
- // Shortcut
- var blockSizeBytes = blockSize * 4;
-
- // Count padding bytes
- var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
-
- // Create padding word
- var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;
-
- // Create padding
- var paddingWords = [];
- for (var i = 0; i < nPaddingBytes; i += 4) {
- paddingWords.push(paddingWord);
- }
- var padding = WordArray.create(paddingWords, nPaddingBytes);
-
- // Add padding
- data.concat(padding);
- },
-
- /**
- * Unpads data that had been padded using the algorithm defined in PKCS #5/7.
- *
- * @param {WordArray} data The data to unpad.
- *
- * @static
- *
- * @example
- *
- * CryptoJS.pad.Pkcs7.unpad(wordArray);
- */
- unpad: function (data) {
- // Get number of padding bytes from last byte
- var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
-
- // Remove padding
- data.sigBytes -= nPaddingBytes;
- }
- };
-
- /**
- * Abstract base block cipher template.
- *
- * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)
- */
- var BlockCipher = C_lib.BlockCipher = Cipher.extend({
- /**
- * Configuration options.
- *
- * @property {Mode} mode The block mode to use. Default: CBC
- * @property {Padding} padding The padding strategy to use. Default: Pkcs7
- */
- cfg: Cipher.cfg.extend({
- mode: CBC,
- padding: Pkcs7
- }),
-
- reset: function () {
- var modeCreator;
-
- // Reset cipher
- Cipher.reset.call(this);
-
- // Shortcuts
- var cfg = this.cfg;
- var iv = cfg.iv;
- var mode = cfg.mode;
-
- // Reset block mode
- if (this._xformMode == this._ENC_XFORM_MODE) {
- modeCreator = mode.createEncryptor;
- } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
- modeCreator = mode.createDecryptor;
- // Keep at least one block in the buffer for unpadding
- this._minBufferSize = 1;
- }
-
- if (this._mode && this._mode.__creator == modeCreator) {
- this._mode.init(this, iv && iv.words);
- } else {
- this._mode = modeCreator.call(mode, this, iv && iv.words);
- this._mode.__creator = modeCreator;
- }
- },
-
- _doProcessBlock: function (words, offset) {
- this._mode.processBlock(words, offset);
- },
-
- _doFinalize: function () {
- var finalProcessedBlocks;
-
- // Shortcut
- var padding = this.cfg.padding;
-
- // Finalize
- if (this._xformMode == this._ENC_XFORM_MODE) {
- // Pad data
- padding.pad(this._data, this.blockSize);
-
- // Process final blocks
- finalProcessedBlocks = this._process(!!'flush');
- } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
- // Process final blocks
- finalProcessedBlocks = this._process(!!'flush');
-
- // Unpad data
- padding.unpad(finalProcessedBlocks);
- }
-
- return finalProcessedBlocks;
- },
-
- blockSize: 128/32
- });
-
- /**
- * A collection of cipher parameters.
- *
- * @property {WordArray} ciphertext The raw ciphertext.
- * @property {WordArray} key The key to this ciphertext.
- * @property {WordArray} iv The IV used in the ciphering operation.
- * @property {WordArray} salt The salt used with a key derivation function.
- * @property {Cipher} algorithm The cipher algorithm.
- * @property {Mode} mode The block mode used in the ciphering operation.
- * @property {Padding} padding The padding scheme used in the ciphering operation.
- * @property {number} blockSize The block size of the cipher.
- * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.
- */
- var CipherParams = C_lib.CipherParams = Base.extend({
- /**
- * Initializes a newly created cipher params object.
- *
- * @param {Object} cipherParams An object with any of the possible cipher parameters.
- *
- * @example
- *
- * var cipherParams = CryptoJS.lib.CipherParams.create({
- * ciphertext: ciphertextWordArray,
- * key: keyWordArray,
- * iv: ivWordArray,
- * salt: saltWordArray,
- * algorithm: CryptoJS.algo.AES,
- * mode: CryptoJS.mode.CBC,
- * padding: CryptoJS.pad.PKCS7,
- * blockSize: 4,
- * formatter: CryptoJS.format.OpenSSL
- * });
- */
- init: function (cipherParams) {
- this.mixIn(cipherParams);
- },
-
- /**
- * Converts this cipher params object to a string.
- *
- * @param {Format} formatter (Optional) The formatting strategy to use.
- *
- * @return {string} The stringified cipher params.
- *
- * @throws Error If neither the formatter nor the default formatter is set.
- *
- * @example
- *
- * var string = cipherParams + '';
- * var string = cipherParams.toString();
- * var string = cipherParams.toString(CryptoJS.format.OpenSSL);
- */
- toString: function (formatter) {
- return (formatter || this.formatter).stringify(this);
- }
- });
-
- /**
- * Format namespace.
- */
- var C_format = C.format = {};
-
- /**
- * OpenSSL formatting strategy.
- */
- var OpenSSLFormatter = C_format.OpenSSL = {
- /**
- * Converts a cipher params object to an OpenSSL-compatible string.
- *
- * @param {CipherParams} cipherParams The cipher params object.
- *
- * @return {string} The OpenSSL-compatible string.
- *
- * @static
- *
- * @example
- *
- * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
- */
- stringify: function (cipherParams) {
- var wordArray;
-
- // Shortcuts
- var ciphertext = cipherParams.ciphertext;
- var salt = cipherParams.salt;
-
- // Format
- if (salt) {
- wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);
- } else {
- wordArray = ciphertext;
- }
-
- return wordArray.toString(Base64);
- },
-
- /**
- * Converts an OpenSSL-compatible string to a cipher params object.
- *
- * @param {string} openSSLStr The OpenSSL-compatible string.
- *
- * @return {CipherParams} The cipher params object.
- *
- * @static
- *
- * @example
- *
- * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
- */
- parse: function (openSSLStr) {
- var salt;
-
- // Parse base64
- var ciphertext = Base64.parse(openSSLStr);
-
- // Shortcut
- var ciphertextWords = ciphertext.words;
-
- // Test for salt
- if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {
- // Extract salt
- salt = WordArray.create(ciphertextWords.slice(2, 4));
-
- // Remove salt from ciphertext
- ciphertextWords.splice(0, 4);
- ciphertext.sigBytes -= 16;
- }
-
- return CipherParams.create({ ciphertext: ciphertext, salt: salt });
- }
- };
-
- /**
- * A cipher wrapper that returns ciphertext as a serializable cipher params object.
- */
- var SerializableCipher = C_lib.SerializableCipher = Base.extend({
- /**
- * Configuration options.
- *
- * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
- */
- cfg: Base.extend({
- format: OpenSSLFormatter
- }),
-
- /**
- * Encrypts a message.
- *
- * @param {Cipher} cipher The cipher algorithm to use.
- * @param {WordArray|string} message The message to encrypt.
- * @param {WordArray} key The key.
- * @param {Object} cfg (Optional) The configuration options to use for this operation.
- *
- * @return {CipherParams} A cipher params object.
- *
- * @static
- *
- * @example
- *
- * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
- * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
- * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
- */
- encrypt: function (cipher, message, key, cfg) {
- // Apply config defaults
- cfg = this.cfg.extend(cfg);
-
- // Encrypt
- var encryptor = cipher.createEncryptor(key, cfg);
- var ciphertext = encryptor.finalize(message);
-
- // Shortcut
- var cipherCfg = encryptor.cfg;
-
- // Create and return serializable cipher params
- return CipherParams.create({
- ciphertext: ciphertext,
- key: key,
- iv: cipherCfg.iv,
- algorithm: cipher,
- mode: cipherCfg.mode,
- padding: cipherCfg.padding,
- blockSize: cipher.blockSize,
- formatter: cfg.format
- });
- },
-
- /**
- * Decrypts serialized ciphertext.
- *
- * @param {Cipher} cipher The cipher algorithm to use.
- * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
- * @param {WordArray} key The key.
- * @param {Object} cfg (Optional) The configuration options to use for this operation.
- *
- * @return {WordArray} The plaintext.
- *
- * @static
- *
- * @example
- *
- * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
- * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
- */
- decrypt: function (cipher, ciphertext, key, cfg) {
- // Apply config defaults
- cfg = this.cfg.extend(cfg);
-
- // Convert string to CipherParams
- ciphertext = this._parse(ciphertext, cfg.format);
-
- // Decrypt
- var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
-
- return plaintext;
- },
-
- /**
- * Converts serialized ciphertext to CipherParams,
- * else assumed CipherParams already and returns ciphertext unchanged.
- *
- * @param {CipherParams|string} ciphertext The ciphertext.
- * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
- *
- * @return {CipherParams} The unserialized ciphertext.
- *
- * @static
- *
- * @example
- *
- * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
- */
- _parse: function (ciphertext, format) {
- if (typeof ciphertext == 'string') {
- return format.parse(ciphertext, this);
- } else {
- return ciphertext;
- }
- }
- });
-
- /**
- * Key derivation function namespace.
- */
- var C_kdf = C.kdf = {};
-
- /**
- * OpenSSL key derivation function.
- */
- var OpenSSLKdf = C_kdf.OpenSSL = {
- /**
- * Derives a key and IV from a password.
- *
- * @param {string} password The password to derive from.
- * @param {number} keySize The size in words of the key to generate.
- * @param {number} ivSize The size in words of the IV to generate.
- * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
- *
- * @return {CipherParams} A cipher params object with the key, IV, and salt.
- *
- * @static
- *
- * @example
- *
- * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
- * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
- */
- execute: function (password, keySize, ivSize, salt) {
- // Generate random salt
- if (!salt) {
- salt = WordArray.random(64/8);
- }
-
- // Derive key and IV
- var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
-
- // Separate key and IV
- var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
- key.sigBytes = keySize * 4;
-
- // Return params
- return CipherParams.create({ key: key, iv: iv, salt: salt });
- }
- };
-
- /**
- * A serializable cipher wrapper that derives the key from a password,
- * and returns ciphertext as a serializable cipher params object.
- */
- var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
- /**
- * Configuration options.
- *
- * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
- */
- cfg: SerializableCipher.cfg.extend({
- kdf: OpenSSLKdf
- }),
-
- /**
- * Encrypts a message using a password.
- *
- * @param {Cipher} cipher The cipher algorithm to use.
- * @param {WordArray|string} message The message to encrypt.
- * @param {string} password The password.
- * @param {Object} cfg (Optional) The configuration options to use for this operation.
- *
- * @return {CipherParams} A cipher params object.
- *
- * @static
- *
- * @example
- *
- * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
- * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
- */
- encrypt: function (cipher, message, password, cfg) {
- // Apply config defaults
- cfg = this.cfg.extend(cfg);
-
- // Derive key and other params
- var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);
-
- // Add IV to config
- cfg.iv = derivedParams.iv;
-
- // Encrypt
- var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
-
- // Mix in derived params
- ciphertext.mixIn(derivedParams);
-
- return ciphertext;
- },
-
- /**
- * Decrypts serialized ciphertext using a password.
- *
- * @param {Cipher} cipher The cipher algorithm to use.
- * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
- * @param {string} password The password.
- * @param {Object} cfg (Optional) The configuration options to use for this operation.
- *
- * @return {WordArray} The plaintext.
- *
- * @static
- *
- * @example
- *
- * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
- * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
- */
- decrypt: function (cipher, ciphertext, password, cfg) {
- // Apply config defaults
- cfg = this.cfg.extend(cfg);
-
- // Convert string to CipherParams
- ciphertext = this._parse(ciphertext, cfg.format);
-
- // Derive key and other params
- var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);
-
- // Add IV to config
- cfg.iv = derivedParams.iv;
-
- // Decrypt
- var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
-
- return plaintext;
- }
- });
- }());
-
-
- /**
- * Cipher Feedback block mode.
- */
- CryptoJS.mode.CFB = (function () {
- var CFB = CryptoJS.lib.BlockCipherMode.extend();
-
- CFB.Encryptor = CFB.extend({
- processBlock: function (words, offset) {
- // Shortcuts
- var cipher = this._cipher;
- var blockSize = cipher.blockSize;
-
- generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
-
- // Remember this block to use with next block
- this._prevBlock = words.slice(offset, offset + blockSize);
- }
- });
-
- CFB.Decryptor = CFB.extend({
- processBlock: function (words, offset) {
- // Shortcuts
- var cipher = this._cipher;
- var blockSize = cipher.blockSize;
-
- // Remember this block to use with next block
- var thisBlock = words.slice(offset, offset + blockSize);
-
- generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
-
- // This block becomes the previous block
- this._prevBlock = thisBlock;
- }
- });
-
- function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
- var keystream;
-
- // Shortcut
- var iv = this._iv;
-
- // Generate keystream
- if (iv) {
- keystream = iv.slice(0);
-
- // Remove IV for subsequent blocks
- this._iv = undefined;
- } else {
- keystream = this._prevBlock;
- }
- cipher.encryptBlock(keystream, 0);
-
- // Encrypt
- for (var i = 0; i < blockSize; i++) {
- words[offset + i] ^= keystream[i];
- }
- }
-
- return CFB;
- }());
-
-
- /**
- * Counter block mode.
- */
- CryptoJS.mode.CTR = (function () {
- var CTR = CryptoJS.lib.BlockCipherMode.extend();
-
- var Encryptor = CTR.Encryptor = CTR.extend({
- processBlock: function (words, offset) {
- // Shortcuts
- var cipher = this._cipher
- var blockSize = cipher.blockSize;
- var iv = this._iv;
- var counter = this._counter;
-
- // Generate keystream
- if (iv) {
- counter = this._counter = iv.slice(0);
-
- // Remove IV for subsequent blocks
- this._iv = undefined;
- }
- var keystream = counter.slice(0);
- cipher.encryptBlock(keystream, 0);
-
- // Increment counter
- counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0
-
- // Encrypt
- for (var i = 0; i < blockSize; i++) {
- words[offset + i] ^= keystream[i];
- }
- }
- });
-
- CTR.Decryptor = Encryptor;
-
- return CTR;
- }());
-
-
- /** @preserve
- * Counter block mode compatible with Dr Brian Gladman fileenc.c
- * derived from CryptoJS.mode.CTR
- * Jan Hruby jhruby.web@gmail.com
- */
- CryptoJS.mode.CTRGladman = (function () {
- var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
-
- function incWord(word)
- {
- if (((word >> 24) & 0xff) === 0xff) { //overflow
- var b1 = (word >> 16)&0xff;
- var b2 = (word >> 8)&0xff;
- var b3 = word & 0xff;
-
- if (b1 === 0xff) // overflow b1
- {
- b1 = 0;
- if (b2 === 0xff)
- {
- b2 = 0;
- if (b3 === 0xff)
- {
- b3 = 0;
- }
- else
- {
- ++b3;
- }
- }
- else
- {
- ++b2;
- }
- }
- else
- {
- ++b1;
- }
-
- word = 0;
- word += (b1 << 16);
- word += (b2 << 8);
- word += b3;
- }
- else
- {
- word += (0x01 << 24);
- }
- return word;
- }
-
- function incCounter(counter)
- {
- if ((counter[0] = incWord(counter[0])) === 0)
- {
- // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8
- counter[1] = incWord(counter[1]);
- }
- return counter;
- }
-
- var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
- processBlock: function (words, offset) {
- // Shortcuts
- var cipher = this._cipher
- var blockSize = cipher.blockSize;
- var iv = this._iv;
- var counter = this._counter;
-
- // Generate keystream
- if (iv) {
- counter = this._counter = iv.slice(0);
-
- // Remove IV for subsequent blocks
- this._iv = undefined;
- }
-
- incCounter(counter);
-
- var keystream = counter.slice(0);
- cipher.encryptBlock(keystream, 0);
-
- // Encrypt
- for (var i = 0; i < blockSize; i++) {
- words[offset + i] ^= keystream[i];
- }
- }
- });
-
- CTRGladman.Decryptor = Encryptor;
-
- return CTRGladman;
- }());
-
-
-
-
- /**
- * Output Feedback block mode.
- */
- CryptoJS.mode.OFB = (function () {
- var OFB = CryptoJS.lib.BlockCipherMode.extend();
-
- var Encryptor = OFB.Encryptor = OFB.extend({
- processBlock: function (words, offset) {
- // Shortcuts
- var cipher = this._cipher
- var blockSize = cipher.blockSize;
- var iv = this._iv;
- var keystream = this._keystream;
-
- // Generate keystream
- if (iv) {
- keystream = this._keystream = iv.slice(0);
-
- // Remove IV for subsequent blocks
- this._iv = undefined;
- }
- cipher.encryptBlock(keystream, 0);
-
- // Encrypt
- for (var i = 0; i < blockSize; i++) {
- words[offset + i] ^= keystream[i];
- }
- }
- });
-
- OFB.Decryptor = Encryptor;
-
- return OFB;
- }());
-
-
- /**
- * Electronic Codebook block mode.
- */
- CryptoJS.mode.ECB = (function () {
- var ECB = CryptoJS.lib.BlockCipherMode.extend();
-
- ECB.Encryptor = ECB.extend({
- processBlock: function (words, offset) {
- this._cipher.encryptBlock(words, offset);
- }
- });
-
- ECB.Decryptor = ECB.extend({
- processBlock: function (words, offset) {
- this._cipher.decryptBlock(words, offset);
- }
- });
-
- return ECB;
- }());
-
-
- /**
- * ANSI X.923 padding strategy.
- */
- CryptoJS.pad.AnsiX923 = {
- pad: function (data, blockSize) {
- // Shortcuts
- var dataSigBytes = data.sigBytes;
- var blockSizeBytes = blockSize * 4;
-
- // Count padding bytes
- var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
-
- // Compute last byte position
- var lastBytePos = dataSigBytes + nPaddingBytes - 1;
-
- // Pad
- data.clamp();
- data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);
- data.sigBytes += nPaddingBytes;
- },
-
- unpad: function (data) {
- // Get number of padding bytes from last byte
- var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
-
- // Remove padding
- data.sigBytes -= nPaddingBytes;
- }
- };
-
-
- /**
- * ISO 10126 padding strategy.
- */
- CryptoJS.pad.Iso10126 = {
- pad: function (data, blockSize) {
- // Shortcut
- var blockSizeBytes = blockSize * 4;
-
- // Count padding bytes
- var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
-
- // Pad
- data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).
- concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
- },
-
- unpad: function (data) {
- // Get number of padding bytes from last byte
- var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
-
- // Remove padding
- data.sigBytes -= nPaddingBytes;
- }
- };
-
-
- /**
- * ISO/IEC 9797-1 Padding Method 2.
- */
- CryptoJS.pad.Iso97971 = {
- pad: function (data, blockSize) {
- // Add 0x80 byte
- data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));
-
- // Zero pad the rest
- CryptoJS.pad.ZeroPadding.pad(data, blockSize);
- },
-
- unpad: function (data) {
- // Remove zero padding
- CryptoJS.pad.ZeroPadding.unpad(data);
-
- // Remove one more byte -- the 0x80 byte
- data.sigBytes--;
- }
- };
-
-
- /**
- * Zero padding strategy.
- */
- CryptoJS.pad.ZeroPadding = {
- pad: function (data, blockSize) {
- // Shortcut
- var blockSizeBytes = blockSize * 4;
-
- // Pad
- data.clamp();
- data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
- },
-
- unpad: function (data) {
- // Shortcut
- var dataWords = data.words;
-
- // Unpad
- var i = data.sigBytes - 1;
- for (var i = data.sigBytes - 1; i >= 0; i--) {
- if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
- data.sigBytes = i + 1;
- break;
- }
- }
- }
- };
-
-
- /**
- * A noop padding strategy.
- */
- CryptoJS.pad.NoPadding = {
- pad: function () {
- },
-
- unpad: function () {
- }
- };
-
-
- (function (undefined) {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var CipherParams = C_lib.CipherParams;
- var C_enc = C.enc;
- var Hex = C_enc.Hex;
- var C_format = C.format;
-
- var HexFormatter = C_format.Hex = {
- /**
- * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
- *
- * @param {CipherParams} cipherParams The cipher params object.
- *
- * @return {string} The hexadecimally encoded string.
- *
- * @static
- *
- * @example
- *
- * var hexString = CryptoJS.format.Hex.stringify(cipherParams);
- */
- stringify: function (cipherParams) {
- return cipherParams.ciphertext.toString(Hex);
- },
-
- /**
- * Converts a hexadecimally encoded ciphertext string to a cipher params object.
- *
- * @param {string} input The hexadecimally encoded string.
- *
- * @return {CipherParams} The cipher params object.
- *
- * @static
- *
- * @example
- *
- * var cipherParams = CryptoJS.format.Hex.parse(hexString);
- */
- parse: function (input) {
- var ciphertext = Hex.parse(input);
- return CipherParams.create({ ciphertext: ciphertext });
- }
- };
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var BlockCipher = C_lib.BlockCipher;
- var C_algo = C.algo;
-
- // Lookup tables
- var SBOX = [];
- var INV_SBOX = [];
- var SUB_MIX_0 = [];
- var SUB_MIX_1 = [];
- var SUB_MIX_2 = [];
- var SUB_MIX_3 = [];
- var INV_SUB_MIX_0 = [];
- var INV_SUB_MIX_1 = [];
- var INV_SUB_MIX_2 = [];
- var INV_SUB_MIX_3 = [];
-
- // Compute lookup tables
- (function () {
- // Compute double table
- var d = [];
- for (var i = 0; i < 256; i++) {
- if (i < 128) {
- d[i] = i << 1;
- } else {
- d[i] = (i << 1) ^ 0x11b;
- }
- }
-
- // Walk GF(2^8)
- var x = 0;
- var xi = 0;
- for (var i = 0; i < 256; i++) {
- // Compute sbox
- var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);
- sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;
- SBOX[x] = sx;
- INV_SBOX[sx] = x;
-
- // Compute multiplication
- var x2 = d[x];
- var x4 = d[x2];
- var x8 = d[x4];
-
- // Compute sub bytes, mix columns tables
- var t = (d[sx] * 0x101) ^ (sx * 0x1010100);
- SUB_MIX_0[x] = (t << 24) | (t >>> 8);
- SUB_MIX_1[x] = (t << 16) | (t >>> 16);
- SUB_MIX_2[x] = (t << 8) | (t >>> 24);
- SUB_MIX_3[x] = t;
-
- // Compute inv sub bytes, inv mix columns tables
- var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);
- INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);
- INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);
- INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);
- INV_SUB_MIX_3[sx] = t;
-
- // Compute next counter
- if (!x) {
- x = xi = 1;
- } else {
- x = x2 ^ d[d[d[x8 ^ x2]]];
- xi ^= d[d[xi]];
- }
- }
- }());
-
- // Precomputed Rcon lookup
- var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
-
- /**
- * AES block cipher algorithm.
- */
- var AES = C_algo.AES = BlockCipher.extend({
- _doReset: function () {
- var t;
-
- // Skip reset of nRounds has been set before and key did not change
- if (this._nRounds && this._keyPriorReset === this._key) {
- return;
- }
-
- // Shortcuts
- var key = this._keyPriorReset = this._key;
- var keyWords = key.words;
- var keySize = key.sigBytes / 4;
-
- // Compute number of rounds
- var nRounds = this._nRounds = keySize + 6;
-
- // Compute number of key schedule rows
- var ksRows = (nRounds + 1) * 4;
-
- // Compute key schedule
- var keySchedule = this._keySchedule = [];
- for (var ksRow = 0; ksRow < ksRows; ksRow++) {
- if (ksRow < keySize) {
- keySchedule[ksRow] = keyWords[ksRow];
- } else {
- t = keySchedule[ksRow - 1];
-
- if (!(ksRow % keySize)) {
- // Rot word
- t = (t << 8) | (t >>> 24);
-
- // Sub word
- t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
-
- // Mix Rcon
- t ^= RCON[(ksRow / keySize) | 0] << 24;
- } else if (keySize > 6 && ksRow % keySize == 4) {
- // Sub word
- t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
- }
-
- keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
- }
- }
-
- // Compute inv key schedule
- var invKeySchedule = this._invKeySchedule = [];
- for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
- var ksRow = ksRows - invKsRow;
-
- if (invKsRow % 4) {
- var t = keySchedule[ksRow];
- } else {
- var t = keySchedule[ksRow - 4];
- }
-
- if (invKsRow < 4 || ksRow <= 4) {
- invKeySchedule[invKsRow] = t;
- } else {
- invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^
- INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];
- }
- }
- },
-
- encryptBlock: function (M, offset) {
- this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
- },
-
- decryptBlock: function (M, offset) {
- // Swap 2nd and 4th rows
- var t = M[offset + 1];
- M[offset + 1] = M[offset + 3];
- M[offset + 3] = t;
-
- this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
-
- // Inv swap 2nd and 4th rows
- var t = M[offset + 1];
- M[offset + 1] = M[offset + 3];
- M[offset + 3] = t;
- },
-
- _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
- // Shortcut
- var nRounds = this._nRounds;
-
- // Get input, add round key
- var s0 = M[offset] ^ keySchedule[0];
- var s1 = M[offset + 1] ^ keySchedule[1];
- var s2 = M[offset + 2] ^ keySchedule[2];
- var s3 = M[offset + 3] ^ keySchedule[3];
-
- // Key schedule row counter
- var ksRow = 4;
-
- // Rounds
- for (var round = 1; round < nRounds; round++) {
- // Shift rows, sub bytes, mix columns, add round key
- var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];
- var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];
- var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];
- var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];
-
- // Update state
- s0 = t0;
- s1 = t1;
- s2 = t2;
- s3 = t3;
- }
-
- // Shift rows, sub bytes, add round key
- var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];
- var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];
- var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];
- var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];
-
- // Set output
- M[offset] = t0;
- M[offset + 1] = t1;
- M[offset + 2] = t2;
- M[offset + 3] = t3;
- },
-
- keySize: 256/32
- });
-
- /**
- * Shortcut functions to the cipher's object interface.
- *
- * @example
- *
- * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);
- * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);
- */
- C.AES = BlockCipher._createHelper(AES);
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var WordArray = C_lib.WordArray;
- var BlockCipher = C_lib.BlockCipher;
- var C_algo = C.algo;
-
- // Permuted Choice 1 constants
- var PC1 = [
- 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
- ];
-
- // Permuted Choice 2 constants
- var PC2 = [
- 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
- ];
-
- // Cumulative bit shift constants
- var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
-
- // SBOXes and round permutation constants
- var SBOX_P = [
- {
- 0x0: 0x808200,
- 0x10000000: 0x8000,
- 0x20000000: 0x808002,
- 0x30000000: 0x2,
- 0x40000000: 0x200,
- 0x50000000: 0x808202,
- 0x60000000: 0x800202,
- 0x70000000: 0x800000,
- 0x80000000: 0x202,
- 0x90000000: 0x800200,
- 0xa0000000: 0x8200,
- 0xb0000000: 0x808000,
- 0xc0000000: 0x8002,
- 0xd0000000: 0x800002,
- 0xe0000000: 0x0,
- 0xf0000000: 0x8202,
- 0x8000000: 0x0,
- 0x18000000: 0x808202,
- 0x28000000: 0x8202,
- 0x38000000: 0x8000,
- 0x48000000: 0x808200,
- 0x58000000: 0x200,
- 0x68000000: 0x808002,
- 0x78000000: 0x2,
- 0x88000000: 0x800200,
- 0x98000000: 0x8200,
- 0xa8000000: 0x808000,
- 0xb8000000: 0x800202,
- 0xc8000000: 0x800002,
- 0xd8000000: 0x8002,
- 0xe8000000: 0x202,
- 0xf8000000: 0x800000,
- 0x1: 0x8000,
- 0x10000001: 0x2,
- 0x20000001: 0x808200,
- 0x30000001: 0x800000,
- 0x40000001: 0x808002,
- 0x50000001: 0x8200,
- 0x60000001: 0x200,
- 0x70000001: 0x800202,
- 0x80000001: 0x808202,
- 0x90000001: 0x808000,
- 0xa0000001: 0x800002,
- 0xb0000001: 0x8202,
- 0xc0000001: 0x202,
- 0xd0000001: 0x800200,
- 0xe0000001: 0x8002,
- 0xf0000001: 0x0,
- 0x8000001: 0x808202,
- 0x18000001: 0x808000,
- 0x28000001: 0x800000,
- 0x38000001: 0x200,
- 0x48000001: 0x8000,
- 0x58000001: 0x800002,
- 0x68000001: 0x2,
- 0x78000001: 0x8202,
- 0x88000001: 0x8002,
- 0x98000001: 0x800202,
- 0xa8000001: 0x202,
- 0xb8000001: 0x808200,
- 0xc8000001: 0x800200,
- 0xd8000001: 0x0,
- 0xe8000001: 0x8200,
- 0xf8000001: 0x808002
- },
- {
- 0x0: 0x40084010,
- 0x1000000: 0x4000,
- 0x2000000: 0x80000,
- 0x3000000: 0x40080010,
- 0x4000000: 0x40000010,
- 0x5000000: 0x40084000,
- 0x6000000: 0x40004000,
- 0x7000000: 0x10,
- 0x8000000: 0x84000,
- 0x9000000: 0x40004010,
- 0xa000000: 0x40000000,
- 0xb000000: 0x84010,
- 0xc000000: 0x80010,
- 0xd000000: 0x0,
- 0xe000000: 0x4010,
- 0xf000000: 0x40080000,
- 0x800000: 0x40004000,
- 0x1800000: 0x84010,
- 0x2800000: 0x10,
- 0x3800000: 0x40004010,
- 0x4800000: 0x40084010,
- 0x5800000: 0x40000000,
- 0x6800000: 0x80000,
- 0x7800000: 0x40080010,
- 0x8800000: 0x80010,
- 0x9800000: 0x0,
- 0xa800000: 0x4000,
- 0xb800000: 0x40080000,
- 0xc800000: 0x40000010,
- 0xd800000: 0x84000,
- 0xe800000: 0x40084000,
- 0xf800000: 0x4010,
- 0x10000000: 0x0,
- 0x11000000: 0x40080010,
- 0x12000000: 0x40004010,
- 0x13000000: 0x40084000,
- 0x14000000: 0x40080000,
- 0x15000000: 0x10,
- 0x16000000: 0x84010,
- 0x17000000: 0x4000,
- 0x18000000: 0x4010,
- 0x19000000: 0x80000,
- 0x1a000000: 0x80010,
- 0x1b000000: 0x40000010,
- 0x1c000000: 0x84000,
- 0x1d000000: 0x40004000,
- 0x1e000000: 0x40000000,
- 0x1f000000: 0x40084010,
- 0x10800000: 0x84010,
- 0x11800000: 0x80000,
- 0x12800000: 0x40080000,
- 0x13800000: 0x4000,
- 0x14800000: 0x40004000,
- 0x15800000: 0x40084010,
- 0x16800000: 0x10,
- 0x17800000: 0x40000000,
- 0x18800000: 0x40084000,
- 0x19800000: 0x40000010,
- 0x1a800000: 0x40004010,
- 0x1b800000: 0x80010,
- 0x1c800000: 0x0,
- 0x1d800000: 0x4010,
- 0x1e800000: 0x40080010,
- 0x1f800000: 0x84000
- },
- {
- 0x0: 0x104,
- 0x100000: 0x0,
- 0x200000: 0x4000100,
- 0x300000: 0x10104,
- 0x400000: 0x10004,
- 0x500000: 0x4000004,
- 0x600000: 0x4010104,
- 0x700000: 0x4010000,
- 0x800000: 0x4000000,
- 0x900000: 0x4010100,
- 0xa00000: 0x10100,
- 0xb00000: 0x4010004,
- 0xc00000: 0x4000104,
- 0xd00000: 0x10000,
- 0xe00000: 0x4,
- 0xf00000: 0x100,
- 0x80000: 0x4010100,
- 0x180000: 0x4010004,
- 0x280000: 0x0,
- 0x380000: 0x4000100,
- 0x480000: 0x4000004,
- 0x580000: 0x10000,
- 0x680000: 0x10004,
- 0x780000: 0x104,
- 0x880000: 0x4,
- 0x980000: 0x100,
- 0xa80000: 0x4010000,
- 0xb80000: 0x10104,
- 0xc80000: 0x10100,
- 0xd80000: 0x4000104,
- 0xe80000: 0x4010104,
- 0xf80000: 0x4000000,
- 0x1000000: 0x4010100,
- 0x1100000: 0x10004,
- 0x1200000: 0x10000,
- 0x1300000: 0x4000100,
- 0x1400000: 0x100,
- 0x1500000: 0x4010104,
- 0x1600000: 0x4000004,
- 0x1700000: 0x0,
- 0x1800000: 0x4000104,
- 0x1900000: 0x4000000,
- 0x1a00000: 0x4,
- 0x1b00000: 0x10100,
- 0x1c00000: 0x4010000,
- 0x1d00000: 0x104,
- 0x1e00000: 0x10104,
- 0x1f00000: 0x4010004,
- 0x1080000: 0x4000000,
- 0x1180000: 0x104,
- 0x1280000: 0x4010100,
- 0x1380000: 0x0,
- 0x1480000: 0x10004,
- 0x1580000: 0x4000100,
- 0x1680000: 0x100,
- 0x1780000: 0x4010004,
- 0x1880000: 0x10000,
- 0x1980000: 0x4010104,
- 0x1a80000: 0x10104,
- 0x1b80000: 0x4000004,
- 0x1c80000: 0x4000104,
- 0x1d80000: 0x4010000,
- 0x1e80000: 0x4,
- 0x1f80000: 0x10100
- },
- {
- 0x0: 0x80401000,
- 0x10000: 0x80001040,
- 0x20000: 0x401040,
- 0x30000: 0x80400000,
- 0x40000: 0x0,
- 0x50000: 0x401000,
- 0x60000: 0x80000040,
- 0x70000: 0x400040,
- 0x80000: 0x80000000,
- 0x90000: 0x400000,
- 0xa0000: 0x40,
- 0xb0000: 0x80001000,
- 0xc0000: 0x80400040,
- 0xd0000: 0x1040,
- 0xe0000: 0x1000,
- 0xf0000: 0x80401040,
- 0x8000: 0x80001040,
- 0x18000: 0x40,
- 0x28000: 0x80400040,
- 0x38000: 0x80001000,
- 0x48000: 0x401000,
- 0x58000: 0x80401040,
- 0x68000: 0x0,
- 0x78000: 0x80400000,
- 0x88000: 0x1000,
- 0x98000: 0x80401000,
- 0xa8000: 0x400000,
- 0xb8000: 0x1040,
- 0xc8000: 0x80000000,
- 0xd8000: 0x400040,
- 0xe8000: 0x401040,
- 0xf8000: 0x80000040,
- 0x100000: 0x400040,
- 0x110000: 0x401000,
- 0x120000: 0x80000040,
- 0x130000: 0x0,
- 0x140000: 0x1040,
- 0x150000: 0x80400040,
- 0x160000: 0x80401000,
- 0x170000: 0x80001040,
- 0x180000: 0x80401040,
- 0x190000: 0x80000000,
- 0x1a0000: 0x80400000,
- 0x1b0000: 0x401040,
- 0x1c0000: 0x80001000,
- 0x1d0000: 0x400000,
- 0x1e0000: 0x40,
- 0x1f0000: 0x1000,
- 0x108000: 0x80400000,
- 0x118000: 0x80401040,
- 0x128000: 0x0,
- 0x138000: 0x401000,
- 0x148000: 0x400040,
- 0x158000: 0x80000000,
- 0x168000: 0x80001040,
- 0x178000: 0x40,
- 0x188000: 0x80000040,
- 0x198000: 0x1000,
- 0x1a8000: 0x80001000,
- 0x1b8000: 0x80400040,
- 0x1c8000: 0x1040,
- 0x1d8000: 0x80401000,
- 0x1e8000: 0x400000,
- 0x1f8000: 0x401040
- },
- {
- 0x0: 0x80,
- 0x1000: 0x1040000,
- 0x2000: 0x40000,
- 0x3000: 0x20000000,
- 0x4000: 0x20040080,
- 0x5000: 0x1000080,
- 0x6000: 0x21000080,
- 0x7000: 0x40080,
- 0x8000: 0x1000000,
- 0x9000: 0x20040000,
- 0xa000: 0x20000080,
- 0xb000: 0x21040080,
- 0xc000: 0x21040000,
- 0xd000: 0x0,
- 0xe000: 0x1040080,
- 0xf000: 0x21000000,
- 0x800: 0x1040080,
- 0x1800: 0x21000080,
- 0x2800: 0x80,
- 0x3800: 0x1040000,
- 0x4800: 0x40000,
- 0x5800: 0x20040080,
- 0x6800: 0x21040000,
- 0x7800: 0x20000000,
- 0x8800: 0x20040000,
- 0x9800: 0x0,
- 0xa800: 0x21040080,
- 0xb800: 0x1000080,
- 0xc800: 0x20000080,
- 0xd800: 0x21000000,
- 0xe800: 0x1000000,
- 0xf800: 0x40080,
- 0x10000: 0x40000,
- 0x11000: 0x80,
- 0x12000: 0x20000000,
- 0x13000: 0x21000080,
- 0x14000: 0x1000080,
- 0x15000: 0x21040000,
- 0x16000: 0x20040080,
- 0x17000: 0x1000000,
- 0x18000: 0x21040080,
- 0x19000: 0x21000000,
- 0x1a000: 0x1040000,
- 0x1b000: 0x20040000,
- 0x1c000: 0x40080,
- 0x1d000: 0x20000080,
- 0x1e000: 0x0,
- 0x1f000: 0x1040080,
- 0x10800: 0x21000080,
- 0x11800: 0x1000000,
- 0x12800: 0x1040000,
- 0x13800: 0x20040080,
- 0x14800: 0x20000000,
- 0x15800: 0x1040080,
- 0x16800: 0x80,
- 0x17800: 0x21040000,
- 0x18800: 0x40080,
- 0x19800: 0x21040080,
- 0x1a800: 0x0,
- 0x1b800: 0x21000000,
- 0x1c800: 0x1000080,
- 0x1d800: 0x40000,
- 0x1e800: 0x20040000,
- 0x1f800: 0x20000080
- },
- {
- 0x0: 0x10000008,
- 0x100: 0x2000,
- 0x200: 0x10200000,
- 0x300: 0x10202008,
- 0x400: 0x10002000,
- 0x500: 0x200000,
- 0x600: 0x200008,
- 0x700: 0x10000000,
- 0x800: 0x0,
- 0x900: 0x10002008,
- 0xa00: 0x202000,
- 0xb00: 0x8,
- 0xc00: 0x10200008,
- 0xd00: 0x202008,
- 0xe00: 0x2008,
- 0xf00: 0x10202000,
- 0x80: 0x10200000,
- 0x180: 0x10202008,
- 0x280: 0x8,
- 0x380: 0x200000,
- 0x480: 0x202008,
- 0x580: 0x10000008,
- 0x680: 0x10002000,
- 0x780: 0x2008,
- 0x880: 0x200008,
- 0x980: 0x2000,
- 0xa80: 0x10002008,
- 0xb80: 0x10200008,
- 0xc80: 0x0,
- 0xd80: 0x10202000,
- 0xe80: 0x202000,
- 0xf80: 0x10000000,
- 0x1000: 0x10002000,
- 0x1100: 0x10200008,
- 0x1200: 0x10202008,
- 0x1300: 0x2008,
- 0x1400: 0x200000,
- 0x1500: 0x10000000,
- 0x1600: 0x10000008,
- 0x1700: 0x202000,
- 0x1800: 0x202008,
- 0x1900: 0x0,
- 0x1a00: 0x8,
- 0x1b00: 0x10200000,
- 0x1c00: 0x2000,
- 0x1d00: 0x10002008,
- 0x1e00: 0x10202000,
- 0x1f00: 0x200008,
- 0x1080: 0x8,
- 0x1180: 0x202000,
- 0x1280: 0x200000,
- 0x1380: 0x10000008,
- 0x1480: 0x10002000,
- 0x1580: 0x2008,
- 0x1680: 0x10202008,
- 0x1780: 0x10200000,
- 0x1880: 0x10202000,
- 0x1980: 0x10200008,
- 0x1a80: 0x2000,
- 0x1b80: 0x202008,
- 0x1c80: 0x200008,
- 0x1d80: 0x0,
- 0x1e80: 0x10000000,
- 0x1f80: 0x10002008
- },
- {
- 0x0: 0x100000,
- 0x10: 0x2000401,
- 0x20: 0x400,
- 0x30: 0x100401,
- 0x40: 0x2100401,
- 0x50: 0x0,
- 0x60: 0x1,
- 0x70: 0x2100001,
- 0x80: 0x2000400,
- 0x90: 0x100001,
- 0xa0: 0x2000001,
- 0xb0: 0x2100400,
- 0xc0: 0x2100000,
- 0xd0: 0x401,
- 0xe0: 0x100400,
- 0xf0: 0x2000000,
- 0x8: 0x2100001,
- 0x18: 0x0,
- 0x28: 0x2000401,
- 0x38: 0x2100400,
- 0x48: 0x100000,
- 0x58: 0x2000001,
- 0x68: 0x2000000,
- 0x78: 0x401,
- 0x88: 0x100401,
- 0x98: 0x2000400,
- 0xa8: 0x2100000,
- 0xb8: 0x100001,
- 0xc8: 0x400,
- 0xd8: 0x2100401,
- 0xe8: 0x1,
- 0xf8: 0x100400,
- 0x100: 0x2000000,
- 0x110: 0x100000,
- 0x120: 0x2000401,
- 0x130: 0x2100001,
- 0x140: 0x100001,
- 0x150: 0x2000400,
- 0x160: 0x2100400,
- 0x170: 0x100401,
- 0x180: 0x401,
- 0x190: 0x2100401,
- 0x1a0: 0x100400,
- 0x1b0: 0x1,
- 0x1c0: 0x0,
- 0x1d0: 0x2100000,
- 0x1e0: 0x2000001,
- 0x1f0: 0x400,
- 0x108: 0x100400,
- 0x118: 0x2000401,
- 0x128: 0x2100001,
- 0x138: 0x1,
- 0x148: 0x2000000,
- 0x158: 0x100000,
- 0x168: 0x401,
- 0x178: 0x2100400,
- 0x188: 0x2000001,
- 0x198: 0x2100000,
- 0x1a8: 0x0,
- 0x1b8: 0x2100401,
- 0x1c8: 0x100401,
- 0x1d8: 0x400,
- 0x1e8: 0x2000400,
- 0x1f8: 0x100001
- },
- {
- 0x0: 0x8000820,
- 0x1: 0x20000,
- 0x2: 0x8000000,
- 0x3: 0x20,
- 0x4: 0x20020,
- 0x5: 0x8020820,
- 0x6: 0x8020800,
- 0x7: 0x800,
- 0x8: 0x8020000,
- 0x9: 0x8000800,
- 0xa: 0x20800,
- 0xb: 0x8020020,
- 0xc: 0x820,
- 0xd: 0x0,
- 0xe: 0x8000020,
- 0xf: 0x20820,
- 0x80000000: 0x800,
- 0x80000001: 0x8020820,
- 0x80000002: 0x8000820,
- 0x80000003: 0x8000000,
- 0x80000004: 0x8020000,
- 0x80000005: 0x20800,
- 0x80000006: 0x20820,
- 0x80000007: 0x20,
- 0x80000008: 0x8000020,
- 0x80000009: 0x820,
- 0x8000000a: 0x20020,
- 0x8000000b: 0x8020800,
- 0x8000000c: 0x0,
- 0x8000000d: 0x8020020,
- 0x8000000e: 0x8000800,
- 0x8000000f: 0x20000,
- 0x10: 0x20820,
- 0x11: 0x8020800,
- 0x12: 0x20,
- 0x13: 0x800,
- 0x14: 0x8000800,
- 0x15: 0x8000020,
- 0x16: 0x8020020,
- 0x17: 0x20000,
- 0x18: 0x0,
- 0x19: 0x20020,
- 0x1a: 0x8020000,
- 0x1b: 0x8000820,
- 0x1c: 0x8020820,
- 0x1d: 0x20800,
- 0x1e: 0x820,
- 0x1f: 0x8000000,
- 0x80000010: 0x20000,
- 0x80000011: 0x800,
- 0x80000012: 0x8020020,
- 0x80000013: 0x20820,
- 0x80000014: 0x20,
- 0x80000015: 0x8020000,
- 0x80000016: 0x8000000,
- 0x80000017: 0x8000820,
- 0x80000018: 0x8020820,
- 0x80000019: 0x8000020,
- 0x8000001a: 0x8000800,
- 0x8000001b: 0x0,
- 0x8000001c: 0x20800,
- 0x8000001d: 0x820,
- 0x8000001e: 0x20020,
- 0x8000001f: 0x8020800
- }
- ];
-
- // Masks that select the SBOX input
- var SBOX_MASK = [
- 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,
- 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f
- ];
-
- /**
- * DES block cipher algorithm.
- */
- var DES = C_algo.DES = BlockCipher.extend({
- _doReset: function () {
- // Shortcuts
- var key = this._key;
- var keyWords = key.words;
-
- // Select 56 bits according to PC1
- var keyBits = [];
- for (var i = 0; i < 56; i++) {
- var keyBitPos = PC1[i] - 1;
- keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;
- }
-
- // Assemble 16 subkeys
- var subKeys = this._subKeys = [];
- for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
- // Create subkey
- var subKey = subKeys[nSubKey] = [];
-
- // Shortcut
- var bitShift = BIT_SHIFTS[nSubKey];
-
- // Select 48 bits according to PC2
- for (var i = 0; i < 24; i++) {
- // Select from the left 28 key bits
- subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);
-
- // Select from the right 28 key bits
- subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);
- }
-
- // Since each subkey is applied to an expanded 32-bit input,
- // the subkey can be broken into 8 values scaled to 32-bits,
- // which allows the key to be used without expansion
- subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);
- for (var i = 1; i < 7; i++) {
- subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);
- }
- subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);
- }
-
- // Compute inverse subkeys
- var invSubKeys = this._invSubKeys = [];
- for (var i = 0; i < 16; i++) {
- invSubKeys[i] = subKeys[15 - i];
- }
- },
-
- encryptBlock: function (M, offset) {
- this._doCryptBlock(M, offset, this._subKeys);
- },
-
- decryptBlock: function (M, offset) {
- this._doCryptBlock(M, offset, this._invSubKeys);
- },
-
- _doCryptBlock: function (M, offset, subKeys) {
- // Get input
- this._lBlock = M[offset];
- this._rBlock = M[offset + 1];
-
- // Initial permutation
- exchangeLR.call(this, 4, 0x0f0f0f0f);
- exchangeLR.call(this, 16, 0x0000ffff);
- exchangeRL.call(this, 2, 0x33333333);
- exchangeRL.call(this, 8, 0x00ff00ff);
- exchangeLR.call(this, 1, 0x55555555);
-
- // Rounds
- for (var round = 0; round < 16; round++) {
- // Shortcuts
- var subKey = subKeys[round];
- var lBlock = this._lBlock;
- var rBlock = this._rBlock;
-
- // Feistel function
- var f = 0;
- for (var i = 0; i < 8; i++) {
- f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];
- }
- this._lBlock = rBlock;
- this._rBlock = lBlock ^ f;
- }
-
- // Undo swap from last round
- var t = this._lBlock;
- this._lBlock = this._rBlock;
- this._rBlock = t;
-
- // Final permutation
- exchangeLR.call(this, 1, 0x55555555);
- exchangeRL.call(this, 8, 0x00ff00ff);
- exchangeRL.call(this, 2, 0x33333333);
- exchangeLR.call(this, 16, 0x0000ffff);
- exchangeLR.call(this, 4, 0x0f0f0f0f);
-
- // Set output
- M[offset] = this._lBlock;
- M[offset + 1] = this._rBlock;
- },
-
- keySize: 64/32,
-
- ivSize: 64/32,
-
- blockSize: 64/32
- });
-
- // Swap bits across the left and right words
- function exchangeLR(offset, mask) {
- var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;
- this._rBlock ^= t;
- this._lBlock ^= t << offset;
- }
-
- function exchangeRL(offset, mask) {
- var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;
- this._lBlock ^= t;
- this._rBlock ^= t << offset;
- }
-
- /**
- * Shortcut functions to the cipher's object interface.
- *
- * @example
- *
- * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);
- * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);
- */
- C.DES = BlockCipher._createHelper(DES);
-
- /**
- * Triple-DES block cipher algorithm.
- */
- var TripleDES = C_algo.TripleDES = BlockCipher.extend({
- _doReset: function () {
- // Shortcuts
- var key = this._key;
- var keyWords = key.words;
- // Make sure the key length is valid (64, 128 or >= 192 bit)
- if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {
- throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');
- }
-
- // Extend the key according to the keying options defined in 3DES standard
- var key1 = keyWords.slice(0, 2);
- var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);
- var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);
-
- // Create DES instances
- this._des1 = DES.createEncryptor(WordArray.create(key1));
- this._des2 = DES.createEncryptor(WordArray.create(key2));
- this._des3 = DES.createEncryptor(WordArray.create(key3));
- },
-
- encryptBlock: function (M, offset) {
- this._des1.encryptBlock(M, offset);
- this._des2.decryptBlock(M, offset);
- this._des3.encryptBlock(M, offset);
- },
-
- decryptBlock: function (M, offset) {
- this._des3.decryptBlock(M, offset);
- this._des2.encryptBlock(M, offset);
- this._des1.decryptBlock(M, offset);
- },
-
- keySize: 192/32,
-
- ivSize: 64/32,
-
- blockSize: 64/32
- });
-
- /**
- * Shortcut functions to the cipher's object interface.
- *
- * @example
- *
- * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);
- * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);
- */
- C.TripleDES = BlockCipher._createHelper(TripleDES);
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var StreamCipher = C_lib.StreamCipher;
- var C_algo = C.algo;
-
- /**
- * RC4 stream cipher algorithm.
- */
- var RC4 = C_algo.RC4 = StreamCipher.extend({
- _doReset: function () {
- // Shortcuts
- var key = this._key;
- var keyWords = key.words;
- var keySigBytes = key.sigBytes;
-
- // Init sbox
- var S = this._S = [];
- for (var i = 0; i < 256; i++) {
- S[i] = i;
- }
-
- // Key setup
- for (var i = 0, j = 0; i < 256; i++) {
- var keyByteIndex = i % keySigBytes;
- var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;
-
- j = (j + S[i] + keyByte) % 256;
-
- // Swap
- var t = S[i];
- S[i] = S[j];
- S[j] = t;
- }
-
- // Counters
- this._i = this._j = 0;
- },
-
- _doProcessBlock: function (M, offset) {
- M[offset] ^= generateKeystreamWord.call(this);
- },
-
- keySize: 256/32,
-
- ivSize: 0
- });
-
- function generateKeystreamWord() {
- // Shortcuts
- var S = this._S;
- var i = this._i;
- var j = this._j;
-
- // Generate keystream word
- var keystreamWord = 0;
- for (var n = 0; n < 4; n++) {
- i = (i + 1) % 256;
- j = (j + S[i]) % 256;
-
- // Swap
- var t = S[i];
- S[i] = S[j];
- S[j] = t;
-
- keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);
- }
-
- // Update counters
- this._i = i;
- this._j = j;
-
- return keystreamWord;
- }
-
- /**
- * Shortcut functions to the cipher's object interface.
- *
- * @example
- *
- * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
- * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
- */
- C.RC4 = StreamCipher._createHelper(RC4);
-
- /**
- * Modified RC4 stream cipher algorithm.
- */
- var RC4Drop = C_algo.RC4Drop = RC4.extend({
- /**
- * Configuration options.
- *
- * @property {number} drop The number of keystream words to drop. Default 192
- */
- cfg: RC4.cfg.extend({
- drop: 192
- }),
-
- _doReset: function () {
- RC4._doReset.call(this);
-
- // Drop
- for (var i = this.cfg.drop; i > 0; i--) {
- generateKeystreamWord.call(this);
- }
- }
- });
-
- /**
- * Shortcut functions to the cipher's object interface.
- *
- * @example
- *
- * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
- * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
- */
- C.RC4Drop = StreamCipher._createHelper(RC4Drop);
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var StreamCipher = C_lib.StreamCipher;
- var C_algo = C.algo;
-
- // Reusable objects
- var S = [];
- var C_ = [];
- var G = [];
-
- /**
- * Rabbit stream cipher algorithm
- */
- var Rabbit = C_algo.Rabbit = StreamCipher.extend({
- _doReset: function () {
- // Shortcuts
- var K = this._key.words;
- var iv = this.cfg.iv;
-
- // Swap endian
- for (var i = 0; i < 4; i++) {
- K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |
- (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);
- }
-
- // Generate initial state values
- var X = this._X = [
- K[0], (K[3] << 16) | (K[2] >>> 16),
- K[1], (K[0] << 16) | (K[3] >>> 16),
- K[2], (K[1] << 16) | (K[0] >>> 16),
- K[3], (K[2] << 16) | (K[1] >>> 16)
- ];
-
- // Generate initial counter values
- var C = this._C = [
- (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
- (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
- (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
- (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
- ];
-
- // Carry bit
- this._b = 0;
-
- // Iterate the system four times
- for (var i = 0; i < 4; i++) {
- nextState.call(this);
- }
-
- // Modify the counters
- for (var i = 0; i < 8; i++) {
- C[i] ^= X[(i + 4) & 7];
- }
-
- // IV setup
- if (iv) {
- // Shortcuts
- var IV = iv.words;
- var IV_0 = IV[0];
- var IV_1 = IV[1];
-
- // Generate four subvectors
- var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
- var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
- var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
- var i3 = (i2 << 16) | (i0 & 0x0000ffff);
-
- // Modify counter values
- C[0] ^= i0;
- C[1] ^= i1;
- C[2] ^= i2;
- C[3] ^= i3;
- C[4] ^= i0;
- C[5] ^= i1;
- C[6] ^= i2;
- C[7] ^= i3;
-
- // Iterate the system four times
- for (var i = 0; i < 4; i++) {
- nextState.call(this);
- }
- }
- },
-
- _doProcessBlock: function (M, offset) {
- // Shortcut
- var X = this._X;
-
- // Iterate the system
- nextState.call(this);
-
- // Generate four keystream words
- S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
- S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
- S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
- S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
-
- for (var i = 0; i < 4; i++) {
- // Swap endian
- S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
- (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
-
- // Encrypt
- M[offset + i] ^= S[i];
- }
- },
-
- blockSize: 128/32,
-
- ivSize: 64/32
- });
-
- function nextState() {
- // Shortcuts
- var X = this._X;
- var C = this._C;
-
- // Save old counter values
- for (var i = 0; i < 8; i++) {
- C_[i] = C[i];
- }
-
- // Calculate new counter values
- C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
- C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
- C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
- C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
- C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
- C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
- C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
- C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
- this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
-
- // Calculate the g-values
- for (var i = 0; i < 8; i++) {
- var gx = X[i] + C[i];
-
- // Construct high and low argument for squaring
- var ga = gx & 0xffff;
- var gb = gx >>> 16;
-
- // Calculate high and low result of squaring
- var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
- var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
-
- // High XOR low
- G[i] = gh ^ gl;
- }
-
- // Calculate new state values
- X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
- X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
- X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
- X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
- X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
- X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
- X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
- X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
- }
-
- /**
- * Shortcut functions to the cipher's object interface.
- *
- * @example
- *
- * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);
- * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);
- */
- C.Rabbit = StreamCipher._createHelper(Rabbit);
- }());
-
-
- (function () {
- // Shortcuts
- var C = CryptoJS;
- var C_lib = C.lib;
- var StreamCipher = C_lib.StreamCipher;
- var C_algo = C.algo;
-
- // Reusable objects
- var S = [];
- var C_ = [];
- var G = [];
-
- /**
- * Rabbit stream cipher algorithm.
- *
- * This is a legacy version that neglected to convert the key to little-endian.
- * This error doesn't affect the cipher's security,
- * but it does affect its compatibility with other implementations.
- */
- var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
- _doReset: function () {
- // Shortcuts
- var K = this._key.words;
- var iv = this.cfg.iv;
-
- // Generate initial state values
- var X = this._X = [
- K[0], (K[3] << 16) | (K[2] >>> 16),
- K[1], (K[0] << 16) | (K[3] >>> 16),
- K[2], (K[1] << 16) | (K[0] >>> 16),
- K[3], (K[2] << 16) | (K[1] >>> 16)
- ];
-
- // Generate initial counter values
- var C = this._C = [
- (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
- (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
- (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
- (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
- ];
-
- // Carry bit
- this._b = 0;
-
- // Iterate the system four times
- for (var i = 0; i < 4; i++) {
- nextState.call(this);
- }
-
- // Modify the counters
- for (var i = 0; i < 8; i++) {
- C[i] ^= X[(i + 4) & 7];
- }
-
- // IV setup
- if (iv) {
- // Shortcuts
- var IV = iv.words;
- var IV_0 = IV[0];
- var IV_1 = IV[1];
-
- // Generate four subvectors
- var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
- var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
- var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
- var i3 = (i2 << 16) | (i0 & 0x0000ffff);
-
- // Modify counter values
- C[0] ^= i0;
- C[1] ^= i1;
- C[2] ^= i2;
- C[3] ^= i3;
- C[4] ^= i0;
- C[5] ^= i1;
- C[6] ^= i2;
- C[7] ^= i3;
-
- // Iterate the system four times
- for (var i = 0; i < 4; i++) {
- nextState.call(this);
- }
- }
- },
-
- _doProcessBlock: function (M, offset) {
- // Shortcut
- var X = this._X;
-
- // Iterate the system
- nextState.call(this);
-
- // Generate four keystream words
- S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
- S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
- S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
- S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
-
- for (var i = 0; i < 4; i++) {
- // Swap endian
- S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |
- (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
-
- // Encrypt
- M[offset + i] ^= S[i];
- }
- },
-
- blockSize: 128/32,
-
- ivSize: 64/32
- });
-
- function nextState() {
- // Shortcuts
- var X = this._X;
- var C = this._C;
-
- // Save old counter values
- for (var i = 0; i < 8; i++) {
- C_[i] = C[i];
- }
-
- // Calculate new counter values
- C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
- C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
- C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
- C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
- C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
- C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
- C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
- C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
- this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
-
- // Calculate the g-values
- for (var i = 0; i < 8; i++) {
- var gx = X[i] + C[i];
-
- // Construct high and low argument for squaring
- var ga = gx & 0xffff;
- var gb = gx >>> 16;
-
- // Calculate high and low result of squaring
- var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
- var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
-
- // High XOR low
- G[i] = gh ^ gl;
- }
-
- // Calculate new state values
- X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
- X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
- X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
- X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
- X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
- X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
- X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
- X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
- }
-
- /**
- * Shortcut functions to the cipher's object interface.
- *
- * @example
- *
- * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
- * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
- */
- C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
- }());
-
-
- return CryptoJS;
-
-}));
\ No newline at end of file
diff --git a/drpy_libs/drpy2.js b/drpy_libs/drpy2.js
deleted file mode 100644
index 63ebe58..0000000
--- a/drpy_libs/drpy2.js
+++ /dev/null
@@ -1,3579 +0,0 @@
-import cheerio from 'assets://js/lib/cheerio.min.js';
-import 'assets://js/lib/crypto-js.js';
-import './jsencrypt.js';
-import './node-rsa.js';
-import './pako.min.js';
-// import JSEncrypt from './jsencrypt.js'; // 会导致壳子崩溃的
-import 模板 from './模板.js'
-import {gbkTool} from './gbk.js'
-import './json5.js'
-// 下面是尝试对jinja2库进行更换
-import './jinja.js'
-
-const _jinja2 = cheerio.jinja2;
-cheerio.jinja2 = function (template, obj) {
- try {
- return jinja.render(template, obj);
- } catch (e) {
- console.log('新的jinja2库渲染失败,换回原始cheerio:' + e.message);
- return _jinja2(template, obj)
- }
-};
-// import cheerio from "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/cheerio.min.js";
-// import "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-js.js";
-// import 模板 from"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js";
-// import {gbkTool} from 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/gbk.js'
-
-function init_test() {
- // console.log(typeof(JSON5));
- // let a = `{'SHOW':'10','UK':'43a7dc59-e87b-449e-8b74-ba40db28e674','albumlist':[{'DC_TARGETID':'30965086','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'17294','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'30965086','artist':'小白不做凤尾','artistid':'10442011','artistpic':'http://img4.kuwo.cn/star/starheads/120/92/53/247071944.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'小白不做凤尾','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/51/40/547190780.jpg','id':'30965086','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/51/40/547190780.jpg','info':'来听听','isstar':'1','lang':'','musiccnt':'37','name':'我的','new':'0','payvalue':'0','pic':'120/51/40/547190780.jpg','pub':'2022-08-28','score':'0','showtime':'','spPrivilege':'0','startype':'有声小说','timing_online':'0000-00-00 00:00:00','title':'','vip':'0'},{'DC_TARGETID':'28041980','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'0','aartist':'','ad_subtype':'','ad_type':'','albumid':'28041980','artist':'玄琛','artistid':'9688248','artistpic':'http://img4.kuwo.cn/star/starheads/120/96/39/3155308302.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'玄琛','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/72/16/2510768590.jpg','id':'28041980','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/72/16/2510768590.jpg','info':'我来诉说我的故事,请你认真聆听,做最好的聆听者','isstar':'1','lang':'','musiccnt':'2','name':'我的','new':'0','payvalue':'0','pic':'120/72/16/2510768590.jpg','pub':'2020-08-18','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'','vip':'0'},{'DC_TARGETID':'17245200','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'5529096','aartist':'','ad_subtype':'','ad_type':'','albumid':'17245200','artist':'我和我的家乡','artistid':'5037564','artistpic':'http://img4.kuwo.cn/star/starheads/0/10/27/3738071257.jpg','color':'[#FFD8F3F1,#FF719794]','company':'中青在线','content_type':'0','falbum':'','fartist':'我和我的家乡','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/85/51/1350940634.jpg','id':'17245200','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/85/51/1350940634.jpg','info':'《我和我的家乡2》是融媒体音频节目《我和我的家乡》第二季。为解读中国人的乡土情结,汇聚同心追梦的力量。【歌曲篇】每期节目将推出一个主题城市,邀请一位青春正能量明星,演唱与家乡有关的原创或翻唱歌曲,曲传乡音。','isstar':'1','lang':'','musiccnt':'5','name':'我和我的家乡第二季「歌曲篇」','new':'0','payvalue':'0','pic':'120/85/51/1350940634.jpg','pub':'2020-12-25','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'解读中国人的乡土情结','vip':'0'},{'DC_TARGETID':'12854978','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'21482961','aartist':'','ad_subtype':'','ad_type':'','albumid':'12854978','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/99/12/1066669641.jpg','id':'12854978','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/99/12/1066669641.jpg','info':'禅音静心:禅茶一味','isstar':'1','lang':'普通话','musiccnt':'407','name':'禅音静心:禅茶一味','new':'0','payvalue':'0','pic':'120/99/12/1066669641.jpg','pub':'2020-02-23','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'禅音静心:禅茶一味','vip':'0'},{'DC_TARGETID':'13884852','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'17396226','aartist':'','ad_subtype':'','ad_type':'','albumid':'13884852','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/91/94/4253604466.jpg','id':'13884852','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/91/94/4253604466.jpg','info':'静心听佛乐','isstar':'1','lang':'普通话','musiccnt':'228','name':'静心听佛乐','new':'0','payvalue':'0','pic':'120/91/94/4253604466.jpg','pub':'2020-04-27','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'静心听佛乐','vip':'0'},{'DC_TARGETID':'17172751','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'553401','aartist':'','ad_subtype':'102,103,101,501','ad_type':'1,5','albumid':'17172751','artist':'我和我的家乡','artistid':'5037564','artistpic':'http://img4.kuwo.cn/star/starheads/0/10/27/3738071257.jpg','color':'[#FFD8F3F1,#FF719794]','company':'中青在线','content_type':'0','falbum':'','fartist':'我和我的家乡','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/63/45/3978411674.jpg','id':'17172751','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/63/45/3978411674.jpg','info':'《我和我的家乡2》是融媒体音频节目《我和我的家乡》第二季。为解读中国人的乡土情结,汇聚同心追梦的力量。每期节目将推出一个主题城市,邀请一位青春正能量明星,用笔者独有的乡愁情感,配以讲述者也为此乡人的身份,着力刻画该城市的魅力形象,展现一座城的普通百姓生活和经济社会发展。','isstar':'1','lang':'','musiccnt':'11','name':'我和我的家乡第二季「有声篇」','new':'0','payvalue':'0','pic':'120/63/45/3978411674.jpg','pub':'2020-12-21','score':'0','showtime':'2020-12-20','spPrivilege':'0','startype':'娱乐','timing_online':'2020-12-20 23:40:00','title':'','vip':'0'},{'DC_TARGETID':'18769609','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'69987','aartist':'','ad_subtype':'101,102,103,501','ad_type':'1,5','albumid':'18769609','artist':'你是我的荣耀','artistid':'6998984','artistpic':'http://img4.kuwo.cn/star/starheads/120/41/44/262468637.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'你是我的荣耀','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/44/72/4080853707.jpg','id':'18769609','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/44/72/4080853707.jpg','info':'《你是我的荣耀》是由王之执导,潘粤明、胡可、王彦霖、杨洋、迪丽热巴、郑合惠子主演的都市爱情剧。该剧改编自顾漫创作的同名小说,主要讲述了人气女星乔晶晶在游戏中与曾经的高中同学于途意外重逢后发生的故事。\\\\\\\\\\\\\\\\\\n;跟随《你是我的荣耀》之声,一起见证航天工程师于途与人气女星乔晶晶,携手砥砺前行成为彼此荣耀的爱情故事!\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;','isstar':'1','lang':'普通话','musiccnt':'1','name':'你是我的荣耀','new':'0','payvalue':'0','pic':'120/44/72/4080853707.jpg','pub':'2021-03-05','score':'0','showtime':'2021-03-09','spPrivilege':'0','startype':'有声小说','timing_online':'2021-03-09 00:00:00','title':'大明星恋上航天工程师 热巴杨洋甜蜜相守','vip':'0'},{'DC_TARGETID':'23641999','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'1292491','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'23641999','artist':'我的存在','artistid':'8102787','artistpic':'http://img4.kuwo.cn/star/starheads/120/31/87/632983033.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'我的存在','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/50/6/2193571523.jpg','id':'23641999','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/50/6/2193571523.jpg','info':'为给老驸马冲喜,长亭长公主庶孙迎娶陆家女,新娘子当天却吊死在洞房,现代女医生陆漫穿越而来。委屈的某人,我要功成名就,我的生活我作主。陆漫,还你自由,我也自由……','isstar':'1','lang':'','musiccnt':'726','name':'金玉良医(完结)','new':'0','payvalue':'0','pic':'120/50/6/2193571523.jpg','pub':'2021-10-11','score':'0','showtime':'','spPrivilege':'0','startype':'有声小说','timing_online':'0000-00-00 00:00:00','title':'现代女医生陆漫穿越到古代发生的事情','vip':'0'},{'DC_TARGETID':'28177105','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'10448','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'28177105','artist':'我的青糖','artistid':'9650993','artistpic':'http://img4.kuwo.cn/star/starheads/120/40/93/1019968534.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'我的青糖','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/62/97/3136446870.jpg','id':'28177105','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/62/97/3136446870.jpg','info':'【字数:16万字】<br>裴子墨和丁辰是一对夫妻,妻子丁辰深爱裴子墨,但裴子墨难以忘怀初恋总是对她若即若离。婚后两年,裴子墨前女友于筝突然回国,使得他和丁辰原本就不稳定的婚姻更加雪上加霜。于筝当初背叛裴子墨,受伤后才意识到裴子墨的好,于是不择手段夺回了裴子墨。丁辰和裴子墨离婚后,裴子墨才意识到两年相处,他早已习惯有丁辰的陪伴。裴子墨决心重新赢回丁辰的心,但此时丁辰身边已经有了一位极其出色的追求者,前景不容乐观……','isstar':'1','lang':'','musiccnt':'80','name':'如果你是我的传说','new':'0','payvalue':'0','pic':'120/62/97/3136446870.jpg','pub':'2022-04-21','score':'0','showtime':'1979-10-05','spPrivilege':'0','startype':'有声小说','timing_online':'2022-05-01 19:26:48','title':'','vip':'0'},{'DC_TARGETID':'12896662','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'2412258','aartist':'','ad_subtype':'','ad_type':'','albumid':'12896662','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/93/41/3670973086.jpg','id':'12896662','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/93/41/3670973086.jpg','info':'佛书梵唱100篇','isstar':'1','lang':'普通话','musiccnt':'50','name':'佛书梵唱100篇','new':'0','payvalue':'0','pic':'120/93/41/3670973086.jpg','pub':'2020-02-24','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'佛书梵唱100篇','vip':'0'}],'pn':'0','rn':'10','total':'257'}`;
- // log(JSON5.parse(a));
- // console.log(typeof(CryptoJS));
- console.log("init_test_start");
- // print(模板);
- // print(typeof(模板.getMubans));
- console.log("当前版本号:" + VERSION);
- console.log('本地代理地址:' + getProxyUrl());
- console.log(RKEY);
- // ocr_demo_test();
- // rsa_demo_test();
-
- // console.log('Uint8Array:'+typeof(Uint8Array)+' '+'Uint16Array:'+typeof(Uint16Array));
- // console.log('encodeURIComponent:'+typeof(encodeURIComponent)+' '+'decodeURIComponent:'+typeof(decodeURIComponent));
- // console.log('atob:'+typeof(atob)+' '+'btoa:'+typeof(btoa));
- // log('typeof (JSEncrypt):'+typeof (JSEncrypt));
- // log('typeof (pako):'+typeof (pako));
- // let b64_str = btoa('hello hipy');
- // let str = atob(b64_str);
- // console.log(`btoa加密文本:${b64_str},atob解密文本:${str}`)
- // let gzip_str = gzip('{"a":"电影","b":"电影","c":"电影","d":"电影","e":"电影","f":"电影"}');
- // let ungzip_str = ungzip(gzip_str);
- // console.log(`gzip加密文本:${gzip_str},长度:${gzip_str.length},ungzip解密文本:${ungzip_str},长度:${ungzip_str.length}`);
- // let a = {"1":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"NETFLIX"},{"n":"剧情","v":"剧情"},{"n":"喜剧","v":"喜剧"},{"n":"动作","v":"动作"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"惊悚","v":"惊悚"},{"n":"犯罪","v":"犯罪"},{"n":"科幻","v":"科幻"},{"n":"悬疑","v":"悬疑"},{"n":"奇幻","v":"奇幻"},{"n":"冒险","v":"冒险"},{"n":"战争","v":"战争"},{"n":"历史","v":"历史"},{"n":"古装","v":"古装"},{"n":"家庭","v":"家庭"},{"n":"传记","v":"传记"},{"n":"武侠","v":"武侠"},{"n":"歌舞","v":"歌舞"},{"n":"短片","v":"短片"},{"n":"动画","v":"动画"},{"n":"儿童","v":"儿童"},{"n":"职场","v":"职场"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"法国","v":"法国"},{"n":"德国","v":"德国"},{"n":"印度","v":"印度"},{"n":"泰国","v":"泰国"},{"n":"丹麦","v":"丹麦"},{"n":"瑞典","v":"瑞典"},{"n":"巴西","v":"巴西"},{"n":"加拿大","v":"加拿大"},{"n":"俄罗斯","v":"俄罗斯"},{"n":"意大利","v":"意大利"},{"n":"比利时","v":"比利时"},{"n":"爱尔兰","v":"爱尔兰"},{"n":"西班牙","v":"西班牙"},{"n":"澳大利亚","v":"澳大利亚"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"2":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"Netflix"},{"n":"剧情","v":"剧情"},{"n":"爱情","v":"爱情"},{"n":"喜剧","v":"喜剧"},{"n":"犯罪","v":"犯罪"},{"n":"悬疑","v":"悬疑"},{"n":"古装","v":"古装"},{"n":"动作","v":"动作"},{"n":"家庭","v":"家庭"},{"n":"惊悚","v":"惊悚"},{"n":"奇幻","v":"奇幻"},{"n":"美剧","v":"美剧"},{"n":"科幻","v":"科幻"},{"n":"历史","v":"历史"},{"n":"战争","v":"战争"},{"n":"韩剧","v":"韩剧"},{"n":"武侠","v":"武侠"},{"n":"言情","v":"言情"},{"n":"恐怖","v":"恐怖"},{"n":"冒险","v":"冒险"},{"n":"都市","v":"都市"},{"n":"职场","v":"职场"}]},{"key":"地区","name":"地区","value":[{"n":"地区","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"台湾","v":"中国台湾"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"3":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"Netflix"},{"n":"动态漫画","v":"动态漫画"},{"n":"剧情","v":"剧情"},{"n":"动画","v":"动画"},{"n":"喜剧","v":"喜剧"},{"n":"冒险","v":"冒险"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"科幻","v":"科幻"},{"n":"儿童","v":"儿童"},{"n":"搞笑","v":"搞笑"},{"n":"爱情","v":"爱情"},{"n":"家庭","v":"家庭"},{"n":"短片","v":"短片"},{"n":"热血","v":"热血"},{"n":"益智","v":"益智"},{"n":"悬疑","v":"悬疑"},{"n":"经典","v":"经典"},{"n":"校园","v":"校园"},{"n":"Anime","v":"Anime"},{"n":"运动","v":"运动"},{"n":"亲子","v":"亲子"},{"n":"青春","v":"青春"},{"n":"恋爱","v":"恋爱"},{"n":"武侠","v":"武侠"},{"n":"惊悚","v":"惊悚"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"大陆","v":"中国大陆"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"法国","v":"法国"},{"n":"德国","v":"德国"},{"n":"印度","v":"印度"},{"n":"泰国","v":"泰国"},{"n":"丹麦","v":"丹麦"},{"n":"瑞典","v":"瑞典"},{"n":"巴西","v":"巴西"},{"n":"加拿大","v":"加拿大"},{"n":"俄罗斯","v":"俄罗斯"},{"n":"意大利","v":"意大利"},{"n":"比利时","v":"比利时"},{"n":"爱尔兰","v":"爱尔兰"},{"n":"西班牙","v":"西班牙"},{"n":"澳大利亚","v":"澳大利亚"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"4":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"纪录","v":"纪录"},{"n":"真人秀","v":"真人秀"},{"n":"记录","v":"记录"},{"n":"脱口秀","v":"脱口秀"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"喜剧","v":"喜剧"},{"n":"传记","v":"传记"},{"n":"相声","v":"相声"},{"n":"节目","v":"节目"},{"n":"歌舞","v":"歌舞"},{"n":"冒险","v":"冒险"},{"n":"运动","v":"运动"},{"n":"Season","v":"Season"},{"n":"犯罪","v":"犯罪"},{"n":"短片","v":"短片"},{"n":"搞笑","v":"搞笑"},{"n":"晚会","v":"晚会"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"6":[{"key":"类型","name":"类型","value":[{"n":"类型","v":""},{"n":"逆袭","v":"逆袭"},{"n":"甜宠","v":"甜宠"},{"n":"虐恋","v":"虐恋"},{"n":"穿越","v":"穿越"},{"n":"重生","v":"重生"},{"n":"剧情","v":"剧情"},{"n":"科幻","v":"科幻"},{"n":"武侠","v":"武侠"},{"n":"爱情","v":"爱情"},{"n":"动作","v":"动作"},{"n":"战争","v":"战争"},{"n":"冒险","v":"冒险"},{"n":"其它","v":"其它"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"}]}]};
- // log(gzip(JSON.stringify(a)));
-
- console.log(JSON.stringify(rule));
- console.log("init_test_end");
-
-
- // log('typeof (JSEncrypt):'+typeof (JSEncrypt));
- // let publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwEc7wBMtYKkxvrQNI3+ITBZwAkPkGvsv4TsAHFskKGZWz9eYl3scivhmlEfWHlEkdyb0m82CmB1qAgef+pD4cZu+Cdmm2e9lnExhLwm8cBgpkAen9QRNdjojZgxM0W+JcReH4W6pw+uFXiLRn4AIQkDftWGNLg6wlNS+39Z/RvP9zyATJLZ9AKDdHp62XMxEK1KZvWBuIg+Oa5UzgA9jy+2XyIqwhBtO8tPbUl21t2pvTzHoLUjSkPNm2LurcUk6+jQ2r6aiS2CN1NXIucPJU6mkuIQ821SjvkYPtIdRMntW4y2u4cyiqVEEQwlzWVMHh+/vfrWAQr9fgjDuYYtvPQIDAQAB';
- // let privateKey = 'MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDARzvAEy1gqTG+tA0jf4hMFnACQ+Qa+y/hOwAcWyQoZlbP15iXexyK+GaUR9YeUSR3JvSbzYKYHWoCB5/6kPhxm74J2abZ72WcTGEvCbxwGCmQB6f1BE12OiNmDEzRb4lxF4fhbqnD64VeItGfgAhCQN+1YY0uDrCU1L7f1n9G8/3PIBMktn0AoN0enrZczEQrUpm9YG4iD45rlTOAD2PL7ZfIirCEG07y09tSXbW3am9PMegtSNKQ82bYu6txSTr6NDavpqJLYI3U1ci5w8lTqaS4hDzbVKO+Rg+0h1Eye1bjLa7hzKKpUQRDCXNZUweH7+9+tYBCv1+CMO5hi289AgMBAAECggEBAIRbRJUWXmEwdq64kGbELlV6CIZ2p3mvOSlIjO34Cy7IK7AMz9xOgbpj/XDK9miOIJTouu7ZC7GcZdGZ4BUCYBMMS0fKjGFuurpZlXhkslNTPqEHtCUkXhIpOR7RDrwIlErGEOIsZC4aXQcM3tF1t7mroJLh4OY4dHMu82lv5NM4hhFMNvHzXVvrPXeTzw26gddHVG/ke0WUYOcB5j3cPp8xaVp7JV8bdxtGtkqIfBLY/dIczzJu/3F3cBpU2nNwt8uVUF/w/HKlr7j8FqqFHXWh182beU0n5AIdRyRJBrRUAEhdtsUnvJOVBDqzZa+9DJ5395F7V8KRlQptxETdhCECgYEA4x/2HM9fnVIhG6wTbEt1LhGTKYb/igMAHLqquEMfRsB44tobI8gVNwR3qJQY/nKXxcQemQV29PcdqpENCKyXUXGD8SI1UPg15rHFBI8CIqlCXfzJybdHjmzlhaA9I5lofIVh+5MW7WkvHZoRy7NeDMhHUuaiveuqC4OJ8n+dD2kCgYEA2LkmUVef3WkBBwUBRdkyoog3DMwR+/ubb0ncJVYy3ItYVJltQ4HqmrRiJc8xBAoFnG8rbiqDnmTnDR3WbuxU1G2hml09fqId+rQds2UfESswCXHU43A4f77m1XyA6PprBxpozVIcmK69N4rR9jOXflLWo3O+p2ipUbmNpId7+rUCgYBSpcbBJRT+AmzZzPwkZDD32p1ady114zGfQq3s7z/qVw+mPQezNZPCuXVxerK9pKVl6b/Ynwxyh5nb/3xms6c8k7oXfQM5u5ihof63cfKs+jqUSPCE3pTDVw0OWwjkc2Z6KW9GRHgLXEMw2mevYE3RCPArUpHV2nO+TNddzuIwQQKBgQDOZwdnUNygMfEYjlu3+jOPN8u2FGTMZ8SRKPbRWFb4VH27lKPLN2AIFuOivsEf56uQYRAry7GumMq0Y0ZmPg5Mglz2dvaqNBv5OLFQuW3tHAST+iWWtroYb+fISts7B8QG79AAO8OgZksvKrbslBYj6SEiaomZRsR7YQzVNXOOQQKBgQCovElZ50c8ZJ6m9D9fw3Nes7u9vshpyyac5tt4tZ7yfU4l5pWGrIUqCE703qZp4NAqEvlZUCJbj9kkysaj/2MfFb2b9jSvdNB+V/YW9Cwg+5TziYoOcQzN1z2u4p4goTAv0S+pTNSr3qWaTUI4TXUXQajif45Fexv+MrP5AAXQyw=='
- // // let text = '你好';
- // let text = '[{"vod_name":"兔小贝原创儿歌","vod_pic":"https://resource-cdn.tuxiaobei.com/video-album/FnQ8ieJHgsbgCKWXNBg4uoOmKgG5.jpg","vod_remarks":"共229首","vod_content":"","vod_id":"/subject/17@@兔小贝原创儿歌@@https://resource-cdn.tuxiaobei.com/video-album/FnQ8ieJHgsbgCKWXNBg4uoOmKgG5.jpg"},{"vod_name":"英文儿歌","vod_pic":"https://resource-cdn.tuxiaobei.com/video-album/Fqjpx2H_-QaYNAYn2MekRuDpeyUv.jpg","vod_remarks":"共10首","vod_content":"","vod_id":"/subject/23@@英文儿歌@@https://resource-cdn.tuxiaobei.com/video-album/Fqjpx2H_-QaYNAYn2MekRuDpeyUv.jpg"}]';
- // let str = RSA.encode(text, publicKey);
- // console.log("加密数据:" + str);
- // let str1 = 'Wa2c/868VOm0PgpGG2s2aMrDbGOlJRdZXlSGswjFgywd3nZNB7ND8kVMdNB/OsNFoQXJXSJMvPaE73BH7rs8fz54JGdYQK+qTgfQRqQZvomCjbzseSR4bm4NOrtIOOslL3WqxlzOuU0M1P1eERmkLEVU2WSyc3RGtJro3b3MOWYCNdKMoZdncfOHJndkl4wm9V3GGc3uH98hs6OxLvBWgXoW9jZQ3n0vR2FtS2KYrPGuSuKGkxlt9Kw5TD6nri142NOimz05WK55Xe04YUQ1VZd51t0wzJGXolWgfzIQaK2zzhk5Zjlm+IQJxXqEWiJ2+O6TJ+lIttvsDSaUflcDXQ==';
- // let str2 = 'R86mW9DzBw05pxBSh9ECh1stXxINmnudgZBbzU/cz1EcFgrEgdk0Zk4ruAiJZB2fP5c7d3gMmN8+Dv19IfARWSzw85xCEjUhpdcMJ0jn6ZE5H+muadND9LzjeVisojqwYxot3YVdKof7HMhPFN8QR0jfzqhjmnGFTlY1jMXzJK0MSOLNRLDar480CdKNb/cxALC8+xKIlhM9E4B31t8J4rNMUWSCAr49lbZ3jx3PxieBpTQUdDJz96AttR93Pc+c51wrxh0Ch/Mt4Rs09HGMXwIpNV+CxsGwSGRQUlyJo2k3d0WqsVzpz6S8A4VGEMTRLGI3IjEt+eWt7wM3nAXarg==';
- // let str3 = 'D4eOsRqua+jYA5+ZOR9PLI2PExKjKfArQfv9/wGeG50bQSjWypShJPY6RQfO+rghyf0juzHIUSxqH91OxinhCFkONaF2Vod2QVyphyn9eh73dAcEFKIFFKGXoPCjbMWrr3p4d+hgVrHzrFeGqkRq8JFOvG2L5XDxVfWbV8KmUA0DKuz6QwWg7P4kesy+C7BbLALy5W/wfZchD3gnsBvx/pjFoe11VfAify9isLxg9a15jj52xr6lzQ9kge9C2JcV8yq85bFKaUpJWgobzz+BSIv3lVMU6vgcldmOrhkyiETpFGFGGF00DphGCEoK6uAyyNDh7+Jn8P17zf/DW1wV3A==';
- // let uncrypted = RSA.decode(str, privateKey);
- // log('解密数据:'+uncrypted);
- // uncrypted = RSA.decode(str1, privateKey);
- // log('解密数据1:'+uncrypted);
- // uncrypted = RSA.decode(str2, privateKey);
- // log('解密数据2:'+uncrypted);
- // uncrypted = RSA.decode(str3, privateKey);
- // log('解密数据3:'+uncrypted);
-
- // log('rsax:'+typeof(rsax));
- // log('rsaX:'+typeof(rsaX));
- // let data = base64Encode('你好');
- // let publicKey = 'dzyyds';
- // console.log(typeof (RSA.encode));
- // let encryptBase64Data = RSA.encode(data,publicKey);
- // log('encryptBase64Data:'+encryptBase64Data);
- // let str = RSA.decode(data,publicKey);
- // log('str:'+str);
-}
-
-/**
- * 验证码ocr识别的测试案例
- */
-function ocr_demo_test() {
- // 这张图片为4113的验证码
- let img_base64 = `iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`;
- // 更换api-可以通过这个代码换掉默认的ocr接口
- OcrApi.api = OCR_API;
- let code = OcrApi.classification(img_base64);
- log('测试验证码图片的ocr识别结果为:' + code);
-}
-
-/**
- * rsa加解密的全方位测试案例
- */
-function rsa_demo_test() {
- let t1 = new Date().getTime();
- let pkcs1_public = `
------BEGIN RSA PUBLIC KEY-----
-MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
-lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
------END RSA PUBLIC KEY-----
-`.trim();
-
- let pkcs1_public_pem = `
-MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
-lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
-`.trim();
-
- let pkcs8_public = `
------BEGIN PUBLIC KEY-----
-MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/
-nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ==
------END PUBLIC KEY-----`.trim();
-
- let pkcs8_public_pem = `
-MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/
-nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ==
-`.trim();
-
- let pkcs1_private = `
------BEGIN RSA PRIVATE KEY-----
-MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7
-ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt
-0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ
-AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA
-hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+
-5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS
-EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q==
------END RSA PRIVATE KEY-----
-`.trim()
-
- let pkcs8_private = `
------BEGIN PRIVATE KEY-----
-MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf
-dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v
-YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8
-KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8
-s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl
-AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3
-rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6
-lPxDjezd
------END PRIVATE KEY-----
-`.trim()
-
- let data = `
-NodeRsa
-这是node-rsa 现在修改集成在drpy里使用`.trim();
-
- let encryptedWithPublic = NODERSA.encryptRSAWithPublicKey(data, pkcs1_public, {
- // PublicFormat: "pkcs1-public-pem",
- outputEncoding: "base64",
- options: {environment: "browser", encryptionScheme: 'pkcs1_oaep'},
- });
- console.log("公钥加密");
- console.log(encryptedWithPublic);
-
-
- let decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic, pkcs1_private, {
- // PublicFormat: "pkcs1-private",
- // outEncoding: "hex"
- options: {environment: "browser", encryptionScheme: 'pkcs1_oaep'},
- });
- console.log("私钥解密");
- console.log(decryptedWithPrivate);
-
-
-// https://www.btool.cn/rsa-sign
- let pkcs1_sha256_sign = NODERSA.sign("1", pkcs1_private, {
- outputEncoding: "base64",
- options: {environment: "browser", encryptionScheme: 'pkcs1', signingScheme: "pkcs1-sha256"},
- });
- console.log("pkcs1_sha256_sign");
- console.log(pkcs1_sha256_sign);
-
- let pkcs1_sha256_sign_verify = NODERSA.verify("1", "Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==", pkcs1_private, {
- options: {environment: "browser", encryptionScheme: 'pkcs1', signingScheme: "pkcs1-sha256"},
- });
- console.log("pkcs1_sha256_sign_verify");
- console.log(pkcs1_sha256_sign_verify);
-
- let pkcs1_oaep_sha256 = NODERSA.encryptRSAWithPublicKey(data, `-----BEGIN RSA PUBLIC KEY-----
-MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du
-SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm
-kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8
-PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m
-PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb
-Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB
------END RSA PUBLIC KEY-----
-`, {
- outputEncoding: "base64",
- options: {
- environment: "browser", encryptionScheme: {
- scheme: "pkcs1_oaep",
- hash: "sha256",
- },
- }
- // options: { environment: "browser", encryptionScheme: 'pkcs1' },
- });
- console.log("pkcs1_oaep_sha256");
- console.log(pkcs1_oaep_sha256);
-
- decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==", `-----BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is
-T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S
-xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy
-3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+
-HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA
-ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/
-zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31
-iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l
-QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu
-eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ
-8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9
-l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC
-WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J
-NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0
-o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3
-ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ
-I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i
-tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P
-vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p
-yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC
-8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87
-HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN
-QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51
-MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw
-m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA==
------END RSA PRIVATE KEY-----`, {
- // PublicFormat: "pkcs1-private",
- // outEncoding: "hex"
- options: {environment: "browser", encryptionScheme: 'pkcs1_oaep'},
- });
- console.log('decryptedWithPrivate');
- console.log(decryptedWithPrivate);
-
-
- (() => {
- let key = new NODERSA.NodeRSA({b: 1024});
- key.setOptions({encryptionScheme: 'pkcs1'})
- let text = `你好drpy node-ras`;
- let encrypted = key.encrypt(text, 'base64');
- console.log('encrypted: ', encrypted);
- const decrypted = key.decrypt(encrypted, 'utf8');
- console.log('decrypted: ', decrypted);
- })();
- let t2 = new Date().getTime();
- console.log('rsa_demo_test 测试耗时:' + (t2 - t1) + '毫秒');
-}
-
-
-/**
- * 执行预处理代码
- */
-function pre() {
- if (typeof (rule.预处理) === 'string' && rule.预处理 && rule.预处理.trim()) {
- let code = rule.预处理.trim();
- console.log("执行预处理代码:" + code);
- if (code.startsWith('js:')) {
- code = code.replace('js:', '');
- }
- try {
- // code里可以进行get 或者 post请求cookie并改变rule.headers 里的cookie
- // 直接操作 rule_fetch_params 这个变量 .headers.Cookie
- eval(code);
- } catch (e) {
- console.log(`预处理执行失败:${e.message}`);
- }
- }
-}
-
-let rule = {};
-let vercode = typeof (pdfl) === 'function' ? 'drpy2.1' : 'drpy2';
-const VERSION = vercode + ' 3.9.51beta2 20240711';
-/** 已知问题记录
- * 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了]
- * Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
- * 2.import es6py.js但是里面的函数没有被装载进来.比如drpy规则报错setResult2 is undefiend(合并文件了可以不管了)
- * 3.无法重复导入cheerio(怎么解决drpy和parseTag里都需要导入cheerio的问题) 无法在副文件导入cheerio (现在是全部放在drpy一个文件里了,凑合解决?)
- * 4.有个错误不知道哪儿来的 executeScript: com.quickjs.JSObject$Undefined cannot be cast to java.lang.String 在 点击选集播放打印init_test_end后面打印(貌似不影响使用)
- * 5.需要实现 stringify 函数,比起JSON.strifngify函数,它会原封不动保留中文不会编码unicode
- * 6.base64Encode,base64Decode,md5函数还没有实现 (抄影魔代码实现了)
- * 7.eval(getCryptoJS());还没有实现 (可以空实现了,以后遇到能忽略)
- * done: jsp:{pdfa,pdfh,pd},json:{pdfa,pdfh,pd},jq:{pdfa,pdfh,pd}
- * 8.req函数不支持传递字符串的data参数 {'content-type':'text/plain'} 类型数据,因此无法直接调用alist的ocr接口
- * * 电脑看日志调试
- adb tcpip 5555
- adb connect 192.168.10.192
- adb devices -l
- adb logcat -c
- adb logcat | grep -i QuickJS
- adb logcat -c -b events
- adb logcat -c -b main -b events -b radio -b system
- adb logcat > 2.log DRPY:E | grep -i QuickJS
- * **/
-
-
-/*** 以下是内置变量和解析方法 **/
-const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36';
-const PC_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36';
-const UA = 'Mozilla/5.0';
-const UC_UA = 'Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36';
-const IOS_UA = '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';
-const RULE_CK = 'cookie'; // 源cookie的key值
-// const KEY = typeof(key)!=='undefined'&&key?key:'drpy_' + (rule.title || rule.host); // 源的唯一标识
-const CATE_EXCLUDE = '首页|留言|APP|下载|资讯|新闻|动态';
-const TAB_EXCLUDE = '猜你|喜欢|下载|剧情|榜|评论';
-const OCR_RETRY = 3;//ocr验证重试次数
-// const OCR_API = 'http://drpy.nokia.press:8028/ocr/drpy/text';//ocr在线识别接口
-const OCR_API = 'https://api.nn.ci/ocr/b64/text';//ocr在线识别接口
-if (typeof (MY_URL) === 'undefined') {
- var MY_URL; // 全局注入变量,pd函数需要
-}
-var HOST;
-var RKEY; // 源的唯一标识
-var fetch;
-var print;
-var log;
-var rule_fetch_params;
-var fetch_params; // 每个位置单独的
-var oheaders;
-// var play_url; // 二级详情页注入变量,为了适配js模式0 (不在这里定义了,直接二级里定义了个空字符串)
-var _pdfh;
-var _pdfa;
-var _pd;
-// const DOM_CHECK_ATTR = ['url', 'src', 'href', 'data-original', 'data-src'];
-const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/;
-// 过滤特殊链接,不走urlJoin
-const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/;
-const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; // 不自动加eq下标索引
-const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/; // 需要自动urljoin的属性
-const SELECT_REGEX = /:eq|:lt|:gt|#/g;
-const SELECT_REGEX_A = /:eq|:lt|:gt/g;
-
-// 增加$js工具,支持$js.toString(()=>{});
-const $js = {
- toString(func) {
- let strfun = func.toString();
- return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/, "js:").replace(/\}$/, '');
- }
-};
-
-function window_b64() {
- let b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- let base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
-
- function btoa(str) {
- var out, i, len;
- var c1, c2, c3;
- len = str.length;
- i = 0;
- out = "";
- while (i < len) {
- c1 = str.charCodeAt(i++) & 0xff;
- if (i == len) {
- out += b64map.charAt(c1 >> 2);
- out += b64map.charAt((c1 & 0x3) << 4);
- out += "==";
- break;
- }
- c2 = str.charCodeAt(i++);
- if (i == len) {
- out += b64map.charAt(c1 >> 2);
- out += b64map.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
- out += b64map.charAt((c2 & 0xF) << 2);
- out += "=";
- break;
- }
- c3 = str.charCodeAt(i++);
- out += b64map.charAt(c1 >> 2);
- out += b64map.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
- out += b64map.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
- out += b64map.charAt(c3 & 0x3F);
- }
- return out;
- }
-
- function atob(str) {
- var c1, c2, c3, c4;
- var i, len, out;
- len = str.length;
- i = 0;
- out = "";
- while (i < len) {
- do {
- c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
- } while (i < len && c1 == -1);
- if (c1 == -1) break;
- do {
- c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
- } while (i < len && c2 == -1);
- if (c2 == -1) break;
- out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
- do {
- c3 = str.charCodeAt(i++) & 0xff;
- if (c3 == 61) return out;
- c3 = base64DecodeChars[c3];
- } while (i < len && c3 == -1);
- if (c3 == -1) break;
- out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
- do {
- c4 = str.charCodeAt(i++) & 0xff;
- if (c4 == 61) return out;
- c4 = base64DecodeChars[c4];
- } while (i < len && c4 == -1);
- if (c4 == -1) break;
- out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
- }
- return out;
- }
-
- return {
- atob,
- btoa
- }
-}
-
-/**
- es6py扩展
- */
-if (typeof atob !== 'function' || typeof btoa !== 'function') {
- var {atob, btoa} = window_b64();
-}
-
-if (typeof Object.assign !== 'function') {
- Object.assign = function () {
- let target = arguments[0];
- for (let i = 1; i < arguments.length; i++) {
- let source = arguments[i];
- for (let key in source) {
- if (Object.prototype.hasOwnProperty.call(source, key)) {
- target[key] = source[key];
- }
- }
- }
- return target;
- };
-}
-if (!String.prototype.includes) {
- String.prototype.includes = function (search, start) {
- if (typeof start !== 'number') {
- start = 0;
- }
-
- if (start + search.length > this.length) {
- return false;
- } else {
- return this.indexOf(search, start) !== -1;
- }
- };
-}
-
-if (!Array.prototype.includes) {
- Object.defineProperty(Array.prototype, 'includes', {
- value: function (searchElement, fromIndex) {
-
- if (this == null) {//this是空或者未定义,抛出错误
- throw new TypeError('"this" is null or not defined');
- }
-
- var o = Object(this);//将this转变成对象
- var len = o.length >>> 0;//无符号右移0位,获取对象length属性,如果未定义就会变成0
-
- if (len === 0) {//length为0直接返回false未找到目标值
- return false;
- }
-
- var n = fromIndex | 0;//查找起始索引
- var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);//计算正确起始索引,因为有可能是负值
-
- while (k < len) {//从起始索引处开始循环
- if (o[k] === searchElement) {//如果某一位置与寻找目标相等,返回true,找到了
- return true;
- }
- k++;
- }
- return false;//未找到,返回false
- },
- enumerable: false
- });
-}
-if (typeof String.prototype.startsWith !== 'function') {
- String.prototype.startsWith = function (prefix) {
- return this.slice(0, prefix.length) === prefix;
- };
-}
-if (typeof String.prototype.endsWith !== 'function') {
- String.prototype.endsWith = function (suffix) {
- return this.indexOf(suffix, this.length - suffix.length) !== -1;
- };
-}
-Object.defineProperty(Object.prototype, 'myValues', {
- value: function (obj) {
- if (obj == null) {
- throw new TypeError("Cannot convert undefined or null to object");
- }
- var res = []
- for (var k in obj) {
- if (obj.hasOwnProperty(k)) {//需判断是否是本身的属性
- res.push(obj[k]);
- }
- }
- return res;
- },
- enumerable: false
-});
-if (typeof Object.prototype.values !== 'function') {
- Object.defineProperty(Object.prototype, 'values', {
- value: function (obj) {
- if (obj == null) {
- throw new TypeError("Cannot convert undefined or null to object");
- }
- var res = []
- for (var k in obj) {
- if (obj.hasOwnProperty(k)) {//需判断是否是本身的属性
- res.push(obj[k]);
- }
- }
- return res;
- },
- enumerable: false
- });
-}
-if (typeof Array.prototype.join !== 'function') {
- Object.defineProperty(Array.prototype, 'join', {
- value: function (emoji) {
- // emoji = emoji||',';
- emoji = emoji || '';
- let self = this;
- let str = "";
- let i = 0;
- if (!Array.isArray(self)) {
- throw String(self) + 'is not Array'
- }
- if (self.length === 0) {
- return ''
- }
- if (self.length === 1) {
- return String(self[0])
- }
- i = 1;
- str = this[0];
- for (; i < self.length; i++) {
- str += String(emoji) + String(self[i]);
- }
- return str;
- },
- enumerable: false
- });
-}
-if (typeof Array.prototype.toReversed !== 'function') {
- Object.defineProperty(Array.prototype, 'toReversed', {
- value: function () {
- const clonedList = this.slice();
- // 倒序新数组
- const reversedList = clonedList.reverse();
- return reversedList;
- },
- enumerable: false
- });
-}
-
-Object.defineProperty(Array.prototype, 'append', {
- value: Array.prototype.push,
- enumerable: false
-});
-Object.defineProperty(String.prototype, 'strip', {
- value: String.prototype.trim,
- enumerable: false
-});
-Object.defineProperty(String.prototype, 'rstrip', {
- value: function (chars) {
- let regex = new RegExp(chars + "$");
- return this.replace(regex, "");
- },
- enumerable: false
-});
-
-function 是否正版(vipUrl) {
- let flag = new RegExp('qq\.com|iqiyi\.com|youku\.com|mgtv\.com|bilibili\.com|sohu\.com|ixigua\.com|pptv\.com|miguvideo\.com|le\.com|1905\.com|fun\.tv');
- return flag.test(vipUrl);
-}
-
-function urlDeal(vipUrl) {
- if (!vipUrl) {
- return ''
- }
- if (!是否正版(vipUrl)) {
- return vipUrl
- }
- if (!/miguvideo/.test(vipUrl)) {
- vipUrl = vipUrl.split('#')[0].split('?')[0];
- }
- return vipUrl
-}
-
-function setResult(d) {
- if (!Array.isArray(d)) {
- return []
- }
- VODS = [];
- // print(d);
- d.forEach(function (it) {
- let obj = {
- vod_id: it.url || '',
- vod_name: it.title || '',
- vod_remarks: it.desc || '',
- vod_content: it.content || '',
- vod_pic: it.pic_url || it.img || '',
- };
- let keys = Object.keys(it);
- if (keys.includes('tname')) {
- obj.type_name = it.tname || '';
- }
- if (keys.includes('tid')) {
- obj.type_id = it.tid || '';
- }
- if (keys.includes('year')) {
- obj.vod_year = it.year || '';
- }
- if (keys.includes('actor')) {
- obj.vod_actor = it.actor || '';
- }
- if (keys.includes('director')) {
- obj.vod_director = it.director || '';
- }
- if (keys.includes('area')) {
- obj.vod_area = it.area || '';
- }
- VODS.push(obj);
- });
- return VODS
-}
-
-function setResult2(res) {
- VODS = res.list || [];
- return VODS
-}
-
-function setHomeResult(res) {
- if (!res || typeof (res) !== 'object') {
- return []
- }
- return setResult(res.list);
-}
-
-// 猫了个咪
-function rc(js) {
- if (js === 'maomi_aes.js') {
- var a = CryptoJS.enc.Utf8.parse("625222f9149e961d");
- var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");
- return {
- De: function (word) {
- word = CryptoJS.enc.Hex.parse(word)
- return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, {
- iv: t,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- }).toString(CryptoJS.enc.Utf8)
- },
- En: function (word) {
- // print(a);
- // print(word);
- var Encrypted = CryptoJS.AES.encrypt(word, a, {
- iv: t,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- });
- return Encrypted.ciphertext.toString();
- }
- };
- }
- return {};
-}
-
-// 千万不要用for in 推荐 forEach (for in 会打乱顺序)
-//猫函数
-function maoss(jxurl, ref, key) {
- fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- eval(getCryptoJS());
- try {
- var getVideoInfo = function (text) {
- return CryptoJS.AES.decrypt(text, key, {iv: iv, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);
- };
- var token_key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key;
- if (ref) {
- var html = request(jxurl, {
- headers: {
- 'Referer': ref
- }
- });
- } else {
- var html = request(jxurl);
- }
- // print(html);
- if (html.indexOf('&btwaf=') != -1) {
- html = request(jxurl + '&btwaf' + html.match(/&btwaf(.*?)"/)[1], {
- headers: {
- 'Referer': ref
- }
- })
- }
- var token_iv = html.split('_token = "')[1].split('"')[0];
- var key = CryptoJS.enc.Utf8.parse(token_key);
- var iv = CryptoJS.enc.Utf8.parse(token_iv);
- // log("iv:"+iv);
- // log(html);
- // print(key);
- // print(iv);
- eval(html.match(/var config = {[\s\S]*?}/)[0] + '');
- // config.url = config.url.replace(/,/g,'');
- // print(config.url);
- if (!config.url.startsWith('http')) {
- //config.url = decodeURIComponent(AES(config.url, key, iv));
- config.url = CryptoJS.AES.decrypt(config.url, key, {
- iv: iv,
- padding: CryptoJS.pad.Pkcs7
- }).toString(CryptoJS.enc.Utf8)
- }
- return config.url;
- } catch (e) {
- return '';
- }
-}
-
-/**
- * 将base64编码进行url编译
- * @param str
- * @returns {string}
- */
-function urlencode(str) {
- str = (str + '').toString();
- return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
-}
-
-/**
- * url编码,同 encodeURI
- * @param str
- * @returns {string}
- */
-function encodeUrl(str) {
- if (typeof (encodeURI) == 'function') {
- return encodeURI(str)
- } else {
- str = (str + '').toString();
- return encodeURIComponent(str).replace(/%2F/g, '/').replace(/%3F/g, '?').replace(/%3A/g, ':').replace(/%40/g, '@').replace(/%3D/g, '=').replace(/%3A/g, ':').replace(/%2C/g, ',').replace(/%2B/g, '+').replace(/%24/g, '$');
- }
-}
-
-function base64Encode(text) {
- return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text));
- // return text
-}
-
-function base64Decode(text) {
- return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text));
- // return text
-}
-
-function md5(text) {
- return CryptoJS.MD5(text).toString();
-}
-
-function uint8ArrayToBase64(uint8Array) {
- let binaryString = String.fromCharCode.apply(null, Array.from(uint8Array));
- return btoa(binaryString);
-}
-
-function Utf8ArrayToStr(array) {
- var out, i, len, c;
- var char2, char3;
- out = "";
- len = array.length;
- i = 0;
- while (i < len) {
- c = array[i++];
- switch (c >> 4) {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- out += String.fromCharCode(c);
- break;
- case 12:
- case 13:
- char2 = array[i++];
- out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f));
- break;
- case 14:
- char2 = array[i++];
- char3 = array[i++];
- out += String.fromCharCode(
- ((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0)
- );
- break;
- }
- }
- return out;
-}
-
-/**
- * gzip压缩base64|压缩率80%+
- * @param str
- * @returns {string}
- */
-function gzip(str) {
- let arr = pako.gzip(str, {
- // to: 'string'
- });
- return uint8ArrayToBase64(arr)
-}
-
-/**
- * gzip解压base64数据
- * @param b64Data
- * @returns {string}
- */
-function ungzip(b64Data) {
- let strData = atob(b64Data);
- const charData = strData.split('').map(function (x) {
- return x.charCodeAt(0);
- });
- const binData = new Uint8Array(charData);
- const data = pako.inflate(binData);
- return Utf8ArrayToStr(data);
-}
-
-/**
- * 字符串按指定编码
- * @param input
- * @param encoding
- * @returns {*}
- */
-function encodeStr(input, encoding) {
- encoding = encoding || 'gbk';
- if (encoding.startsWith('gb')) {
- const strTool = gbkTool();
- input = strTool.encode(input);
- }
- return input
-}
-
-/**
- * 字符串指定解码
- * @param input
- * @param encoding
- * @returns {*}
- */
-function decodeStr(input, encoding) {
- encoding = encoding || 'gbk';
- if (encoding.startsWith('gb')) {
- const strTool = gbkTool();
- input = strTool.decode(input);
- }
- return input
-}
-
-function getCryptoJS() {
- // return request('https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-hiker.js');
- return 'console.log("CryptoJS已装载");'
-}
-
-// 封装的RSA加解密类
-const RSA = {
- decode: function (data, key, option) {
- option = option || {};
- if (typeof (JSEncrypt) === 'function') {
- let chunkSize = option.chunkSize || 117; // 默认分段长度为117
- let privateKey = this.getPrivateKey(key); // 获取私钥
- const decryptor = new JSEncrypt(); //创建解密对象实例
- decryptor.setPrivateKey(privateKey); //设置秘钥
- let uncrypted = '';
- // uncrypted = decryptor.decrypt(data);
- uncrypted = decryptor.decryptUnicodeLong(data);
- return uncrypted;
- } else {
- return false
- }
- },
- encode: function (data, key, option) {
- option = option || {};
- if (typeof (JSEncrypt) === 'function') {
- let chunkSize = option.chunkSize || 117; // 默认分段长度为117
- let publicKey = this.getPublicKey(key); // 获取公钥
- const encryptor = new JSEncrypt();
- encryptor.setPublicKey(publicKey); // 设置公钥
- let encrypted = ''; // 加密结果
- // const textLen = data.length; // 待加密文本长度
- // let offset = 0; // 分段偏移量
- // // 分段加密
- // while (offset < textLen) {
- // let chunk = data.slice(offset, chunkSize); // 提取分段数据
- // let enc = encryptor.encrypt(chunk); // 加密分段数据
- // encrypted += enc; // 连接加密结果
- // offset += chunkSize; // 更新偏移量
- // }
- encrypted = encryptor.encryptUnicodeLong(data);
- return encrypted
- } else {
- return false
- }
- },
- fixKey(key, prefix, endfix) {
- if (!key.includes(prefix)) {
- key = prefix + key;
- }
- if (!key.includes(endfix)) {
- key += endfix
- }
- return key
- },
- getPrivateKey(key) {
- let prefix = '-----BEGIN RSA PRIVATE KEY-----';
- let endfix = '-----END RSA PRIVATE KEY-----';
- return this.fixKey(key, prefix, endfix);
- },
- getPublicKey(key) {
- let prefix = '-----BEGIN PUBLIC KEY-----';
- let endfix = '-----END PUBLIC KEY-----';
- return this.fixKey(key, prefix, endfix);
- }
-};
-
-/**
- * 获取壳子返回的代理地址
- * @returns {string|*}
- */
-function getProxyUrl() {
- if (typeof (getProxy) === 'function') {//判断壳子里有getProxy函数就执行取返回结果。否则取默认的本地
- return getProxy(true)
- } else {
- return 'http://127.0.0.1:9978/proxy?do=js'
- }
-}
-
-/**
- * 根据正则处理原始m3u8里的广告ts片段,自动修复相对链接
- * @param m3u8_text m3u8原始文本,里面是最末级的只含ts片段的。不支持嵌套m3u8链接
- * @param m3u8_url m3u8原始地址
- * @param ad_remove 正则表达式如: reg:/video/adjump(.*?)ts
- * @returns {string|DocumentFragment|*|string}
- */
-function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) {
- if ((!m3u8_text && !m3u8_url) || (!m3u8_text && m3u8_url && !m3u8_url.startsWith('http'))) {
- return ''
- }
- if (!m3u8_text) {
- log('m3u8_url:' + m3u8_url);
- m3u8_text = request(m3u8_url);
- }
- log('len(m3u8_text):' + m3u8_text.length);
- if (!ad_remove) {
- return m3u8_text
- }
- if (ad_remove.startsWith('reg:')) {
- ad_remove = ad_remove.slice(4)
- } else if (ad_remove.startsWith('js:')) {
- ad_remove = ad_remove.slice(3)
- }
- let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf('#EXTINF')).trim();
- let m3u8_body = m3u8_text.slice(m3u8_text.indexOf('#EXTINF'), m3u8_text.indexOf('#EXT-X-ENDLIST')).trim();
- let m3u8_end = m3u8_text.slice(m3u8_text.indexOf('#EXT-X-ENDLIST')).trim();
- let murls = [];
- let m3_body_list = m3u8_body.split('\n');
- let m3_len = m3_body_list.length;
- let i = 0;
- while (i < m3_len) {
- let mi = m3_body_list[i];
- let mi_1 = m3_body_list[i + 1];
- if (mi.startsWith('#EXTINF')) {
- murls.push([mi, mi_1].join('&'));
- i += 2
- } else if (mi.startsWith('#EXT-X-DISCONTINUITY')) {
- let mi_2 = m3_body_list[i + 2];
- murls.push([mi, mi_1, mi_2].join('&'));
- i += 3
- } else {
- break;
- }
- }
- let new_m3u8_body = [];
- for (let murl of murls) {
- if (ad_remove && new RegExp(ad_remove).test(murl)) {
-
- } else {
- let murl_list = murl.split('&');
- if (!murl_list[murl_list.length - 1].startsWith('http') && m3u8_url.startsWith('http')) {
- murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1]);
- }
- murl_list.forEach((it) => {
- new_m3u8_body.push(it);
- });
- }
-
- }
- new_m3u8_body = new_m3u8_body.join('\n').trim();
- m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join('\n').trim();
- return m3u8_text
-}
-
-/**
- * 智能对比去除广告。支持嵌套m3u8。只需要传入播放地址
- * @param m3u8_url m3u8播放地址
- * @param headers 自定义访问m3u8的请求头,可以不传
- * @returns {string}
- */
-function fixAdM3u8Ai(m3u8_url, headers) {
- let ts = new Date().getTime();
- let option = headers ? {headers: headers} : {};
-
- function b(s1, s2) {
- let i = 0;
- while (i < s1.length) {
- if (s1[i] !== s2[i]) {
- break
- }
- i++
- }
- return i;
- }
-
- function reverseString(str) {
- return str.split('').reverse().join('');
- }
-
- //log('播放的地址:' + m3u8_url);
- let m3u8 = request(m3u8_url, option);
- //log('m3u8处理前:' + m3u8);
- m3u8 = m3u8.trim().split('\n').map(it => it.startsWith('#') ? it : urljoin(m3u8_url, it)).join('\n');
- //log('m3u8处理后:============:' + m3u8);
- // 获取嵌套m3u8地址
- m3u8 = m3u8.replace(/\n\n/ig, '\n');//删除多余的换行符
- let last_url = m3u8.split('\n').slice(-1)[0];
- if (last_url.length < 5) {
- last_url = m3u8.split('\n').slice(-2)[0];
- }
-
- if (last_url.includes('.m3u8') && last_url !== m3u8_url) {
- m3u8_url = urljoin2(m3u8_url, last_url);
- log('嵌套的m3u8_url:' + m3u8_url);
- m3u8 = request(m3u8_url, option);
- }
- //log('----处理有广告的地址----');
- let s = m3u8.trim().split('\n').filter(it => it.trim()).join('\n');
- let ss = s.split('\n')
- //找出第一条播放地址
- //let firststr = ss.find(x => !x.startsWith('#'));
- let firststr = '';
- let maxl = 0;//最大相同字符
- let kk = 0;
- let kkk = 2;
- let secondstr = '';
- for (let i = 0; i < ss.length; i++) {
- let s = ss[i];
- if (!s.startsWith("#")) {
- if (kk == 0) firststr = s;
- if (kk == 1) maxl = b(firststr, s);
- if (kk > 1) {
- if (maxl > b(firststr, s)) {
- if (secondstr.length < 5) secondstr = s;
- kkk = kkk + 2;
- } else {
- maxl = b(firststr, s);
- kkk++;
- }
- }
- kk++;
- if (kk >= 20) break;
- }
- }
- if (kkk > 30) firststr = secondstr;
- let firststrlen = firststr.length;
- //log('字符串长度:' + firststrlen);
- let ml = Math.round(ss.length / 2).toString().length;//取数据的长度的位数
- //log('数据条数的长度:' + ml);
- //找出最后一条播放地址
- let maxc = 0;
- let laststr = ss.toReversed().find((x) => {
- if (!x.startsWith('#')) {
- let k = b(reverseString(firststr), reverseString(x));
- maxl = b(firststr, x);
- maxc++;
- if (firststrlen - maxl <= ml + k || maxc > 10) {
- return true
- }
- }
- return false
- });
- log('最后一条切片:' + laststr);
- //log('最小相同字符长度:' + maxl);
- let ad_urls = [];
- for (let i = 0; i < ss.length; i++) {
- let s = ss[i];
- if (!s.startsWith('#')) {
- if (b(firststr, s) < maxl) {
- ad_urls.push(s); // 广告地址加入列表
- ss.splice(i - 1, 2);
- i = i - 2;
- } else {
- ss[i] = urljoin(m3u8_url, s);
- }
- } else {
- ss[i] = s.replace(/URI=\"(.*)\"/, 'URI=\"' + urljoin(m3u8_url, '$1') + '\"');
- }
- }
- log('处理的m3u8地址:' + m3u8_url);
- log('----广告地址----');
- log(ad_urls);
- m3u8 = ss.join('\n');
- //log('处理完成');
- log('处理耗时:' + (new Date().getTime() - ts).toString());
- return m3u8
-}
-
-
-/**
- * 强制正序算法
- * @param lists 待正序列表
- * @param key 正序键
- * @param option 单个元素处理函数
- * @returns {*}
- */
-function forceOrder(lists, key, option) {
- let start = Math.floor(lists.length / 2);
- let end = Math.min(lists.length - 1, start + 1);
- if (start >= end) {
- return lists;
- }
- let first = lists[start];
- let second = lists[end];
- if (key) {
- try {
- first = first[key];
- second = second[key];
- } catch (e) {
- }
- }
- if (option && typeof (option) === 'function') {
- try {
- first = option(first);
- second = option(second);
- } catch (e) {
- }
- }
- first += '';
- second += '';
- // console.log(first,second);
- if (first.match(/(\d+)/) && second.match(/(\d+)/)) {
- let num1 = Number(first.match(/(\d+)/)[1]);
- let num2 = Number(second.match(/(\d+)/)[1]);
- if (num1 > num2) {
- lists.reverse();
- }
- }
- return lists
-}
-
-let VODS = [];// 一级或者搜索需要的数据列表
-let VOD = {};// 二级的单个数据
-let TABS = [];// 二级的自定义线路列表 如: TABS=['道长在线','道长在线2']
-let LISTS = [];// 二级的自定义选集播放列表 如: LISTS=[['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']]
-
-/**
- * 获取链接的query请求转为js的object字典对象
- * @param url
- * @returns {{}}
- */
-function getQuery(url) {
- try {
- if (url.indexOf('?') > -1) {
- url = url.slice(url.indexOf('?') + 1);
- }
- let arr = url.split("#")[0].split("&");
- const resObj = {};
- arr.forEach(item => {
- let arr1 = item.split("=");
- let key = arr1[0];
- let value = arr1.slice(1).join('=');
- resObj[key] = value;
- });
- return resObj;
- } catch (err) {
- log(`getQuery发生错误:${e.message}`)
- return {};
- }
-}
-
-/**
- * url拼接
- * @param fromPath 初始当前页面url
- * @param nowPath 相对当前页面url
- * @returns {*}
- */
-function urljoin(fromPath, nowPath) {
- fromPath = fromPath || '';
- nowPath = nowPath || '';
- return joinUrl(fromPath, nowPath);
- // try {
- // // import Uri from './uri.min.js';
- // // var Uri = require('./uri.min.js');
- // // eval(request('https://cdn.bootcdn.net/ajax/libs/URI.js/1.19.11/URI.min.js'));
- // // let new_uri = URI(nowPath, fromPath);
-
- // let new_uri = Uri(nowPath, fromPath);
- // new_uri = new_uri.toString();
- // // console.log(new_uri);
- // // return fromPath + nowPath
- // return new_uri
- // }
- // catch (e) {
- // console.log('urljoin发生错误:'+e.message);
- // if(nowPath.startsWith('http')){
- // return nowPath
- // }if(nowPath.startsWith('/')){
- // return getHome(fromPath)+nowPath
- // }
- // return fromPath+nowPath
- // }
-}
-
-var urljoin2 = urljoin;
-
-// 内置 pdfh,pdfa,pd
-const defaultParser = {
- pdfh: pdfh,
- pdfa: pdfa,
- pd: pd,
-};
-
-
-/**
- * pdfh原版优化,能取style属性里的图片链接
- * @param html 源码
- * @param parse 解析表达式
- * @returns {string|*}
- */
-function pdfh2(html, parse) {
- let html2 = html;
- try {
- if (typeof (html) !== 'string') {
- html2 = html.rr(html.ele).toString();
- }
- } catch (e) {
- print(`html对象转文本发生了错误:${e.message}`);
- }
- let result = defaultParser.pdfh(html2, parse);
- let option = parse.includes('&&') ? parse.split('&&').slice(-1)[0] : parse.split(' ').slice(-1)[0];
- if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) {
- try {
- result = result.match(/url\((.*?)\)/)[1];
- // 2023/07/28新增 style取内部链接自动去除首尾单双引号
- result = result.replace(/^['|"](.*)['|"]$/, "$1");
- } catch (e) {
- }
- }
- return result
-}
-
-/**
- * pdfa原版优化,可以转换jq的html对象
- * @param html
- * @param parse
- * @returns {*}
- */
-function pdfa2(html, parse) {
- let html2 = html;
- try {
- if (typeof (html) !== 'string') {
- html2 = html.rr(html.ele).toString();
- }
- } catch (e) {
- print(`html对象转文本发生了错误:${e.message}`);
- }
- return defaultParser.pdfa(html2, parse);
-}
-
-/**
- * pd原版方法重写-增加自动urljoin
- * @param html
- * @param parse
- * @param uri
- * @returns {*}
- */
-function pd2(html, parse, uri) {
- let ret = pdfh2(html, parse);
- if (typeof (uri) === 'undefined' || !uri) {
- uri = '';
- }
- if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) {
- if (/http/.test(ret)) {
- ret = ret.slice(ret.indexOf('http'));
- } else {
- ret = urljoin(MY_URL, ret)
- }
- }
- // MY_URL = getItem('MY_URL',MY_URL);
- // console.log(`规则${RKEY}打印MY_URL:${MY_URL},uri:${uri}`);
- return ret
-}
-
-const parseTags = {
- jsp: {
- pdfh: pdfh2,
- pdfa: pdfa2,
- pd: pd2,
- },
- json: {
- pdfh(html, parse) {
- if (!parse || !parse.trim()) {
- return '';
- }
- if (typeof (html) === 'string') {
- // print('jsonpath:pdfh字符串转dict');
- html = JSON.parse(html);
- }
- parse = parse.trim();
- if (!parse.startsWith('$.')) {
- parse = '$.' + parse;
- }
- parse = parse.split('||');
- for (let ps of parse) {
- let ret = cheerio.jp(ps, html);
- if (Array.isArray(ret)) {
- ret = ret[0] || '';
- } else {
- ret = ret || ''
- }
- if (ret && typeof (ret) !== 'string') {
- ret = ret.toString();
- }
- if (ret) {
- return ret
- }
- }
- return '';
- },
- pdfa(html, parse) {
- if (!parse || !parse.trim()) {
- return '';
- }
- if (typeof (html) === 'string') {
- // print('jsonpath:pdfa字符串转dict');
- html = JSON.parse(html);
- }
- parse = parse.trim()
- if (!parse.startsWith('$.')) {
- parse = '$.' + parse;
- }
- let ret = cheerio.jp(parse, html);
- if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) {
- return ret[0] || []
- }
- return ret || []
- },
- pd(html, parse) {
- let ret = parseTags.json.pdfh(html, parse);
- if (ret) {
- return urljoin(MY_URL, ret);
- }
- return ret
- },
- },
- jq: {
- pdfh(html, parse) {
- if (!html || !parse || !parse.trim()) {
- return ''
- }
- parse = parse.trim();
- let result = defaultParser.pdfh(html, parse);
- // print(`pdfh解析${parse}=>${result}`);
- return result;
- },
- pdfa(html, parse) {
- if (!html || !parse || !parse.trim()) {
- return [];
- }
- parse = parse.trim();
- let result = defaultParser.pdfa(html, parse);
- // print(result);
- print(`pdfa解析${parse}=>${result.length}`);
- return result;
- },
- pd(html, parse, base_url) {
- if (!html || !parse || !parse.trim()) {
- return ''
- }
- parse = parse.trim();
- base_url = base_url || MY_URL;
- return defaultParser.pd(html, parse, base_url);
- },
- },
- getParse(p0) {//非js开头的情况自动获取解析标签
- if (p0.startsWith('jsp:')) {
- return this.jsp
- } else if (p0.startsWith('json:')) {
- return this.json
- } else if (p0.startsWith('jq:')) {
- return this.jq
- } else {
- return this.jq
- }
- }
-};
-
-const stringify = JSON.stringify;
-const jsp = parseTags.jsp;
-const jq = parseTags.jq;
-
-/*** 后台需要实现的java方法并注入到js中 ***/
-
-/**
- * 读取本地文件->应用程序目录
- * @param filePath
- * @returns {string}
- */
-function readFile(filePath) {
- filePath = filePath || './uri.min.js';
- var fd = os.open(filePath);
- var buffer = new ArrayBuffer(1024);
- var len = os.read(fd, buffer, 0, 1024);
- console.log(len);
- let text = String.fromCharCode.apply(null, new Uint8Array(buffer));
- console.log(text);
- return text
-}
-
-/**
- * 处理返回的json数据
- * @param html
- * @returns {*}
- */
-function dealJson(html) {
- try {
- // html = html.match(/[\w|\W|\s|\S]*?(\{[\w|\W|\s|\S]*\})/).group[1];
- html = html.trim();
- if (!((html.startsWith('{') && html.endsWith('}')) || (html.startsWith('[') && html.endsWith(']')))) {
- html = '{' + html.match(/.*?\{(.*)\}/m)[1] + '}';
- }
- } catch (e) {
- }
- try {
- html = JSON.parse(html);
- } catch (e) {
- }
- // console.log(typeof(html));
- return html;
-}
-
-/**
- * 验证码识别逻辑,需要java实现(js没有bytes类型,无法调用后端的传递图片二进制获取验证码文本的接口)
- * @type {{api: string, classification: (function(*=): string)}}
- */
-var OcrApi = {
- api: OCR_API,
- classification: function (img) { // img是byte类型,这里不方便搞啊
- let code = '';
- try {
- // let html = request(this.api,{data:{img:img},headers:{'User-Agent':PC_UA},'method':'POST'},true);
- // html = JSON.parse(html);
- // code = html.url||'';
- log('通过drpy_ocr验证码接口过验证...');
- let html = '';
- if (this.api.endsWith('drpy/text')) {
- html = request(this.api, {data: {img: img}, headers: {'User-Agent': PC_UA}, 'method': 'POST'}, true);
- } else {
- html = post(this.api, {body: img});
- }
- code = html || '';
- } catch (e) {
- log(`OCR识别验证码发生错误:${e.message}`)
- }
- return code
- }
-};
-
-/**
- * 验证码识别,暂未实现
- * @param url 验证码图片链接
- * @returns {string} 验证成功后的cookie
- */
-function verifyCode(url) {
- let cnt = 0;
- let host = getHome(url);
- let cookie = '';
- while (cnt < OCR_RETRY) {
- try {
- // let obj = {headers:headers,timeout:timeout};
- let yzm_url = `${host}/index.php/verify/index.html`;
- console.log(`验证码链接:${yzm_url}`);
- let hhtml = request(yzm_url, {withHeaders: true, toBase64: true}, true);
- let json = JSON.parse(hhtml);
- if (!cookie) {
- // print(json);
- let setCk = Object.keys(json).find(it => it.toLowerCase() === 'set-cookie');
- // cookie = json['set-cookie']?json['set-cookie'].split(';')[0]:'';
- cookie = setCk ? json[setCk].split(';')[0] : '';
- }
- // console.log(hhtml);
- console.log('cookie:' + cookie);
- let img = json.body;
- // console.log(img);
- let code = OcrApi.classification(img);
- console.log(`第${cnt + 1}次验证码识别结果:${code}`);
- let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`;
- console.log(submit_url);
- let html = request(submit_url, {headers: {Cookie: cookie}, 'method': 'POST'});
- // console.log(html);
- html = JSON.parse(html);
- if (html.msg === 'ok') {
- console.log(`第${cnt + 1}次验证码提交成功`);
- return cookie // 需要返回cookie
- } else if (html.msg !== 'ok' && cnt + 1 >= OCR_RETRY) {
- cookie = ''; // 需要清空返回cookie
- }
- } catch (e) {
- console.log(`第${cnt + 1}次验证码提交失败:${e.message}`);
- if (cnt + 1 >= OCR_RETRY) {
- cookie = '';
- }
- }
- cnt += 1
- }
- return cookie
-}
-
-/**
- * 存在数据库配置表里, key字段对应值value,没有就新增,有就更新,调用此方法会清除key对应的内存缓存
- * @param k 键
- * @param v 值
- */
-function setItem(k, v) {
- local.set(RKEY, k, v);
- console.log(`规则${RKEY}设置${k} => ${v}`)
-}
-
-/**
- * 获取数据库配置表对应的key字段的value,没有这个key就返回value默认传参.需要有缓存,第一次获取后会存在内存里
- * @param k 键
- * @param v 值
- * @returns {*}
- */
-function getItem(k, v) {
- return local.get(RKEY, k) || v;
-}
-
-/**
- * 删除数据库key对应的一条数据,并清除此key对应的内存缓存
- * @param k
- */
-function clearItem(k) {
- local.delete(RKEY, k);
-}
-
-/*** js自封装的方法 ***/
-
-/**
- * 获取链接的host(带http协议的完整链接)
- * @param url 任意一个正常完整的Url,自动提取根
- * @returns {string}
- */
-function getHome(url) {
- if (!url) {
- return ''
- }
- let tmp = url.split('//');
- url = tmp[0] + '//' + tmp[1].split('/')[0];
- try {
- url = decodeURIComponent(url);
- } catch (e) {
- }
- return url
-}
-
-/**
- * get参数编译链接,类似python params字典自动拼接
- * @param url 访问链接
- * @param obj 参数字典
- * @returns {*}
- */
-function buildUrl(url, obj) {
- obj = obj || {};
- if (url.indexOf('?') < 0) {
- url += '?'
- }
- let param_list = [];
- let keys = Object.keys(obj);
- keys.forEach(it => {
- param_list.push(it + '=' + obj[it])
- });
- let prs = param_list.join('&');
- if (keys.length > 0 && !url.endsWith('?')) {
- url += '&'
- }
- url += prs;
- return url
-}
-
-/**
- * 远程依赖执行函数
- * @param url 远程js地址
- */
-function $require(url) {
- eval(request(url));
-}
-
-/**
- * 将obj所有key变小写
- * @param obj
- */
-function keysToLowerCase(obj) {
- return Object.keys(obj).reduce((result, key) => {
- const newKey = key.toLowerCase();
- result[newKey] = obj[key]; // 如果值也是对象,可以递归调用本函数
- return result;
- }, {});
-}
-
-/**
- * 海阔网页请求函数完整封装
- * @param url 请求链接
- * @param obj 请求对象 {headers:{},method:'',timeout:5000,body:'',withHeaders:false}
- * @param ocr_flag 标识此flag是用于请求ocr识别的,自动过滤content-type指定编码
- * @returns {string|string|DocumentFragment|*}
- */
-function request(url, obj, ocr_flag) {
- ocr_flag = ocr_flag || false;
- if (typeof (obj) === 'undefined' || !obj || obj === {}) {
- if (!fetch_params || !fetch_params.headers) {
- let headers = {
- 'User-Agent': MOBILE_UA,
- };
- if (rule.headers) {
- Object.assign(headers, rule.headers);
- }
- if (!fetch_params) {
- fetch_params = {};
- }
- fetch_params.headers = headers;
- }
- if (!fetch_params.headers.Referer) {
- fetch_params.headers.Referer = getHome(url)
- }
- obj = fetch_params;
- } else {
- let headers = obj.headers || {};
- let keys = Object.keys(headers).map(it => it.toLowerCase());
- if (!keys.includes('user-agent')) {
- headers['User-Agent'] = MOBILE_UA;
- // fetch_params 里存在ua则优先,否则才默认手机UA
- if (typeof (fetch_params) === 'object' && fetch_params && fetch_params.headers) {
- let fetch_headers = keysToLowerCase(fetch_params.headers);
- if (fetch_headers['user-agent']) {
- headers['User-Agent'] = fetch_headers['user-agent'];
- }
- }
- }
- if (!keys.includes('referer')) {
- headers['Referer'] = getHome(url);
- }
- obj.headers = headers;
- }
- if (rule.encoding && rule.encoding !== 'utf-8' && !ocr_flag) {
- if (!obj.headers.hasOwnProperty('Content-Type') && !obj.headers.hasOwnProperty('content-type')) { // 手动指定了就不管
- obj.headers["Content-Type"] = 'text/html; charset=' + rule.encoding;
- }
- }
- if (typeof (obj.body) != 'undefined' && obj.body && typeof (obj.body) === 'string') {
- // let data = {};
- // obj.body.split('&').forEach(it=>{
- // data[it.split('=')[0]] = it.split('=')[1]
- // });
- // obj.data = data;
- // delete obj.body
-
- // 传body加 "Content-Type":"application/x-www-form-urlencoded;" 即可post form
- if (!obj.headers.hasOwnProperty('Content-Type') && !obj.headers.hasOwnProperty('content-type')) { // 手动指定了就不管
- obj.headers["Content-Type"] = 'application/x-www-form-urlencoded; charset=' + rule.encoding;
- }
- } else if (typeof (obj.body) != 'undefined' && obj.body && typeof (obj.body) === 'object') {
- obj.data = obj.body;
- delete obj.body
- }
- if (!url) {
- return obj.withHeaders ? '{}' : ''
- }
- if (obj.toBase64) { // 返回base64,用于请求图片
- obj.buffer = 2;
- delete obj.toBase64
- }
- if (obj.redirect === false) {
- obj.redirect = 0;
- }
- console.log(JSON.stringify(obj.headers));
- // console.log('request:'+url+' obj:'+JSON.stringify(obj));
- console.log('request:' + url + `|method:${obj.method || 'GET'}|body:${obj.body || ''}`);
- let res = req(url, obj);
- let html = res.content || '';
- // console.log(html);
- if (obj.withHeaders) {
- let htmlWithHeaders = res.headers;
- htmlWithHeaders.body = html;
- return JSON.stringify(htmlWithHeaders);
- } else {
- return html
- }
-}
-
-/**
- * 快捷post请求
- * @param url 地址
- * @param obj 对象
- * @returns {string|DocumentFragment|*}
- */
-function post(url, obj) {
- obj = obj || {};
- obj.method = 'POST';
- return request(url, obj);
-}
-
-/**
- * 快捷获取特殊地址cookie|一般用作搜索过验证
- * 用法 let {cookie,html} = reqCookie(url);
- * @param url 能返回cookie的地址
- * @param obj 常规请求参数
- * @param all_cookie 返回全部cookie.默认false只返回第一个,一般是PhpSessionId
- * @returns {{cookie: string, html: (*|string|DocumentFragment)}}
- */
-function reqCookie(url, obj, all_cookie) {
- obj = obj || {};
- obj.withHeaders = true;
- all_cookie = all_cookie || false;
- let html = request(url, obj);
- let json = JSON.parse(html);
- let setCk = Object.keys(json).find(it => it.toLowerCase() === 'set-cookie');
- let cookie = setCk ? json[setCk] : '';
- if (Array.isArray(cookie)) {
- cookie = cookie.join(';')
- }
- if (!all_cookie) {
- cookie = cookie.split(';')[0];
- }
- html = json.body;
- return {
- cookie,
- html
- }
-}
-
-fetch = request;
-print = function (data) {
- data = data || '';
- if (typeof (data) == 'object' && Object.keys(data).length > 0) {
- try {
- data = JSON.stringify(data);
- console.log(data);
- } catch (e) {
- // console.log('print:'+e.message);
- console.log(typeof (data) + ':' + data.length);
- return
- }
- } else if (typeof (data) == 'object' && Object.keys(data).length < 1) {
- console.log('null object');
- } else {
- console.log(data);
- }
-}
-log = print;
-
-/**
- * 检查宝塔验证并自动跳过获取正确源码
- * @param html 之前获取的html
- * @param url 之前的来源url
- * @param obj 来源obj
- * @returns {string|DocumentFragment|*}
- */
-function checkHtml(html, url, obj) {
- if (/\?btwaf=/.test(html)) {
- let btwaf = html.match(/btwaf(.*?)"/)[1];
- url = url.split('#')[0] + '?btwaf' + btwaf;
- print('宝塔验证访问链接:' + url);
- html = request(url, obj);
- }
- return html
-}
-
-/**
- * 带一次宝塔验证的源码获取
- * @param url 请求链接
- * @param obj 请求参数
- * @returns {string|DocumentFragment}
- */
-function getCode(url, obj) {
- let html = request(url, obj);
- html = checkHtml(html, url, obj);
- return html
-}
-
-/**
- * 源rule专用的请求方法,自动注入cookie
- * @param url 请求链接
- * @returns {string|DocumentFragment}
- */
-function getHtml(url) {
- let obj = {};
- if (rule.headers) {
- obj.headers = rule.headers;
- }
- let cookie = getItem(RULE_CK, '');
- if (cookie) {
- // log('有cookie:'+cookie);
- if (obj.headers && !Object.keys(obj.headers).map(it => it.toLowerCase()).includes('cookie')) {
- log('历史无cookie,新增过验证后的cookie');
- obj.headers['Cookie'] = cookie;
- } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) {
- obj.headers['Cookie'] = cookie;
- log('历史有小写过期的cookie,更新过验证后的cookie');
- } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) {
- obj.headers['Cookie'] = cookie;
- log('历史有大写过期的cookie,更新过验证后的cookie');
- } else if (!obj.headers) {
- obj.headers = {Cookie: cookie};
- log('历史无headers,更新过验证后的含cookie的headers');
- }
- }
- let html = getCode(url, obj);
- return html
-}
-
-/**
- * 首页分类解析,筛选暂未实现
- * @param homeObj 首页传参对象
- * @returns {string}
- */
-function homeParse(homeObj) {
- fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let classes = [];
- if (homeObj.class_name && homeObj.class_url) {
- let names = homeObj.class_name.split('&');
- let urls = homeObj.class_url.split('&');
- let cnt = Math.min(names.length, urls.length);
- for (let i = 0; i < cnt; i++) {
- classes.push({
- 'type_id': urls[i],
- 'type_name': names[i]
- });
- }
- }
-
- if (homeObj.class_parse) {
- if (homeObj.class_parse.startsWith('js:')) {
- var input = homeObj.MY_URL;
- try {
- eval(homeObj.class_parse.replace('js:', ''));
- if (Array.isArray(input)) {
- classes = input;
- }
- } catch (e) {
- log(`通过js动态获取分类发生了错误:${e.message}`);
- }
- } else {
- let p = homeObj.class_parse.split(';');
- let p0 = p[0];
- let _ps = parseTags.getParse(p0);
- let is_json = p0.startsWith('json:');
- _pdfa = _ps.pdfa;
- _pdfh = _ps.pdfh;
- _pd = _ps.pd;
- MY_URL = rule.url;
- if (is_json) {
- try {
- let cms_cate_url = homeObj.MY_URL.replace('ac=detail', 'ac=list');
- let html = homeObj.home_html || getHtml(cms_cate_url);
- if (html) {
- if (cms_cate_url === homeObj.MY_URL) {
- homeHtmlCache = html;
- }
- let list = _pdfa(html, p0.replace('json:', ''));
- if (list && list.length > 0) {
- classes = list;
- }
- }
- } catch (e) {
- console.log(e.message);
- }
- } else if (p.length >= 3 && !is_json) { // 可以不写正则
- try {
- let html = homeObj.home_html || getHtml(homeObj.MY_URL);
- if (html) {
- homeHtmlCache = html;
- let list = _pdfa(html, p0);
- if (list && list.length > 0) {
- list.forEach((it, idex) => {
- try {
- let name = _pdfh(it, p[1]);
- if (homeObj.cate_exclude && (new RegExp(homeObj.cate_exclude).test(name))) {
- return;
- }
- // let url = pdfh(it, p[2]);
- let url = _pd(it, p[2]);
- if (p.length > 3 && p[3] && !homeObj.home_html) {
- let exp = new RegExp(p[3]);
- url = url.match(exp)[1];
- }
-
- classes.push({
- 'type_id': url.trim(),
- 'type_name': name.trim()
- });
- } catch (e) {
- console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`);
- }
- });
- }
- }
- } catch (e) {
- console.log(e.message);
- }
-
- }
- }
- }
- // 排除分类
- classes = classes.filter(it => !homeObj.cate_exclude || !(new RegExp(homeObj.cate_exclude).test(it.type_name)));
- let resp = {
- 'class': classes
- };
- if (homeObj.filter) {
- resp.filters = homeObj.filter;
- }
- console.log(JSON.stringify(resp));
- return JSON.stringify(resp);
-
-}
-
-/**
- * 推荐和搜索单字段继承一级
- * @param p 推荐或搜索的解析分割;列表
- * @param pn 自身列表序号
- * @param pp 一级解析分割;列表
- * @param ppn 继承一级序号
- * @returns {*}
- */
-function getPP(p, pn, pp, ppn) {
- try {
- let ps = p[pn] === '*' && pp.length > ppn ? pp[ppn] : p[pn]
- return ps
- } catch (e) {
- return ''
- }
-}
-
-/**
- * 首页推荐列表解析
- * @param homeVodObj
- * @returns {string}
- */
-function homeVodParse(homeVodObj) {
- fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let d = [];
- MY_URL = homeVodObj.homeUrl;
- // setItem('MY_URL',MY_URL);
- console.log(MY_URL);
- let t1 = (new Date()).getTime();
- let p = homeVodObj.推荐;
- print('p:' + p);
- if (p === '*' && rule.一级) {
- p = rule.一级;
- homeVodObj.double = false;
- }
- if (!p || typeof (p) !== 'string') {
- return '{}'
- }
- p = p.trim();
- let pp = rule.一级 ? rule.一级.split(';') : [];
- if (p.startsWith('js:')) {
- const TYPE = 'home';
- var input = MY_URL;
- HOST = rule.host;
- eval(p.replace('js:', ''));
- d = VODS;
- } else {
- p = p.split(';');
- if (!homeVodObj.double && p.length < 5) {
- return '{}'
- } else if (homeVodObj.double && p.length < 6) {
- return '{}'
- }
- let p0 = getPP(p, 0, pp, 0)
- let _ps = parseTags.getParse(p0);
- _pdfa = _ps.pdfa;
- _pdfh = _ps.pdfh;
- _pd = _ps.pd;
- let is_json = p0.startsWith('json:');
- p0 = p0.replace(/^(jsp:|json:|jq:)/, '');
- // print(p[0]);
- let html = homeHtmlCache || getHtml(MY_URL);
- homeHtmlCache = undefined;
- if (is_json) {
- // print('是json,开始处理');
- html = dealJson(html);
- }
- try {
- console.log('double:' + homeVodObj.double);
- if (homeVodObj.double) {
- let items = _pdfa(html, p0);
- // console.log(items.length);
- let p1 = getPP(p, 1, pp, 0);
- let p2 = getPP(p, 2, pp, 1);
- let p3 = getPP(p, 3, pp, 2);
- let p4 = getPP(p, 4, pp, 3);
- let p5 = getPP(p, 5, pp, 4);
- let p6 = getPP(p, 6, pp, 5);
- for (let item of items) {
- // console.log(p[1]);
- let items2 = _pdfa(item, p1);
- // console.log(items2.length);
- for (let item2 of items2) {
- try {
- let title = _pdfh(item2, p2);
- let img = '';
- try {
- img = _pd(item2, p3);
- } catch (e) {
- }
- let desc = '';
- try {
- desc = _pdfh(item2, p4);
- } catch (e) {
- }
- let links = [];
- for (let _p5 of p5.split('+')) {
- let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5);
- links.push(link);
- }
- let content;
- if (p.length > 6 && p[6]) {
- content = _pdfh(item2, p6);
- } else {
- content = '';
- }
- let vid = links.join('$');
- if (rule.二级 === '*') {
- vid = vid + '@@' + title + '@@' + img;
- }
- let vod = {
- vod_name: title,
- vod_pic: img,
- vod_remarks: desc,
- vod_content: content,
- vod_id: vid
- };
- // print(vod);
- d.push(vod);
- } catch (e) {
- console.log(`首页列表双层定位处理发生错误:${e.message}`);
- }
-
- }
-
-
- }
-
-
- } else {
- let items = _pdfa(html, p0);
- let p1 = getPP(p, 1, pp, 1);
- let p2 = getPP(p, 2, pp, 2);
- let p3 = getPP(p, 3, pp, 3);
- let p4 = getPP(p, 4, pp, 4);
- let p5 = getPP(p, 5, pp, 5);
-
- for (let item of items) {
- try {
- let title = _pdfh(item, p1);
- let img = '';
- try {
- img = _pd(item, p2, MY_URL);
- } catch (e) {
- }
- let desc = '';
- try {
- desc = _pdfh(item, p3);
- } catch (e) {
- }
- let links = [];
- for (let _p5 of p4.split('+')) {
- let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5);
- links.push(link);
- }
- let content;
- if (p.length > 5 && p[5]) {
- content = _pdfh(item, p5);
- } else {
- content = ''
- }
- let vid = links.join('$');
- if (rule.二级 === '*') {
- vid = vid + '@@' + title + '@@' + img;
- }
- let vod = {
- vod_name: title,
- vod_pic: img,
- vod_remarks: desc,
- vod_content: content,
- vod_id: vid
- };
- d.push(vod);
-
- } catch (e) {
- console.log(`首页列表单层定位处理发生错误:${e.message}`);
- }
-
- }
-
- }
-
- } catch (e) {
-
- }
- }
- let t2 = (new Date()).getTime();
- console.log('加载首页推荐耗时:' + (t2 - t1) + '毫秒');
- // console.log(JSON.stringify(d));
- if (rule.图片替换) {
- if (rule.图片替换.startsWith('js:')) {
- d.forEach(it => {
- try {
- var input = it.vod_pic;
- eval(rule.图片替换.trim().replace('js:', ''));
- it.vod_pic = input;
- } catch (e) {
- log(`图片:${it.vod_pic}替换错误:${e.message}`);
- }
- });
- } else if (rule.图片替换.includes('=>')) {
- let replace_from = rule.图片替换.split('=>')[0];
- let replace_to = rule.图片替换.split('=>')[1];
- d.forEach(it => {
- if (it.vod_pic && it.vod_pic.startsWith('http')) {
- it.vod_pic = it.vod_pic.replace(replace_from, replace_to);
- }
- });
- }
- }
- if (rule.图片来源) {
- d.forEach(it => {
- if (it.vod_pic && it.vod_pic.startsWith('http')) {
- it.vod_pic = it.vod_pic + rule.图片来源;
- }
- });
- }
- if (d.length > 0) {
- print(d.slice(0, 2));
- }
- return JSON.stringify({
- list: d
- })
-}
-
-/**
- * 一级分类页数据解析
- * @param cateObj
- * @returns {string}
- */
-function categoryParse(cateObj) {
- fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let p = cateObj.一级;
- if (!p || typeof (p) !== 'string') {
- return '{}'
- }
- let d = [];
- // let url = cateObj.url.replaceAll('fyclass', cateObj.tid).replaceAll('fypage', cateObj.pg);
- let url = cateObj.url.replaceAll('fyclass', cateObj.tid);
- if (cateObj.pg === 1 && url.includes('[') && url.includes(']')) {
- url = url.split('[')[1].split(']')[0];
- } else if (cateObj.pg > 1 && url.includes('[') && url.includes(']')) {
- url = url.split('[')[0];
- }
- if (rule.filter_url) {
- if (!/fyfilter/.test(url)) {
- if (!url.endsWith('&') && !rule.filter_url.startsWith('&')) {
- url += '&'
- }
- url += rule.filter_url;
- } else {
- url = url.replace('fyfilter', rule.filter_url);
- }
- // filter_url支持fyclass
- url = url.replaceAll('fyclass', cateObj.tid);
- // console.log('filter:'+cateObj.filter);
- let fl = cateObj.filter ? cateObj.extend : {};
- // 自动合并 不同分类对应的默认筛选
- if (rule.filter_def && typeof (rule.filter_def) === 'object') {
- try {
- if (Object.keys(rule.filter_def).length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) {
- let self_fl_def = rule.filter_def[cateObj.tid];
- if (self_fl_def && typeof (self_fl_def) === 'object') {
- // 引用传递转值传递,避免污染self变量
- let fl_def = JSON.parse(JSON.stringify(self_fl_def));
- fl = Object.assign(fl_def, fl);
- }
- }
- } catch (e) {
- print(`合并不同分类对应的默认筛选出错:${e.message}`);
- }
- }
- let new_url;
- new_url = cheerio.jinja2(url, {fl: fl, fyclass: cateObj.tid});
- // console.log('jinjia2执行后的new_url类型为:'+typeof(new_url));
- url = new_url;
- }
- if (/fypage/.test(url)) {
- if (url.includes('(') && url.includes(')')) {
- let url_rep = url.match(/.*?\((.*)\)/)[1];
- // console.log(url_rep);
- let cnt_page = url_rep.replaceAll('fypage', cateObj.pg);
- // console.log(cnt_page);
- let cnt_pg = eval(cnt_page);
- // console.log(cnt_pg);
- url = url.replaceAll(url_rep, cnt_pg).replaceAll('(', '').replaceAll(')', '');
- } else {
- url = url.replaceAll('fypage', cateObj.pg);
- }
- }
-
- MY_URL = url;
- // setItem('MY_URL',MY_URL);
- console.log(MY_URL);
- p = p.trim();
- const MY_CATE = cateObj.tid;
- if (p.startsWith('js:')) {
- var MY_FL = cateObj.extend;
- const TYPE = 'cate';
- var input = MY_URL;
- const MY_PAGE = cateObj.pg;
- var desc = '';
- eval(p.trim().replace('js:', ''));
- d = VODS;
- } else {
- p = p.split(';');
- if (p.length < 5) {
- return '{}'
- }
- let _ps = parseTags.getParse(p[0]);
- _pdfa = _ps.pdfa;
- _pdfh = _ps.pdfh;
- _pd = _ps.pd;
- let is_json = p[0].startsWith('json:');
- p[0] = p[0].replace(/^(jsp:|json:|jq:)/, '');
- try {
- let html = getHtml(MY_URL);
- if (html) {
- if (is_json) {
- html = dealJson(html);
- }
- let list = _pdfa(html, p[0]);
- list.forEach(it => {
- let links = p[4].split('+').map(p4 => {
- return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4);
- });
- let link = links.join('$');
- let vod_id = rule.detailUrl ? MY_CATE + '$' + link : link;
-
- let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g, '').trim();
- let vod_pic = _pd(it, p[2], MY_URL);
-
- if (rule.二级 === '*') {
- vod_id = vod_id + '@@' + vod_name + '@@' + vod_pic;
- }
- d.push({
- 'vod_id': vod_id,
- 'vod_name': vod_name,
- 'vod_pic': vod_pic,
- 'vod_remarks': _pdfh(it, p[3]).replace(/\n|\t/g, '').trim(),
- });
- });
- }
- } catch (e) {
- console.log(e.message);
- }
- }
- if (rule.图片替换) {
- if (rule.图片替换.startsWith('js:')) {
- d.forEach(it => {
- try {
- var input = it.vod_pic;
- eval(rule.图片替换.trim().replace('js:', ''));
- it.vod_pic = input;
- } catch (e) {
- log(`图片:${it.vod_pic}替换错误:${e.message}`);
- }
- });
- } else if (rule.图片替换.includes('=>')) {
- let replace_from = rule.图片替换.split('=>')[0];
- let replace_to = rule.图片替换.split('=>')[1];
- d.forEach(it => {
- if (it.vod_pic && it.vod_pic.startsWith('http')) {
- it.vod_pic = it.vod_pic.replace(replace_from, replace_to);
- }
- });
- }
- }
- if (rule.图片来源) {
- d.forEach(it => {
- if (it.vod_pic && it.vod_pic.startsWith('http')) {
- it.vod_pic = it.vod_pic + rule.图片来源;
- }
- });
- }
- // print(d);
- if (d.length > 0) {
- print(d.slice(0, 2));
- }
- let pagecount = 0;
- if (rule.pagecount && typeof (rule.pagecount) === 'object' && rule.pagecount.hasOwnProperty(MY_CATE)) {
- print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);
- pagecount = parseInt(rule.pagecount[MY_CATE]);
- }
- let nodata = {
- list: [{
- vod_name: '无数据,防无限请求',
- vod_id: 'no_data',
- vod_remarks: '不要点,会崩的',
- vod_pic: 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg'
- }],
- total: 1, pagecount: 1, page: 1, limit: 1
- };
- let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({
- 'page': parseInt(cateObj.pg),
- 'pagecount': pagecount || 999,
- 'limit': 20,
- 'total': 999,
- 'list': d,
- });
- // print(vod);
- return vod
-}
-
-/**
- * 搜索列表数据解析
- * @param searchObj
- * @returns {string}
- */
-function searchParse(searchObj) {
- fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let d = [];
- if (!searchObj.searchUrl) {
- return '{}'
- }
- let p = searchObj.搜索 === '*' && rule.一级 ? rule.一级 : searchObj.搜索;
- if (!p || typeof (p) !== 'string') {
- return '{}'
- }
- p = p.trim();
- let pp = rule.一级 ? rule.一级.split(';') : [];
- let url = searchObj.searchUrl.replaceAll('**', searchObj.wd);
- if (searchObj.pg === 1 && url.includes('[') && url.includes(']') && !url.includes('#')) {
- url = url.split('[')[1].split(']')[0];
- } else if (searchObj.pg > 1 && url.includes('[') && url.includes(']') && !url.includes('#')) {
- url = url.split('[')[0];
- }
-
- if (/fypage/.test(url)) {
- if (url.includes('(') && url.includes(')')) {
- let url_rep = url.match(/.*?\((.*)\)/)[1];
- // console.log(url_rep);
- let cnt_page = url_rep.replaceAll('fypage', searchObj.pg);
- // console.log(cnt_page);
- let cnt_pg = eval(cnt_page);
- // console.log(cnt_pg);
- url = url.replaceAll(url_rep, cnt_pg).replaceAll('(', '').replaceAll(')', '');
- } else {
- url = url.replaceAll('fypage', searchObj.pg);
- }
- }
-
- MY_URL = url;
- console.log(MY_URL);
- // log(searchObj.搜索);
- // setItem('MY_URL',MY_URL);
- if (p.startsWith('js:')) {
- const TYPE = 'search';
- const MY_PAGE = searchObj.pg;
- const KEY = searchObj.wd;
- var input = MY_URL;
- var detailUrl = rule.detailUrl || '';
- eval(p.trim().replace('js:', ''));
- d = VODS;
- } else {
- p = p.split(';');
- if (p.length < 5) {
- return '{}'
- }
- let p0 = getPP(p, 0, pp, 0);
- let _ps = parseTags.getParse(p0);
- _pdfa = _ps.pdfa;
- _pdfh = _ps.pdfh;
- _pd = _ps.pd;
- let is_json = p0.startsWith('json:');
- p0 = p0.replace(/^(jsp:|json:|jq:)/, '');
- // print('1381 p0:'+p0);
- try {
- let req_method = MY_URL.split(';').length > 1 ? MY_URL.split(';')[1].toLowerCase() : 'get';
- let html;
- if (req_method === 'post') {
- let rurls = MY_URL.split(';')[0].split('#')
- let rurl = rurls[0]
- let params = rurls.length > 1 ? rurls[1] : '';
- print(`post=》rurl:${rurl},params:${params}`);
- // let new_dict = {};
- // let new_tmp = params.split('&');
- // new_tmp.forEach(i=>{
- // new_dict[i.split('=')[0]] = i.split('=')[1];
- // });
- // html = post(rurl,{body:new_dict});
- let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let postData = {body: params};
- Object.assign(_fetch_params, postData);
- html = post(rurl, _fetch_params);
- } else if (req_method === 'postjson') {
- let rurls = MY_URL.split(';')[0].split('#')
- let rurl = rurls[0]
- let params = rurls.length > 1 ? rurls[1] : '';
- print(`postjson-》rurl:${rurl},params:${params}`);
- try {
- params = JSON.parse(params);
- } catch (e) {
- params = '{}'
- }
- let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let postData = {body: params};
- Object.assign(_fetch_params, postData);
- html = post(rurl, _fetch_params);
- } else {
- html = getHtml(MY_URL);
- }
- if (html) {
- if (/系统安全验证|输入验证码/.test(html)) {
- let cookie = verifyCode(MY_URL);
- if (cookie) {
- console.log(`本次成功过验证,cookie:${cookie}`);
- setItem(RULE_CK, cookie);
- } else {
- console.log(`本次自动过搜索验证失败,cookie:${cookie}`);
- }
- // obj.headers['Cookie'] = cookie;
- html = getHtml(MY_URL);
- }
- if (!html.includes(searchObj.wd)) {
- console.log('搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码');
- console.log(html);
- }
- if (is_json) {
- // console.log(html);
- html = dealJson(html);
- // console.log(JSON.stringify(html));
- }
- // console.log(html);
- let list = _pdfa(html, p0);
- // print(list.length);
- // print(list);
- let p1 = getPP(p, 1, pp, 1);
- let p2 = getPP(p, 2, pp, 2);
- let p3 = getPP(p, 3, pp, 3);
- let p4 = getPP(p, 4, pp, 4);
- let p5 = getPP(p, 5, pp, 5);
- list.forEach(it => {
- let links = p4.split('+').map(_p4 => {
- return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4)
- });
- let link = links.join('$');
- let content;
- if (p.length > 5 && p[5]) {
- content = _pdfh(it, p5);
- } else {
- content = '';
- }
- let vod_id = link;
- let vod_name = _pdfh(it, p1).replace(/\n|\t/g, '').trim();
- let vod_pic = _pd(it, p2, MY_URL);
- if (rule.二级 === '*') {
- vod_id = vod_id + '@@' + vod_name + '@@' + vod_pic;
- }
- let ob = {
- 'vod_id': vod_id,
- 'vod_name': vod_name,
- 'vod_pic': vod_pic,
- 'vod_remarks': _pdfh(it, p3).replace(/\n|\t/g, '').trim(),
- 'vod_content': content.replace(/\n|\t/g, '').trim(),
- };
- d.push(ob);
- });
-
- }
- } catch (e) {
- print(`搜索发生错误:${e.message}`);
- return '{}'
- }
- }
- if (rule.图片替换) {
- if (rule.图片替换.startsWith('js:')) {
- d.forEach(it => {
- try {
- var input = it.vod_pic;
- eval(rule.图片替换.trim().replace('js:', ''));
- it.vod_pic = input;
- } catch (e) {
- log(`图片:${it.vod_pic}替换错误:${e.message}`);
- }
- });
- } else if (rule.图片替换.includes('=>')) {
- let replace_from = rule.图片替换.split('=>')[0];
- let replace_to = rule.图片替换.split('=>')[1];
- d.forEach(it => {
- if (it.vod_pic && it.vod_pic.startsWith('http')) {
- it.vod_pic = it.vod_pic.replace(replace_from, replace_to);
- }
- });
- }
- }
- if (rule.图片来源) {
- d.forEach(it => {
- if (it.vod_pic && it.vod_pic.startsWith('http')) {
- it.vod_pic = it.vod_pic + rule.图片来源;
- }
- });
- }
- // print(d);
- return JSON.stringify({
- 'page': parseInt(searchObj.pg),
- 'pagecount': 10,
- 'limit': 20,
- 'total': 100,
- 'list': d,
- });
-}
-
-/**
- * 二级详情页数据解析
- * @param detailObj
- * @returns {string}
- */
-function detailParse(detailObj) {
- let t1 = (new Date()).getTime();
- fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- let orId = detailObj.orId;
- let vod_name = '片名';
- let vod_pic = '';
- let vod_id = orId;
- if (rule.二级 === '*') {
- // vod_id = orId.split('@@')[0]; // 千万不能分割
- let extra = orId.split('@@');
- vod_name = extra.length > 1 ? extra[1] : vod_name;
- vod_pic = extra.length > 2 ? extra[2] : vod_pic;
- }
- // print(vod_pic);
- let vod = {
- vod_id: vod_id, //"id",
- vod_name: vod_name,
- vod_pic: vod_pic,
- type_name: "类型",
- vod_year: "年份",
- vod_area: "地区",
- vod_remarks: "更新信息",
- vod_actor: "主演",
- vod_director: "导演",
- vod_content: "简介"
- };
- let p = detailObj.二级;
- let url = detailObj.url;
- let detailUrl = detailObj.detailUrl;
- let fyclass = detailObj.fyclass;
- let tab_exclude = detailObj.tab_exclude;
- let html = detailObj.html || '';
- MY_URL = url;
- if (detailObj.二级访问前) {
- try {
- print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);
- eval(detailObj.二级访问前.trim().replace('js:', ''));
- } catch (e) {
- print(`二级访问前执行代码出现错误:${e.message}`)
- }
- }
- // console.log(MY_URL);
- // setItem('MY_URL',MY_URL);
- if (p === '*') {
- vod.vod_play_from = '道长在线';
- vod.vod_remarks = detailUrl;
- vod.vod_actor = '没有二级,只有一级链接直接嗅探播放';
- vod.vod_content = MY_URL;
- vod.vod_play_url = '嗅探播放$' + MY_URL.split('@@')[0];
- } else if (typeof (p) === 'string' && p.trim().startsWith('js:')) {
- const TYPE = 'detail';
- var input = MY_URL;
- var play_url = '';
- eval(p.trim().replace('js:', ''));
- vod = VOD;
- console.log(JSON.stringify(vod));
- } else if (p && typeof (p) === 'object') {
- let tt1 = (new Date()).getTime();
- if (!html) {
- html = getHtml(MY_URL);
- }
- print(`二级${MY_URL}仅获取源码耗时:${(new Date()).getTime() - tt1}毫秒`);
- let _ps;
- if (p.is_json) {
- print('二级是json');
- _ps = parseTags.json;
- html = dealJson(html);
- } else if (p.is_jsp) {
- print('二级是jsp');
- _ps = parseTags.jsp;
- } else if (p.is_jq) {
- print('二级是jq');
- _ps = parseTags.jq;
- } else {
- print('二级默认jq');
- _ps = parseTags.jq;
- // print('二级默认jsp');
- // _ps = parseTags.jsp;
- }
- let tt2 = (new Date()).getTime();
- print(`二级${MY_URL}获取并装载源码耗时:${tt2 - tt1}毫秒`);
- _pdfa = _ps.pdfa;
- _pdfh = _ps.pdfh;
- _pd = _ps.pd;
- if (p.title) {
- let p1 = p.title.split(';');
- vod.vod_name = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim();
- let type_name = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, '').replace(/ /g, '').trim() : '';
- vod.type_name = type_name || vod.type_name;
- }
- if (p.desc) {
- try {
- let p1 = p.desc.split(';');
- vod.vod_remarks = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim();
- vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, '').trim() : '';
- vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]).replace(/\n|\t/g, '').trim() : '';
- // vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replaceAll('\n', ' ').trim():'';
- vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replace(/\n|\t/g, '').trim() : '';
- vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]).replace(/\n|\t/g, '').trim() : '';
- } catch (e) {
-
- }
- }
- if (p.content) {
- try {
- let p1 = p.content.split(';');
- vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim();
- } catch (e) {
- }
- }
- if (p.img) {
- try {
- let p1 = p.img.split(';');
- vod.vod_pic = _pd(html, p1[0], MY_URL);
- } catch (e) {
- }
- }
-
- let vod_play_from = '$$$';
- let playFrom = [];
- if (p.重定向 && p.重定向.startsWith('js:')) {
- print('开始执行重定向代码:' + p.重定向);
- html = eval(p.重定向.replace('js:', ''));
- }
-
-// console.log(2);
- if (p.tabs) {
- if (p.tabs.startsWith('js:')) {
- print('开始执行tabs代码:' + p.tabs);
- var input = MY_URL;
- eval(p.tabs.replace('js:', ''));
- playFrom = TABS;
- } else {
- let p_tab = p.tabs.split(';')[0];
- // console.log(p_tab);
- let vHeader = _pdfa(html, p_tab);
- console.log(vHeader.length);
- let tab_text = p.tab_text || 'body&&Text';
- // print('tab_text:'+tab_text);
- let new_map = {};
- for (let v of vHeader) {
- let v_title = _pdfh(v, tab_text).trim();
- if (!v_title) {
- v_title = '线路空'
- }
- console.log(v_title);
- if (tab_exclude && (new RegExp(tab_exclude)).test(v_title)) {
- continue;
- }
- if (!new_map.hasOwnProperty(v_title)) {
- new_map[v_title] = 1;
- } else {
- new_map[v_title] += 1;
- }
- if (new_map[v_title] > 1) {
- v_title += Number(new_map[v_title] - 1);
- }
- playFrom.push(v_title);
- }
- }
- console.log(JSON.stringify(playFrom));
- } else {
- playFrom = ['道长在线']
- }
- vod.vod_play_from = playFrom.join(vod_play_from);
-
-// console.log(3);
- let vod_play_url = '$$$';
- let vod_tab_list = [];
- if (p.lists) {
- if (p.lists.startsWith('js:')) {
- print('开始执行lists代码:' + p.lists);
- try {
- var input = MY_URL;
- var play_url = '';
- eval(p.lists.replace('js:', ''));
- for (let i in LISTS) {
- if (LISTS.hasOwnProperty(i)) {
- // print(i);
- try {
- LISTS[i] = LISTS[i].map(it => it.split('$').slice(0, 2).join('$'));
- } catch (e) {
- print(`格式化LISTS发生错误:${e.message}`);
- }
- }
- }
- vod_play_url = LISTS.map(it => it.join('#')).join(vod_play_url);
- } catch (e) {
- print(`js执行lists: 发生错误:${e.message}`);
- }
-
- } else {
- let list_text = p.list_text || 'body&&Text';
- let list_url = p.list_url || 'a&&href';
- let list_url_prefix = p.list_url_prefix || '';
- // print('list_text:'+list_text);
- // print('list_url:'+list_url);
- // print('list_parse:'+p.lists);
- let is_tab_js = p.tabs.trim().startsWith('js:');
- for (let i = 0; i < playFrom.length; i++) {
- let tab_name = playFrom[i];
- let tab_ext = p.tabs.split(';').length > 1 && !is_tab_js ? p.tabs.split(';')[1] : '';
- let p1 = p.lists.replaceAll('#idv', tab_name).replaceAll('#id', i);
- tab_ext = tab_ext.replaceAll('#idv', tab_name).replaceAll('#id', i);
- let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name;
- console.log(tabName);
- // print('tab_ext:'+tab_ext);
- let new_vod_list = [];
- let tt1 = (new Date()).getTime();
- // print('pdfl:'+typeof (pdfl));
- if (typeof (pdfl) === 'function') {
- new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL);
- if (list_url_prefix) {
- new_vod_list = new_vod_list.map(it => it.split('$')[0] + '$' + list_url_prefix + it.split('$').slice(1).join('$'));
- }
- } else {
- let vodList = [];
- try {
- vodList = _pdfa(html, p1);
- console.log('len(vodList):' + vodList.length);
- } catch (e) {
- // console.log(e.message);
- }
- for (let i = 0; i < vodList.length; i++) {
- let it = vodList[i];
- new_vod_list.push(_pdfh(it, list_text).trim() + '$' + list_url_prefix + _pd(it, list_url, MY_URL));
- }
- }
- if (new_vod_list.length > 0) {
- new_vod_list = forceOrder(new_vod_list, '', x => x.split('$')[0]);
- console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date()).getTime() - tt1}毫秒`);
- }
- // print(new_vod_list);
- let vlist = new_vod_list.join('#');
- vod_tab_list.push(vlist);
- }
- vod_play_url = vod_tab_list.join(vod_play_url);
- }
- }
- vod.vod_play_url = vod_play_url;
- }
- if (rule.图片替换 && rule.图片替换.includes('=>')) {
- let replace_from = rule.图片替换.split('=>')[0];
- let replace_to = rule.图片替换.split('=>')[1];
- vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to);
- }
- if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith('http')) {
- vod.vod_pic = vod.vod_pic + rule.图片来源;
- }
- if (!vod.vod_id || (vod_id.includes('$') && vod.vod_id !== vod_id)) {
- vod.vod_id = vod_id;
- }
- let t2 = (new Date()).getTime();
- console.log(`加载二级界面${MY_URL}耗时:${t2 - t1}毫秒`);
- // print(vod);
- try {
- vod = vodDeal(vod);
- } catch (e) {
- console.log(`vodDeal发生错误:${e.message}`);
- }
- // print(vod);
- return JSON.stringify({
- list: [vod]
- })
-}
-
-/**
- * 获取二级待返回的播放线路没处理时的索引关系
- * @param vod
- * @returns {{}}
- */
-function get_tab_index(vod) {
- let obj = {};
- vod.vod_play_from.split('$$$').forEach((it, index) => {
- obj[it] = index;
- });
- return obj
-}
-
-/**
- * 处理待返回的vod数据|线路去除,排序,重命名
- * @param vod
- * @returns {*}
- */
-function vodDeal(vod) {
- let vod_play_from = vod.vod_play_from.split('$$$');
- let vod_play_url = vod.vod_play_url.split('$$$');
-
- // 移除指定线路后的列表
- let tab_removed_list = vod_play_from;
- // 排序后的线路列表
- let tab_ordered_list = vod_play_from;
- // 线路重命名后的列表
- let tab_renamed_list = vod_play_from;
- // 定义实际要返回线路
- let tab_list = vod_play_from;
- // 选集列表根据线路排序
- let play_ordered_list = vod_play_url;
-
- // 判断有移除线路或者线路排序
- if ((rule.tab_remove && rule.tab_remove.length > 0) || (rule.tab_order && rule.tab_order.length > 0)) {
- // 获取原来线路的索引下标
- let tab_index_dict = get_tab_index(vod);
-
- if (rule.tab_remove && rule.tab_remove.length > 0) {
- tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it));
- tab_list = tab_removed_list;
- }
-
- if (rule.tab_order && rule.tab_order.length > 0) {
- let tab_order = rule.tab_order;
- tab_ordered_list = tab_removed_list.sort((a, b) => {
- return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b))
- });
- tab_list = tab_ordered_list;
- }
- play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]]);
- }
-
- if (rule.tab_rename && typeof (rule.tab_rename) === 'object' & Object.keys(rule.tab_rename).length > 0) {
- tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it);
- tab_list = tab_renamed_list;
- }
- vod.vod_play_from = tab_list.join('$$$');
- vod.vod_play_url = play_ordered_list.join('$$$');
- return vod
-}
-
-/**
- * 判断是否需要解析
- * @param url
- * @returns {number|number}
- */
-function tellIsJx(url) {
- try {
- let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split('?')[0]) && 是否正版(url);
- return is_vip ? 1 : 0
- } catch (e) {
- return 1
- }
-}
-
-/**
- * 选集播放点击事件解析
- * @param playObj
- * @returns {string}
- */
-function playParse(playObj) {
- fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
- MY_URL = playObj.url;
- var MY_FLAG = playObj.flag;
- if (!/http/.test(MY_URL)) {
- try {
- MY_URL = base64Decode(MY_URL);
- } catch (e) {
- }
- }
- MY_URL = decodeURIComponent(MY_URL);
- var input = MY_URL;//注入给免嗅js
- var flag = MY_FLAG;//注入播放线路名称给免嗅js
- let common_play = {
- parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1,
- url: input,
- flag: flag,
- // url:urlencode(input),
- jx: tellIsJx(input)
- };
- let lazy_play;
- if (!rule.play_parse || !rule.lazy) {
- lazy_play = common_play;
- } else if (rule.play_parse && rule.lazy && typeof (rule.lazy) === 'string') {
- try {
- let lazy_code = rule.lazy.trim();
- if (lazy_code.startsWith('js:')) {
- lazy_code = lazy_code.replace('js:', '').trim();
- }
- print('开始执行js免嗅=>' + lazy_code);
- eval(lazy_code);
- lazy_play = typeof (input) === 'object' ? input : {
- parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1,
- jx: tellIsJx(input),
- url: input
- };
- } catch (e) {
- print(`js免嗅错误:${e.message}`);
- lazy_play = common_play;
- }
- } else {
- lazy_play = common_play;
- }
- // print('play_json:'+typeof(rule.play_json));
- // console.log(Array.isArray(rule.play_json));
- if (Array.isArray(rule.play_json) && rule.play_json.length > 0) { // 数组情况判断长度大于0
- let web_url = lazy_play.url;
- for (let pjson of rule.play_json) {
- if (pjson.re && (pjson.re === '*' || web_url.match(new RegExp(pjson.re)))) {
- if (pjson.json && typeof (pjson.json) === 'object') {
- let base_json = pjson.json;
- // print('开始合并:');
- // print(base_json);
- lazy_play = Object.assign(lazy_play, base_json);
- break;
- }
- }
- }
- } else if (rule.play_json && !Array.isArray(rule.play_json)) { // 其他情况 非[] 判断true/false
- let base_json = {
- jx: 1,
- parse: 1,
- };
- lazy_play = Object.assign(lazy_play, base_json);
- } else if (!rule.play_json) { // 不解析传0
- let base_json = {
- jx: 0,
- parse: 1,
- };
- lazy_play = Object.assign(lazy_play, base_json);
- }
- console.log(JSON.stringify(lazy_play));
- return JSON.stringify(lazy_play);
-}
-
-/**
- * 本地代理解析规则
- * @param params
- */
-function proxyParse(proxyObj) {
- var input = proxyObj.params;
- if (proxyObj.proxy_rule) {
- log('准备执行本地代理规则:\n' + proxyObj.proxy_rule);
- try {
- eval(proxyObj.proxy_rule);
- if (input && input !== proxyObj.params && Array.isArray(input) && input.length >= 3) {
- return input
- } else {
- return [404, 'text/plain', 'Not Found']
- }
- } catch (e) {
- return [500, 'text/plain', '代理规则错误:' + e.message]
- }
-
- } else {
- return [404, 'text/plain', 'Not Found']
- }
-}
-
-/**
- * 辅助嗅探解析规则
- * @param isVideoObj
- * @returns {boolean}
- */
-function isVideoParse(isVideoObj) {
- var input = isVideoObj.url;
- if (!isVideoObj.t) { // t为假代表默认传的正则字符串
- let re_matcher = new RegExp(isVideoObj.isVideo, 'i'); // /g匹配多个,/i不区分大小写,/m匹配多行
- return re_matcher.test(input);
- } else {
- // 执行js
- try {
- eval(isVideoObj.isVideo);
- if (typeof (input) === 'boolean') {
- return input
- } else {
- return false
- }
- } catch (e) {
- log(`执行嗅探规则发生错误:${e.message}`);
- return false
- }
- }
-}
-
-/**
- * 获取加密前的原始的js源文本
- * @param js_code
- */
-function getOriginalJs(js_code) {
- let current_match = /var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/;
- if (current_match.test(js_code)) {
- return js_code
- }
- let rsa_private_key = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs=';
- let decode_content = '';
-
- function aes_decrypt(data) {
- let key = CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A");
- let iv = CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A");
- let encrypted = CryptoJS.AES.decrypt({
- ciphertext: CryptoJS.enc.Base64.parse(data)
- }, key, {
- iv: iv,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- }).toString(CryptoJS.enc.Utf8);
- return encrypted;
- }
-
- let error_log = false;
-
- function logger(text) {
- if (error_log) {
- log(text);
- }
- }
-
- let decode_funcs = [
- (text) => {
- try {
- return ungzip(text)
- } catch (e) {
- logger('非gzip加密');
- return ''
- }
- },
- (text) => {
- try {
- return base64Decode(text)
- } catch (e) {
- logger('非b64加密');
- return ''
- }
- },
- (text) => {
- try {
- return aes_decrypt(text)
- } catch (e) {
- logger('非aes加密');
- return ''
- }
- },
- (text) => {
- try {
- return RSA.decode(text, rsa_private_key, null)
- } catch (e) {
- logger('非rsa加密');
- return ''
- }
- },
- // (text)=>{try {return NODERSA.decryptRSAWithPrivateKey(text, RSA.getPrivateKey(rsa_private_key).replace(/RSA /g,''), {options: {environment: "browser", encryptionScheme: 'pkcs1',b:'1024'}});} catch (e) {log(e.message);return ''}},
- ]
- let func_index = 0
- while (!current_match.test(decode_content)) {
- decode_content = decode_funcs[func_index](js_code);
- func_index++;
- if (func_index >= decode_funcs.length) {
- break;
- }
- }
- return decode_content
-}
-
-/**
- * 执行main函数
- * 示例 function main(text){return gzip(text)}
- * @param main_func_code
- * @param arg
- */
-function runMain(main_func_code, arg) {
- let mainFunc = function () {
- return ''
- };
- try {
- eval(main_func_code + '\nmainFunc=main;');
- return mainFunc(arg);
- } catch (e) {
- log(`执行main_funct发生了错误:${e.message}`);
- return ''
- }
-}
-
-/**
- * js源预处理特定返回对象中的函数
- * @param ext
- */
-function init(ext) {
- console.log('init');
- // init前重置rule和fetch_params
- rule = {};
- rule_fetch_params = {};
- fetch_params = null;
- try {
- // make shared jsContext happy muban不能import,不然会造成换源继承后变量被篡改
- // if (typeof (globalThis.mubanJs) === 'undefined') {
- // let mubanJs = request('https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js', { 'User-Agent': MOBILE_UA });
- // mubanJs = mubanJs.replace('export default', '(function() {return muban;}()) // export default');
- // // console.log(mubanJs);
- // globalThis.mubanJs = mubanJs;
- // }
- // let muban = eval(globalThis.mubanJs);
-
- let muban = 模板.getMubans();
- // print(typeof (muban));
- // print(muban);
- if (typeof ext == 'object') {
- rule = ext;
- } else if (typeof ext == 'string') {
- if (ext.startsWith('http') || ext.startsWith('file://')) {
- let query = getQuery(ext); // 获取链接传参
- let js = request(ext, {'method': 'GET'});
- if (js) {
- js = getOriginalJs(js);
- // eval(js.replace('var rule', 'rule'));
- // eval("(function(){'use strict';"+js.replace('var rule', 'rule')+"})()");
- eval("(function(){" + js.replace('var rule', 'rule') + "})()");
- }
- if (query.type === 'url' && query.params) { // 指定type是链接并且传了params支持简写如 ./xx.json
- rule.params = urljoin(ext, query.params);
- } else if (query.params) { // 没指定type直接视为字符串
- rule.params = query.params;
- }
- } else {
- ext = getOriginalJs(ext);
- // eval(ext.replace('var rule', 'rule'));
- // eval("(function(){'use strict';"+ext.replace('var rule', 'rule')+"})()");
- eval("(function(){" + ext.replace('var rule', 'rule') + "})()");
- }
- } else {
- console.log(`规则加载失败,不支持的规则类型:${typeof ext}`);
- return
- }
- rule.host = (rule.host || '').rstrip('/');
- HOST = rule.host;
- if (rule.hostJs) {
- console.log(`检测到hostJs,准备执行...`);
- try {
- eval(rule.hostJs);
- rule.host = HOST.rstrip('/');
- } catch (e) {
- console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`);
- }
- }
- if (rule['模板'] === '自动') {
- try {
- let host_headers = rule['headers'] || {};
- let host_html = getCode(HOST, {headers: host_headers});
- let match_muban = '';
- let muban_keys = Object.keys(muban).filter(it => !/默认|短视2|采集1/.test(it));
- for (let muban_key of muban_keys) {
- try {
- let host_data = JSON.parse(home({}, host_html, muban[muban_key].class_parse));
- if (host_data.class && host_data.class.length > 0) {
- match_muban = muban_key;
- console.log(`自动匹配模板:【${muban_key}】`);
- break;
- }
- } catch (e) {
- // @ts-ignore
- console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`);
- }
- }
- if (match_muban) {
- muban['自动'] = muban[match_muban];
- if (rule['模板修改'] && rule['模板修改'].startsWith('js:')) {
- // 模板修改:$js.toString(()=>{ muban.自动.class_parse = ''});
- eval(rule['模板修改'].replace('js:', '').trim());
- }
- } else {
- delete rule['模板']
- }
- } catch (e) {
- delete rule['模板']
- }
- }
- if (rule.模板 && muban.hasOwnProperty(rule.模板)) {
- print('继承模板:' + rule.模板);
- rule = Object.assign(muban[rule.模板], rule);
- }
- /** 处理一下 rule规则关键字段没传递的情况 **/
- let rule_cate_excludes = (rule.cate_exclude || '').split('|').filter(it => it.trim());
- let rule_tab_excludes = (rule.tab_exclude || '').split('|').filter(it => it.trim());
- rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split('|').filter(it => it.trim()));
- rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split('|').filter(it => it.trim()));
-
- rule.cate_exclude = rule_cate_excludes.join('|');
- rule.tab_exclude = rule_tab_excludes.join('|');
-
- rule.类型 = rule.类型 || '影视'; // 影视|听书|漫画|小说
- rule.url = rule.url || '';
- rule.double = rule.double || false;
- rule.homeUrl = rule.homeUrl || '';
- rule.detailUrl = rule.detailUrl || '';
- rule.searchUrl = rule.searchUrl || '';
- rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : (rule.homeUrl || rule.host);
- rule.homeUrl = cheerio.jinja2(rule.homeUrl, {rule: rule});
- rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl;
- rule.二级访问前 = rule.二级访问前 || '';
- if (rule.url.includes('[') && rule.url.includes(']')) {
- let u1 = rule.url.split('[')[0]
- let u2 = rule.url.split('[')[1].split(']')[0]
- rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + '[' + urljoin(rule.host, u2) + ']' : rule.url;
- } else {
- rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url;
- }
- if (rule.searchUrl.includes('[') && rule.searchUrl.includes(']') && !rule.searchUrl.includes('#')) {
- let u1 = rule.searchUrl.split('[')[0]
- let u2 = rule.searchUrl.split('[')[1].split(']')[0]
- rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + '[' + urljoin(rule.host, u2) + ']' : rule.searchUrl;
- } else {
- rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl;
- }
-
- rule.timeout = rule.timeout || 5000;
- rule.encoding = rule.编码 || rule.encoding || 'utf-8';
- rule.search_encoding = rule.搜索编码 || rule.search_encoding || '';
- rule.图片来源 = rule.图片来源 || '';
- rule.图片替换 = rule.图片替换 || '';
- rule.play_json = rule.hasOwnProperty('play_json') ? rule.play_json : [];
- rule.pagecount = rule.hasOwnProperty('pagecount') ? rule.pagecount : {};
- rule.proxy_rule = rule.hasOwnProperty('proxy_rule') ? rule.proxy_rule : '';
- if (!rule.hasOwnProperty('sniffer')) { // 默认关闭辅助嗅探
- rule.sniffer = false;
- }
- rule.sniffer = rule.hasOwnProperty('sniffer') ? rule.sniffer : '';
- rule.sniffer = !!(rule.sniffer && rule.sniffer !== '0' && rule.sniffer !== 'false');
-
- rule.isVideo = rule.hasOwnProperty('isVideo') ? rule.isVideo : '';
- if (rule.sniffer && !rule.isVideo) { // 默认辅助嗅探自动增强嗅探规则
- rule.isVideo = 'http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*';
- }
-
- rule.tab_remove = rule.hasOwnProperty('tab_remove') ? rule.tab_remove : [];
- rule.tab_order = rule.hasOwnProperty('tab_order') ? rule.tab_order : [];
- rule.tab_rename = rule.hasOwnProperty('tab_rename') ? rule.tab_rename : {};
-
- if (rule.headers && typeof (rule.headers) === 'object') {
- try {
- let header_keys = Object.keys(rule.headers);
- for (let k of header_keys) {
- if (k.toLowerCase() === 'user-agent') {
- let v = rule.headers[k];
- console.log(v);
- if (['MOBILE_UA', 'PC_UA', 'UC_UA', 'IOS_UA', 'UA'].includes(v)) {
- rule.headers[k] = eval(v);
- }
- } else if (k.toLowerCase() === 'cookie') {
- let v = rule.headers[k];
- if (v && v.startsWith('http')) {
- console.log(v);
- try {
- v = fetch(v);
- console.log(v);
- rule.headers[k] = v;
- } catch (e) {
- console.log(`从${v}获取cookie发生错误:${e.message}`);
- }
- }
- }
- }
- } catch (e) {
- console.log(`处理headers发生错误:${e.message}`);
- }
- }
- // print(rule.headers);
- rule_fetch_params = {'headers': rule.headers || false, 'timeout': rule.timeout, 'encoding': rule.encoding};
- oheaders = rule.headers || {};
- RKEY = typeof (key) !== 'undefined' && key ? key : 'drpy_' + (rule.title || rule.host);
- pre(); // 预处理
- init_test();
- } catch (e) {
- console.log(`init_test发生错误:${e.message}`);
- }
-}
-
-let homeHtmlCache = undefined;
-
-/**
- * js源获取首页分类和筛选特定返回对象中的函数
- * @param filter 筛选条件字典对象
- * @param home_html 指定了源码。无需内部再请求
- * @param class_parse 自动匹配传入的模板的动态分类
- * @returns {string}
- */
-function home(filter, home_html, class_parse) {
- console.log("home");
- home_html = home_html || '';
- class_parse = class_parse || '';
- if (typeof (rule.filter) === 'string' && rule.filter.trim().length > 0) {
- try {
- let filter_json = ungzip(rule.filter.trim());
- rule.filter = JSON.parse(filter_json);
- } catch (e) {
- rule.filter = {};
- }
- }
- let homeObj = {
- filter: rule.filter || false,
- MY_URL: rule.homeUrl,
- class_name: rule.class_name || '',
- class_url: rule.class_url || '',
- class_parse: class_parse || rule.class_parse || '',
- cate_exclude: rule.cate_exclude,
- home_html: home_html,
- };
- return homeParse(homeObj);
-}
-
-/**
- * js源获取首页推荐数据列表特定返回对象中的函数
- * @param params
- * @returns {string}
- */
-function homeVod(params) {
- console.log("homeVod");
- let homeVodObj = {
- 推荐: rule.推荐,
- double: rule.double,
- homeUrl: rule.homeUrl,
- detailUrl: rule.detailUrl
- };
- return homeVodParse(homeVodObj)
- // return "{}";
-}
-
-/**
- * js源获取分类页一级数据列表特定返回对象中的函数
- * @param tid 分类id
- * @param pg 页数
- * @param filter 当前选中的筛选条件
- * @param extend 扩展
- * @returns {string}
- */
-function category(tid, pg, filter, extend) {
- let cateObj = {
- url: rule.url,
- 一级: rule.一级,
- tid: tid,
- pg: parseInt(pg),
- filter: filter,
- extend: extend
- };
- // console.log(JSON.stringify(extend));
- return categoryParse(cateObj)
-}
-
-/**
- * js源获取二级详情页数据特定返回对象中的函数
- * @param vod_url 一级列表中的vod_id或者是带分类的自拼接 vod_id 如 fyclass$vod_id
- * @returns {string}
- */
-function detail(vod_url) {
- let orId = vod_url;
- let fyclass = '';
- log('orId:' + orId);
- if (vod_url.indexOf('$') > -1) {
- let tmp = vod_url.split('$');
- fyclass = tmp[0];
- vod_url = tmp[1];
- }
- let detailUrl = vod_url.split('@@')[0];
- let url;
- if (!detailUrl.startsWith('http') && !detailUrl.includes('/')) {
- url = rule.detailUrl.replaceAll('fyid', detailUrl).replaceAll('fyclass', fyclass);
- } else if (detailUrl.includes('/')) {
- url = urljoin(rule.homeUrl, detailUrl);
- } else {
- url = detailUrl
- }
- let detailObj = {
- orId: orId,
- url: url,
- 二级: rule.二级,
- 二级访问前: rule.二级访问前,
- detailUrl: detailUrl,
- fyclass: fyclass,
- tab_exclude: rule.tab_exclude,
- }
- return detailParse(detailObj)
-}
-
-/**
- * js源选集按钮播放点击事件特定返回对象中的函数
- * @param flag 线路名
- * @param id 播放按钮的链接
- * @param flags 全局配置的flags是否需要解析的标识列表
- * @returns {string}
- */
-function play(flag, id, flags) {
- let playObj = {
- url: id,
- flag: flag,
- flags: flags
- }
- return playParse(playObj);
-}
-
-/**
- * js源搜索返回的数据列表特定返回对象中的函数
- * @param wd 搜索关键字
- * @param quick 是否来自快速搜索
- * @returns {string}
- */
-function search(wd, quick, pg) {
- if (rule.search_encoding) {
- if (rule.search_encoding.toLowerCase() !== 'utf-8') {
- // 按搜索编码进行编码
- wd = encodeStr(wd, rule.search_encoding);
- }
- } else if (rule.encoding && rule.encoding.toLowerCase() !== 'utf-8') {
- // 按全局编码进行编码
- wd = encodeStr(wd, rule.encoding);
- }
- let searchObj = {
- searchUrl: rule.searchUrl,
- 搜索: rule.搜索,
- wd: wd,
- //pg: pg,
- pg: pg || 1,
- quick: quick,
- };
- // console.log(JSON.stringify(searchObj));
- return searchParse(searchObj)
-}
-
-/**
- * js源本地代理返回的数据列表特定返回对象中的函数
- * @param params 代理链接参数比如 /proxy?do=js&url=https://wwww.baidu.com => params就是 {do:'js','url':'https://wwww.baidu.com'}
- * @returns {*}
- */
-function proxy(params) {
- if (rule.proxy_rule && rule.proxy_rule.trim()) {
- rule.proxy_rule = rule.proxy_rule.trim();
- }
- if (rule.proxy_rule.startsWith('js:')) {
- rule.proxy_rule = rule.proxy_rule.replace('js:', '');
- }
- let proxyObj = {
- params: params,
- proxy_rule: rule.proxy_rule
- };
- return proxyParse(proxyObj)
-}
-
-
-/**
- * 是否启用辅助嗅探功能,启用后可以根据isVideo函数进行手动识别为视频的链接地址。默认为false
- * @returns {*|boolean|boolean}
- */
-function sniffer() {
- let enable_sniffer = rule.sniffer || false;
- if (enable_sniffer) {
- // log('准备执行辅助嗅探代理规则:\n'+rule.isVideo);
- log('开始执行辅助嗅探代理规则...');
- }
- return enable_sniffer
-}
-
-/**
- * 启用辅助嗅探功能后根据次函数返回的值识别地址是否为视频,返回true/false
- * @param url
- */
-function isVideo(url) {
- let t = 0;
- let is_video;
- if (rule.isVideo && rule.isVideo.trim()) {
- is_video = rule.isVideo.trim();
- }
- if (is_video.startsWith('js:')) {
- is_video = is_video.replace('js:', '');
- t = 1;
- }
- let isVideoObj = {
- url: url,
- isVideo: is_video,
- t: t,
- };
- let result = isVideoParse(isVideoObj);
- if (result) {
- log('成功执行辅助嗅探规则并检测到视频地址:\n' + rule.isVideo);
- }
- return result
-}
-
-/**
- * 获取规则
- * @returns {{}}
- */
-function getRule(key) {
- return key ? rule[key] || '' : rule
-}
-
-function DRPY() {//导出函数
- return {
- runMain: runMain,
- getRule: getRule,
- init: init,
- home: home,
- homeVod: homeVod,
- category: category,
- detail: detail,
- play: play,
- search: search,
- proxy: proxy,
- sniffer: sniffer,
- isVideo: isVideo,
- fixAdM3u8Ai: fixAdM3u8Ai,
- }
-}
-
-/**
- * 导出函数无法简写成下面的形式:
-
- export default {
- ...DRPY,
- DRPY
- }
-
- */
-
-// 导出函数对象
-export default {
- runMain,
- getRule,
- init,
- home,
- homeVod,
- category,
- detail,
- play,
- search,
- proxy,
- sniffer,
- isVideo,
- fixAdM3u8Ai,
- DRPY,
-}
\ No newline at end of file
diff --git a/drpy_libs/drpy2.min.js b/drpy_libs/drpy2.min.js
deleted file mode 100644
index 78e127c..0000000
--- a/drpy_libs/drpy2.min.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import cheerio from"./js/lib/cheerio.min.js";import"./js/lib/crypto-js.js";import"./jsencrypt.js";import"./node-rsa.js";import"./pako.min.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";import"./json5.js";import"./jinja.js";const _jinja2=cheerio.jinja2;cheerio.jinja2=function(template,obj){try{return jinja.render(template,obj)}catch(e){console.log("新的jinja2库渲染失败,换回原始cheerio:"+e.message);return _jinja2(template,obj)}};function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log("本地代理地址:"+getProxyUrl());console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function ocr_demo_test(){let img_base64=`iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`;OcrApi.api=OCR_API;let code=OcrApi.classification(img_base64);log("测试验证码图片的ocr识别结果为:"+code)}function rsa_demo_test(){let t1=(new Date).getTime();let pkcs1_public=`
------BEGIN RSA PUBLIC KEY-----
-MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
-lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
------END RSA PUBLIC KEY-----
-`.trim();let pkcs1_public_pem=`
-MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
-lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
-`.trim();let pkcs8_public=`
------BEGIN PUBLIC KEY-----
-MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/
-nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ==
------END PUBLIC KEY-----`.trim();let pkcs8_public_pem=`
-MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/
-nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ==
-`.trim();let pkcs1_private=`
------BEGIN RSA PRIVATE KEY-----
-MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7
-ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt
-0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ
-AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA
-hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+
-5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS
-EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q==
------END RSA PRIVATE KEY-----
-`.trim();let pkcs8_private=`
------BEGIN PRIVATE KEY-----
-MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf
-dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v
-YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8
-KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8
-s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl
-AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3
-rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6
-lPxDjezd
------END PRIVATE KEY-----
-`.trim();let data=`
-NodeRsa
-这是node-rsa 现在修改集成在drpy里使用`.trim();let encryptedWithPublic=NODERSA.encryptRSAWithPublicKey(data,pkcs1_public,{outputEncoding:"base64",options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("公钥加密");console.log(encryptedWithPublic);let decryptedWithPrivate=NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic,pkcs1_private,{options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("私钥解密");console.log(decryptedWithPrivate);let pkcs1_sha256_sign=NODERSA.sign("1",pkcs1_private,{outputEncoding:"base64",options:{environment:"browser",encryptionScheme:"pkcs1",signingScheme:"pkcs1-sha256"}});console.log("pkcs1_sha256_sign");console.log(pkcs1_sha256_sign);let pkcs1_sha256_sign_verify=NODERSA.verify("1","Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==",pkcs1_private,{options:{environment:"browser",encryptionScheme:"pkcs1",signingScheme:"pkcs1-sha256"}});console.log("pkcs1_sha256_sign_verify");console.log(pkcs1_sha256_sign_verify);let pkcs1_oaep_sha256=NODERSA.encryptRSAWithPublicKey(data,`-----BEGIN RSA PUBLIC KEY-----
-MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du
-SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm
-kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8
-PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m
-PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb
-Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB
------END RSA PUBLIC KEY-----
-`,{outputEncoding:"base64",options:{environment:"browser",encryptionScheme:{scheme:"pkcs1_oaep",hash:"sha256"}}});console.log("pkcs1_oaep_sha256");console.log(pkcs1_oaep_sha256);decryptedWithPrivate=NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==",`-----BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is
-T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S
-xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy
-3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+
-HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA
-ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/
-zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31
-iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l
-QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu
-eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ
-8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9
-l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC
-WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J
-NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0
-o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3
-ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ
-I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i
-tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P
-vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p
-yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC
-8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87
-HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN
-QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51
-MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw
-m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA==
------END RSA PRIVATE KEY-----`,{options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("decryptedWithPrivate");console.log(decryptedWithPrivate);(()=>{let key=new NODERSA.NodeRSA({b:1024});key.setOptions({encryptionScheme:"pkcs1"});let text=`你好drpy node-ras`;let encrypted=key.encrypt(text,"base64");console.log("encrypted: ",encrypted);const decrypted=key.decrypt(encrypted,"utf8");console.log("decrypted: ",decrypted)})();let t2=(new Date).getTime();console.log("rsa_demo_test 测试耗时:"+(t2-t1)+"毫秒")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log(`预处理执行失败:${e.message}`)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.51beta2 20240711";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="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";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|榜|评论";const OCR_RETRY=3;const OCR_API="https://api.nn.ci/ocr/b64/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;const $js={toString(func){let strfun=func.toString();return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/,"js:").replace(/\}$/,"")}};function window_b64(){let b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out="";while(i>2);out+=b64map.charAt((c1&3)<<4);out+="==";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+="=";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out="";while(i>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(ithis.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:out+=String.fromCharCode(c);break;case 12:case 13:char2=array[i++];out+=String.fromCharCode((c&31)<<6|char2&63);break;case 14:char2=array[i++];char3=array[i++];out+=String.fromCharCode((c&15)<<12|(char2&63)<<6|(char3&63)<<0);break}}return out}function gzip(str){let arr=pako.gzip(str,{});return uint8ArrayToBase64(arr)}function ungzip(b64Data){let strData=atob(b64Data);const charData=strData.split("").map(function(x){return x.charCodeAt(0)});const binData=new Uint8Array(charData);const data=pako.inflate(binData);return Utf8ArrayToStr(data)}function encodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.encode(input)}return input}function decodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.decode(input)}return input}function getCryptoJS(){return'console.log("CryptoJS已装载");'}const RSA={decode:function(data,key,option){option=option||{};if(typeof JSEncrypt==="function"){let chunkSize=option.chunkSize||117;let privateKey=this.getPrivateKey(key);const decryptor=new JSEncrypt;decryptor.setPrivateKey(privateKey);let uncrypted="";uncrypted=decryptor.decryptUnicodeLong(data);return uncrypted}else{return false}},encode:function(data,key,option){option=option||{};if(typeof JSEncrypt==="function"){let chunkSize=option.chunkSize||117;let publicKey=this.getPublicKey(key);const encryptor=new JSEncrypt;encryptor.setPublicKey(publicKey);let encrypted="";encrypted=encryptor.encryptUnicodeLong(data);return encrypted}else{return false}},fixKey(key,prefix,endfix){if(!key.includes(prefix)){key=prefix+key}if(!key.includes(endfix)){key+=endfix}return key},getPrivateKey(key){let prefix="-----BEGIN RSA PRIVATE KEY-----";let endfix="-----END RSA PRIVATE KEY-----";return this.fixKey(key,prefix,endfix)},getPublicKey(key){let prefix="-----BEGIN PUBLIC KEY-----";let endfix="-----END PUBLIC KEY-----";return this.fixKey(key,prefix,endfix)}};function getProxyUrl(){if(typeof getProxy==="function"){return getProxy(true)}else{return"http://127.0.0.1:9978/proxy?do=js"}}function fixAdM3u8(m3u8_text,m3u8_url,ad_remove){if(!m3u8_text&&!m3u8_url||!m3u8_text&&m3u8_url&&!m3u8_url.startsWith("http")){return""}if(!m3u8_text){log("m3u8_url:"+m3u8_url);m3u8_text=request(m3u8_url)}log("len(m3u8_text):"+m3u8_text.length);if(!ad_remove){return m3u8_text}if(ad_remove.startsWith("reg:")){ad_remove=ad_remove.slice(4)}else if(ad_remove.startsWith("js:")){ad_remove=ad_remove.slice(3)}let m3u8_start=m3u8_text.slice(0,m3u8_text.indexOf("#EXTINF")).trim();let m3u8_body=m3u8_text.slice(m3u8_text.indexOf("#EXTINF"),m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();let m3u8_end=m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();let murls=[];let m3_body_list=m3u8_body.split("\n");let m3_len=m3_body_list.length;let i=0;while(i{new_m3u8_body.push(it)})}}new_m3u8_body=new_m3u8_body.join("\n").trim();m3u8_text=[m3u8_start,new_m3u8_body,m3u8_end].join("\n").trim();return m3u8_text}function fixAdM3u8Ai(m3u8_url,headers){let ts=(new Date).getTime();let option=headers?{headers:headers}:{};function b(s1,s2){let i=0;while(iit.startsWith("#")?it:urljoin(m3u8_url,it)).join("\n");m3u8=m3u8.replace(/\n\n/gi,"\n");let last_url=m3u8.split("\n").slice(-1)[0];if(last_url.length<5){last_url=m3u8.split("\n").slice(-2)[0]}if(last_url.includes(".m3u8")&&last_url!==m3u8_url){m3u8_url=urljoin2(m3u8_url,last_url);log("嵌套的m3u8_url:"+m3u8_url);m3u8=request(m3u8_url,option)}let s=m3u8.trim().split("\n").filter(it=>it.trim()).join("\n");let ss=s.split("\n");let firststr="";let maxl=0;let kk=0;let kkk=2;let secondstr="";for(let i=0;i1){if(maxl>b(firststr,s)){if(secondstr.length<5)secondstr=s;kkk=kkk+2}else{maxl=b(firststr,s);kkk++}}kk++;if(kk>=20)break}}if(kkk>30)firststr=secondstr;let firststrlen=firststr.length;let ml=Math.round(ss.length/2).toString().length;let maxc=0;let laststr=ss.toReversed().find(x=>{if(!x.startsWith("#")){let k=b(reverseString(firststr),reverseString(x));maxl=b(firststr,x);maxc++;if(firststrlen-maxl<=ml+k||maxc>10){return true}}return false});log("最后一条切片:"+laststr);let ad_urls=[];for(let i=0;i=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];function getQuery(url){try{if(url.indexOf("?")>-1){url=url.slice(url.indexOf("?")+1)}let arr=url.split("#")[0].split("&");const resObj={};arr.forEach(item=>{let arr1=item.split("=");let key=arr1[0];let value=arr1.slice(1).join("=");resObj[key]=value});return resObj}catch(err){log(`getQuery发生错误:${e.message}`);return{}}}function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print(`html对象转文本发生了错误:${e.message}`)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print(`html对象转文本发生了错误:${e.message}`)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.slice(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html="";if(this.api.endsWith("drpy/text")){html=request(this.api,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true)}else{html=post(this.api,{body:img})}code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function $require(url){eval(request(url))}function keysToLowerCase(obj){return Object.keys(obj).reduce((result,key)=>{const newKey=key.toLowerCase();result[newKey]=obj[key];return result},{})}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA;if(typeof fetch_params==="object"&&fetch_params&&fetch_params.headers){let fetch_headers=keysToLowerCase(fetch_params.headers);if(fetch_headers["user-agent"]){headers["User-Agent"]=fetch_headers["user-agent"]}}}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}if(obj.redirect===false){obj.redirect=0}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj=obj||{};obj.method="POST";return request(url,obj)}function reqCookie(url,obj,all_cookie){obj=obj||{};obj.withHeaders=true;all_cookie=all_cookie||false;let html=request(url,obj);let json=JSON.parse(html);let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");let cookie=setCk?json[setCk]:"";if(Array.isArray(cookie)){cookie=cookie.join(";")}if(!all_cookie){cookie=cookie.split(";")[0]}html=json.body;return{cookie:cookie,html:html}}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i0){classes=list}}}catch(e){console.log(e.message)}}else if(p.length>=3&&!is_json){try{let html=homeObj.home_html||getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p0);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]&&!homeObj.home_html){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级?rule.一级.split(";"):[];if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log(`首页列表双层定位处理发生错误:${e.message}`)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log(`首页列表单层定位处理发生错误:${e.message}`)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}url=url.replaceAll("fyclass",cateObj.tid);let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print(`合并不同分类对应的默认筛选出错:${e.message}`)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl,fyclass:cateObj.tid});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级?rule.一级.split(";"):[];let url=searchObj.searchUrl.replaceAll("**",searchObj.wd);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",searchObj.pg)}}MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print(`搜索发生错误:${e.message}`);return"{}"}}if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();if(!v_title){v_title="线路空"}console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print(`格式化LISTS发生错误:${e.message}`)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print(`js执行lists: 发生错误:${e.message}`)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let list_url_prefix=p.list_url_prefix||"";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL);if(list_url_prefix){new_vod_list=new_vod_list.map(it=>it.split("$")[0]+"$"+list_url_prefix+it.split("$").slice(1).join("$"))}}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];vod.vod_pic=vod.vod_pic.replace(replace_from,replace_to)}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);try{vod=vodDeal(vod)}catch(e){console.log(`vodDeal发生错误:${e.message}`)}return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return vod}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;var MY_FLAG=playObj.flag;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;var flag=MY_FLAG;let common_play={parse:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0:1,url:input,flag:flag,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.trim();if(lazy_code.startsWith("js:")){lazy_code=lazy_code.replace("js:","").trim()}print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0:1,jx:tellIsJx(input),url:input}}catch(e){print(`js免嗅错误:${e.message}`);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length>=3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log(`执行嗅探规则发生错误:${e.message}`);return false}}}function getOriginalJs(js_code){let current_match=/var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/;if(current_match.test(js_code)){return js_code}let rsa_private_key="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs=";let decode_content="";function aes_decrypt(data){let key=CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A");let iv=CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A");let encrypted=CryptoJS.AES.decrypt({ciphertext:CryptoJS.enc.Base64.parse(data)},key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);return encrypted}let error_log=false;function logger(text){if(error_log){log(text)}}let decode_funcs=[text=>{try{return ungzip(text)}catch(e){logger("非gzip加密");return""}},text=>{try{return base64Decode(text)}catch(e){logger("非b64加密");return""}},text=>{try{return aes_decrypt(text)}catch(e){logger("非aes加密");return""}},text=>{try{return RSA.decode(text,rsa_private_key,null)}catch(e){logger("非rsa加密");return""}}];let func_index=0;while(!current_match.test(decode_content)){decode_content=decode_funcs[func_index](js_code);func_index++;if(func_index>=decode_funcs.length){break}}return decode_content}function runMain(main_func_code,arg){let mainFunc=function(){return""};try{eval(main_func_code+"\nmainFunc=main;");return mainFunc(arg)}catch(e){log(`执行main_funct发生了错误:${e.message}`);return""}}function init(ext){console.log("init");rule={};rule_fetch_params={};fetch_params=null;try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")||ext.startsWith("file://")){let query=getQuery(ext);let js=request(ext,{method:"GET"});if(js){js=getOriginalJs(js);eval("(function(){"+js.replace("var rule","rule")+"})()")}if(query.type==="url"&&query.params){rule.params=urljoin(ext,query.params)}else if(query.params){rule.params=query.params}}else{ext=getOriginalJs(ext);eval("(function(){"+ext.replace("var rule","rule")+"})()")}}else{console.log(`规则加载失败,不支持的规则类型:${typeof ext}`);return}rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`)}}if(rule["模板"]==="自动"){try{let host_headers=rule["headers"]||{};let host_html=getCode(HOST,{headers:host_headers});let match_muban="";let muban_keys=Object.keys(muban).filter(it=>!/默认|短视2|采集1/.test(it));for(let muban_key of muban_keys){try{let host_data=JSON.parse(home({},host_html,muban[muban_key].class_parse));if(host_data.class&&host_data.class.length>0){match_muban=muban_key;console.log(`自动匹配模板:【${muban_key}】`);break}}catch(e){console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`)}}if(match_muban){muban["自动"]=muban[match_muban];if(rule["模板修改"]&&rule["模板修改"].startsWith("js:")){eval(rule["模板修改"].replace("js:","").trim())}}else{delete rule["模板"]}}catch(e){delete rule["模板"]}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.类型=rule.类型||"影视";rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.homeUrl=cheerio.jinja2(rule.homeUrl,{rule:rule});rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")&&!rule.searchUrl.includes("#")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl}rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.图片替换=rule.图片替换||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";if(!rule.hasOwnProperty("sniffer")){rule.sniffer=false}rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";if(rule.sniffer&&!rule.isVideo){rule.isVideo="http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*"}rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:${e.message}`)}}}}}catch(e){console.log(`处理headers发生错误:${e.message}`)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log(`init_test发生错误:${e.message}`)}}let homeHtmlCache=undefined;function home(filter,home_html,class_parse){console.log("home");home_html=home_html||"";class_parse=class_parse||"";if(typeof rule.filter==="string"&&rule.filter.trim().length>0){try{let filter_json=ungzip(rule.filter.trim());rule.filter=JSON.parse(filter_json)}catch(e){rule.filter={}}}let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:class_parse||rule.class_parse||"",cate_exclude:rule.cate_exclude,home_html:home_html};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function getRule(key){return key?rule[key]||"":rule}function DRPY(){return{runMain:runMain,getRule:getRule,init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,fixAdM3u8Ai:fixAdM3u8Ai}}export default{runMain:runMain,getRule:getRule,init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,fixAdM3u8Ai:fixAdM3u8Ai,DRPY:DRPY};
\ No newline at end of file
diff --git a/drpy_libs/gbk.js b/drpy_libs/gbk.js
deleted file mode 100644
index 796d53a..0000000
--- a/drpy_libs/gbk.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/***
- * gbk编码解码函数
- * strTool = gbkTool() strTool.encode(key)
- * @returns {{encode: (function(*): *), decode: (function(*): *)}}
- */
-export function gbkTool(){
- var data=function(zipData){
- var re=zipData
- .replace(/#(\d+)\$/g,function(a,b){
- return Array(+b+3).join('#');
- })
- .replace(/#/g,'####')
- .replace(/(\w\w):([\w#]+)(?:,|$)/g,function(a,hd,dt){
- return dt.replace(/../g,function(a){
- if(a!='##'){
- return hd+a;
- }else{
- return a;
- }
- });
- });
- return re;
- }('4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364'),
- U2Ghash={},
- G2Uhash={};
- !function(data){
- var k=0;
- data=data.match(/..../g);
- for(var i=0x81;i<=0xfe;i++){
- for(var j=0x40;j<=0xFE;j++){
- U2Ghash[data[k++]]=('%'+i.toString(16)+'%'+j.toString(16))
- .toUpperCase();
- }
- }
- for(var key in U2Ghash){
- G2Uhash[U2Ghash[key]]=key;
- }
- }(data);
- function isAscii(unicode) {
- return ((unicode == 0x20AC) || (unicode <= 0x007F && unicode >= 0x0000));
- }
- return{
- encode:function(str){
- return str.replace(/./g,function(a){
- var code=a.charCodeAt(0);
- if(isAscii(code)){
- return encodeURIComponent(a);
- }else{
- var key=code.toString(16);
- if(key.length!=4)key=('000'+key).match(/....$/)[0];
- return U2Ghash[key]||a;
- }
- });
- },
- decode:function(str){
- return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g,function(a){
- if(a in G2Uhash){
- return String.fromCharCode('0x'+G2Uhash[a]);
- }else{
- return a;
- }
- }).replace(/%[\w]{2}/g,function(a){
- return decodeURIComponent(a);
-
- });
- }
- };
-}
\ No newline at end of file
diff --git a/drpy_libs/jsencrypt.js b/drpy_libs/jsencrypt.js
deleted file mode 100644
index fa3006c..0000000
--- a/drpy_libs/jsencrypt.js
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-(function webpackUniversalModuleDefinition(root, factory) {
- if (typeof exports === 'object' && typeof module === 'object') {
- // CommonJS
- module.exports = exports = factory();
- } else if (typeof define === 'function' && define.amd) {
- // AMD
- define([], factory);
- } else {
- // Global (browser)
- globalThis.JSEncrypt = factory();
- }
-})(this, () => {
-return /******/ (() => { // webpackBootstrap
-/******/ var __webpack_modules__ = ({
-
-/***/ "./lib/JSEncrypt.js":
-/*!**************************!*\
- !*** ./lib/JSEncrypt.js ***!
- \**************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* binding */ JSEncrypt)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JSEncryptRSAKey */ \"./lib/JSEncryptRSAKey.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nvar _a;\n\n\nvar version = typeof process !== 'undefined'\n ? (_a = process.env) === null || _a === void 0 ? void 0 : \"3.3.2\"\n : undefined;\n/**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\nvar JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n if (options === void 0) { options = {}; }\n options = options || {};\n this.default_key_size = options.default_key_size\n ? parseInt(options.default_key_size, 10)\n : 1024;\n this.default_public_exponent = options.default_public_exponent || \"010001\"; // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false;\n // The private and public key.\n this.key = null;\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\");\n }\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey(key);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey);\n };\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt((0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().encrypt(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().sign(str, digestMethod, digestName));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's verify.\n * @param {string} str the string to verify\n * @param {string} signature the signature encoded in base64 to compare the string to\n * @param {function} digestMethod hash method\n * @return {boolean} whether the data and signature match\n * @public\n */\n JSEncrypt.prototype.verify = function (str, signature, digestMethod) {\n // Return the decrypted 'digest' of the signature.\n try {\n return this.getKey().verify(str, (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(signature), digestMethod);\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object\n * will be created and returned\n * @param {callback} [cb] the callback to be called if we want the key to be generated\n * in an async fashion\n * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object\n * @public\n */\n JSEncrypt.prototype.getKey = function (cb) {\n // Only create new if it does not exist.\n if (!this.key) {\n // Get a new private key.\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey();\n if (cb && {}.toString.call(cb) === \"[object Function]\") {\n this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb);\n return;\n }\n // Generate the key.\n this.key.generate(this.default_key_size, this.default_public_exponent);\n }\n return this.key;\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateKey();\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateBaseKeyB64();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicKey();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicBaseKeyB64();\n };\nvar b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";var base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out=\"\";while(i>2);out+=b64map.charAt((c1&3)<<4);out+=\"==\";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+=\"=\";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out=\"\";while(i>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(i>6)+b64map.charAt(c&63)}if(i+1==h.length){c=parseInt(h.substring(i,i+1),16);ret+=b64map.charAt(c<<2)}else if(i+2==h.length){c=parseInt(h.substring(i,i+2),16);ret+=b64map.charAt(c>>2)+b64map.charAt((c&3)<<4)}while((ret.length&3)>0)ret+=b64pad;return ret}function hexToBytes(hex){for(var bytes=[],c=0;c>>4).toString(16));hex.push((bytes[i]&15).toString(16))}return hex.join(\"\")}function b64tohex(str){for(var i=0,bin=atob(str.replace(/[ \\r\\n]+$/,\"\")),hex=[];i>3};JSEncrypt.prototype.decryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)*2;try{var hexString=b64tohex(string);var decryptedString=\"\";var rexStr=\".{1,\"+maxLength+\"}\";var rex=new RegExp(rexStr,\"g\");var subStrArray=hexString.match(rex);if(subStrArray){subStrArray.forEach(function(entry){decryptedString+=k.decrypt(entry)});return decryptedString}}catch(ex){console.log(\"加密错误:\"+ex.message);return false}};JSEncrypt.prototype.encryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)-11;try{var subStr=\"\",encryptedString=\"\";var subStart=0,subEnd=0;var bitLen=0,tmpPoint=0;for(var i=0,len=string.length;imaxLength){subStr=string.substring(subStart,subEnd);encryptedString+=k.encrypt(subStr);subStart=subEnd;bitLen=bitLen-tmpPoint}else{subEnd=i;tmpPoint=bitLen}}subStr=string.substring(subStart,len);encryptedString+=k.encrypt(subStr);return hex2b64(encryptedString)}catch(ex){console.log(\"解密错误:\"+ex.message);return false}}; JSEncrypt.version = version;\n return JSEncrypt;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncrypt.js?");
-
-/***/ }),
-
-/***/ "./lib/JSEncryptRSAKey.js":
-/*!********************************!*\
- !*** ./lib/JSEncryptRSAKey.js ***!
- \********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncryptRSAKey\": () => (/* binding */ JSEncryptRSAKey)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/asn1js/hex */ \"./lib/lib/asn1js/hex.js\");\n/* harmony import */ var _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/asn1js/base64 */ \"./lib/lib/asn1js/base64.js\");\n/* harmony import */ var _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/asn1js/asn1 */ \"./lib/lib/asn1js/asn1.js\");\n/* harmony import */ var _lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/jsbn/rsa */ \"./lib/lib/jsbn/rsa.js\");\n/* harmony import */ var _lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/jsrsasign/asn1-1.0 */ \"./lib/lib/jsrsasign/asn1-1.0.js\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\n\n/**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\nvar JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super);\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this;\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key);\n }\n else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key);\n }\n }\n return _this;\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0;\n var public_exponent = 0;\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;\n var der = reHex.test(pem) ? _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__.Hex.decode(pem) : _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__.Base64.unarmor(pem);\n var asn1 = _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__.ASN1.decode(der);\n // Fixes a bug with OpenSSL 1.0+ private keys\n if (asn1.sub.length === 3) {\n asn1 = asn1.sub[2].sub[0];\n }\n if (asn1.sub.length === 9) {\n // Parse the private key.\n modulus = asn1.sub[1].getHexStringValue(); // bigint\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[2].getHexStringValue(); // int\n this.e = parseInt(public_exponent, 16);\n var private_exponent = asn1.sub[3].getHexStringValue(); // bigint\n this.d = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(private_exponent, 16);\n var prime1 = asn1.sub[4].getHexStringValue(); // bigint\n this.p = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime1, 16);\n var prime2 = asn1.sub[5].getHexStringValue(); // bigint\n this.q = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime2, 16);\n var exponent1 = asn1.sub[6].getHexStringValue(); // bigint\n this.dmp1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent1, 16);\n var exponent2 = asn1.sub[7].getHexStringValue(); // bigint\n this.dmq1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent2, 16);\n var coefficient = asn1.sub[8].getHexStringValue(); // bigint\n this.coeff = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(coefficient, 16);\n }\n else if (asn1.sub.length === 2) {\n if (asn1.sub[0].sub) {\n // Parse ASN.1 SubjectPublicKeyInfo type as defined by X.509\n var bit_string = asn1.sub[1];\n var sequence = bit_string.sub[0];\n modulus = sequence.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = sequence.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n else {\n // Parse ASN.1 RSAPublicKey type as defined by PKCS #1\n modulus = asn1.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n }\n else {\n return false;\n }\n return true;\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa key.\n *\n * The translation follow the ASN.1 notation :\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER, -- (inverse of q) mod p\n * }\n * @returns {string} DER Encoded String representing the rsa private key\n * @private\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKey = function () {\n var options = {\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: 0 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.d }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.p }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.q }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmp1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmq1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.coeff }),\n ],\n };\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence(options);\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPrivateBaseKey());\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa public key.\n * The representation follow the ASN.1 notation :\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * @returns {string} DER Encoded String representing the rsa public key\n * @private\n */\n JSEncryptRSAKey.prototype.getPublicBaseKey = function () {\n var first_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERObjectIdentifier({ oid: \"1.2.840.113549.1.1.1\" }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERNull(),\n ],\n });\n var second_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n ],\n });\n var bit_string = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERBitString({\n hex: \"00\" + second_sequence.getEncodedHex(),\n });\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [first_sequence, bit_string],\n });\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPublicBaseKey());\n };\n /**\n * wrap the string in block of width chars. The default value for rsa keys is 64\n * characters.\n * @param {string} str the pem encoded string without header and footer\n * @param {Number} [width=64] - the length the string has to be wrapped at\n * @returns {string}\n * @private\n */\n JSEncryptRSAKey.wordwrap = function (str, width) {\n width = width || 64;\n if (!str) {\n return str;\n }\n var regex = \"(.{1,\" + width + \"})( +|$\\n?)|(.{1,\" + width + \"})\";\n return str.match(RegExp(regex, \"g\")).join(\"\\n\");\n };\n /**\n * Retrieve the pem encoded private key\n * @returns {string} the pem encoded private key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateKey = function () {\n var key = \"-----BEGIN RSA PRIVATE KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + \"\\n\";\n key += \"-----END RSA PRIVATE KEY-----\";\n return key;\n };\n /**\n * Retrieve the pem encoded public key\n * @returns {string} the pem encoded public key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicKey = function () {\n var key = \"-----BEGIN PUBLIC KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + \"\\n\";\n key += \"-----END PUBLIC KEY-----\";\n return key;\n };\n /**\n * Check if the object contains the necessary parameters to populate the rsa modulus\n * and public exponent parameters.\n * @param {Object} [obj={}] - An object that may contain the two public key\n * parameters\n * @returns {boolean} true if the object contains both the modulus and the public exponent\n * properties (n and e)\n * @todo check for types of n and e. N should be a parseable bigInt object, E should\n * be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPublicKeyProperty = function (obj) {\n obj = obj || {};\n return obj.hasOwnProperty(\"n\") && obj.hasOwnProperty(\"e\");\n };\n /**\n * Check if the object contains ALL the parameters of an RSA key.\n * @param {Object} [obj={}] - An object that may contain nine rsa key\n * parameters\n * @returns {boolean} true if the object contains all the parameters needed\n * @todo check for types of the parameters all the parameters but the public exponent\n * should be parseable bigint objects, the public exponent should be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPrivateKeyProperty = function (obj) {\n obj = obj || {};\n return (obj.hasOwnProperty(\"n\") &&\n obj.hasOwnProperty(\"e\") &&\n obj.hasOwnProperty(\"d\") &&\n obj.hasOwnProperty(\"p\") &&\n obj.hasOwnProperty(\"q\") &&\n obj.hasOwnProperty(\"dmp1\") &&\n obj.hasOwnProperty(\"dmq1\") &&\n obj.hasOwnProperty(\"coeff\"));\n };\n /**\n * Parse the properties of obj in the current rsa object. Obj should AT LEAST\n * include the modulus and public exponent (n, e) parameters.\n * @param {Object} obj - the object containing rsa parameters\n * @private\n */\n JSEncryptRSAKey.prototype.parsePropertiesFrom = function (obj) {\n this.n = obj.n;\n this.e = obj.e;\n if (obj.hasOwnProperty(\"d\")) {\n this.d = obj.d;\n this.p = obj.p;\n this.q = obj.q;\n this.dmp1 = obj.dmp1;\n this.dmq1 = obj.dmq1;\n this.coeff = obj.coeff;\n }\n };\n return JSEncryptRSAKey;\n}(_lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__.RSAKey));\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncryptRSAKey.js?");
-
-/***/ }),
-
-/***/ "./lib/index.js":
-/*!**********************!*\
- !*** ./lib/index.js ***!
- \**********************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* reexport safe */ _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JSEncrypt */ \"./lib/JSEncrypt.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/index.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/asn1js/asn1.js":
-/*!********************************!*\
- !*** ./lib/lib/asn1js/asn1.js ***!
- \********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shortYear ? reTimeS : reTimeL).exec(s);\n if (!m) {\n return \"Unrecognized time: \" + s;\n }\n if (shortYear) {\n // to avoid querying the timer, use the fixed range [1970, 2069]\n // it will conform with ITU X.400 [-10, +40] sliding window until 2030\n m[1] = +m[1];\n m[1] += (+m[1] < 70) ? 2000 : 1900;\n }\n s = m[1] + \"-\" + m[2] + \"-\" + m[3] + \" \" + m[4];\n if (m[5]) {\n s += \":\" + m[5];\n if (m[6]) {\n s += \":\" + m[6];\n if (m[7]) {\n s += \".\" + m[7];\n }\n }\n }\n if (m[8]) {\n s += \" UTC\";\n if (m[8] != \"Z\") {\n s += m[8];\n if (m[9]) {\n s += \":\" + m[9];\n }\n }\n }\n return s;\n };\n Stream.prototype.parseInteger = function (start, end) {\n var v = this.get(start);\n var neg = (v > 127);\n var pad = neg ? 255 : 0;\n var len;\n var s = \"\";\n // skip unuseful bits (not allowed in DER)\n while (v == pad && ++start < end) {\n v = this.get(start);\n }\n len = end - start;\n if (len === 0) {\n return neg ? -1 : 0;\n }\n // show bit length of huge integers\n if (len > 4) {\n s = v;\n len <<= 3;\n while (((+s ^ pad) & 0x80) == 0) {\n s = +s << 1;\n --len;\n }\n s = \"(\" + len + \" bit)\\n\";\n }\n // decode the integer\n if (neg) {\n v = v - 256;\n }\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10(v);\n for (var i = start + 1; i < end; ++i) {\n n.mulAdd(256, this.get(i));\n }\n return s + n.toString();\n };\n Stream.prototype.parseBitString = function (start, end, maxLength) {\n var unusedBit = this.get(start);\n var lenBit = ((end - start - 1) << 3) - unusedBit;\n var intro = \"(\" + lenBit + \" bit)\\n\";\n var s = \"\";\n for (var i = start + 1; i < end; ++i) {\n var b = this.get(i);\n var skip = (i == end - 1) ? unusedBit : 0;\n for (var j = 7; j >= skip; --j) {\n s += (b >> j) & 1 ? \"1\" : \"0\";\n }\n if (s.length > maxLength) {\n return intro + stringCut(s, maxLength);\n }\n }\n return intro + s;\n };\n Stream.prototype.parseOctetString = function (start, end, maxLength) {\n if (this.isASCII(start, end)) {\n return stringCut(this.parseStringISO(start, end), maxLength);\n }\n var len = end - start;\n var s = \"(\" + len + \" byte)\\n\";\n maxLength /= 2; // we work in bytes\n if (len > maxLength) {\n end = start + maxLength;\n }\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n }\n if (len > maxLength) {\n s += ellipsis;\n }\n return s;\n };\n Stream.prototype.parseOID = function (start, end, maxLength) {\n var s = \"\";\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n var bits = 0;\n for (var i = start; i < end; ++i) {\n var v = this.get(i);\n n.mulAdd(128, v & 0x7F);\n bits += 7;\n if (!(v & 0x80)) { // finished\n if (s === \"\") {\n n = n.simplify();\n if (n instanceof _int10__WEBPACK_IMPORTED_MODULE_0__.Int10) {\n n.sub(80);\n s = \"2.\" + n.toString();\n }\n else {\n var m = n < 80 ? n < 40 ? 0 : 1 : 2;\n s = m + \".\" + (n - m * 40);\n }\n }\n else {\n s += \".\" + n.toString();\n }\n if (s.length > maxLength) {\n return stringCut(s, maxLength);\n }\n n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n bits = 0;\n }\n }\n if (bits > 0) {\n s += \".incomplete\";\n }\n return s;\n };\n return Stream;\n}());\n\nvar ASN1 = /** @class */ (function () {\n function ASN1(stream, header, length, tag, sub) {\n if (!(tag instanceof ASN1Tag)) {\n throw new Error(\"Invalid tag value.\");\n }\n this.stream = stream;\n this.header = header;\n this.length = length;\n this.tag = tag;\n this.sub = sub;\n }\n ASN1.prototype.typeName = function () {\n switch (this.tag.tagClass) {\n case 0: // universal\n switch (this.tag.tagNumber) {\n case 0x00:\n return \"EOC\";\n case 0x01:\n return \"BOOLEAN\";\n case 0x02:\n return \"INTEGER\";\n case 0x03:\n return \"BIT_STRING\";\n case 0x04:\n return \"OCTET_STRING\";\n case 0x05:\n return \"NULL\";\n case 0x06:\n return \"OBJECT_IDENTIFIER\";\n case 0x07:\n return \"ObjectDescriptor\";\n case 0x08:\n return \"EXTERNAL\";\n case 0x09:\n return \"REAL\";\n case 0x0A:\n return \"ENUMERATED\";\n case 0x0B:\n return \"EMBEDDED_PDV\";\n case 0x0C:\n return \"UTF8String\";\n case 0x10:\n return \"SEQUENCE\";\n case 0x11:\n return \"SET\";\n case 0x12:\n return \"NumericString\";\n case 0x13:\n return \"PrintableString\"; // ASCII subset\n case 0x14:\n return \"TeletexString\"; // aka T61String\n case 0x15:\n return \"VideotexString\";\n case 0x16:\n return \"IA5String\"; // ASCII\n case 0x17:\n return \"UTCTime\";\n case 0x18:\n return \"GeneralizedTime\";\n case 0x19:\n return \"GraphicString\";\n case 0x1A:\n return \"VisibleString\"; // ASCII subset\n case 0x1B:\n return \"GeneralString\";\n case 0x1C:\n return \"UniversalString\";\n case 0x1E:\n return \"BMPString\";\n }\n return \"Universal_\" + this.tag.tagNumber.toString();\n case 1:\n return \"Application_\" + this.tag.tagNumber.toString();\n case 2:\n return \"[\" + this.tag.tagNumber.toString() + \"]\"; // Context\n case 3:\n return \"Private_\" + this.tag.tagNumber.toString();\n }\n };\n ASN1.prototype.content = function (maxLength) {\n if (this.tag === undefined) {\n return null;\n }\n if (maxLength === undefined) {\n maxLength = Infinity;\n }\n var content = this.posContent();\n var len = Math.abs(this.length);\n if (!this.tag.isUniversal()) {\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n return this.stream.parseOctetString(content, content + len, maxLength);\n }\n switch (this.tag.tagNumber) {\n case 0x01: // BOOLEAN\n return (this.stream.get(content) === 0) ? \"false\" : \"true\";\n case 0x02: // INTEGER\n return this.stream.parseInteger(content, content + len);\n case 0x03: // BIT_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseBitString(content, content + len, maxLength);\n case 0x04: // OCTET_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseOctetString(content, content + len, maxLength);\n // case 0x05: // NULL\n case 0x06: // OBJECT_IDENTIFIER\n return this.stream.parseOID(content, content + len, maxLength);\n // case 0x07: // ObjectDescriptor\n // case 0x08: // EXTERNAL\n // case 0x09: // REAL\n // case 0x0A: // ENUMERATED\n // case 0x0B: // EMBEDDED_PDV\n case 0x10: // SEQUENCE\n case 0x11: // SET\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n else {\n return \"(no elem)\";\n }\n case 0x0C: // UTF8String\n return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);\n case 0x12: // NumericString\n case 0x13: // PrintableString\n case 0x14: // TeletexString\n case 0x15: // VideotexString\n case 0x16: // IA5String\n // case 0x19: // GraphicString\n case 0x1A: // VisibleString\n // case 0x1B: // GeneralString\n // case 0x1C: // UniversalString\n return stringCut(this.stream.parseStringISO(content, content + len), maxLength);\n case 0x1E: // BMPString\n return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);\n case 0x17: // UTCTime\n case 0x18: // GeneralizedTime\n return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17));\n }\n return null;\n };\n ASN1.prototype.toString = function () {\n return this.typeName() + \"@\" + this.stream.pos + \"[header:\" + this.header + \",length:\" + this.length + \",sub:\" + ((this.sub === null) ? \"null\" : this.sub.length) + \"]\";\n };\n ASN1.prototype.toPrettyString = function (indent) {\n if (indent === undefined) {\n indent = \"\";\n }\n var s = indent + this.typeName() + \" @\" + this.stream.pos;\n if (this.length >= 0) {\n s += \"+\";\n }\n s += this.length;\n if (this.tag.tagConstructed) {\n s += \" (constructed)\";\n }\n else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null)) {\n s += \" (encapsulates)\";\n }\n s += \"\\n\";\n if (this.sub !== null) {\n indent += \" \";\n for (var i = 0, max = this.sub.length; i < max; ++i) {\n s += this.sub[i].toPrettyString(indent);\n }\n }\n return s;\n };\n ASN1.prototype.posStart = function () {\n return this.stream.pos;\n };\n ASN1.prototype.posContent = function () {\n return this.stream.pos + this.header;\n };\n ASN1.prototype.posEnd = function () {\n return this.stream.pos + this.header + Math.abs(this.length);\n };\n ASN1.prototype.toHexString = function () {\n return this.stream.hexDump(this.posStart(), this.posEnd(), true);\n };\n ASN1.decodeLength = function (stream) {\n var buf = stream.get();\n var len = buf & 0x7F;\n if (len == buf) {\n return len;\n }\n // no reason to use Int10, as it would be a huge buffer anyways\n if (len > 6) {\n throw new Error(\"Length over 48 bits not supported at position \" + (stream.pos - 1));\n }\n if (len === 0) {\n return null;\n } // undefined\n buf = 0;\n for (var i = 0; i < len; ++i) {\n buf = (buf * 256) + stream.get();\n }\n return buf;\n };\n /**\n * Retrieve the hexadecimal value (as a string) of the current ASN.1 element\n * @returns {string}\n * @public\n */\n ASN1.prototype.getHexStringValue = function () {\n var hexString = this.toHexString();\n var offset = this.header * 2;\n var length = this.length * 2;\n return hexString.substr(offset, length);\n };\n ASN1.decode = function (str) {\n var stream;\n if (!(str instanceof Stream)) {\n stream = new Stream(str, 0);\n }\n else {\n stream = str;\n }\n var streamStart = new Stream(stream);\n var tag = new ASN1Tag(stream);\n var len = ASN1.decodeLength(stream);\n var start = stream.pos;\n var header = start - streamStart.pos;\n var sub = null;\n var getSub = function () {\n var ret = [];\n if (len !== null) {\n // definite length\n var end = start + len;\n while (stream.pos < end) {\n ret[ret.length] = ASN1.decode(stream);\n }\n if (stream.pos != end) {\n throw new Error(\"Content size is not correct for container starting at offset \" + start);\n }\n }\n else {\n // undefined length\n try {\n for (;;) {\n var s = ASN1.decode(stream);\n if (s.tag.isEOC()) {\n break;\n }\n ret[ret.length] = s;\n }\n len = start - stream.pos; // undefined lengths are represented as negative values\n }\n catch (e) {\n throw new Error(\"Exception while decoding undefined length content: \" + e);\n }\n }\n return ret;\n };\n if (tag.tagConstructed) {\n // must have valid content\n sub = getSub();\n }\n else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) {\n // sometimes BitString and OctetString are used to encapsulate ASN.1\n try {\n if (tag.tagNumber == 0x03) {\n if (stream.get() != 0) {\n throw new Error(\"BIT STRINGs with unused bits cannot encapsulate.\");\n }\n }\n sub = getSub();\n for (var i = 0; i < sub.length; ++i) {\n if (sub[i].tag.isEOC()) {\n throw new Error(\"EOC is not supposed to be actual content.\");\n }\n }\n }\n catch (e) {\n // but silently ignore when they don't\n sub = null;\n }\n }\n if (sub === null) {\n if (len === null) {\n throw new Error(\"We can't skip over an invalid tag with undefined length at offset \" + start);\n }\n stream.pos = start + Math.abs(len);\n }\n return new ASN1(streamStart, header, len, tag, sub);\n };\n return ASN1;\n}());\n\nvar ASN1Tag = /** @class */ (function () {\n function ASN1Tag(stream) {\n var buf = stream.get();\n this.tagClass = buf >> 6;\n this.tagConstructed = ((buf & 0x20) !== 0);\n this.tagNumber = buf & 0x1F;\n if (this.tagNumber == 0x1F) { // long tag\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n do {\n buf = stream.get();\n n.mulAdd(128, buf & 0x7F);\n } while (buf & 0x80);\n this.tagNumber = n.simplify();\n }\n }\n ASN1Tag.prototype.isUniversal = function () {\n return this.tagClass === 0x00;\n };\n ASN1Tag.prototype.isEOC = function () {\n return this.tagClass === 0x00 && this.tagNumber === 0x00;\n };\n return ASN1Tag;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/asn1.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/asn1js/base64.js":
-/*!**********************************!*\
- !*** ./lib/lib/asn1js/base64.js ***!
- \**********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/asn1js/hex.js":
-/*!*******************************!*\
- !*** ./lib/lib/asn1js/hex.js ***!
- \*******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/asn1js/int10.js":
-/*!*********************************!*\
- !*** ./lib/lib/asn1js/int10.js ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/jsbn/base64.js":
-/*!********************************!*\
- !*** ./lib/lib/jsbn/base64.js ***!
- \********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"b64toBA\": () => (/* binding */ b64toBA),\n/* harmony export */ \"b64tohex\": () => (/* binding */ b64tohex),\n/* harmony export */ \"hex2b64\": () => (/* binding */ hex2b64)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(h) {\n var i;\n var c;\n var ret = \"\";\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16);\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16);\n ret += b64map.charAt(c << 2);\n }\n else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16);\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad;\n }\n return ret;\n}\n// convert a base64 string to hex\nfunction b64tohex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop);\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop << 2);\n }\n return ret;\n}\n// convert a base64 string to a byte/number array\nfunction b64toBA(s) {\n // piggyback on b64tohex for now, optimize later\n var h = b64tohex(s);\n var i;\n var a = [];\n for (i = 0; 2 * i < h.length; ++i) {\n a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);\n }\n return a;\n}\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/base64.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/jsbn/jsbn.js":
-/*!******************************!*\
- !*** ./lib/lib/jsbn/jsbn.js ***!
- \******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BigInteger\": () => (/* binding */ BigInteger),\n/* harmony export */ \"intAt\": () => (/* binding */ intAt),\n/* harmony export */ \"nbi\": () => (/* binding */ nbi),\n/* harmony export */ \"nbits\": () => (/* binding */ nbits),\n/* harmony export */ \"nbv\": () => (/* binding */ nbv),\n/* harmony export */ \"parseBigInt\": () => (/* binding */ parseBigInt)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n//#region\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n//#endregion\n// (public) Constructor\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c);\n }\n else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256);\n }\n else {\n this.fromString(a, b);\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b);\n }\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n return this.toRadix(b);\n }\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n // BigInteger.prototype.bitLength = bnBitLength;\n // (public) return the number of bits in \"this\"\n BigInteger.prototype.bitLength = function () {\n if (this.t <= 0) {\n return 0;\n }\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));\n };\n // BigInteger.prototype.mod = bnMod;\n // (public) this mod a\n BigInteger.prototype.mod = function (a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r);\n }\n return r;\n };\n // BigInteger.prototype.modPowInt = bnModPowInt;\n // (public) this^e % m, 0 <= e < 2^32\n BigInteger.prototype.modPowInt = function (e, m) {\n var z;\n if (e < 256 || m.isEven()) {\n z = new Classic(m);\n }\n else {\n z = new Montgomery(m);\n }\n return this.exp(e, z);\n };\n // BigInteger.prototype.clone = bnClone;\n // (public)\n BigInteger.prototype.clone = function () {\n var r = nbi();\n this.copyTo(r);\n return r;\n };\n // BigInteger.prototype.intValue = bnIntValue;\n // (public) return value as integer\n BigInteger.prototype.intValue = function () {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV;\n }\n else if (this.t == 0) {\n return -1;\n }\n }\n else if (this.t == 1) {\n return this[0];\n }\n else if (this.t == 0) {\n return 0;\n }\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n };\n // BigInteger.prototype.byteValue = bnByteValue;\n // (public) return value as byte\n BigInteger.prototype.byteValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24;\n };\n // BigInteger.prototype.shortValue = bnShortValue;\n // (public) return value as short (assumes DB>=16)\n BigInteger.prototype.shortValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16;\n };\n // BigInteger.prototype.signum = bnSigNum;\n // (public) 0 if this == 0, 1 if this > 0\n BigInteger.prototype.signum = function () {\n if (this.s < 0) {\n return -1;\n }\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {\n return 0;\n }\n else {\n return 1;\n }\n };\n // BigInteger.prototype.toByteArray = bnToByteArray;\n // (public) convert to bigendian byte array\n BigInteger.prototype.toByteArray = function () {\n var i = this.t;\n var r = [];\n r[0] = this.s;\n var p = this.DB - (i * this.DB) % 8;\n var d;\n var k = 0;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {\n r[k++] = d | (this.s << (this.DB - p));\n }\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p);\n d |= this[--i] >> (p += this.DB - 8);\n }\n else {\n d = (this[i] >> (p -= 8)) & 0xff;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if ((d & 0x80) != 0) {\n d |= -256;\n }\n if (k == 0 && (this.s & 0x80) != (d & 0x80)) {\n ++k;\n }\n if (k > 0 || d != this.s) {\n r[k++] = d;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.equals = function (a) {\n return (this.compareTo(a) == 0);\n };\n // BigInteger.prototype.min = bnMin;\n BigInteger.prototype.min = function (a) {\n return (this.compareTo(a) < 0) ? this : a;\n };\n // BigInteger.prototype.max = bnMax;\n BigInteger.prototype.max = function (a) {\n return (this.compareTo(a) > 0) ? this : a;\n };\n // BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.and = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_and, r);\n return r;\n };\n // BigInteger.prototype.or = bnOr;\n BigInteger.prototype.or = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_or, r);\n return r;\n };\n // BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.xor = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_xor, r);\n return r;\n };\n // BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.andNot = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_andnot, r);\n return r;\n };\n // BigInteger.prototype.not = bnNot;\n // (public) ~this\n BigInteger.prototype.not = function () {\n var r = nbi();\n for (var i = 0; i < this.t; ++i) {\n r[i] = this.DM & ~this[i];\n }\n r.t = this.t;\n r.s = ~this.s;\n return r;\n };\n // BigInteger.prototype.shiftLeft = bnShiftLeft;\n // (public) this << n\n BigInteger.prototype.shiftLeft = function (n) {\n var r = nbi();\n if (n < 0) {\n this.rShiftTo(-n, r);\n }\n else {\n this.lShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.shiftRight = bnShiftRight;\n // (public) this >> n\n BigInteger.prototype.shiftRight = function (n) {\n var r = nbi();\n if (n < 0) {\n this.lShiftTo(-n, r);\n }\n else {\n this.rShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n // (public) returns index of lowest 1-bit (or -1 if none)\n BigInteger.prototype.getLowestSetBit = function () {\n for (var i = 0; i < this.t; ++i) {\n if (this[i] != 0) {\n return i * this.DB + (0,_util__WEBPACK_IMPORTED_MODULE_0__.lbit)(this[i]);\n }\n }\n if (this.s < 0) {\n return this.t * this.DB;\n }\n return -1;\n };\n // BigInteger.prototype.bitCount = bnBitCount;\n // (public) return number of set bits\n BigInteger.prototype.bitCount = function () {\n var r = 0;\n var x = this.s & this.DM;\n for (var i = 0; i < this.t; ++i) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.cbit)(this[i] ^ x);\n }\n return r;\n };\n // BigInteger.prototype.testBit = bnTestBit;\n // (public) true iff nth bit is set\n BigInteger.prototype.testBit = function (n) {\n var j = Math.floor(n / this.DB);\n if (j >= this.t) {\n return (this.s != 0);\n }\n return ((this[j] & (1 << (n % this.DB))) != 0);\n };\n // BigInteger.prototype.setBit = bnSetBit;\n // (public) this | (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n var j = e.t - 1;\n var w;\n var is1 = true;\n var r2 = nbi();\n var t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1) {\n w = (e[j] >> (i - k1)) & km;\n }\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);\n if (j > 0) {\n w |= e[j - 1] >> (this.DB + i - k1);\n }\n }\n n = k;\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0) {\n z.sqrTo(r, r2);\n }\n else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.modInverse = bnModInverse;\n // (public) 1/this % m (HAC 14.61)\n BigInteger.prototype.modInverse = function (m) {\n var ac = m.isEven();\n if ((this.isEven() && ac) || m.signum() == 0) {\n return BigInteger.ZERO;\n }\n var u = m.clone();\n var v = this.clone();\n var a = nbv(1);\n var b = nbv(0);\n var c = nbv(0);\n var d = nbv(1);\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u);\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a);\n b.subTo(m, b);\n }\n a.rShiftTo(1, a);\n }\n else if (!b.isEven()) {\n b.subTo(m, b);\n }\n b.rShiftTo(1, b);\n }\n while (v.isEven()) {\n v.rShiftTo(1, v);\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c);\n d.subTo(m, d);\n }\n c.rShiftTo(1, c);\n }\n else if (!d.isEven()) {\n d.subTo(m, d);\n }\n d.rShiftTo(1, d);\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u);\n if (ac) {\n a.subTo(c, a);\n }\n b.subTo(d, b);\n }\n else {\n v.subTo(u, v);\n if (ac) {\n c.subTo(a, c);\n }\n d.subTo(b, d);\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO;\n }\n if (d.compareTo(m) >= 0) {\n return d.subtract(m);\n }\n if (d.signum() < 0) {\n d.addTo(m, d);\n }\n else {\n return d;\n }\n if (d.signum() < 0) {\n return d.add(m);\n }\n else {\n return d;\n }\n };\n // BigInteger.prototype.pow = bnPow;\n // (public) this^e\n BigInteger.prototype.pow = function (e) {\n return this.exp(e, new NullExp());\n };\n // BigInteger.prototype.gcd = bnGCD;\n // (public) gcd(this,a) (HAC 14.54)\n BigInteger.prototype.gcd = function (a) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n return x;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n }\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n return y;\n };\n // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n // (public) test primality with certainty >= 1-.5^t\n BigInteger.prototype.isProbablePrime = function (t) {\n var i;\n var x = this.abs();\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i) {\n if (x[0] == lowprimes[i]) {\n return true;\n }\n }\n return false;\n }\n if (x.isEven()) {\n return false;\n }\n i = 1;\n while (i < lowprimes.length) {\n var m = lowprimes[i];\n var j = i + 1;\n while (j < lowprimes.length && m < lplim) {\n m *= lowprimes[j++];\n }\n m = x.modInt(m);\n while (i < j) {\n if (m % lowprimes[i++] == 0) {\n return false;\n }\n }\n }\n return x.millerRabin(t);\n };\n //#endregion PUBLIC\n //#region PROTECTED\n // BigInteger.prototype.copyTo = bnpCopyTo;\n // (protected) copy this to r\n BigInteger.prototype.copyTo = function (r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n r.t = this.t;\n r.s = this.s;\n };\n // BigInteger.prototype.fromInt = bnpFromInt;\n // (protected) set from integer value x, -DV <= x < DV\n BigInteger.prototype.fromInt = function (x) {\n this.t = 1;\n this.s = (x < 0) ? -1 : 0;\n if (x > 0) {\n this[0] = x;\n }\n else if (x < -1) {\n this[0] = x + this.DV;\n }\n else {\n this.t = 0;\n }\n };\n // BigInteger.prototype.fromString = bnpFromString;\n // (protected) set from string and radix\n BigInteger.prototype.fromString = function (s, b) {\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 256) {\n k = 8;\n /* byte array */\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n this.fromRadix(s, b);\n return;\n }\n this.t = 0;\n this.s = 0;\n var i = s.length;\n var mi = false;\n var sh = 0;\n while (--i >= 0) {\n var x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\") {\n mi = true;\n }\n continue;\n }\n mi = false;\n if (sh == 0) {\n this[this.t++] = x;\n }\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = (x >> (this.DB - sh));\n }\n else {\n this[this.t - 1] |= x << sh;\n }\n sh += k;\n if (sh >= this.DB) {\n sh -= this.DB;\n }\n }\n if (k == 8 && ((+s[0]) & 0x80) != 0) {\n this.s = -1;\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;\n }\n }\n this.clamp();\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.clamp = bnpClamp;\n // (protected) clamp off excess high words\n BigInteger.prototype.clamp = function () {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n };\n // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n // (protected) r = this << n*DB\n BigInteger.prototype.dlShiftTo = function (n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r.t = this.t + n;\n r.s = this.s;\n };\n // BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n // (protected) r = this >> n*DB\n BigInteger.prototype.drShiftTo = function (n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n };\n // BigInteger.prototype.lShiftTo = bnpLShiftTo;\n // (protected) r = this << n\n BigInteger.prototype.lShiftTo = function (n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB);\n var c = (this.s << bs) & this.DM;\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n };\n // BigInteger.prototype.rShiftTo = bnpRShiftTo;\n // (protected) r = this >> n\n BigInteger.prototype.rShiftTo = function (n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs;\n }\n r.t = this.t - ds;\n r.clamp();\n };\n // BigInteger.prototype.subTo = bnpSubTo;\n // (protected) r = this - a\n BigInteger.prototype.subTo = function (a, r) {\n var i = 0;\n var c = 0;\n var m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c < -1) {\n r[i++] = this.DV + c;\n }\n else if (c > 0) {\n r[i++] = c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyTo = function (a, r) {\n var x = this.abs();\n var y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n r.s = 0;\n r.clamp();\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.squareTo = bnpSquareTo;\n // (protected) r = this^2, r != this (HAC 14.16)\n BigInteger.prototype.squareTo = function (r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n }\n r.s = 0;\n r.clamp();\n };\n // BigInteger.prototype.divRemTo = bnpDivRemTo;\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n BigInteger.prototype.divRemTo = function (m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) {\n return;\n }\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromInt(0);\n }\n if (r != null) {\n this.copyTo(r);\n }\n return;\n }\n if (r == null) {\n r = nbi();\n }\n var y = nbi();\n var ts = this.s;\n var ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) {\n return;\n }\n var yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt;\n var d2 = (1 << this.F1) / yt;\n var e = 1 << this.F2;\n var i = r.t;\n var j = i - ys;\n var t = (q == null) ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q);\n }\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) {\n r.rShiftTo(nsh, r);\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.invDigit = bnpInvDigit;\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n BigInteger.prototype.invDigit = function () {\n if (this.t < 1) {\n return 0;\n }\n var x = this[0];\n if ((x & 1) == 0) {\n return 0;\n }\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y;\n };\n // BigInteger.prototype.isEven = bnpIsEven;\n // (protected) true iff this is even\n BigInteger.prototype.isEven = function () {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;\n };\n // BigInteger.prototype.exp = bnpExp;\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n BigInteger.prototype.exp = function (e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE;\n }\n var r = nbi();\n var r2 = nbi();\n var g = z.convert(this);\n var i = nbits(e) - 1;\n g.copyTo(r);\n while (--i >= 0) {\n z.sqrTo(r, r2);\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r);\n }\n else {\n var t = r;\n r = r2;\n r2 = t;\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.chunkSize = bnpChunkSize;\n // (protected) return x s.t. r^x < DV\n BigInteger.prototype.chunkSize = function (r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r));\n };\n // BigInteger.prototype.toRadix = bnpToRadix;\n // (protected) convert to radix string\n BigInteger.prototype.toRadix = function (b) {\n if (b == null) {\n b = 10;\n }\n if (this.signum() == 0 || b < 2 || b > 36) {\n return \"0\";\n }\n var cs = this.chunkSize(b);\n var a = Math.pow(b, cs);\n var d = nbv(a);\n var y = nbi();\n var z = nbi();\n var r = \"\";\n this.divRemTo(d, y, z);\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d, y, z);\n }\n return z.intValue().toString(b) + r;\n };\n // BigInteger.prototype.fromRadix = bnpFromRadix;\n // (protected) convert from radix string\n BigInteger.prototype.fromRadix = function (s, b) {\n this.fromInt(0);\n if (b == null) {\n b = 10;\n }\n var cs = this.chunkSize(b);\n var d = Math.pow(b, cs);\n var mi = false;\n var j = 0;\n var w = 0;\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\" && this.signum() == 0) {\n mi = true;\n }\n continue;\n }\n w = b * w + x;\n if (++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w, 0);\n j = 0;\n w = 0;\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j));\n this.dAddOffset(w, 0);\n }\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.fromNumber = bnpFromNumber;\n // (protected) alternate constructor\n BigInteger.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n } // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0);\n if (this.bitLength() > a) {\n this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);\n }\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n // (protected) r = this op a (bitwise)\n BigInteger.prototype.bitwiseTo = function (a, op, r) {\n var i;\n var f;\n var m = Math.min(a.t, this.t);\n for (i = 0; i < m; ++i) {\n r[i] = op(this[i], a[i]);\n }\n if (a.t < this.t) {\n f = a.s & this.DM;\n for (i = m; i < this.t; ++i) {\n r[i] = op(this[i], f);\n }\n r.t = this.t;\n }\n else {\n f = this.s & this.DM;\n for (i = m; i < a.t; ++i) {\n r[i] = op(f, a[i]);\n }\n r.t = a.t;\n }\n r.s = op(this.s, a.s);\n r.clamp();\n };\n // BigInteger.prototype.changeBit = bnpChangeBit;\n // (protected) this op (1<>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c > 0) {\n r[i++] = c;\n }\n else if (c < -1) {\n r[i++] = this.DV + c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.dMultiply = bnpDMultiply;\n // (protected) this *= n, this >= 0, 1 < n < DV\n BigInteger.prototype.dMultiply = function (n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n // BigInteger.prototype.dAddOffset = bnpDAddOffset;\n // (protected) this += n << w words, this >= 0\n BigInteger.prototype.dAddOffset = function (n, w) {\n if (n == 0) {\n return;\n }\n while (this.t <= w) {\n this[this.t++] = 0;\n }\n this[w] += n;\n while (this[w] >= this.DV) {\n this[w] -= this.DV;\n if (++w >= this.t) {\n this[this.t++] = 0;\n }\n ++this[w];\n }\n };\n // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyLowerTo = function (a, n, r) {\n var i = Math.min(this.t + a.t, n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while (i > 0) {\n r[--i] = 0;\n }\n for (var j = r.t - this.t; i < j; ++i) {\n r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);\n }\n for (var j = Math.min(a.t, n); i < j; ++i) {\n this.am(0, a[i], r, i, 0, n - i);\n }\n r.clamp();\n };\n // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyUpperTo = function (a, n, r) {\n --n;\n var i = r.t = this.t + a.t - n;\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = Math.max(n - this.t, 0); i < a.t; ++i) {\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);\n }\n r.clamp();\n r.drShiftTo(1, r);\n };\n // BigInteger.prototype.modInt = bnpModInt;\n // (protected) this % n, n < 2^26\n BigInteger.prototype.modInt = function (n) {\n if (n <= 0) {\n return 0;\n }\n var d = this.DV % n;\n var r = (this.s < 0) ? n - 1 : 0;\n if (this.t > 0) {\n if (d == 0) {\n r = this[0] % n;\n }\n else {\n for (var i = this.t - 1; i >= 0; --i) {\n r = (d * r + this[i]) % n;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.millerRabin = bnpMillerRabin;\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n BigInteger.prototype.millerRabin = function (t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if (k <= 0) {\n return false;\n }\n var r = n1.shiftRight(k);\n t = (t + 1) >> 1;\n if (t > lowprimes.length) {\n t = lowprimes.length;\n }\n var a = nbi();\n for (var i = 0; i < t; ++i) {\n // Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\n var y = a.modPow(r, this);\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this);\n if (y.compareTo(BigInteger.ONE) == 0) {\n return false;\n }\n }\n if (y.compareTo(n1) != 0) {\n return false;\n }\n }\n }\n return true;\n };\n // BigInteger.prototype.square = bnSquare;\n // (public) this^2\n BigInteger.prototype.square = function () {\n var r = nbi();\n this.squareTo(r);\n return r;\n };\n //#region ASYNC\n // Public API method\n BigInteger.prototype.gcda = function (a, callback) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n callback(x);\n return;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.\n var gcda1 = function () {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n if (!(x.signum() > 0)) {\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n setTimeout(function () { callback(y); }, 0); // escape\n }\n else {\n setTimeout(gcda1, 0);\n }\n };\n setTimeout(gcda1, 10);\n };\n // (protected) alternate constructor\n BigInteger.prototype.fromNumberAsync = function (a, b, c, callback) {\n if (\"number\" == typeof b) {\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n }\n var bnp_1 = this;\n var bnpfn1_1 = function () {\n bnp_1.dAddOffset(2, 0);\n if (bnp_1.bitLength() > a) {\n bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1);\n }\n if (bnp_1.isProbablePrime(b)) {\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(bnpfn1_1, 0);\n }\n };\n setTimeout(bnpfn1_1, 0);\n }\n }\n else {\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n return BigInteger;\n}());\n\n//#region REDUCERS\n//#region NullExp\nvar NullExp = /** @class */ (function () {\n function NullExp() {\n }\n // NullExp.prototype.convert = nNop;\n NullExp.prototype.convert = function (x) {\n return x;\n };\n // NullExp.prototype.revert = nNop;\n NullExp.prototype.revert = function (x) {\n return x;\n };\n // NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n };\n // NullExp.prototype.sqrTo = nSqrTo;\n NullExp.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n };\n return NullExp;\n}());\n// Modular reduction using \"classic\" algorithm\nvar Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m;\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m);\n }\n else {\n return x;\n }\n };\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x;\n };\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x);\n };\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Classic;\n}());\n//#endregion\n//#region Montgomery\n// Montgomery reduction\nvar Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r);\n }\n return r;\n };\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n };\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Montgomery;\n}());\n//#endregion Montgomery\n//#region Barrett\n// Barrett modular reduction\nvar Barrett = /** @class */ (function () {\n function Barrett(m) {\n this.m = m;\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);\n this.mu = this.r2.divide(m);\n }\n // Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.convert = function (x) {\n if (x.s < 0 || x.t > 2 * this.m.t) {\n return x.mod(this.m);\n }\n else if (x.compareTo(this.m) < 0) {\n return x;\n }\n else {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n };\n // Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.revert = function (x) {\n return x;\n };\n // Barrett.prototype.reduce = barrettReduce;\n // x = x mod m (HAC 14.42)\n Barrett.prototype.reduce = function (x) {\n x.drShiftTo(this.m.t - 1, this.r2);\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1;\n x.clamp();\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n while (x.compareTo(this.r2) < 0) {\n x.dAddOffset(1, this.m.t + 1);\n }\n x.subTo(this.r2, x);\n while (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Barrett.prototype.mulTo = barrettMulTo;\n // r = x*y mod m; x,y != r\n Barrett.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Barrett.prototype.sqrTo = barrettSqrTo;\n // r = x^2 mod m; x != r\n Barrett.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Barrett;\n}());\n//#endregion\n//#endregion REDUCERS\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\nfunction parseBigInt(str, r) {\n return new BigInteger(str, r);\n}\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\nvar inBrowser = typeof navigator !== \"undefined\";\nif (inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n BigInteger.prototype.am = function am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff;\n var xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n };\n dbits = 30;\n}\nelse if (inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n BigInteger.prototype.am = function am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n };\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n BigInteger.prototype.am = function am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff;\n var xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n };\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n// Digit conversions\nvar BI_RC = [];\nvar rr;\nvar vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c == null) ? -1 : c;\n}\n// return bigint initialized to value\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n}\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1;\n var t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/jsbn.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/jsbn/prng4.js":
-/*!*******************************!*\
- !*** ./lib/lib/jsbn/prng4.js ***!
- \*******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Arcfour\": () => (/* binding */ Arcfour),\n/* harmony export */ \"prng_newstate\": () => (/* binding */ prng_newstate),\n/* harmony export */ \"rng_psize\": () => (/* binding */ rng_psize)\n/* harmony export */ });\n// prng4.js - uses Arcfour as a PRNG\nvar Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = [];\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i;\n var j;\n var t;\n for (i = 0; i < 256; ++i) {\n this.S[i] = i;\n }\n j = 0;\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n };\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n };\n return Arcfour;\n}());\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/prng4.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/jsbn/rng.js":
-/*!*****************************!*\
- !*** ./lib/lib/jsbn/rng.js ***!
- \*****************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SecureRandom\": () => (/* binding */ SecureRandom)\n/* harmony export */ });\n/* harmony import */ var _prng4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prng4 */ \"./lib/lib/jsbn/prng4.js\");\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\nvar rng_state;\nvar rng_pool = null;\nvar rng_pptr;\n// Initialize the pool with junk if needed.\nif (rng_pool == null) {\n rng_pool = [];\n rng_pptr = 0;\n var t = void 0;\n if (typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256);\n window.crypto.getRandomValues(z);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255;\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var count = 0;\n var onMouseMoveListener_1 = function (ev) {\n count = count || 0;\n if (count >= 256 || rng_pptr >= _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n return;\n }\n try {\n var mouseCoordinates = ev.x + ev.y;\n rng_pool[rng_pptr++] = mouseCoordinates & 255;\n count += 1;\n }\n catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n };\n if (typeof window !== 'undefined') {\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n }\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_state = (0,_prng4__WEBPACK_IMPORTED_MODULE_0__.prng_newstate)();\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n var random = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = random & 255;\n }\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\nvar SecureRandom = /** @class */ (function () {\n function SecureRandom() {\n }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte();\n }\n };\n return SecureRandom;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rng.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/jsbn/rsa.js":
-/*!*****************************!*\
- !*** ./lib/lib/jsbn/rsa.js ***!
- \*****************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RSAKey\": () => (/* binding */ RSAKey)\n/* harmony export */ });\n/* harmony import */ var _jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _rng__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng */ \"./lib/lib/jsbn/rng.js\");\n// Depends on jsbn.js and rng.js\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n// convert a (hex) string to a bignum object\n\n\n// function linebrk(s,n) {\n// var ret = \"\";\n// var i = 0;\n// while(i + n < s.length) {\n// ret += s.substring(i,i+n) + \"\\n\";\n// i += n;\n// }\n// return ret + s.substring(i,s.length);\n// }\n// function byte2Hex(b) {\n// if(b < 0x10)\n// return \"0\" + b.toString(16);\n// else\n// return b.toString(16);\n// }\nfunction pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\");\n return null;\n }\n var len = n - s.length - 6;\n var filler = \"\";\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\";\n }\n var m = \"0001\" + filler + \"00\" + s;\n return (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(m, 16);\n}\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s, n) {\n if (n < s.length + 11) { // TODO: fix for utf-8\n console.error(\"Message too long for RSA\");\n return null;\n }\n var ba = [];\n var i = s.length - 1;\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if (c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if ((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var x = [];\n while (n > 2) { // random non-zero pad\n x[0] = 0;\n while (x[0] == 0) {\n rng.nextBytes(x);\n }\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(ba);\n}\n// \"empty\" RSA key constructor\nvar RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n);\n };\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n);\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p);\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n };\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n }\n else {\n console.error(\"Invalid RSA public key\");\n }\n };\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var maxLength = (this.n.bitLength() + 7) >> 3;\n var m = pkcs1pad2(text, maxLength);\n if (m == null) {\n return null;\n }\n var c = this.doPublic(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n var length = h.length;\n // fix zero before result\n for (var i = 0; i < maxLength * 2 - length; i++) {\n h = \"0\" + h;\n }\n return h;\n };\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, D) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.setPrivateEx = RSASetPrivateEx;\n // Set the private key fields N, e, d and CRT params from hex strings\n RSAKey.prototype.setPrivateEx = function (N, E, D, P, Q, DP, DQ, C) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n this.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(P, 16);\n this.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(Q, 16);\n this.dmp1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DP, 16);\n this.dmq1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DQ, 16);\n this.coeff = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(C, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.generate = RSAGenerate;\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generate = function (B, E) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n for (;;) {\n for (;;) {\n this.p = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(B - qs, 1, rng);\n if (this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {\n break;\n }\n }\n for (;;) {\n this.q = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(qs, 1, rng);\n if (this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {\n break;\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p;\n this.p = this.q;\n this.q = t;\n }\n var p1 = this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q);\n this.d = ee.modInverse(phi);\n this.dmp1 = this.d.mod(p1);\n this.dmq1 = this.d.mod(q1);\n this.coeff = this.q.modInverse(this.p);\n break;\n }\n }\n };\n // RSAKey.prototype.decrypt = RSADecrypt;\n // Return the PKCS#1 RSA decryption of \"ctext\".\n // \"ctext\" is an even-length hex string and the output is a plain string.\n RSAKey.prototype.decrypt = function (ctext) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(ctext, 16);\n var m = this.doPrivate(c);\n if (m == null) {\n return null;\n }\n return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);\n };\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generateAsync = function (B, E, callback) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n var rsa = this;\n // These functions have non-descript names because they were originally for(;;) loops.\n // I don't know about cryptography to give them better names than loop1-4.\n var loop1 = function () {\n var loop4 = function () {\n if (rsa.p.compareTo(rsa.q) <= 0) {\n var t = rsa.p;\n rsa.p = rsa.q;\n rsa.q = t;\n }\n var p1 = rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n rsa.n = rsa.p.multiply(rsa.q);\n rsa.d = ee.modInverse(phi);\n rsa.dmp1 = rsa.d.mod(p1);\n rsa.dmq1 = rsa.d.mod(q1);\n rsa.coeff = rsa.q.modInverse(rsa.p);\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(loop1, 0);\n }\n };\n var loop3 = function () {\n rsa.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.q.fromNumberAsync(qs, 1, rng, function () {\n rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.q.isProbablePrime(10)) {\n setTimeout(loop4, 0);\n }\n else {\n setTimeout(loop3, 0);\n }\n });\n });\n };\n var loop2 = function () {\n rsa.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.p.fromNumberAsync(B - qs, 1, rng, function () {\n rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.p.isProbablePrime(10)) {\n setTimeout(loop3, 0);\n }\n else {\n setTimeout(loop2, 0);\n }\n });\n });\n };\n setTimeout(loop2, 0);\n };\n setTimeout(loop1, 0);\n };\n RSAKey.prototype.sign = function (text, digestMethod, digestName) {\n var header = getDigestHeader(digestName);\n var digest = header + digestMethod(text).toString();\n var m = pkcs1pad1(digest, this.n.bitLength() / 4);\n if (m == null) {\n return null;\n }\n var c = this.doPrivate(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n if ((h.length & 1) == 0) {\n return h;\n }\n else {\n return \"0\" + h;\n }\n };\n RSAKey.prototype.verify = function (text, signature, digestMethod) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(signature, 16);\n var m = this.doPublic(c);\n if (m == null) {\n return null;\n }\n var unpadded = m.toString(16).replace(/^1f+00/, \"\");\n var digest = removeDigestHeader(unpadded);\n return digest == digestMethod(text).toString();\n };\n return RSAKey;\n}());\n\n// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\nfunction pkcs1unpad2(d, n) {\n var b = d.toByteArray();\n var i = 0;\n while (i < b.length && b[i] == 0) {\n ++i;\n }\n if (b.length - i != n - 1 || b[i] != 2) {\n return null;\n }\n ++i;\n while (b[i] != 0) {\n if (++i >= b.length) {\n return null;\n }\n }\n var ret = \"\";\n while (++i < b.length) {\n var c = b[i] & 255;\n if (c < 128) { // utf-8 decode\n ret += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63));\n ++i;\n }\n else {\n ret += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63));\n i += 2;\n }\n }\n return ret;\n}\n// https://tools.ietf.org/html/rfc3447#page-43\nvar DIGEST_HEADERS = {\n md2: \"3020300c06082a864886f70d020205000410\",\n md5: \"3020300c06082a864886f70d020505000410\",\n sha1: \"3021300906052b0e03021a05000414\",\n sha224: \"302d300d06096086480165030402040500041c\",\n sha256: \"3031300d060960864801650304020105000420\",\n sha384: \"3041300d060960864801650304020205000430\",\n sha512: \"3051300d060960864801650304020305000440\",\n ripemd160: \"3021300906052b2403020105000414\"\n};\nfunction getDigestHeader(name) {\n return DIGEST_HEADERS[name] || \"\";\n}\nfunction removeDigestHeader(str) {\n for (var name_1 in DIGEST_HEADERS) {\n if (DIGEST_HEADERS.hasOwnProperty(name_1)) {\n var header = DIGEST_HEADERS[name_1];\n var len = header.length;\n if (str.substr(0, len) == header) {\n return str.substr(len);\n }\n }\n }\n return str;\n}\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n// function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n// }\n// public\n// RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rsa.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/jsbn/util.js":
-/*!******************************!*\
- !*** ./lib/lib/jsbn/util.js ***!
- \******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cbit\": () => (/* binding */ cbit),\n/* harmony export */ \"int2char\": () => (/* binding */ int2char),\n/* harmony export */ \"lbit\": () => (/* binding */ lbit),\n/* harmony export */ \"op_and\": () => (/* binding */ op_and),\n/* harmony export */ \"op_andnot\": () => (/* binding */ op_andnot),\n/* harmony export */ \"op_or\": () => (/* binding */ op_or),\n/* harmony export */ \"op_xor\": () => (/* binding */ op_xor)\n/* harmony export */ });\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n//#region BIT_OPERATIONS\n// (public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\n// (public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) {\n return -1;\n }\n var r = 0;\n if ((x & 0xffff) == 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) == 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) == 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) == 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) == 0) {\n ++r;\n }\n return r;\n}\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n//#endregion BIT_OPERATIONS\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/util.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/jsrsasign/asn1-1.0.js":
-/*!***************************************!*\
- !*** ./lib/lib/jsrsasign/asn1-1.0.js ***!
- \***************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license MIT License\n */\n/**\n * kjur's class library name space\n * \n * This name space provides following name spaces:\n *
\n * - {@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder
\n * - {@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL
\n * - {@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities
\n *
\n * \n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n * \n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n *
PROVIDING ASN.1 PRIMITIVES
\n * Here are ASN.1 DER primitive classes.\n * \n * - 0x01 {@link KJUR.asn1.DERBoolean}
\n * - 0x02 {@link KJUR.asn1.DERInteger}
\n * - 0x03 {@link KJUR.asn1.DERBitString}
\n * - 0x04 {@link KJUR.asn1.DEROctetString}
\n * - 0x05 {@link KJUR.asn1.DERNull}
\n * - 0x06 {@link KJUR.asn1.DERObjectIdentifier}
\n * - 0x0a {@link KJUR.asn1.DEREnumerated}
\n * - 0x0c {@link KJUR.asn1.DERUTF8String}
\n * - 0x12 {@link KJUR.asn1.DERNumericString}
\n * - 0x13 {@link KJUR.asn1.DERPrintableString}
\n * - 0x14 {@link KJUR.asn1.DERTeletexString}
\n * - 0x16 {@link KJUR.asn1.DERIA5String}
\n * - 0x17 {@link KJUR.asn1.DERUTCTime}
\n * - 0x18 {@link KJUR.asn1.DERGeneralizedTime}
\n * - 0x30 {@link KJUR.asn1.DERSequence}
\n * - 0x31 {@link KJUR.asn1.DERSet}
\n *
\n * OTHER ASN.1 CLASSES
\n * \n * - {@link KJUR.asn1.ASN1Object}
\n * - {@link KJUR.asn1.DERAbstractString}
\n * - {@link KJUR.asn1.DERAbstractTime}
\n * - {@link KJUR.asn1.DERAbstractStructured}
\n * - {@link KJUR.asn1.DERTaggedObject}
\n *
\n * SUB NAME SPACES
\n * \n * - {@link KJUR.asn1.cades} - CAdES long term signature format
\n * - {@link KJUR.asn1.cms} - Cryptographic Message Syntax
\n * - {@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)
\n * - {@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format
\n * - {@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL
\n *
\n * \n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n }\n var biMask = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(hMask, 16);\n var biNeg = biMask.xor(bigIntegerValue).add(_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n h = biNeg.toString(16).replace(/^-/, '');\n }\n return h;\n };\n /**\n * get PEM string from hexadecimal data and header string\n * @name getPEMStringFromHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} dataHex hexadecimal string of PEM body\n * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')\n * @return {String} PEM formatted string of input data\n * @description\n * This method converts a hexadecimal string to a PEM string with\n * a specified header. Its line break will be CRLF(\"\\r\\n\").\n * @example\n * var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');\n * // value of pem will be:\n * -----BEGIN PRIVATE KEY-----\n * YWFh\n * -----END PRIVATE KEY-----\n */\n this.getPEMStringFromHex = function (dataHex, pemHeader) {\n return hextopem(dataHex, pemHeader);\n };\n /**\n * generate ASN1Object specifed by JSON parameters\n * @name newObject\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return {KJUR.asn1.ASN1Object} generated object\n * @since asn1 1.0.3\n * @description\n * generate any ASN1Object specified by JSON param\n * including ASN.1 primitive or structured.\n * Generally 'param' can be described as follows:\n * \n * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n *
\n * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n * \n * - 'bool' - DERBoolean
\n * - 'int' - DERInteger
\n * - 'bitstr' - DERBitString
\n * - 'octstr' - DEROctetString
\n * - 'null' - DERNull
\n * - 'oid' - DERObjectIdentifier
\n * - 'enum' - DEREnumerated
\n * - 'utf8str' - DERUTF8String
\n * - 'numstr' - DERNumericString
\n * - 'prnstr' - DERPrintableString
\n * - 'telstr' - DERTeletexString
\n * - 'ia5str' - DERIA5String
\n * - 'utctime' - DERUTCTime
\n * - 'gentime' - DERGeneralizedTime
\n * - 'seq' - DERSequence
\n * - 'set' - DERSet
\n * - 'tag' - DERTaggedObject
\n *
\n * @example\n * newObject({'prnstr': 'aaa'});\n * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})\n * // ASN.1 Tagged Object\n * newObject({'tag': {'tag': 'a1',\n * 'explicit': true,\n * 'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});\n * // more simple representation of ASN.1 Tagged Object\n * newObject({'tag': ['a1',\n * true,\n * {'seq': [\n * {'int': 3},\n * {'prnstr': 'aaa'}]}\n * ]});\n */\n this.newObject = function (param) {\n var _KJUR = KJUR, _KJUR_asn1 = _KJUR.asn1, _DERBoolean = _KJUR_asn1.DERBoolean, _DERInteger = _KJUR_asn1.DERInteger, _DERBitString = _KJUR_asn1.DERBitString, _DEROctetString = _KJUR_asn1.DEROctetString, _DERNull = _KJUR_asn1.DERNull, _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier, _DEREnumerated = _KJUR_asn1.DEREnumerated, _DERUTF8String = _KJUR_asn1.DERUTF8String, _DERNumericString = _KJUR_asn1.DERNumericString, _DERPrintableString = _KJUR_asn1.DERPrintableString, _DERTeletexString = _KJUR_asn1.DERTeletexString, _DERIA5String = _KJUR_asn1.DERIA5String, _DERUTCTime = _KJUR_asn1.DERUTCTime, _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime, _DERSequence = _KJUR_asn1.DERSequence, _DERSet = _KJUR_asn1.DERSet, _DERTaggedObject = _KJUR_asn1.DERTaggedObject, _newObject = _KJUR_asn1.ASN1Util.newObject;\n var keys = Object.keys(param);\n if (keys.length != 1)\n throw \"key of param shall be only one.\";\n var key = keys[0];\n if (\":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\":\" + key + \":\") == -1)\n throw \"undefined key: \" + key;\n if (key == \"bool\")\n return new _DERBoolean(param[key]);\n if (key == \"int\")\n return new _DERInteger(param[key]);\n if (key == \"bitstr\")\n return new _DERBitString(param[key]);\n if (key == \"octstr\")\n return new _DEROctetString(param[key]);\n if (key == \"null\")\n return new _DERNull(param[key]);\n if (key == \"oid\")\n return new _DERObjectIdentifier(param[key]);\n if (key == \"enum\")\n return new _DEREnumerated(param[key]);\n if (key == \"utf8str\")\n return new _DERUTF8String(param[key]);\n if (key == \"numstr\")\n return new _DERNumericString(param[key]);\n if (key == \"prnstr\")\n return new _DERPrintableString(param[key]);\n if (key == \"telstr\")\n return new _DERTeletexString(param[key]);\n if (key == \"ia5str\")\n return new _DERIA5String(param[key]);\n if (key == \"utctime\")\n return new _DERUTCTime(param[key]);\n if (key == \"gentime\")\n return new _DERGeneralizedTime(param[key]);\n if (key == \"seq\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSequence({ 'array': a });\n }\n if (key == \"set\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSet({ 'array': a });\n }\n if (key == \"tag\") {\n var tagParam = param[key];\n if (Object.prototype.toString.call(tagParam) === '[object Array]' &&\n tagParam.length == 3) {\n var obj = _newObject(tagParam[2]);\n return new _DERTaggedObject({ tag: tagParam[0],\n explicit: tagParam[1],\n obj: obj });\n }\n else {\n var newParam = {};\n if (tagParam.explicit !== undefined)\n newParam.explicit = tagParam.explicit;\n if (tagParam.tag !== undefined)\n newParam.tag = tagParam.tag;\n if (tagParam.obj === undefined)\n throw \"obj shall be specified for 'tag'.\";\n newParam.obj = _newObject(tagParam.obj);\n return new _DERTaggedObject(newParam);\n }\n }\n };\n /**\n * get encoded hexadecimal string of ASN1Object specifed by JSON parameters\n * @name jsonToASN1HEX\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return hexadecimal string of ASN1Object\n * @since asn1 1.0.4\n * @description\n * As for ASN.1 object representation of JSON object,\n * please see {@link newObject}.\n * @example\n * jsonToASN1HEX({'prnstr': 'aaa'});\n */\n this.jsonToASN1HEX = function (param) {\n var asn1Obj = this.newObject(param);\n return asn1Obj.getEncodedHex();\n };\n};\n/**\n * get dot noted oid number string from hexadecimal value of OID\n * @name oidHexToInt\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} hex hexadecimal value of object identifier\n * @return {String} dot noted string of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from hexadecimal string representation of\n * ASN.1 value of object identifier to oid number string.\n * @example\n * KJUR.asn1.ASN1Util.oidHexToInt('550406') → \"2.5.4.6\"\n */\nKJUR.asn1.ASN1Util.oidHexToInt = function (hex) {\n var s = \"\";\n var i01 = parseInt(hex.substr(0, 2), 16);\n var i0 = Math.floor(i01 / 40);\n var i1 = i01 % 40;\n var s = i0 + \".\" + i1;\n var binbuf = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n var value = parseInt(hex.substr(i, 2), 16);\n var bin = (\"00000000\" + value.toString(2)).slice(-8);\n binbuf = binbuf + bin.substr(1, 7);\n if (bin.substr(0, 1) == \"0\") {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(binbuf, 2);\n s = s + \".\" + bi.toString(10);\n binbuf = \"\";\n }\n }\n ;\n return s;\n};\n/**\n * get hexadecimal value of object identifier from dot noted oid value\n * @name oidIntToHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} oidString dot noted string of object identifier\n * @return {String} hexadecimal value of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from object identifier value string.\n * to hexadecimal string representation of it.\n * @example\n * KJUR.asn1.ASN1Util.oidIntToHex(\"2.5.4.6\") → \"550406\"\n */\nKJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n return h;\n};\n// ********************************************************************\n// Abstract ASN.1 Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * base class for ASN.1 DER encoder object\n * @name KJUR.asn1.ASN1Object\n * @class base class for ASN.1 DER encoder object\n * @property {Boolean} isModified flag whether internal data was changed\n * @property {String} hTLV hexadecimal string of ASN.1 TLV\n * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)\n * @property {String} hL hexadecimal string of ASN.1 TLV length(L)\n * @property {String} hV hexadecimal string of ASN.1 TLV value(V)\n * @description\n */\nKJUR.asn1.ASN1Object = function () {\n var isModified = true;\n var hTLV = null;\n var hT = '00';\n var hL = '00';\n var hV = '';\n /**\n * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)\n * @name getLengthHexFromValue\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV length(L)\n */\n this.getLengthHexFromValue = function () {\n if (typeof this.hV == \"undefined\" || this.hV == null) {\n throw \"this.hV is null or undefined.\";\n }\n if (this.hV.length % 2 == 1) {\n throw \"value hex must be even length: n=\" + hV.length + \",v=\" + this.hV;\n }\n var n = this.hV.length / 2;\n var hN = n.toString(16);\n if (hN.length % 2 == 1) {\n hN = \"0\" + hN;\n }\n if (n < 128) {\n return hN;\n }\n else {\n var hNlen = hN.length / 2;\n if (hNlen > 15) {\n throw \"ASN.1 length too long to represent by 8x: n = \" + n.toString(16);\n }\n var head = 128 + hNlen;\n return head.toString(16) + hN;\n }\n };\n /**\n * get hexadecimal string of ASN.1 TLV bytes\n * @name getEncodedHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV\n */\n this.getEncodedHex = function () {\n if (this.hTLV == null || this.isModified) {\n this.hV = this.getFreshValueHex();\n this.hL = this.getLengthHexFromValue();\n this.hTLV = this.hT + this.hL + this.hV;\n this.isModified = false;\n //alert(\"first time: \" + this.hTLV);\n }\n return this.hTLV;\n };\n /**\n * get hexadecimal string of ASN.1 TLV value(V) bytes\n * @name getValueHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes\n */\n this.getValueHex = function () {\n this.getEncodedHex();\n return this.hV;\n };\n this.getFreshValueHex = function () {\n return '';\n };\n};\n// == BEGIN DERAbstractString ================================================\n/**\n * base class for ASN.1 DER string classes\n * @name KJUR.asn1.DERAbstractString\n * @class base class for ASN.1 DER string classes\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @property {String} s internal string of value\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - str - specify initial ASN.1 value(V) by a string
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERAbstractString = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var s = null;\n var hV = null;\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @return {String} string value of this string object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newS value by a string to set\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(this.s);\n };\n /**\n * set value by a hexadecimal string\n * @name setStringHex\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newHexString value by a hexadecimal string to set\n */\n this.setStringHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\") {\n this.setString(params);\n }\n else if (typeof params['str'] != \"undefined\") {\n this.setString(params['str']);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setStringHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);\n// == END DERAbstractString ================================================\n// == BEGIN DERAbstractTime ==================================================\n/**\n * base class for ASN.1 DER Generalized/UTCTime class\n * @name KJUR.asn1.DERAbstractTime\n * @class base class for ASN.1 DER Generalized/UTCTime class\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractTime = function (params) {\n KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);\n var s = null;\n var date = null;\n // --- PRIVATE METHODS --------------------\n this.localDateToUTC = function (d) {\n utc = d.getTime() + (d.getTimezoneOffset() * 60000);\n var utcDate = new Date(utc);\n return utcDate;\n };\n /*\n * format date string by Data object\n * @name formatDate\n * @memberOf KJUR.asn1.AbstractTime;\n * @param {Date} dateObject\n * @param {string} type 'utc' or 'gen'\n * @param {boolean} withMillis flag for with millisections or not\n * @description\n * 'withMillis' flag is supported from asn1 1.0.6.\n */\n this.formatDate = function (dateObject, type, withMillis) {\n var pad = this.zeroPadding;\n var d = this.localDateToUTC(dateObject);\n var year = String(d.getFullYear());\n if (type == 'utc')\n year = year.substr(2, 2);\n var month = pad(String(d.getMonth() + 1), 2);\n var day = pad(String(d.getDate()), 2);\n var hour = pad(String(d.getHours()), 2);\n var min = pad(String(d.getMinutes()), 2);\n var sec = pad(String(d.getSeconds()), 2);\n var s = year + month + day + hour + min + sec;\n if (withMillis === true) {\n var millis = d.getMilliseconds();\n if (millis != 0) {\n var sMillis = pad(String(millis), 3);\n sMillis = sMillis.replace(/[0]+$/, \"\");\n s = s + \".\" + sMillis;\n }\n }\n return s + \"Z\";\n };\n this.zeroPadding = function (s, len) {\n if (s.length >= len)\n return s;\n return new Array(len - s.length + 1).join('0') + s;\n };\n // --- PUBLIC METHODS --------------------\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @return {String} string value of this time object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {String} newS value by a string to set such like \"130430235959Z\"\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(newS);\n };\n /**\n * set value by a Date object\n * @name setByDateValue\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {Integer} year year of date (ex. 2013)\n * @param {Integer} month month of date between 1 and 12 (ex. 12)\n * @param {Integer} day day of month\n * @param {Integer} hour hours of date\n * @param {Integer} min minutes of date\n * @param {Integer} sec seconds of date\n */\n this.setByDateValue = function (year, month, day, hour, min, sec) {\n var dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));\n this.setByDate(dateObject);\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);\n// == END DERAbstractTime ==================================================\n// == BEGIN DERAbstractStructured ============================================\n/**\n * base class for ASN.1 DER structured class\n * @name KJUR.asn1.DERAbstractStructured\n * @class base class for ASN.1 DER structured class\n * @property {Array} asn1Array internal array of ASN1Object\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractStructured = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var asn1Array = null;\n /**\n * set value by array of ASN1Object\n * @name setByASN1ObjectArray\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {array} asn1ObjectArray array of ASN1Object to set\n */\n this.setByASN1ObjectArray = function (asn1ObjectArray) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array = asn1ObjectArray;\n };\n /**\n * append an ASN1Object to internal array\n * @name appendASN1Object\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {ASN1Object} asn1Object to add\n */\n this.appendASN1Object = function (asn1Object) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array.push(asn1Object);\n };\n this.asn1Array = new Array();\n if (typeof params != \"undefined\") {\n if (typeof params['array'] != \"undefined\") {\n this.asn1Array = params['array'];\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);\n// ********************************************************************\n// ASN.1 Object Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * class for ASN.1 DER Boolean\n * @name KJUR.asn1.DERBoolean\n * @class class for ASN.1 DER Boolean\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERBoolean = function () {\n KJUR.asn1.DERBoolean.superclass.constructor.call(this);\n this.hT = \"01\";\n this.hTLV = \"0101ff\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Integer\n * @name KJUR.asn1.DERInteger\n * @class class for ASN.1 DER Integer\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - int - specify initial ASN.1 value(V) by integer value
\n * - bigint - specify initial ASN.1 value(V) by BigInteger object
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERInteger = function (params) {\n KJUR.asn1.DERInteger.superclass.constructor.call(this);\n this.hT = \"02\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DERInteger\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n * @example\n * new KJUR.asn1.DERInteger(123);\n * new KJUR.asn1.DERInteger({'int': 123});\n * new KJUR.asn1.DERInteger({'hex': '1fad'});\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['bigint'] != \"undefined\") {\n this.setByBigInteger(params['bigint']);\n }\n else if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER encoded BitString primitive\n * @name KJUR.asn1.DERBitString\n * @class class for ASN.1 DER encoded BitString primitive\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - bin - specify binary string (ex. '10111')
\n * - array - specify array of boolean (ex. [true,false,true,true])
\n * - hex - specify hexadecimal string of ASN.1 value(V) including unused bits
\n * - obj - specify {@link KJUR.asn1.ASN1Util.newObject}\n * argument for \"BitString encapsulates\" structure.
\n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: 'obj' parameter have been supported since\n * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).
\n * @example\n * // default constructor\n * o = new KJUR.asn1.DERBitString();\n * // initialize with binary string\n * o = new KJUR.asn1.DERBitString({bin: \"1011\"});\n * // initialize with boolean array\n * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});\n * // initialize with hexadecimal string (04 is unused bits)\n * o = new KJUR.asn1.DEROctetString({hex: \"04bac0\"});\n * // initialize with ASN1Util.newObject argument for encapsulated\n * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // BIT STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DERBitString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = \"00\" + o.getEncodedHex();\n }\n KJUR.asn1.DERBitString.superclass.constructor.call(this);\n this.hT = \"03\";\n /**\n * set ASN.1 value(V) by a hexadecimal string including unused bits\n * @name setHexValueIncludingUnusedBits\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} newHexStringIncludingUnusedBits\n */\n this.setHexValueIncludingUnusedBits = function (newHexStringIncludingUnusedBits) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = newHexStringIncludingUnusedBits;\n };\n /**\n * set ASN.1 value(V) by unused bit and hexadecimal string of value\n * @name setUnusedBitsAndHexValue\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {Integer} unusedBits\n * @param {String} hValue\n */\n this.setUnusedBitsAndHexValue = function (unusedBits, hValue) {\n if (unusedBits < 0 || 7 < unusedBits) {\n throw \"unused bits shall be from 0 to 7: u = \" + unusedBits;\n }\n var hUnusedBits = \"0\" + unusedBits;\n this.hTLV = null;\n this.isModified = true;\n this.hV = hUnusedBits + hValue;\n };\n /**\n * set ASN.1 DER BitString by binary string
\n * @name setByBinaryString\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} binaryString binary value string (i.e. '10111')\n * @description\n * Its unused bits will be calculated automatically by length of\n * 'binaryValue'.
\n * NOTE: Trailing zeros '0' will be ignored.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray(\"01011\");\n */\n this.setByBinaryString = function (binaryString) {\n binaryString = binaryString.replace(/0+$/, '');\n var unusedBits = 8 - binaryString.length % 8;\n if (unusedBits == 8)\n unusedBits = 0;\n for (var i = 0; i <= unusedBits; i++) {\n binaryString += '0';\n }\n var h = '';\n for (var i = 0; i < binaryString.length - 1; i += 8) {\n var b = binaryString.substr(i, 8);\n var x = parseInt(b, 2).toString(16);\n if (x.length == 1)\n x = '0' + x;\n h += x;\n }\n this.hTLV = null;\n this.isModified = true;\n this.hV = '0' + unusedBits + h;\n };\n /**\n * set ASN.1 TLV value(V) by an array of boolean
\n * @name setByBooleanArray\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {array} booleanArray array of boolean (ex. [true, false, true])\n * @description\n * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray([false, true, false, true, true]);\n */\n this.setByBooleanArray = function (booleanArray) {\n var s = '';\n for (var i = 0; i < booleanArray.length; i++) {\n if (booleanArray[i] == true) {\n s += '1';\n }\n else {\n s += '0';\n }\n }\n this.setByBinaryString(s);\n };\n /**\n * generate an array of falses with specified length
\n * @name newFalseArray\n * @memberOf KJUR.asn1.DERBitString\n * @function\n * @param {Integer} nLength length of array to generate\n * @return {array} array of boolean falses\n * @description\n * This static method may be useful to initialize boolean array.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.newFalseArray(3) → [false, false, false]\n */\n this.newFalseArray = function (nLength) {\n var a = new Array(nLength);\n for (var i = 0; i < nLength; i++) {\n a[i] = false;\n }\n return a;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\" && params.toLowerCase().match(/^[0-9a-f]+$/)) {\n this.setHexValueIncludingUnusedBits(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setHexValueIncludingUnusedBits(params['hex']);\n }\n else if (typeof params['bin'] != \"undefined\") {\n this.setByBinaryString(params['bin']);\n }\n else if (typeof params['array'] != \"undefined\") {\n this.setByBooleanArray(params['array']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER OctetString
\n * @name KJUR.asn1.DEROctetString\n * @class class for ASN.1 DER OctetString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * This class provides ASN.1 OctetString simple type.
\n * Supported \"params\" attributes are:\n * \n * - str - to set a string as a value
\n * - hex - to set a hexadecimal string as a value
\n * - obj - to set a encapsulated ASN.1 value by JSON object\n * which is defined in {@link KJUR.asn1.ASN1Util.newObject}
\n *
\n * NOTE: A parameter 'obj' have been supported\n * for \"OCTET STRING, encapsulates\" structure.\n * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).\n * @see KJUR.asn1.DERAbstractString - superclass\n * @example\n * // default constructor\n * o = new KJUR.asn1.DEROctetString();\n * // initialize with string\n * o = new KJUR.asn1.DEROctetString({str: \"aaa\"});\n * // initialize with hexadecimal string\n * o = new KJUR.asn1.DEROctetString({hex: \"616161\"});\n * // initialize with ASN1Util.newObject argument\n * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // OCTET STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DEROctetString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = o.getEncodedHex();\n }\n KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);\n this.hT = \"04\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER Null\n * @name KJUR.asn1.DERNull\n * @class class for ASN.1 DER Null\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERNull = function () {\n KJUR.asn1.DERNull.superclass.constructor.call(this);\n this.hT = \"05\";\n this.hTLV = \"0500\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER ObjectIdentifier\n * @name KJUR.asn1.DERObjectIdentifier\n * @class class for ASN.1 DER ObjectIdentifier\n * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERObjectIdentifier = function (params) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);\n this.hT = \"06\";\n /**\n * set value by a hexadecimal string\n * @name setValueHex\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} newHexString hexadecimal value of OID bytes\n */\n this.setValueHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n /**\n * set value by a OID string
\n * @name setValueOidString\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidString OID string (ex. 2.5.4.13)\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueOidString(\"2.5.4.13\");\n */\n this.setValueOidString = function (oidString) {\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = h;\n };\n /**\n * set value by a OID name\n * @name setValueName\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidName OID name (ex. 'serverAuth')\n * @since 1.0.1\n * @description\n * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.\n * Otherwise raise error.\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueName(\"serverAuth\");\n */\n this.setValueName = function (oidName) {\n var oid = KJUR.asn1.x509.OID.name2oid(oidName);\n if (oid !== '') {\n this.setValueOidString(oid);\n }\n else {\n throw \"DERObjectIdentifier oidName undefined: \" + oidName;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (params !== undefined) {\n if (typeof params === \"string\") {\n if (params.match(/^[0-2].[0-9.]+$/)) {\n this.setValueOidString(params);\n }\n else {\n this.setValueName(params);\n }\n }\n else if (params.oid !== undefined) {\n this.setValueOidString(params.oid);\n }\n else if (params.hex !== undefined) {\n this.setValueHex(params.hex);\n }\n else if (params.name !== undefined) {\n this.setValueName(params.name);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Enumerated\n * @name KJUR.asn1.DEREnumerated\n * @class class for ASN.1 DER Enumerated\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - int - specify initial ASN.1 value(V) by integer value
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n *
\n * NOTE: 'params' can be omitted.\n * @example\n * new KJUR.asn1.DEREnumerated(123);\n * new KJUR.asn1.DEREnumerated({int: 123});\n * new KJUR.asn1.DEREnumerated({hex: '1fad'});\n */\nKJUR.asn1.DEREnumerated = function (params) {\n KJUR.asn1.DEREnumerated.superclass.constructor.call(this);\n this.hT = \"0a\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTF8String\n * @name KJUR.asn1.DERUTF8String\n * @class class for ASN.1 DER UTF8String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERUTF8String = function (params) {\n KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);\n this.hT = \"0c\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER NumericString\n * @name KJUR.asn1.DERNumericString\n * @class class for ASN.1 DER NumericString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERNumericString = function (params) {\n KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);\n this.hT = \"12\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER PrintableString\n * @name KJUR.asn1.DERPrintableString\n * @class class for ASN.1 DER PrintableString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERPrintableString = function (params) {\n KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);\n this.hT = \"13\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER TeletexString\n * @name KJUR.asn1.DERTeletexString\n * @class class for ASN.1 DER TeletexString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERTeletexString = function (params) {\n KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);\n this.hT = \"14\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER IA5String\n * @name KJUR.asn1.DERIA5String\n * @class class for ASN.1 DER IA5String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERIA5String = function (params) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);\n this.hT = \"16\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTCTime\n * @name KJUR.asn1.DERUTCTime\n * @class class for ASN.1 DER UTCTime\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n * - date - specify Date object.
\n *
\n * NOTE: 'params' can be omitted.\n * EXAMPLES
\n * @example\n * d1 = new KJUR.asn1.DERUTCTime();\n * d1.setString('130430125959Z');\n *\n * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});\n * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});\n * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');\n */\nKJUR.asn1.DERUTCTime = function (params) {\n KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);\n this.hT = \"17\";\n /**\n * set value by a Date object
\n * @name setByDate\n * @memberOf KJUR.asn1.DERUTCTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * o = new KJUR.asn1.DERUTCTime();\n * o.setByDate(new Date(\"2016/12/31\"));\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (typeof this.date == \"undefined\" && typeof this.s == \"undefined\") {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{12}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER GeneralizedTime\n * @name KJUR.asn1.DERGeneralizedTime\n * @class class for ASN.1 DER GeneralizedTime\n * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})\n * @property {Boolean} withMillis flag to show milliseconds or not\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')
\n * - hex - specify initial ASN.1 value(V) by a hexadecimal string
\n * - date - specify Date object.
\n * - millis - specify flag to show milliseconds (from 1.0.6)
\n *
\n * NOTE1: 'params' can be omitted.\n * NOTE2: 'withMillis' property is supported from asn1 1.0.6.\n */\nKJUR.asn1.DERGeneralizedTime = function (params) {\n KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);\n this.hT = \"18\";\n this.withMillis = false;\n /**\n * set value by a Date object\n * @name setByDate\n * @memberOf KJUR.asn1.DERGeneralizedTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * When you specify UTC time, use 'Date.UTC' method like this:
\n * o1 = new DERUTCTime();\n * o1.setByDate(date);\n *\n * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (this.date === undefined && this.s === undefined) {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{14}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n if (params.millis === true) {\n this.withMillis = true;\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER Sequence\n * @name KJUR.asn1.DERSequence\n * @class class for ASN.1 DER Sequence\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - array - specify array of ASN1Object to set elements of content
\n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERSequence = function (params) {\n KJUR.asn1.DERSequence.superclass.constructor.call(this, params);\n this.hT = \"30\";\n this.getFreshValueHex = function () {\n var h = '';\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n h += asn1Obj.getEncodedHex();\n }\n this.hV = h;\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER Set\n * @name KJUR.asn1.DERSet\n * @class class for ASN.1 DER Set\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * \n * - array - specify array of ASN1Object to set elements of content
\n * - sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.
\n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: sortflag is supported since 1.0.5.\n */\nKJUR.asn1.DERSet = function (params) {\n KJUR.asn1.DERSet.superclass.constructor.call(this, params);\n this.hT = \"31\";\n this.sortFlag = true; // item shall be sorted only in ASN.1 DER\n this.getFreshValueHex = function () {\n var a = new Array();\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n a.push(asn1Obj.getEncodedHex());\n }\n if (this.sortFlag == true)\n a.sort();\n this.hV = a.join('');\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params.sortflag != \"undefined\" &&\n params.sortflag == false)\n this.sortFlag = false;\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER TaggedObject\n * @name KJUR.asn1.DERTaggedObject\n * @class class for ASN.1 DER TaggedObject\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.\n * For example, if you find '[1]' tag in a ASN.1 dump,\n * 'tagNoHex' will be 'a1'.\n *
\n * As for optional argument 'params' for constructor, you can specify *ANY* of\n * following properties:\n * \n * - explicit - specify true if this is explicit tag otherwise false\n * (default is 'true').
\n * - tag - specify tag (default is 'a0' which means [0])
\n * - obj - specify ASN1Object which is tagged
\n *
\n * @example\n * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});\n * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});\n * hex = d2.getEncodedHex();\n */\nKJUR.asn1.DERTaggedObject = function (params) {\n KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);\n this.hT = \"a0\";\n this.hV = '';\n this.isExplicit = true;\n this.asn1Object = null;\n /**\n * set value by an ASN1Object\n * @name setString\n * @memberOf KJUR.asn1.DERTaggedObject#\n * @function\n * @param {Boolean} isExplicitFlag flag for explicit/implicit tag\n * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag\n * @param {ASN1Object} asn1Object ASN.1 to encapsulate\n */\n this.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {\n this.hT = tagNoHex;\n this.isExplicit = isExplicitFlag;\n this.asn1Object = asn1Object;\n if (this.isExplicit) {\n this.hV = this.asn1Object.getEncodedHex();\n this.hTLV = null;\n this.isModified = true;\n }\n else {\n this.hV = null;\n this.hTLV = asn1Object.getEncodedHex();\n this.hTLV = this.hTLV.replace(/^../, tagNoHex);\n this.isModified = false;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['tag'] != \"undefined\") {\n this.hT = params['tag'];\n }\n if (typeof params['explicit'] != \"undefined\") {\n this.isExplicit = params['explicit'];\n }\n if (typeof params['obj'] != \"undefined\") {\n this.asn1Object = params['obj'];\n this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/asn1-1.0.js?");
-
-/***/ }),
-
-/***/ "./lib/lib/jsrsasign/yahoo.js":
-/*!************************************!*\
- !*** ./lib/lib/jsrsasign/yahoo.js ***!
- \************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"YAHOO\": () => (/* binding */ YAHOO)\n/* harmony export */ });\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nvar YAHOO = {};\nYAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function (subc, superc, overrides) {\n if (!superc || !subc) {\n throw new Error(\"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\");\n }\n var F = function () { };\n F.prototype = superc.prototype;\n subc.prototype = new F();\n subc.prototype.constructor = subc;\n subc.superclass = superc.prototype;\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc;\n }\n if (overrides) {\n var i;\n for (i in overrides) {\n subc.prototype[i] = overrides[i];\n }\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function () { }, ADD = [\"toString\", \"valueOf\"];\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function (r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i], f = s[fname];\n if (typeof f === 'function' && f != Object.prototype[fname]) {\n r[fname] = f;\n }\n }\n };\n }\n }\n catch (ex) { }\n ;\n _IEEnumFix(subc.prototype, overrides);\n }\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/yahoo.js?");
-
-/***/ }),
-
-/***/ "./node_modules/process/browser.js":
-/*!*****************************************!*\
- !*** ./node_modules/process/browser.js ***!
- \*****************************************/
-/***/ ((module) => {
-
-eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack://JSEncrypt/./node_modules/process/browser.js?");
-
-/***/ })
-
-/******/ });
-/************************************************************************/
-/******/ // The module cache
-/******/ var __webpack_module_cache__ = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/ // Check if module is in cache
-/******/ var cachedModule = __webpack_module_cache__[moduleId];
-/******/ if (cachedModule !== undefined) {
-/******/ return cachedModule.exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = __webpack_module_cache__[moduleId] = {
-/******/ // no module.id needed
-/******/ // no module.loaded needed
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/************************************************************************/
-/******/ /* webpack/runtime/define property getters */
-/******/ (() => {
-/******/ // define getter functions for harmony exports
-/******/ __webpack_require__.d = (exports, definition) => {
-/******/ for(var key in definition) {
-/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
-/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
-/******/ }
-/******/ }
-/******/ };
-/******/ })();
-/******/
-/******/ /* webpack/runtime/hasOwnProperty shorthand */
-/******/ (() => {
-/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
-/******/ })();
-/******/
-/******/ /* webpack/runtime/make namespace object */
-/******/ (() => {
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = (exports) => {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/ })();
-/******/
-/************************************************************************/
-/******/
-/******/ // startup
-/******/ // Load entry module and return exports
-/******/ // This entry module can't be inlined because the eval devtool is used.
-/******/ var __webpack_exports__ = __webpack_require__("./lib/index.js");
-/******/ __webpack_exports__ = __webpack_exports__["default"];
-/******/
-/******/ return __webpack_exports__;
-/******/ })()
-;
-});
\ No newline at end of file
diff --git a/drpy_libs/json5.js b/drpy_libs/json5.js
deleted file mode 100644
index 10d7ab0..0000000
--- a/drpy_libs/json5.js
+++ /dev/null
@@ -1,1737 +0,0 @@
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.JSON5 = factory());
-}(this, (function () { 'use strict';
-
- function createCommonjsModule(fn, module) {
- return module = { exports: {} }, fn(module, module.exports), module.exports;
- }
-
- var _global = createCommonjsModule(function (module) {
- // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
- var global = module.exports = typeof window != 'undefined' && window.Math == Math
- ? window : typeof self != 'undefined' && self.Math == Math ? self
- // eslint-disable-next-line no-new-func
- : Function('return this')();
- if (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef
- });
-
- var _core = createCommonjsModule(function (module) {
- var core = module.exports = { version: '2.6.5' };
- if (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef
- });
- var _core_1 = _core.version;
-
- var _isObject = function (it) {
- return typeof it === 'object' ? it !== null : typeof it === 'function';
- };
-
- var _anObject = function (it) {
- if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }
- return it;
- };
-
- var _fails = function (exec) {
- try {
- return !!exec();
- } catch (e) {
- return true;
- }
- };
-
- // Thank's IE8 for his funny defineProperty
- var _descriptors = !_fails(function () {
- return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
- });
-
- var document = _global.document;
- // typeof document.createElement is 'object' in old IE
- var is = _isObject(document) && _isObject(document.createElement);
- var _domCreate = function (it) {
- return is ? document.createElement(it) : {};
- };
-
- var _ie8DomDefine = !_descriptors && !_fails(function () {
- return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;
- });
-
- // 7.1.1 ToPrimitive(input [, PreferredType])
-
- // instead of the ES6 spec version, we didn't implement @@toPrimitive case
- // and the second argument - flag - preferred type is a string
- var _toPrimitive = function (it, S) {
- if (!_isObject(it)) { return it; }
- var fn, val;
- if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }
- if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }
- if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }
- throw TypeError("Can't convert object to primitive value");
- };
-
- var dP = Object.defineProperty;
-
- var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
- _anObject(O);
- P = _toPrimitive(P, true);
- _anObject(Attributes);
- if (_ie8DomDefine) { try {
- return dP(O, P, Attributes);
- } catch (e) { /* empty */ } }
- if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }
- if ('value' in Attributes) { O[P] = Attributes.value; }
- return O;
- };
-
- var _objectDp = {
- f: f
- };
-
- var _propertyDesc = function (bitmap, value) {
- return {
- enumerable: !(bitmap & 1),
- configurable: !(bitmap & 2),
- writable: !(bitmap & 4),
- value: value
- };
- };
-
- var _hide = _descriptors ? function (object, key, value) {
- return _objectDp.f(object, key, _propertyDesc(1, value));
- } : function (object, key, value) {
- object[key] = value;
- return object;
- };
-
- var hasOwnProperty = {}.hasOwnProperty;
- var _has = function (it, key) {
- return hasOwnProperty.call(it, key);
- };
-
- var id = 0;
- var px = Math.random();
- var _uid = function (key) {
- return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
- };
-
- var _library = false;
-
- var _shared = createCommonjsModule(function (module) {
- var SHARED = '__core-js_shared__';
- var store = _global[SHARED] || (_global[SHARED] = {});
-
- (module.exports = function (key, value) {
- return store[key] || (store[key] = value !== undefined ? value : {});
- })('versions', []).push({
- version: _core.version,
- mode: _library ? 'pure' : 'global',
- copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
- });
- });
-
- var _functionToString = _shared('native-function-to-string', Function.toString);
-
- var _redefine = createCommonjsModule(function (module) {
- var SRC = _uid('src');
-
- var TO_STRING = 'toString';
- var TPL = ('' + _functionToString).split(TO_STRING);
-
- _core.inspectSource = function (it) {
- return _functionToString.call(it);
- };
-
- (module.exports = function (O, key, val, safe) {
- var isFunction = typeof val == 'function';
- if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }
- if (O[key] === val) { return; }
- if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }
- if (O === _global) {
- O[key] = val;
- } else if (!safe) {
- delete O[key];
- _hide(O, key, val);
- } else if (O[key]) {
- O[key] = val;
- } else {
- _hide(O, key, val);
- }
- // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
- })(Function.prototype, TO_STRING, function toString() {
- return typeof this == 'function' && this[SRC] || _functionToString.call(this);
- });
- });
-
- var _aFunction = function (it) {
- if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }
- return it;
- };
-
- // optional / simple context binding
-
- var _ctx = function (fn, that, length) {
- _aFunction(fn);
- if (that === undefined) { return fn; }
- switch (length) {
- case 1: return function (a) {
- return fn.call(that, a);
- };
- case 2: return function (a, b) {
- return fn.call(that, a, b);
- };
- case 3: return function (a, b, c) {
- return fn.call(that, a, b, c);
- };
- }
- return function (/* ...args */) {
- return fn.apply(that, arguments);
- };
- };
-
- var PROTOTYPE = 'prototype';
-
- var $export = function (type, name, source) {
- var IS_FORCED = type & $export.F;
- var IS_GLOBAL = type & $export.G;
- var IS_STATIC = type & $export.S;
- var IS_PROTO = type & $export.P;
- var IS_BIND = type & $export.B;
- var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];
- var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
- var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
- var key, own, out, exp;
- if (IS_GLOBAL) { source = name; }
- for (key in source) {
- // contains in native
- own = !IS_FORCED && target && target[key] !== undefined;
- // export native or passed
- out = (own ? target : source)[key];
- // bind timers to global for call from export context
- exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;
- // extend global
- if (target) { _redefine(target, key, out, type & $export.U); }
- // export
- if (exports[key] != out) { _hide(exports, key, exp); }
- if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }
- }
- };
- _global.core = _core;
- // type bitmap
- $export.F = 1; // forced
- $export.G = 2; // global
- $export.S = 4; // static
- $export.P = 8; // proto
- $export.B = 16; // bind
- $export.W = 32; // wrap
- $export.U = 64; // safe
- $export.R = 128; // real proto method for `library`
- var _export = $export;
-
- // 7.1.4 ToInteger
- var ceil = Math.ceil;
- var floor = Math.floor;
- var _toInteger = function (it) {
- return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
- };
-
- // 7.2.1 RequireObjectCoercible(argument)
- var _defined = function (it) {
- if (it == undefined) { throw TypeError("Can't call method on " + it); }
- return it;
- };
-
- // true -> String#at
- // false -> String#codePointAt
- var _stringAt = function (TO_STRING) {
- return function (that, pos) {
- var s = String(_defined(that));
- var i = _toInteger(pos);
- var l = s.length;
- var a, b;
- if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }
- a = s.charCodeAt(i);
- return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
- ? TO_STRING ? s.charAt(i) : a
- : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
- };
- };
-
- var $at = _stringAt(false);
- _export(_export.P, 'String', {
- // 21.1.3.3 String.prototype.codePointAt(pos)
- codePointAt: function codePointAt(pos) {
- return $at(this, pos);
- }
- });
-
- var codePointAt = _core.String.codePointAt;
-
- var max = Math.max;
- var min = Math.min;
- var _toAbsoluteIndex = function (index, length) {
- index = _toInteger(index);
- return index < 0 ? max(index + length, 0) : min(index, length);
- };
-
- var fromCharCode = String.fromCharCode;
- var $fromCodePoint = String.fromCodePoint;
-
- // length should be 1, old FF problem
- _export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
- // 21.1.2.2 String.fromCodePoint(...codePoints)
- fromCodePoint: function fromCodePoint(x) {
- var arguments$1 = arguments;
- // eslint-disable-line no-unused-vars
- var res = [];
- var aLen = arguments.length;
- var i = 0;
- var code;
- while (aLen > i) {
- code = +arguments$1[i++];
- if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }
- res.push(code < 0x10000
- ? fromCharCode(code)
- : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
- );
- } return res.join('');
- }
- });
-
- var fromCodePoint = _core.String.fromCodePoint;
-
- // This is a generated file. Do not edit.
- var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
- var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
- var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;
-
- var unicode = {
- Space_Separator: Space_Separator,
- ID_Start: ID_Start,
- ID_Continue: ID_Continue
- };
-
- var util = {
- isSpaceSeparator: function isSpaceSeparator (c) {
- return typeof c === 'string' && unicode.Space_Separator.test(c)
- },
-
- isIdStartChar: function isIdStartChar (c) {
- return typeof c === 'string' && (
- (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c === '$') || (c === '_') ||
- unicode.ID_Start.test(c)
- )
- },
-
- isIdContinueChar: function isIdContinueChar (c) {
- return typeof c === 'string' && (
- (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c >= '0' && c <= '9') ||
- (c === '$') || (c === '_') ||
- (c === '\u200C') || (c === '\u200D') ||
- unicode.ID_Continue.test(c)
- )
- },
-
- isDigit: function isDigit (c) {
- return typeof c === 'string' && /[0-9]/.test(c)
- },
-
- isHexDigit: function isHexDigit (c) {
- return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)
- },
- };
-
- var source;
- var parseState;
- var stack;
- var pos;
- var line;
- var column;
- var token;
- var key;
- var root;
-
- var parse = function parse (text, reviver) {
- source = String(text);
- parseState = 'start';
- stack = [];
- pos = 0;
- line = 1;
- column = 0;
- token = undefined;
- key = undefined;
- root = undefined;
-
- do {
- token = lex();
-
- // This code is unreachable.
- // if (!parseStates[parseState]) {
- // throw invalidParseState()
- // }
-
- parseStates[parseState]();
- } while (token.type !== 'eof')
-
- if (typeof reviver === 'function') {
- return internalize({'': root}, '', reviver)
- }
-
- return root
- };
-
- function internalize (holder, name, reviver) {
- var value = holder[name];
- if (value != null && typeof value === 'object') {
- if (Array.isArray(value)) {
- for (var i = 0; i < value.length; i++) {
- var key = String(i);
- var replacement = internalize(value, key, reviver);
- if (replacement === undefined) {
- delete value[key];
- } else {
- Object.defineProperty(value, key, {
- value: replacement,
- writable: true,
- enumerable: true,
- configurable: true,
- });
- }
- }
- } else {
- for (var key$1 in value) {
- var replacement$1 = internalize(value, key$1, reviver);
- if (replacement$1 === undefined) {
- delete value[key$1];
- } else {
- Object.defineProperty(value, key$1, {
- value: replacement$1,
- writable: true,
- enumerable: true,
- configurable: true,
- });
- }
- }
- }
- }
-
- return reviver.call(holder, name, value)
- }
-
- var lexState;
- var buffer;
- var doubleQuote;
- var sign;
- var c;
-
- function lex () {
- lexState = 'default';
- buffer = '';
- doubleQuote = false;
- sign = 1;
-
- for (;;) {
- c = peek();
-
- // This code is unreachable.
- // if (!lexStates[lexState]) {
- // throw invalidLexState(lexState)
- // }
-
- var token = lexStates[lexState]();
- if (token) {
- return token
- }
- }
- }
-
- function peek () {
- if (source[pos]) {
- return String.fromCodePoint(source.codePointAt(pos))
- }
- }
-
- function read () {
- var c = peek();
-
- if (c === '\n') {
- line++;
- column = 0;
- } else if (c) {
- column += c.length;
- } else {
- column++;
- }
-
- if (c) {
- pos += c.length;
- }
-
- return c
- }
-
- var lexStates = {
- default: function default$1 () {
- switch (c) {
- case '\t':
- case '\v':
- case '\f':
- case ' ':
- case '\u00A0':
- case '\uFEFF':
- case '\n':
- case '\r':
- case '\u2028':
- case '\u2029':
- read();
- return
-
- case '/':
- read();
- lexState = 'comment';
- return
-
- case undefined:
- read();
- return newToken('eof')
- }
-
- if (util.isSpaceSeparator(c)) {
- read();
- return
- }
-
- // This code is unreachable.
- // if (!lexStates[parseState]) {
- // throw invalidLexState(parseState)
- // }
-
- return lexStates[parseState]()
- },
-
- comment: function comment () {
- switch (c) {
- case '*':
- read();
- lexState = 'multiLineComment';
- return
-
- case '/':
- read();
- lexState = 'singleLineComment';
- return
- }
-
- throw invalidChar(read())
- },
-
- multiLineComment: function multiLineComment () {
- switch (c) {
- case '*':
- read();
- lexState = 'multiLineCommentAsterisk';
- return
-
- case undefined:
- throw invalidChar(read())
- }
-
- read();
- },
-
- multiLineCommentAsterisk: function multiLineCommentAsterisk () {
- switch (c) {
- case '*':
- read();
- return
-
- case '/':
- read();
- lexState = 'default';
- return
-
- case undefined:
- throw invalidChar(read())
- }
-
- read();
- lexState = 'multiLineComment';
- },
-
- singleLineComment: function singleLineComment () {
- switch (c) {
- case '\n':
- case '\r':
- case '\u2028':
- case '\u2029':
- read();
- lexState = 'default';
- return
-
- case undefined:
- read();
- return newToken('eof')
- }
-
- read();
- },
-
- value: function value () {
- switch (c) {
- case '{':
- case '[':
- return newToken('punctuator', read())
-
- case 'n':
- read();
- literal('ull');
- return newToken('null', null)
-
- case 't':
- read();
- literal('rue');
- return newToken('boolean', true)
-
- case 'f':
- read();
- literal('alse');
- return newToken('boolean', false)
-
- case '-':
- case '+':
- if (read() === '-') {
- sign = -1;
- }
-
- lexState = 'sign';
- return
-
- case '.':
- buffer = read();
- lexState = 'decimalPointLeading';
- return
-
- case '0':
- buffer = read();
- lexState = 'zero';
- return
-
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- buffer = read();
- lexState = 'decimalInteger';
- return
-
- case 'I':
- read();
- literal('nfinity');
- return newToken('numeric', Infinity)
-
- case 'N':
- read();
- literal('aN');
- return newToken('numeric', NaN)
-
- case '"':
- case "'":
- doubleQuote = (read() === '"');
- buffer = '';
- lexState = 'string';
- return
- }
-
- throw invalidChar(read())
- },
-
- identifierNameStartEscape: function identifierNameStartEscape () {
- if (c !== 'u') {
- throw invalidChar(read())
- }
-
- read();
- var u = unicodeEscape();
- switch (u) {
- case '$':
- case '_':
- break
-
- default:
- if (!util.isIdStartChar(u)) {
- throw invalidIdentifier()
- }
-
- break
- }
-
- buffer += u;
- lexState = 'identifierName';
- },
-
- identifierName: function identifierName () {
- switch (c) {
- case '$':
- case '_':
- case '\u200C':
- case '\u200D':
- buffer += read();
- return
-
- case '\\':
- read();
- lexState = 'identifierNameEscape';
- return
- }
-
- if (util.isIdContinueChar(c)) {
- buffer += read();
- return
- }
-
- return newToken('identifier', buffer)
- },
-
- identifierNameEscape: function identifierNameEscape () {
- if (c !== 'u') {
- throw invalidChar(read())
- }
-
- read();
- var u = unicodeEscape();
- switch (u) {
- case '$':
- case '_':
- case '\u200C':
- case '\u200D':
- break
-
- default:
- if (!util.isIdContinueChar(u)) {
- throw invalidIdentifier()
- }
-
- break
- }
-
- buffer += u;
- lexState = 'identifierName';
- },
-
- sign: function sign$1 () {
- switch (c) {
- case '.':
- buffer = read();
- lexState = 'decimalPointLeading';
- return
-
- case '0':
- buffer = read();
- lexState = 'zero';
- return
-
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- buffer = read();
- lexState = 'decimalInteger';
- return
-
- case 'I':
- read();
- literal('nfinity');
- return newToken('numeric', sign * Infinity)
-
- case 'N':
- read();
- literal('aN');
- return newToken('numeric', NaN)
- }
-
- throw invalidChar(read())
- },
-
- zero: function zero () {
- switch (c) {
- case '.':
- buffer += read();
- lexState = 'decimalPoint';
- return
-
- case 'e':
- case 'E':
- buffer += read();
- lexState = 'decimalExponent';
- return
-
- case 'x':
- case 'X':
- buffer += read();
- lexState = 'hexadecimal';
- return
- }
-
- return newToken('numeric', sign * 0)
- },
-
- decimalInteger: function decimalInteger () {
- switch (c) {
- case '.':
- buffer += read();
- lexState = 'decimalPoint';
- return
-
- case 'e':
- case 'E':
- buffer += read();
- lexState = 'decimalExponent';
- return
- }
-
- if (util.isDigit(c)) {
- buffer += read();
- return
- }
-
- return newToken('numeric', sign * Number(buffer))
- },
-
- decimalPointLeading: function decimalPointLeading () {
- if (util.isDigit(c)) {
- buffer += read();
- lexState = 'decimalFraction';
- return
- }
-
- throw invalidChar(read())
- },
-
- decimalPoint: function decimalPoint () {
- switch (c) {
- case 'e':
- case 'E':
- buffer += read();
- lexState = 'decimalExponent';
- return
- }
-
- if (util.isDigit(c)) {
- buffer += read();
- lexState = 'decimalFraction';
- return
- }
-
- return newToken('numeric', sign * Number(buffer))
- },
-
- decimalFraction: function decimalFraction () {
- switch (c) {
- case 'e':
- case 'E':
- buffer += read();
- lexState = 'decimalExponent';
- return
- }
-
- if (util.isDigit(c)) {
- buffer += read();
- return
- }
-
- return newToken('numeric', sign * Number(buffer))
- },
-
- decimalExponent: function decimalExponent () {
- switch (c) {
- case '+':
- case '-':
- buffer += read();
- lexState = 'decimalExponentSign';
- return
- }
-
- if (util.isDigit(c)) {
- buffer += read();
- lexState = 'decimalExponentInteger';
- return
- }
-
- throw invalidChar(read())
- },
-
- decimalExponentSign: function decimalExponentSign () {
- if (util.isDigit(c)) {
- buffer += read();
- lexState = 'decimalExponentInteger';
- return
- }
-
- throw invalidChar(read())
- },
-
- decimalExponentInteger: function decimalExponentInteger () {
- if (util.isDigit(c)) {
- buffer += read();
- return
- }
-
- return newToken('numeric', sign * Number(buffer))
- },
-
- hexadecimal: function hexadecimal () {
- if (util.isHexDigit(c)) {
- buffer += read();
- lexState = 'hexadecimalInteger';
- return
- }
-
- throw invalidChar(read())
- },
-
- hexadecimalInteger: function hexadecimalInteger () {
- if (util.isHexDigit(c)) {
- buffer += read();
- return
- }
-
- return newToken('numeric', sign * Number(buffer))
- },
-
- string: function string () {
- switch (c) {
- case '\\':
- read();
- buffer += escape();
- return
-
- case '"':
- if (doubleQuote) {
- read();
- return newToken('string', buffer)
- }
-
- buffer += read();
- return
-
- case "'":
- if (!doubleQuote) {
- read();
- return newToken('string', buffer)
- }
-
- buffer += read();
- return
-
- case '\n':
- case '\r':
- throw invalidChar(read())
-
- case '\u2028':
- case '\u2029':
- separatorChar(c);
- break
-
- case undefined:
- throw invalidChar(read())
- }
-
- buffer += read();
- },
-
- start: function start () {
- switch (c) {
- case '{':
- case '[':
- return newToken('punctuator', read())
-
- // This code is unreachable since the default lexState handles eof.
- // case undefined:
- // return newToken('eof')
- }
-
- lexState = 'value';
- },
-
- beforePropertyName: function beforePropertyName () {
- switch (c) {
- case '$':
- case '_':
- buffer = read();
- lexState = 'identifierName';
- return
-
- case '\\':
- read();
- lexState = 'identifierNameStartEscape';
- return
-
- case '}':
- return newToken('punctuator', read())
-
- case '"':
- case "'":
- doubleQuote = (read() === '"');
- lexState = 'string';
- return
- }
-
- if (util.isIdStartChar(c)) {
- buffer += read();
- lexState = 'identifierName';
- return
- }
-
- throw invalidChar(read())
- },
-
- afterPropertyName: function afterPropertyName () {
- if (c === ':') {
- return newToken('punctuator', read())
- }
-
- throw invalidChar(read())
- },
-
- beforePropertyValue: function beforePropertyValue () {
- lexState = 'value';
- },
-
- afterPropertyValue: function afterPropertyValue () {
- switch (c) {
- case ',':
- case '}':
- return newToken('punctuator', read())
- }
-
- throw invalidChar(read())
- },
-
- beforeArrayValue: function beforeArrayValue () {
- if (c === ']') {
- return newToken('punctuator', read())
- }
-
- lexState = 'value';
- },
-
- afterArrayValue: function afterArrayValue () {
- switch (c) {
- case ',':
- case ']':
- return newToken('punctuator', read())
- }
-
- throw invalidChar(read())
- },
-
- end: function end () {
- // This code is unreachable since it's handled by the default lexState.
- // if (c === undefined) {
- // read()
- // return newToken('eof')
- // }
-
- throw invalidChar(read())
- },
- };
-
- function newToken (type, value) {
- return {
- type: type,
- value: value,
- line: line,
- column: column,
- }
- }
-
- function literal (s) {
- for (var i = 0, list = s; i < list.length; i += 1) {
- var c = list[i];
-
- var p = peek();
-
- if (p !== c) {
- throw invalidChar(read())
- }
-
- read();
- }
- }
-
- function escape () {
- var c = peek();
- switch (c) {
- case 'b':
- read();
- return '\b'
-
- case 'f':
- read();
- return '\f'
-
- case 'n':
- read();
- return '\n'
-
- case 'r':
- read();
- return '\r'
-
- case 't':
- read();
- return '\t'
-
- case 'v':
- read();
- return '\v'
-
- case '0':
- read();
- if (util.isDigit(peek())) {
- throw invalidChar(read())
- }
-
- return '\0'
-
- case 'x':
- read();
- return hexEscape()
-
- case 'u':
- read();
- return unicodeEscape()
-
- case '\n':
- case '\u2028':
- case '\u2029':
- read();
- return ''
-
- case '\r':
- read();
- if (peek() === '\n') {
- read();
- }
-
- return ''
-
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- throw invalidChar(read())
-
- case undefined:
- throw invalidChar(read())
- }
-
- return read()
- }
-
- function hexEscape () {
- var buffer = '';
- var c = peek();
-
- if (!util.isHexDigit(c)) {
- throw invalidChar(read())
- }
-
- buffer += read();
-
- c = peek();
- if (!util.isHexDigit(c)) {
- throw invalidChar(read())
- }
-
- buffer += read();
-
- return String.fromCodePoint(parseInt(buffer, 16))
- }
-
- function unicodeEscape () {
- var buffer = '';
- var count = 4;
-
- while (count-- > 0) {
- var c = peek();
- if (!util.isHexDigit(c)) {
- throw invalidChar(read())
- }
-
- buffer += read();
- }
-
- return String.fromCodePoint(parseInt(buffer, 16))
- }
-
- var parseStates = {
- start: function start () {
- if (token.type === 'eof') {
- throw invalidEOF()
- }
-
- push();
- },
-
- beforePropertyName: function beforePropertyName () {
- switch (token.type) {
- case 'identifier':
- case 'string':
- key = token.value;
- parseState = 'afterPropertyName';
- return
-
- case 'punctuator':
- // This code is unreachable since it's handled by the lexState.
- // if (token.value !== '}') {
- // throw invalidToken()
- // }
-
- pop();
- return
-
- case 'eof':
- throw invalidEOF()
- }
-
- // This code is unreachable since it's handled by the lexState.
- // throw invalidToken()
- },
-
- afterPropertyName: function afterPropertyName () {
- // This code is unreachable since it's handled by the lexState.
- // if (token.type !== 'punctuator' || token.value !== ':') {
- // throw invalidToken()
- // }
-
- if (token.type === 'eof') {
- throw invalidEOF()
- }
-
- parseState = 'beforePropertyValue';
- },
-
- beforePropertyValue: function beforePropertyValue () {
- if (token.type === 'eof') {
- throw invalidEOF()
- }
-
- push();
- },
-
- beforeArrayValue: function beforeArrayValue () {
- if (token.type === 'eof') {
- throw invalidEOF()
- }
-
- if (token.type === 'punctuator' && token.value === ']') {
- pop();
- return
- }
-
- push();
- },
-
- afterPropertyValue: function afterPropertyValue () {
- // This code is unreachable since it's handled by the lexState.
- // if (token.type !== 'punctuator') {
- // throw invalidToken()
- // }
-
- if (token.type === 'eof') {
- throw invalidEOF()
- }
-
- switch (token.value) {
- case ',':
- parseState = 'beforePropertyName';
- return
-
- case '}':
- pop();
- }
-
- // This code is unreachable since it's handled by the lexState.
- // throw invalidToken()
- },
-
- afterArrayValue: function afterArrayValue () {
- // This code is unreachable since it's handled by the lexState.
- // if (token.type !== 'punctuator') {
- // throw invalidToken()
- // }
-
- if (token.type === 'eof') {
- throw invalidEOF()
- }
-
- switch (token.value) {
- case ',':
- parseState = 'beforeArrayValue';
- return
-
- case ']':
- pop();
- }
-
- // This code is unreachable since it's handled by the lexState.
- // throw invalidToken()
- },
-
- end: function end () {
- // This code is unreachable since it's handled by the lexState.
- // if (token.type !== 'eof') {
- // throw invalidToken()
- // }
- },
- };
-
- function push () {
- var value;
-
- switch (token.type) {
- case 'punctuator':
- switch (token.value) {
- case '{':
- value = {};
- break
-
- case '[':
- value = [];
- break
- }
-
- break
-
- case 'null':
- case 'boolean':
- case 'numeric':
- case 'string':
- value = token.value;
- break
-
- // This code is unreachable.
- // default:
- // throw invalidToken()
- }
-
- if (root === undefined) {
- root = value;
- } else {
- var parent = stack[stack.length - 1];
- if (Array.isArray(parent)) {
- parent.push(value);
- } else {
- Object.defineProperty(parent, key, {
- value: value,
- writable: true,
- enumerable: true,
- configurable: true,
- });
- }
- }
-
- if (value !== null && typeof value === 'object') {
- stack.push(value);
-
- if (Array.isArray(value)) {
- parseState = 'beforeArrayValue';
- } else {
- parseState = 'beforePropertyName';
- }
- } else {
- var current = stack[stack.length - 1];
- if (current == null) {
- parseState = 'end';
- } else if (Array.isArray(current)) {
- parseState = 'afterArrayValue';
- } else {
- parseState = 'afterPropertyValue';
- }
- }
- }
-
- function pop () {
- stack.pop();
-
- var current = stack[stack.length - 1];
- if (current == null) {
- parseState = 'end';
- } else if (Array.isArray(current)) {
- parseState = 'afterArrayValue';
- } else {
- parseState = 'afterPropertyValue';
- }
- }
-
- // This code is unreachable.
- // function invalidParseState () {
- // return new Error(`JSON5: invalid parse state '${parseState}'`)
- // }
-
- // This code is unreachable.
- // function invalidLexState (state) {
- // return new Error(`JSON5: invalid lex state '${state}'`)
- // }
-
- function invalidChar (c) {
- if (c === undefined) {
- return syntaxError(("JSON5: invalid end of input at " + line + ":" + column))
- }
-
- return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column))
- }
-
- function invalidEOF () {
- return syntaxError(("JSON5: invalid end of input at " + line + ":" + column))
- }
-
- // This code is unreachable.
- // function invalidToken () {
- // if (token.type === 'eof') {
- // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
- // }
-
- // const c = String.fromCodePoint(token.value.codePointAt(0))
- // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)
- // }
-
- function invalidIdentifier () {
- column -= 5;
- return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column))
- }
-
- function separatorChar (c) {
- console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping"));
- }
-
- function formatChar (c) {
- var replacements = {
- "'": "\\'",
- '"': '\\"',
- '\\': '\\\\',
- '\b': '\\b',
- '\f': '\\f',
- '\n': '\\n',
- '\r': '\\r',
- '\t': '\\t',
- '\v': '\\v',
- '\0': '\\0',
- '\u2028': '\\u2028',
- '\u2029': '\\u2029',
- };
-
- if (replacements[c]) {
- return replacements[c]
- }
-
- if (c < ' ') {
- var hexString = c.charCodeAt(0).toString(16);
- return '\\x' + ('00' + hexString).substring(hexString.length)
- }
-
- return c
- }
-
- function syntaxError (message) {
- var err = new SyntaxError(message);
- err.lineNumber = line;
- err.columnNumber = column;
- return err
- }
-
- var stringify = function stringify (value, replacer, space) {
- var stack = [];
- var indent = '';
- var propertyList;
- var replacerFunc;
- var gap = '';
- var quote;
-
- if (
- replacer != null &&
- typeof replacer === 'object' &&
- !Array.isArray(replacer)
- ) {
- space = replacer.space;
- quote = replacer.quote;
- replacer = replacer.replacer;
- }
-
- if (typeof replacer === 'function') {
- replacerFunc = replacer;
- } else if (Array.isArray(replacer)) {
- propertyList = [];
- for (var i = 0, list = replacer; i < list.length; i += 1) {
- var v = list[i];
-
- var item = (void 0);
-
- if (typeof v === 'string') {
- item = v;
- } else if (
- typeof v === 'number' ||
- v instanceof String ||
- v instanceof Number
- ) {
- item = String(v);
- }
-
- if (item !== undefined && propertyList.indexOf(item) < 0) {
- propertyList.push(item);
- }
- }
- }
-
- if (space instanceof Number) {
- space = Number(space);
- } else if (space instanceof String) {
- space = String(space);
- }
-
- if (typeof space === 'number') {
- if (space > 0) {
- space = Math.min(10, Math.floor(space));
- gap = ' '.substr(0, space);
- }
- } else if (typeof space === 'string') {
- gap = space.substr(0, 10);
- }
-
- return serializeProperty('', {'': value})
-
- function serializeProperty (key, holder) {
- var value = holder[key];
- if (value != null) {
- if (typeof value.toJSON5 === 'function') {
- value = value.toJSON5(key);
- } else if (typeof value.toJSON === 'function') {
- value = value.toJSON(key);
- }
- }
-
- if (replacerFunc) {
- value = replacerFunc.call(holder, key, value);
- }
-
- if (value instanceof Number) {
- value = Number(value);
- } else if (value instanceof String) {
- value = String(value);
- } else if (value instanceof Boolean) {
- value = value.valueOf();
- }
-
- switch (value) {
- case null: return 'null'
- case true: return 'true'
- case false: return 'false'
- }
-
- if (typeof value === 'string') {
- return quoteString(value, false)
- }
-
- if (typeof value === 'number') {
- return String(value)
- }
-
- if (typeof value === 'object') {
- return Array.isArray(value) ? serializeArray(value) : serializeObject(value)
- }
-
- return undefined
- }
-
- function quoteString (value) {
- var quotes = {
- "'": 0.1,
- '"': 0.2,
- };
-
- var replacements = {
- "'": "\\'",
- '"': '\\"',
- '\\': '\\\\',
- '\b': '\\b',
- '\f': '\\f',
- '\n': '\\n',
- '\r': '\\r',
- '\t': '\\t',
- '\v': '\\v',
- '\0': '\\0',
- '\u2028': '\\u2028',
- '\u2029': '\\u2029',
- };
-
- var product = '';
-
- for (var i = 0; i < value.length; i++) {
- var c = value[i];
- switch (c) {
- case "'":
- case '"':
- quotes[c]++;
- product += c;
- continue
-
- case '\0':
- if (util.isDigit(value[i + 1])) {
- product += '\\x00';
- continue
- }
- }
-
- if (replacements[c]) {
- product += replacements[c];
- continue
- }
-
- if (c < ' ') {
- var hexString = c.charCodeAt(0).toString(16);
- product += '\\x' + ('00' + hexString).substring(hexString.length);
- continue
- }
-
- product += c;
- }
-
- var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });
-
- product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);
-
- return quoteChar + product + quoteChar
- }
-
- function serializeObject (value) {
- if (stack.indexOf(value) >= 0) {
- throw TypeError('Converting circular structure to JSON5')
- }
-
- stack.push(value);
-
- var stepback = indent;
- indent = indent + gap;
-
- var keys = propertyList || Object.keys(value);
- var partial = [];
- for (var i = 0, list = keys; i < list.length; i += 1) {
- var key = list[i];
-
- var propertyString = serializeProperty(key, value);
- if (propertyString !== undefined) {
- var member = serializeKey(key) + ':';
- if (gap !== '') {
- member += ' ';
- }
- member += propertyString;
- partial.push(member);
- }
- }
-
- var final;
- if (partial.length === 0) {
- final = '{}';
- } else {
- var properties;
- if (gap === '') {
- properties = partial.join(',');
- final = '{' + properties + '}';
- } else {
- var separator = ',\n' + indent;
- properties = partial.join(separator);
- final = '{\n' + indent + properties + ',\n' + stepback + '}';
- }
- }
-
- stack.pop();
- indent = stepback;
- return final
- }
-
- function serializeKey (key) {
- if (key.length === 0) {
- return quoteString(key, true)
- }
-
- var firstChar = String.fromCodePoint(key.codePointAt(0));
- if (!util.isIdStartChar(firstChar)) {
- return quoteString(key, true)
- }
-
- for (var i = firstChar.length; i < key.length; i++) {
- if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
- return quoteString(key, true)
- }
- }
-
- return key
- }
-
- function serializeArray (value) {
- if (stack.indexOf(value) >= 0) {
- throw TypeError('Converting circular structure to JSON5')
- }
-
- stack.push(value);
-
- var stepback = indent;
- indent = indent + gap;
-
- var partial = [];
- for (var i = 0; i < value.length; i++) {
- var propertyString = serializeProperty(String(i), value);
- partial.push((propertyString !== undefined) ? propertyString : 'null');
- }
-
- var final;
- if (partial.length === 0) {
- final = '[]';
- } else {
- if (gap === '') {
- var properties = partial.join(',');
- final = '[' + properties + ']';
- } else {
- var separator = ',\n' + indent;
- var properties$1 = partial.join(separator);
- final = '[\n' + indent + properties$1 + ',\n' + stepback + ']';
- }
- }
-
- stack.pop();
- indent = stepback;
- return final
- }
- };
-
- var JSON5 = {
- parse: parse,
- stringify: stringify,
- };
-
- var lib = JSON5;
-
- var es5 = lib;
-
- return es5;
-
-})));
diff --git a/drpy_libs/node-rsa.js b/drpy_libs/node-rsa.js
deleted file mode 100644
index b5ca093..0000000
--- a/drpy_libs/node-rsa.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see node-rsa.bundle.js.LICENSE.txt */
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.NODERSA=e():t.NODERSA=e()}(globalThis,(()=>(()=>{var t={6395:t=>{t.exports={newInvalidAsn1Error:function(t){var e=new Error;return e.name="InvalidAsn1Error",e.message=t||"",e}}},5670:(t,e,r)=>{var n=r(6395),i=r(6299),o=r(3319),s=r(1431);for(var a in t.exports={Reader:o,Writer:s},i)i.hasOwnProperty(a)&&(t.exports[a]=i[a]);for(var f in n)n.hasOwnProperty(f)&&(t.exports[f]=n[f])},3319:(t,e,r)=>{var n=r(4529),i=r(4774).Buffer,o=r(6299),s=r(6395).newInvalidAsn1Error;function a(t){if(!t||!i.isBuffer(t))throw new TypeError("data must be a node Buffer");this._buf=t,this._size=t.length,this._len=0,this._offset=0}Object.defineProperty(a.prototype,"length",{enumerable:!0,get:function(){return this._len}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){return this._offset}}),Object.defineProperty(a.prototype,"remain",{get:function(){return this._size-this._offset}}),Object.defineProperty(a.prototype,"buffer",{get:function(){return this._buf.slice(this._offset)}}),a.prototype.readByte=function(t){if(this._size-this._offset<1)return null;var e=255&this._buf[this._offset];return t||(this._offset+=1),e},a.prototype.peek=function(){return this.readByte(!0)},a.prototype.readLength=function(t){if(void 0===t&&(t=this._offset),t>=this._size)return null;var e=255&this._buf[t++];if(null===e)return null;if(128&~e)this._len=e;else{if(0==(e&=127))throw s("Indefinite length not supported");if(e>4)throw s("encoding too long");if(this._size-tthis._size-n)return null;if(this._offset=n,0===this.length)return e?i.alloc(0):"";var a=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,e?a:a.toString("utf8")},a.prototype.readOID=function(t){t||(t=o.OID);var e=this.readString(t,!0);if(null===e)return null;for(var r=[],n=0,i=0;i4)throw s("Integer too long: "+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var i=this._buf[this._offset],o=0,a=0;a{t.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},1431:(t,e,r)=>{var n=r(4529),i=r(4774).Buffer,o=r(6299),s=r(6395).newInvalidAsn1Error,a={size:1024,growthFactor:8};function f(t){var e,r;e=a,r=t||{},n.ok(e),n.equal(typeof e,"object"),n.ok(r),n.equal(typeof r,"object"),Object.getOwnPropertyNames(e).forEach((function(t){if(!r[t]){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n)}})),t=r,this._buf=i.alloc(t.size||1024),this._size=this._buf.length,this._offset=0,this._options=t,this._seq=[]}Object.defineProperty(f.prototype,"buffer",{get:function(){if(this._seq.length)throw s(this._seq.length+" unended sequence(s)");return this._buf.slice(0,this._offset)}}),f.prototype.writeByte=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");this._ensure(1),this._buf[this._offset++]=t},f.prototype.writeInt=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");"number"!=typeof e&&(e=o.Integer);for(var r=4;(!(4286578688&t)||-8388608==(4286578688&t))&&r>1;)r--,t<<=8;if(r>4)throw s("BER ints cannot be > 0xffffffff");for(this._ensure(2+r),this._buf[this._offset++]=e,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&t)>>>24,t<<=8},f.prototype.writeNull=function(){this.writeByte(o.Null),this.writeByte(0)},f.prototype.writeEnumeration=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");return"number"!=typeof e&&(e=o.Enumeration),this.writeInt(t,e)},f.prototype.writeBoolean=function(t,e){if("boolean"!=typeof t)throw new TypeError("argument must be a Boolean");"number"!=typeof e&&(e=o.Boolean),this._ensure(3),this._buf[this._offset++]=e,this._buf[this._offset++]=1,this._buf[this._offset++]=t?255:0},f.prototype.writeString=function(t,e){if("string"!=typeof t)throw new TypeError("argument must be a string (was: "+typeof t+")");"number"!=typeof e&&(e=o.OctetString);var r=i.byteLength(t);this.writeByte(e),this.writeLength(r),r&&(this._ensure(r),this._buf.write(t,this._offset),this._offset+=r)},f.prototype.writeBuffer=function(t,e){if("number"!=typeof e)throw new TypeError("tag must be a number");if(!i.isBuffer(t))throw new TypeError("argument must be a buffer");this.writeByte(e),this.writeLength(t.length),this._ensure(t.length),t.copy(this._buf,this._offset,0,t.length),this._offset+=t.length},f.prototype.writeStringArray=function(t){if(!t instanceof Array)throw new TypeError("argument must be an Array[String]");var e=this;t.forEach((function(t){e.writeString(t)}))},f.prototype.writeOID=function(t,e){if("string"!=typeof t)throw new TypeError("argument must be a string");if("number"!=typeof e&&(e=o.OID),!/^([0-9]+\.){3,}[0-9]+$/.test(t))throw new Error("argument is not a valid OID string");var r=t.split("."),n=[];n.push(40*parseInt(r[0],10)+parseInt(r[1],10)),r.slice(2).forEach((function(t){!function(t,e){e<128?t.push(e):e<16384?(t.push(e>>>7|128),t.push(127&e)):e<2097152?(t.push(e>>>14|128),t.push(e>>>7&255|128),t.push(127&e)):e<268435456?(t.push(e>>>21|128),t.push(e>>>14&255|128),t.push(e>>>7&255|128),t.push(127&e)):(t.push(e>>>28&255|128),t.push(e>>>21&255|128),t.push(e>>>14&255|128),t.push(e>>>7&255|128),t.push(127&e))}(n,parseInt(t,10))}));var i=this;this._ensure(2+n.length),this.writeByte(e),this.writeLength(n.length),n.forEach((function(t){i.writeByte(t)}))},f.prototype.writeLength=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");if(this._ensure(4),t<=127)this._buf[this._offset++]=t;else if(t<=255)this._buf[this._offset++]=129,this._buf[this._offset++]=t;else if(t<=65535)this._buf[this._offset++]=130,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t;else{if(!(t<=16777215))throw s("Length too long (> 4 bytes)");this._buf[this._offset++]=131,this._buf[this._offset++]=t>>16,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t}},f.prototype.startSequence=function(t){"number"!=typeof t&&(t=o.Sequence|o.Constructor),this.writeByte(t),this._seq.push(this._offset),this._ensure(3),this._offset+=3},f.prototype.endSequence=function(){var t=this._seq.pop(),e=t+3,r=this._offset-e;if(r<=127)this._shift(e,r,-2),this._buf[t]=r;else if(r<=255)this._shift(e,r,-1),this._buf[t]=129,this._buf[t+1]=r;else if(r<=65535)this._buf[t]=130,this._buf[t+1]=r>>8,this._buf[t+2]=r;else{if(!(r<=16777215))throw s("Sequence too long");this._shift(e,r,1),this._buf[t]=131,this._buf[t+1]=r>>16,this._buf[t+2]=r>>8,this._buf[t+3]=r}},f.prototype._shift=function(t,e,r){n.ok(void 0!==t),n.ok(void 0!==e),n.ok(r),this._buf.copy(this._buf,t+r,t,t+e),this._offset+=r},f.prototype._ensure=function(t){if(n.ok(t),this._size-this._offset{var n=r(5670);t.exports={Ber:n,BerReader:n.Reader,BerWriter:n.Writer}},4529:(t,e,r)=>{"use strict";var n=r(1514)();function i(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i=0;u--)if(c[u]!==h[u])return!1;for(u=c.length-1;u>=0;u--)if(!S(t[a=c[u]],e[a],r,n))return!1;return!0}(t,e,r,n))}return r?t===e:t==e}function _(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function b(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function E(t,e,r,n){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(t){var e;try{t()}catch(t){e=t}return e}(e),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),t&&!i&&v(i,r,"Missing expected exception"+n);var o="string"==typeof n,a=!t&&i&&!r;if((!t&&s.isError(i)&&o&&b(i,r)||a)&&v(i,r,"Got unwanted exception"+n),t&&i&&r&&!b(i,r)||!t&&i)throw i}p.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=g(d(this.actual),128)+" "+this.operator+" "+g(d(this.expected),128),this.generatedMessage=!0);var e=t.stackStartFunction||v;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,i=y(e),o=n.indexOf("\n"+i);if(o>=0){var s=n.indexOf("\n",o+1);n=n.substring(s+1)}this.stack=n}}},s.inherits(p.AssertionError,Error),p.fail=v,p.ok=m,p.equal=function(t,e,r){t!=e&&v(t,e,r,"==",p.equal)},p.notEqual=function(t,e,r){t==e&&v(t,e,r,"!=",p.notEqual)},p.deepEqual=function(t,e,r){S(t,e,!1)||v(t,e,r,"deepEqual",p.deepEqual)},p.deepStrictEqual=function(t,e,r){S(t,e,!0)||v(t,e,r,"deepStrictEqual",p.deepStrictEqual)},p.notDeepEqual=function(t,e,r){S(t,e,!1)&&v(t,e,r,"notDeepEqual",p.notDeepEqual)},p.notDeepStrictEqual=function t(e,r,n){S(e,r,!0)&&v(e,r,n,"notDeepStrictEqual",t)},p.strictEqual=function(t,e,r){t!==e&&v(t,e,r,"===",p.strictEqual)},p.notStrictEqual=function(t,e,r){t===e&&v(t,e,r,"!==",p.notStrictEqual)},p.throws=function(t,e,r){E(!0,t,e,r)},p.doesNotThrow=function(t,e,r){E(!1,t,e,r)},p.ifError=function(t){if(t)throw t},p.strict=n((function t(e,r){e||v(e,!0,r,"==",t)}),p,{equal:p.strictEqual,deepEqual:p.deepStrictEqual,notEqual:p.notStrictEqual,notDeepEqual:p.notDeepStrictEqual}),p.strict.strict=p.strict;var w=Object.keys||function(t){var e=[];for(var r in t)a.call(t,r)&&e.push(r);return e}},6100:t=>{"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},3845:t=>{t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},4591:(t,e,r)=>{var n=r(5606),i=/%[sdj%]/g;e.format=function(t){if(!v(t)){for(var e=[],r=0;r=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}})),f=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(r)?n.showHidden=r:r&&e._extend(n,r),m(n.showHidden)&&(n.showHidden=!1),m(n.depth)&&(n.depth=2),m(n.colors)&&(n.colors=!1),m(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=f),c(n,t,n.depth)}function f(t,e){var r=a.styles[e];return r?"["+a.colors[r][0]+"m"+t+"["+a.colors[r][1]+"m":t}function u(t,e){return t}function c(t,r,n){if(t.customInspect&&r&&w(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return v(i)||(i=c(t,i,n)),i}var o=function(t,e){if(m(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return d(e)?t.stylize(""+e,"number"):y(e)?t.stylize(""+e,"boolean"):g(e)?t.stylize("null","null"):void 0}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),E(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(r);if(0===s.length){if(w(r)){var f=r.name?": "+r.name:"";return t.stylize("[Function"+f+"]","special")}if(S(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(b(r))return t.stylize(Date.prototype.toString.call(r),"date");if(E(r))return h(r)}var u,_="",O=!1,B=["{","}"];return l(r)&&(O=!0,B=["[","]"]),w(r)&&(_=" [Function"+(r.name?": "+r.name:"")+"]"),S(r)&&(_=" "+RegExp.prototype.toString.call(r)),b(r)&&(_=" "+Date.prototype.toUTCString.call(r)),E(r)&&(_=" "+h(r)),0!==s.length||O&&0!=r.length?n<0?S(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=O?function(t,e,r,n,i){for(var o=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(u,_,B)):B[0]+_+B[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,r,n,i,o){var s,a,f;if((f=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?a=f.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):f.set&&(a=t.stylize("[Setter]","special")),x(n,i)||(s="["+i+"]"),a||(t.seen.indexOf(f.value)<0?(a=g(r)?c(t,f.value,null):c(t,f.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),m(s)){if(o&&i.match(/^\d+$/))return a;(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function l(t){return Array.isArray(t)}function y(t){return"boolean"==typeof t}function g(t){return null===t}function d(t){return"number"==typeof t}function v(t){return"string"==typeof t}function m(t){return void 0===t}function S(t){return _(t)&&"[object RegExp]"===O(t)}function _(t){return"object"==typeof t&&null!==t}function b(t){return _(t)&&"[object Date]"===O(t)}function E(t){return _(t)&&("[object Error]"===O(t)||t instanceof Error)}function w(t){return"function"==typeof t}function O(t){return Object.prototype.toString.call(t)}function B(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(m(o)&&(o=n.env.NODE_DEBUG||""),t=t.toUpperCase(),!s[t])if(new RegExp("\\b"+t+"\\b","i").test(o)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=l,e.isBoolean=y,e.isNull=g,e.isNullOrUndefined=function(t){return null==t},e.isNumber=d,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=m,e.isRegExp=S,e.isObject=_,e.isDate=b,e.isError=E,e.isFunction=w,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(3845);var A=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[B((t=new Date).getHours()),B(t.getMinutes()),B(t.getSeconds())].join(":"),[t.getDate(),A[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(6100),e._extend=function(t,e){if(!e||!_(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}},7526:(t,e)=>{"use strict";e.byteLength=function(t){var e=a(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,o=a(t),s=o[0],f=o[1],u=new i(function(t,e,r){return 3*(e+r)/4-r}(0,s,f)),c=0,h=f>0?s-4:s;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===f&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===f&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,o=[],s=16383,a=0,u=n-i;au?u:a+s));return 1===i?(e=t[n-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)r[s]=o[s],n[o.charCodeAt(s)]=s;function a(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function f(t,e,n){for(var i,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},8287:(t,e,r)=>{"use strict";var n=r(7526),i=r(251);e.Buffer=a,e.SlowBuffer=function(t){return+t!=t&&(t=0),a.alloc(+t)},e.INSPECT_MAX_BYTES=50;var o=2147483647;function s(t){if(t>o)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return e.__proto__=a.prototype,e}function a(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return c(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!a.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|l(t,e),n=s(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}(t,e);if(ArrayBuffer.isView(t))return h(t);if(null==t)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(H(t,ArrayBuffer)||t&&H(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|t}function l(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||H(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return M(t).length;default:if(i)return n?-1:U(t).length;e=(""+e).toLowerCase(),i=!0}}function y(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return B(this,e,r);case"ascii":return x(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return O(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function d(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),F(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:v(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):v(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,r,n,i){var o,s=1,a=t.length,f=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,f/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var c=-1;for(o=r;oa&&(r=a-f),o=r;o>=0;o--){for(var h=!0,p=0;pi&&(n=i):n=i;var o=e.length;n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function O(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function B(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[i+1]))&&(f=(31&u)<<6|63&o)>127&&(c=f);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(f=(15&u)<<12|(63&o)<<6|63&s)>2047&&(f<55296||f>57343)&&(c=f);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(f=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&f<1114112&&(c=f)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),i+=h}return function(t){var e=t.length;if(e<=A)return String.fromCharCode.apply(String,t);for(var r="",n=0;nr&&(t+=" ... "),""},a.prototype.compare=function(t,e,r,n,i){if(H(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),f=Math.min(o,s),u=this.slice(n,i),c=t.slice(e,r),h=0;h>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return S(this,t,e,r);case"ascii":return _(this,t,e,r);case"latin1":case"binary":return b(this,t,e,r);case"base64":return E(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function x(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;ii)&&(r=i);for(var o="",s=e;sr)throw new RangeError("Trying to access beyond buffer length")}function D(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function R(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function N(t,e,r,n,o){return e=+e,r>>>=0,o||R(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function L(t,e,r,n,o){return e=+e,r>>>=0,o||R(t,0,r,8),i.write(t,e,r,n,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||k(t,e,this.length);for(var n=this[t],i=1,o=0;++o>>=0,e>>>=0,r||k(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return t>>>=0,e||k(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||k(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||k(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||k(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||k(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||k(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||k(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},a.prototype.readInt8=function(t,e){return t>>>=0,e||k(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||k(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||k(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||k(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||k(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||k(t,4,this.length),i.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||k(t,4,this.length),i.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||k(t,8,this.length),i.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||k(t,8,this.length),i.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||D(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||D(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);D(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>>=0,!n){var i=Math.pow(2,8*r-1);D(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s|0)-a&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return N(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return N(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return L(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return L(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},a.prototype.fill=function(t,e,r,n){if("string"==typeof t){if("string"==typeof e?(n=e,e=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!a.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===t.length){var i=t.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(t=i)}}else"number"==typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function M(t){return n.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(C,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function j(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function H(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function F(t){return t!=t}},8075:(t,e,r)=>{"use strict";var n=r(453),i=r(487),o=i(n("String.prototype.indexOf"));t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&o(t,".prototype.")>-1?i(r):r}},487:(t,e,r)=>{"use strict";var n=r(6743),i=r(453),o=r(6897),s=r(9675),a=i("%Function.prototype.apply%"),f=i("%Function.prototype.call%"),u=i("%Reflect.apply%",!0)||n.call(f,a),c=r(655),h=i("%Math.max%");t.exports=function(t){if("function"!=typeof t)throw new s("a function is required");var e=u(n,f,arguments);return o(e,1+h(0,t.length-(arguments.length-1)),!0)};var p=function(){return u(n,a,arguments)};c?c(t.exports,"apply",{value:p}):t.exports.apply=p},955:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,e=t.lib.BlockCipher,r=t.algo,i=[],o=[],s=[],a=[],f=[],u=[],c=[],h=[],p=[],l=[];!function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var r=0,n=0;for(e=0;e<256;e++){var y=n^n<<1^n<<2^n<<3^n<<4;y=y>>>8^255&y^99,i[r]=y,o[y]=r;var g=t[r],d=t[g],v=t[d],m=257*t[y]^16843008*y;s[r]=m<<24|m>>>8,a[r]=m<<16|m>>>16,f[r]=m<<8|m>>>24,u[r]=m,m=16843009*v^65537*d^257*g^16843008*r,c[y]=m<<24|m>>>8,h[y]=m<<16|m>>>16,p[y]=m<<8|m>>>24,l[y]=m,r?(r=g^t[t[t[v^g]]],n^=t[t[n]]):r=n=1}}();var y=[0,1,2,4,8,16,32,64,128,27,54],g=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,n=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],s=0;s6&&s%r==4&&(a=i[a>>>24]<<24|i[a>>>16&255]<<16|i[a>>>8&255]<<8|i[255&a]):(a=i[(a=a<<8|a>>>24)>>>24]<<24|i[a>>>16&255]<<16|i[a>>>8&255]<<8|i[255&a],a^=y[s/r|0]<<24),o[s]=o[s-r]^a}for(var f=this._invKeySchedule=[],u=0;u>>24]]^h[i[a>>>16&255]]^p[i[a>>>8&255]]^l[i[255&a]]}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,s,a,f,u,i)},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,c,h,p,l,o),r=t[e+1],t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,n,i,o,s,a){for(var f=this._nRounds,u=t[e]^r[0],c=t[e+1]^r[1],h=t[e+2]^r[2],p=t[e+3]^r[3],l=4,y=1;y>>24]^i[c>>>16&255]^o[h>>>8&255]^s[255&p]^r[l++],d=n[c>>>24]^i[h>>>16&255]^o[p>>>8&255]^s[255&u]^r[l++],v=n[h>>>24]^i[p>>>16&255]^o[u>>>8&255]^s[255&c]^r[l++],m=n[p>>>24]^i[u>>>16&255]^o[c>>>8&255]^s[255&h]^r[l++];u=g,c=d,h=v,p=m}g=(a[u>>>24]<<24|a[c>>>16&255]<<16|a[h>>>8&255]<<8|a[255&p])^r[l++],d=(a[c>>>24]<<24|a[h>>>16&255]<<16|a[p>>>8&255]<<8|a[255&u])^r[l++],v=(a[h>>>24]<<24|a[p>>>16&255]<<16|a[u>>>8&255]<<8|a[255&c])^r[l++],m=(a[p>>>24]<<24|a[u>>>16&255]<<16|a[c>>>8&255]<<8|a[255&h])^r[l++],t[e]=g,t[e+1]=d,t[e+2]=v,t[e+3]=m},keySize:8});t.AES=e._createHelper(g)}(),n.AES)},7165:function(t,e,r){var n,i,o,s,a,f,u,c,h,p,l,y,g,d,v,m,S,_,b;t.exports=(n=r(9021),r(9506),void(n.lib.Cipher||(i=n,o=i.lib,s=o.Base,a=o.WordArray,f=o.BufferedBlockAlgorithm,u=i.enc,u.Utf8,c=u.Base64,h=i.algo.EvpKDF,p=o.Cipher=f.extend({cfg:s.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(){f.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(){function t(t){return"string"==typeof t?b:S}return function(e){return{encrypt:function(r,n,i){return t(n).encrypt(e,r,n,i)},decrypt:function(r,n,i){return t(n).decrypt(e,r,n,i)}}}}()}),o.StreamCipher=p.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),l=i.mode={},y=o.BlockCipherMode=s.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}}),g=l.CBC=function(){var t=y.extend();function e(t,e,r){var n=this._iv;if(n){var i=n;this._iv=void 0}else i=this._prevBlock;for(var o=0;o>>2];t.sigBytes-=e}},o.BlockCipher=p.extend({cfg:p.cfg.extend({mode:g,padding:d}),reset:function(){p.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=r.createEncryptor;else n=r.createDecryptor,this._minBufferSize=1;this._mode&&this._mode.__creator==n?this._mode.init(this,e&&e.words):(this._mode=n.call(r,this,e&&e.words),this._mode.__creator=n)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else e=this._process(!0),t.unpad(e);return e},blockSize:4}),v=o.CipherParams=s.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}}),m=(i.format={}).OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var n=a.create([1398893684,1701076831]).concat(r).concat(e);else n=e;return n.toString(c)},parse:function(t){var e=c.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var n=a.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return v.create({ciphertext:e,salt:n})}},S=o.SerializableCipher=s.extend({cfg:s.extend({format:m}),encrypt:function(t,e,r,n){n=this.cfg.extend(n);var i=t.createEncryptor(r,n),o=i.finalize(e),s=i.cfg;return v.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:n.format})},decrypt:function(t,e,r,n){return n=this.cfg.extend(n),e=this._parse(e,n.format),t.createDecryptor(r,n).finalize(e.ciphertext)},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),_=(i.kdf={}).OpenSSL={execute:function(t,e,r,n){n||(n=a.random(8));var i=h.create({keySize:e+r}).compute(t,n),o=a.create(i.words.slice(e),4*r);return i.sigBytes=4*e,v.create({key:i,iv:o,salt:n})}},b=o.PasswordBasedCipher=S.extend({cfg:S.cfg.extend({kdf:_}),encrypt:function(t,e,r,n){var i=(n=this.cfg.extend(n)).kdf.execute(r,t.keySize,t.ivSize);n.iv=i.iv;var o=S.encrypt.call(this,t,e,i.key,n);return o.mixIn(i),o},decrypt:function(t,e,r,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var i=n.kdf.execute(r,t.keySize,t.ivSize,e.salt);return n.iv=i.iv,S.decrypt.call(this,t,e,i.key,n)}}))))},9021:function(t,e){var r;t.exports=(r=r||function(t,e){var r=Object.create||function(){function t(){}return function(e){var r;return t.prototype=e,r=new t,t.prototype=null,r}}(),n={},i=n.lib={},o=i.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,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)}},s=i.WordArray=o.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||f).stringify(this)},concat:function(t){var e=this.words,r=t.words,n=this.sigBytes,i=t.sigBytes;if(this.clamp(),n%4)for(var o=0;o>>2]>>>24-o%4*8&255;e[n+o>>>2]|=s<<24-(n+o)%4*8}else for(o=0;o>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var r,n=[],i=function(e){var r=987654321,n=4294967295;return function(){var i=((r=36969*(65535&r)+(r>>16)&n)<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n;return i/=4294967296,(i+=.5)*(t.random()>.5?1:-1)}},o=0;o>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new s.init(r,e/2)}},u=a.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new s.init(r,e)}},c=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},h=i.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=c.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,a=i/(4*o),f=(a=e?t.ceil(a):t.max((0|a)-this._minBufferSize,0))*o,u=t.min(4*f,i);if(f){for(var c=0;c>>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,a=0;a<4&&o+.75*a>>6*(3-a)&63));var f=n.charAt(64);if(f)for(;i.length%4;)i.push(f);return i.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var i=0;i>>6-s%4*2;n[i>>>2]|=(a|f)<<24-i%4*8,i++}return o.create(n,i)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},n.enc.Base64)},5503:function(t,e,r){var n;t.exports=(n=r(9021),function(){var t=n,e=t.lib.WordArray,r=t.enc;function i(t){return t<<8&4278255360|t>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i>>2]>>>16-i%4*8&65535;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var r=t.length,n=[],i=0;i>>1]|=t.charCodeAt(i)<<16-i%2*16;return e.create(n,2*r)}},r.Utf16LE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],o=0;o>>2]>>>16-o%4*8&65535);n.push(String.fromCharCode(s))}return n.join("")},parse:function(t){for(var r=t.length,n=[],o=0;o>>1]|=i(t.charCodeAt(o)<<16-o%2*16);return e.create(n,2*r)}}}(),n.enc.Utf16)},9506:function(t,e,r){var n,i,o,s,a,f,u,c;t.exports=(c=r(9021),r(5471),r(1025),o=(i=(n=c).lib).Base,s=i.WordArray,f=(a=n.algo).MD5,u=a.EvpKDF=o.extend({cfg:o.extend({keySize:4,hasher:f,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,n=r.hasher.create(),i=s.create(),o=i.words,a=r.keySize,f=r.iterations;o.lengthn&&(e=t.finalize(e)),e.clamp();for(var i=this._oKey=e.clone(),s=this._iKey=e.clone(),a=i.words,f=s.words,u=0;u>>2]|=t[i]<<24-i%4*8;e.call(this,n,r)}else e.apply(this,arguments)};r.prototype=t}}(),n.lib.WordArray)},4636:function(t,e,r){var n;t.exports=(n=r(9021),function(t){var e=n,r=e.lib,i=r.WordArray,o=r.Hasher,s=e.algo,a=[];!function(){for(var e=0;e<64;e++)a[e]=4294967296*t.abs(t.sin(e+1))|0}();var f=s.MD5=o.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var n=e+r,i=t[n];t[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,s=t[e+0],f=t[e+1],l=t[e+2],y=t[e+3],g=t[e+4],d=t[e+5],v=t[e+6],m=t[e+7],S=t[e+8],_=t[e+9],b=t[e+10],E=t[e+11],w=t[e+12],O=t[e+13],B=t[e+14],A=t[e+15],x=o[0],P=o[1],T=o[2],I=o[3];x=u(x,P,T,I,s,7,a[0]),I=u(I,x,P,T,f,12,a[1]),T=u(T,I,x,P,l,17,a[2]),P=u(P,T,I,x,y,22,a[3]),x=u(x,P,T,I,g,7,a[4]),I=u(I,x,P,T,d,12,a[5]),T=u(T,I,x,P,v,17,a[6]),P=u(P,T,I,x,m,22,a[7]),x=u(x,P,T,I,S,7,a[8]),I=u(I,x,P,T,_,12,a[9]),T=u(T,I,x,P,b,17,a[10]),P=u(P,T,I,x,E,22,a[11]),x=u(x,P,T,I,w,7,a[12]),I=u(I,x,P,T,O,12,a[13]),T=u(T,I,x,P,B,17,a[14]),x=c(x,P=u(P,T,I,x,A,22,a[15]),T,I,f,5,a[16]),I=c(I,x,P,T,v,9,a[17]),T=c(T,I,x,P,E,14,a[18]),P=c(P,T,I,x,s,20,a[19]),x=c(x,P,T,I,d,5,a[20]),I=c(I,x,P,T,b,9,a[21]),T=c(T,I,x,P,A,14,a[22]),P=c(P,T,I,x,g,20,a[23]),x=c(x,P,T,I,_,5,a[24]),I=c(I,x,P,T,B,9,a[25]),T=c(T,I,x,P,y,14,a[26]),P=c(P,T,I,x,S,20,a[27]),x=c(x,P,T,I,O,5,a[28]),I=c(I,x,P,T,l,9,a[29]),T=c(T,I,x,P,m,14,a[30]),x=h(x,P=c(P,T,I,x,w,20,a[31]),T,I,d,4,a[32]),I=h(I,x,P,T,S,11,a[33]),T=h(T,I,x,P,E,16,a[34]),P=h(P,T,I,x,B,23,a[35]),x=h(x,P,T,I,f,4,a[36]),I=h(I,x,P,T,g,11,a[37]),T=h(T,I,x,P,m,16,a[38]),P=h(P,T,I,x,b,23,a[39]),x=h(x,P,T,I,O,4,a[40]),I=h(I,x,P,T,s,11,a[41]),T=h(T,I,x,P,y,16,a[42]),P=h(P,T,I,x,v,23,a[43]),x=h(x,P,T,I,_,4,a[44]),I=h(I,x,P,T,w,11,a[45]),T=h(T,I,x,P,A,16,a[46]),x=p(x,P=h(P,T,I,x,l,23,a[47]),T,I,s,6,a[48]),I=p(I,x,P,T,m,10,a[49]),T=p(T,I,x,P,B,15,a[50]),P=p(P,T,I,x,d,21,a[51]),x=p(x,P,T,I,w,6,a[52]),I=p(I,x,P,T,y,10,a[53]),T=p(T,I,x,P,b,15,a[54]),P=p(P,T,I,x,f,21,a[55]),x=p(x,P,T,I,S,6,a[56]),I=p(I,x,P,T,A,10,a[57]),T=p(T,I,x,P,v,15,a[58]),P=p(P,T,I,x,O,21,a[59]),x=p(x,P,T,I,g,6,a[60]),I=p(I,x,P,T,E,10,a[61]),T=p(T,I,x,P,l,15,a[62]),P=p(P,T,I,x,_,21,a[63]),o[0]=o[0]+x|0,o[1]=o[1]+P|0,o[2]=o[2]+T|0,o[3]=o[3]+I|0},_doFinalize:function(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;r[i>>>5]|=128<<24-i%32;var o=t.floor(n/4294967296),s=n;r[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(i+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),e.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,f=a.words,u=0;u<4;u++){var c=f[u];f[u]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});function u(t,e,r,n,i,o,s){var a=t+(e&r|~e&n)+i+s;return(a<>>32-o)+e}function c(t,e,r,n,i,o,s){var a=t+(e&n|r&~n)+i+s;return(a<>>32-o)+e}function h(t,e,r,n,i,o,s){var a=t+(e^r^n)+i+s;return(a<>>32-o)+e}function p(t,e,r,n,i,o,s){var a=t+(r^(e|~n))+i+s;return(a<>>32-o)+e}e.MD5=o._createHelper(f),e.HmacMD5=o._createHmacHelper(f)}(Math),n.MD5)},2169:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.mode.CFB=function(){var t=n.lib.BlockCipherMode.extend();function e(t,e,r,n){var i=this._iv;if(i){var o=i.slice(0);this._iv=void 0}else o=this._prevBlock;n.encryptBlock(o,0);for(var s=0;s>24))t+=1<<24;else{var e=t>>16&255,r=t>>8&255,n=255&t;255===e?(e=0,255===r?(r=0,255===n?n=0:++n):++r):++e,t=0,t+=e<<16,t+=r<<8,t+=n}return t}var r=t.Encryptor=t.extend({processBlock:function(t,r){var n=this._cipher,i=n.blockSize,o=this._iv,s=this._counter;o&&(s=this._counter=o.slice(0),this._iv=void 0),function(t){0===(t[0]=e(t[0]))&&(t[1]=e(t[1]))}(s);var a=s.slice(0);n.encryptBlock(a,0);for(var f=0;f>>2]|=i<<24-o%4*8,t.sigBytes+=i},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},n.pad.Ansix923)},4905:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.pad.Iso10126={pad:function(t,e){var r=4*e,i=r-t.sigBytes%r;t.concat(n.lib.WordArray.random(i-1)).concat(n.lib.WordArray.create([i<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},n.pad.Iso10126)},482:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.pad.Iso97971={pad:function(t,e){t.concat(n.lib.WordArray.create([2147483648],1)),n.pad.ZeroPadding.pad(t,e)},unpad:function(t){n.pad.ZeroPadding.unpad(t),t.sigBytes--}},n.pad.Iso97971)},8124:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.pad.NoPadding={pad:function(){},unpad:function(){}},n.pad.NoPadding)},2155:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.pad.ZeroPadding={pad:function(t,e){var r=4*e;t.clamp(),t.sigBytes+=r-(t.sigBytes%r||r)},unpad:function(t){for(var e=t.words,r=t.sigBytes-1;!(e[r>>>2]>>>24-r%4*8&255);)r--;t.sigBytes=r+1}},n.pad.ZeroPadding)},19:function(t,e,r){var n,i,o,s,a,f,u,c,h;t.exports=(h=r(9021),r(5471),r(1025),o=(i=(n=h).lib).Base,s=i.WordArray,f=(a=n.algo).SHA1,u=a.HMAC,c=a.PBKDF2=o.extend({cfg:o.extend({keySize:4,hasher:f,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,n=u.create(r.hasher,t),i=s.create(),o=s.create([1]),a=i.words,f=o.words,c=r.keySize,h=r.iterations;a.length>>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 i=0;i<4;i++)f.call(this);for(i=0;i<8;i++)n[i]^=r[i+4&7];if(e){var o=e.words,s=o[0],a=o[1],u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=u>>>16|4294901760&c,p=c<<16|65535&u;for(n[0]^=u,n[1]^=h,n[2]^=c,n[3]^=p,n[4]^=u,n[5]^=h,n[6]^=c,n[7]^=p,i=0;i<4;i++)f.call(this)}},_doProcessBlock:function(t,e){var r=this._X;f.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function f(){for(var t=this._X,e=this._C,r=0;r<8;r++)o[r]=e[r];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0,r=0;r<8;r++){var n=t[r]+e[r],i=65535&n,a=n>>>16,f=((i*i>>>17)+i*a>>>15)+a*a,u=((4294901760&n)*n|0)+((65535&n)*n|0);s[r]=f^u}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}t.RabbitLegacy=e._createHelper(a)}(),n.RabbitLegacy)},6298:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,e=t.lib.StreamCipher,r=t.algo,i=[],o=[],s=[],a=r.Rabbit=e.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 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],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]];for(this._b=0,r=0;r<4;r++)f.call(this);for(r=0;r<8;r++)i[r]^=n[r+4&7];if(e){var o=e.words,s=o[0],a=o[1],u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=u>>>16|4294901760&c,p=c<<16|65535&u;for(i[0]^=u,i[1]^=h,i[2]^=c,i[3]^=p,i[4]^=u,i[5]^=h,i[6]^=c,i[7]^=p,r=0;r<4;r++)f.call(this)}},_doProcessBlock:function(t,e){var r=this._X;f.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function f(){for(var t=this._X,e=this._C,r=0;r<8;r++)o[r]=e[r];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0,r=0;r<8;r++){var n=t[r]+e[r],i=65535&n,a=n>>>16,f=((i*i>>>17)+i*a>>>15)+a*a,u=((4294901760&n)*n|0)+((65535&n)*n|0);s[r]=f^u}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}t.Rabbit=e._createHelper(a)}(),n.Rabbit)},7193:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,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,n=this._S=[],i=0;i<256;i++)n[i]=i;i=0;for(var o=0;i<256;i++){var s=i%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+n[i]+a)%256;var f=n[i];n[i]=n[o],n[o]=f}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var t=this._S,e=this._i,r=this._j,n=0,i=0;i<4;i++){r=(r+t[e=(e+1)%256])%256;var o=t[e];t[e]=t[r],t[r]=o,n|=t[(t[e]+t[r])%256]<<24-8*i}return this._i=e,this._j=r,n}t.RC4=e._createHelper(i);var s=r.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)o.call(this)}});t.RC4Drop=e._createHelper(s)}(),n.RC4)},8056:function(t,e,r){var n;t.exports=(n=r(9021),function(t){var e=n,r=e.lib,i=r.WordArray,o=r.Hasher,s=e.algo,a=i.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]),f=i.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]),u=i.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]),c=i.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]),h=i.create([0,1518500249,1859775393,2400959708,2840853838]),p=i.create([1352829926,1548603684,1836072691,2053994217,0]),l=s.RIPEMD160=o.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var n=e+r,i=t[n];t[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o,s,l,_,b,E,w,O,B,A,x,P=this._hash.words,T=h.words,I=p.words,k=a.words,D=f.words,R=u.words,N=c.words;for(E=o=P[0],w=s=P[1],O=l=P[2],B=_=P[3],A=b=P[4],r=0;r<80;r+=1)x=o+t[e+k[r]]|0,x+=r<16?y(s,l,_)+T[0]:r<32?g(s,l,_)+T[1]:r<48?d(s,l,_)+T[2]:r<64?v(s,l,_)+T[3]:m(s,l,_)+T[4],x=(x=S(x|=0,R[r]))+b|0,o=b,b=_,_=S(l,10),l=s,s=x,x=E+t[e+D[r]]|0,x+=r<16?m(w,O,B)+I[0]:r<32?v(w,O,B)+I[1]:r<48?d(w,O,B)+I[2]:r<64?g(w,O,B)+I[3]:y(w,O,B)+I[4],x=(x=S(x|=0,N[r]))+A|0,E=A,A=B,B=S(O,10),O=w,w=x;x=P[1]+l+B|0,P[1]=P[2]+_+A|0,P[2]=P[3]+b+E|0,P[3]=P[4]+o+w|0,P[4]=P[0]+s+O|0,P[0]=x},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(e.length+1),this._process();for(var i=this._hash,o=i.words,s=0;s<5;s++){var a=o[s];o[s]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return i},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});function y(t,e,r){return t^e^r}function g(t,e,r){return t&e|~t&r}function d(t,e,r){return(t|~e)^r}function v(t,e,r){return t&r|e&~r}function m(t,e,r){return t^(e|~r)}function S(t,e){return t<>>32-e}e.RIPEMD160=o._createHelper(l),e.HmacRIPEMD160=o._createHmacHelper(l)}(Math),n.RIPEMD160)},5471:function(t,e,r){var n,i,o,s,a,f,u,c;t.exports=(i=(n=c=r(9021)).lib,o=i.WordArray,s=i.Hasher,a=n.algo,f=[],u=a.SHA1=s.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],u=0;u<80;u++){if(u<16)f[u]=0|t[e+u];else{var c=f[u-3]^f[u-8]^f[u-14]^f[u-16];f[u]=c<<1|c>>>31}var h=(n<<5|n>>>27)+a+f[u];h+=u<20?1518500249+(i&o|~i&s):u<40?1859775393+(i^o^s):u<60?(i&o|i&s|o&s)-1894007588:(i^o^s)-899497514,a=s,s=o,o=i<<30|i>>>2,i=n,n=h}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=Math.floor(r/4294967296),e[15+(n+64>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=s.clone.call(this);return t._hash=this._hash.clone(),t}}),n.SHA1=s._createHelper(u),n.HmacSHA1=s._createHmacHelper(u),c.SHA1)},6308:function(t,e,r){var n,i,o,s,a,f;t.exports=(f=r(9021),r(3009),i=(n=f).lib.WordArray,o=n.algo,s=o.SHA256,a=o.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=s._doFinalize.call(this);return t.sigBytes-=4,t}}),n.SHA224=s._createHelper(a),n.HmacSHA224=s._createHmacHelper(a),f.SHA224)},3009:function(t,e,r){var n;t.exports=(n=r(9021),function(t){var e=n,r=e.lib,i=r.WordArray,o=r.Hasher,s=e.algo,a=[],f=[];!function(){function e(e){for(var r=t.sqrt(e),n=2;n<=r;n++)if(!(e%n))return!1;return!0}function r(t){return 4294967296*(t-(0|t))|0}for(var n=2,i=0;i<64;)e(n)&&(i<8&&(a[i]=r(t.pow(n,.5))),f[i]=r(t.pow(n,1/3)),i++),n++}();var u=[],c=s.SHA256=o.extend({_doReset:function(){this._hash=new i.init(a.slice(0))},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],c=r[5],h=r[6],p=r[7],l=0;l<64;l++){if(l<16)u[l]=0|t[e+l];else{var y=u[l-15],g=(y<<25|y>>>7)^(y<<14|y>>>18)^y>>>3,d=u[l-2],v=(d<<15|d>>>17)^(d<<13|d>>>19)^d>>>10;u[l]=g+u[l-7]+v+u[l-16]}var m=n&i^n&o^i&o,S=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),_=p+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&h)+f[l]+u[l];p=h,h=c,c=a,a=s+_|0,s=o,o=i,i=n,n=_+(S+m)|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+h|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128<<24-i%32,r[14+(i+64>>>9<<4)]=t.floor(n/4294967296),r[15+(i+64>>>9<<4)]=n,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(c),e.HmacSHA256=o._createHmacHelper(c)}(Math),n.SHA256)},5953:function(t,e,r){var n;t.exports=(n=r(9021),r(3240),function(t){var e=n,r=e.lib,i=r.WordArray,o=r.Hasher,s=e.x64.Word,a=e.algo,f=[],u=[],c=[];!function(){for(var t=1,e=0,r=0;r<24;r++){f[t+5*e]=(r+1)*(r+2)/2%64;var n=(2*t+3*e)%5;t=e%5,e=n}for(t=0;t<5;t++)for(e=0;e<5;e++)u[t+5*e]=e+(2*t+3*e)%5*5;for(var i=1,o=0;o<24;o++){for(var a=0,h=0,p=0;p<7;p++){if(1&i){var l=(1<>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(P=r[i]).high^=s,P.low^=o}for(var a=0;a<24;a++){for(var p=0;p<5;p++){for(var l=0,y=0,g=0;g<5;g++)l^=(P=r[p+5*g]).high,y^=P.low;var d=h[p];d.high=l,d.low=y}for(p=0;p<5;p++){var v=h[(p+4)%5],m=h[(p+1)%5],S=m.high,_=m.low;for(l=v.high^(S<<1|_>>>31),y=v.low^(_<<1|S>>>31),g=0;g<5;g++)(P=r[p+5*g]).high^=l,P.low^=y}for(var b=1;b<25;b++){var E=(P=r[b]).high,w=P.low,O=f[b];O<32?(l=E<>>32-O,y=w<>>32-O):(l=w<>>64-O,y=E<>>64-O);var B=h[u[b]];B.high=l,B.low=y}var A=h[0],x=r[0];for(A.high=x.high,A.low=x.low,p=0;p<5;p++)for(g=0;g<5;g++){var P=r[b=p+5*g],T=h[b],I=h[(p+1)%5+5*g],k=h[(p+2)%5+5*g];P.high=T.high^~I.high&k.high,P.low=T.low^~I.low&k.low}P=r[0];var D=c[a];P.high^=D.high,P.low^=D.low}},_doFinalize:function(){var e=this._data,r=e.words,n=(this._nDataBytes,8*e.sigBytes),o=32*this.blockSize;r[n>>>5]|=1<<24-n%32,r[(t.ceil((n+1)/o)*o>>>5)-1]|=128,e.sigBytes=4*r.length,this._process();for(var s=this._state,a=this.cfg.outputLength/8,f=a/8,u=[],c=0;c>>24)|4278255360&(p<<24|p>>>8),l=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8),u.push(l),u.push(p)}return new i.init(u,a)},clone:function(){for(var t=o.clone.call(this),e=t._state=this._state.slice(0),r=0;r<25;r++)e[r]=e[r].clone();return t}});e.SHA3=o._createHelper(p),e.HmacSHA3=o._createHmacHelper(p)}(Math),n.SHA3)},9557:function(t,e,r){var n,i,o,s,a,f,u,c;t.exports=(c=r(9021),r(3240),r(1380),i=(n=c).x64,o=i.Word,s=i.WordArray,a=n.algo,f=a.SHA512,u=a.SHA384=f.extend({_doReset:function(){this._hash=new s.init([new o.init(3418070365,3238371032),new o.init(1654270250,914150663),new o.init(2438529370,812702999),new o.init(355462360,4144912697),new o.init(1731405415,4290775857),new o.init(2394180231,1750603025),new o.init(3675008525,1694076839),new o.init(1203062813,3204075428)])},_doFinalize:function(){var t=f._doFinalize.call(this);return t.sigBytes-=16,t}}),n.SHA384=f._createHelper(u),n.HmacSHA384=f._createHmacHelper(u),c.SHA384)},1380:function(t,e,r){var n;t.exports=(n=r(9021),r(3240),function(){var t=n,e=t.lib.Hasher,r=t.x64,i=r.Word,o=r.WordArray,s=t.algo;function a(){return i.create.apply(i,arguments)}var f=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],u=[];!function(){for(var t=0;t<80;t++)u[t]=a()}();var c=s.SHA512=e.extend({_doReset:function(){this._hash=new o.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,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],c=r[5],h=r[6],p=r[7],l=n.high,y=n.low,g=i.high,d=i.low,v=o.high,m=o.low,S=s.high,_=s.low,b=a.high,E=a.low,w=c.high,O=c.low,B=h.high,A=h.low,x=p.high,P=p.low,T=l,I=y,k=g,D=d,R=v,N=m,L=S,C=_,U=b,M=E,j=w,H=O,F=B,z=A,G=x,q=P,$=0;$<80;$++){var K=u[$];if($<16)var W=K.high=0|t[e+2*$],V=K.low=0|t[e+2*$+1];else{var Y=u[$-15],X=Y.high,Z=Y.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),tt=u[$-2],et=tt.high,rt=tt.low,nt=(et>>>19|rt<<13)^(et<<3|rt>>>29)^et>>>6,it=(rt>>>19|et<<13)^(rt<<3|et>>>29)^(rt>>>6|et<<26),ot=u[$-7],st=ot.high,at=ot.low,ft=u[$-16],ut=ft.high,ct=ft.low;W=(W=(W=J+st+((V=Q+at)>>>0>>0?1:0))+nt+((V+=it)>>>0>>0?1:0))+ut+((V+=ct)>>>0>>0?1:0),K.high=W,K.low=V}var ht,pt=U&j^~U&F,lt=M&H^~M&z,yt=T&k^T&R^k&R,gt=I&D^I&N^D&N,dt=(T>>>28|I<<4)^(T<<30|I>>>2)^(T<<25|I>>>7),vt=(I>>>28|T<<4)^(I<<30|T>>>2)^(I<<25|T>>>7),mt=(U>>>14|M<<18)^(U>>>18|M<<14)^(U<<23|M>>>9),St=(M>>>14|U<<18)^(M>>>18|U<<14)^(M<<23|U>>>9),_t=f[$],bt=_t.high,Et=_t.low,wt=G+mt+((ht=q+St)>>>0>>0?1:0),Ot=vt+gt;G=F,q=z,F=j,z=H,j=U,H=M,U=L+(wt=(wt=(wt=wt+pt+((ht+=lt)>>>0>>0?1:0))+bt+((ht+=Et)>>>0>>0?1:0))+W+((ht+=V)>>>0>>0?1:0))+((M=C+ht|0)>>>0>>0?1:0)|0,L=R,C=N,R=k,N=D,k=T,D=I,T=wt+(dt+yt+(Ot>>>0>>0?1:0))+((I=ht+Ot|0)>>>0>>0?1:0)|0}y=n.low=y+I,n.high=l+T+(y>>>0>>0?1:0),d=i.low=d+D,i.high=g+k+(d>>>0>>0?1:0),m=o.low=m+N,o.high=v+R+(m>>>0>>0?1:0),_=s.low=_+C,s.high=S+L+(_>>>0>>0?1:0),E=a.low=E+M,a.high=b+U+(E>>>0>>0?1:0),O=c.low=O+H,c.high=w+j+(O>>>0>>0?1:0),A=h.low=A+z,h.high=B+F+(A>>>0>>0?1:0),P=p.low=P+q,p.high=x+G+(P>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),e[31+(n+128>>>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)}(),n.SHA512)},7628:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,e=t.lib,r=e.WordArray,i=e.BlockCipher,o=t.algo,s=[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],a=[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],u=[{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}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],h=o.DES=i.extend({_doReset:function(){for(var t=this._key.words,e=[],r=0;r<56;r++){var n=s[r]-1;e[r]=t[n>>>5]>>>31-n%32&1}for(var i=this._subKeys=[],o=0;o<16;o++){var u=i[o]=[],c=f[o];for(r=0;r<24;r++)u[r/6|0]|=e[(a[r]-1+c)%28]<<31-r%6,u[4+(r/6|0)]|=e[28+(a[r+24]-1+c)%28]<<31-r%6;for(u[0]=u[0]<<1|u[0]>>>31,r=1;r<7;r++)u[r]=u[r]>>>4*(r-1)+3;u[7]=u[7]<<5|u[7]>>>27}var h=this._invSubKeys=[];for(r=0;r<16;r++)h[r]=i[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),l.call(this,2,858993459),l.call(this,8,16711935),p.call(this,1,1431655765);for(var n=0;n<16;n++){for(var i=r[n],o=this._lBlock,s=this._rBlock,a=0,f=0;f<8;f++)a|=u[f][((s^i[f])&c[f])>>>0];this._lBlock=s,this._rBlock=o^a}var h=this._lBlock;this._lBlock=this._rBlock,this._rBlock=h,p.call(this,1,1431655765),l.call(this,8,16711935),l.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^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<{"use strict";var n=r(655),i=r(8068),o=r(9675),s=r(5795);t.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new o("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new o("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new o("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new o("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new o("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new o("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,f=arguments.length>4?arguments[4]:null,u=arguments.length>5?arguments[5]:null,c=arguments.length>6&&arguments[6],h=!!s&&s(t,e);if(n)n(t,e,{configurable:null===u&&h?h.configurable:!u,enumerable:null===a&&h?h.enumerable:!a,value:r,writable:null===f&&h?h.writable:!f});else{if(!c&&(a||f||u))throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},655:(t,e,r)=>{"use strict";var n=r(453)("%Object.defineProperty%",!0)||!1;if(n)try{n({},"a",{value:1})}catch(t){n=!1}t.exports=n},1237:t=>{"use strict";t.exports=EvalError},9383:t=>{"use strict";t.exports=Error},9290:t=>{"use strict";t.exports=RangeError},9538:t=>{"use strict";t.exports=ReferenceError},8068:t=>{"use strict";t.exports=SyntaxError},9675:t=>{"use strict";t.exports=TypeError},5345:t=>{"use strict";t.exports=URIError},9353:t=>{"use strict";var e=Object.prototype.toString,r=Math.max,n=function(t,e){for(var r=[],n=0;n{"use strict";var n=r(9353);t.exports=Function.prototype.bind||n},453:(t,e,r)=>{"use strict";var n,i=r(9383),o=r(1237),s=r(9290),a=r(9538),f=r(8068),u=r(9675),c=r(5345),h=Function,p=function(t){try{return h('"use strict"; return ('+t+").constructor;")()}catch(t){}},l=Object.getOwnPropertyDescriptor;if(l)try{l({},"")}catch(t){l=null}var y=function(){throw new u},g=l?function(){try{return y}catch(t){try{return l(arguments,"callee").get}catch(t){return y}}}():y,d=r(4039)(),v=r(24)(),m=Object.getPrototypeOf||(v?function(t){return t.__proto__}:null),S={},_="undefined"!=typeof Uint8Array&&m?m(Uint8Array):n,b={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?n:ArrayBuffer,"%ArrayIteratorPrototype%":d&&m?m([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":S,"%AsyncGenerator%":S,"%AsyncGeneratorFunction%":S,"%AsyncIteratorPrototype%":S,"%Atomics%":"undefined"==typeof Atomics?n:Atomics,"%BigInt%":"undefined"==typeof BigInt?n:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?n:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":o,"%Float32Array%":"undefined"==typeof Float32Array?n:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?n:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?n:FinalizationRegistry,"%Function%":h,"%GeneratorFunction%":S,"%Int8Array%":"undefined"==typeof Int8Array?n:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?n:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":d&&m?m(m([][Symbol.iterator]())):n,"%JSON%":"object"==typeof JSON?JSON:n,"%Map%":"undefined"==typeof Map?n:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&d&&m?m((new Map)[Symbol.iterator]()):n,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?n:Promise,"%Proxy%":"undefined"==typeof Proxy?n:Proxy,"%RangeError%":s,"%ReferenceError%":a,"%Reflect%":"undefined"==typeof Reflect?n:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?n:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&d&&m?m((new Set)[Symbol.iterator]()):n,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":d&&m?m(""[Symbol.iterator]()):n,"%Symbol%":d?Symbol:n,"%SyntaxError%":f,"%ThrowTypeError%":g,"%TypedArray%":_,"%TypeError%":u,"%Uint8Array%":"undefined"==typeof Uint8Array?n:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?n:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?n:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?n:Uint32Array,"%URIError%":c,"%WeakMap%":"undefined"==typeof WeakMap?n:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?n:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?n:WeakSet};if(m)try{null.error}catch(t){var E=m(m(t));b["%Error.prototype%"]=E}var w=function t(e){var r;if("%AsyncFunction%"===e)r=p("async function () {}");else if("%GeneratorFunction%"===e)r=p("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=p("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var i=t("%AsyncGenerator%");i&&m&&(r=m(i.prototype))}return b[e]=r,r},O={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},B=r(6743),A=r(9957),x=B.call(Function.call,Array.prototype.concat),P=B.call(Function.apply,Array.prototype.splice),T=B.call(Function.call,String.prototype.replace),I=B.call(Function.call,String.prototype.slice),k=B.call(Function.call,RegExp.prototype.exec),D=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,R=/\\(\\)?/g,N=function(t,e){var r,n=t;if(A(O,n)&&(n="%"+(r=O[n])[0]+"%"),A(b,n)){var i=b[n];if(i===S&&(i=w(n)),void 0===i&&!e)throw new u("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:i}}throw new f("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new u("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new u('"allowMissing" argument must be a boolean');if(null===k(/^%?[^%]*%?$/,t))throw new f("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=I(t,0,1),r=I(t,-1);if("%"===e&&"%"!==r)throw new f("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new f("invalid intrinsic syntax, expected opening `%`");var n=[];return T(t,D,(function(t,e,r,i){n[n.length]=r?T(i,R,"$1"):e||t})),n}(t),n=r.length>0?r[0]:"",i=N("%"+n+"%",e),o=i.name,s=i.value,a=!1,c=i.alias;c&&(n=c[0],P(r,x([0,1],c)));for(var h=1,p=!0;h=r.length){var v=l(s,y);s=(p=!!v)&&"get"in v&&!("originalValue"in v.get)?v.get:s[y]}else p=A(s,y),s=s[y];p&&!a&&(b[o]=s)}}return s}},5795:(t,e,r)=>{"use strict";var n=r(453)("%Object.getOwnPropertyDescriptor%",!0);if(n)try{n([],"length")}catch(t){n=null}t.exports=n},592:(t,e,r)=>{"use strict";var n=r(655),i=function(){return!!n};i.hasArrayLengthDefineBug=function(){if(!n)return null;try{return 1!==n([],"length",{value:1}).length}catch(t){return!0}},t.exports=i},24:t=>{"use strict";var e={__proto__:null,foo:{}},r=Object;t.exports=function(){return{__proto__:e}.foo===e.foo&&!(e instanceof r)}},4039:(t,e,r)=>{"use strict";var n="undefined"!=typeof Symbol&&Symbol,i=r(1333);t.exports=function(){return"function"==typeof n&&"function"==typeof Symbol&&"symbol"==typeof n("foo")&&"symbol"==typeof Symbol("bar")&&i()}},1333:t=>{"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},9957:(t,e,r)=>{"use strict";var n=Function.prototype.call,i=Object.prototype.hasOwnProperty,o=r(6743);t.exports=o.call(n,i)},251:(t,e)=>{e.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,f=(1<>1,c=-7,h=r?i-1:0,p=r?-1:1,l=t[e+h];for(h+=p,o=l&(1<<-c)-1,l>>=-c,c+=a;c>0;o=256*o+t[e+h],h+=p,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=n;c>0;s=256*s+t[e+h],h+=p,c-=8);if(0===o)o=1-u;else{if(o===f)return s?NaN:1/0*(l?-1:1);s+=Math.pow(2,n),o-=u}return(l?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,f,u=8*o-i-1,c=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(f=Math.pow(2,-s))<1&&(s--,f*=2),(e+=s+h>=1?p/f:p*Math.pow(2,1-h))*f>=2&&(s++,f/=2),s+h>=c?(a=0,s=c):s+h>=1?(a=(e*f-1)*Math.pow(2,i),s+=h):(a=e*Math.pow(2,h-1)*Math.pow(2,i),s=0));i>=8;t[r+l]=255&a,l+=y,a/=256,i-=8);for(s=s<0;t[r+l]=255&s,l+=y,s/=256,u-=8);t[r+l-y]|=128*g}},3229:(t,e,r)=>{var n=r(8287).Buffer,i=r(7449),o=r(5682),s=(r(3200),r(3100).Ber,r(8226)._),a=r(8226),f=r(1768),u=r(7460);void 0===i.RSA_NO_PADDING&&(i.RSA_NO_PADDING=3),t.exports=function(){var t={node10:["md4","md5","ripemd160","sha1","sha224","sha256","sha384","sha512"],node:["md4","md5","ripemd160","sha1","sha224","sha256","sha384","sha512"],iojs:["md4","md5","ripemd160","sha1","sha224","sha256","sha384","sha512"],browser:["md5","ripemd160","sha1","sha256","sha512"]},e="pkcs1_oaep",r="pkcs1",i={private:"pkcs1-private-pem","private-der":"pkcs1-private-der",public:"pkcs8-public-pem","public-der":"pkcs8-public-der"};function c(t,i,f){if(!(this instanceof c))return new c(t,i,f);s.isObject(i)&&(f=i,i=void 0),this.$options={signingScheme:r,signingSchemeOptions:{hash:"sha256",saltLength:null},encryptionScheme:e,encryptionSchemeOptions:{hash:"sha1",label:null},environment:a.detectEnvironment(),rsaUtils:this},this.keyPair=new o.Key,this.$cache={},n.isBuffer(t)||s.isString(t)?this.importKey(t,i):s.isObject(t)&&this.generateKeyPair(t.b,t.e),this.setOptions(f)}return c.prototype.setOptions=function(n){if((n=n||{}).environment&&(this.$options.environment=n.environment),n.signingScheme){if(s.isString(n.signingScheme)){var i=n.signingScheme.toLowerCase().split("-");1==i.length?t.node.indexOf(i[0])>-1?(this.$options.signingSchemeOptions={hash:i[0]},this.$options.signingScheme=r):(this.$options.signingScheme=i[0],this.$options.signingSchemeOptions={hash:null}):(this.$options.signingSchemeOptions={hash:i[1]},this.$options.signingScheme=i[0])}else s.isObject(n.signingScheme)&&(this.$options.signingScheme=n.signingScheme.scheme||r,this.$options.signingSchemeOptions=s.omit(n.signingScheme,"scheme"));if(!f.isSignature(this.$options.signingScheme))throw Error("Unsupported signing scheme");if(this.$options.signingSchemeOptions.hash&&-1===t[this.$options.environment].indexOf(this.$options.signingSchemeOptions.hash))throw Error("Unsupported hashing algorithm for "+this.$options.environment+" environment")}if(n.encryptionScheme){if(s.isString(n.encryptionScheme)?(this.$options.encryptionScheme=n.encryptionScheme.toLowerCase(),this.$options.encryptionSchemeOptions={}):s.isObject(n.encryptionScheme)&&(this.$options.encryptionScheme=n.encryptionScheme.scheme||e,this.$options.encryptionSchemeOptions=s.omit(n.encryptionScheme,"scheme")),!f.isEncryption(this.$options.encryptionScheme))throw Error("Unsupported encryption scheme");if(this.$options.encryptionSchemeOptions.hash&&-1===t[this.$options.environment].indexOf(this.$options.encryptionSchemeOptions.hash))throw Error("Unsupported hashing algorithm for "+this.$options.environment+" environment")}this.keyPair.setOptions(this.$options)},c.prototype.generateKeyPair=function(t,e){if(e=e||65537,(t=t||2048)%8!=0)throw Error("Key size must be a multiple of 8.");return this.keyPair.generate(t,e.toString(16)),this.$cache={},this},c.prototype.importKey=function(t,e){if(!t)throw Error("Empty key given");if(e&&(e=i[e]||e),!u.detectAndImport(this.keyPair,t,e)&&void 0===e)throw Error("Key format must be specified");return this.$cache={},this},c.prototype.exportKey=function(t){return t=i[t=t||"private"]||t,this.$cache[t]||(this.$cache[t]=u.detectAndExport(this.keyPair,t)),this.$cache[t]},c.prototype.isPrivate=function(){return this.keyPair.isPrivate()},c.prototype.isPublic=function(t){return this.keyPair.isPublic(t)},c.prototype.isEmpty=function(t){return!(this.keyPair.n||this.keyPair.e||this.keyPair.d)},c.prototype.encrypt=function(t,e,r){return this.$$encryptKey(!1,t,e,r)},c.prototype.decrypt=function(t,e){return this.$$decryptKey(!1,t,e)},c.prototype.encryptPrivate=function(t,e,r){return this.$$encryptKey(!0,t,e,r)},c.prototype.decryptPublic=function(t,e){return this.$$decryptKey(!0,t,e)},c.prototype.$$encryptKey=function(t,e,r,n){try{var i=this.keyPair.encrypt(this.$getDataForEncrypt(e,n),t);return"buffer"!=r&&r?i.toString(r):i}catch(t){throw Error("Error during encryption. Original error: "+t)}},c.prototype.$$decryptKey=function(t,e,r){try{e=s.isString(e)?n.from(e,"base64"):e;var i=this.keyPair.decrypt(e,t);if(null===i)throw Error("Key decrypt method returns null.");return this.$getDecryptedData(i,r)}catch(t){throw Error("Error during decryption (probably incorrect key). Original error: "+t)}},c.prototype.sign=function(t,e,r){if(!this.isPrivate())throw Error("This is not private key");var n=this.keyPair.sign(this.$getDataForEncrypt(t,r));return e&&"buffer"!=e&&(n=n.toString(e)),n},c.prototype.verify=function(t,e,r,n){if(!this.isPublic())throw Error("This is not public key");return n=n&&"buffer"!=n?n:null,this.keyPair.verify(this.$getDataForEncrypt(t,r),e,n)},c.prototype.getKeySize=function(){return this.keyPair.keySize},c.prototype.getMaxMessageSize=function(){return this.keyPair.maxMessageLength},c.prototype.$getDataForEncrypt=function(t,e){if(s.isString(t)||s.isNumber(t))return n.from(""+t,e||"utf8");if(n.isBuffer(t))return t;if(s.isObject(t))return n.from(JSON.stringify(t));throw Error("Unexpected data type")},c.prototype.$getDecryptedData=function(t,e){return"buffer"==(e=e||"buffer")?t:"json"==e?JSON.parse(t.toString()):t.toString(e)},c}()},4538:(t,e,r)=>{var n=r(3200);t.exports={getEngine:function(t,e){var i=r(7469);return"node"===e.environment&&"function"==typeof n.publicEncrypt&&"function"==typeof n.privateDecrypt&&(i="function"==typeof n.privateEncrypt&&"function"==typeof n.publicDecrypt?r(2418):r(1957)),i(t,e)}}},2418:(t,e,r)=>{var n=r(3200),i=r(7449),o=r(1768);t.exports=function(t,e){var r=o.pkcs1.makeScheme(t,e);return{encrypt:function(t,o){var s;if(o)return s=i.RSA_PKCS1_PADDING,e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(s=e.encryptionSchemeOptions.padding),n.privateEncrypt({key:e.rsaUtils.exportKey("private"),padding:s},t);s=i.RSA_PKCS1_OAEP_PADDING,"pkcs1"===e.encryptionScheme&&(s=i.RSA_PKCS1_PADDING),e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(s=e.encryptionSchemeOptions.padding);var a=t;return s===i.RSA_NO_PADDING&&(a=r.pkcs0pad(t)),n.publicEncrypt({key:e.rsaUtils.exportKey("public"),padding:s},a)},decrypt:function(t,o){var s;if(o)return s=i.RSA_PKCS1_PADDING,e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(s=e.encryptionSchemeOptions.padding),n.publicDecrypt({key:e.rsaUtils.exportKey("public"),padding:s},t);s=i.RSA_PKCS1_OAEP_PADDING,"pkcs1"===e.encryptionScheme&&(s=i.RSA_PKCS1_PADDING),e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(s=e.encryptionSchemeOptions.padding);var a=n.privateDecrypt({key:e.rsaUtils.exportKey("private"),padding:s},t);return s===i.RSA_NO_PADDING?r.pkcs0unpad(a):a}}}},7469:(t,e,r)=>{var n=r(1973),i=r(1768);t.exports=function(t,e){var r=i.pkcs1.makeScheme(t,e);return{encrypt:function(e,i){var o,s;return i?(o=new n(r.encPad(e,{type:1})),s=t.$doPrivate(o)):(o=new n(t.encryptionScheme.encPad(e)),s=t.$doPublic(o)),s.toBuffer(t.encryptedDataLength)},decrypt:function(e,i){var o,s=new n(e);return i?(o=t.$doPublic(s),r.encUnPad(o.toBuffer(t.encryptedDataLength),{type:1})):(o=t.$doPrivate(s),t.encryptionScheme.encUnPad(o.toBuffer(t.encryptedDataLength)))}}}},1957:(t,e,r)=>{var n=r(3200),i=r(7449),o=r(1768);t.exports=function(t,e){var s=r(7469)(t,e),a=o.pkcs1.makeScheme(t,e);return{encrypt:function(t,r){if(r)return s.encrypt(t,r);var o=i.RSA_PKCS1_OAEP_PADDING;"pkcs1"===e.encryptionScheme&&(o=i.RSA_PKCS1_PADDING),e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(o=e.encryptionSchemeOptions.padding);var f=t;return o===i.RSA_NO_PADDING&&(f=a.pkcs0pad(t)),n.publicEncrypt({key:e.rsaUtils.exportKey("public"),padding:o},f)},decrypt:function(t,r){if(r)return s.decrypt(t,r);var o=i.RSA_PKCS1_OAEP_PADDING;"pkcs1"===e.encryptionScheme&&(o=i.RSA_PKCS1_PADDING),e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(o=e.encryptionSchemeOptions.padding);var f=n.privateDecrypt({key:e.rsaUtils.exportKey("private"),padding:o},t);return o===i.RSA_NO_PADDING?a.pkcs0unpad(f):f}}}},3374:(t,e,r)=>{r(8226)._,r(8226),t.exports={privateExport:function(t,e){return{n:t.n.toBuffer(),e:t.e,d:t.d.toBuffer(),p:t.p.toBuffer(),q:t.q.toBuffer(),dmp1:t.dmp1.toBuffer(),dmq1:t.dmq1.toBuffer(),coeff:t.coeff.toBuffer()}},privateImport:function(t,e,r){if(!(e.n&&e.e&&e.d&&e.p&&e.q&&e.dmp1&&e.dmq1&&e.coeff))throw Error("Invalid key data");t.setPrivate(e.n,e.e,e.d,e.p,e.q,e.dmp1,e.dmq1,e.coeff)},publicExport:function(t,e){return{n:t.n.toBuffer(),e:t.e}},publicImport:function(t,e,r){if(!e.n||!e.e)throw Error("Invalid key data");t.setPublic(e.n,e.e)},autoImport:function(e,r){return!(!r.n||!r.e||(r.d&&r.p&&r.q&&r.dmp1&&r.dmq1&&r.coeff?(t.exports.privateImport(e,r),0):(t.exports.publicImport(e,r),0)))}}},7460:(t,e,r)=>{function n(t){t=t.split("-");for(var e="private",r={type:"default"},n=1;n{var n=r(8287).Buffer,i=r(8226)._,o=r(8226),s=r(1973);const a="-----BEGIN OPENSSH PRIVATE KEY-----",f="-----END OPENSSH PRIVATE KEY-----";function u(t){const e=t.buf.readInt32BE(t.off);t.off+=4;const r=t.buf.slice(t.off,t.off+e);return t.off+=e,r}function c(t,e){t.buf.writeInt32BE(e.byteLength,t.off),t.off+=4,t.off+=e.copy(t.buf,t.off)}t.exports={privateExport:function(t,e){const r=t.n.toBuffer();let i=n.alloc(4);for(i.writeUInt32BE(t.e,0);0===i[0];)i=i.slice(1);const s=t.d.toBuffer(),u=t.coeff.toBuffer(),h=t.p.toBuffer(),p=t.q.toBuffer();let l;l=void 0!==t.sshcomment?n.from(t.sshcomment):n.from([]);const y=15+i.byteLength+4+r.byteLength,g=23+r.byteLength+4+i.byteLength+4+s.byteLength+4+u.byteLength+4+h.byteLength+4+p.byteLength+4+l.byteLength;let d=43+y+4+g;d+=8*Math.ceil(g/8)-g;const v=n.alloc(d),m={buf:v,off:0};v.write("openssh-key-v1","utf8"),v.writeUInt8(0,14),m.off+=15,c(m,n.from("none")),c(m,n.from("none")),c(m,n.from("")),m.off=m.buf.writeUInt32BE(1,m.off),m.off=m.buf.writeUInt32BE(y,m.off),c(m,n.from("ssh-rsa")),c(m,i),c(m,r),m.off=m.buf.writeUInt32BE(d-47-y,m.off),m.off+=8,c(m,n.from("ssh-rsa")),c(m,r),c(m,i),c(m,s),c(m,u),c(m,h),c(m,p),c(m,l);let S=1;for(;m.off{var n=r(8287).Buffer,i=r(3100).Ber,o=r(8226)._,s=r(8226);const a="-----BEGIN RSA PRIVATE KEY-----",f="-----END RSA PRIVATE KEY-----",u="-----BEGIN RSA PUBLIC KEY-----",c="-----END RSA PUBLIC KEY-----";t.exports={privateExport:function(t,e){e=e||{};var r=t.n.toBuffer(),n=t.d.toBuffer(),o=t.p.toBuffer(),u=t.q.toBuffer(),c=t.dmp1.toBuffer(),h=t.dmq1.toBuffer(),p=t.coeff.toBuffer(),l=r.length+n.length+o.length+u.length+c.length+h.length+p.length+512,y=new i.Writer({size:l});return y.startSequence(),y.writeInt(0),y.writeBuffer(r,2),y.writeInt(t.e),y.writeBuffer(n,2),y.writeBuffer(o,2),y.writeBuffer(u,2),y.writeBuffer(c,2),y.writeBuffer(h,2),y.writeBuffer(p,2),y.endSequence(),"der"===e.type?y.buffer:a+"\n"+s.linebrk(y.buffer.toString("base64"),64)+"\n"+f},privateImport:function(t,e,r){var u;if("der"!==(r=r||{}).type){if(n.isBuffer(e)&&(e=e.toString("utf8")),!o.isString(e))throw Error("Unsupported key format");var c=s.trimSurroundingText(e,a,f).replace(/\s+|\n\r|\n|\r$/gm,"");u=n.from(c,"base64")}else{if(!n.isBuffer(e))throw Error("Unsupported key format");u=e}var h=new i.Reader(u);h.readSequence(),h.readString(2,!0),t.setPrivate(h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0))},publicExport:function(t,e){e=e||{};var r=t.n.toBuffer(),n=r.length+512,o=new i.Writer({size:n});return o.startSequence(),o.writeBuffer(r,2),o.writeInt(t.e),o.endSequence(),"der"===e.type?o.buffer:u+"\n"+s.linebrk(o.buffer.toString("base64"),64)+"\n"+c},publicImport:function(t,e,r){var a;if("der"!==(r=r||{}).type){if(n.isBuffer(e)&&(e=e.toString("utf8")),o.isString(e)){var f=s.trimSurroundingText(e,u,c).replace(/\s+|\n\r|\n|\r$/gm,"");a=n.from(f,"base64")}}else{if(!n.isBuffer(e))throw Error("Unsupported key format");a=e}var h=new i.Reader(a);h.readSequence(),t.setPublic(h.readString(2,!0),h.readString(2,!0))},autoImport:function(e,r){return/^[\S\s]*-----BEGIN RSA PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PRIVATE KEY-----[\S\s]*$/g.test(r)?(t.exports.privateImport(e,r),!0):!!/^[\S\s]*-----BEGIN RSA PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PUBLIC KEY-----[\S\s]*$/g.test(r)&&(t.exports.publicImport(e,r),!0)}}},8573:(t,e,r)=>{var n=r(8287).Buffer,i=r(3100).Ber,o=r(8226)._,s="1.2.840.113549.1.1.1",a=r(8226);const f="-----BEGIN PRIVATE KEY-----",u="-----END PRIVATE KEY-----",c="-----BEGIN PUBLIC KEY-----",h="-----END PUBLIC KEY-----";t.exports={privateExport:function(t,e){e=e||{};var r=t.n.toBuffer(),n=t.d.toBuffer(),o=t.p.toBuffer(),c=t.q.toBuffer(),h=t.dmp1.toBuffer(),p=t.dmq1.toBuffer(),l=t.coeff.toBuffer(),y=r.length+n.length+o.length+c.length+h.length+p.length+l.length+512,g=new i.Writer({size:y});g.startSequence(),g.writeInt(0),g.writeBuffer(r,2),g.writeInt(t.e),g.writeBuffer(n,2),g.writeBuffer(o,2),g.writeBuffer(c,2),g.writeBuffer(h,2),g.writeBuffer(p,2),g.writeBuffer(l,2),g.endSequence();var d=new i.Writer({size:y});return d.startSequence(),d.writeInt(0),d.startSequence(),d.writeOID(s),d.writeNull(),d.endSequence(),d.writeBuffer(g.buffer,4),d.endSequence(),"der"===e.type?d.buffer:f+"\n"+a.linebrk(d.buffer.toString("base64"),64)+"\n"+u},privateImport:function(t,e,r){var c;if("der"!==(r=r||{}).type){if(n.isBuffer(e)&&(e=e.toString("utf8")),!o.isString(e))throw Error("Unsupported key format");var h=a.trimSurroundingText(e,f,u).replace("-----END PRIVATE KEY-----","").replace(/\s+|\n\r|\n|\r$/gm,"");c=n.from(h,"base64")}else{if(!n.isBuffer(e))throw Error("Unsupported key format");c=e}var p=new i.Reader(c);if(p.readSequence(),p.readInt(0),new i.Reader(p.readString(48,!0)).readOID(6,!0)!==s)throw Error("Invalid Public key format");var l=new i.Reader(p.readString(4,!0));l.readSequence(),l.readString(2,!0),t.setPrivate(l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0))},publicExport:function(t,e){e=e||{};var r=t.n.toBuffer(),n=r.length+512,o=new i.Writer({size:n});o.writeByte(0),o.startSequence(),o.writeBuffer(r,2),o.writeInt(t.e),o.endSequence();var f=new i.Writer({size:n});return f.startSequence(),f.startSequence(),f.writeOID(s),f.writeNull(),f.endSequence(),f.writeBuffer(o.buffer,3),f.endSequence(),"der"===e.type?f.buffer:c+"\n"+a.linebrk(f.buffer.toString("base64"),64)+"\n"+h},publicImport:function(t,e,r){var f;if("der"!==(r=r||{}).type){if(n.isBuffer(e)&&(e=e.toString("utf8")),o.isString(e)){var u=a.trimSurroundingText(e,c,h).replace(/\s+|\n\r|\n|\r$/gm,"");f=n.from(u,"base64")}}else{if(!n.isBuffer(e))throw Error("Unsupported key format");f=e}var p=new i.Reader(f);if(p.readSequence(),new i.Reader(p.readString(48,!0)).readOID(6,!0)!==s)throw Error("Invalid Public key format");var l=new i.Reader(p.readString(3,!0));l.readByte(),l.readSequence(),t.setPublic(l.readString(2,!0),l.readString(2,!0))},autoImport:function(e,r){return/^[\S\s]*-----BEGIN PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END PRIVATE KEY-----[\S\s]*$/g.test(r)?(t.exports.privateImport(e,r),!0):!!/^[\S\s]*-----BEGIN PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END PUBLIC KEY-----[\S\s]*$/g.test(r)&&(t.exports.publicImport(e,r),!0)}}},1973:(t,e,r)=>{var n=r(8287).Buffer,i=r(3200),o=r(8226)._;function s(t,e){null!=t&&("number"==typeof t?this.fromNumber(t,e):n.isBuffer(t)?this.fromBuffer(t):null==e&&"string"!=typeof t?this.fromByteArray(t):this.fromString(t,e))}function a(){return new s(null)}s.prototype.am=function(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var f=16383&this[t],u=this[t++]>>14,c=a*f+u*s;i=((f=s*f+((16383&c)<<14)+r[n]+i)>>28)+(c>>14)+a*u,r[n++]=268435455&f}return i},s.prototype.DB=28,s.prototype.DM=268435455,s.prototype.DV=1<<28,s.prototype.FV=Math.pow(2,52),s.prototype.F1=24,s.prototype.F2=4;var f,u,c=new Array;for(f="0".charCodeAt(0),u=0;u<=9;++u)c[f++]=u;for(f="a".charCodeAt(0),u=10;u<36;++u)c[f++]=u;for(f="A".charCodeAt(0),u=10;u<36;++u)c[f++]=u;function h(t){return"0123456789abcdefghijklmnopqrstuvwxyz".charAt(t)}function p(t,e){var r=c[t.charCodeAt(e)];return null==r?-1:r}function l(t){var e=a();return e.fromInt(t),e}function y(t){var e,r=1;return 0!=(e=t>>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function g(t){this.m=t}function d(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),255&t||(t>>=8,e+=8),15&t||(t>>=4,e+=4),3&t||(t>>=2,e+=2),1&t||++e,e}function E(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function w(){}function O(t){return t}function B(t){this.r2=a(),this.q3=a(),s.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}g.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},g.prototype.revert=function(t){return t},g.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},g.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},g.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},d.prototype.convert=function(t){var e=a();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(s.ZERO)>0&&this.m.subTo(e,e),e},d.prototype.revert=function(t){var e=a();return t.copyTo(e),this.reduce(e),e},d.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},d.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},d.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},w.prototype.convert=O,w.prototype.revert=O,w.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},w.prototype.sqrTo=function(t,e){t.squareTo(e)},B.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=a();return t.copyTo(e),this.reduce(e),e},B.prototype.revert=function(t){return t},B.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},B.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},B.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var A=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/A[A.length-1];s.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},s.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+DV:this.t=0},s.prototype.fromString=function(t,e,r){var n;switch(e){case 2:n=1;break;case 4:n=2;break;case 8:n=3;break;case 16:n=4;break;case 32:n=5;break;case 256:n=8;break;default:return void this.fromRadix(t,e)}this.t=0,this.s=0;for(var i=t.length,o=!1,a=0;--i>=0;){var f=8==n?255&t[i]:p(t,i);f<0?"-"==t.charAt(i)&&(o=!0):(o=!1,0===a?this[this.t++]=f:a+n>this.DB?(this[this.t-1]|=(f&(1<>this.DB-a):this[this.t-1]|=f<=this.DB&&(a-=this.DB))}!r&&8==n&&128&t[0]&&(this.s=-1,a>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},s.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},s.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)<=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},s.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1<>n;for(var s=r+1;s>n;n>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=t.s}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp()},s.prototype.multiplyTo=function(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},s.prototype.divRemTo=function(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t0?(n.lShiftTo(c,o),i.lShiftTo(c,r)):(n.copyTo(o),i.copyTo(r));var h=o.t,p=o[h-1];if(0!==p){var l=p*(1<1?o[h-2]>>this.F2:0),g=this.FV/l,d=(1<=0&&(r[r.t++]=1,r.subTo(_,r)),s.ONE.dlShiftTo(h,_),_.subTo(o,o);o.t=0;){var b=r[--m]==p?this.DM:Math.floor(r[m]*g+(r[m-1]+v)*d);if((r[m]+=o.am(0,b,r,S,0,h))0&&r.rShiftTo(c,r),f<0&&s.ZERO.subTo(r,r)}}},s.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(!(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},s.prototype.isEven=function(){return 0===(this.t>0?1&this[0]:this.s)},s.prototype.exp=function(t,e){if(t>4294967295||t<1)return s.ONE;var r=a(),n=a(),i=e.convert(this),o=y(t)-1;for(i.copyTo(r);--o>=0;)if(e.sqrTo(r,n),(t&1<0)e.mulTo(n,i,r);else{var f=r;r=n,n=f}return e.revert(r)},s.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},s.prototype.toRadix=function(t){if(null==t&&(t=10),0===this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),n=l(r),i=a(),o=a(),s="";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(t).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(t)+s},s.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),n=Math.pow(e,r),i=!1,o=0,a=0,f=0;f=r&&(this.dMultiply(n),this.dAddOffset(a,0),o=0,a=0))}o>0&&(this.dMultiply(Math.pow(e,o)),this.dAddOffset(a,0)),i&&s.ZERO.subTo(this,this)},s.prototype.fromNumber=function(t,e){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t),this.testBit(t-1)||this.bitwiseTo(s.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(s.ONE.shiftLeft(t-1),this);else{var r=i.randomBytes(1+(t>>3)),n=7&t;n>0?r[0]&=(1<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=t.s}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp()},s.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},s.prototype.dAddOffset=function(t,e){if(0!==t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},s.prototype.multiplyLowerTo=function(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i=0;)r[n]=0;for(n=Math.max(e-this.t,0);n0)if(0===e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},s.prototype.millerRabin=function(t){var e=this.subtract(s.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var n=e.shiftRight(r);(t=t+1>>1)>A.length&&(t=A.length);for(var i=a(),o=0;o0)for(a>a)>0&&(i=!0,o=h(r));s>=0;)a>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=h(r));return i?o:"0"},s.prototype.negate=function(){var t=a();return s.ZERO.subTo(this,t),t},s.prototype.abs=function(){return this.s<0?this.negate():this},s.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},s.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+y(this[this.t-1]^this.s&this.DM)},s.prototype.mod=function(t){var e=a();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(s.ZERO)>0&&t.subTo(e,e),e},s.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new g(e):new d(e),this.exp(t,r)},s.prototype.clone=function(){var t=a();return this.copyTo(t),t},s.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0===this.t)return-1}else{if(1==this.t)return this[0];if(0===this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24},s.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},s.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},s.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,n=this.DB-t*this.DB%8,i=0;if(t-- >0)for(n>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s<=0;)n<8?(r=(this[t]&(1<>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),128&r&&(r|=-256),0===i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(e[i++]=r);return e},s.prototype.toBuffer=function(t){var e=n.from(this.toByteArray());if(!0===t&&0===e[0])e=e.slice(1);else if(o.isNumber(t)){if(e.length>t){for(var r=0;r0?this:t},s.prototype.and=function(t){var e=a();return this.bitwiseTo(t,v,e),e},s.prototype.or=function(t){var e=a();return this.bitwiseTo(t,m,e),e},s.prototype.xor=function(t){var e=a();return this.bitwiseTo(t,S,e),e},s.prototype.andNot=function(t){var e=a();return this.bitwiseTo(t,_,e),e},s.prototype.not=function(){for(var t=a(),e=0;e=this.t?0!=this.s:!!(this[e]&1<1){var h=a();for(n.sqrTo(s[1],h);f<=c;)s[f]=a(),n.mulTo(h,s[f-2],s[f]),f+=2}var p,v,m=t.t-1,S=!0,_=a();for(i=y(t[m])-1;m>=0;){for(i>=u?p=t[m]>>i-u&c:(p=(t[m]&(1<0&&(p|=t[m-1]>>this.DB+i-u)),f=r;!(1&p);)p>>=1,--f;if((i-=f)<0&&(i+=this.DB,--m),S)s[p].copyTo(o),S=!1;else{for(;f>1;)n.sqrTo(o,_),n.sqrTo(_,o),f-=2;f>0?n.sqrTo(o,_):(v=o,o=_,_=v),n.mulTo(_,s[p],o)}for(;m>=0&&!(t[m]&1<