From a5c4c8899c8d69c014cfcf3a061d142c90c957eb Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Fri, 1 May 2020 11:47:50 +0800 Subject: [PATCH 01/13] linux-firmware: enable qca4019 (#4488) --- package/firmware/linux-firmware/qca_ath10k.mk | 2 +- package/kernel/mac80211/ath.mk | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package/firmware/linux-firmware/qca_ath10k.mk b/package/firmware/linux-firmware/qca_ath10k.mk index 6019ce26ec..72735819fd 100644 --- a/package/firmware/linux-firmware/qca_ath10k.mk +++ b/package/firmware/linux-firmware/qca_ath10k.mk @@ -19,7 +19,7 @@ define Package/ath10k-firmware-qca4019/install $(PKG_BUILD_DIR)/ath10k/QCA4019/hw1.0/firmware-5.bin \ $(1)/lib/firmware/ath10k/QCA4019/hw1.0/firmware-5.bin endef -# $(eval $(call BuildPackage,ath10k-firmware-qca4019)) +$(eval $(call BuildPackage,ath10k-firmware-qca4019)) Package/ath10k-firmware-qca9887 = $(call Package/firmware-default,ath10k qca9887 firmware) define Package/ath10k-firmware-qca9887/install diff --git a/package/kernel/mac80211/ath.mk b/package/kernel/mac80211/ath.mk index 788131b751..0c25d23bb2 100644 --- a/package/kernel/mac80211/ath.mk +++ b/package/kernel/mac80211/ath.mk @@ -264,6 +264,7 @@ define KernelPackage/ath10k/config config ATH10K_THERMAL bool "Enable thermal sensors and throttling support" + default y depends on PACKAGE_kmod-ath10k endef From 21b36d6f9f29fa9ea8f8a160fc9ec0aabc173308 Mon Sep 17 00:00:00 2001 From: ardanzhu <31897806+ardanzhu@users.noreply.github.com> Date: Fri, 1 May 2020 11:48:08 +0800 Subject: [PATCH 02/13] Update to frp 0.33.0 version (#4486) --- package/lean/frp/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/lean/frp/Makefile b/package/lean/frp/Makefile index 26162847fd..5e16cebf32 100644 --- a/package/lean/frp/Makefile +++ b/package/lean/frp/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=frp -PKG_VERSION:=0.32.1 +PKG_VERSION:=0.33.0 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/fatedier/frp/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=3a6ef59163f5a1d41b67908269e924000a8ccb2984e4bdfc18bd1405b5dbaf22 +PKG_HASH:=9c773ab4bbd208705c795599c5e69302a379734921c90489ed8ae331c24836cb PKG_LICENSE:=Apache-2.0 PKG_LICENSE_FILES:=LICENSE From d0cc3d0230f3ce0edc1120621ccf62c192f89562 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Fri, 1 May 2020 11:53:30 +0800 Subject: [PATCH 03/13] luci-app-qbittorrent: update python3 for search --- package/lean/luci-app-qbittorrent/Makefile | 4 ++-- .../luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package/lean/luci-app-qbittorrent/Makefile b/package/lean/luci-app-qbittorrent/Makefile index 343d888466..cbb12515e2 100644 --- a/package/lean/luci-app-qbittorrent/Makefile +++ b/package/lean/luci-app-qbittorrent/Makefile @@ -6,10 +6,10 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for qBittorrent -LUCI_DEPENDS:=+qBittorrent +python +LUCI_DEPENDS:=+qBittorrent +python3 LUCI_PKGARCH:=all PKG_VERSION=1.0 -PKG_RELEASE:=18 +PKG_RELEASE:=19 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua index 7431394f24..8563e6d268 100644 --- a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua +++ b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua @@ -249,11 +249,11 @@ o.enabled = "true" o.disabled = "false" o.default = o.disabled -o = s:taboption("webgui", Value, "Username", translate("Username"), translate("The login name for WebUI.")) -o.placeholder = "admin" +--o = s:taboption("webgui", Value, "Username", translate("Username"), translate("The login name for WebUI.")) +--o.placeholder = "admin" -o = s:taboption("webgui", Value, "Password", translate("Password"), translate("The login password for WebUI.")) -o.password = true +--o = s:taboption("webgui", Value, "Password", translate("Password"), translate("The login password for WebUI.")) +--o.password = true o = s:taboption("webgui", Value, "Locale", translate("Locale Language")) o:value("en", translate("English")) From 01aeb5df0ed4c2119c9cbdb072872089d4739a58 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Fri, 1 May 2020 12:23:28 +0800 Subject: [PATCH 04/13] ramips: Add support for Xiaomi Redmi Router AC2100 (RM2100) --- package/boot/uboot-envtools/Makefile | 15 +- package/boot/uboot-envtools/files/ath79 | 4 + package/boot/uboot-envtools/files/mvebu | 3 + package/boot/uboot-envtools/files/mxs | 3 + package/boot/uboot-envtools/files/ramips | 2 +- .../dts/mt7621_xiaomi_redmi-router-ac2100.dts | 158 ++++++++++++++++++ target/linux/ramips/image/mt7621.mk | 17 ++ .../mt7621/base-files/etc/board.d/01_leds | 3 + .../mt7621/base-files/etc/board.d/02_network | 2 + .../mt7621/base-files/lib/upgrade/platform.sh | 3 +- 10 files changed, 201 insertions(+), 9 deletions(-) create mode 100644 target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile index 1c6b789716..b032e07c37 100644 --- a/package/boot/uboot-envtools/Makefile +++ b/package/boot/uboot-envtools/Makefile @@ -9,16 +9,17 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uboot-envtools PKG_DISTNAME:=u-boot -PKG_VERSION:=2019.07 -PKG_RELEASE:=2 +PKG_VERSION:=2020.04 +PKG_RELEASE:=1 -PKG_SOURCE_PROTO:=git -PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:= \ + https://ftp.denx.de/pub/u-boot \ + https://mirror.cyberbits.eu/u-boot \ + ftp://ftp.denx.de/pub/u-boot +PKG_HASH:=fe732aaf037d9cc3c0909bad8362af366ae964bbdac6913a34081ff4ad565372 PKG_SOURCE_SUBDIR:=$(PKG_DISTNAME)-$(PKG_VERSION) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_DISTNAME)-$(PKG_VERSION) -PKG_SOURCE_URL:=https://git.denx.de/u-boot.git -PKG_SOURCE_VERSION:=e5aee22e4be75e75a854ab64503fc80598bc2004 -PKG_MIRROR_HASH:=58c1ecaf901b6bf65c5e872b5449b642694ae5acebf61f91f0d4bc20b4c654b7 PKG_BUILD_DEPENDS:=fstools diff --git a/package/boot/uboot-envtools/files/ath79 b/package/boot/uboot-envtools/files/ath79 index 15bd9ffb6e..aebfeca85d 100644 --- a/package/boot/uboot-envtools/files/ath79 +++ b/package/boot/uboot-envtools/files/ath79 @@ -15,6 +15,7 @@ board=$(board_name) case "$board" in alfa-network,ap121f|\ buffalo,bhr-4grv2|\ +devolo,magic-2-wifi|\ engenius,ecb1750|\ etactica,eg200|\ glinet,gl-ar300m-lite|\ @@ -44,6 +45,9 @@ yuncore,xd4200) buffalo,wzr-hp-ag300h) ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" "0x10000" ;; +domywifi,dw33d) + ubootenv_add_uci_config "/dev/mtd4" "0x0" "0x10000" "0x10000" + ;; glinet,gl-ar150) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x10000" ;; diff --git a/package/boot/uboot-envtools/files/mvebu b/package/boot/uboot-envtools/files/mvebu index 7902384a37..10f31b05a1 100644 --- a/package/boot/uboot-envtools/files/mvebu +++ b/package/boot/uboot-envtools/files/mvebu @@ -17,6 +17,9 @@ case "$board" in cznic,turris-omnia) ubootenv_add_uci_config "/dev/mtd0" "0xC0000" "0x10000" "0x40000" ;; +glinet,gl-mv1000) + ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x8000" "1" + ;; globalscale,espressobin|\ globalscale,espressobin-emmc|\ globalscale,espressobin-v7|\ diff --git a/package/boot/uboot-envtools/files/mxs b/package/boot/uboot-envtools/files/mxs index ecfb5de162..e087d60783 100644 --- a/package/boot/uboot-envtools/files/mxs +++ b/package/boot/uboot-envtools/files/mxs @@ -17,6 +17,9 @@ i2se,duckbill) ubootenv_add_uci_config "/dev/mmcblk0" "0x20000" "0x20000" ubootenv_add_uci_config "/dev/mmcblk0" "0x40000" "0x20000" ;; +olimex,imx23-olinuxino) + ubootenv_add_uci_config "/dev/mmcblk0" "0x40000" "0x4000" + ;; esac config_load ubootenv diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index 2078aff0b4..5c4730670d 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -35,7 +35,7 @@ zbtlink,zbt-wg2626) ;; xiaomi,mir3p|\ xiaomi,mir3g|\ -xiaomi,miwifi-r3) +xiaomi,redmi-router-ac2100) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x20000" ;; esac diff --git a/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts b/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts new file mode 100644 index 0000000000..d5669b5841 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts @@ -0,0 +1,158 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "mt7621.dtsi" + +#include +#include + +/ { + compatible = "xiaomi,redmi-router-ac2100", "mediatek,mt7621-soc"; + model = "Xiaomi Redmi Router AC2100"; + + aliases { + led-boot = &led_status_amber; + led-failsafe = &led_status_amber; + led-running = &led_status_white; + led-upgrade = &led_status_white; + label-mac-device = &gmac0; + }; + + chosen { + bootargs = "console=ttyS0,115200n8"; + }; + + leds { + compatible = "gpio-leds"; + + led_status_amber: status_amber { + label = "rm2100:amber:status"; + gpios = <&gpio 6 GPIO_ACTIVE_LOW>; + }; + + led_status_white: status_white { + label = "rm2100:white:status"; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + }; + + wan_amber { + label = "rm2100:amber:wan"; + gpios = <&gpio 10 GPIO_ACTIVE_LOW>; + }; + + wan_white { + label = "rm2100:white:wan"; + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + +}; + + +&nand { + status = "okay"; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "Bootloader"; + reg = <0x0 0x80000>; + read-only; + }; + + partition@80000 { + label = "Config"; + reg = <0x80000 0x40000>; + }; + + partition@c0000 { + label = "Bdata"; + reg = <0xc0000 0x40000>; + read-only; + }; + + factory: partition@100000 { + label = "factory"; + reg = <0x100000 0x40000>; + read-only; + }; + + partition@140000 { + label = "crash"; + reg = <0x140000 0x40000>; + }; + + partition@180000 { + label = "crash_syslog"; + reg = <0x180000 0x40000>; + }; + + partition@1c0000 { + label = "reserved0"; + reg = <0x1c0000 0x40000>; + read-only; + }; + + /* We keep stock xiaomi firmware (kernel0) here */ + partition@200000 { + label = "kernel_stock"; + reg = <0x200000 0x400000>; + }; + + partition@600000 { + label = "kernel"; + reg = <0x600000 0x400000>; + }; + + partition@a00000 { + label = "ubi"; + reg = <0xa00000 0x7580000>; + }; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x8000>; + ieee80211-freq-limit = <5000000 6000000>; + }; +}; + +&pcie1 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x0000>; + ieee80211-freq-limit = <2400000 2500000>; + }; +}; + +ðernet { + mtd-mac-address = <&factory 0xe000>; +}; + +&state_default { + gpio { + groups = "uart2", "uart3", "wdt"; + function = "gpio"; + }; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 47945bd07d..72e0c58986 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -892,6 +892,23 @@ define Device/xiaomi_mir3p endef TARGET_DEVICES += xiaomi_mir3p +define Device/xiaomi_redmi-router-ac2100 + $(Device/uimage-lzma-loader) + BLOCKSIZE := 128k + PAGESIZE := 2048 + KERNEL_SIZE := 4096k + IMAGE_SIZE := 124416k + UBINIZE_OPTS := -E 5 + IMAGES += kernel1.bin rootfs0.bin + IMAGE/kernel1.bin := append-kernel + IMAGE/rootfs0.bin := append-ubi | check-size + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata + DEVICE_VENDOR := Xiaomi + DEVICE_MODEL := Redmi Router AC2100 + DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e wpad-basic uboot-envtools +endef +TARGET_DEVICES += xiaomi_redmi-router-ac2100 + define Device/xiaoyu_xy-c5 IMAGE_SIZE := 32448k DEVICE_VENDOR := XiaoYu diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds index 7695cb9918..b67dfb0783 100755 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds @@ -81,6 +81,9 @@ xiaomi,mir3p) xzwifi,creativebox-v1) ucidef_set_led_switch "internet" "internet" "$boardname:blue:internet" "switch0" "0x10" ;; +xiaomi,redmi-router-ac2100) + ucidef_set_led_netdev "wan" "wan" "$boardname:white:wan" "wan" + ;; youhua,wr1200js) ucidef_set_led_switch "internet" "INTERNET" "$boardname:green:wan" "switch0" "0x01" ;; diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network index d4d662a964..c49969846f 100755 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network @@ -109,6 +109,8 @@ ramips_setup_interfaces() ucidef_add_switch "switch0" \ "0:lan" "4:lan" "6@eth0" ;; + xiaomi,mir3p|\ + xiaomi,redmi-router-ac2100|\ hiwifi,hc5962) ucidef_add_switch "switch0" \ "1:lan" "2:lan" "3:lan" "4:wan" "6@eth0" diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh index ad10dcbdaa..facc89beed 100755 --- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh @@ -53,7 +53,8 @@ platform_do_upgrade() { netgear,r6850|\ netis,wf2881|\ xiaomi,mir3g|\ - xiaomi,mir3p) + xiaomi,mir3p|\ + xiaomi,redmi-router-ac2100) nand_do_upgrade "$1" ;; iodata,wn-ax1167gr2|\ From 0c3df07d9d1bfc1ae7661beb8822b8589dc45dcc Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Fri, 1 May 2020 13:00:14 +0800 Subject: [PATCH 05/13] luci-app-ssrserver-python: switch to python3 --- package/lean/luci-app-ssrserver-python/Makefile | 2 +- package/lienol/luci-app-ssr-python-pro-server/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/lean/luci-app-ssrserver-python/Makefile b/package/lean/luci-app-ssrserver-python/Makefile index 7d7a317550..0b1012f231 100644 --- a/package/lean/luci-app-ssrserver-python/Makefile +++ b/package/lean/luci-app-ssrserver-python/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI for SSR Server Python -LUCI_DEPENDS:=+python +LUCI_DEPENDS:=+python3 LUCI_PKGARCH:=all PKG_VERSION:=3.2.0 PKG_RELEASE:=6 diff --git a/package/lienol/luci-app-ssr-python-pro-server/Makefile b/package/lienol/luci-app-ssr-python-pro-server/Makefile index 551a1d33cc..78b9b7381f 100644 --- a/package/lienol/luci-app-ssr-python-pro-server/Makefile +++ b/package/lienol/luci-app-ssr-python-pro-server/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for SSR Python Pro Server -LUCI_DEPENDS:=+libsodium +luci-lib-jsonc +python +LUCI_DEPENDS:=+libsodium +luci-lib-jsonc +python3 LUCI_PKGARCH:=all PKG_VERSION:=2 PKG_RELEASE:=1-20200326 From 3c510baf470508f340a11600edd4296813b54687 Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Fri, 1 May 2020 22:37:45 +0800 Subject: [PATCH 06/13] ramips: fix support for Redmi AC2100 (#4500) This commit fix switch and image config for Redmi AC2100. Signed-off-by: AmadeusGhost --- package/boot/uboot-envtools/files/ath79 | 3 --- package/boot/uboot-envtools/files/ramips | 1 + .../ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts | 7 ++----- target/linux/ramips/image/mt7621.mk | 5 ++--- .../ramips/mt7621/base-files/etc/board.d/02_network | 9 ++++++--- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/package/boot/uboot-envtools/files/ath79 b/package/boot/uboot-envtools/files/ath79 index aebfeca85d..63f02975e3 100644 --- a/package/boot/uboot-envtools/files/ath79 +++ b/package/boot/uboot-envtools/files/ath79 @@ -45,9 +45,6 @@ yuncore,xd4200) buffalo,wzr-hp-ag300h) ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" "0x10000" ;; -domywifi,dw33d) - ubootenv_add_uci_config "/dev/mtd4" "0x0" "0x10000" "0x10000" - ;; glinet,gl-ar150) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x10000" ;; diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index 5c4730670d..b81ad91bdf 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -35,6 +35,7 @@ zbtlink,zbt-wg2626) ;; xiaomi,mir3p|\ xiaomi,mir3g|\ +xiaomi,miwifi-r3|\ xiaomi,redmi-router-ac2100) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x20000" ;; diff --git a/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts b/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts index d5669b5841..7b17a9b38e 100644 --- a/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts +++ b/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts @@ -15,7 +15,6 @@ led-failsafe = &led_status_amber; led-running = &led_status_white; led-upgrade = &led_status_white; - label-mac-device = &gmac0; }; chosen { @@ -55,10 +54,8 @@ linux,code = ; }; }; - }; - &nand { status = "okay"; @@ -152,7 +149,7 @@ &state_default { gpio { - groups = "uart2", "uart3", "wdt"; - function = "gpio"; + ralink,group = "uart2", "uart3", "wdt"; + ralink,function = "gpio"; }; }; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 72e0c58986..72a231c640 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -893,7 +893,6 @@ endef TARGET_DEVICES += xiaomi_mir3p define Device/xiaomi_redmi-router-ac2100 - $(Device/uimage-lzma-loader) BLOCKSIZE := 128k PAGESIZE := 2048 KERNEL_SIZE := 4096k @@ -901,11 +900,11 @@ define Device/xiaomi_redmi-router-ac2100 UBINIZE_OPTS := -E 5 IMAGES += kernel1.bin rootfs0.bin IMAGE/kernel1.bin := append-kernel - IMAGE/rootfs0.bin := append-ubi | check-size + IMAGE/rootfs0.bin := append-ubi | check-size $$$$(IMAGE_SIZE) IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata DEVICE_VENDOR := Xiaomi DEVICE_MODEL := Redmi Router AC2100 - DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e wpad-basic uboot-envtools + DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e wpad-openssl uboot-envtools endef TARGET_DEVICES += xiaomi_redmi-router-ac2100 diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network index c49969846f..43d3b1a9a9 100755 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network @@ -109,8 +109,6 @@ ramips_setup_interfaces() ucidef_add_switch "switch0" \ "0:lan" "4:lan" "6@eth0" ;; - xiaomi,mir3p|\ - xiaomi,redmi-router-ac2100|\ hiwifi,hc5962) ucidef_add_switch "switch0" \ "1:lan" "2:lan" "3:lan" "4:wan" "6@eth0" @@ -153,6 +151,10 @@ ramips_setup_interfaces() ucidef_add_switch "switch0" \ "1:lan:3" "2:lan:2" "3:lan:1" "4:wan" "6@eth0" ;; + xiaomi,redmi-router-ac2100) + ucidef_add_switch "switch0" \ + "1:lan:2" "2:lan:3" "3:lan:4" "0:wan" "6@eth0" + ;; *) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ;; @@ -236,7 +238,8 @@ ramips_setup_macs() ;; iodata,wn-ax1167gr2|\ iodata,wn-dx1167r|\ - xiaomi,mir3g-v2) + xiaomi,mir3g-v2|\ + xiaomi,redmi-router-ac2100) wan_mac=$(mtd_get_mac_binary factory 0xe006) label_mac=$wan_mac ;; From 1a44b8d74fc5cb6f8481a82290ab132259ae57c2 Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Sat, 2 May 2020 07:30:25 +0800 Subject: [PATCH 07/13] ramips: fix build error (#4508) --- .../ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts b/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts index 7b17a9b38e..7dcd10ab68 100644 --- a/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts +++ b/target/linux/ramips/dts/mt7621_xiaomi_redmi-router-ac2100.dts @@ -26,22 +26,22 @@ led_status_amber: status_amber { label = "rm2100:amber:status"; - gpios = <&gpio 6 GPIO_ACTIVE_LOW>; + gpios = <&gpio0 6 GPIO_ACTIVE_LOW>; }; led_status_white: status_white { label = "rm2100:white:status"; - gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; }; wan_amber { label = "rm2100:amber:wan"; - gpios = <&gpio 10 GPIO_ACTIVE_LOW>; + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; }; wan_white { label = "rm2100:white:wan"; - gpios = <&gpio 12 GPIO_ACTIVE_LOW>; + gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; }; }; @@ -50,7 +50,7 @@ reset { label = "reset"; - gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; linux,code = ; }; }; From 31ae6bfa1061d6683c1f90e9d594ef917d8c3663 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sat, 2 May 2020 16:38:01 +0800 Subject: [PATCH 08/13] OpenClash: bump to v0.37.6-beta --- package/ctcgfw/luci-app-openclash/Makefile | 2 +- .../files/etc/init.d/openclash | 23 +++--- .../files/etc/openclash/lhie1.yaml | 1 + .../files/etc/openclash/openclash_version | 4 +- .../usr/share/openclash/dashboard/index.html | 2 +- .../js/1.bundle.1560b07adc97ac0ac265.min.js | 2 + ...e.1560b07adc97ac0ac265.min.js.LICENSE.txt} | 0 .../js/1.bundle.ccbf66abd21c384a0bf9.min.js | 2 - .../js/bundle.1560b07adc97ac0ac265.min.js | 1 + .../js/bundle.ccbf66abd21c384a0bf9.min.js | 1 - ...0bf9.css => main.1560b07adc97ac0ac265.css} | 0 .../usr/share/openclash/openclash_debug.sh | 75 ++++++++++++++++++- .../openclash/yacd/8.7c5d9bf7da55a9a368d7.js | 1 + .../openclash/yacd/8.cfac5eece126ce875152.js | 1 - .../yacd/app.081203a887c789b3caf4.js | 2 + ...> app.081203a887c789b3caf4.js.LICENSE.txt} | 0 .../yacd/app.97da0bf63bfa93de767f.js | 2 - ...8f8e8.css => app.dd24893376573afd8b22.css} | 18 ++--- .../yacd/core-js~app.b0709810482830abfa61.js | 1 + .../yacd/core-js~app.e768d5b23b7e7ef5d68d.js | 1 - .../files/usr/share/openclash/yacd/index.html | 43 +---------- .../yacd/proxies.290aebbdd24f562dda4f.js | 1 + .../yacd/proxies.b04c42e07b90325c0dc5.css | 10 +++ .../yacd/proxies.bdb3659841c50b543b0e.js | 1 - .../yacd/proxies.cea47222a686cf441cb9.css | 7 -- ...e.js => react~app.45d91d3dcd725ceea7ca.js} | 4 +- ...t~app.45d91d3dcd725ceea7ca.js.LICENSE.txt} | 0 .../usr/share/openclash/yacd/report.html | 8 +- .../yacd/rules.62726e52be64c2dee90b.js | 1 + .../yacd/rules.efdab873e544c5738c5c.js | 1 - ...a8e.js => runtime.4c1edc8c2d6902d92cc4.js} | 2 +- .../vendors~chartjs.57612a3f835ecbd3f833.js | 2 + ...artjs.57612a3f835ecbd3f833.js.LICENSE.txt} | 0 .../vendors~chartjs.7079553c634b376d7c1c.js | 2 - .../vendors~proxies.0ab0478edefe25bc30a4.js | 1 - .../vendors~proxies.39da2826d7e3275c0f85.js | 1 + 36 files changed, 125 insertions(+), 98 deletions(-) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/{1.bundle.ccbf66abd21c384a0bf9.min.js.LICENSE.txt => 1.bundle.1560b07adc97ac0ac265.min.js.LICENSE.txt} (100%) delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.ccbf66abd21c384a0bf9.min.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/bundle.1560b07adc97ac0ac265.min.js delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/bundle.ccbf66abd21c384a0bf9.min.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/{main.ccbf66abd21c384a0bf9.css => main.1560b07adc97ac0ac265.css} (100%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/8.7c5d9bf7da55a9a368d7.js delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/8.cfac5eece126ce875152.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.081203a887c789b3caf4.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{app.97da0bf63bfa93de767f.js.LICENSE.txt => app.081203a887c789b3caf4.js.LICENSE.txt} (100%) delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.97da0bf63bfa93de767f.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{app.f7858f54039721e8f8e8.css => app.dd24893376573afd8b22.css} (69%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/core-js~app.b0709810482830abfa61.js delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/core-js~app.e768d5b23b7e7ef5d68d.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.290aebbdd24f562dda4f.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.b04c42e07b90325c0dc5.css delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.bdb3659841c50b543b0e.js delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.cea47222a686cf441cb9.css rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{react~app.71e146262a2c1f21d27e.js => react~app.45d91d3dcd725ceea7ca.js} (87%) rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{react~app.71e146262a2c1f21d27e.js.LICENSE.txt => react~app.45d91d3dcd725ceea7ca.js.LICENSE.txt} (100%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/rules.62726e52be64c2dee90b.js delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/rules.efdab873e544c5738c5c.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{runtime.c72e8723983b31413a8e.js => runtime.4c1edc8c2d6902d92cc4.js} (63%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~chartjs.57612a3f835ecbd3f833.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{vendors~chartjs.7079553c634b376d7c1c.js.LICENSE.txt => vendors~chartjs.57612a3f835ecbd3f833.js.LICENSE.txt} (100%) delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~chartjs.7079553c634b376d7c1c.js delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~proxies.0ab0478edefe25bc30a4.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~proxies.39da2826d7e3275c0f85.js diff --git a/package/ctcgfw/luci-app-openclash/Makefile b/package/ctcgfw/luci-app-openclash/Makefile index 8638810486..92d90d724d 100644 --- a/package/ctcgfw/luci-app-openclash/Makefile +++ b/package/ctcgfw/luci-app-openclash/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-openclash -PKG_VERSION:=0.37.5 +PKG_VERSION:=0.37.6 PKG_RELEASE:=beta PKG_MAINTAINER:=vernesong diff --git a/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash b/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash index 15c30b63d9..3c09572f72 100755 --- a/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash +++ b/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash @@ -788,8 +788,8 @@ if [ -z "$en_mode_tun" ]; then #udp if [ "$enable_udp_proxy" -eq 1 ]; then - ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 789 - ip route add local default dev lo table "$PROXY_ROUTE_TABLE" + ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" + ip route add local 0.0.0.0/0 dev lo table "$PROXY_ROUTE_TABLE" iptables -t mangle -N openclash iptables -t mangle -A openclash -m set --match-set lan_ac_black_ips src -j RETURN >/dev/null 2>&1 iptables -t mangle -A openclash -m set ! --match-set lan_ac_white_ips src -j RETURN >/dev/null 2>&1 @@ -807,15 +807,12 @@ if [ -z "$en_mode_tun" ]; then done fi - iptables -t mangle -A openclash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark "$PROXY_FWMARK" + iptables -t mangle -A openclash -p udp -j TPROXY --on-port "$proxy_port" --on-ip 0.0.0.0 --tproxy-mark "$PROXY_FWMARK" iptables -t mangle -A PREROUTING -p udp -j openclash fi if [ "$en_mode" = "fake-ip" ]; then iptables -t nat -A OUTPUT -p tcp -d 198.18.0.0/16 -j REDIRECT --to-ports "$proxy_port" - if [ "$enable_udp_proxy" -eq 1 ]; then - iptables -t mangle -A OUTPUT -p udp -d 198.18.0.0/16 -j MARK --set-mark "$PROXY_FWMARK" - fi fi if [ "$ipv6_enable" -eq 1 ]; then @@ -839,7 +836,7 @@ if [ -z "$en_mode_tun" ]; then fi done fi - ip6tables -t mangle -A openclash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark "$PROXY_FWMARK" + ip6tables -t mangle -A openclash -p udp -j TPROXY --on-port "$proxy_port" --on-ip 0.0.0.0 --tproxy-mark "$PROXY_FWMARK" ip6tables -t mangle -A PREROUTING -p udp -j openclash fi fi @@ -853,6 +850,7 @@ else ipset add localnetwork 224.0.0.0/4 ipset add localnetwork 240.0.0.0/4 ipset add localnetwork 172.16.0.0/12 + if [ ! -z "$wan_ip4" ]; then for wan_ip4s in $wan_ip4; do ipset add localnetwork "$wan_ip4s" 2>/dev/null @@ -872,7 +870,7 @@ else done ip route replace default dev utun table "$PROXY_ROUTE_TABLE" fi - ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 789 + ip rule add fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" #设置防火墙 iptables -t mangle -N openclash iptables -t mangle -F openclash @@ -898,8 +896,8 @@ revert_firewall() #ipv4 - ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 789 >/dev/null 2>&1 - ip route del local default dev lo table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1 + ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1 + ip route del local 0.0.0.0/0 dev lo table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1 iptables -t nat -D PREROUTING -p tcp --dport 53 -j ACCEPT >/dev/null 2>&1 @@ -938,7 +936,7 @@ revert_firewall() #TUN ip route del default dev clash0 table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1 ip route del default dev utun table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1 - ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" pref 789 >/dev/null 2>&1 + ip rule del fwmark "$PROXY_FWMARK" table "$PROXY_ROUTE_TABLE" >/dev/null 2>&1 ip link set dev clash0 down >/dev/null 2>&1 ip tuntap del clash0 mode tun >/dev/null 2>&1 @@ -1035,6 +1033,7 @@ if [ "$enable" -eq 1 ] && [ -f "$CONFIG_FILE" ]; then echo "" >$START_LOG else echo "第五步: 启动主程序..." >$START_LOG + ulimit -SHn 65535 2>/dev/null config_reload=$(uci get openclash.config.config_reload 2>/dev/null) if [ -n "$(pidof clash)" ] && [ "$en_mode_tun" != "1" ] && [ "$config_reload" != "0" ]; then curl -s --connect-timeout 5 -m 5 -H 'Content-Type: application/json' -H "Authorization: Bearer ${da_password}" -XPUT http://"$lan_ip":"$cn_port"/configs -d "{\"path\": \"$CONFIG_FILE\"}" 2>/dev/null @@ -1207,10 +1206,8 @@ restart() reload() { revert_firewall 2>/dev/null - config_choose 2>/dev/null do_run_mode 2>/dev/null get_config 2>/dev/null set_firewall 2>/dev/null - /usr/share/openclash/openclash_history_set.sh echo "${LOGTIME} OpenClash Reload After Firewall Restart" >> $LOG_FILE } diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml b/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml index bb5485e7b9..ee3a9a1e7c 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml @@ -9175,6 +9175,7 @@ Rule: - IP-CIDR,23.228.131.235/32,Netflix - IP-CIDR,23.228.131.237/32,Netflix - IP-CIDR,23.228.131.239/32,Netflix +- IP-CIDR,23.246.0.0/18,Netflix - IP-CIDR,24.101.22.50/32,Netflix - IP-CIDR,24.101.22.54/32,Netflix - IP-CIDR,24.101.91.13/32,Netflix diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version b/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version index 380584ec3f..5463807d17 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version @@ -1,2 +1,2 @@ -v0.37.5-beta -data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAAqCAMAAAB2kksrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlDRTA1RjM2ODdCNzExRUFBQ0U1RUY2OTlENDM1M0M4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlDRTA1RjM3ODdCNzExRUFBQ0U1RUY2OTlENDM1M0M4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OUNFMDVGMzQ4N0I3MTFFQUFDRTVFRjY5OUQ0MzUzQzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OUNFMDVGMzU4N0I3MTFFQUFDRTVFRjY5OUQ0MzUzQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Qn06HAAADAFBMVEUKa6HR0dEFVYIHVoRtbW09PT1TiqqEvN2EhIQahMG6urokhLuiwNJXpdJjlLEJeLg5lcmCgoKenp7a2tqlpaXR4ux4eHgGcKzf39/n5+c/Pz+izOXGxsahoaHOzs5paWnR5vIJca0GbqkkapJlnr2Su9KRkZFxcXG/v79GRkasrKw0dJm1tbUEXI4FYJUJdbQHXIzKysp2ttoXgb5iYmJFmspFgKKy1upkq9NmrdZLS0tDQ0Pg4OCTxeGLi4sGdLIEU4B2dnbAwMCcnJwEXpEEWYnCwsJBQUGx0OIJZJkrjsZGirHB1OCStchCQkImcJq2trZKn8+jxdmEss2Xl5cnicEFcrBlZWWNjY3w9fcKYZMIX5FzsdRyn7hHnM1zobuxzdwFaaJFkbyDrcUYYo02ksYWaJfB2eevr68JWIVgYGAHZ52iyd8ZdaqUlJQGZJoHbKWEtNBJns50dHSyytgFYpejzuaJweIwk8sndKE1h7VGg6YRgsMCc7QBcrNRUVFUVFRVVVVSUlILfL0FdrdWVlYHeLkKe7wDdLUDdLQEdbYEdrYOf8AOgMADdbUSg8MSg8RXV1cShMQAcrIThMUGd7gOf78Nfr8Nfr4Mfb4Mfb0IebkJeroJe7sJers6OjqqqqrU1NTV1dWrq6tISEipqak7OzuAgIB+fn7C3u7w9/tJSUmBgYHq6urz8/P19fVMTEz09PSHv9+ErMLh7/d/f3+DvNyFvt7v9PfB1eCCqcDA1N8FZ5+Gvt/g6u/B3e2hv9CJiYng6vDB3e5Gm8vo6OjC3+/g7vaGv9/B3u4UXol0s9gFZZvW1taDq8JHm8zD3+8Fa6YLb6iEvd0FZ6AIaJ8LermDu9xInc2DqsHv9vqDr8gGWIcLdK8GdbRVos8IcKwLeLdEmcoXe7Nnqs81jsLR4OiAudkzeqPB1+PP5PFGhqpkmLUmbJQvkstTU1MPgMEQgcJZWVlaWlpfX19bW1tcXFxNTU1eXl5PT09QUFBYWFhdXV1OTk7///////+KC4QFAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAADAJJREFUeNrsVwtUVGUeH4HBwQfiQIOMioiJXsRXgo8ZBHJVfGRa+TiGZraWmmX57LW7Ijiyj9pddtfaQhweg8EgLyUDNJ/5JkvNnlq229Y+cqd13UCMH/2/7z7m3gGMs3U8Z+b4O8f7/Z+//72/7+PeUdfSUrGs31VfwJ+8AE8/5Wxp0bUkrrnqG/iDV+DpqBZdxaBGH8HvvQNPO3XLfEXyxt95CZ7SDfrWV/AzL8G/dd/e0vxmw4c0/4+3QPeNz+CW5jcfX3sLdP/zGdzS/ObjBW+B7r8+g+e9BW1qboiNjY0J+PFVmWcwzFOcAIOhIz0mg6mD7C+2h69D7th5R0iraFD3nTt33iM60+5xQ1XzwridMqZpmo/j+Iv/N3RXPBE/qwIcibPjr/xAGGINGr8CsxV7AkZ2hOItvNXBYS+1g6B3+OO8E/S8OjpNjKK6O/OOww111TtKdLWGkzRvb9xLq4+vfumGaKW5qQwILTQaI2mO4YdqHotYtWsbjERla4GYH1fzP7eDo7jt9um334ajmuhq4Itdu7rNJzXJ+7xWwheAtrd2l4g5mu438EZ7426Y49Bd1yI+EeUBegaLsbzn9R8I0lzjDwICJHM2yjM6QiHohQ4Oe7ltjMOhJcuXL18yH+PU4dXdLi9n4UNYT55uuYRdOKSuOopdUuKihpR0fbk93CjHoWulUnm83lpqsQh6va1fR7U19dRsT8+eAW1r7ohAX8kswKxmqdjUNmO8h+YB2iHxcoWMV9rGGCxKO3vxbNoujFGHLy5fnqbTrSCRj5J39n4Rj8zHV+qqo1ilE/GZhvR1vP7KK9NWh6hCq2WP55SgpkaEp+YVMJo3cMtmYUYBdnBvBwqk6+xEoPB6IQrjC+k1xLKF7ANQUcjrgHjuFsRzR4TCvsGIMklAOvHZJNwEli9Luq4hv963jIcZZSFE4iQemhAvVQbwxlnqW8+U0B3VklWN7pmZTvzrPbLfew7OTBUuTv2MLe8NxGOq6HocGqGuKsHrmW2B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 \ No newline at end of file +v0.37.6-beta +data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAAqCAMAAAB2kksrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRBM0M0OUEzOEFGMDExRUE4NTQ5ODMzNEM2QkRFQjZDIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRBM0M0OUE0OEFGMDExRUE4NTQ5ODMzNEM2QkRFQjZDIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REEzQzQ5QTE4QUYwMTFFQTg1NDk4MzM0QzZCREVCNkMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REEzQzQ5QTI4QUYwMTFFQTg1NDk4MzM0QzZCREVCNkMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5tUHQcAAADAFBMVEU5lcqFhYVjlbHR4uxXpdIHZ526urqizOUig7oGVYIHVoQHX5GTvdVFmsoJeLiCgoKStcmGv9+enp4GcKza2tqlpaVTiqp4eHgHW4zf39/n5+c/Pz/GxsahoaHOzs5paWkkapJlnr3R5vIJca0EYJUEXI6RkZF3t9txcXG/v79FRUWDs86srKy1tbUGbamy1urKyspiYmJkq9JFgKIJdbQ0dJoJZJkEU4BlrNVLS0tDQ0Pg4OCTxeGLi4sEWIh2dnYHdLIXgL3AwMCcnJyiwNEKa6HDw8NBQUGx0OIrjsZGirEFZZtCQkImcZwJYZRsbGy2trZKn8+jxdiXl5dFkb0micIFcrDB1ODS0tLQ0NBHnM1lZWWNjY02kcZzobuxzdwJWIUFaaKDrcU0fKUYYo3w9fdzsdQWaJevr69hYWGiyN5vb28ZdapJns4IbKVyn7iUlJQlhLrB2ecFYph0dHSjzuayytgdh8OJweIwk8tDfqAahMFFiK01h7VnrtYRgsMCc7QBcrNRUVFUVFRVVVVSUlILfL0FdrdWVlYHeLkKe7wEdrYDdLUOf8ADdLQOgMAEdbYDdbUSg8NXV1cSg8QShMQThMUAcrIGd7gOf78Nfr8Nfr4Mfb4Mfb0IebkJeroJe7sJers6OjqqqqrU1NTV1dWrq6tISEg9PT2pqak7OzuAgIB+fn48PDzw9/tJSUmBgYHq6urC3u7z8/NMTEz19fWEvN3h7/f09PSEvd1/f3+DvNyhv9DB3e2ErMLv9PeCqcCFvt7B1eHg6vDg6u/B3u6JiYnA1N/B3e7o6OgIaJ8UXong7vaDq8LD3+9Hm8zW1taDqsELerkFZ5+Fvd4Fa6aEtNBInc1Vos8LdK/C3+8Lb6h0tNiAudmSuc8IWYjR4Ojg7/cKeLeDr8jv9vpInc4IcKwGdbQZg8AvkstkmLXP5PEFdLMIV4QnhrxTU1MPgMEQgcJZWVlaWlpfX19bW1tcXFxNTU1eXl5PT09QUFBYWFhdXV1OTk7///////+bop14AAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAADDFJREFUeNrsWA1UFNcVHoh/QAiwgKusIkEgugIK/mwWxKBVUYliYrQ2VqOJJhqD2iCaxNa2IriQtklLf0yaGORvwcAiAoIRweC/xhhjNBpNNH82tTbbWhsQw0fvezM7O7OA4TQ5nrN7/M5x3r333fvdN997OzMotLfXLB103RXwZyfA889Z2tuF9vjV110Df3IKPB/aLtQMaXER/NE58LxFWOoqkrf8wUnwnDDkW1fBL50Efxe+vaP57YYLaf5vZ4Hwjcvgjua3H/9yFgj/dRnc0fz24yVngfAfl8FvnQWdau4TGRn50+U/vCrzfHzmyc5yH5/u1Gh9tN1kf6UrvCTc53ef0CG8toefn99Doj31ITsc86au9/O7b6065ge/V/5vCNccETOzBhzxs2KufU/4RPqo/BrMku0JGNEdivfwXjebvdoF1r7Lb+fdtaroVDGK2h7M84Md6mpBzEtVR0nzrtq9muqX+uot0UFzbSUQUKzRBFMjn++reSQila5pKOLlrQUifljN/9oFPsJd90679y58pIqmApcaGiYuITnJi22ScAlQpa0HlkxsaLiUquZ8G2931e6WcxzCTTVi4lG1XMdg1FT53PyeIM1V/hAgRTJnoSqzOxR6nb6bzV7rHOuxb/HChQsXL8F6ZTh1YshCFt6HdPImLZTQgH2qLKCBx8+pSUnX17rCreY4hA4qVcXo4iqMRr1OZxrUXW21Pqrt8fFJ6VxzcxAGSmYRZrZJydrOGWMcNE9RN4mxZdjweucYjgVe58+d92rAcGX43MKFXpMmjbnYgI/IOz9DxFNLcEWZVUuSXxwzaZLXOTUp6fr661NTBUUo1ebxOTmoyhHhqHkNNLoN3DIZmVGE7dzbjiLpOiseKL5ZjOKYYnoMsdli9gKoKeZ5QAx3i2K4I0Jm36BBpSQgsNxEwk1g85UJN1XkNwdW8jCjLIZInMBDE2KkzBReOFO59CwJPVArWbXokZVlwc/fJ/v9kbBkKXBuzGdseP8TPK2IpmNf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 \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/index.html b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/index.html index 343e651233..6a3bc340f4 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/index.html +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/index.html @@ -1 +1 @@ -Clash
\ No newline at end of file +Clash
\ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js new file mode 100644 index 0000000000..2b77de28eb --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.1560b07adc97ac0ac265.min.js @@ -0,0 +1,2 @@ +/*! For license information please see 1.bundle.1560b07adc97ac0ac265.min.js.LICENSE.txt */ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[function(e,t,n){"use strict";e.exports=n(50)},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},,,,function(e,t,n){e.exports=n(54)()},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(51)},function(e,t,n){var r=n(39)(Object,"create");e.exports=r},function(e,t,n){var r=n(109);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(115);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},,function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(38),o=n(88);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(22).Symbol;e.exports=r},function(e,t,n){var r=n(85),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t,n){e.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",o="day",i="week",a="month",u="quarter",l="year",s=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,c=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,f=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},d={s:f,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),o=n%60;return(t<=0?"+":"-")+f(r,2,"0")+":"+f(o,2,"0")},m:function(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,a),o=t-r<0,i=e.clone().add(n+(o?-1:1),a);return Number(-(n+(t-r)/(o?r-i:i-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(s){return{M:a,y:l,w:i,d:o,D:"date",h:r,m:n,s:t,ms:e,Q:u}[s]||String(s||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},p={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},h="en",m={};m[h]=p;var v=function(e){return e instanceof w},g=function(e,t,n){var r;if(!e)return h;if("string"==typeof e)m[e]&&(r=e),t&&(m[e]=t,r=e);else{var o=e.name;m[o]=e,r=o}return!n&&r&&(h=r),r||!n&&h},y=function(e,t,n){if(v(e))return e.clone();var r=t?"string"==typeof t?{format:t,pl:n}:t:{};return r.date=e,new w(r)},b=d;b.l=g,b.i=v,b.w=function(e,t){return y(e,{locale:t.$L,utc:t.$u,$offset:t.$offset})};var w=function(){function f(e){this.$L=this.$L||g(e.locale,null,!0),this.parse(e)}var d=f.prototype;return d.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(s);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(t)}(e),this.init()},d.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},d.$utils=function(){return b},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(e,t){var n=y(e);return this.startOf(t)<=n&&n<=this.endOf(t)},d.isAfter=function(e,t){return y(e)=0;d--){var p=o[d];"."===p?c(o,d):".."===p?(c(o,d),f++):f&&(c(o,d),f--)}if(!u)for(;f--;f)o.unshift("..");!u||""===o[0]||o[0]&&s(o[0])||o.unshift("");var h=o.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function d(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var p=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=d(t),o=d(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var h=function(e,t){if(!e)throw new Error("Invariant failed")};function m(e){return"/"===e.charAt(0)?e:"/"+e}function v(e){return"/"===e.charAt(0)?e.substr(1):e}function g(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function y(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function b(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function w(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(l.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=f(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function x(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,r):n.push(r),f({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=w(e,t,d(),g.location);c.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(g.entries[g.index]=r,f({action:"REPLACE",location:r}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=g.index+e;return t>=0&&t=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(i)})),e.exports=l}).call(this,n(65))},function(e,t,n){"use strict";var r=n(5),o=n(67),i=n(30),a=n(69),u=n(72),l=n(73),s=n(34);e.exports=function(e){return new Promise((function(t,c){var f=e.data,d=e.headers;r.isFormData(f)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password||"";d.Authorization="Basic "+btoa(h+":"+m)}var v=a(e.baseURL,e.url);if(p.open(e.method.toUpperCase(),i(v,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in p?u(p.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:e,request:p};o(t,c,r),p=null}},p.onabort=function(){p&&(c(s("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){c(s("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),c(s(t,e,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var g=n(74),y=(e.withCredentials||l(v))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;y&&(d[e.xsrfHeaderName]=y)}if("setRequestHeader"in p&&r.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:p.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),e.responseType)try{p.responseType=e.responseType}catch(b){if("json"!==e.responseType)throw b}"function"==typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){p&&(p.abort(),c(e),p=null)})),void 0===f&&(f=null),p.send(f)}))}},function(e,t,n){"use strict";var r=n(68);e.exports=function(e,t,n,o,i){var a=new Error(e);return r(a,t,n,o,i)}},function(e,t,n){"use strict";var r=n(5);e.exports=function(e,t){t=t||{};var n={},o=["url","method","params","data"],i=["headers","auth","proxy"],a=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(o,(function(e){void 0!==t[e]&&(n[e]=t[e])})),r.forEach(i,(function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):void 0!==t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):void 0!==e[o]&&(n[o]=e[o])})),r.forEach(a,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])}));var u=o.concat(i).concat(a),l=Object.keys(t).filter((function(e){return-1===u.indexOf(e)}));return r.forEach(l,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])})),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,o="~";function i(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function u(e,t,n,r,i){if("function"!=typeof n)throw new TypeError("The listener must be a function");var u=new a(n,r||e,i),l=o?o+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],u]:e._events[l].push(u):(e._events[l]=u,e._eventsCount++),e}function l(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function s(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(o=!1)),s.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)r.call(e,t)&&n.push(o?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},s.prototype.listeners=function(e){var t=o?o+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,i=n.length,a=new Array(i);rO.length&&O.push(e)}function z(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var l=!1;if(null===t)l=!0;else switch(u){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return r(o,t,""===n?"."+A(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s