local addonName, ZLAUTO = ...

--多个相同物品，通过获取先后顺序从1开始做标记，所以整个框架标识通过itemlink+标记区分
--LOOT_OPENED事件监控掉落物品清单，全部循环查找auctionFrames里是否存在掉落物品的itemlink，如果存在，循环结束后判断存在几个，记录itemlink物品的标记，然后添加新的待拍卖框架里，
--[=[
    ItemAuctionFrame.state = "waiting" --waiting,auctioning,success,failed，会变
    ItemAuctionFrame.lgnore = false --是否忽略，玩家自己控制
    ItemAuctionFrame.itemlink = itemlink  --不会变
    ItemAuctionFrame.itemindex = 1 --标记，用于区分多个相同物品，不会变
    ItemAuctionFrame.startbidamount = 500 --起拍价
    ItemAuctionFrame.curbidamount = 600 --当前出价
    ItemAuctionFrame.bidIncrement = 100 --每次最低加价，不会变
    ItemAuctionFrame.curbidder = nil --当前出价者，会变

    需监听的话：
    --ML发送的：
    开始拍卖："开始拍卖[%d]%s，请在团队聊天中出价，起步价：%dg，每次最低加价：%dg"
    取消拍卖：
    暂停拍卖："[%d]%s已暂停拍卖！"
    继续拍卖：
    撤销最高价：
    拍卖结束：
    全部开始：--没必要，已取消
    全部停止：--没必要，已取消
    全部暂停：
    全部继续：
    --全员(包刮ML)发送的
    出价

记录：[[Interface\Buttons\UI-GuildButton-PublicNote-Up.blp]]  130781
规则通知："Interface\\Buttons\\UI-GuildButton-MOTD-Up.blp" 
规则通知2：[[Interface\FriendsFrame\UI-FriendsList-Large-Up.blp]]
通知：[[Interface\COMMON\VOICECHAT-SPEAKER.BLP]]  130979 音量图标
同步：[[Interface\AddOns\AutoAuction\Images\sync.png]]
聊天："Interface\\CHATFRAME\\UI-ChatIcon-Chat-Up.blp"
开始：[[Interface\BUTTONS\UI-SpellbookIcon-NextPage-Up.blp]]  130866
暂停：[[Interface\TIMEMANAGER\PauseButton.blp]]  137047
停止：[[Interface\TIMEMANAGER\ResetButton.blp]]  137048
流拍：[[Interface\COMMON\icon-noloot.blp]]  576625
出价：[[Interface\CURSOR\Buy.blp]]
警告：[[Interface\DialogFrame\UI-Dialog-Icon-AlertNew.blp]]
倒数：[[Interface\AddOns\AutoAuction\Images\5countdown_normal.png]]
撤销：[[Interface\GLUES\CHARACTERCREATE\UI-RotationRight-Big-Up.blp]]
问号：[[Interface\GossipFrame\ActiveQuestIcon.blp]]
邮寄：[[Interface\MINIMAP\TRACKING\Mailbox.blp]]
忽略：[[Interface\PaperDollInfoFrame\UI-GearManager-LeaveItem-Transparent.blp]]
打包：[[Interface\TUTORIALFRAME\UI-TutorialFrame-Bag.blp]]  346111
快速拍卖：[[Interface\FriendsFrame\UI-Toast-FriendRequestIcon.blp]]  384756
删除拍卖：[[Interface\raidframe\ReadyCheck-NotReady]]  136813
√：[interface/raidframe/readycheck-ready]]  136814
？：[[interface/raidframe/ReadyCheck-Waiting]]  136815
√：[[Interface\Buttons\UI-CheckBox-Check]]  --130751
筛子：[[Interface\BUTTONS\UI-GroupLoot-Dice-Up.blp]] 130772
忽略：[[Interface\BUTTONS\UI-GroupLoot-Pass-Up]] 130775
五角星：[[Interface\COMMON\FavoritesIcon.blp]] 922035
团长：[[Interface\GROUPFRAME\UI-Group-LeaderIcon.blp]] 132062

关注五角星："|A:auctionhouse-icon-favorite:13:13:2:2|a "
取消关注："|A:auctionhouse-icon-favorite-off:13:13:2:2|a "
倒计时沙漏："|A:ClassTrial-Timer:13:13:2:0|a "
"|A:auctionhouse-icon-coin-gold:13:13|a"
]=]
local GetAddOnMetadata = C_AddOns and C_AddOns.GetAddOnMetadata or GetAddOnMetadata
local ZL = ZLAUTO.mainFrame
local PlayerIsML = ZL.PlayerIsML
ZL.addonVersion = GetAddOnMetadata(addonName, "Version")
ZL.WAVersion = GetAddOnMetadata(addonName, "X-WA_Version")

ZL.options = {
	type = "group",
	args = {
		show = {
			type = "toggle",
			name = "显示",
			desc = "显示插件界面，不勾选将全部隐藏\n\n|cffff0000注意：不勾选将无法使用插件的拍卖和竞拍功能！|r",
			get = function() return not ZL.opt.hide end,
			set = function(info, value)
				ZL.opt.hide = not value
				if value then
                    ZL:Show()
                else
                    ZL:Hide()
                end
			end,
			order = 0.5,
			width = "half",
		},
		DeveloperMode = {
			type = "toggle",
			name = "开发者模式",
			desc = "1个人的情况下，勾选后可以测试部分功能\n\n团队或小队模式不生效\n开发者模式下一些发言无法生效\n|cffff0000注意：条件允许的话，尽量在团队，ML模式测试，1个人开发者模式下可能存在一些未知BUG|r",
			get = function()
				ZL.AuctionFrame2:Update(true)
				return ZL.opt.developerMode
			end,
			set = function(info, value)
				ZL.opt.developerMode = value
			end,
			order = 1,
			width = "twoThirds",
		},
		behaviour = {
			type = "group",
			name = "行为选项",
			desc = "ML权限",
			args = {
				startBid = {
					type = "range",
					name = "起拍价(默认)",
					min = 0,
					max = 100000,
					softMax = 100000,
					softMin = 0,
					step = 1,
					get = function() return ZL.opt.startBid end,
					set = function(info, value) ZL.opt.startBid = value end,
					order = 1,
                    width = "double",
				},
				minIncrement = {
					type = "range",
					name = "加价幅度(默认)",
					min = 0,
					max = 10000,
					softMax = 10000,
					softMin = 0,
					step = 1,
					get = function() return ZL.opt.increment end,
					set = function(info, value) ZL.opt.increment = value end,
					order = 2,
                    width = "double",
				},
				intervalBidIncrement = {
					dialogInline = true,
					name = "区间加价幅度",
					order = 2.1,
					type = "group",
					args = {
						intervalBidIncrement = {
							type = "toggle",
							name = "按区间自动调整加价幅度",
							desc = "勾选后:按照初始加价幅度和区间加价幅度较大的进行\n比如：\n初始500，区间100，按500加价幅度\n初始100，区间500，按500加价幅度",
							width = "full",
							set = function(info, value) ZL.opt.intervalBidIncrement = value end,
							get = function() return ZL.opt.intervalBidIncrement end,
							order = 1,
						},
						baseAmount1 = {
							type = "input",
							name = "大于",
							order = 2,
							multiline = false,
							get = function()
								return tostring(ZL.opt.baseAmount1 or 5000)
							end,
							set = function(info, value)
								ZL.opt.baseAmount1 = tonumber(value) or 5000
							end,
							width = "twoThirds",
						},
						bidIncrement1 = {
							type = "input",
							name = "加价幅度",
							order = 3,
							multiline = false,
							get = function()
								return tostring(ZL.opt.bidIncrement1 or 500)
							end,
							set = function(info, value)
								ZL.opt.bidIncrement1 = tonumber(value) or 500
							end,
							width = "twoThirds",
						},
						baseAmount2 = {
							type = "input",
							name = "大于",
							order = 4,
							multiline = false,
							get = function()
								return tostring(ZL.opt.baseAmount2 or 10000)
							end,
							set = function(info, value)
								ZL.opt.baseAmount2 = tonumber(value) or 10000
							end,
							width = "twoThirds",
						},
						bidIncrement2 = {
							type = "input",
							name = "加价幅度",
							order = 5,
							multiline = false,
							get = function()
								return tostring(ZL.opt.bidIncrement2 or 1000)
							end,
							set = function(info, value)
								ZL.opt.bidIncrement2 = tonumber(value) or 1000
							end,
							width = "twoThirds",
						},
						baseAmount3 = {
							type = "input",
							name = "大于",
							order = 6,
							multiline = false,
							get = function()
								return tostring(ZL.opt.baseAmount3 or 50000)
							end,
							set = function(info, value)
								ZL.opt.baseAmount3 = tonumber(value) or 50000
							end,
							width = "twoThirds",
						},
						bidIncrement3 = {
							type = "input",
							name = "加价幅度",
							order = 7,
							multiline = false,
							get = function()
								return tostring(ZL.opt.bidIncrement3 or 1000)
							end,
							set = function(info, value)
								ZL.opt.bidIncrement3 = tonumber(value) or 1000
							end,
							width = "twoThirds",
						},
					},
				},
				customSettings = {
					type = "execute",
					name = "物品设置",
					func = function()
						ZL.ItemSettingFrame:Show()
					end,
					order = 2.5,
					width = "full",
				},
				minQuality = {
					type = "select",
					values = function()
						local vtab = {}
						for key, tab in pairs(ITEM_QUALITY_COLORS) do
							if _G["ITEM_QUALITY" .. key .. "_DESC"] then
								vtab[key] = tab.hex .. _G["ITEM_QUALITY" .. key .. "_DESC"] .. "|r"
							end
						end
						vtab[-1] = "|cffaa2222" .. "使用拾取分配" .. "|r"
						return vtab
					end,
					name = "拍卖最低品质",
					set = function(info, value) ZL.opt.minQuality = value end,
					get = function() return ZL.opt.minQuality end,
					order = 2.6,
					width = "twoThirds",
				},
				lootMinQuality = {
					type = "select",
					values = function()
						local vtab = {}
						for key, tab in pairs(ITEM_QUALITY_COLORS) do
							if _G["ITEM_QUALITY" .. key .. "_DESC"] then
								vtab[key] = tab.hex .. _G["ITEM_QUALITY" .. key .. "_DESC"] .. "|r"
							end
						end
						vtab[-1] = "|cffaa2222" .. "使用拾取分配" .. "|r"
						return vtab
					end,
					name = "拾取最低品质",
					set = function(info, value) ZL.opt.lootMinQuality = value end,
					get = function() return ZL.opt.lootMinQuality end,
					order = 2.6,
					width = "twoThirds",
				},
				auctionTimer = {
					type = "range",
					softMin = 10,
					softMax = 3600,
                    step = 1,
					order = 4,
					width = "full",
					name = "初始拍卖时间",
					desc = "因未收到出价而结束拍卖所必须等待的秒数(ML功能)",
					set = function(info, value) ZL.opt.auctionTimer = value end,
					get = function()
						return ZL.opt.auctionTimer
					end,
					-- disabled = function () return (not PlayerIsML()) end,
				},
				auctionTimerRefresh = {
					type = "range",
					softMin = 5,
					softMax = 3600,
                    step = 1,
					order = 5,
					width = "full",
					name = "重置拍卖时间",
					desc = "收到最后出价后直到拍卖成功所需要等待的秒数(ML功能)",
					set = function(info, value)
						ZL.opt.auctionTimerRefresh = value
						ZL.TransmitAddonInfo_Pro()
					end,
					get = function()
						return ZL.opt.auctionTimerRefresh
					end,
				},
				manualCountdownTimer = {
					type = "range",
					softMin = 5,
					softMax = 30,
                    step = 1,
					order = 6,
					name = "手动倒数时间",
					desc = "手动倒计时后直到拍卖结束所需要等待的秒数\n\n会自动同步ML的设置(单位：秒)",
					set = function(info, value) ZL.opt.manualCountdownTimer = value end,
					get = function() return ZL.opt.manualCountdownTimer end,
					disabled = true,
					hidden = true,
				},
				reloadUITimerJump = {
					type = "range",
					softMin = 60,
					softMax = 1800,
                    step = 1,
					order = 7,
					width = "full",
					name = "保存数据提醒频率",
					desc = "重新加载人物界面后将重新计时\n(单位：秒)",
					set = function(info, value)
						if ZL.opt.reloadUITimerJump ~= value then
							ZL.opt.reloadUITimerJump = value
							ZL.SaveDataRemind(true)
						end
					end,
					get = function()
						return ZL.opt.reloadUITimerJump
					end,
				},
				isReloadUI = {
					type = "toggle",
					name = "保存数据提醒|cffffd100(重要)|r",
					desc = "·勾选后将按照设置好的提醒频率在屏幕上方提醒\n·重新加载人物界面后将重新计时\n·战斗状态不会提醒",
					set = function(info, value) ZL.opt.isReloadUI = value end,
					get = function() return ZL.opt.isReloadUI end,
					width = "full",
					order = 7.5,
				},
				isSYNCAll = {
					type = "toggle",
					name = "自动同步数据给其他成员",
					desc = "·保存数据提醒同时同步当前所有数据给其他成员\n·当前存在正在拍卖物品时不同步",
					set = function(info, value) ZL.opt.isSYNCAll = value end,
					get = function() return ZL.opt.isSYNCAll end,
					width = "full",
					order = 7.6,
				},
				awardToML = {
					type = "toggle",
					name = "自动分配物品给ML",
					desc = "注意提前将拾取绑定并且没有2小时交易时间的物品添加到【物品设置】——【过滤】里面",
					set = function(info, value) ZL.opt.awardToML = value end,
					get = function() return ZL.opt.awardToML end,
					width = "full",
					order = 8,
				},
				allowMultiple = {
					type = "toggle",
					name = "允许同时拍卖多项物品",
					desc = "如果不是全团都装了插件，建议使用单拍模式！",
					width = "full",
					set = function(info, value) ZL.opt.allowMultipleAuctions = value end,
					get = function() return ZL.opt.allowMultipleAuctions end,
					-- disabled = function() return ((ZL.curAuctions and (#ZL.curAuctions > 0)) or (ZL.curAuction.item)) end, --临时取消，做测试
					order = 9,
				},
				confirmLootAnnounce= {
					type = "toggle",
					name = "是否拾取通报",
					width = "full",
					set = function(info, value) ZL.opt.confirmLootAnnounce = value end,
					get = function() return ZL.opt.confirmLootAnnounce end,
					order = 10,
				},
				announceRW = {
					type = "toggle",
					name = "拍卖时在团队通知频道(/rw)发送信息",
					desc = "如果开通了游戏系统提示音，会比较吵",
					set = function(info, value) ZL.opt.announceRaidWarning = value end,
					get = function() return ZL.opt.announceRaidWarning end,
					width = "full",
					order = 11,
				},
				CountdownAnnounceRW = {
					type = "toggle",
					name = "5秒倒数强制在团队通知频道(/rw)发送信息",
					desc = "不管是否勾选上面的，只要这个勾选了5秒倒数都会在团队通知频道发送信息",
					set = function(info, value) ZL.opt.CountdownAnnounceRaidWarning = value end,
					get = function() return ZL.opt.CountdownAnnounceRaidWarning end,
					width = "full",
					order = 11.5,
				},
				remindInvalidBid = {
					type = "toggle",
					name = "向不符合出价的成员发送密语提醒",
					width = "full",
					set = function(info, value) ZL.opt.remindInvalidBid = value end,
					get = function() return ZL.opt.remindInvalidBid end,
					order = 12,
				},
				MLChangeGroup = {
					type = "toggle",
					name = "通报工资时将ML调整到后面队伍",
					desc = "可以减轻ML发工资的事情，让其他人发",
					width = "full",
					set = function(info, value) ZL.opt.MLChangeGroup = value end,
					get = function() return ZL.opt.MLChangeGroup end,
					order = 13,
				},
				YYSound = {
					type = "toggle",
					name = "关闭其他成员语音播报",
					desc = "ML开了YY语音播放伴奏——本地伴奏，勾选这个功能后非ML团队其他成员将不会播报自己的语音，防止出现重复声音",
					width = "full",
					set = function(info, value) ZL.opt.YYSound = value end,
					get = function() return ZL.opt.YYSound end,
					order = 14,
				},
				autoPackage = {
					type = "toggle",
					name = "不是拾取绑定物品自动添加到打包拍卖",
					desc = "不是拾取绑定物品自动添加到打包拍卖",
					width = "full",
					set = function(info, value) ZL.opt.autoPackage = value end,
					get = function() return ZL.opt.autoPackage end,
					order = 15,
				},
			},
			order = 1.5,
		},
		butie = {
			type = "group",
			name = "补贴设置",
			desc = "ML权限，会自动同步ML设置",
			order = 2,
			-- disabled = function () return (not PlayerIsML()) end,
			args = {
				customSettings = {
					type = "execute",
					name = "清空",
					func = function()
						ZL.opt.selectHistoryProfile = 1
						ZL.opt.RLBuTieType = 1
						ZL.opt.raidLeaderTiCheng = 0
						ZL.opt.raidLeaderbutie = 0
						ZL.opt.Tbutie = 0
						ZL.opt.Nbutie = 0
						ZL.opt.DPSbutie = 0
						ZL.opt.FOODbutie = 0
						ZL.opt.xiuXingbutie = 0
						ZL.opt.ANMUbutie = 0
						ZL.AuctionRecordFrame.currentIncomeFrame:Update()
						ZL.AuctionRecordFrame.playerBalanceFrame:Update()
					end,
					order = 0.1,
					width = "full",
				},
				profile = {
					dialogInline = true,
					name = "|cffffffff快速配置|r",
					order = 0.12,
					type = "group",
					args = {
						saveNewProfile = {
							type = "input",
							name = "保存新的配置",
							order = 1,
							multiline = false,
							get = function (info)
								return ""
							end,
							set = function(info, value)
								local name = value:gsub("^%s*(.-)%s*$", "%1")
								if name == "" then return end
								if not ZL_SETTING["buTieSetting"] then ZL_SETTING["buTieSetting"] = {} end
								local index
								if #ZL_SETTING["buTieSetting"] > 0 then
									for _index, data in ipairs(ZL_SETTING["buTieSetting"]) do
										if data.name == name then
											index = _index
											break
										end
									end
								end
								if index then
									ZL_SETTING["buTieSetting"][index].name = name
									ZL_SETTING["buTieSetting"][index].RLBuTieType = ZL.opt.RLBuTieType
									ZL_SETTING["buTieSetting"][index].raidLeaderTiCheng = ZL.opt.raidLeaderTiCheng
									ZL_SETTING["buTieSetting"][index].raidLeaderbutie = ZL.opt.raidLeaderbutie
									ZL_SETTING["buTieSetting"][index].Tbutie = ZL.opt.Tbutie
									ZL_SETTING["buTieSetting"][index].Nbutie = ZL.opt.Nbutie
									ZL_SETTING["buTieSetting"][index].DPSbutie = ZL.opt.DPSbutie
									ZL_SETTING["buTieSetting"][index].FOODbutie = ZL.opt.FOODbutie
									ZL_SETTING["buTieSetting"][index].xiuXingbutie = ZL.opt.xiuXingbutie
									ZL_SETTING["buTieSetting"][index].ANMUbutie = ZL.opt.ANMUbutie
								else
									table.insert(ZL_SETTING["buTieSetting"], {
										name = value,
										RLBuTieType = ZL.opt.RLBuTieType,
										raidLeaderTiCheng = ZL.opt.raidLeaderTiCheng,
										raidLeaderbutie = ZL.opt.raidLeaderbutie,
										Tbutie = ZL.opt.Tbutie,
										Nbutie = ZL.opt.Nbutie,
										DPSbutie = ZL.opt.DPSbutie,
										FOODbutie = ZL.opt.FOODbutie,
										xiuXingbutie = ZL.opt.xiuXingbutie,
										ANMUbutie = ZL.opt.ANMUbutie,
									})
									ZL.opt.selectHistoryProfile = #ZL_SETTING["buTieSetting"] + 1
								end
							end,
							width = "twoThirds",
						},
						selectHistoryProfile = {
							type = "select",
							name = "选择历史配置",
							width = "twoThirds",
							order = 2,
							values = function ()
								local list = {""}
								if ZL_SETTING["buTieSetting"] and #ZL_SETTING["buTieSetting"] > 0 then
									for _, data in ipairs(ZL_SETTING["buTieSetting"]) do
										table.insert(list, data.name)
									end
								end
								return list
							end,
							get = function(info)
								return ZL.opt.selectHistoryProfile
							end,
							set = function(info, value)
								ZL.opt.selectHistoryProfile = value
								if value > 1 then
									local data = ZL_SETTING["buTieSetting"][value-1]
									ZL.opt.RLBuTieType = data.RLBuTieType
									ZL.opt.raidLeaderTiCheng = data.raidLeaderTiCheng
									ZL.opt.raidLeaderbutie = data.raidLeaderbutie
									ZL.opt.Tbutie = data.Tbutie
									ZL.opt.Nbutie = data.Nbutie
									ZL.opt.DPSbutie = data.DPSbutie
									ZL.opt.FOODbutie = data.FOODbutie
									ZL.opt.xiuXingbutie = data.xiuXingbutie
									ZL.opt.ANMUbutie = data.ANMUbutie
								end
							end,
						},
						deleteHistoryProfile = {
							type = "execute",
							name = "删除",
							func = function()
								if ZL.opt.selectHistoryProfile > 1 then
									table.remove(ZL_SETTING["buTieSetting"], ZL.opt.selectHistoryProfile-1)
								end
							end,
							order = 3,
							width = "half",
						},
					},
				},
				raidLeader = {
					dialogInline = true,
					name = "|cffffffff团长补贴|r",
					order = 0.2,
					type = "group",
					args = {
						raidLeaderType = {
							type = "select",
							name = "补贴方式",
							width = "twoThirds",
							order = 1,
							values = {
								"无", "固定补贴", "双倍工资", "按点提成",
							},
							get = function(info)
								local isHidden
								local descStr = ""
								if ZL.opt.RLBuTieType == 1 then
									ZL.options.args.butie.args.raidLeader.args.raidLeaderbutie.hidden = true
									ZL.options.args.butie.args.raidLeader.args.raidLeaderTiCheng.hidden = true
									descStr = "团长无补贴"
								elseif ZL.opt.RLBuTieType == 2 then
									ZL.options.args.butie.args.raidLeader.args.raidLeaderbutie.hidden = false
									ZL.options.args.butie.args.raidLeader.args.raidLeaderTiCheng.hidden = true
									descStr = "请在右边输入固定补贴金额"
								elseif ZL.opt.RLBuTieType == 3 then
									ZL.options.args.butie.args.raidLeader.args.raidLeaderbutie.hidden = true
									ZL.options.args.butie.args.raidLeader.args.raidLeaderTiCheng.hidden = true
									descStr = [=[
|cffff0000团长双倍工资|r
]=]

-- |cffff0000计算逻辑：|r
-- 工资人数 = 现有团员数 - 老板数 + 1
-- 净收入 = 总收入 - 所有支出
-- 平均工资 = 净收入 / 工资人数
-- 团双工资 = 平均工资 * 2
								elseif ZL.opt.RLBuTieType == 4 then
									ZL.options.args.butie.args.raidLeader.args.raidLeaderbutie.hidden = true
									ZL.options.args.butie.args.raidLeader.args.raidLeaderTiCheng.hidden = false
									descStr = [=[
|cffff0000按百分比提成|r
]=]

-- |cffff0000计算逻辑：|r
-- 工资人数 = 现有团员数 - 老板数
-- 净收入1 = 总收入 - 所有支出
-- 团长提成 = 净收入1 * 5%
-- 净收入2 = 净收入1 - 团长提成
-- 平均工资 = 净收入2 / 工资人数
-- 团长工资 = 平均工资 + 团长提成
								end
								ZL.options.args.butie.args.raidLeader.args.raidLeaderType.desc = descStr
								return ZL.opt.RLBuTieType or 1 -- 这里返回当前选中的值
							end,
							set = function(info, value)
								ZL.opt.RLBuTieType = value -- 这里设置选中的值
							end,
						},
						raidLeaderbutie = {
							type = "input",
							name = "|cff0000ff团长补贴|r",
							desc = "请输入大于0的数",
							order = 2,
							multiline = false,
							get = function()
								-- ZL.TransmitAddonInfo_Pro()
								ZL.AuctionRecordFrame.currentIncomeFrame:Update()
								ZL.AuctionRecordFrame.playerBalanceFrame:Update()
								return tostring(ZL.opt.raidLeaderbutie or "")
							end,
							set = function(info, value)
								ZL.opt.raidLeaderbutie = tonumber(value) or 0
							end,
							width = "twoThirds",
						},
						raidLeaderTiCheng = {
							type = "input",
							name = "|cffff0000团长提成|r",
							desc = "请输入大于0，小于100的数\n比如提成5%，输入5\n|cffff0000不需要输入%号|r",
							order = 2,
							multiline = false,
							get = function()
								-- ZL.TransmitAddonInfo_Pro()
								ZL.AuctionRecordFrame.currentIncomeFrame:Update()
								ZL.AuctionRecordFrame.playerBalanceFrame:Update()
								return tostring(ZL.opt.raidLeaderTiCheng or "")
							end,
							set = function(info, value)
								ZL.opt.raidLeaderTiCheng = tonumber(value) or 0
							end,
							width = "twoThirds",
						},
					},
				},
				tanke = {
					type = "input",
					name = "坦克补贴",
					order = 1,
					multiline = false,
					get = function()
						ZL.TransmitAddonInfo_Pro()
						ZL.AuctionRecordFrame.currentIncomeFrame:Update()
						ZL.AuctionRecordFrame.playerBalanceFrame:Update()
						return tostring(ZL.opt.Tbutie or "")
					end,
					set = function(info, value)
						ZL.opt.Tbutie = tonumber(value) or 0
					end,
					width = "twoThirds",
				},
				zhiliao = {
					type = "input",
					name = "治疗补贴",
					order = 2,
					multiline = false,
					get = function()
						-- ZL.TransmitAddonInfo_Pro()
						ZL.AuctionRecordFrame.currentIncomeFrame:Update()
						ZL.AuctionRecordFrame.playerBalanceFrame:Update()
						return tostring(ZL.opt.Nbutie or "")
					end,
					set = function(info, value)
						ZL.opt.Nbutie = tonumber(value) or 0
					end,
					width = "twoThirds",
				},
				DPS = {
					type = "input",
					name = "DPS补贴",
					order = 3,
					multiline = false,
					get = function()
						-- ZL.TransmitAddonInfo_Pro()
						ZL.AuctionRecordFrame.currentIncomeFrame:Update()
						ZL.AuctionRecordFrame.playerBalanceFrame:Update()
						return tostring(ZL.opt.DPSbutie or "")
					end,
					set = function(info, value)
						ZL.opt.DPSbutie = tonumber(value) or 0
					end,
					width = "twoThirds",
				},
				food = {
					type = "input",
					name = "食物补贴",
					order = 4,
					multiline = false,
					get = function()
						-- ZL.TransmitAddonInfo_Pro()
						ZL.AuctionRecordFrame.currentIncomeFrame:Update()
						ZL.AuctionRecordFrame.playerBalanceFrame:Update()
						return tostring(ZL.opt.FOODbutie or "")
					end,
					set = function(info, value)
						ZL.opt.FOODbutie = tonumber(value) or 0
					end,
					width = "twoThirds",
				},
				xiuXing = {
					type = "input",
					name = "修星补贴",
					order = 5,
					multiline = false,
					get = function()
						-- ZL.TransmitAddonInfo_Pro()
						ZL.AuctionRecordFrame.currentIncomeFrame:Update()
						ZL.AuctionRecordFrame.playerBalanceFrame:Update()
						return tostring(ZL.opt.xiuXingbutie or "")
					end,
					set = function(info, value)
						ZL.opt.xiuXingbutie = tonumber(value) or 0
					end,
					width = "twoThirds",
				},
				anMu = {
					type = "input",
					name = "工具人补贴",
					desc = "如：暗牧、战斗贼、增强萨等",
					order = 6,
					multiline = false,
					get = function()
						-- ZL.TransmitAddonInfo_Pro()
						ZL.AuctionRecordFrame.currentIncomeFrame:Update()
						ZL.AuctionRecordFrame.playerBalanceFrame:Update()
						return tostring(ZL.opt.ANMUbutie or "")
					end,
					set = function(info, value)
						ZL.opt.ANMUbutie = tonumber(value) or 0
					end,
					width = "twoThirds",
				},
			},
		},
		lootToBags = {
			type = "group",
			name = "背包设置",
			order = 2.1,
			args = {
				bagHighLight = {
					dialogInline = true,
					name = "背包拍卖物品按不同状态显示高亮颜色",
					order = 2,
					type = "group",
					args = {
						waitingBagHighLight = {
							order = 1,
							type = "toggle",
							name = function ()
								local r, g, b, a = unpack(ZL.colorList["waiting"])
								return ZL.RGBAToHex(r*255, g*255, b*255, a*255) .. "待拍卖" .. "|r   "
							end,
							set = function(info, value) ZL.opt.waitingBagHighLight = value end,
							get = function()
								ZL.BagHighLight()
								return ZL.opt.waitingBagHighLight
							end,
							width = "half",
						},
						auctioningBagHighLight = {
							order = 3,
							type = "toggle",
							name = function ()
								local r, g, b, a = unpack(ZL.colorList["auctioning"])
								return ZL.RGBAToHex(r*255, g*255, b*255, a*255) .. "拍卖中" .. "|r   "
							end,
							set = function(info, value) ZL.opt.auctioningBagHighLight = value end,
							get = function()
								ZL.BagHighLight()
								return ZL.opt.auctioningBagHighLight
							end,
							width = "half",
						},
						successBagHighLight = {
							order = 4,
							type = "toggle",
							name = function ()
								local r, g, b, a = unpack(ZL.colorList["success"])
								return ZL.RGBAToHex(r*255, g*255, b*255, a*255) .. "成功" .. "|r"
							end,
							set = function(info, value) ZL.opt.successBagHighLight = value end,
							get = function()
								ZL.BagHighLight()
								return ZL.opt.successBagHighLight
							end,
							width = "half",
						},
						failedBagHighLight = {
							order = 5,
							type = "toggle",
							name = function ()
								local r, g, b, a = unpack(ZL.colorList["failed"])
								return ZL.RGBAToHex(r*255, g*255, b*255, a*255) .. "流拍" .. "|r"
							end,
							set = function(info, value) ZL.opt.failedBagHighLight = value end,
							get = function()
								ZL.BagHighLight()
								return ZL.opt.failedBagHighLight
							end,
							width = "half",
						},
						lgnoreBagHighLight = {
							order = 6,
							type = "toggle",
							name = function ()
								local r, g, b, a = unpack(ZL.colorList["lgnore"])
								return ZL.RGBAToHex(r*255, g*255, b*255, a*255) .. "忽略" .. "|r "
							end,
							set = function(info, value) ZL.opt.lgnoreBagHighLight = value end,
							get = function()
								ZL.BagHighLight()
								return ZL.opt.lgnoreBagHighLight
							end,
							width = "half",
						},
						tipsDescription = {
							type = "description",
							name = "支持原始背包、BagBrother、Combuctor、NDui、ElvUI、\nArkInventory背包",
							order = 7,
							width = "full",
							fontSize = "medium",
						},
					},
				},
				kongDescription = {
					type = "description",
					name = " ",
					order = 3,
					width = "half",
					fontSize = "medium",
				},
				lootToBag = {
					dialogInline = true,
					name = "流拍、自己买的物品放到指定背包",
					order = 4,
					type = "group",
					args = {
						emptyOneSpace = {
							type = "toggle",
							name = "空一格",
							desc = "每个背包之间空一格，以便区分",
							width = "full",
							order = 1,
							set = function(info, value)
								ZL.opt.emptyOneSpace = value
							end,
							get = function() return ZL.opt.emptyOneSpace end,
						},
						warningDescription = {
							type = "description",
							name = "|cffff0000注意：如两种物品放同一个背包，分解或售卖时注意看清楚|r",
							order = 2,
							width = "full",
							fontSize = "medium",
						},
						liupaiToggle = {
							type = "toggle",
							name = "流拍",
							desc = "当背包满了后将无法继续自动放\n|cffff0000只对拾取绑定的物品有效|r",
							width = 0.4,
							order = 3,
							set = function(info, value)
								ZL.opt.liupaiToggle = value
							end,
							get = function() return ZL.opt.liupaiToggle end,
						},
						liupaiBagId = {
							type = "select",
							name = "",
							order = 4,
							width = 0.3,
							values = function ()
								local list = {}
								for i = 0, NUM_BAG_SLOTS do
									if i ~= tonumber(ZL.opt.liupaiBagId2) and i ~= tonumber(ZL.opt.selfBagId) then
										list[tostring(i)] = tostring(i+1)
									end
								end
								return list
							end,
							set = function(info, value)
								ZL.opt.liupaiBagId = value
								local num = C_Container.GetContainerNumFreeSlots(ZL.opt.liupaiBagId)
								local text
								if num <= 5 then
									text = "|cffff0000" .. tostring(num) .. "|r"
								else
									text = tostring(num)
								end
								ZL.options.args.lootToBags.args.lootToBag.args.liupaiDescription.name = " 剩余" .. text .. "格"
							end,
							get = function()
								local num = C_Container.GetContainerNumFreeSlots(ZL.opt.liupaiBagId)
								local text
								if num <= 5 then
									text = "|cffff0000" .. tostring(num) .. "|r"
								else
									text = tostring(num)
								end
								ZL.options.args.lootToBags.args.lootToBag.args.liupaiDescription.name = " 剩余" .. text .. "格"
								return ZL.opt.liupaiBagId
							end,
						},
						liupaiDescription = {
							type = "description",
							name = " ",
							order = 5,
							width = "half",
							fontSize = "medium",
						},
						liupaiBagId2 = {
							type = "select",
							name = "",
							order = 5.1,
							width = 0.3,
							values = function ()
								local list = {}
								for i = 0, NUM_BAG_SLOTS do
									if i ~= tonumber(ZL.opt.liupaiBagId) and i ~= tonumber(ZL.opt.selfBagId) then
										list[tostring(i)] = tostring(i+1)
									end
								end
								return list
							end,
							set = function(info, value)
								ZL.opt.liupaiBagId2 = value
								local num = C_Container.GetContainerNumFreeSlots(ZL.opt.liupaiBagId2)
								local text
								if num <= 5 then
									text = "|cffff0000" .. tostring(num) .. "|r"
								else
									text = tostring(num)
								end
								ZL.options.args.lootToBags.args.lootToBag.args.liupaiDescription2.name = " 剩余" .. text .. "格"
							end,
							get = function()
								local num = C_Container.GetContainerNumFreeSlots(ZL.opt.liupaiBagId2)
								local text
								if num <= 5 then
									text = "|cffff0000" .. tostring(num) .. "|r"
								else
									text = tostring(num)
								end
								ZL.options.args.lootToBags.args.lootToBag.args.liupaiDescription2.name = " 剩余" .. text .. "格"
								return ZL.opt.liupaiBagId2
							end,
						},
						liupaiDescription2 = {
							type = "description",
							name = " ",
							order = 5.2,
							width = "half",
							fontSize = "medium",
						},
						liupaiDirection = {
							type = "toggle",
							name = "倒置",
							desc = "勾选后将从后往前放置物品",
							width = "half",
							order = 6,
							set = function(info, value)
								ZL.opt.liupaiDirection = value
							end,
							get = function() return ZL.opt.liupaiDirection end,
						},
						selfToggle = {
							type = "toggle",
							name = "自拍",
							desc = "当背包满了后将无法继续自动放\n|cffff0000只对自己拍到的物品有效|r",
							width = 0.4,
							order = 7,
							set = function(info, value)
								ZL.opt.selfToggle = value
							end,
							get = function() return ZL.opt.selfToggle end,
						},
						selfBagId = {
							type = "select",
							name = "",
							order = 8,
							width = 0.3,
							values = function ()
								local list = {}
								for i = 0, NUM_BAG_SLOTS do
									if i ~= tonumber(ZL.opt.liupaiBagId) and i ~= tonumber(ZL.opt.liupaiBagId2) then
										list[tostring(i)] = tostring(i+1)
									end
								end
								return list
							end,
							set = function(info, value)
								ZL.opt.selfBagId = value
								local num = C_Container.GetContainerNumFreeSlots(ZL.opt.selfBagId)
								local text
								if num <= 5 then
									text = "|cffff0000" .. tostring(num) .. "|r"
								else
									text = tostring(num)
								end
								ZL.options.args.lootToBags.args.lootToBag.args.selfDescription.name = " 剩余" .. text .. "格"
							end,
							get = function()
								local num = C_Container.GetContainerNumFreeSlots(ZL.opt.selfBagId)
								local text
								if num <= 5 then
									text = "|cffff0000" .. tostring(num) .. "|r"
								else
									text = tostring(num)
								end
								ZL.options.args.lootToBags.args.lootToBag.args.selfDescription.name = " 剩余" .. text .. "格"
								return ZL.opt.selfBagId
							end,
						},
						selfDescription = {
							type = "description",
							name = " ",
							order = 9,
							width = "half",
							fontSize = "medium",
						},
						selfDirection = {
							type = "toggle",
							name = "倒置",
							desc = "勾选后将从后往前放置物品",
							width = "half",
							order = 10,
							set = function(info, value)
								ZL.opt.selfDirection = value
							end,
							get = function() return ZL.opt.selfDirection end,
						},
					},
				},
			},
		},
		notification = {
			type = "group",
			name = "提示选项",
			order = 3,
			args = {
				rules = {
					type = "input",
					name = "拍卖规则",
					order = 1,
					multiline = true,
					get = function() return ZL.opt.rulesString or "" end,
					set = function(info, value)
						ZL.opt.rulesString = string.len(value) > 0 and value
					end,
					width = "full",
				},
				welcomeMessage = {
					dialogInline = true,
					name = "加入团队时欢迎语(RL或ML权限)",
					order = 2,
					type = "group",
					args = {
						isEnabled = {
							order = 1,
							type = "toggle",
							name = "启用",
							set = function(info, value) ZL.opt.welcomeMessageEnable = value end,
							get = function() 
								return ZL.opt.welcomeMessageEnable
								-- if ZL.opt.MessageString and string.len(ZL.opt.MessageString) > 0 then
								-- 	return ZL.opt.welcomeMessageEnable
								-- else
								-- 	ZL.opt.welcomeMessageEnable = false
								-- 	return ZL.opt.welcomeMessageEnable
								-- end
							end,
							width = "half",
						},
						Message = {
							type = "input",
							name = "欢迎语",
							order = 2,
							multiline = true,
							get = function() return ZL.opt.MessageString or "" end,
							set = function(info, value)
								if string.len(value) > 0 then
									ZL.opt.MessageString = value
								else
									ZL.opt.MessageString = ""
								end
							end,
							width = "full",
						},
					},
				},
				IsTradeRemainingVoiceReminder = {
					dialogInline = true,
					name = "交易剩余时间语音提醒",
					order = 2.1,
					type = "group",
					args = {
						isEnabled = {
							order = 1,
							type = "toggle",
							name = "启用",
							desc = "在团队副本中才会提醒",
							set = function(info, value)
								ZL.opt.IsTradeRemainingVoiceReminder = value
							end,
							get = function() return ZL.opt.IsTradeRemainingVoiceReminder end,
							width = "full",
						},
						TradeRemainingTimer = {
							type = "range",
							softMin = 10,
							softMax = 60,
							step = 1,
							order = 2,
							width = "twoThirds",
							name = "交易剩余时间",
							desc = "当存在交易剩余时间低于设定时间语音提醒(单位：分钟)",
							set = function(info, value) ZL.opt.TradeRemainingTimer = value end,
							get = function() return ZL.opt.TradeRemainingTimer end,
						},
						TradeRemainingReminderPinlv = {
							type = "range",
							softMin = 1,
							softMax = 10,
							step = 1,
							order = 3,
							width = "twoThirds",
							name = "语音提醒频率",
							desc = "单位：分钟",
							set = function(info, value) ZL.opt.TradeRemainingReminderPinlv = value end,
							get = function() return ZL.opt.TradeRemainingReminderPinlv end,
						},
					},
				},
				IsVoiceReminder = {
					type = "toggle",
					name = "拍卖语音提醒",
					set = function(info, value)
						ZL.opt.IsVoiceReminder = value
					end,
					get = function() return ZL.opt.IsVoiceReminder end,
					width = "twoThirds",
					order = 2.2,
				},
				VoiceReminderSoundType = {
					type = "select",
					name = "语音类型",
					width = "twoThirds",
					order = 2.3,
					values = ZL.SoundTypeList,
					get = function(info)
						return ZL.opt.VoiceReminderSoundType
					end,
					set = function(info, value)
						ZL.opt.VoiceReminderSoundType = value
						ZL.SoundType = ZL.SoundTypeList[ZL.opt.VoiceReminderSoundType or 1] or "甜美女声"
					end,
				},
				startAuctionSound = {
					type = "toggle",
					name = "开始拍卖使用系统语音",
					set = function(info, value)
						ZL.opt.startAuctionSound = value
					end,
					get = function() return ZL.opt.startAuctionSound end,
					width = "full",
					order = 2.4,
				},
				conciseSound = {
					type = "toggle",
					name = "系统语音简洁模式",
					set = function(info, value)
						ZL.opt.conciseSound = value
					end,
					get = function() return ZL.opt.conciseSound end,
					width = "full",
					order = 2.5,
				},
				saveGroupMembersSound = {
					type = "toggle",
					name = "保存团员名单",
					set = function(info, value)
						ZL.opt.saveGroupMembersSound = value
					end,
					get = function() return ZL.opt.saveGroupMembersSound end,
					width = "full",
					order = 2.6,
				},
				overrideArchive = {
					type = "toggle",
					name = "反和谐",
					-- desc = "",
					set = function(info, value) 
						ZL.opt.overrideArchive = value 
						if ZL.opt.overrideArchive then
							SetCVar("overrideArchive", "0")
						else
							SetCVar("overrideArchive", "1")
						end
					end,
					get = function() return ZL.opt.overrideArchive end,
					width = "full",
					order = 3,
				},
				profanityFilter = {
					type = "toggle",
					name = "强制关闭系统语言过滤",
					desc = "部分信息就算关闭了系统语言过滤也还是一样会看不到",
					set = function(info, value)
						ZL.opt.profanityFilter = value
						if ZL.opt.profanityFilter then
							SetCVar("profanityFilter", "0")
						else
							SetCVar("profanityFilter", "1")
						end
					end,
					get = function() return ZL.opt.profanityFilter end,
					width = "full",
					order = 4,
				},
			},
		},
		windowsSetting = {
			type = "group",
			name = "窗口设置",
			order = 4,
			args = {
				guiScale = {
					dialogInline = false,
					type = "group",
					name = "窗口缩放",
					order = 2,
					args = {
						ZLAuctionFrameScale = {
							type = "range",
							name = "拍卖窗口缩放",
							min = 0.5,
							max = 2,
							softMax = 2,
							softMin = 0.5,
							step = 0.01,
							get = function() return ZL.opt.ZLAuctionFrameScale end,
							set = function(info, value)
								ZL.opt.ZLAuctionFrameScale = value
								ZL.AuctionFrame2:SetScale(ZL.opt.ZLAuctionFrameScale)
								ZL.FloatAuctionFrame:SetScale(ZL.opt.ZLAuctionFrameScale)
							end,
							order = 1,
							width = "twoThirds",
						},
						ZLAuctionRecordFrameScale = {
							type = "range",
							name = "拍卖记录窗口缩放",
							min = 0.5,
							max = 2,
							softMax = 2,
							softMin = 0.5,
							step = 0.01,
							get = function() return ZL.opt.ZLAuctionRecordFrameScale end,
							set = function(info, value)
								ZL.opt.ZLAuctionRecordFrameScale = value
								ZL.AuctionRecordFrame:SetScale(ZL.opt.ZLAuctionRecordFrameScale)
								ZL.AuctionRecordFrame:SetResizeBounds(530, 300, 530, GetScreenHeight()/ZL.opt.ZLAuctionRecordFrameScale-30)
								if ZL.AuctionRecordFrame:GetHeight() > GetScreenHeight()/ZL.opt.ZLAuctionRecordFrameScale-30 then
									ZL.AuctionRecordFrame:SetHeight(GetScreenHeight()/ZL.opt.ZLAuctionRecordFrameScale-30)
								end
							end,
							order = 2,
							width = "twoThirds",
						},
						ZLItemSettingFrameScale = {
							type = "range",
							name = "物品拍卖设置窗口缩放",
							min = 0.5,
							max = 2,
							softMax = 2,
							softMin = 0.5,
							step = 0.01,
							get = function() return ZL.opt.ZLItemSettingFrameScale end,
							set = function(info, value)
								ZL.opt.ZLItemSettingFrameScale = value
								ZL.ItemSettingFrame:SetScale(ZL.opt.ZLItemSettingFrameScale)
							end,
							order = 3,
							width = "twoThirds",
						},
						ZLRemainingTradeTimeFrameScale = {
							type = "range",
							name = "交易剩余时间窗口缩放",
							min = 0.5,
							max = 2,
							softMax = 2,
							softMin = 0.5,
							step = 0.01,
							get = function() return ZL.opt.ZLRemainingTradeTimeFrameScale end,
							set = function(info, value)
								ZL.opt.ZLRemainingTradeTimeFrameScale = value
								ZL.ZLRemainingTradeTimeFrame:SetScale(ZL.opt.ZLRemainingTradeTimeFrameScale)
							end,
							order = 4,
							width = "twoThirds",
						},
						ZLRolesOverViewFrameScale = {
							type = "range",
							name = "角色信息总览缩放",
							min = 0.5,
							max = 2,
							softMax = 2,
							softMin = 0.5,
							step = 0.01,
							get = function() return ZL.opt.ZLRolesOverViewFrameScale end,
							set = function(info, value)
								ZL.opt.ZLRolesOverViewFrameScale = value
								ZL.RolesOverViewFrame:SetScale(ZL.opt.ZLRolesOverViewFrameScale)
							end,
							order = 5,
							width = "twoThirds",
						},
					},
				},
				hideWindows = {
					dialogInline = false,
					type = "group",
					name = "战斗时隐藏窗口",
					order = 3,
					args = {
						AuctionFrameHide = {
							type = "toggle",
							name = "拍卖清单窗口",
							set = function(info, value) ZL.opt.AuctionFrameHide = value end,
							get = function() return ZL.opt.AuctionFrameHide end,
							width = "twoThirds",
							order = 1,
						},
						RemainingTradeTimeFrameHide = {
							type = "toggle",
							name = "交易剩余时间窗口",
							set = function(info, value) ZL.opt.RemainingTradeTimeFrameHide = value end,
							get = function() return ZL.opt.RemainingTradeTimeFrameHide end,
							width = "twoThirds",
							order = 2,
						},
						ItemSettingFrameHide = {
							type = "toggle",
							name = "物品拍卖设置窗口",
							set = function(info, value) ZL.opt.ItemSettingFrameHide = value end,
							get = function() return ZL.opt.ItemSettingFrameHide end,
							width = "twoThirds",
							order = 3,
						},
						AuctionRecordFrameHide = {
							type = "toggle",
							name = "拍卖记录窗口",
							set = function(info, value) ZL.opt.AuctionRecordFrameHide = value end,
							get = function() return ZL.opt.AuctionRecordFrameHide end,
							width = "twoThirds",
							order = 4,
						},
						SettingFrameHide = {
							type = "toggle",
							name = "设置窗口",
							set = function(info, value) ZL.opt.SettingFrameHide = value end,
							get = function() return ZL.opt.SettingFrameHide end,
							width = "twoThirds",
							order = 5,
						},
						RolesOverViewFrameHide = {
							type = "toggle",
							name = "角色信息总览窗口",
							set = function(info, value) ZL.opt.RolesOverViewFrameHide = value end,
							get = function() return ZL.opt.RolesOverViewFrameHide end,
							width = "twoThirds",
							order = 6,
						},
					},
				},
				auctionWindow = {
					dialogInline = false,
					type = "group",
					name = "窗口功能隐藏",
					order = 4,
					args = {
						overviewFramePlayerModelHide = {
							type = "toggle",
							name = "隐藏账单窗口跳舞NPC",
							set = function(info, value)
								ZL.opt.overviewFramePlayerModelHide = value
								if value then
									ZL.OverviewFrame.playerModel:Hide()
								else
									ZL.OverviewFrame.playerModel:Show()
								end
							end,
							get = function() return ZL.opt.overviewFramePlayerModelHide end,
							width = "full",
							order = 0.01,
						},
						maxFrameHide = {
							type = "toggle",
							name = "隐藏最小化拍卖清单窗口",
							desc = "不在团队并且不是ML时隐藏窗口",
							set = function(info, value)
								ZL.opt.maxFrameHide = value
								if (not ZL.opt.ZLAuctionFrameIsShown) and (PlayerIsML() or IsInRaid(1) or (not ZL.opt.maxFrameHide)) then
									ZL.maxFrame:Show()
								else
									ZL.maxFrame:Hide()
								end
							end,
							get = function() return ZL.opt.maxFrameHide end,
							width = "full",
							order = 0.1,
						},
						minIconHide = {
							type = "toggle",
							name = "隐藏小地图按钮",
							desc = "|cffff0000警告：隐藏后无法直接使用角色信息总览等功能|r",
							set = function(info, value)
								ZL.opt.minIconHide = value
								if value then
									ZL.minimapicon:Hide("ZLAUTOLDB")
									local msgStr = "输入|cffffaa00/aa roles|r 可快捷打开角色信息总览窗口"
									DEFAULT_CHAT_FRAME:AddMessage(ZL.Prefix(msgStr))
									ZL.ScrollingMessageFrame:AddMessage(msgStr)
								else
									ZL.minimapicon:Show("ZLAUTOLDB")
								end
							end,
							get = function() 
								return ZL.opt.minIconHide
							end,
							width = "full",
							order = 0.11,
						},
						minIconTooltipHide = {
							type = "toggle",
							name = "隐藏小地图按钮提示",
							set = function(info, value)
								ZL.opt.minIconTooltipHide = value
							end,
							get = function()
								return ZL.opt.minIconTooltipHide
							end,
							width = "full",
							order = 0.12,
						},
						ShortcutTipHide = {
							type = "toggle",
							name = "隐藏|cffff0000竞拍信息|r快捷键提示窗口",
							set = function(info, value)
								ZL.opt.ShortcutTipHide = value
							end,
							get = function() return ZL.opt.ShortcutTipHide end,
							width = "full",
							order = 0.2,
							hidden = true,
						},
						RecordShortcutTipHide = {
							dialogInline = true,
							type = "group",
							name = "隐藏|cffff0000记录按钮|r提示窗口——|cffffffff收支记录|r不可隐藏",
							order = 0.3,
							args = {
								currentDetailToolTipHide = {
									type = "toggle",
									name = "收支详情",
									set = function(info, value)
										ZL.opt.currentDetailToolTipHide = value
									end,
									get = function() return ZL.opt.currentDetailToolTipHide end,
									width = "twoThirds",
									order = 1,
									hidden = true,
								},
								xiaoFeiToolTipHide = {
									type = "toggle",
									name = "消费排名",
									set = function(info, value)
										ZL.opt.xiaoFeiToolTipHide = value
									end,
									get = function() return ZL.opt.xiaoFeiToolTipHide end,
									width = "twoThirds",
									order = 2,
								},
								debtToolTipHide = {
									type = "toggle",
									name = "欠款名单",
									desc = "勾选后快捷键也会隐藏",
									set = function(info, value)
										ZL.opt.debtToolTipHide = value
									end,
									get = function() return ZL.opt.debtToolTipHide end,
									width = "twoThirds",
									order = 3,
								},
								recordShortcutTipHide = {
									type = "toggle",
									name = "快捷键",
									set = function(info, value)
										ZL.opt.recordShortcutTipHide = value
									end,
									get = function() return ZL.opt.recordShortcutTipHide end,
									width = "twoThirds",
									order = 4,
								},
							},
						},
						columnHide = {
							dialogInline = true,
							type = "group",
							name = "隐藏列",
							order = 1,
							args={
								bidColumnHide = {
									type = "toggle",
									name = "出价",
									set = function(info, value)
										ZL.opt.bidColumnHide = value
										local AuctionFrame = ZL.AuctionFrame2
										local width = AuctionFrame:GetWidth()
										local totalWidth = width - 24
										local infoColumnWidth, bidderColumnWidth, bidColumnWidth = AuctionFrame.iconHeaderBtn:GetWidth()-1, 130, AuctionFrame.bidHeaderBtn:GetWidth()-1
										local startbidColumnWidth, functionColumnWidth = AuctionFrame.startbidHeaderBtn:GetWidth()-1, AuctionFrame.functionHeaderBtn:GetWidth()-1
										local needWidth = infoColumnWidth + bidderColumnWidth
										if not (ZL.opt.startbidColumnHide or (ZL.opt.startBidHide and ZL.opt.inrementHide)) then
											needWidth = needWidth + startbidColumnWidth
										end
										if not (ZL.opt.functionColumnHide or (ZL.opt.startBtnHide and ZL.opt.pauseBtnHide and ZL.opt.countdownBtnHide and
										ZL.opt.packageBtnHide and ZL.opt.reverseBidBtnHide and ZL.opt.modifyBidBtnHide and ZL.opt.syncBtnHide and ZL.opt.delAuctionBtnHide)) then
											needWidth = needWidth + functionColumnWidth
										end
										if (ZL.opt.bidColumnHide or (ZL.opt.bidEditBoxHide and ZL.opt.bidBtnHide and ZL.opt.bidCountsHide)) then
											if (totalWidth - bidColumnWidth) >= needWidth then
												AuctionFrame:SetWidth(width - bidColumnWidth)
											else
												AuctionFrame:Update()
											end
										else
											if width + bidColumnWidth <= GetScreenWidth()-30 then
												AuctionFrame:SetWidth(width + bidColumnWidth)
											else
												AuctionFrame:Update()
											end
										end
									end,
									get = function() return ZL.opt.bidColumnHide end,
									width = "twoThirds",
									order = 1,
								},
								startbidColumnHide = {
									type = "toggle",
									name = "起拍价/加价",
									set = function(info, value)
										ZL.opt.startbidColumnHide = value
										local AuctionFrame = ZL.AuctionFrame2
										local width = AuctionFrame:GetWidth()
										local totalWidth = width - 24
										local infoColumnWidth, bidderColumnWidth, bidColumnWidth = AuctionFrame.iconHeaderBtn:GetWidth()-1, 130, AuctionFrame.bidHeaderBtn:GetWidth()-1
										local startbidColumnWidth, functionColumnWidth = AuctionFrame.startbidHeaderBtn:GetWidth()-1, AuctionFrame.functionHeaderBtn:GetWidth()-1
										local needWidth = infoColumnWidth + bidderColumnWidth
										if (not (ZL.opt.bidColumnHide or (ZL.opt.bidEditBoxHide and ZL.opt.bidBtnHide and ZL.opt.bidCountsHide))) then
											needWidth = needWidth + bidColumnWidth
										end
										if (not (ZL.opt.functionColumnHide or (ZL.opt.startBtnHide and ZL.opt.pauseBtnHide and ZL.opt.countdownBtnHide and
										ZL.opt.packageBtnHide and ZL.opt.reverseBidBtnHide and ZL.opt.modifyBidBtnHide and ZL.opt.syncBtnHide and ZL.opt.delAuctionBtnHide))) then
											needWidth = needWidth + functionColumnWidth
										end
										if (ZL.opt.startbidColumnHide or (ZL.opt.startBidHide and ZL.opt.inrementHide)) then
											if (totalWidth - startbidColumnWidth) >= needWidth then
												AuctionFrame:SetWidth(width - startbidColumnWidth)
											else
												AuctionFrame:Update()
											end
										else
											if width + startbidColumnWidth <= GetScreenWidth()-30 then
												AuctionFrame:SetWidth(width + startbidColumnWidth)
											else
												AuctionFrame:Update()
											end
										end
									end,
									get = function() return ZL.opt.startbidColumnHide end,
									width = "twoThirds",
									order = 2,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								functionColumnHide = {
									type = "toggle",
									name = "功能按钮",
									set = function(info, value)
										ZL.opt.functionColumnHide = value
										local AuctionFrame = ZL.AuctionFrame2
										local width = AuctionFrame:GetWidth()
										local totalWidth = width - 24
										local infoColumnWidth, bidderColumnWidth, bidColumnWidth = AuctionFrame.iconHeaderBtn:GetWidth()-1, 130, AuctionFrame.bidHeaderBtn:GetWidth()-1
										local startbidColumnWidth, functionColumnWidth = AuctionFrame.startbidHeaderBtn:GetWidth()-1, AuctionFrame.functionHeaderBtn:GetWidth()-1
										local needWidth = infoColumnWidth + bidderColumnWidth
										if (not (ZL.opt.bidColumnHide or (ZL.opt.bidEditBoxHide and ZL.opt.bidBtnHide and ZL.opt.bidCountsHide))) then
											needWidth = needWidth + bidColumnWidth
										end
										if (not (ZL.opt.startbidColumnHide or (ZL.opt.startBidHide and ZL.opt.inrementHide))) then
											needWidth = needWidth + startbidColumnWidth
										end
										if (ZL.opt.functionColumnHide or (ZL.opt.startBtnHide and ZL.opt.pauseBtnHide and ZL.opt.countdownBtnHide and
										ZL.opt.packageBtnHide and ZL.opt.reverseBidBtnHide and ZL.opt.modifyBidBtnHide and ZL.opt.syncBtnHide and ZL.opt.delAuctionBtnHide)) then
											if (totalWidth - functionColumnWidth) >= needWidth then
												AuctionFrame:SetWidth(width - functionColumnWidth)
											else
												AuctionFrame:Update()
											end
										else
											if width + functionColumnWidth <= GetScreenWidth()-30 then
												AuctionFrame:SetWidth(width + functionColumnWidth)
											else
												AuctionFrame:Update()
											end
										end
									end,
									get = function() return ZL.opt.functionColumnHide end,
									width = "twoThirds",
									order = 3,
									-- disabled = function () return (not PlayerIsML()) end,
								},
							},
						},
						functionHide = {
							dialogInline = true,
							type = "group",
							name = "隐藏信息",  --隐藏功能按钮
							order = 2,
							args={
								itemLevelHide = {
									type = "toggle",
									name = "装等",
									set = function(info, value)
										ZL.opt.itemLevelHide = value
									end,
									get = function() return ZL.opt.itemLevelHide end,
									width = "twoThirds",
									order = 1,
								},
								itemCountHide = {
									type = "toggle",
									name = "数量",
									desc = "数量1默认隐藏",
									set = function(info, value)
										ZL.opt.itemCountHide = value
									end,
									get = function() return ZL.opt.itemCountHide end,
									width = "twoThirds",
									order = 2,
								},
								itemIndexHide = {
									type = "toggle",
									name = "索引号",
									desc = "索引号1默认隐藏\n大于1时表示存在多个相同物品的拍卖记录",
									set = function(info, value)
										ZL.opt.itemIndexHide = value
									end,
									get = function() return ZL.opt.itemIndexHide end,
									width = "twoThirds",
									order = 3,
								},
								itemNameHide = {
									type = "toggle",
									name = "物品名称",
									set = function(info, value)
										ZL.opt.itemNameHide = value
									end,
									get = function() return ZL.opt.itemNameHide end,
									width = "twoThirds",
									order = 4,
								},
								bidEditBoxHide = {
									type = "toggle",
									name = "|cffA335EE出价文本框|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.bidEditBoxHide = value
									end,
									get = function() return ZL.opt.bidEditBoxHide end,
									width = "twoThirds",
									order = 5,
								},
								bidBtnHide = {
									type = "toggle",
									name = "|cffA335EE出价按钮|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.bidBtnHide = value
									end,
									get = function() return ZL.opt.bidBtnHide end,
									width = "twoThirds",
									order = 6,
								},
								bidCountsHide = {
									type = "toggle",
									name = "|cffA335EE竞拍数量|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.bidCountsHide = value
									end,
									get = function() return ZL.opt.bidCountsHide end,
									width = "twoThirds",
									order = 7,
								},
								startBidHide = {
									type = "toggle",
									name = "|cff0070DD起拍价|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.startBidHide = value
									end,
									get = function() return ZL.opt.startBidHide end,
									width = "twoThirds",
									order = 8,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								inrementHide = {
									type = "toggle",
									name = "|cff0070DD加价|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.inrementHide = value
									end,
									get = function() return ZL.opt.inrementHide end,
									width = "twoThirds",
									order = 9,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								startBtnHide = {
									type = "toggle",
									name = "|cffFF8000开始|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.startBtnHide = value
									end,
									get = function() return ZL.opt.startBtnHide end,
									width = "twoThirds",
									order = 10,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								pauseBtnHide = {
									type = "toggle",
									name = "|cffFF8000暂停|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.pauseBtnHide = value
									end,
									get = function() return ZL.opt.pauseBtnHide end,
									width = "twoThirds",
									order = 11,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								countdownBtnHide = {
									type = "toggle",
									name = "|cffFF8000倒数|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.countdownBtnHide = value
									end,
									get = function() return ZL.opt.countdownBtnHide end,
									width = "twoThirds",
									order = 12,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								packageBtnHide = {
									type = "toggle",
									name = "|cffFF8000打包|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.packageBtnHide = value
									end,
									get = function() return ZL.opt.packageBtnHide end,
									width = "twoThirds",
									order = 13,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								reverseBidBtnHide = {
									type = "toggle",
									name = "|cffFF8000撤销出价|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.reverseBidBtnHide = value
									end,
									get = function() return ZL.opt.reverseBidBtnHide end,
									width = "twoThirds",
									order = 14,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								modifyBidBtnHide = {
									type = "toggle",
									name = "|cffFF8000修改出价|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.modifyBidBtnHide = value
									end,
									get = function() return ZL.opt.modifyBidBtnHide end,
									width = "twoThirds",
									order = 15,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								syncBtnHide = {
									type = "toggle",
									name = "|cffFF8000同步|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.syncBtnHide = value
									end,
									get = function() return ZL.opt.syncBtnHide end,
									width = "twoThirds",
									order = 16,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								delAuctionBtnHide = {
									type = "toggle",
									name = "|cffFF8000删除|r",
									hidden = true,
									set = function(info, value)
										ZL.opt.delAuctionBtnHide = value
									end,
									get = function() return ZL.opt.delAuctionBtnHide end,
									width = "twoThirds",
									order = 17,
									-- disabled = function () return (not PlayerIsML()) end,
								},
							},
						},
						floatContentHide = {
							dialogInline = true,
							type = "group",
							name = "悬浮窗内容隐藏",
							order = 3,
							args={
								floatBidFrameHide = {
									type = "toggle",
									name = "出价",
									set = function(info, value)
										ZL.opt.floatBidFrameHide = value
										
									end,
									get = function() return ZL.opt.floatBidFrameHide end,
									width = "twoThirds",
									order = 1,
								},
								floatStartBidFrameHide = {
									type = "toggle",
									name = "起拍价/加价",
									set = function(info, value)
										ZL.opt.floatStartBidFrameHide = value
										
									end,
									get = function() return ZL.opt.floatStartBidFrameHide end,
									width = "twoThirds",
									order = 2,
									-- disabled = function () return (not PlayerIsML()) end,
								},
								floatFunctionFrameHide = {
									type = "toggle",
									name = "功能按钮",
									set = function(info, value)
										ZL.opt.floatFunctionFrameHide = value
										
									end,
									get = function() return ZL.opt.floatFunctionFrameHide end,
									width = "twoThirds",
									order = 3,
									-- disabled = function () return (not PlayerIsML()) end,
								},
							},
						},
					},
				},
			},
		},
		tooltip = {
			type = "group",
			name = "鼠标提示",
			order = 5,
			args = {
				auctionStateTip = {
					type = "toggle",
					name = "拍卖状态",
					desc = "鼠标移动到背包物品，如果已创建拍卖，则提示当前拍卖状态",
					width = 0.7,
					order = 1,
					set = function(info, value)
						ZL.opt.auctionStateTip = value
					end,
					get = function() return ZL.opt.auctionStateTip end,
				},
				historyMaxAndMin = {
					type = "toggle",
					name = "历史成交价",
					desc = "优先展示本服本阵营数据，如没有则展示所有服务器和阵营数据",
					width = 0.7,
					order = 2,
					set = function(info, value)
						ZL.opt.historyMaxAndMin = value
					end,
					get = function() return ZL.opt.historyMaxAndMin end,
				},
				historyTrendChart = {
					type = "toggle",
					name = "成交趋势图",
					desc = "优先展示本服本阵营数据，如没有则展示所有服务器和阵营数据",
					width = 0.7,
					order = 3,
					set = function(info, value)
						ZL.opt.historyTrendChart = value
					end,
					get = function() return ZL.opt.historyTrendChart end,
				},
			},
		},
		dataSave = {
			type = "group",
			name = "数据设置",
			order = 6,
			args = {
				header2 = {
					type = "header",
					name = "数据保存",
					order = 0.6,
					width = "full",
				},
				tipsDescription1 = {
					type = "description",
					name = "|cff00ff00拍卖记录|r(建议30天)",
					order = 1,
					width = "full",
					fontSize = "medium",
				},
				tipsDescription2 = {
					type = "description",
					name = "保存最近",
					order = 2,
					width = 0.4,
					fontSize = "medium",
				},
				autoClearHistoryDays = {
					type = "select",
					name = "",
					order = 3,
					width = 0.5,
					values = function ()
						return ZL.historyDaysList
					end,
					set = function(info, value)
						ZL.opt.autoClearHistoryDays = value
					end,
					get = function()
						return ZL.opt.autoClearHistoryDays
					end,
				},
				tipsDescription3 = {
					type = "description",
					name = " 天拍卖记录",
					order = 4,
					width = 1.5,
					fontSize = "medium",
				},
				tipsDescription31 = {
					type = "description",
					name = function ()
						return "当前存在|cff00ff00" .. #ZL_HISTORY .. "|r条拍卖记录"
					end,
					order = 4.1,
					width = "full",
					fontSize = "medium",
				},
				tipsDescription4 = {
					type = "description",
					name = " ",
					order = 5,
					width = "full",
					fontSize = "medium",
				},
				tipsDescription5 = {
					type = "description",
					name = "|cff00ff00成交记录|r(建议60天)",
					order = 6,
					width = "full",
					fontSize = "medium",
				},
				tipsDescription6 = {
					type = "description",
					name = "保存最近",
					order = 7,
					width = 0.4,
					fontSize = "medium",
				},
				autoClearHistoryIncomeDays = {
					type = "select",
					name = "",
					order = 8,
					width = 0.5,
					values = function ()
						return ZL.historyDaysList
					end,
					set = function(info, value)
						ZL.opt.autoClearHistoryIncomeDays = value
					end,
					get = function()
						return ZL.opt.autoClearHistoryIncomeDays
					end,
				},
				tipsDescription7 = {
					type = "description",
					name = " 天成交记录",
					order = 9,
					width = 1.5,
					fontSize = "medium",
				},
				tipsDescription8 = {
					type = "description",
					name = "展示最近",
					order = 10,
					width = 0.4,
					fontSize = "medium",
				},
				showIncomeDays = {
					type = "select",
					name = "",
					order = 11,
					width = 0.5,
					values = function ()
						return ZL.historyDaysList
					end,
					set = function(info, value)
						ZL.opt.showIncomeDays = value
					end,
					get = function()
						return ZL.opt.showIncomeDays
					end,
				},
				tipsDescription9 = {
					type = "description",
					name = " 天成交记录",
					order = 12,
					width = 1.5,
					fontSize = "medium",
				},
				tipsDescription91 = {
					type = "description",
					name = function ()
						local incomeCounts = 0
						if ZL_Statistics and next(ZL_Statistics, nil) then
							for _, data in pairs(ZL_Statistics) do
								if type(data) == "table" then
									incomeCounts = incomeCounts + #data["IncomeList"]
								end
							end
						end
						return "当前存在|cff00ff00" .. incomeCounts .. "|r条成交记录"
					end,
					order = 9.1,
					width = "full",
					fontSize = "medium",
				},
				tipsDescription10 = {
					type = "description",
					name = "  ",
					order = 13,
					width = "full",
					fontSize = "medium",
				},
				tipsDescription11 = {
					type = "description",
					name = "|cff00ff00提示：|r\n拍卖记录和成交记录是2个独立的数据库，拍卖记录删除后不会影响成交记录；\n数据多的时候会占用过多内存，请根据自己的电脑配置设置保存记录天数；",
					order = 14,
					width = "full",
					fontSize = "medium",
				},
			},
		},
		rolesOverView = {
			type = "group",
			name = "角色总览",
			order = 7,
			args = {
				bindNewRoles = {
					dialogInline = false,
					type = "group",
					name = "角色",
					order = 1,
					args = {
						header1 = {
							type = "header",
							name = "同步不同战网子账号之间数据",
							order = 0.1,
							width = "full",
						},
						rolesRefuse = {
							type = "toggle",
							name = "阻止绑定邀请",
							desc = "阻止所有数据共享邀请",
							width = "full",
							set = function(info, value) ZL.glb.rolesRefuse = value end,
							get = function() return ZL.glb.rolesRefuse end,
							order = 0.11,
						},
						addPlayerName = {
							type = "input",
							name = "添加账号(|cffffffff请输入其他子账号当前服务器已登录的角色名|r)",
							order = 0.2,
							multiline = false,
							get = function()
								return ""
							end,
							set = function(info, value)
								ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.hidden = false
								if not next(RolesOverView["owner"], nil) then
									ZL.GetOwnRolesData()
								end
								local syncKey = GetRealmName() .. ":" .. select(2, UnitFactionGroup("player")) .. ":" .. value
								
								--判断是否已经绑定过
								if RolesOverView.syncKey[syncKey] then
									ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = value .. "已绑定过！"
									return
								elseif value == UnitName("player") then
									--判断是否是自己
									ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = "不允许添加自己！"
									return
								end
								local function startconnect()
									local timeout = GetTime() + 60
									local data = {
										type = "addnew",
										playerName = ZL.GetClassColorName(UnitName("player")),
										rolesData = RolesOverView.owner,
										syncData = RolesOverView.sync,
										OwnRolesSyncKey = select(3, ZL.GetOwnRolesSyncKey()),
										timeout = timeout,
									}
									MyAddon:TransmitAddonInfo2("AUTOAUC ROLES", data, "WHISPER", value)
									ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = "正在连接" .. value .. "，倒数：|cff00ff0060|r"
									--60秒内判断是否收到回应
									C_Timer.NewTicker(1, function (self)
										local remaining = ceil(timeout - GetTime())
										if remaining > 0 then
											if ZL.RequestReceived[value] == nil then
												ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = "正在连接" .. value .. "，倒数：|cff00ff00" .. remaining .. "|r"
											elseif ZL.RequestReceived[value] == true then
												ZL.RequestReceived[value] = nil
												self:Cancel()
												ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = value .. "|cff00ff00绑定成功|r"
											elseif ZL.RequestReceived[value] == false then
												ZL.RequestReceived[value] = nil
												self:Cancel()
												ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = value .. "|cffff0000已拒绝了你的请求！|r"
											end
										else
											self:Cancel()
											ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name =  value .. "|cffff0000连接超时！|r"
										end
										LibStub("AceConfigRegistry-3.0"):NotifyChange("金团拍卖助手")
									end)
								end
								local wasFriend = C_FriendList.GetFriendInfo(value)
								if wasFriend then
									if wasFriend.connected then
										startconnect()
									else
										ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = value .."不在线，无法添加!"
										LibStub("AceConfigRegistry-3.0"):NotifyChange("金团拍卖助手")
									end
								else
									--不是好友，通过异步方式添加好友来判断
									local function tempIsOnline()
										if ZL.IsOnline(value, nil, true) then
											startconnect()
										else
											local _info = C_FriendList.GetFriendInfo(value)
											if _info then
												ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = value .."不在线，无法添加!"
												C_Timer.After(1, function ()
													C_FriendList.RemoveFriend(value)
												end)
											else
												ZL.options.args.rolesOverView.args.bindNewRoles.args.tipsDescription1.name = "未找到|cffff0000" .. value .."|r，请确认名字输入是否正确！"
											end
										end
										LibStub("AceConfigRegistry-3.0"):NotifyChange("金团拍卖助手")
									end
									--添加好友线程每次只能存在一个，固定为："coroutineIsOnline"
									ZL.CreateSyncRolesThread(tempIsOnline)
								end
								LibStub("AceConfigRegistry-3.0"):NotifyChange("金团拍卖助手")
							end,
							width = "full",
						},
						tipsDescription1 = {
							type = "description",
							name = "",
							order = 0.3,
							width = "full",
							fontSize = "medium",
							hidden = true,
						},
						tipsDescription2 = {
							type = "description",
							name = "已连接账号",
							order = 0.4,
							width = "full",
							fontSize = "medium",
							hidden = true,
						},
						tipsDescription3 = {
							type = "description",
							name = " ",
							order = 0.5,
							width = "full",
							fontSize = "medium",
						},
						header2 = {
							type = "header",
							name = "角色信息",
							order = 2,
							width = "full",
						},
						realmName = {
							type = "toggle",
							name = "|cfffa8da5服务器|r",
							desc = "服务器",
							width = 0.55,
							set = function(info, value) ZL.glb.realmName = value end,
							get = function() ZL.RolesOverViewFrame:Update() return ZL.glb.realmName end,
							order = 3,
						},
						unitLevel = {
							type = "toggle",
							name = "|cfffa8da5等级|r",
							desc = "角色等级",
							width = 0.55,
							set = function(info, value) ZL.glb.unitLevel = value end,
							get = function() return ZL.glb.unitLevel end,
							order = 3,
						},
						itemLevel = {
							type = "toggle",
							name = "|cfffa8da5装等|r",
							desc = "装备等级",
							width = 0.55,
							set = function(info, value) ZL.glb.itemLevel = value end,
							get = function() return ZL.glb.itemLevel end,
							order = 4,
						},
					},
				},
				raidInstance = {
					dialogInline = false,
					type = "group",
					name = "团本副本",
					order = 2,
					args = {
						header1 = {
							type = "header",
							name = "|cffffffff巫妖王之怒|r",
							order = 1,
							width = "full",
						},
						RS25 = {
							type = "toggle",
							name = "|cff9dcf9f红玉25|r",
							desc = "25人红玉圣殿",
							width = 0.55,
							set = function(info, value) ZL.glb.RS25 = value end,
							get = function() ZL.RolesOverViewFrame:Update() return ZL.glb.RS25 end,
							order = 2,
						},
						RS10 = {
							type = "toggle",
							name = "|cff9dcf9f红玉10|r",
							desc = "10人红玉圣殿",
							width = 0.55,
							set = function(info, value) ZL.glb.RS10 = value end,
							get = function() return ZL.glb.RS10 end,
							order = 3,
						},
						ICC25 = {
							type = "toggle",
							name = "|cff9dcf9fICC25|r",
							desc = "25人冰冠堡垒",
							width = 0.55,
							set = function(info, value) ZL.glb.ICC25 = value end,
							get = function() return ZL.glb.ICC25 end,
							order = 4,
						},
						ICC10 = {
							type = "toggle",
							name = "|cff9dcf9fICC10|r",
							desc = "10人冰冠堡垒",
							width = 0.55,
							set = function(info, value) ZL.glb.ICC10 = value end,
							get = function() return ZL.glb.ICC10 end,
							order = 5,
						},
						TOC25 = {
							type = "toggle",
							name = "|cff9dcf9fTOC25|r",
							desc = "25人十字军的试炼",
							width = 0.55,
							set = function(info, value) ZL.glb.TOC25 = value end,
							get = function() return ZL.glb.TOC25 end,
							order = 6,
						},
						TOC10 = {
							type = "toggle",
							name = "|cff9dcf9fTOC10|r",
							desc = "10人十字军的试炼",
							width = 0.55,
							set = function(info, value) ZL.glb.TOC10 = value end,
							get = function() return ZL.glb.TOC10 end,
							order = 7,
						},
						OL25 = {
							type = "toggle",
							name = "|cff9dcf9f黑龙25|r",
							desc = "25人奥妮克希亚的巢穴",
							width = 0.55,
							set = function(info, value) ZL.glb.OL25 = value end,
							get = function() return ZL.glb.OL25 end,
							order = 8,
						},
						OL10 = {
							type = "toggle",
							name = "|cff9dcf9f黑龙10|r",
							desc = "10人奥妮克希亚的巢穴",
							width = 0.55,
							set = function(info, value) ZL.glb.OL10 = value end,
							get = function() return ZL.glb.OL10 end,
							order = 9,
						},
						ULD25 = {
							type = "toggle",
							name = "|cff9dcf9fULD25|r",
							desc = "25人奥杜尔",
							width = 0.55,
							set = function(info, value) ZL.glb.ULD25 = value end,
							get = function() return ZL.glb.ULD25 end,
							order = 10,
						},
						ULD10 = {
							type = "toggle",
							name = "|cff9dcf9fULD10|r",
							desc = "10人奥杜尔",
							width = 0.55,
							set = function(info, value) ZL.glb.ULD10 = value end,
							get = function() return ZL.glb.ULD10 end,
							order = 11,
						},
						NAXX25 = {
							type = "toggle",
							name = "|cff9dcf9fNAXX25|r",
							desc = "25人纳克萨玛斯",
							width = 0.55,
							set = function(info, value) ZL.glb.NAXX25 = value end,
							get = function() return ZL.glb.NAXX25 end,
							order = 12,
						},
						NAXX10 = {
							type = "toggle",
							name = "|cff9dcf9fNAXX10|r",
							desc = "10人纳克萨玛斯",
							width = 0.55,
							set = function(info, value) ZL.glb.NAXX10 = value end,
							get = function() return ZL.glb.NAXX10 end,
							order = 13,
						},
						EOE25 = {
							type = "toggle",
							name = "|cff9dcf9f蓝龙25|r",
							desc = "25人永恒之眼",
							width = 0.55,
							set = function(info, value) ZL.glb.EOE25 = value end,
							get = function() return ZL.glb.EOE25 end,
							order = 14,
						},
						EOE10 = {
							type = "toggle",
							name = "|cff9dcf9f蓝龙10|r",
							desc = "10人永恒之眼",
							width = 0.55,
							set = function(info, value) ZL.glb.EOE10 = value end,
							get = function() return ZL.glb.EOE10 end,
							order = 15,
						},
						OS25 = {
							type = "toggle",
							name = "|cff9dcf9f黑曜石25|r",
							desc = "25人黑曜石圣殿",
							width = 0.55,
							set = function(info, value) ZL.glb.OS25 = value end,
							get = function() return ZL.glb.OS25 end,
							order = 16,
						},
						OS10 = {
							type = "toggle",
							name = "|cff9dcf9f黑曜石10|r",
							desc = "10人黑曜石圣殿",
							width = 0.55,
							set = function(info, value) ZL.glb.OS10 = value end,
							get = function() return ZL.glb.OS10 end,
							order = 17,
						},
						VOA25 = {
							type = "toggle",
							name = "|cff9dcf9f宝库25|r",
							desc = "25人阿尔卡冯的宝库",
							width = 0.55,
							set = function(info, value) ZL.glb.VOA25 = value end,
							get = function() return ZL.glb.VOA25 end,
							order = 18,
						},
						VOA10 = {
							type = "toggle",
							name = "|cff9dcf9f宝库10|r",
							desc = "10人阿尔卡冯的宝库",
							width = 0.55,
							set = function(info, value) ZL.glb.VOA10 = value end,
							get = function() return ZL.glb.VOA10 end,
							order = 19,
						},
						header2 = {
							type = "header",
							name = "|cffffffff燃烧的远征|r",
							order = 20,
							width = "full",
						},
						SW25 = {
							type = "toggle",
							name = "|cfffeb6fb太阳井|r",
							desc = "25人太阳之井高地",
							width = 0.55,
							set = function(info, value) ZL.glb.SW25 = value end,
							get = function() return ZL.glb.SW25 end,
							order = 21,
						},
						BT25 = {
							type = "toggle",
							name = "|cfffeb6fb黑庙|r",
							desc = "25人黑暗神殿",
							width = 0.55,
							set = function(info, value) ZL.glb.BT25 = value end,
							get = function() return ZL.glb.BT25 end,
							order = 22,
						},
						HS25 = {
							type = "toggle",
							name = "|cfffeb6fb海山|r",
							desc = "25人海加尔峰",
							width = 0.55,
							set = function(info, value) ZL.glb.HS25 = value end,
							get = function() return ZL.glb.HS25 end,
							order = 23,
						},
						TK25 = {
							type = "toggle",
							name = "|cfffeb6fb风暴|r",
							desc = "25人风暴要塞",
							width = 0.55,
							set = function(info, value) ZL.glb.TK25 = value end,
							get = function() return ZL.glb.TK25 end,
							order = 24,
						},
						SSC25 = {
							type = "toggle",
							name = "|cfffeb6fb毒蛇|r",
							desc = "25人毒蛇神殿",
							width = 0.55,
							set = function(info, value) ZL.glb.SSC25 = value end,
							get = function() return ZL.glb.SSC25 end,
							order = 25,
						},
						GLR25 = {
							type = "toggle",
							name = "|cfffeb6fb格鲁尔|r",
							desc = "25人格鲁尔的巢穴",
							width = 0.55,
							set = function(info, value) ZL.glb.GLR25 = value end,
							get = function() return ZL.glb.GLR25 end,
							order = 26,
						},
						ML25 = {
							type = "toggle",
							name = "|cfffeb6fb玛胖|r",
							desc = "25人玛瑟里顿的巢穴",
							width = 0.55,
							set = function(info, value) ZL.glb.ML25 = value end,
							get = function() return ZL.glb.ML25 end,
							order = 27,
						},
						ZAM10 = {
							type = "toggle",
							name = "|cfffeb6fb祖阿曼|r",
							desc = "10人祖阿曼",
							width = 0.55,
							set = function(info, value) ZL.glb.ZAM10 = value end,
							get = function() return ZL.glb.ZAM10 end,
							order = 28,
						},
						KLZ10 = {
							type = "toggle",
							name = "|cfffeb6fb卡拉赞|r",
							desc = "10人卡拉赞",
							width = 0.55,
							set = function(info, value) ZL.glb.KLZ10 = value end,
							get = function() return ZL.glb.KLZ10 end,
							order = 29,
						},
						header3 = {
							type = "header",
							name = "|cffffffff经典旧世|r",
							order = 30,
							width = "full",
						},
						NAXX40 = {
							type = "toggle",
							name = "|cff39fe63NAXX|r",
							desc = "40人纳克萨玛斯",
							width = 0.55,
							set = function(info, value) ZL.glb.NAXX40 = value end,
							get = function() return ZL.glb.NAXX40 end,
							order = 31,
						},
						TAQ40 = {
							type = "toggle",
							name = "|cff39fe63TAQ|r",
							desc = "40人安其拉",
							width = 0.55,
							set = function(info, value) ZL.glb.TAQ40 = value end,
							get = function() return ZL.glb.TAQ40 end,
							order = 32,
						},
						FX20 = {
							type = "toggle",
							name = "|cff39fe63废墟|r",
							desc = "20人安其拉废墟",
							width = 0.55,
							set = function(info, value) ZL.glb.FX20 = value end,
							get = function() return ZL.glb.FX20 end,
							order = 33,
						},
						ZG20 = {
							type = "toggle",
							name = "|cff39fe63祖格|r",
							desc = "20人祖尔格拉布",
							width = 0.55,
							set = function(info, value) ZL.glb.ZG20 = value end,
							get = function() return ZL.glb.ZG20 end,
							order = 34,
						},
						BWL40 = {
							type = "toggle",
							name = "|cff39fe63BWL|r",
							desc = "40人黑翼之巢",
							width = 0.55,
							set = function(info, value) ZL.glb.BWL40 = value end,
							get = function() return ZL.glb.BWL40 end,
							order = 35,
						},
						MC40 = {
							type = "toggle",
							name = "|cff39fe63MC|r",
							desc = "40人熔火之心",
							width = 0.55,
							set = function(info, value) ZL.glb.MC40 = value end,
							get = function() return ZL.glb.MC40 end,
							order = 36,
						},
						OL40 = {
							type = "toggle",
							name = "|cff39fe63黑龙|r",
							desc = "40人奥妮克希亚的巢穴",
							width = 0.55,
							set = function(info, value) ZL.glb.OL40 = value end,
							get = function() return ZL.glb.OL40 end,
							order = 37,
						},
					},
				},
				fiveHeroInstance = {
					dialogInline = false,
					type = "group",
					name = "5人英雄本",
					order = 3,
					args = {
						header1 = {
							type = "header",
							name = "|cffffffff巫妖王之怒|r",
							order = 1,
							width = "full",
						},
						HL5 = {
							type = "toggle",
							name = "|cff8bd193洪炉|r",
							desc = "灵魂洪炉",
							width = 0.55,
							set = function(info, value) ZL.glb.HL5 = value end,
							get = function() ZL.RolesOverViewFrame:Update() return ZL.glb.HL5 end,
							order = 2,
						},
						KK5 = {
							type = "toggle",
							name = "|cff8bd193矿坑|r",
							desc = "萨隆矿坑",
							width = 0.55,
							set = function(info, value) ZL.glb.KK5 = value end,
							get = function() return ZL.glb.KK5 end,
							order = 3,
						},
						YX5 = {
							type = "toggle",
							name = "|cff8bd193映像|r",
							desc = "映像大厅",
							width = 0.55,
							set = function(info, value) ZL.glb.YX5 = value end,
							get = function() return ZL.glb.YX5 end,
							order = 4,
						},
						GJ5 = {
							type = "toggle",
							name = "|cff8bd193冠军|r",
							desc = "冠军的试炼",
							width = 0.55,
							set = function(info, value) ZL.glb.GJ5 = value end,
							get = function() return ZL.glb.GJ5 end,
							order = 5,
						},
						WX5 = {
							type = "toggle",
							name = "|cff8bd193乌下|r",
							desc = "乌特加德城堡",
							width = 0.55,
							set = function(info, value) ZL.glb.WX5 = value end,
							get = function() return ZL.glb.WX5 end,
							order = 6,
						},
						WS5 = {
							type = "toggle",
							name = "|cff8bd193乌巅|r",
							desc = "乌特加德之巅",
							width = 0.55,
							set = function(info, value) ZL.glb.WS5 = value end,
							get = function() return ZL.glb.WS5 end,
							order = 7,
						},
						MS5 = {
							type = "toggle",
							name = "|cff8bd193魔枢|r",
							desc = "魔枢",
							width = 0.55,
							set = function(info, value) ZL.glb.MS5 = value end,
							get = function() return ZL.glb.MS5 end,
							order = 8,
						},
						MH5 = {
							type = "toggle",
							name = "|cff8bd193魔环|r",
							desc = "魔环",
							width = 0.55,
							set = function(info, value) ZL.glb.MH5 = value end,
							get = function() return ZL.glb.MH5 end,
							order = 9,
						},
						ZZ5 = {
							type = "toggle",
							name = "|cff8bd193蜘蛛|r",
							desc = "艾卓-尼鲁布",
							width = 0.55,
							set = function(info, value) ZL.glb.ZZ5 = value end,
							get = function() return ZL.glb.ZZ5 end,
							order = 10,
						},
						WG5 = {
							type = "toggle",
							name = "|cff8bd193王国|r",
							desc = "安卡赫特：古代王国",
							width = 0.55,
							set = function(info, value) ZL.glb.WG5 = value end,
							get = function() return ZL.glb.WG5 end,
							order = 11,
						},
						YS5 = {
							type = "toggle",
							name = "|cff8bd193要塞|r",
							desc = "达克萨隆要塞",
							width = 0.55,
							set = function(info, value) ZL.glb.YS5 = value end,
							get = function() return ZL.glb.YS5 end,
							order = 12,
						},
						GDK5 = {
							type = "toggle",
							name = "|cff8bd193古达克|r",
							desc = "古达克",
							width = 0.55,
							set = function(info, value) ZL.glb.GDK5 = value end,
							get = function() return ZL.glb.GDK5 end,
							order = 13,
						},
						YSDT5 = {
							type = "toggle",
							name = "|cff8bd193岩石|r",
							desc = "岩石大厅",
							width = 0.55,
							set = function(info, value) ZL.glb.YSDT5 = value end,
							get = function() return ZL.glb.YSDT5 end,
							order = 14,
						},
						SDDT5 = {
							type = "toggle",
							name = "|cff8bd193闪电|r",
							desc = "闪电大厅",
							width = 0.55,
							set = function(info, value) ZL.glb.SDDT5 = value end,
							get = function() return ZL.glb.SDDT5 end,
							order = 15,
						},
						ZLLJY5 = {
							type = "toggle",
							name = "|cff8bd193监狱|r",
							desc = "紫罗兰监狱",
							width = 0.55,
							set = function(info, value) ZL.glb.ZLLJY5 = value end,
							get = function() return ZL.glb.ZLLJY5 end,
							order = 16,
						},
						STSM5 = {
							type = "toggle",
							name = "|cff8bd193STSM|r",
							desc = "净化斯坦索姆",
							width = 0.55,
							set = function(info, value) ZL.glb.STSM5 = value end,
							get = function() return ZL.glb.STSM5 end,
							order = 17,
						},
						header2 = {
							type = "header",
							name = "|cffffffff燃烧的远征|r",
							order = 18,
							width = "full",
						},
						DYHCQ5 = {
							type = "toggle",
							name = "|cffc0cf18城墙|r",
							desc = "地狱火城墙",
							width = 0.55,
							set = function(info, value) ZL.glb.DYHCQ5 = value end,
							get = function() return ZL.glb.DYHCQ5 end,
							order = 19,
						},
						XXRL5 = {
							type = "toggle",
							name = "|cffc0cf18熔炉|r",
							desc = "鲜血熔炉",
							width = 0.55,
							set = function(info, value) ZL.glb.XXRL5 = value end,
							get = function() return ZL.glb.XXRL5 end,
							order = 20,
						},
						PSDT5 = {
							type = "toggle",
							name = "|cffc0cf18破碎|r",
							desc = "破碎大厅",
							width = 0.55,
							set = function(info, value) ZL.glb.PSDT5 = value end,
							get = function() return ZL.glb.PSDT5 end,
							order = 21,
						},
						FLLM5 = {
							type = "toggle",
							name = "|cffc0cf18法力|r",
							desc = "法力陵墓",
							width = 0.55,
							set = function(info, value) ZL.glb.FLLM5 = value end,
							get = function() return ZL.glb.FLLM5 end,
							order = 22,
						},
						AJNDX5 = {
							type = "toggle",
							name = "|cffc0cf18地穴|r",
							desc = "奥金尼地穴",
							width = 0.55,
							set = function(info, value) ZL.glb.AJNDX5 = value end,
							get = function() return ZL.glb.AJNDX5 end,
							order = 23,
						},
						STKDT5 = {
							type = "toggle",
							name = "|cffc0cf18塞泰克|r",
							desc = "塞泰克大厅",
							width = 0.55,
							set = function(info, value) ZL.glb.STKDT5 = value end,
							get = function() return ZL.glb.STKDT5 end,
							order = 24,
						},
						AYMG5 = {
							type = "toggle",
							name = "|cffc0cf18迷宫|r",
							desc = "暗影迷宫",
							width = 0.55,
							set = function(info, value) ZL.glb.AYMG5 = value end,
							get = function() return ZL.glb.AYMG5 end,
							order = 25,
						},
						NLWL5 = {
							type = "toggle",
							name = "|cffc0cf18围栏|r",
							desc = "奴隶围栏",
							width = 0.55,
							set = function(info, value) ZL.glb.NLWL5 = value end,
							get = function() return ZL.glb.NLWL5 end,
							order = 26,
						},
						YAZZ5 = {
							type = "toggle",
							name = "|cffc0cf18幽暗|r",
							desc = "幽暗沼泽",
							width = 0.55,
							set = function(info, value) ZL.glb.YAZZ5 = value end,
							get = function() return ZL.glb.YAZZ5 end,
							order = 27,
						},
						ZQDJ5 = {
							type = "toggle",
							name = "|cffc0cf18蒸汽|r",
							desc = "蒸汽地窟",
							width = 0.55,
							set = function(info, value) ZL.glb.ZQDJ5 = value end,
							get = function() return ZL.glb.ZQDJ5 end,
							order = 28,
						},
						SR5 = {
							type = "toggle",
							name = "|cffc0cf18救萨尔|r",
							desc = "旧希尔斯布莱德丘陵",
							width = 0.55,
							set = function(info, value) ZL.glb.SR5 = value end,
							get = function() return ZL.glb.SR5 end,
							order = 29,
						},
						HSZZ5 = {
							type = "toggle",
							name = "|cffc0cf1818M|r",
							desc = "黑色沼泽",
							width = 0.55,
							set = function(info, value) ZL.glb.HSZZ5 = value end,
							get = function() return ZL.glb.HSZZ5 end,
							order = 30,
						},
						JMJY5 = {
							type = "toggle",
							name = "|cffc0cf18监狱|r",
							desc = "禁魔监狱",
							width = 0.55,
							set = function(info, value) ZL.glb.JMJY5 = value end,
							get = function() return ZL.glb.JMJY5 end,
							order = 31,
						},
						STC5 = {
							type = "toggle",
							name = "|cffc0cf18生态船|r",
							desc = "生态船",
							width = 0.55,
							set = function(info, value) ZL.glb.STC5 = value end,
							get = function() return ZL.glb.STC5 end,
							order = 32,
						},
						NYJ5 = {
							type = "toggle",
							name = "|cffc0cf18能源舰|r",
							desc = "能源舰",
							width = 0.55,
							set = function(info, value) ZL.glb.NYJ5 = value end,
							get = function() return ZL.glb.NYJ5 end,
							order = 33,
						},
						MDSPT5 = {
							type = "toggle",
							name = "|cffc0cf18平台|r",
							desc = "魔导师平台",
							width = 0.55,
							set = function(info, value) ZL.glb.MDSPT5 = value end,
							get = function() return ZL.glb.MDSPT5 end,
							order = 34,
						},
					},
				},
				dayAndWeekQuest = {
					dialogInline = false,
					type = "group",
					name = "周长/日常/专业",
					order = 4,
					args = {
						header1 = {
							type = "header",
							name = "|cffffffff周长/日常|r",
							order = 0.1,
							width = "full",
						},
						weekQuest = {
							type = "toggle",
							name = "|cfff58cba周常|r",
							desc = "周长",
							width = 0.55,
							set = function(info, value) ZL.glb.weekQuest = value end,
							get = function() ZL.RolesOverViewFrame:Update() return ZL.glb.weekQuest end,
							order = 1,
						},
						heroDayQuest = {
							type = "toggle",
							name = "|cfff58cba英雄|r",
							desc = "英雄副本日常",
							width = 0.55,
							set = function(info, value) ZL.glb.heroDayQuest = value end,
							get = function() return ZL.glb.heroDayQuest end,
							order = 2,
						},
						taiTanDayQuest = {
							type = "toggle",
							name = "|cfff58cba泰坦|r",
							desc = "泰坦符文协议日常",
							width = 0.55,
							set = function(info, value) ZL.glb.taiTanDayQuest = value end,
							get = function() return ZL.glb.taiTanDayQuest end,
							order = 3,
						},
						zhuBaoDayQuest = {
							type = "toggle",
							name = "|cfff58cba珠宝|r",
							desc = "珠宝日常",
							width = 0.55,
							set = function(info, value) ZL.glb.zhuBaoDayQuest = value end,
							get = function() return ZL.glb.zhuBaoDayQuest end,
							order = 4,
						},
						fishingDayQuest = {
							type = "toggle",
							name = "|cfff58cba钓鱼|r",
							desc = "钓鱼日常",
							width = 0.55,
							set = function(info, value) ZL.glb.fishingDayQuest = value end,
							get = function() return ZL.glb.fishingDayQuest end,
							order = 5,
						},
						cookingDayQuest = {
							type = "toggle",
							name = "|cfff58cba烹饪|r",
							desc = "烹饪日常",
							width = 0.55,
							set = function(info, value) ZL.glb.cookingDayQuest = value end,
							get = function() return ZL.glb.cookingDayQuest end,
							order = 6,
						},
						header2 = {
							type = "header",
							name = "|cffffffff炼金专业|r",
							order = 7,
							width = "full",
						},
						alchemyTransmute = {
							type = "toggle",
							name = "|cff0070de炼金转化|r",
							desc = "炼金转化",
							width = 0.55,
							set = function(info, value) ZL.glb.alchemyTransmute = value end,
							get = function() return ZL.glb.alchemyTransmute end,
							order = 8,
						},
						northrendAlchemyResearch = {
							type = "toggle",
							name = "|cff0070de炼金研究|r",
							desc = "诺森德炼金研究",
							width = 0.55,
							set = function(info, value) ZL.glb.northrendAlchemyResearch = value end,
							get = function() return ZL.glb.northrendAlchemyResearch end,
							order = 9,
						},
						header3 = {
							type = "header",
							name = "|cffffffff裁缝专业|r",
							order = 10,
							width = "full",
						},
						yueBuProfession = {
							type = "toggle",
							name = "|cff0070de月布|r",
							desc = "洗月布",
							width = 0.55,
							set = function(info, value) ZL.glb.yueBuProfession = value end,
							get = function() return ZL.glb.yueBuProfession end,
							order = 11,
						},
						faWenBuProfession = {
							type = "toggle",
							name = "|cff0070de法纹布|r",
							desc = "洗法纹布",
							width = 0.55,
							set = function(info, value) ZL.glb.faWenBuProfession = value end,
							get = function() return ZL.glb.faWenBuProfession end,
							order = 12,
						},
						wuWenBuProfession = {
							type = "toggle",
							name = "|cff0070de乌纹布|r",
							desc = "洗乌纹布",
							width = 0.55,
							set = function(info, value) ZL.glb.wuWenBuProfession = value end,
							get = function() return ZL.glb.wuWenBuProfession end,
							order = 13,
						},
						yueYingBuProfession = {
							type = "toggle",
							name = "|cff0070de月影布|r",
							desc = "洗月影布",
							width = 0.55,
							set = function(info, value) ZL.glb.yueYingBuProfession = value end,
							get = function() return ZL.glb.yueYingBuProfession end,
							order = 14,
						},
						bingChuanBeiBaoProfession = {
							type = "toggle",
							name = "|cff0070de冰川背包|r",
							desc = "冰川背包",
							width = 0.55,
							set = function(info, value) ZL.glb.bingChuanBeiBaoProfession = value end,
							get = function() return ZL.glb.bingChuanBeiBaoProfession end,
							order = 15,
						},
						header4 = {
							type = "header",
							name = "|cffffffff雕文专业|r",
							order = 16,
							width = "full",
						},
						daDiaoWenProfession = {
							type = "toggle",
							name = "|cff0070de大雕文|r",
							desc = "诺森德铭文研究",
							width = 0.55,
							set = function(info, value) ZL.glb.daDiaoWenProfession = value end,
							get = function() return ZL.glb.daDiaoWenProfession end,
							order = 17,
						},
						xiaoDiaoWenProfession = {
							type = "toggle",
							name = "|cff0070de小雕文|r",
							desc = "小型雕文研究",
							width = 0.55,
							set = function(info, value) ZL.glb.xiaoDiaoWenProfession = value end,
							get = function() return ZL.glb.xiaoDiaoWenProfession end,
							order = 18,
						},
						header5 = {
							type = "header",
							name = "|cffffffff珠宝专业|r",
							order = 18,
							width = "full",
						},
						bingDongLingZhuProfession = {
							type = "toggle",
							name = "|cff0070de冰冻棱柱|r",
							desc = "冰冻棱柱",
							width = 0.55,
							set = function(info, value) ZL.glb.bingDongLingZhuProfession = value end,
							get = function() return ZL.glb.bingDongLingZhuProfession end,
							order = 19,
						},
						header6 = {
							type = "header",
							name = "|cffffffff采矿专业|r",
							order = 20,
							width = "full",
						},
						taiTanJingGangProfession = {
							type = "toggle",
							name = "|cff0070de泰坦精钢|r",
							desc = "熔炼泰坦精钢",
							width = 0.55,
							set = function(info, value) ZL.glb.taiTanJingGangProfession = value end,
							get = function() return ZL.glb.taiTanJingGangProfession end,
							order = 21,
						},
					},
				},
				currencyRoles = {
					dialogInline = false,
					type = "group",
					name = "货币",
					order = 5,
					args = {
						hanBingCurrency = {
							type = "toggle",
							name = "|cff40c7eb寒冰纹章|r",
							desc = "寒冰纹章",
							width = 0.55,
							set = function(info, value) ZL.glb.hanBingCurrency = value end,
							get = function() ZL.RolesOverViewFrame:Update() return ZL.glb.hanBingCurrency end,
							order = 1,
						},
						kaiXuanCurrency = {
							type = "toggle",
							name = "|cff40c7eb凯旋纹章|r",
							desc = "凯旋纹章",
							width = 0.55,
							set = function(info, value) ZL.glb.kaiXuanCurrency = value end,
							get = function() return ZL.glb.kaiXuanCurrency end,
							order = 2,
						},
						zhengFuCurrency = {
							type = "toggle",
							name = "|cff40c7eb征服纹章|r",
							desc = "征服纹章",
							width = 0.55,
							set = function(info, value) ZL.glb.zhengFuCurrency = value end,
							get = function() return ZL.glb.zhengFuCurrency end,
							order = 3,
						},
						yongQiCurrency = {
							type = "toggle",
							name = "|cff40c7eb勇气纹章|r",
							desc = "勇气纹章",
							width = 0.55,
							set = function(info, value) ZL.glb.yongQiCurrency = value end,
							get = function() return ZL.glb.yongQiCurrency end,
							order = 4,
						},
						yingXiongCurrency = {
							type = "toggle",
							name = "|cff40c7eb英雄纹章|r",
							desc = "英雄纹章",
							width = 0.55,
							set = function(info, value) ZL.glb.yingXiongCurrency = value end,
							get = function() return ZL.glb.yingXiongCurrency end,
							order = 5,
						},
						gongZhengCurrency = {
							type = "toggle",
							name = "|cff40c7eb公正徽章|r",
							desc = "公正徽章",
							width = 0.55,
							set = function(info, value) ZL.glb.gongZhengCurrency = value end,
							get = function() return ZL.glb.gongZhengCurrency end,
							order = 6,
						},
						zhuBaoCurrency = {
							type = "toggle",
							name = "|cff40c7eb珠宝硬币|r",
							desc = "达拉然珠宝匠硬币",
							width = 0.55,
							set = function(info, value) ZL.glb.zhuBaoCurrency = value end,
							get = function() return ZL.glb.zhuBaoCurrency end,
							order = 7,
						},
						xieDuZheCurrency = {
							type = "toggle",
							name = "|cff40c7eb亵读者|r",
							desc = "亵读者的天灾石",
							width = 0.55,
							set = function(info, value) ZL.glb.xieDuZheCurrency = value end,
							get = function() return ZL.glb.xieDuZheCurrency end,
							order = 8,
						},
						saiDeLiErCurrency = {
							type = "toggle",
							name = "|cff40c7eb赛德里尔|r",
							desc = "赛德里尔精华",
							width = 0.55,
							set = function(info, value) ZL.glb.saiDeLiErCurrency = value end,
							get = function() return ZL.glb.saiDeLiErCurrency end,
							order = 9,
						},
						guanJunCurrency = {
							type = "toggle",
							name = "|cff40c7eb冠军微记|r",
							desc = "冠军的微记",
							width = 0.55,
							set = function(info, value) ZL.glb.guanJunCurrency = value end,
							get = function() return ZL.glb.guanJunCurrency end,
							order = 10,
						},
						meiShiJiaCurrency = {
							type = "toggle",
							name = "|cff40c7eb美食奖章|r",
							desc = "美食家奖章",
							width = 0.55,
							set = function(info, value) ZL.glb.meiShiJiaCurrency = value end,
							get = function() return ZL.glb.meiShiJiaCurrency end,
							order = 11,
						},
						yanShiShouWeiCurrency = {
							type = "toggle",
							name = "|cff40c7eb岩石守卫|r",
							desc = "岩石守卫者的碎片",
							width = 0.55,
							set = function(info, value) ZL.glb.yanShiShouWeiCurrency = value end,
							get = function() return ZL.glb.yanShiShouWeiCurrency end,
							order = 12,
						},
						jingJiChangCurrency = {
							type = "toggle",
							name = "|cff40c7eb竞技场|r",
							desc = "竞技场点数",
							width = 0.55,
							set = function(info, value) ZL.glb.jingJiChangCurrency = value end,
							get = function() return ZL.glb.jingJiChangCurrency end,
							order = 13,
						},
						rongYuCurrency = {
							type = "toggle",
							name = "|cff40c7eb荣誉点数|r",
							desc = "荣誉点数",
							width = 0.55,
							set = function(info, value) ZL.glb.rongYuCurrency = value end,
							get = function() return ZL.glb.rongYuCurrency end,
							order = 14,
						},
						aoTeLanKeCurrency = {
							type = "toggle",
							name = "|cff40c7eb奥特兰克|r",
							desc = "奥特兰克山谷荣誉奖章",
							width = 0.55,
							set = function(info, value) ZL.glb.aoTeLanKeCurrency = value end,
							get = function() return ZL.glb.aoTeLanKeCurrency end,
							order = 15,
						},
						aLaXiCurrency = {
							type = "toggle",
							name = "|cff40c7eb阿拉希|r",
							desc = "阿拉希盆地荣誉奖章",
							width = 0.55,
							set = function(info, value) ZL.glb.aLaXiCurrency = value end,
							get = function() return ZL.glb.aLaXiCurrency end,
							order = 16,
						},
						zhanGeCurrency = {
							type = "toggle",
							name = "|cff40c7eb战歌|r",
							desc = "战歌峡谷荣誉奖章",
							width = 0.55,
							set = function(info, value) ZL.glb.zhanGeCurrency = value end,
							get = function() return ZL.glb.zhanGeCurrency end,
							order = 17,
						},
						jinBiCurrency = {
							type = "toggle",
							name = "|cff40c7eb金币|r",
							desc = "金币",
							width = 0.55,
							set = function(info, value) ZL.glb.jinBiCurrency = value end,
							get = function() return ZL.glb.jinBiCurrency end,
							order = 18,
						},
					}
				},
			},
		},
		help = {
			type = "group",
			name = "帮助反馈",
			order = 10,
			args = {
				curseforgeURL = {
					type = "input",
					name = "插件下载",
					desc = "也可以在【|cff00ff00网易DD|r】、【|cff00ff00新手盒子|r】、【|cff00ff00大脚客户端|r】、【|cff00ff00黑盒工坊|r】里搜索|cff00ff00AutoAuction|r下载更新",
					order = 1,
					multiline = false,
					get = function()
						return "https://www.curseforge.com/wow/addons/autoauction"
					end,
					set = function(info, value)
						
					end,
					width = "full",
				},
				bilibiliURL = {
					type = "input",
					name = "哔站视频讲解",
					order = 2,
					multiline = false,
					get = function()
						return "https://space.bilibili.com/476889394/channel/series?sid=4434542"
					end,
					set = function(info, value)
						
					end,
					width = "full",
				},
				douyinURL = {
					type = "input",
					name = "抖音视频讲解",
					order = 2.1,
					multiline = false,
					get = function()
						return "https://www.douyin.com/video/7461979939449900338"
					end,
					set = function(info, value)
						
					end,
					width = "full",
				},
				ngaURL = {
					type = "input",
					name = "NGA地址",
					order = 3,
					multiline = false,
					get = function()
						return "https://bbs.nga.cn/read.php?tid=40779551"
					end,
					set = function(info, value)
						
					end,
					width = "full",
				},
				tipsDescription = {
					type = "description",
					name = "|cffCFD100反馈建议|r",
					order = 4,
					width = "full",
					fontSize = "medium",
				},
				QQ = {
					type = "description",
					name = " ",
					order = 5,
					image = function (info)
						return "Interface\\AddOns\\" .. addonName .. "\\Images\\QQ.png", 150, 150
					end,
					width = "normal",
				},
				WX = {
					type = "description",
					name = " ",
					order = 6,
					image = function (info)
						return "Interface\\AddOns\\" .. addonName .. "\\Images\\WX.png", 150, 150
					end,
					width = "normal",
				},
				DY = {
					type = "description",
					name = " ",
					order = 7,
					image = function (info)
						return "Interface\\AddOns\\" .. addonName .. "\\Images\\dy.png", 150, 150
					end,
					width = "normal",
				},
				BILI = {
					type = "description",
					name = " ",
					order = 8,
					image = function (info)
						return "Interface\\AddOns\\" .. addonName .. "\\Images\\bili.png", 150, 150
					end,
					width = "normal",
				},
			},
		},
	},
}


