[
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 Datawhale\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line, and also\n# from the environment for the first two.\nSPHINXOPTS    ?=\nSPHINXBUILD   ?= sphinx-build\nSOURCEDIR     = source\nBUILDDIR      = build\n\n# Put it first so that \"make\" without argument is like \"make help\".\nhelp:\n\t@$(SPHINXBUILD) -M help \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n\n.PHONY: help Makefile\n\n# Catch-all target: route all unknown targets to Sphinx using the new\n# \"make mode\" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).\n%: Makefile\n\t@$(SPHINXBUILD) -M $@ \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n"
  },
  {
    "path": "Markdown/Datawhale.md",
    "content": "# Datawhale\r\n\r\n`Datawhale` 是一个专注于 `AI` 领域的开源组织，希望构建对学习者最有价值的开源社区。\r\n\r\n作为一个由国内外各个高校的教授、学生、企业从业者等创建的开放式组织形态，抱有开源精神和探索精神，愿景：for the learner，和学习者一起成长。\r\n\r\nDatawhale官网：https://datawhale.club/\r\n\r\nDatawhale知乎号：https://www.zhihu.com/people/datawhale2018\r\n\r\n## 微信公众号\r\n\r\n<img src=\".\\src\\datawhale.jpg\" style=\"zoom:33%;\" />\r\n\r\n"
  },
  {
    "path": "Markdown/chap1.md",
    "content": "# 第一章 Excel与数据格式\r\n\r\n## 1.数据缘何而来\r\n\r\nExecel是我们常见的用来进行数据处理的工具，其中Excel文件主要包含有2种格式分别是`xls`或`xlsx`，`xls`和`xlsx`主要区别如下：\r\n\r\n| xls                                   | xlsx                           |\r\n| :------------------------------------ | ------------------------------ |\r\n| 97-2003版                             | 2007之后版                     |\r\n| 只能打开xls格式，无法直接打开xlsx格式 | 可以直接打开xls、xlsx格式      |\r\n| 只有65536行、256列                    | 可以有1048576行、16384列       |\r\n| 占用空间大                            | 占用空间小，运算速度也会快一点 |\r\n\r\n因此，推荐大家使用最新版本的Excel或者WPS进行相关的学习与操作。\r\n\r\n### 1.1 了解Excel\r\n\r\nExcel文每个数据文件叫做工作簿，每个工作簿里面含有多个工作表，每个工作表里面的格子叫做单元格。\r\n\r\n在Excel中点击新建文档后，Excel默认的文档名称是工作簿1，也就是一个Excel文档，就是一个工作簿\r\n\r\n![1.1](.\\src\\chap1\\1.1.png)\r\n\r\n在新建的工作簿中，可以看到左下方有`Sheet1`的标签，每个工作簿里面可以含有多个工作表，Excel表中最大支持255个工作表\r\n\r\n![1.2](.\\src\\chap1\\1.2.png)\r\n\r\n单元格就是工作表中间每一个格子\r\n\r\n![1.3](.\\src\\chap1\\1.3.png)\r\n\r\n在Excel最上方是工具栏，如果希望在Excel中导入第三方插件，可以点击`文件`-->`选项`-->`自定义功能区`点击右侧的√，即可导入相关模块\r\n\r\n![1.5](.\\src\\chap1\\1.5.gif)\r\n\r\n### 1.2 Excel存储格式\r\n\r\nExcel中的数据可以存储为不同的类型格式，其中常用的存储类似分别是xlsx、csv以及txt，一般情况下，csv文件采用是逗号分隔，txt文件采用的是制表符作为分隔，例如`data/chap1/Titanic_normal.csv`和`data/chap1/Titanic_tab.txt`，而在较为特殊的情况下，数据的分隔符合可能不是常规的分隔符合，例如`data/chap1/Titanic_special.txt`，使用记事本打开这个文件发现文件采用`|`作为分隔的符合，那么这样的文件如何使用Excel打开呢？\r\n\r\n<img src=\".\\src\\chap1\\1.6.png\" alt=\"1.6\" style=\"zoom: 50%;\" />\r\n\r\n这里推荐大家使用以下的操作方案，操作路径为菜单栏选择：**数据-->获取和转换数据-->从文件/CSV**\r\n\r\n![1.5](.\\src\\chap1\\1.7.gif)点击**加载**后可以看到我们导入的数据集，接着按快捷键`ctrl+s`保存工作簿到本地。\r\n\r\n> 至此我们已经成功加载数据集到工作表当中，需要注意的是此时构建的数据表跟原始数据是存在连接关系，更改csv文件的数据后在点击路径：**设计-外部表数据-刷新**后就可以更新工作表数据。如果要取消链接关系则点击路径：**设计-外部数据表-取消链接**即可。\r\n\r\n## 2.Excel数据格式\r\n\r\n### 2.1 单元格数据类型\r\n\r\n打开`data/chap1/2.1.xlsx`文件，点击【单元格数据类型】工作表，可以看到Excel有11种数据类型\r\n\r\n![2.1](.\\src\\chap1\\2.1.png)\r\n\r\n在平时工作和学习中常见的数据类型有3种分别是数字、文本和日期，接下来就详细讲解这3种格式的相关应用\r\n\r\n#### 2.1.1 数字\r\n\r\n数值是单元格最常见的数据之一，12位数的时候会以科学计数法显示。\r\n\r\n打开`data/chap1/2.1.xlsx`文件，点击【真假数字】工作表看到展示的是真假数值列，真数值默认情况下是右对齐（方便观测数据位数），假数值是数值型文本属于**文本**，左上角会有个绿色三角错误检查，当数据是文本时，无法完成数字运算操作。\r\n\r\n![2.2](.\\src\\chap1\\2.2.png)\r\n\r\nExcel会自带数据纠错功能，点击黄色感叹号可以看到，将文本转出数字，或者使用`=VALUE()`函数将文本转成数字\r\n\r\n![2.3](.\\src\\chap1\\2.3.gif)\r\n\r\n#### 2.1.2 文本\r\n\r\n文本为Excel中的常见格式，主要为文本字符串，例如下图就是典型的文本数据。当数据是文本类型时就可以完成文本数据相关操作。\r\n\r\n![2.4](.\\src\\chap1\\2.4.png)\r\n\r\n#### 2.1.3 日期\r\n\r\nExcel中的标准日期由年月日组成的数据，例如`2021/1/1`，同时日期又是很特殊的数值，在Excel里面日期最早是1900年1月1日，对应的数值为1，通过两日期相减可以得到日期相差的天数。需要注意的是如果是`2021-01-01`的数据就要看是否实际数据为`'2021/1/1'`，否则为文本型日期，需要进行转换才行。观察下图真假日期，可以发现真日期右对齐，假日期左对齐（内容跟显示的一致），真日期转格式可以看到单元格数据仍然是真日期格式（内容跟显示不一致）。\r\n\r\n![2.5](.\\src\\chap1\\2.5.gif)\r\n\r\n### 2.2 单元格格式\r\n\r\n设置单元格格式可以点击单元格后，**右键-设置单元格格式**选项，或者按快捷键**ctrl+1**，或者通过工具栏：**开始-数字**去快速做更改。单元格可以设置的格式类型包括：\r\n\r\n* 数字：调整数值格式或者日期格式。\r\n* 对齐：调整对齐方式。\r\n* 字体：更改字体、字型、字号等。\r\n* 边框：单元格边框设置。\r\n* 填充：填充单元格背景颜色，标注数据经常使用。\r\n* 保护：锁定单元格或者隐藏公式。\r\n\r\n#### 2.2.1 数值格式\r\n\r\n设置单元格格式分类选择数值，对数值设置小数点一般保留两位，同时能让数值对齐，使用千分位分隔符能更容易观察数值大小。\r\n\r\n<img src=\".\\src\\chap1\\2.6.png\" alt=\"2.6\" style=\"zoom:80%;\" />\r\n\r\n#### 2.2.2 文本格式\r\n\r\n文本常见的设置格式用于对文本进行加单引号、双引号或者逗号的情况。\r\n\r\n例如对真假日期中的假日期增加单引号\r\n\r\n![2.7](.\\src\\chap1\\2.7.gif)\r\n\r\n#### 2.2.3 日期格式\r\n\r\n通过日期分类调整日期格式为年-月-日，需要注意的是文本型的日期格式无法调整，而数值是可以调整为日期。\r\n\r\n![2.8](.\\src\\chap1\\2.8.png)\r\n\r\n### 2.3 转换单元格数据\r\n\r\n#### 2.3.1 数值和文本相互转换\r\n\r\n打开`data/chap1/2.1.xlsx`，将数值转换成文本\r\n\r\n![2.9](.\\src\\chap1\\2.9.gif)\r\n\r\n#### 2.3.2 日期和文本相互转换\r\n\r\n打开`data/chap1/2.1.xlsx`，将不规范日期转成规范日期，然后转成文本\r\n\r\n![2.10](.\\src\\chap1\\2.10.gif)\r\n\r\n## 练习\r\n\r\n1. 使用Excel数据导入功能，完成`data/chap1/Titanic_normal.csv`和`data/chap1/Titanic_special.txt`数据导入\r\n\r\n2. 完成`data/chap1/2.1.xlsx`中案例1-4中的问题\r\n\r\n   "
  },
  {
    "path": "Markdown/chap10.md",
    "content": "## 第十章Excel看板\r\n\r\n> 数据看板作为数据动态展示的一种重要方式，被广泛的应用于各个领域，因此本节根据1个案例讲解使用Excel制作数据看板的过程，以期起到抛砖引玉的效果，在学习技能的同时也将其应用到实践的工作中\r\n\r\n## 1.业务背景\r\n\r\n打开`data/chap10/10.1.xlsx`中的数据源，这是某厂家在淘宝、拼多多、京东这3个电商销售平台的销售数据，现在你是这个厂家的员工，老板想知道商品在不同渠道的每周销售情况，想请你做一个数据周报看板。\r\n\r\n![10.1](.\\src\\chap10\\10.1.png)\r\n\r\n## 2.实现分析\r\n\r\n1.既然是周报看板，需要确定每天日期所在周数与每周的第几天\r\n\r\n2.根据确定周数对销售金额进行汇总\r\n\r\n3.对销售金额进行动态展示\r\n\r\n## 3.实现过程\r\n\r\n### **1.**确定周数\r\n\r\n确定日期所在的周数用【WEEKNUM函数】，确定日期是第几周可以用【WEEKDAY函数】\r\n\r\n在H2单元格输入 **=WEEKNUM(B2,2)**\r\n\r\n在I2单元格输入 **=WEEKDAY(B2,11)**    （如果想得到中文星期几  可以输入 =TEXT(B2,\"aaaa\")）\r\n\r\n![10.2](.\\src\\chap10\\10.2.gif)\r\n\r\n### **2.销售基础整理**\r\n\r\n新建1个工作表，确定动态数据的变量为周数，并确定需要计算的指标，本周开始日期、介绍日期、销售额、订单数、上周销售额、上周订单数、销售额变化、订单数变化\r\n\r\n使用公式求解相关的基础数据\r\n\r\n在C3单元格输入公式`=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001)`\r\n\r\n如果发现数据日期变成了44200，显然就是格式不正确，只需要将单元格的格式转为日期即可\r\n\r\n![10.3](.\\src\\chap10\\10.3.gif)\r\n\r\n在C4单元格输入公式`=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001,0,0,-1)`\r\n\r\n![10.4](.\\src\\chap10\\10.4.gif)\r\n\r\n对于本周的销售额，可以使用SUMIFS函数获得 ，在C5单元格中输入\r\n\r\n`=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)`\r\n\r\n![10.5](.\\src\\chap10\\10.5.gif)\r\n\r\n对于本周的订单数，可以使用COUNTIFS函数获得 ，在C6单元格中输入\r\n\r\n`=COUNTIFS(数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)`\r\n\r\n![10.6](.\\src\\chap10\\10.6.gif)\r\n\r\n对于上周开始日期，可以使用本周开始日期-7，在E3单元格中输入\r\n\r\n`=C3-7`\r\n\r\n对于上周结束日期，可以使用本周结束日期-7，在E4单元格中输入\r\n\r\n`=C4-7`\r\n\r\n对于上周销售额，可以使用SUMIFS函数获得 ，在E5单元格中输入\r\n\r\n`=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$E$3,数据源!$B:$B,\"<=\"&$E$4)`\r\n\r\n对于上周的订单数，可以使用COUNTIFS函数获得 ，在E6单元格中输入\r\n\r\n`=COUNTIFS(数据源!$B:$B,\">=\"&$E$3,数据源!$B:$B,\"<=\"&$E$4)`\r\n\r\n![10.7](.\\src\\chap10\\10.7.gif)\r\n\r\n对于相比上周销售额变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C7单元格中输入\r\n\r\n`=TEXT(((C5-E5)/E5)*100,\"0.00\")&\"%\"`\r\n\r\n对于相比上周订单数变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C8单元格中输入\r\n\r\n`=TEXT(((C6-E6)/E6)*100,\"0.00\")&\"%\"`\r\n\r\n当然也可以直接设置单元格格式为【百分比】\r\n\r\n![10.8](.\\src\\chap10\\10.8.gif)\r\n\r\n当然这个【相比上周销售额变化】指标是一个比较重要的指标，可以对这个指标进行格式设置\r\n\r\n选择C6单元格并设置条件格式，判断C5单元格与E5单元格值的大小，如果C5>=E5，那么C6单元值为红，否则为绿色\r\n\r\n![10.9](.\\src\\chap10\\10.9.gif)\r\n\r\n### **3.周销售数据变化趋势**\r\n\r\n对于每周的数据需要做一个统计，并对每周数据的下单金额与下单数进行整理\r\n\r\n装B13-B19单元格输入星期数\r\n\r\n现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式\r\n\r\n`=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4,数据源!$I:$I,\"=\"&'计算过程'!B13)`\r\n\r\n现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式\r\n\r\n`=COUNTIFS(数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4,数据源!$I:$I,\"=\"&'计算过程'!B13)`\r\n\r\n![10.10](.\\src\\chap10\\10.10.gif)\r\n\r\n接下来就对数据进行可视化展示\r\n\r\n![10.11](.\\src\\chap10\\10.11.gif)\r\n\r\n### **4.周销售渠道整理**\r\n\r\n对于每周的数据需要做一个统计，并对每周数据的渠道分布进行整理\r\n\r\n装G3-G6单元格分别输入产品的电商渠道京东、拼多多、淘宝\r\n\r\n在H3单元格中输入SUMIFS函数求不同渠道的销售金额，并进行向下填充\r\n\r\n`=SUMIFS(数据源!$F:$F,数据源!$E:$E,G3,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)`\r\n\r\n在I3单元格中输入COUNTIF函数求不同渠道的下单数，并进行向下填充\r\n\r\n`=COUNTIFS(数据源!$E:$E,G3,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)`\r\n\r\n![10.12](.\\src\\chap10\\10.12.gif)\r\n\r\n接下来就对数据进行可视化展示，将图片进行简单的美化，就可以得到下单金额饼状图与下单数的柱状图\r\n\r\n![10.13](.\\src\\chap10\\10.13.gif)\r\n\r\n### **5.看板绘制**\r\n\r\n完成了前面的全部计算后，接下来的工作就是将绘制的图结合在一起进行展示\r\n\r\n首先是上述计算的数据与绘图的信息集合到一起\r\n\r\n![10.13](.\\src\\chap10\\10.13.png)\r\n\r\n其中本周的总销量、本周订单数、当前周数、开始日期以及结束日期都是引用计算过程中的值\r\n\r\n本周总销量的值为`=计算过程!$C$5`\r\n\r\n本周总订单的值为`=计算过程!$C$6`\r\n\r\n本周周数的值为`=计算过程!$C$2`\r\n\r\n本周的开始日期为`=计算过程!$C$3`\r\n\r\n本周的结束日期为`=计算过程!$C$4`\r\n\r\n因为本周的变化情况带有条件单元格式，因此不能直接引用，需要将其转化成链接图片的形式，具体操作为\r\n\r\n1.复制C7单元格\r\n\r\n2.粘贴选择链接的图片\r\n\r\n![10.14](.\\src\\chap10\\10.14.png)\r\n\r\n对于本周的周数，需要设置按钮方便调节\r\n\r\n1.选择开发工具\r\n\r\n2.选择插入，选择数值调节按钮\r\n\r\n3.选择设置控件格式\r\n\r\n4.设置控件的对应参数\r\n\r\n![10.15](.\\src\\chap10\\10.15.png)\r\n\r\n到这里就完成了看板90%的步骤，点击按钮，能看动态展示看板的相关数据\r\n\r\n![10.16](.\\src\\chap10\\10.16.png)\r\n\r\n最后就对看板进行相应的美化，在看板美化过程中也参考了其他EXCEL教程中的配色，因此最后的看板展示效果为\r\n\r\n![10.17](.\\src\\chap10\\10.17.png)\r\n\r\n## 练习\r\n\r\n1.完成数据看板，需要通过按钮调节周数，同时销售额，订单数以及数据图进行变化\r\n\r\n## 思考\r\n\r\n​\t1.为什么每周的介绍日期和开始日期都可以使用XLOOKUP获得\r\n\r\n​\t2.为什么每周1的下单金额之和可以通过SUMIF函数求\r\n\r\n​\t3.为什么设置按钮调节每周的数据变化，这样有什么好处\r\n\r\n## 后记\r\n\r\n> 行文至此，以上就是Free-excel教程的全部内容，整个教程的编写过程中也广泛的参阅了各式各样的Excel教程，尽力让本教程变得轻松易学，希望读者能掌握相关的Excel技巧，并能灵活的运用到工作中，面对数字化社会，数据将渗透到生活的点点滴滴，拥抱数字，同时也拥抱变化。\r\n>\r\n> --作者：牧小熊，Datawhale成员，数据分析师\r\n"
  },
  {
    "path": "Markdown/chap2.md",
    "content": "# 第二章 Excel的快捷操作\r\n\r\n> 在本节中我们将了解Excel中的各种快捷操作，目前已知的Excel快捷操作键有230个，本篇重点介绍那些常用的Excel快捷操作键。\r\n\r\n## 1.Excel快捷操作简介\r\n\r\n### 1.1文件相关\r\n\r\n- `Ctrl` + `N`     创建一个新的Excel工作簿 \r\n- `Ctrl` + `w`     关闭当前工作簿\r\n- `Ctrl` + `S`     保存当前的Excel工作簿\r\n- `F12`               将当前文件进行另存为\r\n- `Ctrl` + `p`     打印当前工作表\r\n\r\n### 1.2通用快捷键\r\n\r\n- `Ctrl` + `z`    撤销当前操作\r\n- `Ctrl` + `Y`     恢复撤销，可以用这个快捷键恢复被撤消的操作 \r\n- `Ctrl` + `C`     复制所选单元格\r\n- `Ctrl` + `x`     剪切所选单元格\r\n- `Ctrl` + `v`     粘贴所选单元格\r\n- `Ctrl` + `F`     弹出查找和替换对话框 \r\n- `Ctrl` + `G`     显示定位对话框\r\n\r\n### 1.3表格选择\r\n\r\n- `Ctrl` + `A`     全选表格\r\n- `Ctrl` + `→`    移动到数据区域的右边缘\r\n- `Ctrl` + `←`    移动到数据区域的左边缘\r\n- `Ctrl` + `↑`    移动到数据区域的上边缘\r\n- `Ctrl` + `↓`    移动到数据区域的下边缘 \r\n\r\n### 1.4单元格编辑\r\n\r\n- `F2`                             编辑当前单元格（跟双击单元格效果一致） \r\n- `Alt` + `Enter`          在当前单元格内换行 (直接按 `Enter`会跳转到下一行)\r\n- `Enter`                      下移一个单元格 \r\n- `Shift` + `Enter`       上移一个单元格  \r\n- `Tab`                           右移一个单元格 \r\n- `Shift` + `Tab`            左移一个单元格 \r\n- `Ctrl` + `Enter`          输入完成，并停留在当前单元格 \r\n- `Ctrl` + `;`（分号）    输入当前日期（显示为年/月/日）\r\n- `Ctrl` +` Shift` + `: `    输入当前时间 (显示为小时/分钟)\r\n- `Ctrl` + `E`                   快速填充 \r\n\r\n### 1.5Excel格式化\r\n\r\n- `Ctrl` + `1`（数字1）   设置单元格格式\r\n- `Ctrl` + `B`                    加粗或取消加粗\r\n- `Ctrl` + `i`                     加斜体或取消斜体 \r\n\r\n### 1.6Excel公式\r\n\r\n- `F4`              绝对引用和相对引用切换\r\n- `Alt`+`=`      自动插入求和公式\r\n\r\n## 2.Excel快捷操作实践\r\n\r\n### 2.1自动插入求和公式\r\n\r\n打开文件`data/chap2/2.1.xlsx`，点击【案例1】\r\n\r\n1.选中案例1中的表格区域（**注意这里要把汇总的那一行也选上**）\r\n\r\n2.使用快捷键`Alt`+`=` ，自动插入求和公式，可以看到，对上述的Excel表格区域进行自动求和。\r\n\r\n![2.1](.\\src\\chap2\\2.1.gif)\r\n\r\n### 2.2自动进行列差异比对\r\n\r\n打开文件`data/chap2/2.2.xlsx`，点击【案例1】，我们现在的任务是找到1月和2月客户数不同的区域，如何快速定位？\r\n\r\n1.选中需要进行列差异比对的区域，注意选择顺序从左往右\r\n\r\n2.使用快捷键`ctrl`+`\\` (**注意是“\\”不是\"/\"**)，可以快速定位到区域4、区域8以及区域10所对应的客户数不同\r\n\r\n3.选择填充颜色，即可快速显示两列的差异\r\n\r\n注意这里的选择方向，从右往左选择，那么默认最右边为参考标准，其他列的数据可参考标准比较，如果从左往右选择，那最左边就是参考标准，其他的操作同上。\r\n\r\n![2.2](.\\src\\chap2\\2.2.gif)\r\n\r\n### 2.3自动填充\r\n\r\n在excel中很多重复、繁琐的工作由数据提取和数据合并这类问题造成，**2013年以后的Excel**支持智能填充，能灵活的解决这类问题。需要注意的是，自动填充的数据需要是同一个规范数据才可以完成自动填充。\r\n\r\n打开文件`data/chap2/2.3.xlsx`，点击【案例1】，需要提取客户的手机号\r\n\r\n1.手动提取客户1的手机号，并输入到【B2】\r\n\r\n2.选择需要快速填充的列，也就是【B2-B11】\r\n\r\n3.按`ctrl`+`E`进行自动填充\r\n\r\n![2.3](.\\src\\chap2\\2.3.gif)\r\n\r\n## 练习\r\n\r\n1.完成`data/chap2/2.1.xlsx`工作簿中的【案例2】【案例3】的快捷键自动求和任务\r\n\r\n2.完成`data/chap2/2.2.xlsx`工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）\r\n\r\n3.完成`data/chap2/2.3.xlsx`工作簿中的【案例2】【案例3】【案例4】的填充任务"
  },
  {
    "path": "Markdown/chap3.md",
    "content": "# 第三章 Excel的表合并\r\n\r\n> 当遇到需要将多个表的行记录合并在一起的时候，我们一般会手动复制粘贴，这会带来很多重复繁琐的操作，并且容易出错，可以使用Excel的合并计算工具来快速完成。\r\n\r\n## 1.多表行合并\r\n\r\n打开文件`data/chap3/3.1.xlsx`，点击【案例1】可以看到有3个消费表格，每个客户的消费金额不同，现在需要你统计每个客户在消费的总金额。\r\n\r\n一般的操作方法是将这3个数据复制粘贴，那么有没有更加优雅的方法呢？这里推荐使用合并计算\r\n\r\n**1.选择需要汇总的单元格起点**\r\n\r\n**2.选择Excel中的数据栏**\r\n\r\n**3.找到数据栏中的合并计算块**\r\n\r\n**4.选择合并计算函数中的求和**\r\n\r\n**5.点击引用位置右侧的引用项**\r\n\r\n**6.选择第一个数据表所在的范围**\r\n\r\n**7.点击添加**\r\n\r\n**8.将3个数据表添加到所有引用位置**\r\n\r\n**9.选择标签位置信息**\r\n\r\n**10.点击完成**\r\n\r\n可以看到完成了所有客户消费金额的求和计算~\r\n\r\n![3.1](.\\src\\chap3\\3.1.gif)\r\n\r\n## 2.多表列合并\r\n\r\n打开文件`data/chap3/3.1.xlsx`，点击【案例2】可以看到有3个不同的消费表格，每个客户的消费金额不同，现在需要你统计每个客户在3个不同消费的总金额。\r\n\r\n使用合并计算选择3个不同项目的数据区域\r\n\r\n![3.2](.\\src\\chap3\\3.2.gif)\r\n\r\n## 练习\r\n\r\n​\t1.选择`data/chap3/3.1.xlsx`工作簿中的【案例1】得到不同客户的消费次数\r\n\r\n​\t2.选择`data/chap3/3.1.xlsx`工作簿中的【案例2】得到不同客户的不同项目的消费次数"
  },
  {
    "path": "Markdown/chap4.md",
    "content": "# 第四章 Excel函数-逻辑判断\r\n\r\n> Excel中有着非常丰富的函数，这些函数能大幅度提升我们的工作效率，本节中会重点介绍一些常用的Excel函数。\r\n\r\n## 1.if函数\r\n\r\n打开文件`data/chap4/4.1.xlsx`，点击【案例1】，现在需要对客户的原始得分进行校正，当客户的原始得分为负时，校正为0\r\n\r\n针对上面遇到的问题，可以使用IF函数，Excel函数用法如下\r\n\r\n【IF函数】**=IF(判断条件，如果满足则，如果不满足则)**\r\n\r\n针对遇到的问题，那么在C2单元格中输入\r\n\r\n**=IF(B2<0,0,B2)**            ----> **注意，这里的逗号要使用英文的逗号**\r\n\r\n那么这个公式是什么意思呢？判断B2单元格是不是小于0，如果是，则C2单元格为0，如果不是则返回B2单元格的值，可以看到C2单元格实际返回值为0，这是因为B2的值为-1，满足判断条件，因此C2单元格返回为0\r\n\r\n那么如何进行公式批量填充呢？\r\n\r\n这里推荐一个比较优雅的方法\r\n\r\n1.在C2单元格写Excel公式\r\n\r\n2.选择需要填充公式的区域，包括C2单元格\r\n\r\n3.点击C2单元格，进入公式编辑状态\r\n\r\n4.使用快捷键`CTRL`+`Enter`进行批量填充\r\n\r\n![4.1](.\\src\\chap4\\4.1.gif)\r\n\r\n打开文件`data/chap4/4.1.xlsx`，点击【案例2】，现在有客户的1月、2月消费金额，如果客户2个月的消费金额都超过400，那么就认为这个客户为高消费客户。\r\n\r\n这里与5.1中的案例不同，需要IF函数与逻辑函数进行配合\r\n\r\n【AND函数】**=AND(条件1，条件2，...)** \r\n\r\n【OR函数】**=OR(条件，条件2，...)**\r\n\r\nAND函数，需要所有条件全部满足，才返还TRUE，OR函数，所有条件中只要有1个条件满足，就返还TRUE\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=IF(AND(B2>400,C2>400),\"高消费客户\",\"\")**  -----> 这里\"\"代表返回空值\r\n\r\n随后对整列的函数进行填充，具体填充方法见5.1中详解\r\n\r\n![4.2](.\\src\\chap4\\4.2.gif)\r\n\r\n## 2.ifs函数\r\n\r\n打开文件`data/chap4/4.1.xlsx`，点击【案例3】，有员工的相关考核分，考核得分在4.8分以上，优秀；考核得分在3.5-4.7分，良好；考核得分在0-3.4分，一般。\r\n\r\n这里可以使用IFS函数，具体用法为\r\n\r\n【IFS函数】=IFS(判断条件1,如果满足条件1则,判断条件2,如果满足条件2则)\r\n\r\n针对遇到的问题，则可以在C2单元格输入\r\n\r\n**=IFS(B3<=3.4,\"一般\",AND(B3>=3.5,B3<=4.7),\"良好\",B3>=4.8,\"优秀\")**\r\n\r\n对整列数据进行函数填充\r\n\r\n![4.3](.\\src\\chap4\\4.3.gif)\r\n\r\n## 3.sumif函数\r\n\r\n>  在Excel数据任务处理中，会遇到大量的求和的任务，SUMIF函数在求和任务中具有天然优势，因此在本节中将详细的讲解SUMIF函数的相关用法\r\n\r\n【SUMIF函数】=SUMIF(条件区域，求和条件，[实际求和区域])  --->实际求和区域位选择条件\r\n\r\n### 案例1\r\n\r\n打开`data/chap4/4.2xlsx`中的【案例1】现在有几名同学的考试成绩，现在想统计数学成绩在90分以上的成绩之和\r\n\r\n那么可以输入如下的函数公式\r\n\r\n**=SUMIF(B:B,\">=90\",B:B)**\r\n\r\n第一个参数为条件区域，因为要判断数学成绩，所以这里选择B列，当然这里也可以修改为实际的区域B2:B12\r\n\r\n第二个参数为判定条件，判定条件为大于等于90\r\n\r\n第三个参数为实际求和区，这是选填参数\r\n\r\n![4.4](.\\src\\chap4\\4.4.gif)\r\n\r\n### 案例2\r\n\r\n打开`data/chap4/4.2xlsx`中的【案例2】，现在想统计小米系列的产品销售额\r\n\r\nSUMIF函数支持模糊匹配，因此我们输入如下公式\r\n\r\n**=SUMIF(B:B,\"小米*\",C:C)**\r\n\r\n使用小米*匹配所有的小米系产品\r\n\r\n![4.5](.\\src\\chap4\\4.5.gif)\r\n\r\n### 案例3\r\n\r\n打开`data/chap4/4.2xlsx`中的【案例3】，现在想统计1月-3月的预计销售额预计销售和实际销售额\r\n\r\n因此可以巧用SUMIF函数，将条件区域进行横向选择，条件选择自己需要的字段，因此输入如下两个函数公式，并向下拖拽填充其他位置\r\n\r\n`=SUMIF($B$2:$G$2,I$2,B3:G3)`\r\n\r\n`=SUMIF($B$2:$G$2,H$2,B3:G3)`\r\n\r\n`$`在Excel中是绝对引用，公式中引用的单元格如果使用绝对引用 `$`，那么向下拖拽的过程中，这个单元格不会增加。\r\n\r\n![4.6](.\\src\\chap4\\4.6.png)\r\n\r\n例如，在J3单元格中输入`=C3`，在K3单元格中输入`=$C$3`并向下拖拽进行公式填充，观察区别\r\n\r\n发现，如果使用绝对引用，引用格式值并不会随着公式的拖拽而改变，这就是绝对引用与非绝对引用的区别。\r\n\r\n![4.7](.\\src\\chap4\\4.7.gif)\r\n\r\n### 案例4\r\n\r\n打开`data/chap4/4.2xlsx`中的【案例4】，现在需要统计语文成绩在80分以上，90分以下同学的数学成绩之和\r\n\r\n那么遇到这种情况应该怎么处理呢？相比于前面的案例，这里有2个筛选条件，而SUMIF函数无法满足需求，这里可以使用SUMIFS函数\r\n\r\n【SUMIFS函数】=SUMIFS（求和区域，条件区域1，条件1，条件区域2，条件2）\r\n\r\n因此写如下函数公式\r\n\r\n**=SUMIFS(C2:C13,B2:B13,\">80\",B2:B13,\"<90\")**\r\n\r\n因为要求数学成绩，所以第一个参数为C2:C13，而筛选条件为语文，因此条件区域为B2:B13\r\n\r\n![4.8](.\\src\\chap4\\4.8.gif)\r\n\r\n## 4.countifs函数\r\n\r\n打开`data/chap4/4.2xlsx`中的【案例5】，现在需要统计语文成绩超过60，数学成绩超过65，英语成绩超过70的同学个数\r\n\r\n那么遇到这种情况应该怎么处理呢？其实countifs函数与sumifs函数用法非常接近，求满足所有条件的个数\r\n\r\n【COUNTIFS函数】=COUNTIFS（条件区域1，条件1，条件区域2，条件2）\r\n\r\n因此写如下函数公式\r\n\r\n**=COUNTIFS(B2:B13,\">60\",C2:C13,\">65\",D2:D13,\">70\")**\r\n\r\n![4.9](.\\src\\chap4\\4.9.gif)\r\n\r\n## 练习\r\n\r\n1.选择`data/chap4/4.1.xlsx`工作簿中的【案例1】，将客户原始得分为1以下的校正为0\r\n\r\n2.选择`data/chap4/4.1.xlsx`工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为\"高消费客户\"\r\n\r\n3.选择`data/chap4/4.1.xlsx`工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的务。\r\n\r\n4.打开`data/chap4/4.2xlsx`中的【案例1】语文成绩在80分以上的同学成绩之和\r\n\r\n5.打开`data/chap4/4.2xlsx`中的【案例2】统计所有苹果系列产品的销售额\r\n\r\n6.打开`data/chap4/4.2xlsx`中的【案例6】完成所有手机的销售额求和\r\n"
  },
  {
    "path": "Markdown/chap5.md",
    "content": "# 第五章 Excel函数-文本函数\r\n\r\n## 1.Text函数\r\n\r\nText函数可以将数值转换为指定格式的文本，其语法格式为TEXT(value,format_text)\r\n\r\n【TEXT函数】=TEXT(值，自定义数字格式代码)\r\n\r\n### 案例1\r\n\r\n打开`data/chap5/5.1.xlsx`，点击【案例1】，将客户的消费日期和消费金额转成大写\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(C2,\"[DBNUM2]\")**            ----> **注意，这里的逗号要使用英文的逗号**\r\n\r\n在E2单元格中输入\r\n\r\n**=TEXT(A2,\"[DBNUM1]yyyy年m月d日\")**\r\n\r\nDBNUM1和DBNUM2为2种常见的中文格式，一般金额用DBNUM2，日期用DBNUM1\r\n\r\n![5.1](.\\src\\chap5\\5.1.gif)\r\n\r\n### 案例2\r\n\r\n打开`data/chap5/5.1.xlsx`，点击【案例2】，将客户的消费日期转换为周次，即星期几\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(A2,\"aaaa\")**          \r\n\r\n![5.2](.\\src\\chap5\\5.2.gif)\r\n\r\n### 案例3\r\n\r\n打开`data/chap5/5.1.xlsx`，点击【案例3】，取客户消费的年、月、日\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(A2,\"yyyy\")**     或者 **=TEXT(A2,\"e\")** \r\n\r\n在E2单元格中输入\r\n\r\n**=TEXT(A2,\"m\")**  或者 **=TEXT(A2,\"mm\")**         注意.这2种格式是有区别的\r\n\r\n在F2单元格中输入\r\n\r\n**=TEXT(A2,\"d\")**  或者 **=TEXT(A2,\"dd\")** \r\n\r\n![5.3](.\\src\\chap5\\5.3.gif)\r\n\r\n## 2.mid函数\r\n\r\n打开`data/chap5/5.2.xlsx`，点击【案例1】，提取身份证中的生日，并转换成2022年12月4日这种格式\r\n\r\n面对这个问题，可以使用mid函数提取生日\r\n\r\n【MID函数】=MID(text,start_num,num_chars)\r\n\r\ntest:为要提取的文本字符串\r\n\r\nstart_num:为文本中要提取的第一个字符串的位置\r\n\r\nnum_chars为提取字符串的长度\r\n\r\n因此可以在B2中输入 因为生日是8位数字，所以最后一个参数填8\r\n\r\n**=MID(A2,7,8)**\r\n\r\n在C2中输入格式化的生日\r\n\r\n**=TEXT(MID(A2,7,8),\"0000年00月00日\")**\r\n\r\n问题：这里TEXT函数格式为什么没有使用yyyy年mm月dd日 这种格式？\r\n\r\n因为MID(A2,7,8)提取出来的是文本，不是日期，因此Excel无法识别日期的年月，所以用数字格式进行代替\r\n\r\n![5.4](.\\src\\chap5\\5.4.gif)\r\n\r\n文本提取中相似的函数有LEFT，RIGHT\r\n\r\nLEFT函数，以字符串左侧为起始位置，返回指定数量的字符\r\n\r\n【LEFT函数】=MID(text,,num_chars)\r\n\r\ntext:要提取的字符串或单元格引用；\r\nnum_chars:要提取的字符数量\r\n\r\nRIGHT函数，从字符串右侧首字符开始，从右向左提取指定的字符，其功能和LEFT函数完全一样，只是方向不同\r\n\r\n【RIGHT函数】=MID(text,num_chars)\r\n\r\ntext:要提取的字符串或单元格引用；\r\nnum_chars:要提取的字符数量\r\n\r\n## 3.replace函数\r\n\r\n打开`data/chap5/5.2.xlsx`，点击【案例2】，现在需要将Excel表格打印，为了不泄露客户电话号码，需要将电话后5位进行屏蔽\r\n\r\nREPLACEI函数作用：把一个文本字符串，人为指定一个位置，用定个数新字符进行替换。\r\n\r\n【REPLACEI函数】=REPLACEI(old_text,start_num,num_chars,new_text)\r\n\r\nold_text:需要替换的文本\r\n\r\nstart_num:需要替换文本的开始位置\r\n\r\nnum_chars:替换文本的长度\r\n\r\nnew_text:替换内容\r\n\r\n因此可以在B2单元格中输入\r\n\r\n**=REPLACE(A2,11,5,\"#####\")**\r\n\r\n![5.5](.\\src\\chap5\\5.5.gif)\r\n\r\n## 练习\r\n\r\n1.完成`data/chap5/5.1.xlsx`工作簿中的【案例1-3】\r\n\r\n2.完成`data/chap5/5.2.xlsx`工作簿中的【案例1】中身份证后6位加密\r\n\r\n\r\n\r\n"
  },
  {
    "path": "Markdown/chap6.md",
    "content": "# 第六章 Excel函数-查找函数\r\n\r\n> VLOOKUP是经典的查找与引用函数，在Excel数据查询任务中有多种用途。XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，**非常推荐大家使用XLOOKUP函数**，如果自己的电脑Excel不是最新版不支持XLOOKUP函数，也可以来学习VLOOKUP函数。\r\n\r\n> 在本节教程中会重点介绍XLOOKUP函数的相关用法，对于VLOOKUP不好解决，XLOOKUP能解决的问题放在了【案例5】、【案例6】、【案例7】\r\n\r\n## 1.VLOOKUP\r\n\r\n### 案例1\r\n\r\n打开文件`data/chap6/6.1xlsx`，点击【案例1】，根据岗位编号，得到该员工的应发工资\r\n\r\n针对这个问题，可以使用VLOOKUP函数\r\n\r\n【VLOOKUP函数】**=VLOOKUP（要查找的值，查找区域，要返回的结果在查找区域的第几列，精确匹配或近似匹配）**\r\n\r\n**在L3单元格中输入如下公式**\r\n\r\n**=VLOOKUP(K2,A2:H50,8,FALSE)**     \r\n\r\n因为应发工资在整个单元格中的第8列，所以第3个参数为8，第4个参数选择TRUE或者FALSE，TRUE为模糊匹配，FALSE为精确匹配，因此第4个参数选择为FALSE， 有的EXCEL版本第4个参数是0是精确查找，1是精确匹配，根据实际情况输入即可。\r\n\r\n![6.1](.\\src\\chap6\\6.1.gif)\r\n\r\n### 案例2\r\n\r\n打开文件`data/chap6/6.1xlsx`，点击【案例2】，根据岗位编号，得到该员工的应发工资\r\n\r\n在案例2的任务中我们发现，这里的员工的编号位于最后一列，那么应该如何处理呢？\r\n\r\n如果按照正常的VLOOKUP的函数用法在L2单元格输入=VLOOKUP(K2,A2:H19,7,FALSE)，输入后会发现并没有安装预期得到应发工资。\r\n\r\n![6.2](.\\src\\chap6\\6.2.gif)\r\n\r\n这是因为VLOOKUP函数的限制，必须查找的区域在被查找值的左侧，当然这里有其他的办法解决。\r\n\r\n这里用到了换列的小技巧，如果感兴趣可以看相关文章，[Excel技巧：一文搞懂 IF{1,0} 的用法](https://zhuanlan.zhihu.com/p/377654196)\r\n\r\n那么在L2中输入如下函数\r\n\r\n**=VLOOKUP(K2,IF({1,0},H2:H19,G2:G19),2,FALSE)**\r\n\r\n这个函数中，将G2:G17列与H2:H19列做成了一个临时数据组，并让这2列交换位置，这样G2:G19列就在临时数组中的第2列，因此VLOOKUP中第3个参数为2\r\n\r\n![6.3](.\\src\\chap6\\6.3.gif)\r\n\r\n### 案例3\r\n\r\n打开文件`data/chap6/6.1xlsx`，点击【案例3】，根据性别与部门信息，获得员工编号\r\n\r\n案例3的任务与前面不同的是，无法只通过1个信息完全定位到员工编号，因此这里使用了一个技巧，在L3单元格中输入\r\n\r\n**=VLOOKUP(J2&K2,IF({1,0},C2:C20&D2:D20,A2:A20),2,0)**\r\n\r\n细心的同学可能发现了其中的技巧，就是将多个条件通过&连接成一个字符串，同时将待查找的数据也连接起来，从而通过这个连接的特殊字符来查找数据\r\n\r\n![6.4](.\\src\\chap6\\6.4.gif)\r\n\r\n### 案例4\r\n\r\n打开文件`data/chap6/6.1xlsx`，点击【案例4】，当不知道具体的信息，需要进行模糊查询\r\n\r\n那么如何使用VLOOKUP进行模糊查询呢？\r\n\r\n**=VLOOKUP(\"*\"&K2,A2:F20,2,0)**\r\n\r\nExcel中的通配符匹配规则见如下，因为DW为2个字符，我们选择*\r\n\r\n还记得第四章中的SUMIFS函数中的案例，计算小米系列的销量中，我们就使用了通配符\r\n\r\n![6.5](.\\src\\chap6\\6.5.png)\r\n![6.6](.\\src\\chap6\\6.6.gif)\r\n\r\n## 2 XLOOKUP\r\n\r\n> XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，**非常推荐大家使用XLOOKUP函数**，如果不能支持这个函数也不用灰心，使用VLOOKUP函数也能完成绝大多数查询问题\r\n\r\n因为XLOOKUP函数功能非常强大，因此在本节中对函数进行讲解\r\n\r\n【XLOOKUP函数】**==XLOOKUP(想要查找值, 想要在哪个数据区域中查找, 要返回的数据区域，, [if_not_found], [match_mode], [search_mode])**\r\n\r\n第四参数（可选参数）：if_not_found，找不到结果，就返回第四参数，如果省略第四参数函数默认返回#N/A这个错误值\r\n\r\n第五参数（可选参数）：match_mode，指定匹配类型\r\n\r\n参数为：0 ，精确匹配，未找到结果，返回 #N/A。 这是默认选项。\r\n\r\n参数为：-1，近似匹配，未找到结果，返回下一个较小的项。\r\n\r\n参数为：1，近似匹配，未找到结果，返回下一个较大的项。\r\n\r\n参数为：2 ，通配符匹配\r\n\r\n第六参数（可选参数）：search_mode, 指定要使用的搜索模式\r\n\r\n参数为：1，从第一项开始执行搜索。 这是默认选项。\r\n\r\n参数为：-1，从最后一项开始执行反向搜索。\r\n\r\n参数为：2，根据 lookup_array 按升序排序的二进制搜索。 如果未排序，将返回无效结果。\r\n\r\n参数为：-2，根据lookup_array 按降序排序的二进制搜索。 如果未排序，将返回无效结果。\r\n\r\n### 案例1\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例1】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(K2,A1:A50,H1:H50)**\r\n\r\n第1个K2 就是需要查询的岗位编号DW0005\r\n\r\n第2个参数为A1:A50，也就是要查哪一列，**细心的同学已经注意到这里与VLOOKUP的不同**\r\n\r\n第3个参数就是需要返回的哪一列，也就是返回H列\r\n\r\n### 案例2\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例2】\r\n\r\n我们在L2单元格中输入如下公式\r\n\r\n**=XLOOKUP(J2,H1:H19,G1:G19)**\r\n\r\n细心的同学就发现上面的公式中没有用到列的转换，这个公式的可读性非常强，这是就是XLOOKUP比VLOOKUP更加强大的地方\r\n\r\n### 案例3\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例3】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(J2&K2,C1:C20&D1:D20,A1:A20)**\r\n\r\n在XLOOKUP中的多条件查找，只需要使用**&**，将多个条件的信息连接起来即可，非常的方便\r\n\r\n### 案例4\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例4】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(\"*\"&K2,A2:A20,B2:B20,,2)**\r\n\r\n在使用XLOOKUP进行通配符查找事，需要指定第5个参数为2，即告诉XLOOKUP需要用通配符进行查找，这里是好VLOOKUP不同的地方\r\n\r\n具体通配符用法，可见1.4的讲解\r\n\r\n### 案例5\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例5】，姓名6在数据表中出现了2次，想知道他的最后销售额应该怎么操作？\r\n\r\n我们在I2单元格中输入如下公式\r\n\r\n**=XLOOKUP(H2,B1:B20,F1:F20,0,0,-1)**\r\n\r\n前3个参数想必大家已经很熟悉了，第4个参数是0，就是当XLOOKUP查找不到时，就返回0，第5个参数是0，就是选择精确匹配，第6个参数选择搜索参数，这里选择-1，从后开始往前搜索，因此这样设置就能获得正确结果。\r\n\r\n### 案例6\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例6】，这里有4个人，现在想知道这4个人的最大销售额\r\n\r\n**=MAX(XLOOKUP(H2:H5,B2:B20,F2:F20,0,0,1))**\r\n\r\n先通过XLOOKUP批量查找这4个人销售额，再通过MAX函数，求这4个人中的最大的销售额。\r\n\r\n![6.7](.\\src\\chap6\\6.7.gif)\r\n\r\n### 案例7\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例7】，当数据集以横向形式时，如果查询到需要的数据\r\n\r\n在C2单元格中输入如下公式\r\n\r\n**=XLOOKUP(B6,B2:L2,B1:L1)**\r\n\r\n细心的同学发现，横向数据的查询方法与纵向数据并无太大区别\r\n\r\n![6.8](.\\src\\chap6\\6.8.gif)\r\n\r\n## 练习\r\n\r\n​\t1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成`data/chap6/6.1xlsx`中的【案例1-4】"
  },
  {
    "path": "Markdown/chap7.md",
    "content": "# 第七章 Excel函数-动态函数\r\n\r\n> 在本节中会讲解一些Excel更新的动态函数，从而帮助大家更好的掌握Excel的数据处理与分析\r\n\r\n## 1.FILTER函数\r\n\r\n> 在工作中，我们需要根据指定的条件，将符合条件的所有记录从数据源表格式查找过来，一是可以用高级筛选。但高级筛选在查询下一个单位时 ，需要重新设置一次，很麻烦。二是用函数公式查询。典型的套路有：INDEX+SMALL+ROW、或者LOOKUP+COUNTIF+OFFSET，而这样的方法对初学者非常不友好，而EXCEL新更新的感受FILTER可以很好的解决这个问题。\r\n\r\n【FILTER】函数=FILTER（数据区域，筛选条件，[无满足条件的记录时返回的值]）\r\n\r\n接下来就看看FILTER的实际应用案例\r\n\r\n### 案例1\r\n\r\n打开`data/chap7/7.1xlsx`中的【案例1】\r\n\r\n获得湖北区的相关数据\r\n\r\n在J2单元格中输入\r\n\r\n**=FILTER(A2:G30,C2:C30=\"湖北区\")**    注意数据区域不包含标题\r\n\r\n生成的数据的动态数组（WPS由于不兼容动态数组，稍微和Excel有点区别，会产生数据溢出的情况）\r\n\r\n![7.1](.\\src\\chap7\\7.1.gif)\r\n\r\n### 案例2\r\n\r\n打开`data/chap7/7.1xlsx`中的【案例1】\r\n\r\n如果在实际的任务中不需要所有的列，只需要其中的几行，那么应该怎么操作？\r\n\r\n可以在K2单元格中输入\r\n\r\n**=FILTER(F2:G30,C2:C30=\"湖北区\")**\r\n\r\n细心的同学就发现了这里与7.1.1中的不同，如果需要返回其中的几行，只需要将数据区域修改为自己需要的区域即可\r\n\r\n现在需要知道湖北区的最大销售金额是多少\r\n\r\n**=MAX(FILTER(F2:F30,C2:C30=\"湖北区\"))**\r\n\r\n![7.2](.\\src\\chap7\\7.2.gif)\r\n\r\n### 案例3\r\n\r\n打开`data/chap7/7.1xlsx`中的【案例1】\r\n\r\nFILTER函数中的多条件筛选，使用`+`来表示或，使用`*`表示且\r\n\r\n例如，需要计算湖北区、湖南区大最大销售金额，那么函数公式为\r\n\r\n**=MAX(FILTER(F2:F30,(C2:C30=\"湖北区\")+(C2:C30=\"湖南区\")))**\r\n\r\n![7.3](.\\src\\chap7\\7.3.gif)\r\n\r\n例如，需要计算湖北区商品2的最大销售金额，那么函数公式为\r\n\r\n**=MAX(FILTER(F2:F30,(C2:C30=\"湖北区\")*(D2:D30=\"商品2\")))**\r\n\r\n![7.4](.\\src\\chap7\\7.4.gif)\r\n\r\n## 2.SUBTOTAL函数\r\n\r\nExcel中有数据筛选非常好用，那么，如果想统计筛选后的结果应该怎么弄？例如想知道筛选后的销售总额\r\n\r\n打开`data/chap7/7.2xlsx`中的案例1，使用筛选选择不同的区，而SUM求和并没有变化\r\n\r\n如果想实现上述需求，可以使用【SUBTOTAL函数】\r\n\r\n【SUBTOTAL函数】=SUBTOTAL(功能函数,选择区域)\r\n\r\n功能函数\r\n\r\n数字 1-11 或 101-111，用于指定要为分类汇总使用的函数。 如果使用 1-11，将包括手动隐藏的行，如果使用 101-111，则排除手动隐藏的行；始终排除已筛选掉的单元格。详见附件1\r\n\r\n在J2单元格中输入如下公式\r\n\r\n**=SUBTOTAL(9,F2:F21)**\r\n\r\n可以看到SUBTOTAL对筛选的数据列进行正确的求和，而SUM无法跟随选择的数据列进行正确求和\r\n\r\n![7.5](.\\src\\chap7\\7.5.gif)\r\n\r\n【附件1】\r\n\r\n![7.6](.\\src\\chap7\\7.6.png)\r\n\r\n## 练习\r\n\r\n1.打开`data/chap7/7.1xlsx`中的【案例1】计算河北区中商品1的最小销售额\r\n\r\n2.打开`data/chap7/7.1xlsx`中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额"
  },
  {
    "path": "Markdown/chap8.md",
    "content": "## 第八章Excel数据可视化\r\n\r\n> 对于Excel中的数据可视化，相信各位读者应该能很熟练的使用，使用Excel汇总各种类型图，包括柱状图、折线图等等，从而让数据进行图形化展示。基于此，本节中对Excel中的数据作图部分不做展开讲解，本节更加偏重于讲解另一类辅助数据可视化的部分。\r\n\r\n## 1 条形图\r\n\r\n打开`data/chap8/8.1xlsx`中的【案例1】，现在有湖北区2022/01/01的不同商品的销售额，怎么更加直观的展示销售额之间的差别呢？\r\n\r\n这里可以使用条形图对销售的金额进展可视化展示\r\n\r\n选择【开始】-->【条件格式】-->【数据条】\r\n\r\n![8.1](.\\src\\chap8\\8.1.gif)\r\n\r\n通过对销售金额进行数据条的填充，读者可以很快锁定湖北区2022/01/01销售额中，韩闲具有最高销售额为9442\r\n\r\n如果只想显示条形图，不想显示金额应该如果操作？\r\n\r\n选择条形图区域--->条件格式--->管理规则\r\n\r\n打开管理规则后可以看到，选择设置的规则，点击编辑规则\r\n\r\n选择仅显示数据条，当然可以在颜色的地方选择自己喜欢的颜色\r\n\r\n选择之后得到如下效果\r\n\r\n![8.2](.\\src\\chap8\\8.2.gif)\r\n\r\n## 2 条件单元格格式\r\n\r\n打开`data/chap8/8.2xlsx`，现在有不同业务员向客户推销商品的相关信息，现在需要将截止日期还没有过今天的标注出来，应该如何操作？\r\n\r\nEXCEL中【TODAY】函数可以获得当前日期\r\n\r\n这里，可以使用Excel中的条件格式进行自动识别\r\n\r\n1.选择需要设置条件的列；\r\n\r\n2.选择条件格式；\r\n\r\n3.选择新建规则\r\n\r\n这里选择使用公式确定要设置格式的单元格\r\n\r\n因为选择的区域为B2:B10  因此输入的公式满足B2要求，剩余的单元格会自动填充，因此输入的公式为\r\n\r\n**=B2>TODAY()**\r\n\r\n接下来设置单元格的格式，在本节示范中选择对满足条件的单元格填充为黄色，得到如下效果图\r\n\r\n![8.3](.\\src\\chap8\\8.3.gif)\r\n\r\n## 3 迷你图\r\n\r\n打开`data/chap8/8.3.xlsx`中原始数据，现在知道不同业务员1-12月的销售额，且销售额最差月份以及业务员的销售额的变化趋势，应该怎么操作？\r\n\r\n1.确定销售额最差月份\r\n\r\n这里可以使用XLOOKUP公式，具体公式为\r\n\r\n`=XLOOKUP(MIN(B2:M2),B2:M2,$B$1:$M$1)`\r\n\r\n![8.4](.\\src\\chap8\\8.4.gif)\r\n\r\n2.在B2插入新的单元格，命名为趋势图\r\n\r\n点击插入，找到迷你图部分，选择折线，数据范围选择为C2:N13，防止迷你图的位置选择在B2:B13单元格\r\n\r\n![8.5](.\\src\\chap8\\8.5.gif)\r\n\r\n生成迷你图后，可以在显示处，调整迷你图显示的重要点，这里显示折线中的最低点，通过图中可以看到，蔡勇仁的销售业绩趋势是不断下降，而江宁寒的销售业绩不断上升，迷你图能够很好的展示原数据与数据变化的趋势情况\r\n\r\n![8.6](.\\src\\chap8\\8.6.gif)\r\n\r\n## 练习\r\n\r\n​\t1.选择`data/chap8/8.2.xlsx`工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充\r\n"
  },
  {
    "path": "Markdown/chap9.md",
    "content": "## 第九章 Excel数据透视\r\n\r\n> 数据透视是Excel中个强大的数据处理和分析工具，能够快速实现数据的汇总与统计分析，本节重点讲解Excel数据透视的相关操作\r\n\r\n## 1Excel数据透视表\r\n\r\n打开`data/chap9/9.1.xlsx`中的数据源，现在对数据源进行数据透视\r\n\r\n1.选择插入\r\n\r\n2.选择数据透视表\r\n\r\n3.选择表格区域\r\n\r\n4.选择数据透视表放置的位置\r\n\r\n可以看到，在新的数据表中出现了数据透视表\r\n\r\n![9.1](.\\src\\chap9\\9.1.gif)\r\n\r\n例如，想知道不同月份的不同区域销售金额统计情况，可以将区域置于列，月置于行，金额的求和项置于值，即可得到不同区域不同月份的销售金额之和\r\n\r\n![9.2](.\\src\\chap9\\9.2.gif)\r\n\r\n如果又想知道不同店员的销售额怎么办呢？\r\n\r\n1.点击数据透视表分析\r\n\r\n2.点击插入切片器\r\n\r\n3.选择插片器的字段\r\n\r\n点击不同的店员，可以直接统计该店员的销售额，这里的插片器相当于直接筛选店员的数据做统计。如果想统计多个店员的数据，可以点击切片器的多选项，可以同时统计多个店员的数据。\r\n\r\n![9.3](.\\src\\chap9\\9.3.gif)\r\n\r\n## 2Excel数据透视图\r\n\r\n打开`data/chap9/9.1.xlsx`中的数据源，现在对数据源进行数据透视图\r\n\r\n1.选择插入\r\n\r\n2.选择数据透视图\r\n\r\n3.选择创建数据透视图，选择数据源作为数据区域\r\n\r\n4.选择新工作表\r\n\r\n![9.5](.\\src\\chap9\\9.5.gif)\r\n\r\n选择月为类别，选择区域为图例，选择金额求和作为值，得到如下透视图\r\n\r\n![9.6](.\\src\\chap9\\9.6.gif)\r\n\r\n如果，想切换透视图的类型，可以选择不同的图像类型，例如我们想知道不同月份销售的变化趋势，可以选择为折线图\r\n\r\n![9.7](.\\src\\chap9\\9.7.gif)\r\n\r\n当然数据透视图也支持插片器，同样是选择店员作为切片的条件\r\n\r\n![9.8](.\\src\\chap9\\9.8.gif)\r\n\r\n## 练习\r\n\r\n​\t1.选择`data/chap9/9.1.xlsx`工作簿中的【数据源】绘制不同的透视图\r\n"
  },
  {
    "path": "Markdown/src/1.txt",
    "content": ""
  },
  {
    "path": "Markdown/主页.md",
    "content": "# 主页\r\n\r\nfree excel中文意为自由Excel，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！\r\n\r\n本教程的数据集在 [此处](https://github.com/datawhalechina/free-excel) 下载。\r\n\r\n## 教程大纲\r\n\r\n![home](D:\\Myfolders\\桌面\\test\\Markdown\\src\\home.png)\r\n\r\n# 更新版本与更新时间\r\n\r\n- V1.0 2021-08-08\r\n- V2.0 2022-09-09\r\n- V2.1 2022-11-27\r\n\r\nV2.1教程配套Excel版本为2019及以上，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。\r\n\r\n注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上"
  },
  {
    "path": "Markdown/作者.md",
    "content": "# 作者\r\n\r\n牧小熊，华中农业大学硕士，Datawhale成员，互联网金融数据分析师\r\n\r\n## 开源内容\r\n\r\n- [《free-excel》](https://github.com/datawhalechina/free-excel)\r\n- [《心跳信号分类》](https://github.com/datawhalechina/team-learning-data-mining/tree/master/HeartbeatClassification)\r\n- [《python自动化办公》](https://github.com/datawhalechina/office-automation)\r\n- [《如何打一个数据挖掘比赛- 入门篇》](https://linklearner.com/#/learn/detail/0)\r\n\r\n## 如何联系我\r\n\r\n <img src=\"D:/Myfolders/桌面/test/Markdown/src/github.png\" style=\"zoom:8%;\" />:https://github.com/muxiaoxiong\r\n\r\n <img src=\"D:/Myfolders/桌面/test/Markdown/src/mail.png\" style=\"zoom:28%;\"/>:1335008986@qq.com\r\n\r\n <img src=\"D:/Myfolders/桌面/test/Markdown/src/zhihu.png\" style=\"zoom:15%;\"/>:https://www.zhihu.com/people/muxiaoxiong\r\n\r\n<a href=\"https://www.zhihu.com/consult/people/1090256819133370368\"><img src=\".\\src\\zixun.png\"  style=\"zoom:60%;\"  alt=\"知乎\"></a>\r\n\r\n\r\n"
  },
  {
    "path": "Markdown/练习题参考操作.md",
    "content": "## 练习题参考操作\r\n\r\n## 第一章\r\n\r\n1.1使用Excel数据导入功能，完成`data/chap1/Titanic_normal.csv`和`data/chap1/data/chap1/Titanic_special.txt`数据导入\r\n\r\n![1.1](.\\src\\练习题参考操作\\1.1.gif)\r\n\r\n1.2完成`data/chap1/2.1.xlsx`中案例1-4中的问题\r\n\r\n![1.2](.\\src\\练习题参考操作\\1.2.gif)\r\n\r\n## 第二章\r\n\r\n2.1.完成`data/chap2/2.1.xlsx`工作簿中的【案例2】【案例3】的快捷键自动求和任务\r\n\r\n![2.1](.\\src\\练习题参考操作\\2.1.gif)\r\n\r\n2.2.完成`data/chap2/2.2.xlsx`工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）\r\n\r\n![2.2](.\\src\\练习题参考操作\\2.2.gif)\r\n\r\n2.3.完成`data/chap2/2.3.xlsx`工作簿中的【案例2】【案例3】【案例4】的填充任务\r\n\r\n![2.3](.\\src\\练习题参考操作\\2.3.gif)\r\n\r\n## 第三章\r\n\r\n3.1.选择`data/chap3/3.1.xlsx`工作簿中的【案例1】得到不同客户的消费次数\r\n\r\n3.2.选择`data/chap3/3.1.xlsx`工作簿中的【案例2】得到不同客户的不同项目的消费次数\r\n\r\n![3.1](.\\src\\练习题参考操作\\3.1.gif)\r\n\r\n## 第四章\r\n\r\n4.1.选择`data/chap4/4.1.xlsx`工作簿中的【案例1】，将客户原始得分为1以下的校正为0\r\n\r\n4.2.选择`data/chap4/4.1.xlsx`工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为\"高消费户\"\r\n\r\n4.3.选择`data/chap4/4.1.xlsx`工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的务。\r\n\r\n![4.1](.\\src\\练习题参考操作\\4.1.gif)\r\n\r\n4.4.打开`data/chap4/4.2xlsx`中的【案例1】语文成绩在80分以上的同学成绩之和\r\n\r\n4.5.打开`data/chap4/4.2xlsx`中的【案例2】统计所有苹果系列产品的销售额\r\n\r\n4.6.打开`data/chap4/4.2xlsx`中的【案例6】完成所有手机的销售额求和\r\n\r\n![4.2](.\\src\\练习题参考操作\\4.2.gif)\r\n\r\n## 第五章\r\n\r\n5.1.完成`data/chap5/5.1.xlsx`工作簿中的【案例1-3】\r\n\r\n参考教程\r\n\r\n5.2.完成`data/chap5/5.2.xlsx`工作簿中的【案例1】中身份证后6位加密\r\n\r\n![5.2](.\\src\\练习题参考操作\\5.2.gif)\r\n\r\n## 第六章\r\n\r\n6.1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成`data/chap6/6.1xlsx`中的【案例1-4】\r\n\r\n参考教程\r\n\r\n## 第七章\r\n\r\n7.1.打开`data/chap7/7.1xlsx`中的【案例1】计算河北区中商品1的最小销售额\r\n\r\n![7.1](.\\src\\练习题参考操作\\7.1.gif)\r\n\r\n7.2.打开`data/chap7/7.1xlsx`中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额\r\n\r\n![7.2](.\\src\\练习题参考操作\\7.2.gif)\r\n\r\n## 第八章\r\n\r\n8.1.选择`data/chap8/8.2.xlsx`工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充\r\n\r\n![8.1](.\\src\\练习题参考操作\\8.1.gif)\r\n\r\n## 第九章\r\n\r\n9.1.选择`data/chap9/9.1.xlsx`工作簿中的【数据源】绘制不同的透视图\r\n\r\n![9.1](.\\src\\练习题参考操作\\9.1.gif)\r\n\r\n## 第十章\r\n\r\n10.1.完成数据看板，需要通过按钮调节周数，同时销售额，订单数以及数据图进行变化\r\n\r\n参考教程"
  },
  {
    "path": "README.md",
    "content": "# Free-Excel\n\nfree excel中文意为**自由Excel**，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！\n\n本课程提供了**网页**与**Markdown** 2种不同的版本来展现课程内容\n\n## 文件内容\n\n- data    :项目数据集\n- docs    :网页版课程\n- Markdown:MD版课程\n- 历史版本:V2.0课程\n\n\n## 环境\n\n本教程所使用Excel版本为2016或者2019，未提供下载安装，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。\n\nWPS下载链接：https://www.wps.cn/product\n\n注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上\n\n\n## 更新版本\n|    版本     |    日期    |       更新内容       |\n| :---------: | :--------: | :------------------: |\n| v1.0.0 beta | 2021-08-08 | 添加章节内容及数据集 |\n| v2.0.0      | 2022-09-09 | 全新的Excel内容与教程 |\n| v2.1.0      | 2022-12-17 | 全新的Excel内容增加了网页版 |\n\n\n\n## 贡献\n\n|       贡献者       |     版本      |             主页              |          联系          |\n| :----------------: | :-----------:| :--------------------------: | :--------------------: |\n| Jan Yang（简杨君） | v1.0.0 beta | https://github.com/yangjiada | yang.jiada@foxmail.com |\n| 牧小熊（聂雄伟）   | v2.0.0       |https://github.com/muxiaoxiong| xiongweinie@foxmail.com|\n\n\n## 关注我们\n\n> \"Datawhale是一个专注AI领域的开源组织，以“for the learner，和学习者一起成长”为愿景，构建对学习者最有价值的开源学习社区。关注我们，一起学习成长。\"\n\n[![img](Markdown/src/datawhale.jpg)](https://github.com/datawhalechina/team-learning-sql/blob/main/img/datawhale_code.jpeg)\n"
  },
  {
    "path": "data/chap1/Titanic_normal.csv",
    "content": "PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked\r\n892,3,\"Kelly, Mr. James\",male,34.5,0,0,330911,7.8292,,Q\r\n893,3,\"Wilkes, Mrs. James (Ellen Needs)\",female,47,1,0,363272,7,,S\r\n894,2,\"Myles, Mr. Thomas Francis\",male,62,0,0,240276,9.6875,,Q\r\n895,3,\"Wirz, Mr. Albert\",male,27,0,0,315154,8.6625,,S\r\n896,3,\"Hirvonen, Mrs. Alexander (Helga E Lindqvist)\",female,22,1,1,3101298,12.2875,,S\r\n897,3,\"Svensson, Mr. Johan Cervin\",male,14,0,0,7538,9.225,,S\r\n898,3,\"Connolly, Miss. Kate\",female,30,0,0,330972,7.6292,,Q\r\n899,2,\"Caldwell, Mr. Albert Francis\",male,26,1,1,248738,29,,S\r\n900,3,\"Abrahim, Mrs. Joseph (Sophie Halaut Easu)\",female,18,0,0,2657,7.2292,,C\r\n901,3,\"Davies, Mr. John Samuel\",male,21,2,0,A/4 48871,24.15,,S\r\n902,3,\"Ilieff, Mr. Ylio\",male,,0,0,349220,7.8958,,S\r\n903,1,\"Jones, Mr. Charles Cresson\",male,46,0,0,694,26,,S\r\n904,1,\"Snyder, Mrs. John Pillsbury (Nelle Stevenson)\",female,23,1,0,21228,82.2667,B45,S\r\n905,2,\"Howard, Mr. Benjamin\",male,63,1,0,24065,26,,S\r\n906,1,\"Chaffee, Mrs. Herbert Fuller (Carrie Constance Toogood)\",female,47,1,0,W.E.P. 5734,61.175,E31,S\r\n907,2,\"del Carlo, Mrs. Sebastiano (Argenia Genovesi)\",female,24,1,0,SC/PARIS 2167,27.7208,,C\r\n908,2,\"Keane, Mr. Daniel\",male,35,0,0,233734,12.35,,Q\r\n909,3,\"Assaf, Mr. Gerios\",male,21,0,0,2692,7.225,,C\r\n910,3,\"Ilmakangas, Miss. Ida Livija\",female,27,1,0,STON/O2. 3101270,7.925,,S\r\n911,3,\"Assaf Khalil, Mrs. Mariana (Miriam\"\")\"\"\",female,45,0,0,2696,7.225,,C\r\n912,1,\"Rothschild, Mr. Martin\",male,55,1,0,PC 17603,59.4,,C\r\n913,3,\"Olsen, Master. Artur Karl\",male,9,0,1,C 17368,3.1708,,S\r\n914,1,\"Flegenheim, Mrs. Alfred (Antoinette)\",female,,0,0,PC 17598,31.6833,,S\r\n915,1,\"Williams, Mr. Richard Norris II\",male,21,0,1,PC 17597,61.3792,,C\r\n916,1,\"Ryerson, Mrs. Arthur Larned (Emily Maria Borie)\",female,48,1,3,PC 17608,262.375,B57 B59 B63 B66,C\r\n917,3,\"Robins, Mr. Alexander A\",male,50,1,0,A/5. 3337,14.5,,S\r\n918,1,\"Ostby, Miss. Helene Ragnhild\",female,22,0,1,113509,61.9792,B36,C\r\n919,3,\"Daher, Mr. Shedid\",male,22.5,0,0,2698,7.225,,C\r\n920,1,\"Brady, Mr. John Bertram\",male,41,0,0,113054,30.5,A21,S\r\n921,3,\"Samaan, Mr. Elias\",male,,2,0,2662,21.6792,,C\r\n922,2,\"Louch, Mr. Charles Alexander\",male,50,1,0,SC/AH 3085,26,,S\r\n923,2,\"Jefferys, Mr. Clifford Thomas\",male,24,2,0,C.A. 31029,31.5,,S\r\n924,3,\"Dean, Mrs. Bertram (Eva Georgetta Light)\",female,33,1,2,C.A. 2315,20.575,,S\r\n925,3,\"Johnston, Mrs. Andrew G (Elizabeth Lily\"\" Watson)\"\"\",female,,1,2,W./C. 6607,23.45,,S\r\n926,1,\"Mock, Mr. Philipp Edmund\",male,30,1,0,13236,57.75,C78,C\r\n927,3,\"Katavelas, Mr. Vassilios (Catavelas Vassilios\"\")\"\"\",male,18.5,0,0,2682,7.2292,,C\r\n928,3,\"Roth, Miss. Sarah A\",female,,0,0,342712,8.05,,S\r\n929,3,\"Cacic, Miss. Manda\",female,21,0,0,315087,8.6625,,S\r\n930,3,\"Sap, Mr. Julius\",male,25,0,0,345768,9.5,,S\r\n931,3,\"Hee, Mr. Ling\",male,,0,0,1601,56.4958,,S\r\n932,3,\"Karun, Mr. Franz\",male,39,0,1,349256,13.4167,,C\r\n933,1,\"Franklin, Mr. Thomas Parham\",male,,0,0,113778,26.55,D34,S\r\n934,3,\"Goldsmith, Mr. Nathan\",male,41,0,0,SOTON/O.Q. 3101263,7.85,,S\r\n935,2,\"Corbett, Mrs. Walter H (Irene Colvin)\",female,30,0,0,237249,13,,S\r\n936,1,\"Kimball, Mrs. Edwin Nelson Jr (Gertrude Parsons)\",female,45,1,0,11753,52.5542,D19,S\r\n937,3,\"Peltomaki, Mr. Nikolai Johannes\",male,25,0,0,STON/O 2. 3101291,7.925,,S\r\n938,1,\"Chevre, Mr. Paul Romaine\",male,45,0,0,PC 17594,29.7,A9,C\r\n939,3,\"Shaughnessy, Mr. Patrick\",male,,0,0,370374,7.75,,Q\r\n940,1,\"Bucknell, Mrs. William Robert (Emma Eliza Ward)\",female,60,0,0,11813,76.2917,D15,C\r\n941,3,\"Coutts, Mrs. William (Winnie Minnie\"\" Treanor)\"\"\",female,36,0,2,C.A. 37671,15.9,,S\r\n942,1,\"Smith, Mr. Lucien Philip\",male,24,1,0,13695,60,C31,S\r\n943,2,\"Pulbaum, Mr. Franz\",male,27,0,0,SC/PARIS 2168,15.0333,,C\r\n944,2,\"Hocking, Miss. Ellen Nellie\"\"\"\"\",female,20,2,1,29105,23,,S\r\n945,1,\"Fortune, Miss. Ethel Flora\",female,28,3,2,19950,263,C23 C25 C27,S\r\n946,2,\"Mangiavacchi, Mr. Serafino Emilio\",male,,0,0,SC/A.3 2861,15.5792,,C\r\n947,3,\"Rice, Master. Albert\",male,10,4,1,382652,29.125,,Q\r\n948,3,\"Cor, Mr. Bartol\",male,35,0,0,349230,7.8958,,S\r\n949,3,\"Abelseth, Mr. Olaus Jorgensen\",male,25,0,0,348122,7.65,F G63,S\r\n950,3,\"Davison, Mr. Thomas Henry\",male,,1,0,386525,16.1,,S\r\n951,1,\"Chaudanson, Miss. Victorine\",female,36,0,0,PC 17608,262.375,B61,C\r\n952,3,\"Dika, Mr. Mirko\",male,17,0,0,349232,7.8958,,S\r\n953,2,\"McCrae, Mr. Arthur Gordon\",male,32,0,0,237216,13.5,,S\r\n954,3,\"Bjorklund, Mr. Ernst Herbert\",male,18,0,0,347090,7.75,,S\r\n955,3,\"Bradley, Miss. Bridget Delia\",female,22,0,0,334914,7.725,,Q\r\n956,1,\"Ryerson, Master. John Borie\",male,13,2,2,PC 17608,262.375,B57 B59 B63 B66,C\r\n957,2,\"Corey, Mrs. Percy C (Mary Phyllis Elizabeth Miller)\",female,,0,0,F.C.C. 13534,21,,S\r\n958,3,\"Burns, Miss. Mary Delia\",female,18,0,0,330963,7.8792,,Q\r\n959,1,\"Moore, Mr. Clarence Bloomfield\",male,47,0,0,113796,42.4,,S\r\n960,1,\"Tucker, Mr. Gilbert Milligan Jr\",male,31,0,0,2543,28.5375,C53,C\r\n961,1,\"Fortune, Mrs. Mark (Mary McDougald)\",female,60,1,4,19950,263,C23 C25 C27,S\r\n962,3,\"Mulvihill, Miss. Bertha E\",female,24,0,0,382653,7.75,,Q\r\n963,3,\"Minkoff, Mr. Lazar\",male,21,0,0,349211,7.8958,,S\r\n964,3,\"Nieminen, Miss. Manta Josefina\",female,29,0,0,3101297,7.925,,S\r\n965,1,\"Ovies y Rodriguez, Mr. Servando\",male,28.5,0,0,PC 17562,27.7208,D43,C\r\n966,1,\"Geiger, Miss. Amalie\",female,35,0,0,113503,211.5,C130,C\r\n967,1,\"Keeping, Mr. Edwin\",male,32.5,0,0,113503,211.5,C132,C\r\n968,3,\"Miles, Mr. Frank\",male,,0,0,359306,8.05,,S\r\n969,1,\"Cornell, Mrs. Robert Clifford (Malvina Helen Lamson)\",female,55,2,0,11770,25.7,C101,S\r\n970,2,\"Aldworth, Mr. Charles Augustus\",male,30,0,0,248744,13,,S\r\n971,3,\"Doyle, Miss. Elizabeth\",female,24,0,0,368702,7.75,,Q\r\n972,3,\"Boulos, Master. Akar\",male,6,1,1,2678,15.2458,,C\r\n973,1,\"Straus, Mr. Isidor\",male,67,1,0,PC 17483,221.7792,C55 C57,S\r\n974,1,\"Case, Mr. Howard Brown\",male,49,0,0,19924,26,,S\r\n975,3,\"Demetri, Mr. Marinko\",male,,0,0,349238,7.8958,,S\r\n976,2,\"Lamb, Mr. John Joseph\",male,,0,0,240261,10.7083,,Q\r\n977,3,\"Khalil, Mr. Betros\",male,,1,0,2660,14.4542,,C\r\n978,3,\"Barry, Miss. Julia\",female,27,0,0,330844,7.8792,,Q\r\n979,3,\"Badman, Miss. Emily Louisa\",female,18,0,0,A/4 31416,8.05,,S\r\n980,3,\"O'Donoghue, Ms. Bridget\",female,,0,0,364856,7.75,,Q\r\n981,2,\"Wells, Master. Ralph Lester\",male,2,1,1,29103,23,,S\r\n982,3,\"Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judith Andersson)\",female,22,1,0,347072,13.9,,S\r\n983,3,\"Pedersen, Mr. Olaf\",male,,0,0,345498,7.775,,S\r\n984,1,\"Davidson, Mrs. Thornton (Orian Hays)\",female,27,1,2,F.C. 12750,52,B71,S\r\n985,3,\"Guest, Mr. Robert\",male,,0,0,376563,8.05,,S\r\n986,1,\"Birnbaum, Mr. Jakob\",male,25,0,0,13905,26,,C\r\n987,3,\"Tenglin, Mr. Gunnar Isidor\",male,25,0,0,350033,7.7958,,S\r\n988,1,\"Cavendish, Mrs. Tyrell William (Julia Florence Siegel)\",female,76,1,0,19877,78.85,C46,S\r\n989,3,\"Makinen, Mr. Kalle Edvard\",male,29,0,0,STON/O 2. 3101268,7.925,,S\r\n990,3,\"Braf, Miss. Elin Ester Maria\",female,20,0,0,347471,7.8542,,S\r\n991,3,\"Nancarrow, Mr. William Henry\",male,33,0,0,A./5. 3338,8.05,,S\r\n992,1,\"Stengel, Mrs. Charles Emil Henry (Annie May Morris)\",female,43,1,0,11778,55.4417,C116,C\r\n993,2,\"Weisz, Mr. Leopold\",male,27,1,0,228414,26,,S\r\n994,3,\"Foley, Mr. William\",male,,0,0,365235,7.75,,Q\r\n995,3,\"Johansson Palmquist, Mr. Oskar Leander\",male,26,0,0,347070,7.775,,S\r\n996,3,\"Thomas, Mrs. Alexander (Thamine Thelma\"\")\"\"\",female,16,1,1,2625,8.5167,,C\r\n997,3,\"Holthen, Mr. Johan Martin\",male,28,0,0,C 4001,22.525,,S\r\n998,3,\"Buckley, Mr. Daniel\",male,21,0,0,330920,7.8208,,Q\r\n999,3,\"Ryan, Mr. Edward\",male,,0,0,383162,7.75,,Q\r\n1000,3,\"Willer, Mr. Aaron (Abi Weller\"\")\"\"\",male,,0,0,3410,8.7125,,S\r\n1001,2,\"Swane, Mr. George\",male,18.5,0,0,248734,13,F,S\r\n1002,2,\"Stanton, Mr. Samuel Ward\",male,41,0,0,237734,15.0458,,C\r\n1003,3,\"Shine, Miss. Ellen Natalia\",female,,0,0,330968,7.7792,,Q\r\n1004,1,\"Evans, Miss. Edith Corse\",female,36,0,0,PC 17531,31.6792,A29,C\r\n1005,3,\"Buckley, Miss. Katherine\",female,18.5,0,0,329944,7.2833,,Q\r\n1006,1,\"Straus, Mrs. Isidor (Rosalie Ida Blun)\",female,63,1,0,PC 17483,221.7792,C55 C57,S\r\n1007,3,\"Chronopoulos, Mr. Demetrios\",male,18,1,0,2680,14.4542,,C\r\n1008,3,\"Thomas, Mr. John\",male,,0,0,2681,6.4375,,C\r\n1009,3,\"Sandstrom, Miss. Beatrice Irene\",female,1,1,1,PP 9549,16.7,G6,S\r\n1010,1,\"Beattie, Mr. Thomson\",male,36,0,0,13050,75.2417,C6,C\r\n1011,2,\"Chapman, Mrs. John Henry (Sara Elizabeth Lawry)\",female,29,1,0,SC/AH 29037,26,,S\r\n1012,2,\"Watt, Miss. Bertha J\",female,12,0,0,C.A. 33595,15.75,,S\r\n1013,3,\"Kiernan, Mr. John\",male,,1,0,367227,7.75,,Q\r\n1014,1,\"Schabert, Mrs. Paul (Emma Mock)\",female,35,1,0,13236,57.75,C28,C\r\n1015,3,\"Carver, Mr. Alfred John\",male,28,0,0,392095,7.25,,S\r\n1016,3,\"Kennedy, Mr. John\",male,,0,0,368783,7.75,,Q\r\n1017,3,\"Cribb, Miss. Laura Alice\",female,17,0,1,371362,16.1,,S\r\n1018,3,\"Brobeck, Mr. Karl Rudolf\",male,22,0,0,350045,7.7958,,S\r\n1019,3,\"McCoy, Miss. Alicia\",female,,2,0,367226,23.25,,Q\r\n1020,2,\"Bowenur, Mr. Solomon\",male,42,0,0,211535,13,,S\r\n1021,3,\"Petersen, Mr. Marius\",male,24,0,0,342441,8.05,,S\r\n1022,3,\"Spinner, Mr. Henry John\",male,32,0,0,STON/OQ. 369943,8.05,,S\r\n1023,1,\"Gracie, Col. Archibald IV\",male,53,0,0,113780,28.5,C51,C\r\n1024,3,\"Lefebre, Mrs. Frank (Frances)\",female,,0,4,4133,25.4667,,S\r\n1025,3,\"Thomas, Mr. Charles P\",male,,1,0,2621,6.4375,,C\r\n1026,3,\"Dintcheff, Mr. Valtcho\",male,43,0,0,349226,7.8958,,S\r\n1027,3,\"Carlsson, Mr. Carl Robert\",male,24,0,0,350409,7.8542,,S\r\n1028,3,\"Zakarian, Mr. Mapriededer\",male,26.5,0,0,2656,7.225,,C\r\n1029,2,\"Schmidt, Mr. August\",male,26,0,0,248659,13,,S\r\n1030,3,\"Drapkin, Miss. Jennie\",female,23,0,0,SOTON/OQ 392083,8.05,,S\r\n1031,3,\"Goodwin, Mr. Charles Frederick\",male,40,1,6,CA 2144,46.9,,S\r\n1032,3,\"Goodwin, Miss. Jessie Allis\",female,10,5,2,CA 2144,46.9,,S\r\n1033,1,\"Daniels, Miss. Sarah\",female,33,0,0,113781,151.55,,S\r\n1034,1,\"Ryerson, Mr. Arthur Larned\",male,61,1,3,PC 17608,262.375,B57 B59 B63 B66,C\r\n1035,2,\"Beauchamp, Mr. Henry James\",male,28,0,0,244358,26,,S\r\n1036,1,\"Lindeberg-Lind, Mr. Erik Gustaf (Mr Edward Lingrey\"\")\"\"\",male,42,0,0,17475,26.55,,S\r\n1037,3,\"Vander Planke, Mr. Julius\",male,31,3,0,345763,18,,S\r\n1038,1,\"Hilliard, Mr. Herbert Henry\",male,,0,0,17463,51.8625,E46,S\r\n1039,3,\"Davies, Mr. Evan\",male,22,0,0,SC/A4 23568,8.05,,S\r\n1040,1,\"Crafton, Mr. John Bertram\",male,,0,0,113791,26.55,,S\r\n1041,2,\"Lahtinen, Rev. William\",male,30,1,1,250651,26,,S\r\n1042,1,\"Earnshaw, Mrs. Boulton (Olive Potter)\",female,23,0,1,11767,83.1583,C54,C\r\n1043,3,\"Matinoff, Mr. Nicola\",male,,0,0,349255,7.8958,,C\r\n1044,3,\"Storey, Mr. Thomas\",male,60.5,0,0,3701,,,S\r\n1045,3,\"Klasen, Mrs. (Hulda Kristina Eugenia Lofqvist)\",female,36,0,2,350405,12.1833,,S\r\n1046,3,\"Asplund, Master. Filip Oscar\",male,13,4,2,347077,31.3875,,S\r\n1047,3,\"Duquemin, Mr. Joseph\",male,24,0,0,S.O./P.P. 752,7.55,,S\r\n1048,1,\"Bird, Miss. Ellen\",female,29,0,0,PC 17483,221.7792,C97,S\r\n1049,3,\"Lundin, Miss. Olga Elida\",female,23,0,0,347469,7.8542,,S\r\n1050,1,\"Borebank, Mr. John James\",male,42,0,0,110489,26.55,D22,S\r\n1051,3,\"Peacock, Mrs. Benjamin (Edith Nile)\",female,26,0,2,SOTON/O.Q. 3101315,13.775,,S\r\n1052,3,\"Smyth, Miss. Julia\",female,,0,0,335432,7.7333,,Q\r\n1053,3,\"Touma, Master. Georges Youssef\",male,7,1,1,2650,15.2458,,C\r\n1054,2,\"Wright, Miss. Marion\",female,26,0,0,220844,13.5,,S\r\n1055,3,\"Pearce, Mr. Ernest\",male,,0,0,343271,7,,S\r\n1056,2,\"Peruschitz, Rev. Joseph Maria\",male,41,0,0,237393,13,,S\r\n1057,3,\"Kink-Heilmann, Mrs. Anton (Luise Heilmann)\",female,26,1,1,315153,22.025,,S\r\n1058,1,\"Brandeis, Mr. Emil\",male,48,0,0,PC 17591,50.4958,B10,C\r\n1059,3,\"Ford, Mr. Edward Watson\",male,18,2,2,W./C. 6608,34.375,,S\r\n1060,1,\"Cassebeer, Mrs. Henry Arthur Jr (Eleanor Genevieve Fosdick)\",female,,0,0,17770,27.7208,,C\r\n1061,3,\"Hellstrom, Miss. Hilda Maria\",female,22,0,0,7548,8.9625,,S\r\n1062,3,\"Lithman, Mr. Simon\",male,,0,0,S.O./P.P. 251,7.55,,S\r\n1063,3,\"Zakarian, Mr. Ortin\",male,27,0,0,2670,7.225,,C\r\n1064,3,\"Dyker, Mr. Adolf Fredrik\",male,23,1,0,347072,13.9,,S\r\n1065,3,\"Torfa, Mr. Assad\",male,,0,0,2673,7.2292,,C\r\n1066,3,\"Asplund, Mr. Carl Oscar Vilhelm Gustafsson\",male,40,1,5,347077,31.3875,,S\r\n1067,2,\"Brown, Miss. Edith Eileen\",female,15,0,2,29750,39,,S\r\n1068,2,\"Sincock, Miss. Maude\",female,20,0,0,C.A. 33112,36.75,,S\r\n1069,1,\"Stengel, Mr. Charles Emil Henry\",male,54,1,0,11778,55.4417,C116,C\r\n1070,2,\"Becker, Mrs. Allen Oliver (Nellie E Baumgardner)\",female,36,0,3,230136,39,F4,S\r\n1071,1,\"Compton, Mrs. Alexander Taylor (Mary Eliza Ingersoll)\",female,64,0,2,PC 17756,83.1583,E45,C\r\n1072,2,\"McCrie, Mr. James Matthew\",male,30,0,0,233478,13,,S\r\n1073,1,\"Compton, Mr. Alexander Taylor Jr\",male,37,1,1,PC 17756,83.1583,E52,C\r\n1074,1,\"Marvin, Mrs. Daniel Warner (Mary Graham Carmichael Farquarson)\",female,18,1,0,113773,53.1,D30,S\r\n1075,3,\"Lane, Mr. Patrick\",male,,0,0,7935,7.75,,Q\r\n1076,1,\"Douglas, Mrs. Frederick Charles (Mary Helene Baxter)\",female,27,1,1,PC 17558,247.5208,B58 B60,C\r\n1077,2,\"Maybery, Mr. Frank Hubert\",male,40,0,0,239059,16,,S\r\n1078,2,\"Phillips, Miss. Alice Frances Louisa\",female,21,0,1,S.O./P.P. 2,21,,S\r\n1079,3,\"Davies, Mr. Joseph\",male,17,2,0,A/4 48873,8.05,,S\r\n1080,3,\"Sage, Miss. Ada\",female,,8,2,CA. 2343,69.55,,S\r\n1081,2,\"Veal, Mr. James\",male,40,0,0,28221,13,,S\r\n1082,2,\"Angle, Mr. William A\",male,34,1,0,226875,26,,S\r\n1083,1,\"Salomon, Mr. Abraham L\",male,,0,0,111163,26,,S\r\n1084,3,\"van Billiard, Master. Walter John\",male,11.5,1,1,A/5. 851,14.5,,S\r\n1085,2,\"Lingane, Mr. John\",male,61,0,0,235509,12.35,,Q\r\n1086,2,\"Drew, Master. Marshall Brines\",male,8,0,2,28220,32.5,,S\r\n1087,3,\"Karlsson, Mr. Julius Konrad Eugen\",male,33,0,0,347465,7.8542,,S\r\n1088,1,\"Spedden, Master. Robert Douglas\",male,6,0,2,16966,134.5,E34,C\r\n1089,3,\"Nilsson, Miss. Berta Olivia\",female,18,0,0,347066,7.775,,S\r\n1090,2,\"Baimbrigge, Mr. Charles Robert\",male,23,0,0,C.A. 31030,10.5,,S\r\n1091,3,\"Rasmussen, Mrs. (Lena Jacobsen Solvang)\",female,,0,0,65305,8.1125,,S\r\n1092,3,\"Murphy, Miss. Nora\",female,,0,0,36568,15.5,,Q\r\n1093,3,\"Danbom, Master. Gilbert Sigvard Emanuel\",male,0.33,0,2,347080,14.4,,S\r\n1094,1,\"Astor, Col. John Jacob\",male,47,1,0,PC 17757,227.525,C62 C64,C\r\n1095,2,\"Quick, Miss. Winifred Vera\",female,8,1,1,26360,26,,S\r\n1096,2,\"Andrew, Mr. Frank Thomas\",male,25,0,0,C.A. 34050,10.5,,S\r\n1097,1,\"Omont, Mr. Alfred Fernand\",male,,0,0,F.C. 12998,25.7417,,C\r\n1098,3,\"McGowan, Miss. Katherine\",female,35,0,0,9232,7.75,,Q\r\n1099,2,\"Collett, Mr. Sidney C Stuart\",male,24,0,0,28034,10.5,,S\r\n1100,1,\"Rosenbaum, Miss. Edith Louise\",female,33,0,0,PC 17613,27.7208,A11,C\r\n1101,3,\"Delalic, Mr. Redjo\",male,25,0,0,349250,7.8958,,S\r\n1102,3,\"Andersen, Mr. Albert Karvin\",male,32,0,0,C 4001,22.525,,S\r\n1103,3,\"Finoli, Mr. Luigi\",male,,0,0,SOTON/O.Q. 3101308,7.05,,S\r\n1104,2,\"Deacon, Mr. Percy William\",male,17,0,0,S.O.C. 14879,73.5,,S\r\n1105,2,\"Howard, Mrs. Benjamin (Ellen Truelove Arman)\",female,60,1,0,24065,26,,S\r\n1106,3,\"Andersson, Miss. Ida Augusta Margareta\",female,38,4,2,347091,7.775,,S\r\n1107,1,\"Head, Mr. Christopher\",male,42,0,0,113038,42.5,B11,S\r\n1108,3,\"Mahon, Miss. Bridget Delia\",female,,0,0,330924,7.8792,,Q\r\n1109,1,\"Wick, Mr. George Dennick\",male,57,1,1,36928,164.8667,,S\r\n1110,1,\"Widener, Mrs. George Dunton (Eleanor Elkins)\",female,50,1,1,113503,211.5,C80,C\r\n1111,3,\"Thomson, Mr. Alexander Morrison\",male,,0,0,32302,8.05,,S\r\n1112,2,\"Duran y More, Miss. Florentina\",female,30,1,0,SC/PARIS 2148,13.8583,,C\r\n1113,3,\"Reynolds, Mr. Harold J\",male,21,0,0,342684,8.05,,S\r\n1114,2,\"Cook, Mrs. (Selena Rogers)\",female,22,0,0,W./C. 14266,10.5,F33,S\r\n1115,3,\"Karlsson, Mr. Einar Gervasius\",male,21,0,0,350053,7.7958,,S\r\n1116,1,\"Candee, Mrs. Edward (Helen Churchill Hungerford)\",female,53,0,0,PC 17606,27.4458,,C\r\n1117,3,\"Moubarek, Mrs. George (Omine Amenia\"\" Alexander)\"\"\",female,,0,2,2661,15.2458,,C\r\n1118,3,\"Asplund, Mr. Johan Charles\",male,23,0,0,350054,7.7958,,S\r\n1119,3,\"McNeill, Miss. Bridget\",female,,0,0,370368,7.75,,Q\r\n1120,3,\"Everett, Mr. Thomas James\",male,40.5,0,0,C.A. 6212,15.1,,S\r\n1121,2,\"Hocking, Mr. Samuel James Metcalfe\",male,36,0,0,242963,13,,S\r\n1122,2,\"Sweet, Mr. George Frederick\",male,14,0,0,220845,65,,S\r\n1123,1,\"Willard, Miss. Constance\",female,21,0,0,113795,26.55,,S\r\n1124,3,\"Wiklund, Mr. Karl Johan\",male,21,1,0,3101266,6.4958,,S\r\n1125,3,\"Linehan, Mr. Michael\",male,,0,0,330971,7.8792,,Q\r\n1126,1,\"Cumings, Mr. John Bradley\",male,39,1,0,PC 17599,71.2833,C85,C\r\n1127,3,\"Vendel, Mr. Olof Edvin\",male,20,0,0,350416,7.8542,,S\r\n1128,1,\"Warren, Mr. Frank Manley\",male,64,1,0,110813,75.25,D37,C\r\n1129,3,\"Baccos, Mr. Raffull\",male,20,0,0,2679,7.225,,C\r\n1130,2,\"Hiltunen, Miss. Marta\",female,18,1,1,250650,13,,S\r\n1131,1,\"Douglas, Mrs. Walter Donald (Mahala Dutton)\",female,48,1,0,PC 17761,106.425,C86,C\r\n1132,1,\"Lindstrom, Mrs. Carl Johan (Sigrid Posse)\",female,55,0,0,112377,27.7208,,C\r\n1133,2,\"Christy, Mrs. (Alice Frances)\",female,45,0,2,237789,30,,S\r\n1134,1,\"Spedden, Mr. Frederic Oakley\",male,45,1,1,16966,134.5,E34,C\r\n1135,3,\"Hyman, Mr. Abraham\",male,,0,0,3470,7.8875,,S\r\n1136,3,\"Johnston, Master. William Arthur Willie\"\"\"\"\",male,,1,2,W./C. 6607,23.45,,S\r\n1137,1,\"Kenyon, Mr. Frederick R\",male,41,1,0,17464,51.8625,D21,S\r\n1138,2,\"Karnes, Mrs. J Frank (Claire Bennett)\",female,22,0,0,F.C.C. 13534,21,,S\r\n1139,2,\"Drew, Mr. James Vivian\",male,42,1,1,28220,32.5,,S\r\n1140,2,\"Hold, Mrs. Stephen (Annie Margaret Hill)\",female,29,1,0,26707,26,,S\r\n1141,3,\"Khalil, Mrs. Betros (Zahie Maria\"\" Elias)\"\"\",female,,1,0,2660,14.4542,,C\r\n1142,2,\"West, Miss. Barbara J\",female,0.92,1,2,C.A. 34651,27.75,,S\r\n1143,3,\"Abrahamsson, Mr. Abraham August Johannes\",male,20,0,0,SOTON/O2 3101284,7.925,,S\r\n1144,1,\"Clark, Mr. Walter Miller\",male,27,1,0,13508,136.7792,C89,C\r\n1145,3,\"Salander, Mr. Karl Johan\",male,24,0,0,7266,9.325,,S\r\n1146,3,\"Wenzel, Mr. Linhart\",male,32.5,0,0,345775,9.5,,S\r\n1147,3,\"MacKay, Mr. George William\",male,,0,0,C.A. 42795,7.55,,S\r\n1148,3,\"Mahon, Mr. John\",male,,0,0,AQ/4 3130,7.75,,Q\r\n1149,3,\"Niklasson, Mr. Samuel\",male,28,0,0,363611,8.05,,S\r\n1150,2,\"Bentham, Miss. Lilian W\",female,19,0,0,28404,13,,S\r\n1151,3,\"Midtsjo, Mr. Karl Albert\",male,21,0,0,345501,7.775,,S\r\n1152,3,\"de Messemaeker, Mr. Guillaume Joseph\",male,36.5,1,0,345572,17.4,,S\r\n1153,3,\"Nilsson, Mr. August Ferdinand\",male,21,0,0,350410,7.8542,,S\r\n1154,2,\"Wells, Mrs. Arthur Henry (Addie\"\" Dart Trevaskis)\"\"\",female,29,0,2,29103,23,,S\r\n1155,3,\"Klasen, Miss. Gertrud Emilia\",female,1,1,1,350405,12.1833,,S\r\n1156,2,\"Portaluppi, Mr. Emilio Ilario Giuseppe\",male,30,0,0,C.A. 34644,12.7375,,C\r\n1157,3,\"Lyntakoff, Mr. Stanko\",male,,0,0,349235,7.8958,,S\r\n1158,1,\"Chisholm, Mr. Roderick Robert Crispin\",male,,0,0,112051,0,,S\r\n1159,3,\"Warren, Mr. Charles William\",male,,0,0,C.A. 49867,7.55,,S\r\n1160,3,\"Howard, Miss. May Elizabeth\",female,,0,0,A. 2. 39186,8.05,,S\r\n1161,3,\"Pokrnic, Mr. Mate\",male,17,0,0,315095,8.6625,,S\r\n1162,1,\"McCaffry, Mr. Thomas Francis\",male,46,0,0,13050,75.2417,C6,C\r\n1163,3,\"Fox, Mr. Patrick\",male,,0,0,368573,7.75,,Q\r\n1164,1,\"Clark, Mrs. Walter Miller (Virginia McDowell)\",female,26,1,0,13508,136.7792,C89,C\r\n1165,3,\"Lennon, Miss. Mary\",female,,1,0,370371,15.5,,Q\r\n1166,3,\"Saade, Mr. Jean Nassr\",male,,0,0,2676,7.225,,C\r\n1167,2,\"Bryhl, Miss. Dagmar Jenny Ingeborg \",female,20,1,0,236853,26,,S\r\n1168,2,\"Parker, Mr. Clifford Richard\",male,28,0,0,SC 14888,10.5,,S\r\n1169,2,\"Faunthorpe, Mr. Harry\",male,40,1,0,2926,26,,S\r\n1170,2,\"Ware, Mr. John James\",male,30,1,0,CA 31352,21,,S\r\n1171,2,\"Oxenham, Mr. Percy Thomas\",male,22,0,0,W./C. 14260,10.5,,S\r\n1172,3,\"Oreskovic, Miss. Jelka\",female,23,0,0,315085,8.6625,,S\r\n1173,3,\"Peacock, Master. Alfred Edward\",male,0.75,1,1,SOTON/O.Q. 3101315,13.775,,S\r\n1174,3,\"Fleming, Miss. Honora\",female,,0,0,364859,7.75,,Q\r\n1175,3,\"Touma, Miss. Maria Youssef\",female,9,1,1,2650,15.2458,,C\r\n1176,3,\"Rosblom, Miss. Salli Helena\",female,2,1,1,370129,20.2125,,S\r\n1177,3,\"Dennis, Mr. William\",male,36,0,0,A/5 21175,7.25,,S\r\n1178,3,\"Franklin, Mr. Charles (Charles Fardon)\",male,,0,0,SOTON/O.Q. 3101314,7.25,,S\r\n1179,1,\"Snyder, Mr. John Pillsbury\",male,24,1,0,21228,82.2667,B45,S\r\n1180,3,\"Mardirosian, Mr. Sarkis\",male,,0,0,2655,7.2292,F E46,C\r\n1181,3,\"Ford, Mr. Arthur\",male,,0,0,A/5 1478,8.05,,S\r\n1182,1,\"Rheims, Mr. George Alexander Lucien\",male,,0,0,PC 17607,39.6,,S\r\n1183,3,\"Daly, Miss. Margaret Marcella Maggie\"\"\"\"\",female,30,0,0,382650,6.95,,Q\r\n1184,3,\"Nasr, Mr. Mustafa\",male,,0,0,2652,7.2292,,C\r\n1185,1,\"Dodge, Dr. Washington\",male,53,1,1,33638,81.8583,A34,S\r\n1186,3,\"Wittevrongel, Mr. Camille\",male,36,0,0,345771,9.5,,S\r\n1187,3,\"Angheloff, Mr. Minko\",male,26,0,0,349202,7.8958,,S\r\n1188,2,\"Laroche, Miss. Louise\",female,1,1,2,SC/Paris 2123,41.5792,,C\r\n1189,3,\"Samaan, Mr. Hanna\",male,,2,0,2662,21.6792,,C\r\n1190,1,\"Loring, Mr. Joseph Holland\",male,30,0,0,113801,45.5,,S\r\n1191,3,\"Johansson, Mr. Nils\",male,29,0,0,347467,7.8542,,S\r\n1192,3,\"Olsson, Mr. Oscar Wilhelm\",male,32,0,0,347079,7.775,,S\r\n1193,2,\"Malachard, Mr. Noel\",male,,0,0,237735,15.0458,D,C\r\n1194,2,\"Phillips, Mr. Escott Robert\",male,43,0,1,S.O./P.P. 2,21,,S\r\n1195,3,\"Pokrnic, Mr. Tome\",male,24,0,0,315092,8.6625,,S\r\n1196,3,\"McCarthy, Miss. Catherine Katie\"\"\"\"\",female,,0,0,383123,7.75,,Q\r\n1197,1,\"Crosby, Mrs. Edward Gifford (Catherine Elizabeth Halstead)\",female,64,1,1,112901,26.55,B26,S\r\n1198,1,\"Allison, Mr. Hudson Joshua Creighton\",male,30,1,2,113781,151.55,C22 C26,S\r\n1199,3,\"Aks, Master. Philip Frank\",male,0.83,0,1,392091,9.35,,S\r\n1200,1,\"Hays, Mr. Charles Melville\",male,55,1,1,12749,93.5,B69,S\r\n1201,3,\"Hansen, Mrs. Claus Peter (Jennie L Howard)\",female,45,1,0,350026,14.1083,,S\r\n1202,3,\"Cacic, Mr. Jego Grga\",male,18,0,0,315091,8.6625,,S\r\n1203,3,\"Vartanian, Mr. David\",male,22,0,0,2658,7.225,,C\r\n1204,3,\"Sadowitz, Mr. Harry\",male,,0,0,LP 1588,7.575,,S\r\n1205,3,\"Carr, Miss. Jeannie\",female,37,0,0,368364,7.75,,Q\r\n1206,1,\"White, Mrs. John Stuart (Ella Holmes)\",female,55,0,0,PC 17760,135.6333,C32,C\r\n1207,3,\"Hagardon, Miss. Kate\",female,17,0,0,AQ/3. 30631,7.7333,,Q\r\n1208,1,\"Spencer, Mr. William Augustus\",male,57,1,0,PC 17569,146.5208,B78,C\r\n1209,2,\"Rogers, Mr. Reginald Harry\",male,19,0,0,28004,10.5,,S\r\n1210,3,\"Jonsson, Mr. Nils Hilding\",male,27,0,0,350408,7.8542,,S\r\n1211,2,\"Jefferys, Mr. Ernest Wilfred\",male,22,2,0,C.A. 31029,31.5,,S\r\n1212,3,\"Andersson, Mr. Johan Samuel\",male,26,0,0,347075,7.775,,S\r\n1213,3,\"Krekorian, Mr. Neshan\",male,25,0,0,2654,7.2292,F E57,C\r\n1214,2,\"Nesson, Mr. Israel\",male,26,0,0,244368,13,F2,S\r\n1215,1,\"Rowe, Mr. Alfred G\",male,33,0,0,113790,26.55,,S\r\n1216,1,\"Kreuchen, Miss. Emilie\",female,39,0,0,24160,211.3375,,S\r\n1217,3,\"Assam, Mr. Ali\",male,23,0,0,SOTON/O.Q. 3101309,7.05,,S\r\n1218,2,\"Becker, Miss. Ruth Elizabeth\",female,12,2,1,230136,39,F4,S\r\n1219,1,\"Rosenshine, Mr. George (Mr George Thorne\"\")\"\"\",male,46,0,0,PC 17585,79.2,,C\r\n1220,2,\"Clarke, Mr. Charles Valentine\",male,29,1,0,2003,26,,S\r\n1221,2,\"Enander, Mr. Ingvar\",male,21,0,0,236854,13,,S\r\n1222,2,\"Davies, Mrs. John Morgan (Elizabeth Agnes Mary White) \",female,48,0,2,C.A. 33112,36.75,,S\r\n1223,1,\"Dulles, Mr. William Crothers\",male,39,0,0,PC 17580,29.7,A18,C\r\n1224,3,\"Thomas, Mr. Tannous\",male,,0,0,2684,7.225,,C\r\n1225,3,\"Nakid, Mrs. Said (Waika Mary\"\" Mowad)\"\"\",female,19,1,1,2653,15.7417,,C\r\n1226,3,\"Cor, Mr. Ivan\",male,27,0,0,349229,7.8958,,S\r\n1227,1,\"Maguire, Mr. John Edward\",male,30,0,0,110469,26,C106,S\r\n1228,2,\"de Brito, Mr. Jose Joaquim\",male,32,0,0,244360,13,,S\r\n1229,3,\"Elias, Mr. Joseph\",male,39,0,2,2675,7.2292,,C\r\n1230,2,\"Denbury, Mr. Herbert\",male,25,0,0,C.A. 31029,31.5,,S\r\n1231,3,\"Betros, Master. Seman\",male,,0,0,2622,7.2292,,C\r\n1232,2,\"Fillbrook, Mr. Joseph Charles\",male,18,0,0,C.A. 15185,10.5,,S\r\n1233,3,\"Lundstrom, Mr. Thure Edvin\",male,32,0,0,350403,7.5792,,S\r\n1234,3,\"Sage, Mr. John George\",male,,1,9,CA. 2343,69.55,,S\r\n1235,1,\"Cardeza, Mrs. James Warburton Martinez (Charlotte Wardle Drake)\",female,58,0,1,PC 17755,512.3292,B51 B53 B55,C\r\n1236,3,\"van Billiard, Master. James William\",male,,1,1,A/5. 851,14.5,,S\r\n1237,3,\"Abelseth, Miss. Karen Marie\",female,16,0,0,348125,7.65,,S\r\n1238,2,\"Botsford, Mr. William Hull\",male,26,0,0,237670,13,,S\r\n1239,3,\"Whabee, Mrs. George Joseph (Shawneene Abi-Saab)\",female,38,0,0,2688,7.2292,,C\r\n1240,2,\"Giles, Mr. Ralph\",male,24,0,0,248726,13.5,,S\r\n1241,2,\"Walcroft, Miss. Nellie\",female,31,0,0,F.C.C. 13528,21,,S\r\n1242,1,\"Greenfield, Mrs. Leo David (Blanche Strouse)\",female,45,0,1,PC 17759,63.3583,D10 D12,C\r\n1243,2,\"Stokes, Mr. Philip Joseph\",male,25,0,0,F.C.C. 13540,10.5,,S\r\n1244,2,\"Dibden, Mr. William\",male,18,0,0,S.O.C. 14879,73.5,,S\r\n1245,2,\"Herman, Mr. Samuel\",male,49,1,2,220845,65,,S\r\n1246,3,\"Dean, Miss. Elizabeth Gladys Millvina\"\"\"\"\",female,0.17,1,2,C.A. 2315,20.575,,S\r\n1247,1,\"Julian, Mr. Henry Forbes\",male,50,0,0,113044,26,E60,S\r\n1248,1,\"Brown, Mrs. John Murray (Caroline Lane Lamson)\",female,59,2,0,11769,51.4792,C101,S\r\n1249,3,\"Lockyer, Mr. Edward\",male,,0,0,1222,7.8792,,S\r\n1250,3,\"O'Keefe, Mr. Patrick\",male,,0,0,368402,7.75,,Q\r\n1251,3,\"Lindell, Mrs. Edvard Bengtsson (Elin Gerda Persson)\",female,30,1,0,349910,15.55,,S\r\n1252,3,\"Sage, Master. William Henry\",male,14.5,8,2,CA. 2343,69.55,,S\r\n1253,2,\"Mallet, Mrs. Albert (Antoinette Magnin)\",female,24,1,1,S.C./PARIS 2079,37.0042,,C\r\n1254,2,\"Ware, Mrs. John James (Florence Louise Long)\",female,31,0,0,CA 31352,21,,S\r\n1255,3,\"Strilic, Mr. Ivan\",male,27,0,0,315083,8.6625,,S\r\n1256,1,\"Harder, Mrs. George Achilles (Dorothy Annan)\",female,25,1,0,11765,55.4417,E50,C\r\n1257,3,\"Sage, Mrs. John (Annie Bullen)\",female,,1,9,CA. 2343,69.55,,S\r\n1258,3,\"Caram, Mr. Joseph\",male,,1,0,2689,14.4583,,C\r\n1259,3,\"Riihivouri, Miss. Susanna Juhantytar Sanni\"\"\"\"\",female,22,0,0,3101295,39.6875,,S\r\n1260,1,\"Gibson, Mrs. Leonard (Pauline C Boeson)\",female,45,0,1,112378,59.4,,C\r\n1261,2,\"Pallas y Castello, Mr. Emilio\",male,29,0,0,SC/PARIS 2147,13.8583,,C\r\n1262,2,\"Giles, Mr. Edgar\",male,21,1,0,28133,11.5,,S\r\n1263,1,\"Wilson, Miss. Helen Alice\",female,31,0,0,16966,134.5,E39 E41,C\r\n1264,1,\"Ismay, Mr. Joseph Bruce\",male,49,0,0,112058,0,B52 B54 B56,S\r\n1265,2,\"Harbeck, Mr. William H\",male,44,0,0,248746,13,,S\r\n1266,1,\"Dodge, Mrs. Washington (Ruth Vidaver)\",female,54,1,1,33638,81.8583,A34,S\r\n1267,1,\"Bowen, Miss. Grace Scott\",female,45,0,0,PC 17608,262.375,,C\r\n1268,3,\"Kink, Miss. Maria\",female,22,2,0,315152,8.6625,,S\r\n1269,2,\"Cotterill, Mr. Henry Harry\"\"\"\"\",male,21,0,0,29107,11.5,,S\r\n1270,1,\"Hipkins, Mr. William Edward\",male,55,0,0,680,50,C39,S\r\n1271,3,\"Asplund, Master. Carl Edgar\",male,5,4,2,347077,31.3875,,S\r\n1272,3,\"O'Connor, Mr. Patrick\",male,,0,0,366713,7.75,,Q\r\n1273,3,\"Foley, Mr. Joseph\",male,26,0,0,330910,7.8792,,Q\r\n1274,3,\"Risien, Mrs. Samuel (Emma)\",female,,0,0,364498,14.5,,S\r\n1275,3,\"McNamee, Mrs. Neal (Eileen O'Leary)\",female,19,1,0,376566,16.1,,S\r\n1276,2,\"Wheeler, Mr. Edwin Frederick\"\"\"\"\",male,,0,0,SC/PARIS 2159,12.875,,S\r\n1277,2,\"Herman, Miss. Kate\",female,24,1,2,220845,65,,S\r\n1278,3,\"Aronsson, Mr. Ernst Axel Algot\",male,24,0,0,349911,7.775,,S\r\n1279,2,\"Ashby, Mr. John\",male,57,0,0,244346,13,,S\r\n1280,3,\"Canavan, Mr. Patrick\",male,21,0,0,364858,7.75,,Q\r\n1281,3,\"Palsson, Master. Paul Folke\",male,6,3,1,349909,21.075,,S\r\n1282,1,\"Payne, Mr. Vivian Ponsonby\",male,23,0,0,12749,93.5,B24,S\r\n1283,1,\"Lines, Mrs. Ernest H (Elizabeth Lindsey James)\",female,51,0,1,PC 17592,39.4,D28,S\r\n1284,3,\"Abbott, Master. Eugene Joseph\",male,13,0,2,C.A. 2673,20.25,,S\r\n1285,2,\"Gilbert, Mr. William\",male,47,0,0,C.A. 30769,10.5,,S\r\n1286,3,\"Kink-Heilmann, Mr. Anton\",male,29,3,1,315153,22.025,,S\r\n1287,1,\"Smith, Mrs. Lucien Philip (Mary Eloise Hughes)\",female,18,1,0,13695,60,C31,S\r\n1288,3,\"Colbert, Mr. Patrick\",male,24,0,0,371109,7.25,,Q\r\n1289,1,\"Frolicher-Stehli, Mrs. Maxmillian (Margaretha Emerentia Stehli)\",female,48,1,1,13567,79.2,B41,C\r\n1290,3,\"Larsson-Rondberg, Mr. Edvard A\",male,22,0,0,347065,7.775,,S\r\n1291,3,\"Conlon, Mr. Thomas Henry\",male,31,0,0,21332,7.7333,,Q\r\n1292,1,\"Bonnell, Miss. Caroline\",female,30,0,0,36928,164.8667,C7,S\r\n1293,2,\"Gale, Mr. Harry\",male,38,1,0,28664,21,,S\r\n1294,1,\"Gibson, Miss. Dorothy Winifred\",female,22,0,1,112378,59.4,,C\r\n1295,1,\"Carrau, Mr. Jose Pedro\",male,17,0,0,113059,47.1,,S\r\n1296,1,\"Frauenthal, Mr. Isaac Gerald\",male,43,1,0,17765,27.7208,D40,C\r\n1297,2,\"Nourney, Mr. Alfred (Baron von Drachstedt\"\")\"\"\",male,20,0,0,SC/PARIS 2166,13.8625,D38,C\r\n1298,2,\"Ware, Mr. William Jeffery\",male,23,1,0,28666,10.5,,S\r\n1299,1,\"Widener, Mr. George Dunton\",male,50,1,1,113503,211.5,C80,C\r\n1300,3,\"Riordan, Miss. Johanna Hannah\"\"\"\"\",female,,0,0,334915,7.7208,,Q\r\n1301,3,\"Peacock, Miss. Treasteall\",female,3,1,1,SOTON/O.Q. 3101315,13.775,,S\r\n1302,3,\"Naughton, Miss. Hannah\",female,,0,0,365237,7.75,,Q\r\n1303,1,\"Minahan, Mrs. William Edward (Lillian E Thorpe)\",female,37,1,0,19928,90,C78,Q\r\n1304,3,\"Henriksson, Miss. Jenny Lovisa\",female,28,0,0,347086,7.775,,S\r\n1305,3,\"Spector, Mr. Woolf\",male,,0,0,A.5. 3236,8.05,,S\r\n1306,1,\"Oliva y Ocana, Dona. Fermina\",female,39,0,0,PC 17758,108.9,C105,C\r\n1307,3,\"Saether, Mr. Simon Sivertsen\",male,38.5,0,0,SOTON/O.Q. 3101262,7.25,,S\r\n1308,3,\"Ware, Mr. Frederick\",male,,0,0,359309,8.05,,S\r\n1309,3,\"Peter, Master. Michael J\",male,,1,1,2668,22.3583,,C\r\n"
  },
  {
    "path": "data/chap1/Titanic_special.txt",
    "content": "PassengerId|Pclass|Name|Sex|Age|SibSp|Parch|Ticket|Fare|Cabin|Embarked\r\n892|3|\"Kelly, Mr. James\"|male|34.5|0|0|330911|7.8292||Q\r\n893|3|\"Wilkes, Mrs. James (Ellen Needs)\"|female|47|1|0|363272|7||S\r\n894|2|\"Myles, Mr. Thomas Francis\"|male|62|0|0|240276|9.6875||Q\r\n895|3|\"Wirz, Mr. Albert\"|male|27|0|0|315154|8.6625||S\r\n896|3|\"Hirvonen, Mrs. Alexander (Helga E Lindqvist)\"|female|22|1|1|3101298|12.2875||S\r\n897|3|\"Svensson, Mr. Johan Cervin\"|male|14|0|0|7538|9.225||S\r\n898|3|\"Connolly, Miss. Kate\"|female|30|0|0|330972|7.6292||Q\r\n899|2|\"Caldwell, Mr. Albert Francis\"|male|26|1|1|248738|29||S\r\n900|3|\"Abrahim, Mrs. Joseph (Sophie Halaut Easu)\"|female|18|0|0|2657|7.2292||C\r\n901|3|\"Davies, Mr. John Samuel\"|male|21|2|0|A/4 48871|24.15||S\r\n902|3|\"Ilieff, Mr. Ylio\"|male||0|0|349220|7.8958||S\r\n903|1|\"Jones, Mr. Charles Cresson\"|male|46|0|0|694|26||S\r\n904|1|\"Snyder, Mrs. John Pillsbury (Nelle Stevenson)\"|female|23|1|0|21228|82.2667|B45|S\r\n905|2|\"Howard, Mr. Benjamin\"|male|63|1|0|24065|26||S\r\n906|1|\"Chaffee, Mrs. Herbert Fuller (Carrie Constance Toogood)\"|female|47|1|0|W.E.P. 5734|61.175|E31|S\r\n907|2|\"del Carlo, Mrs. Sebastiano (Argenia Genovesi)\"|female|24|1|0|SC/PARIS 2167|27.7208||C\r\n908|2|\"Keane, Mr. Daniel\"|male|35|0|0|233734|12.35||Q\r\n909|3|\"Assaf, Mr. Gerios\"|male|21|0|0|2692|7.225||C\r\n910|3|\"Ilmakangas, Miss. Ida Livija\"|female|27|1|0|STON/O2. 3101270|7.925||S\r\n911|3|\"Assaf Khalil, Mrs. Mariana (Miriam\"\")\"\"\"|female|45|0|0|2696|7.225||C\r\n912|1|\"Rothschild, Mr. Martin\"|male|55|1|0|PC 17603|59.4||C\r\n913|3|\"Olsen, Master. Artur Karl\"|male|9|0|1|C 17368|3.1708||S\r\n914|1|\"Flegenheim, Mrs. Alfred (Antoinette)\"|female||0|0|PC 17598|31.6833||S\r\n915|1|\"Williams, Mr. Richard Norris II\"|male|21|0|1|PC 17597|61.3792||C\r\n916|1|\"Ryerson, Mrs. Arthur Larned (Emily Maria Borie)\"|female|48|1|3|PC 17608|262.375|B57 B59 B63 B66|C\r\n917|3|\"Robins, Mr. Alexander A\"|male|50|1|0|A/5. 3337|14.5||S\r\n918|1|\"Ostby, Miss. Helene Ragnhild\"|female|22|0|1|113509|61.9792|B36|C\r\n919|3|\"Daher, Mr. Shedid\"|male|22.5|0|0|2698|7.225||C\r\n920|1|\"Brady, Mr. John Bertram\"|male|41|0|0|113054|30.5|A21|S\r\n921|3|\"Samaan, Mr. Elias\"|male||2|0|2662|21.6792||C\r\n922|2|\"Louch, Mr. Charles Alexander\"|male|50|1|0|SC/AH 3085|26||S\r\n923|2|\"Jefferys, Mr. Clifford Thomas\"|male|24|2|0|C.A. 31029|31.5||S\r\n924|3|\"Dean, Mrs. Bertram (Eva Georgetta Light)\"|female|33|1|2|C.A. 2315|20.575||S\r\n925|3|\"Johnston, Mrs. Andrew G (Elizabeth Lily\"\" Watson)\"\"\"|female||1|2|W./C. 6607|23.45||S\r\n926|1|\"Mock, Mr. Philipp Edmund\"|male|30|1|0|13236|57.75|C78|C\r\n927|3|\"Katavelas, Mr. Vassilios (Catavelas Vassilios\"\")\"\"\"|male|18.5|0|0|2682|7.2292||C\r\n928|3|\"Roth, Miss. Sarah A\"|female||0|0|342712|8.05||S\r\n929|3|\"Cacic, Miss. Manda\"|female|21|0|0|315087|8.6625||S\r\n930|3|\"Sap, Mr. Julius\"|male|25|0|0|345768|9.5||S\r\n931|3|\"Hee, Mr. Ling\"|male||0|0|1601|56.4958||S\r\n932|3|\"Karun, Mr. Franz\"|male|39|0|1|349256|13.4167||C\r\n933|1|\"Franklin, Mr. Thomas Parham\"|male||0|0|113778|26.55|D34|S\r\n934|3|\"Goldsmith, Mr. Nathan\"|male|41|0|0|SOTON/O.Q. 3101263|7.85||S\r\n935|2|\"Corbett, Mrs. Walter H (Irene Colvin)\"|female|30|0|0|237249|13||S\r\n936|1|\"Kimball, Mrs. Edwin Nelson Jr (Gertrude Parsons)\"|female|45|1|0|11753|52.5542|D19|S\r\n937|3|\"Peltomaki, Mr. Nikolai Johannes\"|male|25|0|0|STON/O 2. 3101291|7.925||S\r\n938|1|\"Chevre, Mr. Paul Romaine\"|male|45|0|0|PC 17594|29.7|A9|C\r\n939|3|\"Shaughnessy, Mr. Patrick\"|male||0|0|370374|7.75||Q\r\n940|1|\"Bucknell, Mrs. William Robert (Emma Eliza Ward)\"|female|60|0|0|11813|76.2917|D15|C\r\n941|3|\"Coutts, Mrs. William (Winnie Minnie\"\" Treanor)\"\"\"|female|36|0|2|C.A. 37671|15.9||S\r\n942|1|\"Smith, Mr. Lucien Philip\"|male|24|1|0|13695|60|C31|S\r\n943|2|\"Pulbaum, Mr. Franz\"|male|27|0|0|SC/PARIS 2168|15.0333||C\r\n944|2|\"Hocking, Miss. Ellen Nellie\"\"\"\"\"|female|20|2|1|29105|23||S\r\n945|1|\"Fortune, Miss. Ethel Flora\"|female|28|3|2|19950|263|C23 C25 C27|S\r\n946|2|\"Mangiavacchi, Mr. Serafino Emilio\"|male||0|0|SC/A.3 2861|15.5792||C\r\n947|3|\"Rice, Master. Albert\"|male|10|4|1|382652|29.125||Q\r\n948|3|\"Cor, Mr. Bartol\"|male|35|0|0|349230|7.8958||S\r\n949|3|\"Abelseth, Mr. Olaus Jorgensen\"|male|25|0|0|348122|7.65|F G63|S\r\n950|3|\"Davison, Mr. Thomas Henry\"|male||1|0|386525|16.1||S\r\n951|1|\"Chaudanson, Miss. Victorine\"|female|36|0|0|PC 17608|262.375|B61|C\r\n952|3|\"Dika, Mr. Mirko\"|male|17|0|0|349232|7.8958||S\r\n953|2|\"McCrae, Mr. Arthur Gordon\"|male|32|0|0|237216|13.5||S\r\n954|3|\"Bjorklund, Mr. Ernst Herbert\"|male|18|0|0|347090|7.75||S\r\n955|3|\"Bradley, Miss. Bridget Delia\"|female|22|0|0|334914|7.725||Q\r\n956|1|\"Ryerson, Master. John Borie\"|male|13|2|2|PC 17608|262.375|B57 B59 B63 B66|C\r\n957|2|\"Corey, Mrs. Percy C (Mary Phyllis Elizabeth Miller)\"|female||0|0|F.C.C. 13534|21||S\r\n958|3|\"Burns, Miss. Mary Delia\"|female|18|0|0|330963|7.8792||Q\r\n959|1|\"Moore, Mr. Clarence Bloomfield\"|male|47|0|0|113796|42.4||S\r\n960|1|\"Tucker, Mr. Gilbert Milligan Jr\"|male|31|0|0|2543|28.5375|C53|C\r\n961|1|\"Fortune, Mrs. Mark (Mary McDougald)\"|female|60|1|4|19950|263|C23 C25 C27|S\r\n962|3|\"Mulvihill, Miss. Bertha E\"|female|24|0|0|382653|7.75||Q\r\n963|3|\"Minkoff, Mr. Lazar\"|male|21|0|0|349211|7.8958||S\r\n964|3|\"Nieminen, Miss. Manta Josefina\"|female|29|0|0|3101297|7.925||S\r\n965|1|\"Ovies y Rodriguez, Mr. Servando\"|male|28.5|0|0|PC 17562|27.7208|D43|C\r\n966|1|\"Geiger, Miss. Amalie\"|female|35|0|0|113503|211.5|C130|C\r\n967|1|\"Keeping, Mr. Edwin\"|male|32.5|0|0|113503|211.5|C132|C\r\n968|3|\"Miles, Mr. Frank\"|male||0|0|359306|8.05||S\r\n969|1|\"Cornell, Mrs. Robert Clifford (Malvina Helen Lamson)\"|female|55|2|0|11770|25.7|C101|S\r\n970|2|\"Aldworth, Mr. Charles Augustus\"|male|30|0|0|248744|13||S\r\n971|3|\"Doyle, Miss. Elizabeth\"|female|24|0|0|368702|7.75||Q\r\n972|3|\"Boulos, Master. Akar\"|male|6|1|1|2678|15.2458||C\r\n973|1|\"Straus, Mr. Isidor\"|male|67|1|0|PC 17483|221.7792|C55 C57|S\r\n974|1|\"Case, Mr. Howard Brown\"|male|49|0|0|19924|26||S\r\n975|3|\"Demetri, Mr. Marinko\"|male||0|0|349238|7.8958||S\r\n976|2|\"Lamb, Mr. John Joseph\"|male||0|0|240261|10.7083||Q\r\n977|3|\"Khalil, Mr. Betros\"|male||1|0|2660|14.4542||C\r\n978|3|\"Barry, Miss. Julia\"|female|27|0|0|330844|7.8792||Q\r\n979|3|\"Badman, Miss. Emily Louisa\"|female|18|0|0|A/4 31416|8.05||S\r\n980|3|\"O'Donoghue, Ms. Bridget\"|female||0|0|364856|7.75||Q\r\n981|2|\"Wells, Master. Ralph Lester\"|male|2|1|1|29103|23||S\r\n982|3|\"Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judith Andersson)\"|female|22|1|0|347072|13.9||S\r\n983|3|\"Pedersen, Mr. Olaf\"|male||0|0|345498|7.775||S\r\n984|1|\"Davidson, Mrs. Thornton (Orian Hays)\"|female|27|1|2|F.C. 12750|52|B71|S\r\n985|3|\"Guest, Mr. Robert\"|male||0|0|376563|8.05||S\r\n986|1|\"Birnbaum, Mr. Jakob\"|male|25|0|0|13905|26||C\r\n987|3|\"Tenglin, Mr. Gunnar Isidor\"|male|25|0|0|350033|7.7958||S\r\n988|1|\"Cavendish, Mrs. Tyrell William (Julia Florence Siegel)\"|female|76|1|0|19877|78.85|C46|S\r\n989|3|\"Makinen, Mr. Kalle Edvard\"|male|29|0|0|STON/O 2. 3101268|7.925||S\r\n990|3|\"Braf, Miss. Elin Ester Maria\"|female|20|0|0|347471|7.8542||S\r\n991|3|\"Nancarrow, Mr. William Henry\"|male|33|0|0|A./5. 3338|8.05||S\r\n992|1|\"Stengel, Mrs. Charles Emil Henry (Annie May Morris)\"|female|43|1|0|11778|55.4417|C116|C\r\n993|2|\"Weisz, Mr. Leopold\"|male|27|1|0|228414|26||S\r\n994|3|\"Foley, Mr. William\"|male||0|0|365235|7.75||Q\r\n995|3|\"Johansson Palmquist, Mr. Oskar Leander\"|male|26|0|0|347070|7.775||S\r\n996|3|\"Thomas, Mrs. Alexander (Thamine Thelma\"\")\"\"\"|female|16|1|1|2625|8.5167||C\r\n997|3|\"Holthen, Mr. Johan Martin\"|male|28|0|0|C 4001|22.525||S\r\n998|3|\"Buckley, Mr. Daniel\"|male|21|0|0|330920|7.8208||Q\r\n999|3|\"Ryan, Mr. Edward\"|male||0|0|383162|7.75||Q\r\n1000|3|\"Willer, Mr. Aaron (Abi Weller\"\")\"\"\"|male||0|0|3410|8.7125||S\r\n1001|2|\"Swane, Mr. George\"|male|18.5|0|0|248734|13|F|S\r\n1002|2|\"Stanton, Mr. Samuel Ward\"|male|41|0|0|237734|15.0458||C\r\n1003|3|\"Shine, Miss. Ellen Natalia\"|female||0|0|330968|7.7792||Q\r\n1004|1|\"Evans, Miss. Edith Corse\"|female|36|0|0|PC 17531|31.6792|A29|C\r\n1005|3|\"Buckley, Miss. Katherine\"|female|18.5|0|0|329944|7.2833||Q\r\n1006|1|\"Straus, Mrs. Isidor (Rosalie Ida Blun)\"|female|63|1|0|PC 17483|221.7792|C55 C57|S\r\n1007|3|\"Chronopoulos, Mr. Demetrios\"|male|18|1|0|2680|14.4542||C\r\n1008|3|\"Thomas, Mr. John\"|male||0|0|2681|6.4375||C\r\n1009|3|\"Sandstrom, Miss. Beatrice Irene\"|female|1|1|1|PP 9549|16.7|G6|S\r\n1010|1|\"Beattie, Mr. Thomson\"|male|36|0|0|13050|75.2417|C6|C\r\n1011|2|\"Chapman, Mrs. John Henry (Sara Elizabeth Lawry)\"|female|29|1|0|SC/AH 29037|26||S\r\n1012|2|\"Watt, Miss. Bertha J\"|female|12|0|0|C.A. 33595|15.75||S\r\n1013|3|\"Kiernan, Mr. John\"|male||1|0|367227|7.75||Q\r\n1014|1|\"Schabert, Mrs. Paul (Emma Mock)\"|female|35|1|0|13236|57.75|C28|C\r\n1015|3|\"Carver, Mr. Alfred John\"|male|28|0|0|392095|7.25||S\r\n1016|3|\"Kennedy, Mr. John\"|male||0|0|368783|7.75||Q\r\n1017|3|\"Cribb, Miss. Laura Alice\"|female|17|0|1|371362|16.1||S\r\n1018|3|\"Brobeck, Mr. Karl Rudolf\"|male|22|0|0|350045|7.7958||S\r\n1019|3|\"McCoy, Miss. Alicia\"|female||2|0|367226|23.25||Q\r\n1020|2|\"Bowenur, Mr. Solomon\"|male|42|0|0|211535|13||S\r\n1021|3|\"Petersen, Mr. Marius\"|male|24|0|0|342441|8.05||S\r\n1022|3|\"Spinner, Mr. Henry John\"|male|32|0|0|STON/OQ. 369943|8.05||S\r\n1023|1|\"Gracie, Col. Archibald IV\"|male|53|0|0|113780|28.5|C51|C\r\n1024|3|\"Lefebre, Mrs. Frank (Frances)\"|female||0|4|4133|25.4667||S\r\n1025|3|\"Thomas, Mr. Charles P\"|male||1|0|2621|6.4375||C\r\n1026|3|\"Dintcheff, Mr. Valtcho\"|male|43|0|0|349226|7.8958||S\r\n1027|3|\"Carlsson, Mr. Carl Robert\"|male|24|0|0|350409|7.8542||S\r\n1028|3|\"Zakarian, Mr. Mapriededer\"|male|26.5|0|0|2656|7.225||C\r\n1029|2|\"Schmidt, Mr. August\"|male|26|0|0|248659|13||S\r\n1030|3|\"Drapkin, Miss. Jennie\"|female|23|0|0|SOTON/OQ 392083|8.05||S\r\n1031|3|\"Goodwin, Mr. Charles Frederick\"|male|40|1|6|CA 2144|46.9||S\r\n1032|3|\"Goodwin, Miss. Jessie Allis\"|female|10|5|2|CA 2144|46.9||S\r\n1033|1|\"Daniels, Miss. Sarah\"|female|33|0|0|113781|151.55||S\r\n1034|1|\"Ryerson, Mr. Arthur Larned\"|male|61|1|3|PC 17608|262.375|B57 B59 B63 B66|C\r\n1035|2|\"Beauchamp, Mr. Henry James\"|male|28|0|0|244358|26||S\r\n1036|1|\"Lindeberg-Lind, Mr. Erik Gustaf (Mr Edward Lingrey\"\")\"\"\"|male|42|0|0|17475|26.55||S\r\n1037|3|\"Vander Planke, Mr. Julius\"|male|31|3|0|345763|18||S\r\n1038|1|\"Hilliard, Mr. Herbert Henry\"|male||0|0|17463|51.8625|E46|S\r\n1039|3|\"Davies, Mr. Evan\"|male|22|0|0|SC/A4 23568|8.05||S\r\n1040|1|\"Crafton, Mr. John Bertram\"|male||0|0|113791|26.55||S\r\n1041|2|\"Lahtinen, Rev. William\"|male|30|1|1|250651|26||S\r\n1042|1|\"Earnshaw, Mrs. Boulton (Olive Potter)\"|female|23|0|1|11767|83.1583|C54|C\r\n1043|3|\"Matinoff, Mr. Nicola\"|male||0|0|349255|7.8958||C\r\n1044|3|\"Storey, Mr. Thomas\"|male|60.5|0|0|3701|||S\r\n1045|3|\"Klasen, Mrs. (Hulda Kristina Eugenia Lofqvist)\"|female|36|0|2|350405|12.1833||S\r\n1046|3|\"Asplund, Master. Filip Oscar\"|male|13|4|2|347077|31.3875||S\r\n1047|3|\"Duquemin, Mr. Joseph\"|male|24|0|0|S.O./P.P. 752|7.55||S\r\n1048|1|\"Bird, Miss. Ellen\"|female|29|0|0|PC 17483|221.7792|C97|S\r\n1049|3|\"Lundin, Miss. Olga Elida\"|female|23|0|0|347469|7.8542||S\r\n1050|1|\"Borebank, Mr. John James\"|male|42|0|0|110489|26.55|D22|S\r\n1051|3|\"Peacock, Mrs. Benjamin (Edith Nile)\"|female|26|0|2|SOTON/O.Q. 3101315|13.775||S\r\n1052|3|\"Smyth, Miss. Julia\"|female||0|0|335432|7.7333||Q\r\n1053|3|\"Touma, Master. Georges Youssef\"|male|7|1|1|2650|15.2458||C\r\n1054|2|\"Wright, Miss. Marion\"|female|26|0|0|220844|13.5||S\r\n1055|3|\"Pearce, Mr. Ernest\"|male||0|0|343271|7||S\r\n1056|2|\"Peruschitz, Rev. Joseph Maria\"|male|41|0|0|237393|13||S\r\n1057|3|\"Kink-Heilmann, Mrs. Anton (Luise Heilmann)\"|female|26|1|1|315153|22.025||S\r\n1058|1|\"Brandeis, Mr. Emil\"|male|48|0|0|PC 17591|50.4958|B10|C\r\n1059|3|\"Ford, Mr. Edward Watson\"|male|18|2|2|W./C. 6608|34.375||S\r\n1060|1|\"Cassebeer, Mrs. Henry Arthur Jr (Eleanor Genevieve Fosdick)\"|female||0|0|17770|27.7208||C\r\n1061|3|\"Hellstrom, Miss. Hilda Maria\"|female|22|0|0|7548|8.9625||S\r\n1062|3|\"Lithman, Mr. Simon\"|male||0|0|S.O./P.P. 251|7.55||S\r\n1063|3|\"Zakarian, Mr. Ortin\"|male|27|0|0|2670|7.225||C\r\n1064|3|\"Dyker, Mr. Adolf Fredrik\"|male|23|1|0|347072|13.9||S\r\n1065|3|\"Torfa, Mr. Assad\"|male||0|0|2673|7.2292||C\r\n1066|3|\"Asplund, Mr. Carl Oscar Vilhelm Gustafsson\"|male|40|1|5|347077|31.3875||S\r\n1067|2|\"Brown, Miss. Edith Eileen\"|female|15|0|2|29750|39||S\r\n1068|2|\"Sincock, Miss. Maude\"|female|20|0|0|C.A. 33112|36.75||S\r\n1069|1|\"Stengel, Mr. Charles Emil Henry\"|male|54|1|0|11778|55.4417|C116|C\r\n1070|2|\"Becker, Mrs. Allen Oliver (Nellie E Baumgardner)\"|female|36|0|3|230136|39|F4|S\r\n1071|1|\"Compton, Mrs. Alexander Taylor (Mary Eliza Ingersoll)\"|female|64|0|2|PC 17756|83.1583|E45|C\r\n1072|2|\"McCrie, Mr. James Matthew\"|male|30|0|0|233478|13||S\r\n1073|1|\"Compton, Mr. Alexander Taylor Jr\"|male|37|1|1|PC 17756|83.1583|E52|C\r\n1074|1|\"Marvin, Mrs. Daniel Warner (Mary Graham Carmichael Farquarson)\"|female|18|1|0|113773|53.1|D30|S\r\n1075|3|\"Lane, Mr. Patrick\"|male||0|0|7935|7.75||Q\r\n1076|1|\"Douglas, Mrs. Frederick Charles (Mary Helene Baxter)\"|female|27|1|1|PC 17558|247.5208|B58 B60|C\r\n1077|2|\"Maybery, Mr. Frank Hubert\"|male|40|0|0|239059|16||S\r\n1078|2|\"Phillips, Miss. Alice Frances Louisa\"|female|21|0|1|S.O./P.P. 2|21||S\r\n1079|3|\"Davies, Mr. Joseph\"|male|17|2|0|A/4 48873|8.05||S\r\n1080|3|\"Sage, Miss. Ada\"|female||8|2|CA. 2343|69.55||S\r\n1081|2|\"Veal, Mr. James\"|male|40|0|0|28221|13||S\r\n1082|2|\"Angle, Mr. William A\"|male|34|1|0|226875|26||S\r\n1083|1|\"Salomon, Mr. Abraham L\"|male||0|0|111163|26||S\r\n1084|3|\"van Billiard, Master. Walter John\"|male|11.5|1|1|A/5. 851|14.5||S\r\n1085|2|\"Lingane, Mr. John\"|male|61|0|0|235509|12.35||Q\r\n1086|2|\"Drew, Master. Marshall Brines\"|male|8|0|2|28220|32.5||S\r\n1087|3|\"Karlsson, Mr. Julius Konrad Eugen\"|male|33|0|0|347465|7.8542||S\r\n1088|1|\"Spedden, Master. Robert Douglas\"|male|6|0|2|16966|134.5|E34|C\r\n1089|3|\"Nilsson, Miss. Berta Olivia\"|female|18|0|0|347066|7.775||S\r\n1090|2|\"Baimbrigge, Mr. Charles Robert\"|male|23|0|0|C.A. 31030|10.5||S\r\n1091|3|\"Rasmussen, Mrs. (Lena Jacobsen Solvang)\"|female||0|0|65305|8.1125||S\r\n1092|3|\"Murphy, Miss. Nora\"|female||0|0|36568|15.5||Q\r\n1093|3|\"Danbom, Master. Gilbert Sigvard Emanuel\"|male|0.33|0|2|347080|14.4||S\r\n1094|1|\"Astor, Col. John Jacob\"|male|47|1|0|PC 17757|227.525|C62 C64|C\r\n1095|2|\"Quick, Miss. Winifred Vera\"|female|8|1|1|26360|26||S\r\n1096|2|\"Andrew, Mr. Frank Thomas\"|male|25|0|0|C.A. 34050|10.5||S\r\n1097|1|\"Omont, Mr. Alfred Fernand\"|male||0|0|F.C. 12998|25.7417||C\r\n1098|3|\"McGowan, Miss. Katherine\"|female|35|0|0|9232|7.75||Q\r\n1099|2|\"Collett, Mr. Sidney C Stuart\"|male|24|0|0|28034|10.5||S\r\n1100|1|\"Rosenbaum, Miss. Edith Louise\"|female|33|0|0|PC 17613|27.7208|A11|C\r\n1101|3|\"Delalic, Mr. Redjo\"|male|25|0|0|349250|7.8958||S\r\n1102|3|\"Andersen, Mr. Albert Karvin\"|male|32|0|0|C 4001|22.525||S\r\n1103|3|\"Finoli, Mr. Luigi\"|male||0|0|SOTON/O.Q. 3101308|7.05||S\r\n1104|2|\"Deacon, Mr. Percy William\"|male|17|0|0|S.O.C. 14879|73.5||S\r\n1105|2|\"Howard, Mrs. Benjamin (Ellen Truelove Arman)\"|female|60|1|0|24065|26||S\r\n1106|3|\"Andersson, Miss. Ida Augusta Margareta\"|female|38|4|2|347091|7.775||S\r\n1107|1|\"Head, Mr. Christopher\"|male|42|0|0|113038|42.5|B11|S\r\n1108|3|\"Mahon, Miss. Bridget Delia\"|female||0|0|330924|7.8792||Q\r\n1109|1|\"Wick, Mr. George Dennick\"|male|57|1|1|36928|164.8667||S\r\n1110|1|\"Widener, Mrs. George Dunton (Eleanor Elkins)\"|female|50|1|1|113503|211.5|C80|C\r\n1111|3|\"Thomson, Mr. Alexander Morrison\"|male||0|0|32302|8.05||S\r\n1112|2|\"Duran y More, Miss. Florentina\"|female|30|1|0|SC/PARIS 2148|13.8583||C\r\n1113|3|\"Reynolds, Mr. Harold J\"|male|21|0|0|342684|8.05||S\r\n1114|2|\"Cook, Mrs. (Selena Rogers)\"|female|22|0|0|W./C. 14266|10.5|F33|S\r\n1115|3|\"Karlsson, Mr. Einar Gervasius\"|male|21|0|0|350053|7.7958||S\r\n1116|1|\"Candee, Mrs. Edward (Helen Churchill Hungerford)\"|female|53|0|0|PC 17606|27.4458||C\r\n1117|3|\"Moubarek, Mrs. George (Omine Amenia\"\" Alexander)\"\"\"|female||0|2|2661|15.2458||C\r\n1118|3|\"Asplund, Mr. Johan Charles\"|male|23|0|0|350054|7.7958||S\r\n1119|3|\"McNeill, Miss. Bridget\"|female||0|0|370368|7.75||Q\r\n1120|3|\"Everett, Mr. Thomas James\"|male|40.5|0|0|C.A. 6212|15.1||S\r\n1121|2|\"Hocking, Mr. Samuel James Metcalfe\"|male|36|0|0|242963|13||S\r\n1122|2|\"Sweet, Mr. George Frederick\"|male|14|0|0|220845|65||S\r\n1123|1|\"Willard, Miss. Constance\"|female|21|0|0|113795|26.55||S\r\n1124|3|\"Wiklund, Mr. Karl Johan\"|male|21|1|0|3101266|6.4958||S\r\n1125|3|\"Linehan, Mr. Michael\"|male||0|0|330971|7.8792||Q\r\n1126|1|\"Cumings, Mr. John Bradley\"|male|39|1|0|PC 17599|71.2833|C85|C\r\n1127|3|\"Vendel, Mr. Olof Edvin\"|male|20|0|0|350416|7.8542||S\r\n1128|1|\"Warren, Mr. Frank Manley\"|male|64|1|0|110813|75.25|D37|C\r\n1129|3|\"Baccos, Mr. Raffull\"|male|20|0|0|2679|7.225||C\r\n1130|2|\"Hiltunen, Miss. Marta\"|female|18|1|1|250650|13||S\r\n1131|1|\"Douglas, Mrs. Walter Donald (Mahala Dutton)\"|female|48|1|0|PC 17761|106.425|C86|C\r\n1132|1|\"Lindstrom, Mrs. Carl Johan (Sigrid Posse)\"|female|55|0|0|112377|27.7208||C\r\n1133|2|\"Christy, Mrs. (Alice Frances)\"|female|45|0|2|237789|30||S\r\n1134|1|\"Spedden, Mr. Frederic Oakley\"|male|45|1|1|16966|134.5|E34|C\r\n1135|3|\"Hyman, Mr. Abraham\"|male||0|0|3470|7.8875||S\r\n1136|3|\"Johnston, Master. William Arthur Willie\"\"\"\"\"|male||1|2|W./C. 6607|23.45||S\r\n1137|1|\"Kenyon, Mr. Frederick R\"|male|41|1|0|17464|51.8625|D21|S\r\n1138|2|\"Karnes, Mrs. J Frank (Claire Bennett)\"|female|22|0|0|F.C.C. 13534|21||S\r\n1139|2|\"Drew, Mr. James Vivian\"|male|42|1|1|28220|32.5||S\r\n1140|2|\"Hold, Mrs. Stephen (Annie Margaret Hill)\"|female|29|1|0|26707|26||S\r\n1141|3|\"Khalil, Mrs. Betros (Zahie Maria\"\" Elias)\"\"\"|female||1|0|2660|14.4542||C\r\n1142|2|\"West, Miss. Barbara J\"|female|0.92|1|2|C.A. 34651|27.75||S\r\n1143|3|\"Abrahamsson, Mr. Abraham August Johannes\"|male|20|0|0|SOTON/O2 3101284|7.925||S\r\n1144|1|\"Clark, Mr. Walter Miller\"|male|27|1|0|13508|136.7792|C89|C\r\n1145|3|\"Salander, Mr. Karl Johan\"|male|24|0|0|7266|9.325||S\r\n1146|3|\"Wenzel, Mr. Linhart\"|male|32.5|0|0|345775|9.5||S\r\n1147|3|\"MacKay, Mr. George William\"|male||0|0|C.A. 42795|7.55||S\r\n1148|3|\"Mahon, Mr. John\"|male||0|0|AQ/4 3130|7.75||Q\r\n1149|3|\"Niklasson, Mr. Samuel\"|male|28|0|0|363611|8.05||S\r\n1150|2|\"Bentham, Miss. Lilian W\"|female|19|0|0|28404|13||S\r\n1151|3|\"Midtsjo, Mr. Karl Albert\"|male|21|0|0|345501|7.775||S\r\n1152|3|\"de Messemaeker, Mr. Guillaume Joseph\"|male|36.5|1|0|345572|17.4||S\r\n1153|3|\"Nilsson, Mr. August Ferdinand\"|male|21|0|0|350410|7.8542||S\r\n1154|2|\"Wells, Mrs. Arthur Henry (Addie\"\" Dart Trevaskis)\"\"\"|female|29|0|2|29103|23||S\r\n1155|3|\"Klasen, Miss. Gertrud Emilia\"|female|1|1|1|350405|12.1833||S\r\n1156|2|\"Portaluppi, Mr. Emilio Ilario Giuseppe\"|male|30|0|0|C.A. 34644|12.7375||C\r\n1157|3|\"Lyntakoff, Mr. Stanko\"|male||0|0|349235|7.8958||S\r\n1158|1|\"Chisholm, Mr. Roderick Robert Crispin\"|male||0|0|112051|0||S\r\n1159|3|\"Warren, Mr. Charles William\"|male||0|0|C.A. 49867|7.55||S\r\n1160|3|\"Howard, Miss. May Elizabeth\"|female||0|0|A. 2. 39186|8.05||S\r\n1161|3|\"Pokrnic, Mr. Mate\"|male|17|0|0|315095|8.6625||S\r\n1162|1|\"McCaffry, Mr. Thomas Francis\"|male|46|0|0|13050|75.2417|C6|C\r\n1163|3|\"Fox, Mr. Patrick\"|male||0|0|368573|7.75||Q\r\n1164|1|\"Clark, Mrs. Walter Miller (Virginia McDowell)\"|female|26|1|0|13508|136.7792|C89|C\r\n1165|3|\"Lennon, Miss. Mary\"|female||1|0|370371|15.5||Q\r\n1166|3|\"Saade, Mr. Jean Nassr\"|male||0|0|2676|7.225||C\r\n1167|2|\"Bryhl, Miss. Dagmar Jenny Ingeborg \"|female|20|1|0|236853|26||S\r\n1168|2|\"Parker, Mr. Clifford Richard\"|male|28|0|0|SC 14888|10.5||S\r\n1169|2|\"Faunthorpe, Mr. Harry\"|male|40|1|0|2926|26||S\r\n1170|2|\"Ware, Mr. John James\"|male|30|1|0|CA 31352|21||S\r\n1171|2|\"Oxenham, Mr. Percy Thomas\"|male|22|0|0|W./C. 14260|10.5||S\r\n1172|3|\"Oreskovic, Miss. Jelka\"|female|23|0|0|315085|8.6625||S\r\n1173|3|\"Peacock, Master. Alfred Edward\"|male|0.75|1|1|SOTON/O.Q. 3101315|13.775||S\r\n1174|3|\"Fleming, Miss. Honora\"|female||0|0|364859|7.75||Q\r\n1175|3|\"Touma, Miss. Maria Youssef\"|female|9|1|1|2650|15.2458||C\r\n1176|3|\"Rosblom, Miss. Salli Helena\"|female|2|1|1|370129|20.2125||S\r\n1177|3|\"Dennis, Mr. William\"|male|36|0|0|A/5 21175|7.25||S\r\n1178|3|\"Franklin, Mr. Charles (Charles Fardon)\"|male||0|0|SOTON/O.Q. 3101314|7.25||S\r\n1179|1|\"Snyder, Mr. John Pillsbury\"|male|24|1|0|21228|82.2667|B45|S\r\n1180|3|\"Mardirosian, Mr. Sarkis\"|male||0|0|2655|7.2292|F E46|C\r\n1181|3|\"Ford, Mr. Arthur\"|male||0|0|A/5 1478|8.05||S\r\n1182|1|\"Rheims, Mr. George Alexander Lucien\"|male||0|0|PC 17607|39.6||S\r\n1183|3|\"Daly, Miss. Margaret Marcella Maggie\"\"\"\"\"|female|30|0|0|382650|6.95||Q\r\n1184|3|\"Nasr, Mr. Mustafa\"|male||0|0|2652|7.2292||C\r\n1185|1|\"Dodge, Dr. Washington\"|male|53|1|1|33638|81.8583|A34|S\r\n1186|3|\"Wittevrongel, Mr. Camille\"|male|36|0|0|345771|9.5||S\r\n1187|3|\"Angheloff, Mr. Minko\"|male|26|0|0|349202|7.8958||S\r\n1188|2|\"Laroche, Miss. Louise\"|female|1|1|2|SC/Paris 2123|41.5792||C\r\n1189|3|\"Samaan, Mr. Hanna\"|male||2|0|2662|21.6792||C\r\n1190|1|\"Loring, Mr. Joseph Holland\"|male|30|0|0|113801|45.5||S\r\n1191|3|\"Johansson, Mr. Nils\"|male|29|0|0|347467|7.8542||S\r\n1192|3|\"Olsson, Mr. Oscar Wilhelm\"|male|32|0|0|347079|7.775||S\r\n1193|2|\"Malachard, Mr. Noel\"|male||0|0|237735|15.0458|D|C\r\n1194|2|\"Phillips, Mr. Escott Robert\"|male|43|0|1|S.O./P.P. 2|21||S\r\n1195|3|\"Pokrnic, Mr. Tome\"|male|24|0|0|315092|8.6625||S\r\n1196|3|\"McCarthy, Miss. Catherine Katie\"\"\"\"\"|female||0|0|383123|7.75||Q\r\n1197|1|\"Crosby, Mrs. Edward Gifford (Catherine Elizabeth Halstead)\"|female|64|1|1|112901|26.55|B26|S\r\n1198|1|\"Allison, Mr. Hudson Joshua Creighton\"|male|30|1|2|113781|151.55|C22 C26|S\r\n1199|3|\"Aks, Master. Philip Frank\"|male|0.83|0|1|392091|9.35||S\r\n1200|1|\"Hays, Mr. Charles Melville\"|male|55|1|1|12749|93.5|B69|S\r\n1201|3|\"Hansen, Mrs. Claus Peter (Jennie L Howard)\"|female|45|1|0|350026|14.1083||S\r\n1202|3|\"Cacic, Mr. Jego Grga\"|male|18|0|0|315091|8.6625||S\r\n1203|3|\"Vartanian, Mr. David\"|male|22|0|0|2658|7.225||C\r\n1204|3|\"Sadowitz, Mr. Harry\"|male||0|0|LP 1588|7.575||S\r\n1205|3|\"Carr, Miss. Jeannie\"|female|37|0|0|368364|7.75||Q\r\n1206|1|\"White, Mrs. John Stuart (Ella Holmes)\"|female|55|0|0|PC 17760|135.6333|C32|C\r\n1207|3|\"Hagardon, Miss. Kate\"|female|17|0|0|AQ/3. 30631|7.7333||Q\r\n1208|1|\"Spencer, Mr. William Augustus\"|male|57|1|0|PC 17569|146.5208|B78|C\r\n1209|2|\"Rogers, Mr. Reginald Harry\"|male|19|0|0|28004|10.5||S\r\n1210|3|\"Jonsson, Mr. Nils Hilding\"|male|27|0|0|350408|7.8542||S\r\n1211|2|\"Jefferys, Mr. Ernest Wilfred\"|male|22|2|0|C.A. 31029|31.5||S\r\n1212|3|\"Andersson, Mr. Johan Samuel\"|male|26|0|0|347075|7.775||S\r\n1213|3|\"Krekorian, Mr. Neshan\"|male|25|0|0|2654|7.2292|F E57|C\r\n1214|2|\"Nesson, Mr. Israel\"|male|26|0|0|244368|13|F2|S\r\n1215|1|\"Rowe, Mr. Alfred G\"|male|33|0|0|113790|26.55||S\r\n1216|1|\"Kreuchen, Miss. Emilie\"|female|39|0|0|24160|211.3375||S\r\n1217|3|\"Assam, Mr. Ali\"|male|23|0|0|SOTON/O.Q. 3101309|7.05||S\r\n1218|2|\"Becker, Miss. Ruth Elizabeth\"|female|12|2|1|230136|39|F4|S\r\n1219|1|\"Rosenshine, Mr. George (Mr George Thorne\"\")\"\"\"|male|46|0|0|PC 17585|79.2||C\r\n1220|2|\"Clarke, Mr. Charles Valentine\"|male|29|1|0|2003|26||S\r\n1221|2|\"Enander, Mr. Ingvar\"|male|21|0|0|236854|13||S\r\n1222|2|\"Davies, Mrs. John Morgan (Elizabeth Agnes Mary White) \"|female|48|0|2|C.A. 33112|36.75||S\r\n1223|1|\"Dulles, Mr. William Crothers\"|male|39|0|0|PC 17580|29.7|A18|C\r\n1224|3|\"Thomas, Mr. Tannous\"|male||0|0|2684|7.225||C\r\n1225|3|\"Nakid, Mrs. Said (Waika Mary\"\" Mowad)\"\"\"|female|19|1|1|2653|15.7417||C\r\n1226|3|\"Cor, Mr. Ivan\"|male|27|0|0|349229|7.8958||S\r\n1227|1|\"Maguire, Mr. John Edward\"|male|30|0|0|110469|26|C106|S\r\n1228|2|\"de Brito, Mr. Jose Joaquim\"|male|32|0|0|244360|13||S\r\n1229|3|\"Elias, Mr. Joseph\"|male|39|0|2|2675|7.2292||C\r\n1230|2|\"Denbury, Mr. Herbert\"|male|25|0|0|C.A. 31029|31.5||S\r\n1231|3|\"Betros, Master. Seman\"|male||0|0|2622|7.2292||C\r\n1232|2|\"Fillbrook, Mr. Joseph Charles\"|male|18|0|0|C.A. 15185|10.5||S\r\n1233|3|\"Lundstrom, Mr. Thure Edvin\"|male|32|0|0|350403|7.5792||S\r\n1234|3|\"Sage, Mr. John George\"|male||1|9|CA. 2343|69.55||S\r\n1235|1|\"Cardeza, Mrs. James Warburton Martinez (Charlotte Wardle Drake)\"|female|58|0|1|PC 17755|512.3292|B51 B53 B55|C\r\n1236|3|\"van Billiard, Master. James William\"|male||1|1|A/5. 851|14.5||S\r\n1237|3|\"Abelseth, Miss. Karen Marie\"|female|16|0|0|348125|7.65||S\r\n1238|2|\"Botsford, Mr. William Hull\"|male|26|0|0|237670|13||S\r\n1239|3|\"Whabee, Mrs. George Joseph (Shawneene Abi-Saab)\"|female|38|0|0|2688|7.2292||C\r\n1240|2|\"Giles, Mr. Ralph\"|male|24|0|0|248726|13.5||S\r\n1241|2|\"Walcroft, Miss. Nellie\"|female|31|0|0|F.C.C. 13528|21||S\r\n1242|1|\"Greenfield, Mrs. Leo David (Blanche Strouse)\"|female|45|0|1|PC 17759|63.3583|D10 D12|C\r\n1243|2|\"Stokes, Mr. Philip Joseph\"|male|25|0|0|F.C.C. 13540|10.5||S\r\n1244|2|\"Dibden, Mr. William\"|male|18|0|0|S.O.C. 14879|73.5||S\r\n1245|2|\"Herman, Mr. Samuel\"|male|49|1|2|220845|65||S\r\n1246|3|\"Dean, Miss. Elizabeth Gladys Millvina\"\"\"\"\"|female|0.17|1|2|C.A. 2315|20.575||S\r\n1247|1|\"Julian, Mr. Henry Forbes\"|male|50|0|0|113044|26|E60|S\r\n1248|1|\"Brown, Mrs. John Murray (Caroline Lane Lamson)\"|female|59|2|0|11769|51.4792|C101|S\r\n1249|3|\"Lockyer, Mr. Edward\"|male||0|0|1222|7.8792||S\r\n1250|3|\"O'Keefe, Mr. Patrick\"|male||0|0|368402|7.75||Q\r\n1251|3|\"Lindell, Mrs. Edvard Bengtsson (Elin Gerda Persson)\"|female|30|1|0|349910|15.55||S\r\n1252|3|\"Sage, Master. William Henry\"|male|14.5|8|2|CA. 2343|69.55||S\r\n1253|2|\"Mallet, Mrs. Albert (Antoinette Magnin)\"|female|24|1|1|S.C./PARIS 2079|37.0042||C\r\n1254|2|\"Ware, Mrs. John James (Florence Louise Long)\"|female|31|0|0|CA 31352|21||S\r\n1255|3|\"Strilic, Mr. Ivan\"|male|27|0|0|315083|8.6625||S\r\n1256|1|\"Harder, Mrs. George Achilles (Dorothy Annan)\"|female|25|1|0|11765|55.4417|E50|C\r\n1257|3|\"Sage, Mrs. John (Annie Bullen)\"|female||1|9|CA. 2343|69.55||S\r\n1258|3|\"Caram, Mr. Joseph\"|male||1|0|2689|14.4583||C\r\n1259|3|\"Riihivouri, Miss. Susanna Juhantytar Sanni\"\"\"\"\"|female|22|0|0|3101295|39.6875||S\r\n1260|1|\"Gibson, Mrs. Leonard (Pauline C Boeson)\"|female|45|0|1|112378|59.4||C\r\n1261|2|\"Pallas y Castello, Mr. Emilio\"|male|29|0|0|SC/PARIS 2147|13.8583||C\r\n1262|2|\"Giles, Mr. Edgar\"|male|21|1|0|28133|11.5||S\r\n1263|1|\"Wilson, Miss. Helen Alice\"|female|31|0|0|16966|134.5|E39 E41|C\r\n1264|1|\"Ismay, Mr. Joseph Bruce\"|male|49|0|0|112058|0|B52 B54 B56|S\r\n1265|2|\"Harbeck, Mr. William H\"|male|44|0|0|248746|13||S\r\n1266|1|\"Dodge, Mrs. Washington (Ruth Vidaver)\"|female|54|1|1|33638|81.8583|A34|S\r\n1267|1|\"Bowen, Miss. Grace Scott\"|female|45|0|0|PC 17608|262.375||C\r\n1268|3|\"Kink, Miss. Maria\"|female|22|2|0|315152|8.6625||S\r\n1269|2|\"Cotterill, Mr. Henry Harry\"\"\"\"\"|male|21|0|0|29107|11.5||S\r\n1270|1|\"Hipkins, Mr. William Edward\"|male|55|0|0|680|50|C39|S\r\n1271|3|\"Asplund, Master. Carl Edgar\"|male|5|4|2|347077|31.3875||S\r\n1272|3|\"O'Connor, Mr. Patrick\"|male||0|0|366713|7.75||Q\r\n1273|3|\"Foley, Mr. Joseph\"|male|26|0|0|330910|7.8792||Q\r\n1274|3|\"Risien, Mrs. Samuel (Emma)\"|female||0|0|364498|14.5||S\r\n1275|3|\"McNamee, Mrs. Neal (Eileen O'Leary)\"|female|19|1|0|376566|16.1||S\r\n1276|2|\"Wheeler, Mr. Edwin Frederick\"\"\"\"\"|male||0|0|SC/PARIS 2159|12.875||S\r\n1277|2|\"Herman, Miss. Kate\"|female|24|1|2|220845|65||S\r\n1278|3|\"Aronsson, Mr. Ernst Axel Algot\"|male|24|0|0|349911|7.775||S\r\n1279|2|\"Ashby, Mr. John\"|male|57|0|0|244346|13||S\r\n1280|3|\"Canavan, Mr. Patrick\"|male|21|0|0|364858|7.75||Q\r\n1281|3|\"Palsson, Master. Paul Folke\"|male|6|3|1|349909|21.075||S\r\n1282|1|\"Payne, Mr. Vivian Ponsonby\"|male|23|0|0|12749|93.5|B24|S\r\n1283|1|\"Lines, Mrs. Ernest H (Elizabeth Lindsey James)\"|female|51|0|1|PC 17592|39.4|D28|S\r\n1284|3|\"Abbott, Master. Eugene Joseph\"|male|13|0|2|C.A. 2673|20.25||S\r\n1285|2|\"Gilbert, Mr. William\"|male|47|0|0|C.A. 30769|10.5||S\r\n1286|3|\"Kink-Heilmann, Mr. Anton\"|male|29|3|1|315153|22.025||S\r\n1287|1|\"Smith, Mrs. Lucien Philip (Mary Eloise Hughes)\"|female|18|1|0|13695|60|C31|S\r\n1288|3|\"Colbert, Mr. Patrick\"|male|24|0|0|371109|7.25||Q\r\n1289|1|\"Frolicher-Stehli, Mrs. Maxmillian (Margaretha Emerentia Stehli)\"|female|48|1|1|13567|79.2|B41|C\r\n1290|3|\"Larsson-Rondberg, Mr. Edvard A\"|male|22|0|0|347065|7.775||S\r\n1291|3|\"Conlon, Mr. Thomas Henry\"|male|31|0|0|21332|7.7333||Q\r\n1292|1|\"Bonnell, Miss. Caroline\"|female|30|0|0|36928|164.8667|C7|S\r\n1293|2|\"Gale, Mr. Harry\"|male|38|1|0|28664|21||S\r\n1294|1|\"Gibson, Miss. Dorothy Winifred\"|female|22|0|1|112378|59.4||C\r\n1295|1|\"Carrau, Mr. Jose Pedro\"|male|17|0|0|113059|47.1||S\r\n1296|1|\"Frauenthal, Mr. Isaac Gerald\"|male|43|1|0|17765|27.7208|D40|C\r\n1297|2|\"Nourney, Mr. Alfred (Baron von Drachstedt\"\")\"\"\"|male|20|0|0|SC/PARIS 2166|13.8625|D38|C\r\n1298|2|\"Ware, Mr. William Jeffery\"|male|23|1|0|28666|10.5||S\r\n1299|1|\"Widener, Mr. George Dunton\"|male|50|1|1|113503|211.5|C80|C\r\n1300|3|\"Riordan, Miss. Johanna Hannah\"\"\"\"\"|female||0|0|334915|7.7208||Q\r\n1301|3|\"Peacock, Miss. Treasteall\"|female|3|1|1|SOTON/O.Q. 3101315|13.775||S\r\n1302|3|\"Naughton, Miss. Hannah\"|female||0|0|365237|7.75||Q\r\n1303|1|\"Minahan, Mrs. William Edward (Lillian E Thorpe)\"|female|37|1|0|19928|90|C78|Q\r\n1304|3|\"Henriksson, Miss. Jenny Lovisa\"|female|28|0|0|347086|7.775||S\r\n1305|3|\"Spector, Mr. Woolf\"|male||0|0|A.5. 3236|8.05||S\r\n1306|1|\"Oliva y Ocana, Dona. Fermina\"|female|39|0|0|PC 17758|108.9|C105|C\r\n1307|3|\"Saether, Mr. Simon Sivertsen\"|male|38.5|0|0|SOTON/O.Q. 3101262|7.25||S\r\n1308|3|\"Ware, Mr. Frederick\"|male||0|0|359309|8.05||S\r\n1309|3|\"Peter, Master. Michael J\"|male||1|1|2668|22.3583||C\r\n"
  },
  {
    "path": "data/chap1/Titanic_tab.txt",
    "content": "PassengerId\tSurvived\tPclass\tName\tSex\tAge\tSibSp\tParch\tTicket\tFare\tCabin\tEmbarked\r\n1\t0\t3\t\"Braund, Mr. Owen Harris\"\tmale\t22\t1\t0\tA/5 21171\t7.25\t\tS\r\n2\t1\t1\t\"Cumings, Mrs. John Bradley (Florence Briggs Thayer)\"\tfemale\t38\t1\t0\tPC 17599\t71.2833\tC85\tC\r\n3\t1\t3\t\"Heikkinen, Miss. Laina\"\tfemale\t26\t0\t0\tSTON/O2. 3101282\t7.925\t\tS\r\n4\t1\t1\t\"Futrelle, Mrs. Jacques Heath (Lily May Peel)\"\tfemale\t35\t1\t0\t113803\t53.1\tC123\tS\r\n5\t0\t3\t\"Allen, Mr. William Henry\"\tmale\t35\t0\t0\t373450\t8.05\t\tS\r\n6\t0\t3\t\"Moran, Mr. James\"\tmale\t\t0\t0\t330877\t8.4583\t\tQ\r\n7\t0\t1\t\"McCarthy, Mr. Timothy J\"\tmale\t54\t0\t0\t17463\t51.8625\tE46\tS\r\n8\t0\t3\t\"Palsson, Master. Gosta Leonard\"\tmale\t2\t3\t1\t349909\t21.075\t\tS\r\n9\t1\t3\t\"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)\"\tfemale\t27\t0\t2\t347742\t11.1333\t\tS\r\n10\t1\t2\t\"Nasser, Mrs. Nicholas (Adele Achem)\"\tfemale\t14\t1\t0\t237736\t30.0708\t\tC\r\n11\t1\t3\t\"Sandstrom, Miss. Marguerite Rut\"\tfemale\t4\t1\t1\tPP 9549\t16.7\tG6\tS\r\n12\t1\t1\t\"Bonnell, Miss. Elizabeth\"\tfemale\t58\t0\t0\t113783\t26.55\tC103\tS\r\n13\t0\t3\t\"Saundercock, Mr. William Henry\"\tmale\t20\t0\t0\tA/5. 2151\t8.05\t\tS\r\n14\t0\t3\t\"Andersson, Mr. Anders Johan\"\tmale\t39\t1\t5\t347082\t31.275\t\tS\r\n15\t0\t3\t\"Vestrom, Miss. Hulda Amanda Adolfina\"\tfemale\t14\t0\t0\t350406\t7.8542\t\tS\r\n16\t1\t2\t\"Hewlett, Mrs. (Mary D Kingcome) \"\tfemale\t55\t0\t0\t248706\t16\t\tS\r\n17\t0\t3\t\"Rice, Master. Eugene\"\tmale\t2\t4\t1\t382652\t29.125\t\tQ\r\n18\t1\t2\t\"Williams, Mr. Charles Eugene\"\tmale\t\t0\t0\t244373\t13\t\tS\r\n19\t0\t3\t\"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)\"\tfemale\t31\t1\t0\t345763\t18\t\tS\r\n20\t1\t3\t\"Masselmani, Mrs. Fatima\"\tfemale\t\t0\t0\t2649\t7.225\t\tC\r\n21\t0\t2\t\"Fynney, Mr. Joseph J\"\tmale\t35\t0\t0\t239865\t26\t\tS\r\n22\t1\t2\t\"Beesley, Mr. Lawrence\"\tmale\t34\t0\t0\t248698\t13\tD56\tS\r\n23\t1\t3\t\"McGowan, Miss. Anna \"\"Annie\"\"\"\tfemale\t15\t0\t0\t330923\t8.0292\t\tQ\r\n24\t1\t1\t\"Sloper, Mr. William Thompson\"\tmale\t28\t0\t0\t113788\t35.5\tA6\tS\r\n25\t0\t3\t\"Palsson, Miss. Torborg Danira\"\tfemale\t8\t3\t1\t349909\t21.075\t\tS\r\n26\t1\t3\t\"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)\"\tfemale\t38\t1\t5\t347077\t31.3875\t\tS\r\n27\t0\t3\t\"Emir, Mr. Farred Chehab\"\tmale\t\t0\t0\t2631\t7.225\t\tC\r\n28\t0\t1\t\"Fortune, Mr. Charles Alexander\"\tmale\t19\t3\t2\t19950\t263\tC23 C25 C27\tS\r\n29\t1\t3\t\"O'Dwyer, Miss. Ellen \"\"Nellie\"\"\"\tfemale\t\t0\t0\t330959\t7.8792\t\tQ\r\n30\t0\t3\t\"Todoroff, Mr. Lalio\"\tmale\t\t0\t0\t349216\t7.8958\t\tS\r\n31\t0\t1\t\"Uruchurtu, Don. Manuel E\"\tmale\t40\t0\t0\tPC 17601\t27.7208\t\tC\r\n32\t1\t1\t\"Spencer, Mrs. William Augustus (Marie Eugenie)\"\tfemale\t\t1\t0\tPC 17569\t146.5208\tB78\tC\r\n33\t1\t3\t\"Glynn, Miss. Mary Agatha\"\tfemale\t\t0\t0\t335677\t7.75\t\tQ\r\n34\t0\t2\t\"Wheadon, Mr. Edward H\"\tmale\t66\t0\t0\tC.A. 24579\t10.5\t\tS\r\n35\t0\t1\t\"Meyer, Mr. Edgar Joseph\"\tmale\t28\t1\t0\tPC 17604\t82.1708\t\tC\r\n36\t0\t1\t\"Holverson, Mr. Alexander Oskar\"\tmale\t42\t1\t0\t113789\t52\t\tS\r\n37\t1\t3\t\"Mamee, Mr. Hanna\"\tmale\t\t0\t0\t2677\t7.2292\t\tC\r\n38\t0\t3\t\"Cann, Mr. Ernest Charles\"\tmale\t21\t0\t0\tA./5. 2152\t8.05\t\tS\r\n39\t0\t3\t\"Vander Planke, Miss. Augusta Maria\"\tfemale\t18\t2\t0\t345764\t18\t\tS\r\n40\t1\t3\t\"Nicola-Yarred, Miss. Jamila\"\tfemale\t14\t1\t0\t2651\t11.2417\t\tC\r\n41\t0\t3\t\"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)\"\tfemale\t40\t1\t0\t7546\t9.475\t\tS\r\n42\t0\t2\t\"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)\"\tfemale\t27\t1\t0\t11668\t21\t\tS\r\n43\t0\t3\t\"Kraeff, Mr. Theodor\"\tmale\t\t0\t0\t349253\t7.8958\t\tC\r\n44\t1\t2\t\"Laroche, Miss. Simonne Marie Anne Andree\"\tfemale\t3\t1\t2\tSC/Paris 2123\t41.5792\t\tC\r\n45\t1\t3\t\"Devaney, Miss. Margaret Delia\"\tfemale\t19\t0\t0\t330958\t7.8792\t\tQ\r\n46\t0\t3\t\"Rogers, Mr. William John\"\tmale\t\t0\t0\tS.C./A.4. 23567\t8.05\t\tS\r\n47\t0\t3\t\"Lennon, Mr. Denis\"\tmale\t\t1\t0\t370371\t15.5\t\tQ\r\n48\t1\t3\t\"O'Driscoll, Miss. Bridget\"\tfemale\t\t0\t0\t14311\t7.75\t\tQ\r\n49\t0\t3\t\"Samaan, Mr. Youssef\"\tmale\t\t2\t0\t2662\t21.6792\t\tC\r\n50\t0\t3\t\"Arnold-Franchi, Mrs. Josef (Josefine Franchi)\"\tfemale\t18\t1\t0\t349237\t17.8\t\tS\r\n51\t0\t3\t\"Panula, Master. Juha Niilo\"\tmale\t7\t4\t1\t3101295\t39.6875\t\tS\r\n52\t0\t3\t\"Nosworthy, Mr. Richard Cater\"\tmale\t21\t0\t0\tA/4. 39886\t7.8\t\tS\r\n53\t1\t1\t\"Harper, Mrs. Henry Sleeper (Myna Haxtun)\"\tfemale\t49\t1\t0\tPC 17572\t76.7292\tD33\tC\r\n54\t1\t2\t\"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)\"\tfemale\t29\t1\t0\t2926\t26\t\tS\r\n55\t0\t1\t\"Ostby, Mr. Engelhart Cornelius\"\tmale\t65\t0\t1\t113509\t61.9792\tB30\tC\r\n56\t1\t1\t\"Woolner, Mr. Hugh\"\tmale\t\t0\t0\t19947\t35.5\tC52\tS\r\n57\t1\t2\t\"Rugg, Miss. Emily\"\tfemale\t21\t0\t0\tC.A. 31026\t10.5\t\tS\r\n58\t0\t3\t\"Novel, Mr. Mansouer\"\tmale\t28.5\t0\t0\t2697\t7.2292\t\tC\r\n59\t1\t2\t\"West, Miss. Constance Mirium\"\tfemale\t5\t1\t2\tC.A. 34651\t27.75\t\tS\r\n60\t0\t3\t\"Goodwin, Master. William Frederick\"\tmale\t11\t5\t2\tCA 2144\t46.9\t\tS\r\n61\t0\t3\t\"Sirayanian, Mr. Orsen\"\tmale\t22\t0\t0\t2669\t7.2292\t\tC\r\n62\t1\t1\t\"Icard, Miss. Amelie\"\tfemale\t38\t0\t0\t113572\t80\tB28\t\r\n63\t0\t1\t\"Harris, Mr. Henry Birkhardt\"\tmale\t45\t1\t0\t36973\t83.475\tC83\tS\r\n64\t0\t3\t\"Skoog, Master. Harald\"\tmale\t4\t3\t2\t347088\t27.9\t\tS\r\n65\t0\t1\t\"Stewart, Mr. Albert A\"\tmale\t\t0\t0\tPC 17605\t27.7208\t\tC\r\n66\t1\t3\t\"Moubarek, Master. Gerios\"\tmale\t\t1\t1\t2661\t15.2458\t\tC\r\n67\t1\t2\t\"Nye, Mrs. (Elizabeth Ramell)\"\tfemale\t29\t0\t0\tC.A. 29395\t10.5\tF33\tS\r\n68\t0\t3\t\"Crease, Mr. Ernest James\"\tmale\t19\t0\t0\tS.P. 3464\t8.1583\t\tS\r\n69\t1\t3\t\"Andersson, Miss. Erna Alexandra\"\tfemale\t17\t4\t2\t3101281\t7.925\t\tS\r\n70\t0\t3\t\"Kink, Mr. Vincenz\"\tmale\t26\t2\t0\t315151\t8.6625\t\tS\r\n71\t0\t2\t\"Jenkin, Mr. Stephen Curnow\"\tmale\t32\t0\t0\tC.A. 33111\t10.5\t\tS\r\n72\t0\t3\t\"Goodwin, Miss. Lillian Amy\"\tfemale\t16\t5\t2\tCA 2144\t46.9\t\tS\r\n73\t0\t2\t\"Hood, Mr. Ambrose Jr\"\tmale\t21\t0\t0\tS.O.C. 14879\t73.5\t\tS\r\n74\t0\t3\t\"Chronopoulos, Mr. Apostolos\"\tmale\t26\t1\t0\t2680\t14.4542\t\tC\r\n75\t1\t3\t\"Bing, Mr. Lee\"\tmale\t32\t0\t0\t1601\t56.4958\t\tS\r\n76\t0\t3\t\"Moen, Mr. Sigurd Hansen\"\tmale\t25\t0\t0\t348123\t7.65\tF G73\tS\r\n77\t0\t3\t\"Staneff, Mr. Ivan\"\tmale\t\t0\t0\t349208\t7.8958\t\tS\r\n78\t0\t3\t\"Moutal, Mr. Rahamin Haim\"\tmale\t\t0\t0\t374746\t8.05\t\tS\r\n79\t1\t2\t\"Caldwell, Master. Alden Gates\"\tmale\t0.83\t0\t2\t248738\t29\t\tS\r\n80\t1\t3\t\"Dowdell, Miss. Elizabeth\"\tfemale\t30\t0\t0\t364516\t12.475\t\tS\r\n81\t0\t3\t\"Waelens, Mr. Achille\"\tmale\t22\t0\t0\t345767\t9\t\tS\r\n82\t1\t3\t\"Sheerlinck, Mr. Jan Baptist\"\tmale\t29\t0\t0\t345779\t9.5\t\tS\r\n83\t1\t3\t\"McDermott, Miss. Brigdet Delia\"\tfemale\t\t0\t0\t330932\t7.7875\t\tQ\r\n84\t0\t1\t\"Carrau, Mr. Francisco M\"\tmale\t28\t0\t0\t113059\t47.1\t\tS\r\n85\t1\t2\t\"Ilett, Miss. Bertha\"\tfemale\t17\t0\t0\tSO/C 14885\t10.5\t\tS\r\n86\t1\t3\t\"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)\"\tfemale\t33\t3\t0\t3101278\t15.85\t\tS\r\n87\t0\t3\t\"Ford, Mr. William Neal\"\tmale\t16\t1\t3\tW./C. 6608\t34.375\t\tS\r\n88\t0\t3\t\"Slocovski, Mr. Selman Francis\"\tmale\t\t0\t0\tSOTON/OQ 392086\t8.05\t\tS\r\n89\t1\t1\t\"Fortune, Miss. Mabel Helen\"\tfemale\t23\t3\t2\t19950\t263\tC23 C25 C27\tS\r\n90\t0\t3\t\"Celotti, Mr. Francesco\"\tmale\t24\t0\t0\t343275\t8.05\t\tS\r\n91\t0\t3\t\"Christmann, Mr. Emil\"\tmale\t29\t0\t0\t343276\t8.05\t\tS\r\n92\t0\t3\t\"Andreasson, Mr. Paul Edvin\"\tmale\t20\t0\t0\t347466\t7.8542\t\tS\r\n93\t0\t1\t\"Chaffee, Mr. Herbert Fuller\"\tmale\t46\t1\t0\tW.E.P. 5734\t61.175\tE31\tS\r\n94\t0\t3\t\"Dean, Mr. Bertram Frank\"\tmale\t26\t1\t2\tC.A. 2315\t20.575\t\tS\r\n95\t0\t3\t\"Coxon, Mr. Daniel\"\tmale\t59\t0\t0\t364500\t7.25\t\tS\r\n96\t0\t3\t\"Shorney, Mr. Charles Joseph\"\tmale\t\t0\t0\t374910\t8.05\t\tS\r\n97\t0\t1\t\"Goldschmidt, Mr. George B\"\tmale\t71\t0\t0\tPC 17754\t34.6542\tA5\tC\r\n98\t1\t1\t\"Greenfield, Mr. William Bertram\"\tmale\t23\t0\t1\tPC 17759\t63.3583\tD10 D12\tC\r\n99\t1\t2\t\"Doling, Mrs. John T (Ada Julia Bone)\"\tfemale\t34\t0\t1\t231919\t23\t\tS\r\n100\t0\t2\t\"Kantor, Mr. Sinai\"\tmale\t34\t1\t0\t244367\t26\t\tS\r\n101\t0\t3\t\"Petranec, Miss. Matilda\"\tfemale\t28\t0\t0\t349245\t7.8958\t\tS\r\n102\t0\t3\t\"Petroff, Mr. Pastcho (\"\"Pentcho\"\")\"\tmale\t\t0\t0\t349215\t7.8958\t\tS\r\n103\t0\t1\t\"White, Mr. Richard Frasar\"\tmale\t21\t0\t1\t35281\t77.2875\tD26\tS\r\n104\t0\t3\t\"Johansson, Mr. Gustaf Joel\"\tmale\t33\t0\t0\t7540\t8.6542\t\tS\r\n105\t0\t3\t\"Gustafsson, Mr. Anders Vilhelm\"\tmale\t37\t2\t0\t3101276\t7.925\t\tS\r\n106\t0\t3\t\"Mionoff, Mr. Stoytcho\"\tmale\t28\t0\t0\t349207\t7.8958\t\tS\r\n107\t1\t3\t\"Salkjelsvik, Miss. Anna Kristine\"\tfemale\t21\t0\t0\t343120\t7.65\t\tS\r\n108\t1\t3\t\"Moss, Mr. Albert Johan\"\tmale\t\t0\t0\t312991\t7.775\t\tS\r\n109\t0\t3\t\"Rekic, Mr. Tido\"\tmale\t38\t0\t0\t349249\t7.8958\t\tS\r\n110\t1\t3\t\"Moran, Miss. Bertha\"\tfemale\t\t1\t0\t371110\t24.15\t\tQ\r\n111\t0\t1\t\"Porter, Mr. Walter Chamberlain\"\tmale\t47\t0\t0\t110465\t52\tC110\tS\r\n112\t0\t3\t\"Zabour, Miss. Hileni\"\tfemale\t14.5\t1\t0\t2665\t14.4542\t\tC\r\n113\t0\t3\t\"Barton, Mr. David John\"\tmale\t22\t0\t0\t324669\t8.05\t\tS\r\n114\t0\t3\t\"Jussila, Miss. Katriina\"\tfemale\t20\t1\t0\t4136\t9.825\t\tS\r\n115\t0\t3\t\"Attalah, Miss. Malake\"\tfemale\t17\t0\t0\t2627\t14.4583\t\tC\r\n116\t0\t3\t\"Pekoniemi, Mr. Edvard\"\tmale\t21\t0\t0\tSTON/O 2. 3101294\t7.925\t\tS\r\n117\t0\t3\t\"Connors, Mr. Patrick\"\tmale\t70.5\t0\t0\t370369\t7.75\t\tQ\r\n118\t0\t2\t\"Turpin, Mr. William John Robert\"\tmale\t29\t1\t0\t11668\t21\t\tS\r\n119\t0\t1\t\"Baxter, Mr. Quigg Edmond\"\tmale\t24\t0\t1\tPC 17558\t247.5208\tB58 B60\tC\r\n120\t0\t3\t\"Andersson, Miss. Ellis Anna Maria\"\tfemale\t2\t4\t2\t347082\t31.275\t\tS\r\n121\t0\t2\t\"Hickman, Mr. Stanley George\"\tmale\t21\t2\t0\tS.O.C. 14879\t73.5\t\tS\r\n122\t0\t3\t\"Moore, Mr. Leonard Charles\"\tmale\t\t0\t0\tA4. 54510\t8.05\t\tS\r\n123\t0\t2\t\"Nasser, Mr. Nicholas\"\tmale\t32.5\t1\t0\t237736\t30.0708\t\tC\r\n124\t1\t2\t\"Webber, Miss. Susan\"\tfemale\t32.5\t0\t0\t27267\t13\tE101\tS\r\n125\t0\t1\t\"White, Mr. Percival Wayland\"\tmale\t54\t0\t1\t35281\t77.2875\tD26\tS\r\n126\t1\t3\t\"Nicola-Yarred, Master. Elias\"\tmale\t12\t1\t0\t2651\t11.2417\t\tC\r\n127\t0\t3\t\"McMahon, Mr. Martin\"\tmale\t\t0\t0\t370372\t7.75\t\tQ\r\n128\t1\t3\t\"Madsen, Mr. Fridtjof Arne\"\tmale\t24\t0\t0\tC 17369\t7.1417\t\tS\r\n129\t1\t3\t\"Peter, Miss. Anna\"\tfemale\t\t1\t1\t2668\t22.3583\tF E69\tC\r\n130\t0\t3\t\"Ekstrom, Mr. Johan\"\tmale\t45\t0\t0\t347061\t6.975\t\tS\r\n131\t0\t3\t\"Drazenoic, Mr. Jozef\"\tmale\t33\t0\t0\t349241\t7.8958\t\tC\r\n132\t0\t3\t\"Coelho, Mr. Domingos Fernandeo\"\tmale\t20\t0\t0\tSOTON/O.Q. 3101307\t7.05\t\tS\r\n133\t0\t3\t\"Robins, Mrs. Alexander A (Grace Charity Laury)\"\tfemale\t47\t1\t0\tA/5. 3337\t14.5\t\tS\r\n134\t1\t2\t\"Weisz, Mrs. Leopold (Mathilde Francoise Pede)\"\tfemale\t29\t1\t0\t228414\t26\t\tS\r\n135\t0\t2\t\"Sobey, Mr. Samuel James Hayden\"\tmale\t25\t0\t0\tC.A. 29178\t13\t\tS\r\n136\t0\t2\t\"Richard, Mr. Emile\"\tmale\t23\t0\t0\tSC/PARIS 2133\t15.0458\t\tC\r\n137\t1\t1\t\"Newsom, Miss. Helen Monypeny\"\tfemale\t19\t0\t2\t11752\t26.2833\tD47\tS\r\n138\t0\t1\t\"Futrelle, Mr. Jacques Heath\"\tmale\t37\t1\t0\t113803\t53.1\tC123\tS\r\n139\t0\t3\t\"Osen, Mr. Olaf Elon\"\tmale\t16\t0\t0\t7534\t9.2167\t\tS\r\n140\t0\t1\t\"Giglio, Mr. Victor\"\tmale\t24\t0\t0\tPC 17593\t79.2\tB86\tC\r\n141\t0\t3\t\"Boulos, Mrs. Joseph (Sultana)\"\tfemale\t\t0\t2\t2678\t15.2458\t\tC\r\n142\t1\t3\t\"Nysten, Miss. Anna Sofia\"\tfemale\t22\t0\t0\t347081\t7.75\t\tS\r\n143\t1\t3\t\"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)\"\tfemale\t24\t1\t0\tSTON/O2. 3101279\t15.85\t\tS\r\n144\t0\t3\t\"Burke, Mr. Jeremiah\"\tmale\t19\t0\t0\t365222\t6.75\t\tQ\r\n145\t0\t2\t\"Andrew, Mr. Edgardo Samuel\"\tmale\t18\t0\t0\t231945\t11.5\t\tS\r\n146\t0\t2\t\"Nicholls, Mr. Joseph Charles\"\tmale\t19\t1\t1\tC.A. 33112\t36.75\t\tS\r\n147\t1\t3\t\"Andersson, Mr. August Edvard (\"\"Wennerstrom\"\")\"\tmale\t27\t0\t0\t350043\t7.7958\t\tS\r\n148\t0\t3\t\"Ford, Miss. Robina Maggie \"\"Ruby\"\"\"\tfemale\t9\t2\t2\tW./C. 6608\t34.375\t\tS\r\n149\t0\t2\t\"Navratil, Mr. Michel (\"\"Louis M Hoffman\"\")\"\tmale\t36.5\t0\t2\t230080\t26\tF2\tS\r\n150\t0\t2\t\"Byles, Rev. Thomas Roussel Davids\"\tmale\t42\t0\t0\t244310\t13\t\tS\r\n151\t0\t2\t\"Bateman, Rev. Robert James\"\tmale\t51\t0\t0\tS.O.P. 1166\t12.525\t\tS\r\n152\t1\t1\t\"Pears, Mrs. Thomas (Edith Wearne)\"\tfemale\t22\t1\t0\t113776\t66.6\tC2\tS\r\n153\t0\t3\t\"Meo, Mr. Alfonzo\"\tmale\t55.5\t0\t0\tA.5. 11206\t8.05\t\tS\r\n154\t0\t3\t\"van Billiard, Mr. Austin Blyler\"\tmale\t40.5\t0\t2\tA/5. 851\t14.5\t\tS\r\n155\t0\t3\t\"Olsen, Mr. Ole Martin\"\tmale\t\t0\t0\tFa 265302\t7.3125\t\tS\r\n156\t0\t1\t\"Williams, Mr. Charles Duane\"\tmale\t51\t0\t1\tPC 17597\t61.3792\t\tC\r\n157\t1\t3\t\"Gilnagh, Miss. Katherine \"\"Katie\"\"\"\tfemale\t16\t0\t0\t35851\t7.7333\t\tQ\r\n158\t0\t3\t\"Corn, Mr. Harry\"\tmale\t30\t0\t0\tSOTON/OQ 392090\t8.05\t\tS\r\n159\t0\t3\t\"Smiljanic, Mr. Mile\"\tmale\t\t0\t0\t315037\t8.6625\t\tS\r\n160\t0\t3\t\"Sage, Master. Thomas Henry\"\tmale\t\t8\t2\tCA. 2343\t69.55\t\tS\r\n161\t0\t3\t\"Cribb, Mr. John Hatfield\"\tmale\t44\t0\t1\t371362\t16.1\t\tS\r\n162\t1\t2\t\"Watt, Mrs. James (Elizabeth \"\"Bessie\"\" Inglis Milne)\"\tfemale\t40\t0\t0\tC.A. 33595\t15.75\t\tS\r\n163\t0\t3\t\"Bengtsson, Mr. John Viktor\"\tmale\t26\t0\t0\t347068\t7.775\t\tS\r\n164\t0\t3\t\"Calic, Mr. Jovo\"\tmale\t17\t0\t0\t315093\t8.6625\t\tS\r\n165\t0\t3\t\"Panula, Master. Eino Viljami\"\tmale\t1\t4\t1\t3101295\t39.6875\t\tS\r\n166\t1\t3\t\"Goldsmith, Master. Frank John William \"\"Frankie\"\"\"\tmale\t9\t0\t2\t363291\t20.525\t\tS\r\n167\t1\t1\t\"Chibnall, Mrs. (Edith Martha Bowerman)\"\tfemale\t\t0\t1\t113505\t55\tE33\tS\r\n168\t0\t3\t\"Skoog, Mrs. William (Anna Bernhardina Karlsson)\"\tfemale\t45\t1\t4\t347088\t27.9\t\tS\r\n169\t0\t1\t\"Baumann, Mr. John D\"\tmale\t\t0\t0\tPC 17318\t25.925\t\tS\r\n170\t0\t3\t\"Ling, Mr. Lee\"\tmale\t28\t0\t0\t1601\t56.4958\t\tS\r\n171\t0\t1\t\"Van der hoef, Mr. Wyckoff\"\tmale\t61\t0\t0\t111240\t33.5\tB19\tS\r\n172\t0\t3\t\"Rice, Master. Arthur\"\tmale\t4\t4\t1\t382652\t29.125\t\tQ\r\n173\t1\t3\t\"Johnson, Miss. Eleanor Ileen\"\tfemale\t1\t1\t1\t347742\t11.1333\t\tS\r\n174\t0\t3\t\"Sivola, Mr. Antti Wilhelm\"\tmale\t21\t0\t0\tSTON/O 2. 3101280\t7.925\t\tS\r\n175\t0\t1\t\"Smith, Mr. James Clinch\"\tmale\t56\t0\t0\t17764\t30.6958\tA7\tC\r\n176\t0\t3\t\"Klasen, Mr. Klas Albin\"\tmale\t18\t1\t1\t350404\t7.8542\t\tS\r\n177\t0\t3\t\"Lefebre, Master. Henry Forbes\"\tmale\t\t3\t1\t4133\t25.4667\t\tS\r\n178\t0\t1\t\"Isham, Miss. Ann Elizabeth\"\tfemale\t50\t0\t0\tPC 17595\t28.7125\tC49\tC\r\n179\t0\t2\t\"Hale, Mr. Reginald\"\tmale\t30\t0\t0\t250653\t13\t\tS\r\n180\t0\t3\t\"Leonard, Mr. Lionel\"\tmale\t36\t0\t0\tLINE\t0\t\tS\r\n181\t0\t3\t\"Sage, Miss. Constance Gladys\"\tfemale\t\t8\t2\tCA. 2343\t69.55\t\tS\r\n182\t0\t2\t\"Pernot, Mr. Rene\"\tmale\t\t0\t0\tSC/PARIS 2131\t15.05\t\tC\r\n183\t0\t3\t\"Asplund, Master. Clarence Gustaf Hugo\"\tmale\t9\t4\t2\t347077\t31.3875\t\tS\r\n184\t1\t2\t\"Becker, Master. Richard F\"\tmale\t1\t2\t1\t230136\t39\tF4\tS\r\n185\t1\t3\t\"Kink-Heilmann, Miss. Luise Gretchen\"\tfemale\t4\t0\t2\t315153\t22.025\t\tS\r\n186\t0\t1\t\"Rood, Mr. Hugh Roscoe\"\tmale\t\t0\t0\t113767\t50\tA32\tS\r\n187\t1\t3\t\"O'Brien, Mrs. Thomas (Johanna \"\"Hannah\"\" Godfrey)\"\tfemale\t\t1\t0\t370365\t15.5\t\tQ\r\n188\t1\t1\t\"Romaine, Mr. Charles Hallace (\"\"Mr C Rolmane\"\")\"\tmale\t45\t0\t0\t111428\t26.55\t\tS\r\n189\t0\t3\t\"Bourke, Mr. John\"\tmale\t40\t1\t1\t364849\t15.5\t\tQ\r\n190\t0\t3\t\"Turcin, Mr. Stjepan\"\tmale\t36\t0\t0\t349247\t7.8958\t\tS\r\n191\t1\t2\t\"Pinsky, Mrs. (Rosa)\"\tfemale\t32\t0\t0\t234604\t13\t\tS\r\n192\t0\t2\t\"Carbines, Mr. William\"\tmale\t19\t0\t0\t28424\t13\t\tS\r\n193\t1\t3\t\"Andersen-Jensen, Miss. Carla Christine Nielsine\"\tfemale\t19\t1\t0\t350046\t7.8542\t\tS\r\n194\t1\t2\t\"Navratil, Master. Michel M\"\tmale\t3\t1\t1\t230080\t26\tF2\tS\r\n195\t1\t1\t\"Brown, Mrs. James Joseph (Margaret Tobin)\"\tfemale\t44\t0\t0\tPC 17610\t27.7208\tB4\tC\r\n196\t1\t1\t\"Lurette, Miss. Elise\"\tfemale\t58\t0\t0\tPC 17569\t146.5208\tB80\tC\r\n197\t0\t3\t\"Mernagh, Mr. Robert\"\tmale\t\t0\t0\t368703\t7.75\t\tQ\r\n198\t0\t3\t\"Olsen, Mr. Karl Siegwart Andreas\"\tmale\t42\t0\t1\t4579\t8.4042\t\tS\r\n199\t1\t3\t\"Madigan, Miss. Margaret \"\"Maggie\"\"\"\tfemale\t\t0\t0\t370370\t7.75\t\tQ\r\n200\t0\t2\t\"Yrois, Miss. Henriette (\"\"Mrs Harbeck\"\")\"\tfemale\t24\t0\t0\t248747\t13\t\tS\r\n201\t0\t3\t\"Vande Walle, Mr. Nestor Cyriel\"\tmale\t28\t0\t0\t345770\t9.5\t\tS\r\n202\t0\t3\t\"Sage, Mr. Frederick\"\tmale\t\t8\t2\tCA. 2343\t69.55\t\tS\r\n203\t0\t3\t\"Johanson, Mr. Jakob Alfred\"\tmale\t34\t0\t0\t3101264\t6.4958\t\tS\r\n204\t0\t3\t\"Youseff, Mr. Gerious\"\tmale\t45.5\t0\t0\t2628\t7.225\t\tC\r\n205\t1\t3\t\"Cohen, Mr. Gurshon \"\"Gus\"\"\"\tmale\t18\t0\t0\tA/5 3540\t8.05\t\tS\r\n206\t0\t3\t\"Strom, Miss. Telma Matilda\"\tfemale\t2\t0\t1\t347054\t10.4625\tG6\tS\r\n207\t0\t3\t\"Backstrom, Mr. Karl Alfred\"\tmale\t32\t1\t0\t3101278\t15.85\t\tS\r\n208\t1\t3\t\"Albimona, Mr. Nassef Cassem\"\tmale\t26\t0\t0\t2699\t18.7875\t\tC\r\n209\t1\t3\t\"Carr, Miss. Helen \"\"Ellen\"\"\"\tfemale\t16\t0\t0\t367231\t7.75\t\tQ\r\n210\t1\t1\t\"Blank, Mr. Henry\"\tmale\t40\t0\t0\t112277\t31\tA31\tC\r\n211\t0\t3\t\"Ali, Mr. Ahmed\"\tmale\t24\t0\t0\tSOTON/O.Q. 3101311\t7.05\t\tS\r\n212\t1\t2\t\"Cameron, Miss. Clear Annie\"\tfemale\t35\t0\t0\tF.C.C. 13528\t21\t\tS\r\n213\t0\t3\t\"Perkin, Mr. John Henry\"\tmale\t22\t0\t0\tA/5 21174\t7.25\t\tS\r\n214\t0\t2\t\"Givard, Mr. Hans Kristensen\"\tmale\t30\t0\t0\t250646\t13\t\tS\r\n215\t0\t3\t\"Kiernan, Mr. Philip\"\tmale\t\t1\t0\t367229\t7.75\t\tQ\r\n216\t1\t1\t\"Newell, Miss. Madeleine\"\tfemale\t31\t1\t0\t35273\t113.275\tD36\tC\r\n217\t1\t3\t\"Honkanen, Miss. Eliina\"\tfemale\t27\t0\t0\tSTON/O2. 3101283\t7.925\t\tS\r\n218\t0\t2\t\"Jacobsohn, Mr. Sidney Samuel\"\tmale\t42\t1\t0\t243847\t27\t\tS\r\n219\t1\t1\t\"Bazzani, Miss. Albina\"\tfemale\t32\t0\t0\t11813\t76.2917\tD15\tC\r\n220\t0\t2\t\"Harris, Mr. Walter\"\tmale\t30\t0\t0\tW/C 14208\t10.5\t\tS\r\n221\t1\t3\t\"Sunderland, Mr. Victor Francis\"\tmale\t16\t0\t0\tSOTON/OQ 392089\t8.05\t\tS\r\n222\t0\t2\t\"Bracken, Mr. James H\"\tmale\t27\t0\t0\t220367\t13\t\tS\r\n223\t0\t3\t\"Green, Mr. George Henry\"\tmale\t51\t0\t0\t21440\t8.05\t\tS\r\n224\t0\t3\t\"Nenkoff, Mr. Christo\"\tmale\t\t0\t0\t349234\t7.8958\t\tS\r\n225\t1\t1\t\"Hoyt, Mr. Frederick Maxfield\"\tmale\t38\t1\t0\t19943\t90\tC93\tS\r\n226\t0\t3\t\"Berglund, Mr. Karl Ivar Sven\"\tmale\t22\t0\t0\tPP 4348\t9.35\t\tS\r\n227\t1\t2\t\"Mellors, Mr. William John\"\tmale\t19\t0\t0\tSW/PP 751\t10.5\t\tS\r\n228\t0\t3\t\"Lovell, Mr. John Hall (\"\"Henry\"\")\"\tmale\t20.5\t0\t0\tA/5 21173\t7.25\t\tS\r\n229\t0\t2\t\"Fahlstrom, Mr. Arne Jonas\"\tmale\t18\t0\t0\t236171\t13\t\tS\r\n230\t0\t3\t\"Lefebre, Miss. Mathilde\"\tfemale\t\t3\t1\t4133\t25.4667\t\tS\r\n231\t1\t1\t\"Harris, Mrs. Henry Birkhardt (Irene Wallach)\"\tfemale\t35\t1\t0\t36973\t83.475\tC83\tS\r\n232\t0\t3\t\"Larsson, Mr. Bengt Edvin\"\tmale\t29\t0\t0\t347067\t7.775\t\tS\r\n233\t0\t2\t\"Sjostedt, Mr. Ernst Adolf\"\tmale\t59\t0\t0\t237442\t13.5\t\tS\r\n234\t1\t3\t\"Asplund, Miss. Lillian Gertrud\"\tfemale\t5\t4\t2\t347077\t31.3875\t\tS\r\n235\t0\t2\t\"Leyson, Mr. Robert William Norman\"\tmale\t24\t0\t0\tC.A. 29566\t10.5\t\tS\r\n236\t0\t3\t\"Harknett, Miss. Alice Phoebe\"\tfemale\t\t0\t0\tW./C. 6609\t7.55\t\tS\r\n237\t0\t2\t\"Hold, Mr. Stephen\"\tmale\t44\t1\t0\t26707\t26\t\tS\r\n238\t1\t2\t\"Collyer, Miss. Marjorie \"\"Lottie\"\"\"\tfemale\t8\t0\t2\tC.A. 31921\t26.25\t\tS\r\n239\t0\t2\t\"Pengelly, Mr. Frederick William\"\tmale\t19\t0\t0\t28665\t10.5\t\tS\r\n240\t0\t2\t\"Hunt, Mr. George Henry\"\tmale\t33\t0\t0\tSCO/W 1585\t12.275\t\tS\r\n241\t0\t3\t\"Zabour, Miss. Thamine\"\tfemale\t\t1\t0\t2665\t14.4542\t\tC\r\n242\t1\t3\t\"Murphy, Miss. Katherine \"\"Kate\"\"\"\tfemale\t\t1\t0\t367230\t15.5\t\tQ\r\n243\t0\t2\t\"Coleridge, Mr. Reginald Charles\"\tmale\t29\t0\t0\tW./C. 14263\t10.5\t\tS\r\n244\t0\t3\t\"Maenpaa, Mr. Matti Alexanteri\"\tmale\t22\t0\t0\tSTON/O 2. 3101275\t7.125\t\tS\r\n245\t0\t3\t\"Attalah, Mr. Sleiman\"\tmale\t30\t0\t0\t2694\t7.225\t\tC\r\n246\t0\t1\t\"Minahan, Dr. William Edward\"\tmale\t44\t2\t0\t19928\t90\tC78\tQ\r\n247\t0\t3\t\"Lindahl, Miss. Agda Thorilda Viktoria\"\tfemale\t25\t0\t0\t347071\t7.775\t\tS\r\n248\t1\t2\t\"Hamalainen, Mrs. William (Anna)\"\tfemale\t24\t0\t2\t250649\t14.5\t\tS\r\n249\t1\t1\t\"Beckwith, Mr. Richard Leonard\"\tmale\t37\t1\t1\t11751\t52.5542\tD35\tS\r\n250\t0\t2\t\"Carter, Rev. Ernest Courtenay\"\tmale\t54\t1\t0\t244252\t26\t\tS\r\n251\t0\t3\t\"Reed, Mr. James George\"\tmale\t\t0\t0\t362316\t7.25\t\tS\r\n252\t0\t3\t\"Strom, Mrs. Wilhelm (Elna Matilda Persson)\"\tfemale\t29\t1\t1\t347054\t10.4625\tG6\tS\r\n253\t0\t1\t\"Stead, Mr. William Thomas\"\tmale\t62\t0\t0\t113514\t26.55\tC87\tS\r\n254\t0\t3\t\"Lobb, Mr. William Arthur\"\tmale\t30\t1\t0\tA/5. 3336\t16.1\t\tS\r\n255\t0\t3\t\"Rosblom, Mrs. Viktor (Helena Wilhelmina)\"\tfemale\t41\t0\t2\t370129\t20.2125\t\tS\r\n256\t1\t3\t\"Touma, Mrs. Darwis (Hanne Youssef Razi)\"\tfemale\t29\t0\t2\t2650\t15.2458\t\tC\r\n257\t1\t1\t\"Thorne, Mrs. Gertrude Maybelle\"\tfemale\t\t0\t0\tPC 17585\t79.2\t\tC\r\n258\t1\t1\t\"Cherry, Miss. Gladys\"\tfemale\t30\t0\t0\t110152\t86.5\tB77\tS\r\n259\t1\t1\t\"Ward, Miss. Anna\"\tfemale\t35\t0\t0\tPC 17755\t512.3292\t\tC\r\n260\t1\t2\t\"Parrish, Mrs. (Lutie Davis)\"\tfemale\t50\t0\t1\t230433\t26\t\tS\r\n261\t0\t3\t\"Smith, Mr. Thomas\"\tmale\t\t0\t0\t384461\t7.75\t\tQ\r\n262\t1\t3\t\"Asplund, Master. Edvin Rojj Felix\"\tmale\t3\t4\t2\t347077\t31.3875\t\tS\r\n263\t0\t1\t\"Taussig, Mr. Emil\"\tmale\t52\t1\t1\t110413\t79.65\tE67\tS\r\n264\t0\t1\t\"Harrison, Mr. William\"\tmale\t40\t0\t0\t112059\t0\tB94\tS\r\n265\t0\t3\t\"Henry, Miss. Delia\"\tfemale\t\t0\t0\t382649\t7.75\t\tQ\r\n266\t0\t2\t\"Reeves, Mr. David\"\tmale\t36\t0\t0\tC.A. 17248\t10.5\t\tS\r\n267\t0\t3\t\"Panula, Mr. Ernesti Arvid\"\tmale\t16\t4\t1\t3101295\t39.6875\t\tS\r\n268\t1\t3\t\"Persson, Mr. Ernst Ulrik\"\tmale\t25\t1\t0\t347083\t7.775\t\tS\r\n269\t1\t1\t\"Graham, Mrs. William Thompson (Edith Junkins)\"\tfemale\t58\t0\t1\tPC 17582\t153.4625\tC125\tS\r\n270\t1\t1\t\"Bissette, Miss. Amelia\"\tfemale\t35\t0\t0\tPC 17760\t135.6333\tC99\tS\r\n271\t0\t1\t\"Cairns, Mr. Alexander\"\tmale\t\t0\t0\t113798\t31\t\tS\r\n272\t1\t3\t\"Tornquist, Mr. William Henry\"\tmale\t25\t0\t0\tLINE\t0\t\tS\r\n273\t1\t2\t\"Mellinger, Mrs. (Elizabeth Anne Maidment)\"\tfemale\t41\t0\t1\t250644\t19.5\t\tS\r\n274\t0\t1\t\"Natsch, Mr. Charles H\"\tmale\t37\t0\t1\tPC 17596\t29.7\tC118\tC\r\n275\t1\t3\t\"Healy, Miss. Hanora \"\"Nora\"\"\"\tfemale\t\t0\t0\t370375\t7.75\t\tQ\r\n276\t1\t1\t\"Andrews, Miss. Kornelia Theodosia\"\tfemale\t63\t1\t0\t13502\t77.9583\tD7\tS\r\n277\t0\t3\t\"Lindblom, Miss. Augusta Charlotta\"\tfemale\t45\t0\t0\t347073\t7.75\t\tS\r\n278\t0\t2\t\"Parkes, Mr. Francis \"\"Frank\"\"\"\tmale\t\t0\t0\t239853\t0\t\tS\r\n279\t0\t3\t\"Rice, Master. Eric\"\tmale\t7\t4\t1\t382652\t29.125\t\tQ\r\n280\t1\t3\t\"Abbott, Mrs. Stanton (Rosa Hunt)\"\tfemale\t35\t1\t1\tC.A. 2673\t20.25\t\tS\r\n281\t0\t3\t\"Duane, Mr. Frank\"\tmale\t65\t0\t0\t336439\t7.75\t\tQ\r\n282\t0\t3\t\"Olsson, Mr. Nils Johan Goransson\"\tmale\t28\t0\t0\t347464\t7.8542\t\tS\r\n283\t0\t3\t\"de Pelsmaeker, Mr. Alfons\"\tmale\t16\t0\t0\t345778\t9.5\t\tS\r\n284\t1\t3\t\"Dorking, Mr. Edward Arthur\"\tmale\t19\t0\t0\tA/5. 10482\t8.05\t\tS\r\n285\t0\t1\t\"Smith, Mr. Richard William\"\tmale\t\t0\t0\t113056\t26\tA19\tS\r\n286\t0\t3\t\"Stankovic, Mr. Ivan\"\tmale\t33\t0\t0\t349239\t8.6625\t\tC\r\n287\t1\t3\t\"de Mulder, Mr. Theodore\"\tmale\t30\t0\t0\t345774\t9.5\t\tS\r\n288\t0\t3\t\"Naidenoff, Mr. Penko\"\tmale\t22\t0\t0\t349206\t7.8958\t\tS\r\n289\t1\t2\t\"Hosono, Mr. Masabumi\"\tmale\t42\t0\t0\t237798\t13\t\tS\r\n290\t1\t3\t\"Connolly, Miss. Kate\"\tfemale\t22\t0\t0\t370373\t7.75\t\tQ\r\n291\t1\t1\t\"Barber, Miss. Ellen \"\"Nellie\"\"\"\tfemale\t26\t0\t0\t19877\t78.85\t\tS\r\n292\t1\t1\t\"Bishop, Mrs. Dickinson H (Helen Walton)\"\tfemale\t19\t1\t0\t11967\t91.0792\tB49\tC\r\n293\t0\t2\t\"Levy, Mr. Rene Jacques\"\tmale\t36\t0\t0\tSC/Paris 2163\t12.875\tD\tC\r\n294\t0\t3\t\"Haas, Miss. Aloisia\"\tfemale\t24\t0\t0\t349236\t8.85\t\tS\r\n295\t0\t3\t\"Mineff, Mr. Ivan\"\tmale\t24\t0\t0\t349233\t7.8958\t\tS\r\n296\t0\t1\t\"Lewy, Mr. Ervin G\"\tmale\t\t0\t0\tPC 17612\t27.7208\t\tC\r\n297\t0\t3\t\"Hanna, Mr. Mansour\"\tmale\t23.5\t0\t0\t2693\t7.2292\t\tC\r\n298\t0\t1\t\"Allison, Miss. Helen Loraine\"\tfemale\t2\t1\t2\t113781\t151.55\tC22 C26\tS\r\n299\t1\t1\t\"Saalfeld, Mr. Adolphe\"\tmale\t\t0\t0\t19988\t30.5\tC106\tS\r\n300\t1\t1\t\"Baxter, Mrs. James (Helene DeLaudeniere Chaput)\"\tfemale\t50\t0\t1\tPC 17558\t247.5208\tB58 B60\tC\r\n301\t1\t3\t\"Kelly, Miss. Anna Katherine \"\"Annie Kate\"\"\"\tfemale\t\t0\t0\t9234\t7.75\t\tQ\r\n302\t1\t3\t\"McCoy, Mr. Bernard\"\tmale\t\t2\t0\t367226\t23.25\t\tQ\r\n303\t0\t3\t\"Johnson, Mr. William Cahoone Jr\"\tmale\t19\t0\t0\tLINE\t0\t\tS\r\n304\t1\t2\t\"Keane, Miss. Nora A\"\tfemale\t\t0\t0\t226593\t12.35\tE101\tQ\r\n305\t0\t3\t\"Williams, Mr. Howard Hugh \"\"Harry\"\"\"\tmale\t\t0\t0\tA/5 2466\t8.05\t\tS\r\n306\t1\t1\t\"Allison, Master. Hudson Trevor\"\tmale\t0.92\t1\t2\t113781\t151.55\tC22 C26\tS\r\n307\t1\t1\t\"Fleming, Miss. Margaret\"\tfemale\t\t0\t0\t17421\t110.8833\t\tC\r\n308\t1\t1\t\"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)\"\tfemale\t17\t1\t0\tPC 17758\t108.9\tC65\tC\r\n309\t0\t2\t\"Abelson, Mr. Samuel\"\tmale\t30\t1\t0\tP/PP 3381\t24\t\tC\r\n310\t1\t1\t\"Francatelli, Miss. Laura Mabel\"\tfemale\t30\t0\t0\tPC 17485\t56.9292\tE36\tC\r\n311\t1\t1\t\"Hays, Miss. Margaret Bechstein\"\tfemale\t24\t0\t0\t11767\t83.1583\tC54\tC\r\n312\t1\t1\t\"Ryerson, Miss. Emily Borie\"\tfemale\t18\t2\t2\tPC 17608\t262.375\tB57 B59 B63 B66\tC\r\n313\t0\t2\t\"Lahtinen, Mrs. William (Anna Sylfven)\"\tfemale\t26\t1\t1\t250651\t26\t\tS\r\n314\t0\t3\t\"Hendekovic, Mr. Ignjac\"\tmale\t28\t0\t0\t349243\t7.8958\t\tS\r\n315\t0\t2\t\"Hart, Mr. Benjamin\"\tmale\t43\t1\t1\tF.C.C. 13529\t26.25\t\tS\r\n316\t1\t3\t\"Nilsson, Miss. Helmina Josefina\"\tfemale\t26\t0\t0\t347470\t7.8542\t\tS\r\n317\t1\t2\t\"Kantor, Mrs. Sinai (Miriam Sternin)\"\tfemale\t24\t1\t0\t244367\t26\t\tS\r\n318\t0\t2\t\"Moraweck, Dr. Ernest\"\tmale\t54\t0\t0\t29011\t14\t\tS\r\n319\t1\t1\t\"Wick, Miss. Mary Natalie\"\tfemale\t31\t0\t2\t36928\t164.8667\tC7\tS\r\n320\t1\t1\t\"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)\"\tfemale\t40\t1\t1\t16966\t134.5\tE34\tC\r\n321\t0\t3\t\"Dennis, Mr. Samuel\"\tmale\t22\t0\t0\tA/5 21172\t7.25\t\tS\r\n322\t0\t3\t\"Danoff, Mr. Yoto\"\tmale\t27\t0\t0\t349219\t7.8958\t\tS\r\n323\t1\t2\t\"Slayter, Miss. Hilda Mary\"\tfemale\t30\t0\t0\t234818\t12.35\t\tQ\r\n324\t1\t2\t\"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)\"\tfemale\t22\t1\t1\t248738\t29\t\tS\r\n325\t0\t3\t\"Sage, Mr. George John Jr\"\tmale\t\t8\t2\tCA. 2343\t69.55\t\tS\r\n326\t1\t1\t\"Young, Miss. Marie Grice\"\tfemale\t36\t0\t0\tPC 17760\t135.6333\tC32\tC\r\n327\t0\t3\t\"Nysveen, Mr. Johan Hansen\"\tmale\t61\t0\t0\t345364\t6.2375\t\tS\r\n328\t1\t2\t\"Ball, Mrs. (Ada E Hall)\"\tfemale\t36\t0\t0\t28551\t13\tD\tS\r\n329\t1\t3\t\"Goldsmith, Mrs. Frank John (Emily Alice Brown)\"\tfemale\t31\t1\t1\t363291\t20.525\t\tS\r\n330\t1\t1\t\"Hippach, Miss. Jean Gertrude\"\tfemale\t16\t0\t1\t111361\t57.9792\tB18\tC\r\n331\t1\t3\t\"McCoy, Miss. Agnes\"\tfemale\t\t2\t0\t367226\t23.25\t\tQ\r\n332\t0\t1\t\"Partner, Mr. Austen\"\tmale\t45.5\t0\t0\t113043\t28.5\tC124\tS\r\n333\t0\t1\t\"Graham, Mr. George Edward\"\tmale\t38\t0\t1\tPC 17582\t153.4625\tC91\tS\r\n334\t0\t3\t\"Vander Planke, Mr. Leo Edmondus\"\tmale\t16\t2\t0\t345764\t18\t\tS\r\n335\t1\t1\t\"Frauenthal, Mrs. Henry William (Clara Heinsheimer)\"\tfemale\t\t1\t0\tPC 17611\t133.65\t\tS\r\n336\t0\t3\t\"Denkoff, Mr. Mitto\"\tmale\t\t0\t0\t349225\t7.8958\t\tS\r\n337\t0\t1\t\"Pears, Mr. Thomas Clinton\"\tmale\t29\t1\t0\t113776\t66.6\tC2\tS\r\n338\t1\t1\t\"Burns, Miss. Elizabeth Margaret\"\tfemale\t41\t0\t0\t16966\t134.5\tE40\tC\r\n339\t1\t3\t\"Dahl, Mr. Karl Edwart\"\tmale\t45\t0\t0\t7598\t8.05\t\tS\r\n340\t0\t1\t\"Blackwell, Mr. Stephen Weart\"\tmale\t45\t0\t0\t113784\t35.5\tT\tS\r\n341\t1\t2\t\"Navratil, Master. Edmond Roger\"\tmale\t2\t1\t1\t230080\t26\tF2\tS\r\n342\t1\t1\t\"Fortune, Miss. Alice Elizabeth\"\tfemale\t24\t3\t2\t19950\t263\tC23 C25 C27\tS\r\n343\t0\t2\t\"Collander, Mr. Erik Gustaf\"\tmale\t28\t0\t0\t248740\t13\t\tS\r\n344\t0\t2\t\"Sedgwick, Mr. Charles Frederick Waddington\"\tmale\t25\t0\t0\t244361\t13\t\tS\r\n345\t0\t2\t\"Fox, Mr. Stanley Hubert\"\tmale\t36\t0\t0\t229236\t13\t\tS\r\n346\t1\t2\t\"Brown, Miss. Amelia \"\"Mildred\"\"\"\tfemale\t24\t0\t0\t248733\t13\tF33\tS\r\n347\t1\t2\t\"Smith, Miss. Marion Elsie\"\tfemale\t40\t0\t0\t31418\t13\t\tS\r\n348\t1\t3\t\"Davison, Mrs. Thomas Henry (Mary E Finck)\"\tfemale\t\t1\t0\t386525\t16.1\t\tS\r\n349\t1\t3\t\"Coutts, Master. William Loch \"\"William\"\"\"\tmale\t3\t1\t1\tC.A. 37671\t15.9\t\tS\r\n350\t0\t3\t\"Dimic, Mr. Jovan\"\tmale\t42\t0\t0\t315088\t8.6625\t\tS\r\n351\t0\t3\t\"Odahl, Mr. Nils Martin\"\tmale\t23\t0\t0\t7267\t9.225\t\tS\r\n352\t0\t1\t\"Williams-Lambert, Mr. Fletcher Fellows\"\tmale\t\t0\t0\t113510\t35\tC128\tS\r\n353\t0\t3\t\"Elias, Mr. Tannous\"\tmale\t15\t1\t1\t2695\t7.2292\t\tC\r\n354\t0\t3\t\"Arnold-Franchi, Mr. Josef\"\tmale\t25\t1\t0\t349237\t17.8\t\tS\r\n355\t0\t3\t\"Yousif, Mr. Wazli\"\tmale\t\t0\t0\t2647\t7.225\t\tC\r\n356\t0\t3\t\"Vanden Steen, Mr. Leo Peter\"\tmale\t28\t0\t0\t345783\t9.5\t\tS\r\n357\t1\t1\t\"Bowerman, Miss. Elsie Edith\"\tfemale\t22\t0\t1\t113505\t55\tE33\tS\r\n358\t0\t2\t\"Funk, Miss. Annie Clemmer\"\tfemale\t38\t0\t0\t237671\t13\t\tS\r\n359\t1\t3\t\"McGovern, Miss. Mary\"\tfemale\t\t0\t0\t330931\t7.8792\t\tQ\r\n360\t1\t3\t\"Mockler, Miss. Helen Mary \"\"Ellie\"\"\"\tfemale\t\t0\t0\t330980\t7.8792\t\tQ\r\n361\t0\t3\t\"Skoog, Mr. Wilhelm\"\tmale\t40\t1\t4\t347088\t27.9\t\tS\r\n362\t0\t2\t\"del Carlo, Mr. Sebastiano\"\tmale\t29\t1\t0\tSC/PARIS 2167\t27.7208\t\tC\r\n363\t0\t3\t\"Barbara, Mrs. (Catherine David)\"\tfemale\t45\t0\t1\t2691\t14.4542\t\tC\r\n364\t0\t3\t\"Asim, Mr. Adola\"\tmale\t35\t0\t0\tSOTON/O.Q. 3101310\t7.05\t\tS\r\n365\t0\t3\t\"O'Brien, Mr. Thomas\"\tmale\t\t1\t0\t370365\t15.5\t\tQ\r\n366\t0\t3\t\"Adahl, Mr. Mauritz Nils Martin\"\tmale\t30\t0\t0\tC 7076\t7.25\t\tS\r\n367\t1\t1\t\"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)\"\tfemale\t60\t1\t0\t110813\t75.25\tD37\tC\r\n368\t1\t3\t\"Moussa, Mrs. (Mantoura Boulos)\"\tfemale\t\t0\t0\t2626\t7.2292\t\tC\r\n369\t1\t3\t\"Jermyn, Miss. Annie\"\tfemale\t\t0\t0\t14313\t7.75\t\tQ\r\n370\t1\t1\t\"Aubart, Mme. Leontine Pauline\"\tfemale\t24\t0\t0\tPC 17477\t69.3\tB35\tC\r\n371\t1\t1\t\"Harder, Mr. George Achilles\"\tmale\t25\t1\t0\t11765\t55.4417\tE50\tC\r\n372\t0\t3\t\"Wiklund, Mr. Jakob Alfred\"\tmale\t18\t1\t0\t3101267\t6.4958\t\tS\r\n373\t0\t3\t\"Beavan, Mr. William Thomas\"\tmale\t19\t0\t0\t323951\t8.05\t\tS\r\n374\t0\t1\t\"Ringhini, Mr. Sante\"\tmale\t22\t0\t0\tPC 17760\t135.6333\t\tC\r\n375\t0\t3\t\"Palsson, Miss. Stina Viola\"\tfemale\t3\t3\t1\t349909\t21.075\t\tS\r\n376\t1\t1\t\"Meyer, Mrs. Edgar Joseph (Leila Saks)\"\tfemale\t\t1\t0\tPC 17604\t82.1708\t\tC\r\n377\t1\t3\t\"Landergren, Miss. Aurora Adelia\"\tfemale\t22\t0\t0\tC 7077\t7.25\t\tS\r\n378\t0\t1\t\"Widener, Mr. Harry Elkins\"\tmale\t27\t0\t2\t113503\t211.5\tC82\tC\r\n379\t0\t3\t\"Betros, Mr. Tannous\"\tmale\t20\t0\t0\t2648\t4.0125\t\tC\r\n380\t0\t3\t\"Gustafsson, Mr. Karl Gideon\"\tmale\t19\t0\t0\t347069\t7.775\t\tS\r\n381\t1\t1\t\"Bidois, Miss. Rosalie\"\tfemale\t42\t0\t0\tPC 17757\t227.525\t\tC\r\n382\t1\t3\t\"Nakid, Miss. Maria (\"\"Mary\"\")\"\tfemale\t1\t0\t2\t2653\t15.7417\t\tC\r\n383\t0\t3\t\"Tikkanen, Mr. Juho\"\tmale\t32\t0\t0\tSTON/O 2. 3101293\t7.925\t\tS\r\n384\t1\t1\t\"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)\"\tfemale\t35\t1\t0\t113789\t52\t\tS\r\n385\t0\t3\t\"Plotcharsky, Mr. Vasil\"\tmale\t\t0\t0\t349227\t7.8958\t\tS\r\n386\t0\t2\t\"Davies, Mr. Charles Henry\"\tmale\t18\t0\t0\tS.O.C. 14879\t73.5\t\tS\r\n387\t0\t3\t\"Goodwin, Master. Sidney Leonard\"\tmale\t1\t5\t2\tCA 2144\t46.9\t\tS\r\n388\t1\t2\t\"Buss, Miss. Kate\"\tfemale\t36\t0\t0\t27849\t13\t\tS\r\n389\t0\t3\t\"Sadlier, Mr. Matthew\"\tmale\t\t0\t0\t367655\t7.7292\t\tQ\r\n390\t1\t2\t\"Lehmann, Miss. Bertha\"\tfemale\t17\t0\t0\tSC 1748\t12\t\tC\r\n391\t1\t1\t\"Carter, Mr. William Ernest\"\tmale\t36\t1\t2\t113760\t120\tB96 B98\tS\r\n392\t1\t3\t\"Jansson, Mr. Carl Olof\"\tmale\t21\t0\t0\t350034\t7.7958\t\tS\r\n393\t0\t3\t\"Gustafsson, Mr. Johan Birger\"\tmale\t28\t2\t0\t3101277\t7.925\t\tS\r\n394\t1\t1\t\"Newell, Miss. Marjorie\"\tfemale\t23\t1\t0\t35273\t113.275\tD36\tC\r\n395\t1\t3\t\"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)\"\tfemale\t24\t0\t2\tPP 9549\t16.7\tG6\tS\r\n396\t0\t3\t\"Johansson, Mr. Erik\"\tmale\t22\t0\t0\t350052\t7.7958\t\tS\r\n397\t0\t3\t\"Olsson, Miss. Elina\"\tfemale\t31\t0\t0\t350407\t7.8542\t\tS\r\n398\t0\t2\t\"McKane, Mr. Peter David\"\tmale\t46\t0\t0\t28403\t26\t\tS\r\n399\t0\t2\t\"Pain, Dr. Alfred\"\tmale\t23\t0\t0\t244278\t10.5\t\tS\r\n400\t1\t2\t\"Trout, Mrs. William H (Jessie L)\"\tfemale\t28\t0\t0\t240929\t12.65\t\tS\r\n401\t1\t3\t\"Niskanen, Mr. Juha\"\tmale\t39\t0\t0\tSTON/O 2. 3101289\t7.925\t\tS\r\n402\t0\t3\t\"Adams, Mr. John\"\tmale\t26\t0\t0\t341826\t8.05\t\tS\r\n403\t0\t3\t\"Jussila, Miss. Mari Aina\"\tfemale\t21\t1\t0\t4137\t9.825\t\tS\r\n404\t0\t3\t\"Hakkarainen, Mr. Pekka Pietari\"\tmale\t28\t1\t0\tSTON/O2. 3101279\t15.85\t\tS\r\n405\t0\t3\t\"Oreskovic, Miss. Marija\"\tfemale\t20\t0\t0\t315096\t8.6625\t\tS\r\n406\t0\t2\t\"Gale, Mr. Shadrach\"\tmale\t34\t1\t0\t28664\t21\t\tS\r\n407\t0\t3\t\"Widegren, Mr. Carl/Charles Peter\"\tmale\t51\t0\t0\t347064\t7.75\t\tS\r\n408\t1\t2\t\"Richards, Master. William Rowe\"\tmale\t3\t1\t1\t29106\t18.75\t\tS\r\n409\t0\t3\t\"Birkeland, Mr. Hans Martin Monsen\"\tmale\t21\t0\t0\t312992\t7.775\t\tS\r\n410\t0\t3\t\"Lefebre, Miss. Ida\"\tfemale\t\t3\t1\t4133\t25.4667\t\tS\r\n411\t0\t3\t\"Sdycoff, Mr. Todor\"\tmale\t\t0\t0\t349222\t7.8958\t\tS\r\n412\t0\t3\t\"Hart, Mr. Henry\"\tmale\t\t0\t0\t394140\t6.8583\t\tQ\r\n413\t1\t1\t\"Minahan, Miss. Daisy E\"\tfemale\t33\t1\t0\t19928\t90\tC78\tQ\r\n414\t0\t2\t\"Cunningham, Mr. Alfred Fleming\"\tmale\t\t0\t0\t239853\t0\t\tS\r\n415\t1\t3\t\"Sundman, Mr. Johan Julian\"\tmale\t44\t0\t0\tSTON/O 2. 3101269\t7.925\t\tS\r\n416\t0\t3\t\"Meek, Mrs. Thomas (Annie Louise Rowley)\"\tfemale\t\t0\t0\t343095\t8.05\t\tS\r\n417\t1\t2\t\"Drew, Mrs. James Vivian (Lulu Thorne Christian)\"\tfemale\t34\t1\t1\t28220\t32.5\t\tS\r\n418\t1\t2\t\"Silven, Miss. Lyyli Karoliina\"\tfemale\t18\t0\t2\t250652\t13\t\tS\r\n419\t0\t2\t\"Matthews, Mr. William John\"\tmale\t30\t0\t0\t28228\t13\t\tS\r\n420\t0\t3\t\"Van Impe, Miss. Catharina\"\tfemale\t10\t0\t2\t345773\t24.15\t\tS\r\n421\t0\t3\t\"Gheorgheff, Mr. Stanio\"\tmale\t\t0\t0\t349254\t7.8958\t\tC\r\n422\t0\t3\t\"Charters, Mr. David\"\tmale\t21\t0\t0\tA/5. 13032\t7.7333\t\tQ\r\n423\t0\t3\t\"Zimmerman, Mr. Leo\"\tmale\t29\t0\t0\t315082\t7.875\t\tS\r\n424\t0\t3\t\"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)\"\tfemale\t28\t1\t1\t347080\t14.4\t\tS\r\n425\t0\t3\t\"Rosblom, Mr. Viktor Richard\"\tmale\t18\t1\t1\t370129\t20.2125\t\tS\r\n426\t0\t3\t\"Wiseman, Mr. Phillippe\"\tmale\t\t0\t0\tA/4. 34244\t7.25\t\tS\r\n427\t1\t2\t\"Clarke, Mrs. Charles V (Ada Maria Winfield)\"\tfemale\t28\t1\t0\t2003\t26\t\tS\r\n428\t1\t2\t\"Phillips, Miss. Kate Florence (\"\"Mrs Kate Louise Phillips Marshall\"\")\"\tfemale\t19\t0\t0\t250655\t26\t\tS\r\n429\t0\t3\t\"Flynn, Mr. James\"\tmale\t\t0\t0\t364851\t7.75\t\tQ\r\n430\t1\t3\t\"Pickard, Mr. Berk (Berk Trembisky)\"\tmale\t32\t0\t0\tSOTON/O.Q. 392078\t8.05\tE10\tS\r\n431\t1\t1\t\"Bjornstrom-Steffansson, Mr. Mauritz Hakan\"\tmale\t28\t0\t0\t110564\t26.55\tC52\tS\r\n432\t1\t3\t\"Thorneycroft, Mrs. Percival (Florence Kate White)\"\tfemale\t\t1\t0\t376564\t16.1\t\tS\r\n433\t1\t2\t\"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)\"\tfemale\t42\t1\t0\tSC/AH 3085\t26\t\tS\r\n434\t0\t3\t\"Kallio, Mr. Nikolai Erland\"\tmale\t17\t0\t0\tSTON/O 2. 3101274\t7.125\t\tS\r\n435\t0\t1\t\"Silvey, Mr. William Baird\"\tmale\t50\t1\t0\t13507\t55.9\tE44\tS\r\n436\t1\t1\t\"Carter, Miss. Lucile Polk\"\tfemale\t14\t1\t2\t113760\t120\tB96 B98\tS\r\n437\t0\t3\t\"Ford, Miss. Doolina Margaret \"\"Daisy\"\"\"\tfemale\t21\t2\t2\tW./C. 6608\t34.375\t\tS\r\n438\t1\t2\t\"Richards, Mrs. Sidney (Emily Hocking)\"\tfemale\t24\t2\t3\t29106\t18.75\t\tS\r\n439\t0\t1\t\"Fortune, Mr. Mark\"\tmale\t64\t1\t4\t19950\t263\tC23 C25 C27\tS\r\n440\t0\t2\t\"Kvillner, Mr. Johan Henrik Johannesson\"\tmale\t31\t0\t0\tC.A. 18723\t10.5\t\tS\r\n441\t1\t2\t\"Hart, Mrs. Benjamin (Esther Ada Bloomfield)\"\tfemale\t45\t1\t1\tF.C.C. 13529\t26.25\t\tS\r\n442\t0\t3\t\"Hampe, Mr. Leon\"\tmale\t20\t0\t0\t345769\t9.5\t\tS\r\n443\t0\t3\t\"Petterson, Mr. Johan Emil\"\tmale\t25\t1\t0\t347076\t7.775\t\tS\r\n444\t1\t2\t\"Reynaldo, Ms. Encarnacion\"\tfemale\t28\t0\t0\t230434\t13\t\tS\r\n445\t1\t3\t\"Johannesen-Bratthammer, Mr. Bernt\"\tmale\t\t0\t0\t65306\t8.1125\t\tS\r\n446\t1\t1\t\"Dodge, Master. Washington\"\tmale\t4\t0\t2\t33638\t81.8583\tA34\tS\r\n447\t1\t2\t\"Mellinger, Miss. Madeleine Violet\"\tfemale\t13\t0\t1\t250644\t19.5\t\tS\r\n448\t1\t1\t\"Seward, Mr. Frederic Kimber\"\tmale\t34\t0\t0\t113794\t26.55\t\tS\r\n449\t1\t3\t\"Baclini, Miss. Marie Catherine\"\tfemale\t5\t2\t1\t2666\t19.2583\t\tC\r\n450\t1\t1\t\"Peuchen, Major. Arthur Godfrey\"\tmale\t52\t0\t0\t113786\t30.5\tC104\tS\r\n451\t0\t2\t\"West, Mr. Edwy Arthur\"\tmale\t36\t1\t2\tC.A. 34651\t27.75\t\tS\r\n452\t0\t3\t\"Hagland, Mr. Ingvald Olai Olsen\"\tmale\t\t1\t0\t65303\t19.9667\t\tS\r\n453\t0\t1\t\"Foreman, Mr. Benjamin Laventall\"\tmale\t30\t0\t0\t113051\t27.75\tC111\tC\r\n454\t1\t1\t\"Goldenberg, Mr. Samuel L\"\tmale\t49\t1\t0\t17453\t89.1042\tC92\tC\r\n455\t0\t3\t\"Peduzzi, Mr. Joseph\"\tmale\t\t0\t0\tA/5 2817\t8.05\t\tS\r\n456\t1\t3\t\"Jalsevac, Mr. Ivan\"\tmale\t29\t0\t0\t349240\t7.8958\t\tC\r\n457\t0\t1\t\"Millet, Mr. Francis Davis\"\tmale\t65\t0\t0\t13509\t26.55\tE38\tS\r\n458\t1\t1\t\"Kenyon, Mrs. Frederick R (Marion)\"\tfemale\t\t1\t0\t17464\t51.8625\tD21\tS\r\n459\t1\t2\t\"Toomey, Miss. Ellen\"\tfemale\t50\t0\t0\tF.C.C. 13531\t10.5\t\tS\r\n460\t0\t3\t\"O'Connor, Mr. Maurice\"\tmale\t\t0\t0\t371060\t7.75\t\tQ\r\n461\t1\t1\t\"Anderson, Mr. Harry\"\tmale\t48\t0\t0\t19952\t26.55\tE12\tS\r\n462\t0\t3\t\"Morley, Mr. William\"\tmale\t34\t0\t0\t364506\t8.05\t\tS\r\n463\t0\t1\t\"Gee, Mr. Arthur H\"\tmale\t47\t0\t0\t111320\t38.5\tE63\tS\r\n464\t0\t2\t\"Milling, Mr. Jacob Christian\"\tmale\t48\t0\t0\t234360\t13\t\tS\r\n465\t0\t3\t\"Maisner, Mr. Simon\"\tmale\t\t0\t0\tA/S 2816\t8.05\t\tS\r\n466\t0\t3\t\"Goncalves, Mr. Manuel Estanslas\"\tmale\t38\t0\t0\tSOTON/O.Q. 3101306\t7.05\t\tS\r\n467\t0\t2\t\"Campbell, Mr. William\"\tmale\t\t0\t0\t239853\t0\t\tS\r\n468\t0\t1\t\"Smart, Mr. John Montgomery\"\tmale\t56\t0\t0\t113792\t26.55\t\tS\r\n469\t0\t3\t\"Scanlan, Mr. James\"\tmale\t\t0\t0\t36209\t7.725\t\tQ\r\n470\t1\t3\t\"Baclini, Miss. Helene Barbara\"\tfemale\t0.75\t2\t1\t2666\t19.2583\t\tC\r\n471\t0\t3\t\"Keefe, Mr. Arthur\"\tmale\t\t0\t0\t323592\t7.25\t\tS\r\n472\t0\t3\t\"Cacic, Mr. Luka\"\tmale\t38\t0\t0\t315089\t8.6625\t\tS\r\n473\t1\t2\t\"West, Mrs. Edwy Arthur (Ada Mary Worth)\"\tfemale\t33\t1\t2\tC.A. 34651\t27.75\t\tS\r\n474\t1\t2\t\"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)\"\tfemale\t23\t0\t0\tSC/AH Basle 541\t13.7917\tD\tC\r\n475\t0\t3\t\"Strandberg, Miss. Ida Sofia\"\tfemale\t22\t0\t0\t7553\t9.8375\t\tS\r\n476\t0\t1\t\"Clifford, Mr. George Quincy\"\tmale\t\t0\t0\t110465\t52\tA14\tS\r\n477\t0\t2\t\"Renouf, Mr. Peter Henry\"\tmale\t34\t1\t0\t31027\t21\t\tS\r\n478\t0\t3\t\"Braund, Mr. Lewis Richard\"\tmale\t29\t1\t0\t3460\t7.0458\t\tS\r\n479\t0\t3\t\"Karlsson, Mr. Nils August\"\tmale\t22\t0\t0\t350060\t7.5208\t\tS\r\n480\t1\t3\t\"Hirvonen, Miss. Hildur E\"\tfemale\t2\t0\t1\t3101298\t12.2875\t\tS\r\n481\t0\t3\t\"Goodwin, Master. Harold Victor\"\tmale\t9\t5\t2\tCA 2144\t46.9\t\tS\r\n482\t0\t2\t\"Frost, Mr. Anthony Wood \"\"Archie\"\"\"\tmale\t\t0\t0\t239854\t0\t\tS\r\n483\t0\t3\t\"Rouse, Mr. Richard Henry\"\tmale\t50\t0\t0\tA/5 3594\t8.05\t\tS\r\n484\t1\t3\t\"Turkula, Mrs. (Hedwig)\"\tfemale\t63\t0\t0\t4134\t9.5875\t\tS\r\n485\t1\t1\t\"Bishop, Mr. Dickinson H\"\tmale\t25\t1\t0\t11967\t91.0792\tB49\tC\r\n486\t0\t3\t\"Lefebre, Miss. Jeannie\"\tfemale\t\t3\t1\t4133\t25.4667\t\tS\r\n487\t1\t1\t\"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)\"\tfemale\t35\t1\t0\t19943\t90\tC93\tS\r\n488\t0\t1\t\"Kent, Mr. Edward Austin\"\tmale\t58\t0\t0\t11771\t29.7\tB37\tC\r\n489\t0\t3\t\"Somerton, Mr. Francis William\"\tmale\t30\t0\t0\tA.5. 18509\t8.05\t\tS\r\n490\t1\t3\t\"Coutts, Master. Eden Leslie \"\"Neville\"\"\"\tmale\t9\t1\t1\tC.A. 37671\t15.9\t\tS\r\n491\t0\t3\t\"Hagland, Mr. Konrad Mathias Reiersen\"\tmale\t\t1\t0\t65304\t19.9667\t\tS\r\n492\t0\t3\t\"Windelov, Mr. Einar\"\tmale\t21\t0\t0\tSOTON/OQ 3101317\t7.25\t\tS\r\n493\t0\t1\t\"Molson, Mr. Harry Markland\"\tmale\t55\t0\t0\t113787\t30.5\tC30\tS\r\n494\t0\t1\t\"Artagaveytia, Mr. Ramon\"\tmale\t71\t0\t0\tPC 17609\t49.5042\t\tC\r\n495\t0\t3\t\"Stanley, Mr. Edward Roland\"\tmale\t21\t0\t0\tA/4 45380\t8.05\t\tS\r\n496\t0\t3\t\"Yousseff, Mr. Gerious\"\tmale\t\t0\t0\t2627\t14.4583\t\tC\r\n497\t1\t1\t\"Eustis, Miss. Elizabeth Mussey\"\tfemale\t54\t1\t0\t36947\t78.2667\tD20\tC\r\n498\t0\t3\t\"Shellard, Mr. Frederick William\"\tmale\t\t0\t0\tC.A. 6212\t15.1\t\tS\r\n499\t0\t1\t\"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)\"\tfemale\t25\t1\t2\t113781\t151.55\tC22 C26\tS\r\n500\t0\t3\t\"Svensson, Mr. Olof\"\tmale\t24\t0\t0\t350035\t7.7958\t\tS\r\n501\t0\t3\t\"Calic, Mr. Petar\"\tmale\t17\t0\t0\t315086\t8.6625\t\tS\r\n502\t0\t3\t\"Canavan, Miss. Mary\"\tfemale\t21\t0\t0\t364846\t7.75\t\tQ\r\n503\t0\t3\t\"O'Sullivan, Miss. Bridget Mary\"\tfemale\t\t0\t0\t330909\t7.6292\t\tQ\r\n504\t0\t3\t\"Laitinen, Miss. Kristina Sofia\"\tfemale\t37\t0\t0\t4135\t9.5875\t\tS\r\n505\t1\t1\t\"Maioni, Miss. Roberta\"\tfemale\t16\t0\t0\t110152\t86.5\tB79\tS\r\n506\t0\t1\t\"Penasco y Castellana, Mr. Victor de Satode\"\tmale\t18\t1\t0\tPC 17758\t108.9\tC65\tC\r\n507\t1\t2\t\"Quick, Mrs. Frederick Charles (Jane Richards)\"\tfemale\t33\t0\t2\t26360\t26\t\tS\r\n508\t1\t1\t\"Bradley, Mr. George (\"\"George Arthur Brayton\"\")\"\tmale\t\t0\t0\t111427\t26.55\t\tS\r\n509\t0\t3\t\"Olsen, Mr. Henry Margido\"\tmale\t28\t0\t0\tC 4001\t22.525\t\tS\r\n510\t1\t3\t\"Lang, Mr. Fang\"\tmale\t26\t0\t0\t1601\t56.4958\t\tS\r\n511\t1\t3\t\"Daly, Mr. Eugene Patrick\"\tmale\t29\t0\t0\t382651\t7.75\t\tQ\r\n512\t0\t3\t\"Webber, Mr. James\"\tmale\t\t0\t0\tSOTON/OQ 3101316\t8.05\t\tS\r\n513\t1\t1\t\"McGough, Mr. James Robert\"\tmale\t36\t0\t0\tPC 17473\t26.2875\tE25\tS\r\n514\t1\t1\t\"Rothschild, Mrs. Martin (Elizabeth L. Barrett)\"\tfemale\t54\t1\t0\tPC 17603\t59.4\t\tC\r\n515\t0\t3\t\"Coleff, Mr. Satio\"\tmale\t24\t0\t0\t349209\t7.4958\t\tS\r\n516\t0\t1\t\"Walker, Mr. William Anderson\"\tmale\t47\t0\t0\t36967\t34.0208\tD46\tS\r\n517\t1\t2\t\"Lemore, Mrs. (Amelia Milley)\"\tfemale\t34\t0\t0\tC.A. 34260\t10.5\tF33\tS\r\n518\t0\t3\t\"Ryan, Mr. Patrick\"\tmale\t\t0\t0\t371110\t24.15\t\tQ\r\n519\t1\t2\t\"Angle, Mrs. William A (Florence \"\"Mary\"\" Agnes Hughes)\"\tfemale\t36\t1\t0\t226875\t26\t\tS\r\n520\t0\t3\t\"Pavlovic, Mr. Stefo\"\tmale\t32\t0\t0\t349242\t7.8958\t\tS\r\n521\t1\t1\t\"Perreault, Miss. Anne\"\tfemale\t30\t0\t0\t12749\t93.5\tB73\tS\r\n522\t0\t3\t\"Vovk, Mr. Janko\"\tmale\t22\t0\t0\t349252\t7.8958\t\tS\r\n523\t0\t3\t\"Lahoud, Mr. Sarkis\"\tmale\t\t0\t0\t2624\t7.225\t\tC\r\n524\t1\t1\t\"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)\"\tfemale\t44\t0\t1\t111361\t57.9792\tB18\tC\r\n525\t0\t3\t\"Kassem, Mr. Fared\"\tmale\t\t0\t0\t2700\t7.2292\t\tC\r\n526\t0\t3\t\"Farrell, Mr. James\"\tmale\t40.5\t0\t0\t367232\t7.75\t\tQ\r\n527\t1\t2\t\"Ridsdale, Miss. Lucy\"\tfemale\t50\t0\t0\tW./C. 14258\t10.5\t\tS\r\n528\t0\t1\t\"Farthing, Mr. John\"\tmale\t\t0\t0\tPC 17483\t221.7792\tC95\tS\r\n529\t0\t3\t\"Salonen, Mr. Johan Werner\"\tmale\t39\t0\t0\t3101296\t7.925\t\tS\r\n530\t0\t2\t\"Hocking, Mr. Richard George\"\tmale\t23\t2\t1\t29104\t11.5\t\tS\r\n531\t1\t2\t\"Quick, Miss. Phyllis May\"\tfemale\t2\t1\t1\t26360\t26\t\tS\r\n532\t0\t3\t\"Toufik, Mr. Nakli\"\tmale\t\t0\t0\t2641\t7.2292\t\tC\r\n533\t0\t3\t\"Elias, Mr. Joseph Jr\"\tmale\t17\t1\t1\t2690\t7.2292\t\tC\r\n534\t1\t3\t\"Peter, Mrs. Catherine (Catherine Rizk)\"\tfemale\t\t0\t2\t2668\t22.3583\t\tC\r\n535\t0\t3\t\"Cacic, Miss. Marija\"\tfemale\t30\t0\t0\t315084\t8.6625\t\tS\r\n536\t1\t2\t\"Hart, Miss. Eva Miriam\"\tfemale\t7\t0\t2\tF.C.C. 13529\t26.25\t\tS\r\n537\t0\t1\t\"Butt, Major. Archibald Willingham\"\tmale\t45\t0\t0\t113050\t26.55\tB38\tS\r\n538\t1\t1\t\"LeRoy, Miss. Bertha\"\tfemale\t30\t0\t0\tPC 17761\t106.425\t\tC\r\n539\t0\t3\t\"Risien, Mr. Samuel Beard\"\tmale\t\t0\t0\t364498\t14.5\t\tS\r\n540\t1\t1\t\"Frolicher, Miss. Hedwig Margaritha\"\tfemale\t22\t0\t2\t13568\t49.5\tB39\tC\r\n541\t1\t1\t\"Crosby, Miss. Harriet R\"\tfemale\t36\t0\t2\tWE/P 5735\t71\tB22\tS\r\n542\t0\t3\t\"Andersson, Miss. Ingeborg Constanzia\"\tfemale\t9\t4\t2\t347082\t31.275\t\tS\r\n543\t0\t3\t\"Andersson, Miss. Sigrid Elisabeth\"\tfemale\t11\t4\t2\t347082\t31.275\t\tS\r\n544\t1\t2\t\"Beane, Mr. Edward\"\tmale\t32\t1\t0\t2908\t26\t\tS\r\n545\t0\t1\t\"Douglas, Mr. Walter Donald\"\tmale\t50\t1\t0\tPC 17761\t106.425\tC86\tC\r\n546\t0\t1\t\"Nicholson, Mr. Arthur Ernest\"\tmale\t64\t0\t0\t693\t26\t\tS\r\n547\t1\t2\t\"Beane, Mrs. Edward (Ethel Clarke)\"\tfemale\t19\t1\t0\t2908\t26\t\tS\r\n548\t1\t2\t\"Padro y Manent, Mr. Julian\"\tmale\t\t0\t0\tSC/PARIS 2146\t13.8625\t\tC\r\n549\t0\t3\t\"Goldsmith, Mr. Frank John\"\tmale\t33\t1\t1\t363291\t20.525\t\tS\r\n550\t1\t2\t\"Davies, Master. John Morgan Jr\"\tmale\t8\t1\t1\tC.A. 33112\t36.75\t\tS\r\n551\t1\t1\t\"Thayer, Mr. John Borland Jr\"\tmale\t17\t0\t2\t17421\t110.8833\tC70\tC\r\n552\t0\t2\t\"Sharp, Mr. Percival James R\"\tmale\t27\t0\t0\t244358\t26\t\tS\r\n553\t0\t3\t\"O'Brien, Mr. Timothy\"\tmale\t\t0\t0\t330979\t7.8292\t\tQ\r\n554\t1\t3\t\"Leeni, Mr. Fahim (\"\"Philip Zenni\"\")\"\tmale\t22\t0\t0\t2620\t7.225\t\tC\r\n555\t1\t3\t\"Ohman, Miss. Velin\"\tfemale\t22\t0\t0\t347085\t7.775\t\tS\r\n556\t0\t1\t\"Wright, Mr. George\"\tmale\t62\t0\t0\t113807\t26.55\t\tS\r\n557\t1\t1\t\"Duff Gordon, Lady. (Lucille Christiana Sutherland) (\"\"Mrs Morgan\"\")\"\tfemale\t48\t1\t0\t11755\t39.6\tA16\tC\r\n558\t0\t1\t\"Robbins, Mr. Victor\"\tmale\t\t0\t0\tPC 17757\t227.525\t\tC\r\n559\t1\t1\t\"Taussig, Mrs. Emil (Tillie Mandelbaum)\"\tfemale\t39\t1\t1\t110413\t79.65\tE67\tS\r\n560\t1\t3\t\"de Messemaeker, Mrs. Guillaume Joseph (Emma)\"\tfemale\t36\t1\t0\t345572\t17.4\t\tS\r\n561\t0\t3\t\"Morrow, Mr. Thomas Rowan\"\tmale\t\t0\t0\t372622\t7.75\t\tQ\r\n562\t0\t3\t\"Sivic, Mr. Husein\"\tmale\t40\t0\t0\t349251\t7.8958\t\tS\r\n563\t0\t2\t\"Norman, Mr. Robert Douglas\"\tmale\t28\t0\t0\t218629\t13.5\t\tS\r\n564\t0\t3\t\"Simmons, Mr. John\"\tmale\t\t0\t0\tSOTON/OQ 392082\t8.05\t\tS\r\n565\t0\t3\t\"Meanwell, Miss. (Marion Ogden)\"\tfemale\t\t0\t0\tSOTON/O.Q. 392087\t8.05\t\tS\r\n566\t0\t3\t\"Davies, Mr. Alfred J\"\tmale\t24\t2\t0\tA/4 48871\t24.15\t\tS\r\n567\t0\t3\t\"Stoytcheff, Mr. Ilia\"\tmale\t19\t0\t0\t349205\t7.8958\t\tS\r\n568\t0\t3\t\"Palsson, Mrs. Nils (Alma Cornelia Berglund)\"\tfemale\t29\t0\t4\t349909\t21.075\t\tS\r\n569\t0\t3\t\"Doharr, Mr. Tannous\"\tmale\t\t0\t0\t2686\t7.2292\t\tC\r\n570\t1\t3\t\"Jonsson, Mr. Carl\"\tmale\t32\t0\t0\t350417\t7.8542\t\tS\r\n571\t1\t2\t\"Harris, Mr. George\"\tmale\t62\t0\t0\tS.W./PP 752\t10.5\t\tS\r\n572\t1\t1\t\"Appleton, Mrs. Edward Dale (Charlotte Lamson)\"\tfemale\t53\t2\t0\t11769\t51.4792\tC101\tS\r\n573\t1\t1\t\"Flynn, Mr. John Irwin (\"\"Irving\"\")\"\tmale\t36\t0\t0\tPC 17474\t26.3875\tE25\tS\r\n574\t1\t3\t\"Kelly, Miss. Mary\"\tfemale\t\t0\t0\t14312\t7.75\t\tQ\r\n575\t0\t3\t\"Rush, Mr. Alfred George John\"\tmale\t16\t0\t0\tA/4. 20589\t8.05\t\tS\r\n576\t0\t3\t\"Patchett, Mr. George\"\tmale\t19\t0\t0\t358585\t14.5\t\tS\r\n577\t1\t2\t\"Garside, Miss. Ethel\"\tfemale\t34\t0\t0\t243880\t13\t\tS\r\n578\t1\t1\t\"Silvey, Mrs. William Baird (Alice Munger)\"\tfemale\t39\t1\t0\t13507\t55.9\tE44\tS\r\n579\t0\t3\t\"Caram, Mrs. Joseph (Maria Elias)\"\tfemale\t\t1\t0\t2689\t14.4583\t\tC\r\n580\t1\t3\t\"Jussila, Mr. Eiriik\"\tmale\t32\t0\t0\tSTON/O 2. 3101286\t7.925\t\tS\r\n581\t1\t2\t\"Christy, Miss. Julie Rachel\"\tfemale\t25\t1\t1\t237789\t30\t\tS\r\n582\t1\t1\t\"Thayer, Mrs. John Borland (Marian Longstreth Morris)\"\tfemale\t39\t1\t1\t17421\t110.8833\tC68\tC\r\n583\t0\t2\t\"Downton, Mr. William James\"\tmale\t54\t0\t0\t28403\t26\t\tS\r\n584\t0\t1\t\"Ross, Mr. John Hugo\"\tmale\t36\t0\t0\t13049\t40.125\tA10\tC\r\n585\t0\t3\t\"Paulner, Mr. Uscher\"\tmale\t\t0\t0\t3411\t8.7125\t\tC\r\n586\t1\t1\t\"Taussig, Miss. Ruth\"\tfemale\t18\t0\t2\t110413\t79.65\tE68\tS\r\n587\t0\t2\t\"Jarvis, Mr. John Denzil\"\tmale\t47\t0\t0\t237565\t15\t\tS\r\n588\t1\t1\t\"Frolicher-Stehli, Mr. Maxmillian\"\tmale\t60\t1\t1\t13567\t79.2\tB41\tC\r\n589\t0\t3\t\"Gilinski, Mr. Eliezer\"\tmale\t22\t0\t0\t14973\t8.05\t\tS\r\n590\t0\t3\t\"Murdlin, Mr. Joseph\"\tmale\t\t0\t0\tA./5. 3235\t8.05\t\tS\r\n591\t0\t3\t\"Rintamaki, Mr. Matti\"\tmale\t35\t0\t0\tSTON/O 2. 3101273\t7.125\t\tS\r\n592\t1\t1\t\"Stephenson, Mrs. Walter Bertram (Martha Eustis)\"\tfemale\t52\t1\t0\t36947\t78.2667\tD20\tC\r\n593\t0\t3\t\"Elsbury, Mr. William James\"\tmale\t47\t0\t0\tA/5 3902\t7.25\t\tS\r\n594\t0\t3\t\"Bourke, Miss. Mary\"\tfemale\t\t0\t2\t364848\t7.75\t\tQ\r\n595\t0\t2\t\"Chapman, Mr. John Henry\"\tmale\t37\t1\t0\tSC/AH 29037\t26\t\tS\r\n596\t0\t3\t\"Van Impe, Mr. Jean Baptiste\"\tmale\t36\t1\t1\t345773\t24.15\t\tS\r\n597\t1\t2\t\"Leitch, Miss. Jessie Wills\"\tfemale\t\t0\t0\t248727\t33\t\tS\r\n598\t0\t3\t\"Johnson, Mr. Alfred\"\tmale\t49\t0\t0\tLINE\t0\t\tS\r\n599\t0\t3\t\"Boulos, Mr. Hanna\"\tmale\t\t0\t0\t2664\t7.225\t\tC\r\n600\t1\t1\t\"Duff Gordon, Sir. Cosmo Edmund (\"\"Mr Morgan\"\")\"\tmale\t49\t1\t0\tPC 17485\t56.9292\tA20\tC\r\n601\t1\t2\t\"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)\"\tfemale\t24\t2\t1\t243847\t27\t\tS\r\n602\t0\t3\t\"Slabenoff, Mr. Petco\"\tmale\t\t0\t0\t349214\t7.8958\t\tS\r\n603\t0\t1\t\"Harrington, Mr. Charles H\"\tmale\t\t0\t0\t113796\t42.4\t\tS\r\n604\t0\t3\t\"Torber, Mr. Ernst William\"\tmale\t44\t0\t0\t364511\t8.05\t\tS\r\n605\t1\t1\t\"Homer, Mr. Harry (\"\"Mr E Haven\"\")\"\tmale\t35\t0\t0\t111426\t26.55\t\tC\r\n606\t0\t3\t\"Lindell, Mr. Edvard Bengtsson\"\tmale\t36\t1\t0\t349910\t15.55\t\tS\r\n607\t0\t3\t\"Karaic, Mr. Milan\"\tmale\t30\t0\t0\t349246\t7.8958\t\tS\r\n608\t1\t1\t\"Daniel, Mr. Robert Williams\"\tmale\t27\t0\t0\t113804\t30.5\t\tS\r\n609\t1\t2\t\"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)\"\tfemale\t22\t1\t2\tSC/Paris 2123\t41.5792\t\tC\r\n610\t1\t1\t\"Shutes, Miss. Elizabeth W\"\tfemale\t40\t0\t0\tPC 17582\t153.4625\tC125\tS\r\n611\t0\t3\t\"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)\"\tfemale\t39\t1\t5\t347082\t31.275\t\tS\r\n612\t0\t3\t\"Jardin, Mr. Jose Neto\"\tmale\t\t0\t0\tSOTON/O.Q. 3101305\t7.05\t\tS\r\n613\t1\t3\t\"Murphy, Miss. Margaret Jane\"\tfemale\t\t1\t0\t367230\t15.5\t\tQ\r\n614\t0\t3\t\"Horgan, Mr. John\"\tmale\t\t0\t0\t370377\t7.75\t\tQ\r\n615\t0\t3\t\"Brocklebank, Mr. William Alfred\"\tmale\t35\t0\t0\t364512\t8.05\t\tS\r\n616\t1\t2\t\"Herman, Miss. Alice\"\tfemale\t24\t1\t2\t220845\t65\t\tS\r\n617\t0\t3\t\"Danbom, Mr. Ernst Gilbert\"\tmale\t34\t1\t1\t347080\t14.4\t\tS\r\n618\t0\t3\t\"Lobb, Mrs. William Arthur (Cordelia K Stanlick)\"\tfemale\t26\t1\t0\tA/5. 3336\t16.1\t\tS\r\n619\t1\t2\t\"Becker, Miss. Marion Louise\"\tfemale\t4\t2\t1\t230136\t39\tF4\tS\r\n620\t0\t2\t\"Gavey, Mr. Lawrence\"\tmale\t26\t0\t0\t31028\t10.5\t\tS\r\n621\t0\t3\t\"Yasbeck, Mr. Antoni\"\tmale\t27\t1\t0\t2659\t14.4542\t\tC\r\n622\t1\t1\t\"Kimball, Mr. Edwin Nelson Jr\"\tmale\t42\t1\t0\t11753\t52.5542\tD19\tS\r\n623\t1\t3\t\"Nakid, Mr. Sahid\"\tmale\t20\t1\t1\t2653\t15.7417\t\tC\r\n624\t0\t3\t\"Hansen, Mr. Henry Damsgaard\"\tmale\t21\t0\t0\t350029\t7.8542\t\tS\r\n625\t0\t3\t\"Bowen, Mr. David John \"\"Dai\"\"\"\tmale\t21\t0\t0\t54636\t16.1\t\tS\r\n626\t0\t1\t\"Sutton, Mr. Frederick\"\tmale\t61\t0\t0\t36963\t32.3208\tD50\tS\r\n627\t0\t2\t\"Kirkland, Rev. Charles Leonard\"\tmale\t57\t0\t0\t219533\t12.35\t\tQ\r\n628\t1\t1\t\"Longley, Miss. Gretchen Fiske\"\tfemale\t21\t0\t0\t13502\t77.9583\tD9\tS\r\n629\t0\t3\t\"Bostandyeff, Mr. Guentcho\"\tmale\t26\t0\t0\t349224\t7.8958\t\tS\r\n630\t0\t3\t\"O'Connell, Mr. Patrick D\"\tmale\t\t0\t0\t334912\t7.7333\t\tQ\r\n631\t1\t1\t\"Barkworth, Mr. Algernon Henry Wilson\"\tmale\t80\t0\t0\t27042\t30\tA23\tS\r\n632\t0\t3\t\"Lundahl, Mr. Johan Svensson\"\tmale\t51\t0\t0\t347743\t7.0542\t\tS\r\n633\t1\t1\t\"Stahelin-Maeglin, Dr. Max\"\tmale\t32\t0\t0\t13214\t30.5\tB50\tC\r\n634\t0\t1\t\"Parr, Mr. William Henry Marsh\"\tmale\t\t0\t0\t112052\t0\t\tS\r\n635\t0\t3\t\"Skoog, Miss. Mabel\"\tfemale\t9\t3\t2\t347088\t27.9\t\tS\r\n636\t1\t2\t\"Davis, Miss. Mary\"\tfemale\t28\t0\t0\t237668\t13\t\tS\r\n637\t0\t3\t\"Leinonen, Mr. Antti Gustaf\"\tmale\t32\t0\t0\tSTON/O 2. 3101292\t7.925\t\tS\r\n638\t0\t2\t\"Collyer, Mr. Harvey\"\tmale\t31\t1\t1\tC.A. 31921\t26.25\t\tS\r\n639\t0\t3\t\"Panula, Mrs. Juha (Maria Emilia Ojala)\"\tfemale\t41\t0\t5\t3101295\t39.6875\t\tS\r\n640\t0\t3\t\"Thorneycroft, Mr. Percival\"\tmale\t\t1\t0\t376564\t16.1\t\tS\r\n641\t0\t3\t\"Jensen, Mr. Hans Peder\"\tmale\t20\t0\t0\t350050\t7.8542\t\tS\r\n642\t1\t1\t\"Sagesser, Mlle. Emma\"\tfemale\t24\t0\t0\tPC 17477\t69.3\tB35\tC\r\n643\t0\t3\t\"Skoog, Miss. Margit Elizabeth\"\tfemale\t2\t3\t2\t347088\t27.9\t\tS\r\n644\t1\t3\t\"Foo, Mr. Choong\"\tmale\t\t0\t0\t1601\t56.4958\t\tS\r\n645\t1\t3\t\"Baclini, Miss. Eugenie\"\tfemale\t0.75\t2\t1\t2666\t19.2583\t\tC\r\n646\t1\t1\t\"Harper, Mr. Henry Sleeper\"\tmale\t48\t1\t0\tPC 17572\t76.7292\tD33\tC\r\n647\t0\t3\t\"Cor, Mr. Liudevit\"\tmale\t19\t0\t0\t349231\t7.8958\t\tS\r\n648\t1\t1\t\"Simonius-Blumer, Col. Oberst Alfons\"\tmale\t56\t0\t0\t13213\t35.5\tA26\tC\r\n649\t0\t3\t\"Willey, Mr. Edward\"\tmale\t\t0\t0\tS.O./P.P. 751\t7.55\t\tS\r\n650\t1\t3\t\"Stanley, Miss. Amy Zillah Elsie\"\tfemale\t23\t0\t0\tCA. 2314\t7.55\t\tS\r\n651\t0\t3\t\"Mitkoff, Mr. Mito\"\tmale\t\t0\t0\t349221\t7.8958\t\tS\r\n652\t1\t2\t\"Doling, Miss. Elsie\"\tfemale\t18\t0\t1\t231919\t23\t\tS\r\n653\t0\t3\t\"Kalvik, Mr. Johannes Halvorsen\"\tmale\t21\t0\t0\t8475\t8.4333\t\tS\r\n654\t1\t3\t\"O'Leary, Miss. Hanora \"\"Norah\"\"\"\tfemale\t\t0\t0\t330919\t7.8292\t\tQ\r\n655\t0\t3\t\"Hegarty, Miss. Hanora \"\"Nora\"\"\"\tfemale\t18\t0\t0\t365226\t6.75\t\tQ\r\n656\t0\t2\t\"Hickman, Mr. Leonard Mark\"\tmale\t24\t2\t0\tS.O.C. 14879\t73.5\t\tS\r\n657\t0\t3\t\"Radeff, Mr. Alexander\"\tmale\t\t0\t0\t349223\t7.8958\t\tS\r\n658\t0\t3\t\"Bourke, Mrs. John (Catherine)\"\tfemale\t32\t1\t1\t364849\t15.5\t\tQ\r\n659\t0\t2\t\"Eitemiller, Mr. George Floyd\"\tmale\t23\t0\t0\t29751\t13\t\tS\r\n660\t0\t1\t\"Newell, Mr. Arthur Webster\"\tmale\t58\t0\t2\t35273\t113.275\tD48\tC\r\n661\t1\t1\t\"Frauenthal, Dr. Henry William\"\tmale\t50\t2\t0\tPC 17611\t133.65\t\tS\r\n662\t0\t3\t\"Badt, Mr. Mohamed\"\tmale\t40\t0\t0\t2623\t7.225\t\tC\r\n663\t0\t1\t\"Colley, Mr. Edward Pomeroy\"\tmale\t47\t0\t0\t5727\t25.5875\tE58\tS\r\n664\t0\t3\t\"Coleff, Mr. Peju\"\tmale\t36\t0\t0\t349210\t7.4958\t\tS\r\n665\t1\t3\t\"Lindqvist, Mr. Eino William\"\tmale\t20\t1\t0\tSTON/O 2. 3101285\t7.925\t\tS\r\n666\t0\t2\t\"Hickman, Mr. Lewis\"\tmale\t32\t2\t0\tS.O.C. 14879\t73.5\t\tS\r\n667\t0\t2\t\"Butler, Mr. Reginald Fenton\"\tmale\t25\t0\t0\t234686\t13\t\tS\r\n668\t0\t3\t\"Rommetvedt, Mr. Knud Paust\"\tmale\t\t0\t0\t312993\t7.775\t\tS\r\n669\t0\t3\t\"Cook, Mr. Jacob\"\tmale\t43\t0\t0\tA/5 3536\t8.05\t\tS\r\n670\t1\t1\t\"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)\"\tfemale\t\t1\t0\t19996\t52\tC126\tS\r\n671\t1\t2\t\"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)\"\tfemale\t40\t1\t1\t29750\t39\t\tS\r\n672\t0\t1\t\"Davidson, Mr. Thornton\"\tmale\t31\t1\t0\tF.C. 12750\t52\tB71\tS\r\n673\t0\t2\t\"Mitchell, Mr. Henry Michael\"\tmale\t70\t0\t0\tC.A. 24580\t10.5\t\tS\r\n674\t1\t2\t\"Wilhelms, Mr. Charles\"\tmale\t31\t0\t0\t244270\t13\t\tS\r\n675\t0\t2\t\"Watson, Mr. Ennis Hastings\"\tmale\t\t0\t0\t239856\t0\t\tS\r\n676\t0\t3\t\"Edvardsson, Mr. Gustaf Hjalmar\"\tmale\t18\t0\t0\t349912\t7.775\t\tS\r\n677\t0\t3\t\"Sawyer, Mr. Frederick Charles\"\tmale\t24.5\t0\t0\t342826\t8.05\t\tS\r\n678\t1\t3\t\"Turja, Miss. Anna Sofia\"\tfemale\t18\t0\t0\t4138\t9.8417\t\tS\r\n679\t0\t3\t\"Goodwin, Mrs. Frederick (Augusta Tyler)\"\tfemale\t43\t1\t6\tCA 2144\t46.9\t\tS\r\n680\t1\t1\t\"Cardeza, Mr. Thomas Drake Martinez\"\tmale\t36\t0\t1\tPC 17755\t512.3292\tB51 B53 B55\tC\r\n681\t0\t3\t\"Peters, Miss. Katie\"\tfemale\t\t0\t0\t330935\t8.1375\t\tQ\r\n682\t1\t1\t\"Hassab, Mr. Hammad\"\tmale\t27\t0\t0\tPC 17572\t76.7292\tD49\tC\r\n683\t0\t3\t\"Olsvigen, Mr. Thor Anderson\"\tmale\t20\t0\t0\t6563\t9.225\t\tS\r\n684\t0\t3\t\"Goodwin, Mr. Charles Edward\"\tmale\t14\t5\t2\tCA 2144\t46.9\t\tS\r\n685\t0\t2\t\"Brown, Mr. Thomas William Solomon\"\tmale\t60\t1\t1\t29750\t39\t\tS\r\n686\t0\t2\t\"Laroche, Mr. Joseph Philippe Lemercier\"\tmale\t25\t1\t2\tSC/Paris 2123\t41.5792\t\tC\r\n687\t0\t3\t\"Panula, Mr. Jaako Arnold\"\tmale\t14\t4\t1\t3101295\t39.6875\t\tS\r\n688\t0\t3\t\"Dakic, Mr. Branko\"\tmale\t19\t0\t0\t349228\t10.1708\t\tS\r\n689\t0\t3\t\"Fischer, Mr. Eberhard Thelander\"\tmale\t18\t0\t0\t350036\t7.7958\t\tS\r\n690\t1\t1\t\"Madill, Miss. Georgette Alexandra\"\tfemale\t15\t0\t1\t24160\t211.3375\tB5\tS\r\n691\t1\t1\t\"Dick, Mr. Albert Adrian\"\tmale\t31\t1\t0\t17474\t57\tB20\tS\r\n692\t1\t3\t\"Karun, Miss. Manca\"\tfemale\t4\t0\t1\t349256\t13.4167\t\tC\r\n693\t1\t3\t\"Lam, Mr. Ali\"\tmale\t\t0\t0\t1601\t56.4958\t\tS\r\n694\t0\t3\t\"Saad, Mr. Khalil\"\tmale\t25\t0\t0\t2672\t7.225\t\tC\r\n695\t0\t1\t\"Weir, Col. John\"\tmale\t60\t0\t0\t113800\t26.55\t\tS\r\n696\t0\t2\t\"Chapman, Mr. Charles Henry\"\tmale\t52\t0\t0\t248731\t13.5\t\tS\r\n697\t0\t3\t\"Kelly, Mr. James\"\tmale\t44\t0\t0\t363592\t8.05\t\tS\r\n698\t1\t3\t\"Mullens, Miss. Katherine \"\"Katie\"\"\"\tfemale\t\t0\t0\t35852\t7.7333\t\tQ\r\n699\t0\t1\t\"Thayer, Mr. John Borland\"\tmale\t49\t1\t1\t17421\t110.8833\tC68\tC\r\n700\t0\t3\t\"Humblen, Mr. Adolf Mathias Nicolai Olsen\"\tmale\t42\t0\t0\t348121\t7.65\tF G63\tS\r\n701\t1\t1\t\"Astor, Mrs. John Jacob (Madeleine Talmadge Force)\"\tfemale\t18\t1\t0\tPC 17757\t227.525\tC62 C64\tC\r\n702\t1\t1\t\"Silverthorne, Mr. Spencer Victor\"\tmale\t35\t0\t0\tPC 17475\t26.2875\tE24\tS\r\n703\t0\t3\t\"Barbara, Miss. Saiide\"\tfemale\t18\t0\t1\t2691\t14.4542\t\tC\r\n704\t0\t3\t\"Gallagher, Mr. Martin\"\tmale\t25\t0\t0\t36864\t7.7417\t\tQ\r\n705\t0\t3\t\"Hansen, Mr. Henrik Juul\"\tmale\t26\t1\t0\t350025\t7.8542\t\tS\r\n706\t0\t2\t\"Morley, Mr. Henry Samuel (\"\"Mr Henry Marshall\"\")\"\tmale\t39\t0\t0\t250655\t26\t\tS\r\n707\t1\t2\t\"Kelly, Mrs. Florence \"\"Fannie\"\"\"\tfemale\t45\t0\t0\t223596\t13.5\t\tS\r\n708\t1\t1\t\"Calderhead, Mr. Edward Pennington\"\tmale\t42\t0\t0\tPC 17476\t26.2875\tE24\tS\r\n709\t1\t1\t\"Cleaver, Miss. Alice\"\tfemale\t22\t0\t0\t113781\t151.55\t\tS\r\n710\t1\t3\t\"Moubarek, Master. Halim Gonios (\"\"William George\"\")\"\tmale\t\t1\t1\t2661\t15.2458\t\tC\r\n711\t1\t1\t\"Mayne, Mlle. Berthe Antonine (\"\"Mrs de Villiers\"\")\"\tfemale\t24\t0\t0\tPC 17482\t49.5042\tC90\tC\r\n712\t0\t1\t\"Klaber, Mr. Herman\"\tmale\t\t0\t0\t113028\t26.55\tC124\tS\r\n713\t1\t1\t\"Taylor, Mr. Elmer Zebley\"\tmale\t48\t1\t0\t19996\t52\tC126\tS\r\n714\t0\t3\t\"Larsson, Mr. August Viktor\"\tmale\t29\t0\t0\t7545\t9.4833\t\tS\r\n715\t0\t2\t\"Greenberg, Mr. Samuel\"\tmale\t52\t0\t0\t250647\t13\t\tS\r\n716\t0\t3\t\"Soholt, Mr. Peter Andreas Lauritz Andersen\"\tmale\t19\t0\t0\t348124\t7.65\tF G73\tS\r\n717\t1\t1\t\"Endres, Miss. Caroline Louise\"\tfemale\t38\t0\t0\tPC 17757\t227.525\tC45\tC\r\n718\t1\t2\t\"Troutt, Miss. Edwina Celia \"\"Winnie\"\"\"\tfemale\t27\t0\t0\t34218\t10.5\tE101\tS\r\n719\t0\t3\t\"McEvoy, Mr. Michael\"\tmale\t\t0\t0\t36568\t15.5\t\tQ\r\n720\t0\t3\t\"Johnson, Mr. Malkolm Joackim\"\tmale\t33\t0\t0\t347062\t7.775\t\tS\r\n721\t1\t2\t\"Harper, Miss. Annie Jessie \"\"Nina\"\"\"\tfemale\t6\t0\t1\t248727\t33\t\tS\r\n722\t0\t3\t\"Jensen, Mr. Svend Lauritz\"\tmale\t17\t1\t0\t350048\t7.0542\t\tS\r\n723\t0\t2\t\"Gillespie, Mr. William Henry\"\tmale\t34\t0\t0\t12233\t13\t\tS\r\n724\t0\t2\t\"Hodges, Mr. Henry Price\"\tmale\t50\t0\t0\t250643\t13\t\tS\r\n725\t1\t1\t\"Chambers, Mr. Norman Campbell\"\tmale\t27\t1\t0\t113806\t53.1\tE8\tS\r\n726\t0\t3\t\"Oreskovic, Mr. Luka\"\tmale\t20\t0\t0\t315094\t8.6625\t\tS\r\n727\t1\t2\t\"Renouf, Mrs. Peter Henry (Lillian Jefferys)\"\tfemale\t30\t3\t0\t31027\t21\t\tS\r\n728\t1\t3\t\"Mannion, Miss. Margareth\"\tfemale\t\t0\t0\t36866\t7.7375\t\tQ\r\n729\t0\t2\t\"Bryhl, Mr. Kurt Arnold Gottfrid\"\tmale\t25\t1\t0\t236853\t26\t\tS\r\n730\t0\t3\t\"Ilmakangas, Miss. Pieta Sofia\"\tfemale\t25\t1\t0\tSTON/O2. 3101271\t7.925\t\tS\r\n731\t1\t1\t\"Allen, Miss. Elisabeth Walton\"\tfemale\t29\t0\t0\t24160\t211.3375\tB5\tS\r\n732\t0\t3\t\"Hassan, Mr. Houssein G N\"\tmale\t11\t0\t0\t2699\t18.7875\t\tC\r\n733\t0\t2\t\"Knight, Mr. Robert J\"\tmale\t\t0\t0\t239855\t0\t\tS\r\n734\t0\t2\t\"Berriman, Mr. William John\"\tmale\t23\t0\t0\t28425\t13\t\tS\r\n735\t0\t2\t\"Troupiansky, Mr. Moses Aaron\"\tmale\t23\t0\t0\t233639\t13\t\tS\r\n736\t0\t3\t\"Williams, Mr. Leslie\"\tmale\t28.5\t0\t0\t54636\t16.1\t\tS\r\n737\t0\t3\t\"Ford, Mrs. Edward (Margaret Ann Watson)\"\tfemale\t48\t1\t3\tW./C. 6608\t34.375\t\tS\r\n738\t1\t1\t\"Lesurer, Mr. Gustave J\"\tmale\t35\t0\t0\tPC 17755\t512.3292\tB101\tC\r\n739\t0\t3\t\"Ivanoff, Mr. Kanio\"\tmale\t\t0\t0\t349201\t7.8958\t\tS\r\n740\t0\t3\t\"Nankoff, Mr. Minko\"\tmale\t\t0\t0\t349218\t7.8958\t\tS\r\n741\t1\t1\t\"Hawksford, Mr. Walter James\"\tmale\t\t0\t0\t16988\t30\tD45\tS\r\n742\t0\t1\t\"Cavendish, Mr. Tyrell William\"\tmale\t36\t1\t0\t19877\t78.85\tC46\tS\r\n743\t1\t1\t\"Ryerson, Miss. Susan Parker \"\"Suzette\"\"\"\tfemale\t21\t2\t2\tPC 17608\t262.375\tB57 B59 B63 B66\tC\r\n744\t0\t3\t\"McNamee, Mr. Neal\"\tmale\t24\t1\t0\t376566\t16.1\t\tS\r\n745\t1\t3\t\"Stranden, Mr. Juho\"\tmale\t31\t0\t0\tSTON/O 2. 3101288\t7.925\t\tS\r\n746\t0\t1\t\"Crosby, Capt. Edward Gifford\"\tmale\t70\t1\t1\tWE/P 5735\t71\tB22\tS\r\n747\t0\t3\t\"Abbott, Mr. Rossmore Edward\"\tmale\t16\t1\t1\tC.A. 2673\t20.25\t\tS\r\n748\t1\t2\t\"Sinkkonen, Miss. Anna\"\tfemale\t30\t0\t0\t250648\t13\t\tS\r\n749\t0\t1\t\"Marvin, Mr. Daniel Warner\"\tmale\t19\t1\t0\t113773\t53.1\tD30\tS\r\n750\t0\t3\t\"Connaghton, Mr. Michael\"\tmale\t31\t0\t0\t335097\t7.75\t\tQ\r\n751\t1\t2\t\"Wells, Miss. Joan\"\tfemale\t4\t1\t1\t29103\t23\t\tS\r\n752\t1\t3\t\"Moor, Master. Meier\"\tmale\t6\t0\t1\t392096\t12.475\tE121\tS\r\n753\t0\t3\t\"Vande Velde, Mr. Johannes Joseph\"\tmale\t33\t0\t0\t345780\t9.5\t\tS\r\n754\t0\t3\t\"Jonkoff, Mr. Lalio\"\tmale\t23\t0\t0\t349204\t7.8958\t\tS\r\n755\t1\t2\t\"Herman, Mrs. Samuel (Jane Laver)\"\tfemale\t48\t1\t2\t220845\t65\t\tS\r\n756\t1\t2\t\"Hamalainen, Master. Viljo\"\tmale\t0.67\t1\t1\t250649\t14.5\t\tS\r\n757\t0\t3\t\"Carlsson, Mr. August Sigfrid\"\tmale\t28\t0\t0\t350042\t7.7958\t\tS\r\n758\t0\t2\t\"Bailey, Mr. Percy Andrew\"\tmale\t18\t0\t0\t29108\t11.5\t\tS\r\n759\t0\t3\t\"Theobald, Mr. Thomas Leonard\"\tmale\t34\t0\t0\t363294\t8.05\t\tS\r\n760\t1\t1\t\"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)\"\tfemale\t33\t0\t0\t110152\t86.5\tB77\tS\r\n761\t0\t3\t\"Garfirth, Mr. John\"\tmale\t\t0\t0\t358585\t14.5\t\tS\r\n762\t0\t3\t\"Nirva, Mr. Iisakki Antino Aijo\"\tmale\t41\t0\t0\tSOTON/O2 3101272\t7.125\t\tS\r\n763\t1\t3\t\"Barah, Mr. Hanna Assi\"\tmale\t20\t0\t0\t2663\t7.2292\t\tC\r\n764\t1\t1\t\"Carter, Mrs. William Ernest (Lucile Polk)\"\tfemale\t36\t1\t2\t113760\t120\tB96 B98\tS\r\n765\t0\t3\t\"Eklund, Mr. Hans Linus\"\tmale\t16\t0\t0\t347074\t7.775\t\tS\r\n766\t1\t1\t\"Hogeboom, Mrs. John C (Anna Andrews)\"\tfemale\t51\t1\t0\t13502\t77.9583\tD11\tS\r\n767\t0\t1\t\"Brewe, Dr. Arthur Jackson\"\tmale\t\t0\t0\t112379\t39.6\t\tC\r\n768\t0\t3\t\"Mangan, Miss. Mary\"\tfemale\t30.5\t0\t0\t364850\t7.75\t\tQ\r\n769\t0\t3\t\"Moran, Mr. Daniel J\"\tmale\t\t1\t0\t371110\t24.15\t\tQ\r\n770\t0\t3\t\"Gronnestad, Mr. Daniel Danielsen\"\tmale\t32\t0\t0\t8471\t8.3625\t\tS\r\n771\t0\t3\t\"Lievens, Mr. Rene Aime\"\tmale\t24\t0\t0\t345781\t9.5\t\tS\r\n772\t0\t3\t\"Jensen, Mr. Niels Peder\"\tmale\t48\t0\t0\t350047\t7.8542\t\tS\r\n773\t0\t2\t\"Mack, Mrs. (Mary)\"\tfemale\t57\t0\t0\tS.O./P.P. 3\t10.5\tE77\tS\r\n774\t0\t3\t\"Elias, Mr. Dibo\"\tmale\t\t0\t0\t2674\t7.225\t\tC\r\n775\t1\t2\t\"Hocking, Mrs. Elizabeth (Eliza Needs)\"\tfemale\t54\t1\t3\t29105\t23\t\tS\r\n776\t0\t3\t\"Myhrman, Mr. Pehr Fabian Oliver Malkolm\"\tmale\t18\t0\t0\t347078\t7.75\t\tS\r\n777\t0\t3\t\"Tobin, Mr. Roger\"\tmale\t\t0\t0\t383121\t7.75\tF38\tQ\r\n778\t1\t3\t\"Emanuel, Miss. Virginia Ethel\"\tfemale\t5\t0\t0\t364516\t12.475\t\tS\r\n779\t0\t3\t\"Kilgannon, Mr. Thomas J\"\tmale\t\t0\t0\t36865\t7.7375\t\tQ\r\n780\t1\t1\t\"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)\"\tfemale\t43\t0\t1\t24160\t211.3375\tB3\tS\r\n781\t1\t3\t\"Ayoub, Miss. Banoura\"\tfemale\t13\t0\t0\t2687\t7.2292\t\tC\r\n782\t1\t1\t\"Dick, Mrs. Albert Adrian (Vera Gillespie)\"\tfemale\t17\t1\t0\t17474\t57\tB20\tS\r\n783\t0\t1\t\"Long, Mr. Milton Clyde\"\tmale\t29\t0\t0\t113501\t30\tD6\tS\r\n784\t0\t3\t\"Johnston, Mr. Andrew G\"\tmale\t\t1\t2\tW./C. 6607\t23.45\t\tS\r\n785\t0\t3\t\"Ali, Mr. William\"\tmale\t25\t0\t0\tSOTON/O.Q. 3101312\t7.05\t\tS\r\n786\t0\t3\t\"Harmer, Mr. Abraham (David Lishin)\"\tmale\t25\t0\t0\t374887\t7.25\t\tS\r\n787\t1\t3\t\"Sjoblom, Miss. Anna Sofia\"\tfemale\t18\t0\t0\t3101265\t7.4958\t\tS\r\n788\t0\t3\t\"Rice, Master. George Hugh\"\tmale\t8\t4\t1\t382652\t29.125\t\tQ\r\n789\t1\t3\t\"Dean, Master. Bertram Vere\"\tmale\t1\t1\t2\tC.A. 2315\t20.575\t\tS\r\n790\t0\t1\t\"Guggenheim, Mr. Benjamin\"\tmale\t46\t0\t0\tPC 17593\t79.2\tB82 B84\tC\r\n791\t0\t3\t\"Keane, Mr. Andrew \"\"Andy\"\"\"\tmale\t\t0\t0\t12460\t7.75\t\tQ\r\n792\t0\t2\t\"Gaskell, Mr. Alfred\"\tmale\t16\t0\t0\t239865\t26\t\tS\r\n793\t0\t3\t\"Sage, Miss. Stella Anna\"\tfemale\t\t8\t2\tCA. 2343\t69.55\t\tS\r\n794\t0\t1\t\"Hoyt, Mr. William Fisher\"\tmale\t\t0\t0\tPC 17600\t30.6958\t\tC\r\n795\t0\t3\t\"Dantcheff, Mr. Ristiu\"\tmale\t25\t0\t0\t349203\t7.8958\t\tS\r\n796\t0\t2\t\"Otter, Mr. Richard\"\tmale\t39\t0\t0\t28213\t13\t\tS\r\n797\t1\t1\t\"Leader, Dr. Alice (Farnham)\"\tfemale\t49\t0\t0\t17465\t25.9292\tD17\tS\r\n798\t1\t3\t\"Osman, Mrs. Mara\"\tfemale\t31\t0\t0\t349244\t8.6833\t\tS\r\n799\t0\t3\t\"Ibrahim Shawah, Mr. Yousseff\"\tmale\t30\t0\t0\t2685\t7.2292\t\tC\r\n800\t0\t3\t\"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)\"\tfemale\t30\t1\t1\t345773\t24.15\t\tS\r\n801\t0\t2\t\"Ponesell, Mr. Martin\"\tmale\t34\t0\t0\t250647\t13\t\tS\r\n802\t1\t2\t\"Collyer, Mrs. Harvey (Charlotte Annie Tate)\"\tfemale\t31\t1\t1\tC.A. 31921\t26.25\t\tS\r\n803\t1\t1\t\"Carter, Master. William Thornton II\"\tmale\t11\t1\t2\t113760\t120\tB96 B98\tS\r\n804\t1\t3\t\"Thomas, Master. Assad Alexander\"\tmale\t0.42\t0\t1\t2625\t8.5167\t\tC\r\n805\t1\t3\t\"Hedman, Mr. Oskar Arvid\"\tmale\t27\t0\t0\t347089\t6.975\t\tS\r\n806\t0\t3\t\"Johansson, Mr. Karl Johan\"\tmale\t31\t0\t0\t347063\t7.775\t\tS\r\n807\t0\t1\t\"Andrews, Mr. Thomas Jr\"\tmale\t39\t0\t0\t112050\t0\tA36\tS\r\n808\t0\t3\t\"Pettersson, Miss. Ellen Natalia\"\tfemale\t18\t0\t0\t347087\t7.775\t\tS\r\n809\t0\t2\t\"Meyer, Mr. August\"\tmale\t39\t0\t0\t248723\t13\t\tS\r\n810\t1\t1\t\"Chambers, Mrs. Norman Campbell (Bertha Griggs)\"\tfemale\t33\t1\t0\t113806\t53.1\tE8\tS\r\n811\t0\t3\t\"Alexander, Mr. William\"\tmale\t26\t0\t0\t3474\t7.8875\t\tS\r\n812\t0\t3\t\"Lester, Mr. James\"\tmale\t39\t0\t0\tA/4 48871\t24.15\t\tS\r\n813\t0\t2\t\"Slemen, Mr. Richard James\"\tmale\t35\t0\t0\t28206\t10.5\t\tS\r\n814\t0\t3\t\"Andersson, Miss. Ebba Iris Alfrida\"\tfemale\t6\t4\t2\t347082\t31.275\t\tS\r\n815\t0\t3\t\"Tomlin, Mr. Ernest Portage\"\tmale\t30.5\t0\t0\t364499\t8.05\t\tS\r\n816\t0\t1\t\"Fry, Mr. Richard\"\tmale\t\t0\t0\t112058\t0\tB102\tS\r\n817\t0\t3\t\"Heininen, Miss. Wendla Maria\"\tfemale\t23\t0\t0\tSTON/O2. 3101290\t7.925\t\tS\r\n818\t0\t2\t\"Mallet, Mr. Albert\"\tmale\t31\t1\t1\tS.C./PARIS 2079\t37.0042\t\tC\r\n819\t0\t3\t\"Holm, Mr. John Fredrik Alexander\"\tmale\t43\t0\t0\tC 7075\t6.45\t\tS\r\n820\t0\t3\t\"Skoog, Master. Karl Thorsten\"\tmale\t10\t3\t2\t347088\t27.9\t\tS\r\n821\t1\t1\t\"Hays, Mrs. Charles Melville (Clara Jennings Gregg)\"\tfemale\t52\t1\t1\t12749\t93.5\tB69\tS\r\n822\t1\t3\t\"Lulic, Mr. Nikola\"\tmale\t27\t0\t0\t315098\t8.6625\t\tS\r\n823\t0\t1\t\"Reuchlin, Jonkheer. John George\"\tmale\t38\t0\t0\t19972\t0\t\tS\r\n824\t1\t3\t\"Moor, Mrs. (Beila)\"\tfemale\t27\t0\t1\t392096\t12.475\tE121\tS\r\n825\t0\t3\t\"Panula, Master. Urho Abraham\"\tmale\t2\t4\t1\t3101295\t39.6875\t\tS\r\n826\t0\t3\t\"Flynn, Mr. John\"\tmale\t\t0\t0\t368323\t6.95\t\tQ\r\n827\t0\t3\t\"Lam, Mr. Len\"\tmale\t\t0\t0\t1601\t56.4958\t\tS\r\n828\t1\t2\t\"Mallet, Master. Andre\"\tmale\t1\t0\t2\tS.C./PARIS 2079\t37.0042\t\tC\r\n829\t1\t3\t\"McCormack, Mr. Thomas Joseph\"\tmale\t\t0\t0\t367228\t7.75\t\tQ\r\n830\t1\t1\t\"Stone, Mrs. George Nelson (Martha Evelyn)\"\tfemale\t62\t0\t0\t113572\t80\tB28\t\r\n831\t1\t3\t\"Yasbeck, Mrs. Antoni (Selini Alexander)\"\tfemale\t15\t1\t0\t2659\t14.4542\t\tC\r\n832\t1\t2\t\"Richards, Master. George Sibley\"\tmale\t0.83\t1\t1\t29106\t18.75\t\tS\r\n833\t0\t3\t\"Saad, Mr. Amin\"\tmale\t\t0\t0\t2671\t7.2292\t\tC\r\n834\t0\t3\t\"Augustsson, Mr. Albert\"\tmale\t23\t0\t0\t347468\t7.8542\t\tS\r\n835\t0\t3\t\"Allum, Mr. Owen George\"\tmale\t18\t0\t0\t2223\t8.3\t\tS\r\n836\t1\t1\t\"Compton, Miss. Sara Rebecca\"\tfemale\t39\t1\t1\tPC 17756\t83.1583\tE49\tC\r\n837\t0\t3\t\"Pasic, Mr. Jakob\"\tmale\t21\t0\t0\t315097\t8.6625\t\tS\r\n838\t0\t3\t\"Sirota, Mr. Maurice\"\tmale\t\t0\t0\t392092\t8.05\t\tS\r\n839\t1\t3\t\"Chip, Mr. Chang\"\tmale\t32\t0\t0\t1601\t56.4958\t\tS\r\n840\t1\t1\t\"Marechal, Mr. Pierre\"\tmale\t\t0\t0\t11774\t29.7\tC47\tC\r\n841\t0\t3\t\"Alhomaki, Mr. Ilmari Rudolf\"\tmale\t20\t0\t0\tSOTON/O2 3101287\t7.925\t\tS\r\n842\t0\t2\t\"Mudd, Mr. Thomas Charles\"\tmale\t16\t0\t0\tS.O./P.P. 3\t10.5\t\tS\r\n843\t1\t1\t\"Serepeca, Miss. Augusta\"\tfemale\t30\t0\t0\t113798\t31\t\tC\r\n844\t0\t3\t\"Lemberopolous, Mr. Peter L\"\tmale\t34.5\t0\t0\t2683\t6.4375\t\tC\r\n845\t0\t3\t\"Culumovic, Mr. Jeso\"\tmale\t17\t0\t0\t315090\t8.6625\t\tS\r\n846\t0\t3\t\"Abbing, Mr. Anthony\"\tmale\t42\t0\t0\tC.A. 5547\t7.55\t\tS\r\n847\t0\t3\t\"Sage, Mr. Douglas Bullen\"\tmale\t\t8\t2\tCA. 2343\t69.55\t\tS\r\n848\t0\t3\t\"Markoff, Mr. Marin\"\tmale\t35\t0\t0\t349213\t7.8958\t\tC\r\n849\t0\t2\t\"Harper, Rev. John\"\tmale\t28\t0\t1\t248727\t33\t\tS\r\n850\t1\t1\t\"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)\"\tfemale\t\t1\t0\t17453\t89.1042\tC92\tC\r\n851\t0\t3\t\"Andersson, Master. Sigvard Harald Elias\"\tmale\t4\t4\t2\t347082\t31.275\t\tS\r\n852\t0\t3\t\"Svensson, Mr. Johan\"\tmale\t74\t0\t0\t347060\t7.775\t\tS\r\n853\t0\t3\t\"Boulos, Miss. Nourelain\"\tfemale\t9\t1\t1\t2678\t15.2458\t\tC\r\n854\t1\t1\t\"Lines, Miss. Mary Conover\"\tfemale\t16\t0\t1\tPC 17592\t39.4\tD28\tS\r\n855\t0\t2\t\"Carter, Mrs. Ernest Courtenay (Lilian Hughes)\"\tfemale\t44\t1\t0\t244252\t26\t\tS\r\n856\t1\t3\t\"Aks, Mrs. Sam (Leah Rosen)\"\tfemale\t18\t0\t1\t392091\t9.35\t\tS\r\n857\t1\t1\t\"Wick, Mrs. George Dennick (Mary Hitchcock)\"\tfemale\t45\t1\t1\t36928\t164.8667\t\tS\r\n858\t1\t1\t\"Daly, Mr. Peter Denis \"\tmale\t51\t0\t0\t113055\t26.55\tE17\tS\r\n859\t1\t3\t\"Baclini, Mrs. Solomon (Latifa Qurban)\"\tfemale\t24\t0\t3\t2666\t19.2583\t\tC\r\n860\t0\t3\t\"Razi, Mr. Raihed\"\tmale\t\t0\t0\t2629\t7.2292\t\tC\r\n861\t0\t3\t\"Hansen, Mr. Claus Peter\"\tmale\t41\t2\t0\t350026\t14.1083\t\tS\r\n862\t0\t2\t\"Giles, Mr. Frederick Edward\"\tmale\t21\t1\t0\t28134\t11.5\t\tS\r\n863\t1\t1\t\"Swift, Mrs. Frederick Joel (Margaret Welles Barron)\"\tfemale\t48\t0\t0\t17466\t25.9292\tD17\tS\r\n864\t0\t3\t\"Sage, Miss. Dorothy Edith \"\"Dolly\"\"\"\tfemale\t\t8\t2\tCA. 2343\t69.55\t\tS\r\n865\t0\t2\t\"Gill, Mr. John William\"\tmale\t24\t0\t0\t233866\t13\t\tS\r\n866\t1\t2\t\"Bystrom, Mrs. (Karolina)\"\tfemale\t42\t0\t0\t236852\t13\t\tS\r\n867\t1\t2\t\"Duran y More, Miss. Asuncion\"\tfemale\t27\t1\t0\tSC/PARIS 2149\t13.8583\t\tC\r\n868\t0\t1\t\"Roebling, Mr. Washington Augustus II\"\tmale\t31\t0\t0\tPC 17590\t50.4958\tA24\tS\r\n869\t0\t3\t\"van Melkebeke, Mr. Philemon\"\tmale\t\t0\t0\t345777\t9.5\t\tS\r\n870\t1\t3\t\"Johnson, Master. Harold Theodor\"\tmale\t4\t1\t1\t347742\t11.1333\t\tS\r\n871\t0\t3\t\"Balkic, Mr. Cerin\"\tmale\t26\t0\t0\t349248\t7.8958\t\tS\r\n872\t1\t1\t\"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)\"\tfemale\t47\t1\t1\t11751\t52.5542\tD35\tS\r\n873\t0\t1\t\"Carlsson, Mr. Frans Olof\"\tmale\t33\t0\t0\t695\t5\tB51 B53 B55\tS\r\n874\t0\t3\t\"Vander Cruyssen, Mr. Victor\"\tmale\t47\t0\t0\t345765\t9\t\tS\r\n875\t1\t2\t\"Abelson, Mrs. Samuel (Hannah Wizosky)\"\tfemale\t28\t1\t0\tP/PP 3381\t24\t\tC\r\n876\t1\t3\t\"Najib, Miss. Adele Kiamie \"\"Jane\"\"\"\tfemale\t15\t0\t0\t2667\t7.225\t\tC\r\n877\t0\t3\t\"Gustafsson, Mr. Alfred Ossian\"\tmale\t20\t0\t0\t7534\t9.8458\t\tS\r\n878\t0\t3\t\"Petroff, Mr. Nedelio\"\tmale\t19\t0\t0\t349212\t7.8958\t\tS\r\n879\t0\t3\t\"Laleff, Mr. Kristo\"\tmale\t\t0\t0\t349217\t7.8958\t\tS\r\n880\t1\t1\t\"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)\"\tfemale\t56\t0\t1\t11767\t83.1583\tC50\tC\r\n881\t1\t2\t\"Shelley, Mrs. William (Imanita Parrish Hall)\"\tfemale\t25\t0\t1\t230433\t26\t\tS\r\n882\t0\t3\t\"Markun, Mr. Johann\"\tmale\t33\t0\t0\t349257\t7.8958\t\tS\r\n883\t0\t3\t\"Dahlberg, Miss. Gerda Ulrika\"\tfemale\t22\t0\t0\t7552\t10.5167\t\tS\r\n884\t0\t2\t\"Banfield, Mr. Frederick James\"\tmale\t28\t0\t0\tC.A./SOTON 34068\t10.5\t\tS\r\n885\t0\t3\t\"Sutehall, Mr. Henry Jr\"\tmale\t25\t0\t0\tSOTON/OQ 392076\t7.05\t\tS\r\n886\t0\t3\t\"Rice, Mrs. William (Margaret Norton)\"\tfemale\t39\t0\t5\t382652\t29.125\t\tQ\r\n887\t0\t2\t\"Montvila, Rev. Juozas\"\tmale\t27\t0\t0\t211536\t13\t\tS\r\n888\t1\t1\t\"Graham, Miss. Margaret Edith\"\tfemale\t19\t0\t0\t112053\t30\tB42\tS\r\n889\t0\t3\t\"Johnston, Miss. Catherine Helen \"\"Carrie\"\"\"\tfemale\t\t1\t2\tW./C. 6607\t23.45\t\tS\r\n890\t1\t1\t\"Behr, Mr. Karl Howell\"\tmale\t26\t0\t0\t111369\t30\tC148\tC\r\n891\t0\t3\t\"Dooley, Mr. Patrick\"\tmale\t32\t0\t0\t370376\t7.75\t\tQ\r\n"
  },
  {
    "path": "docs/.nojekyll",
    "content": "noting\n"
  },
  {
    "path": "docs/Content/chap1.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第一章 Excel与数据格式 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第二章 Excel的快捷操作\" href=\"chap2.html\" />\r\n    <link rel=\"prev\" title=\"教程\" href=\"index.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id1\">\r\n   1.数据缘何而来\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id2\">\r\n     1.1 了解Excel\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id3\">\r\n     1.2 Excel存储格式\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id4\">\r\n   2.Excel数据格式\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id5\">\r\n     2.1 单元格数据类型\r\n    </a>\r\n    <ul class=\"nav section-nav flex-column\">\r\n     <li class=\"toc-h4 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id6\">\r\n       2.1.1 数字\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h4 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id7\">\r\n       2.1.2 文本\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h4 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id8\">\r\n       2.1.3 日期\r\n      </a>\r\n     </li>\r\n    </ul>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id9\">\r\n     2.2 单元格格式\r\n    </a>\r\n    <ul class=\"nav section-nav flex-column\">\r\n     <li class=\"toc-h4 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id10\">\r\n       2.2.1 数值格式\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h4 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id11\">\r\n       2.2.2 文本格式\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h4 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id12\">\r\n       2.2.3 日期格式\r\n      </a>\r\n     </li>\r\n    </ul>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id13\">\r\n     2.3 转换单元格数据\r\n    </a>\r\n    <ul class=\"nav section-nav flex-column\">\r\n     <li class=\"toc-h4 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id14\">\r\n       2.3.1 数值和文本相互转换\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h4 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id15\">\r\n       2.3.2 日期和文本相互转换\r\n      </a>\r\n     </li>\r\n    </ul>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id16\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<h1>第一章 Excel与数据格式<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<div class=\"section\" id=\"id1\">\r\n<h2>1.数据缘何而来<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>Execel是我们常见的用来进行数据处理的工具，其中Excel文件主要包含有2种格式分别是<code class=\"docutils literal notranslate\"><span class=\"pre\">xls</span></code>或<code class=\"docutils literal notranslate\"><span class=\"pre\">xlsx</span></code>，<code class=\"docutils literal notranslate\"><span class=\"pre\">xls</span></code>和<code class=\"docutils literal notranslate\"><span class=\"pre\">xlsx</span></code>主要区别如下：</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/1.0.png\" />\r\n</div>\r\n<p>因此，推荐大家使用最新版本的Excel或者WPS进行相关的学习与操作。</p>\r\n<div class=\"section\" id=\"id2\">\r\n<h3>1.1 了解Excel<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>Excel文每个数据文件叫做工作簿，每个工作簿里面含有多个工作表，每个工作表里面的格子叫做单元格。</p>\r\n<p>在Excel中点击新建文档后，Excel默认的文档名称是工作簿1，也就是一个Excel文档，就是一个工作簿</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/1.1.png\" />\r\n</div>\r\n<p>在新建的工作簿中，可以看到左下方有<code class=\"docutils literal notranslate\"><span class=\"pre\">Sheet1</span></code>的标签，每个工作簿里面可以含有多个工作表，Excel表中最大支持255个工作表</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/1.2.png\" />\r\n</div>\r\n<p>单元格就是工作表中间每一个格子</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/1.3.png\" />\r\n</div>\r\n<p>在Excel最上方是工具栏，如果希望在Excel中导入第三方插件，可以点击<code class=\"docutils literal notranslate\"><span class=\"pre\">文件</span></code>–&gt;<code class=\"docutils literal notranslate\"><span class=\"pre\">选项</span></code>–&gt;<code class=\"docutils literal notranslate\"><span class=\"pre\">自定义功能区</span></code>点击右侧的√，即可导入相关模块</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/1.5.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id3\">\r\n<h3>1.2 Excel存储格式<a class=\"headerlink\" href=\"#id3\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>Excel中的数据可以存储为不同的类型格式，其中常用的存储类似分别是xlsx、csv以及txt，一般情况下，csv文件采用是逗号分隔，txt文件采用的是制表符作为分隔，例如<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/Titanic_normal.csv</span></code>和<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/Titanic_tab.txt</span></code>，而在较为特殊的情况下，数据的分隔符合可能不是常规的分隔符合，例如<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/Titanic_special.txt</span></code>，使用记事本打开这个文件发现文件采用<code class=\"docutils literal notranslate\"><span class=\"pre\">|</span></code>作为分隔的符合，那么这样的文件如何使用Excel打开呢？</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/1.6.png\" />\r\n</div>\r\n<p>这里推荐大家使用以下的操作方案，操作路径为菜单栏选择：<strong>数据–&gt;获取和转换数据–&gt;从文件/CSV</strong></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/1.7.gif\" />\r\n</div>\r\n<p>点击<strong>加载</strong>后可以看到我们导入的数据集，接着按快捷键<code class=\"docutils literal notranslate\"><span class=\"pre\">ctrl+s</span></code>保存工作簿到本地。</p>\r\n<blockquote>\r\n<div><p>至此我们已经成功加载数据集到工作表当中，需要注意的是此时构建的数据表跟原始数据是存在连接关系，更改csv文件的数据后在点击路径：<strong>设计-外部表数据-刷新</strong>后就可以更新工作表数据。如果要取消链接关系则点击路径：<strong>设计-外部数据表-取消链接</strong>即可。</p>\r\n</div></blockquote>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id4\">\r\n<h2>2.Excel数据格式<a class=\"headerlink\" href=\"#id4\" title=\"Permalink to this heading\">#</a></h2>\r\n<div class=\"section\" id=\"id5\">\r\n<h3>2.1 单元格数据类型<a class=\"headerlink\" href=\"#id5\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/2.1.xlsx</span></code>文件，点击【单元格数据类型】工作表，可以看到Excel有11种数据类型</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.1.png\" />\r\n</div>\r\n<p>在平时工作和学习中常见的数据类型有3种分别是数字、文本和日期，接下来就详细讲解这3种格式的相关应用</p>\r\n<div class=\"section\" id=\"id6\">\r\n<h4>2.1.1 数字<a class=\"headerlink\" href=\"#id6\" title=\"Permalink to this heading\">#</a></h4>\r\n<p>数值是单元格最常见的数据之一，12位数的时候会以科学计数法显示。</p>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/2.1.xlsx</span></code>文件，点击【真假数字】工作表看到展示的是真假数值列，真数值默认情况下是右对齐（方便观测数据位数），假数值是数值型文本属于<strong>文本</strong>，左上角会有个绿色三角错误检查，当数据是文本时，无法完成数字运算操作。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.2.png\" />\r\n</div>\r\n<p>Excel会自带数据纠错功能，点击黄色感叹号可以看到，将文本转出数字，或者使用<code class=\"docutils literal notranslate\"><span class=\"pre\">=VALUE()</span></code>函数将文本转成数字</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.3.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id7\">\r\n<h4>2.1.2 文本<a class=\"headerlink\" href=\"#id7\" title=\"Permalink to this heading\">#</a></h4>\r\n<p>文本为Excel中的常见格式，主要为文本字符串，例如下图就是典型的文本数据。当数据是文本类型时就可以完成文本数据相关操作。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.4.png\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id8\">\r\n<h4>2.1.3 日期<a class=\"headerlink\" href=\"#id8\" title=\"Permalink to this heading\">#</a></h4>\r\n<p>Excel中的标准日期由年月日组成的数据，例如<code class=\"docutils literal notranslate\"><span class=\"pre\">2021/1/1</span></code>，同时日期又是很特殊的数值，在Excel里面日期最早是1900年1月1日，对应的数值为1，通过两日期相减可以得到日期相差的天数。需要注意的是如果是<code class=\"docutils literal notranslate\"><span class=\"pre\">2021-01-01</span></code>的数据就要看是否实际数据为<code class=\"docutils literal notranslate\"><span class=\"pre\">'2021/1/1'</span></code>，否则为文本型日期，需要进行转换才行。观察下图真假日期，可以发现真日期右对齐，假日期左对齐（内容跟显示的一致），真日期转格式可以看到单元格数据仍然是真日期格式（内容跟显示不一致）。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.5.gif\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id9\">\r\n<h3>2.2 单元格格式<a class=\"headerlink\" href=\"#id9\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>设置单元格格式可以点击单元格后，<strong>右键-设置单元格格式</strong>选项，或者按快捷键<strong>ctrl+1</strong>，或者通过工具栏：<strong>开始-数字</strong>去快速做更改。单元格可以设置的格式类型包括：</p>\r\n<ul class=\"simple\">\r\n<li><p>数字：调整数值格式或者日期格式。</p></li>\r\n<li><p>对齐：调整对齐方式。</p></li>\r\n<li><p>字体：更改字体、字型、字号等。</p></li>\r\n<li><p>边框：单元格边框设置。</p></li>\r\n<li><p>填充：填充单元格背景颜色，标注数据经常使用。</p></li>\r\n<li><p>保护：锁定单元格或者隐藏公式。</p></li>\r\n</ul>\r\n<div class=\"section\" id=\"id10\">\r\n<h4>2.2.1 数值格式<a class=\"headerlink\" href=\"#id10\" title=\"Permalink to this heading\">#</a></h4>\r\n<p>设置单元格格式分类选择数值，对数值设置小数点一般保留两位，同时能让数值对齐，使用千分位分隔符能更容易观察数值大小。</p>\r\n</div>\r\n<div class=\"section\" id=\"id11\">\r\n<h4>2.2.2 文本格式<a class=\"headerlink\" href=\"#id11\" title=\"Permalink to this heading\">#</a></h4>\r\n<p>文本常见的设置格式用于对文本进行加单引号、双引号或者逗号的情况。</p>\r\n<p>例如对真假日期中的假日期增加单引号</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.7.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id12\">\r\n<h4>2.2.3 日期格式<a class=\"headerlink\" href=\"#id12\" title=\"Permalink to this heading\">#</a></h4>\r\n<p>通过日期分类调整日期格式为年-月-日，需要注意的是文本型的日期格式无法调整，而数值是可以调整为日期。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.8.png\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id13\">\r\n<h3>2.3 转换单元格数据<a class=\"headerlink\" href=\"#id13\" title=\"Permalink to this heading\">#</a></h3>\r\n<div class=\"section\" id=\"id14\">\r\n<h4>2.3.1 数值和文本相互转换<a class=\"headerlink\" href=\"#id14\" title=\"Permalink to this heading\">#</a></h4>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/2.1.xlsx</span></code>，将数值转换成文本</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.9.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id15\">\r\n<h4>2.3.2 日期和文本相互转换<a class=\"headerlink\" href=\"#id15\" title=\"Permalink to this heading\">#</a></h4>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/2.1.xlsx</span></code>，将不规范日期转成规范日期，然后转成文本</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.10.gif\" />\r\n</div>\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id16\">\r\n<h2>练习<a class=\"headerlink\" href=\"#id16\" title=\"Permalink to this heading\">#</a></h2>\r\n<ol class=\"arabic simple\">\r\n<li><p>使用Excel数据导入功能，完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/Titanic_normal.csv</span></code>和<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/Titanic_train.txt</span></code>数据导入</p></li>\r\n<li><p>完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/2.1.xlsx</span></code>中案例1-4中的问题</p></li>\r\n</ol>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap10.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第十章Excel看板 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"作者\" href=\"../%E4%BD%9C%E8%80%85.html\" />\r\n    <link rel=\"prev\" title=\"第九章Excel数据透视\" href=\"chap9.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#\">\r\n   第十章Excel看板\r\n  </a>\r\n  <ul class=\"visible nav section-nav flex-column\">\r\n   <li class=\"toc-h2 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id1\">\r\n     1.业务背景\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h2 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id2\">\r\n     2.实现分析\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h2 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id3\">\r\n     3.实现过程\r\n    </a>\r\n    <ul class=\"nav section-nav flex-column\">\r\n     <li class=\"toc-h3 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id4\">\r\n       1.确定周数\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h3 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id5\">\r\n       2.销售基础整理\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h3 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id6\">\r\n       3.周销售数据变化趋势\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h3 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id7\">\r\n       4.周销售渠道整理\r\n      </a>\r\n     </li>\r\n     <li class=\"toc-h3 nav-item toc-entry\">\r\n      <a class=\"reference internal nav-link\" href=\"#id8\">\r\n       5.看板绘制\r\n      </a>\r\n     </li>\r\n    </ul>\r\n   </li>\r\n   <li class=\"toc-h2 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id9\">\r\n     练习\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h2 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id10\">\r\n     思考\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id11\">\r\n   后记\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<h1>第十章Excel看板<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<blockquote>\r\n<div><p>数据看板作为数据动态展示的一种重要方式，被广泛的应用于各个领域，因此本节根据1个案例讲解使用Excel制作数据看板的过程，以期起到抛砖引玉的效果，在学习技能的同时也将其应用到实践的工作中</p>\r\n</div></blockquote>\r\n<div class=\"section\" id=\"id1\">\r\n<h2>1.业务背景<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap10/10.1.xlsx</span></code>中的数据源，这是某厂家在淘宝、拼多多、京东这3个电商销售平台的销售数据，现在你是这个厂家的员工，老板想知道商品在不同渠道的每周销售情况，想请你做一个数据周报看板。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.1.png\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id2\">\r\n<h2>2.实现分析<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.既然是周报看板，需要确定每天日期所在周数与每周的第几天</p>\r\n<p>2.根据确定周数对销售金额进行汇总</p>\r\n<p>3.对销售金额进行动态展示</p>\r\n</div>\r\n<div class=\"section\" id=\"id3\">\r\n<h2>3.实现过程<a class=\"headerlink\" href=\"#id3\" title=\"Permalink to this heading\">#</a></h2>\r\n<div class=\"section\" id=\"id4\">\r\n<h3>1.确定周数<a class=\"headerlink\" href=\"#id4\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>确定日期所在的周数用【WEEKNUM函数】，确定日期是第几周可以用【WEEKDAY函数】</p>\r\n<p>在H2单元格输入 <strong>=WEEKNUM(B2,2)</strong></p>\r\n<p>在I2单元格输入 <strong>=WEEKDAY(B2,11)</strong> （如果想得到中文星期几 可以输入\r\n=TEXT(B2,”aaaa”)）</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.2.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id5\">\r\n<h3>2.销售基础整理<a class=\"headerlink\" href=\"#id5\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>新建1个工作表，确定动态数据的变量为周数，并确定需要计算的指标，本周开始日期、介绍日期、销售额、订单数、上周销售额、上周订单数、销售额变化、订单数变化</p>\r\n<p>使用公式求解相关的基础数据</p>\r\n<p>在C3单元格输入公式<code class=\"docutils literal notranslate\"><span class=\"pre\">=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001)</span></code></p>\r\n<p>如果发现数据日期变成了44200，显然就是格式不正确，只需要将单元格的格式转为日期即可</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.3.gif\" />\r\n</div>\r\n<p>在C4单元格输入公式<code class=\"docutils literal notranslate\"><span class=\"pre\">=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001,0,0,-1)</span></code></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.4.gif\" />\r\n</div>\r\n<p>对于本周的销售额，可以使用SUMIFS函数获得 ，在C5单元格中输入</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=SUMIFS(数据源!$F:$F,数据源!$B:$B,&quot;&gt;=&quot;&amp;$C$3,数据源!$B:$B,&quot;&lt;=&quot;&amp;$C$4)</span></code></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.5.gif\" />\r\n</div>\r\n<p>对于本周的订单数，可以使用COUNTIFS函数获得 ，在C6单元格中输入</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=COUNTIFS(数据源!$B:$B,&quot;&gt;=&quot;&amp;$C$3,数据源!$B:$B,&quot;&lt;=&quot;&amp;$C$4)</span></code></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.6.gif\" />\r\n</div>\r\n<p>对于上周开始日期，可以使用本周开始日期-7，在E3单元格中输入</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=C3-7</span></code></p>\r\n<p>对于上周结束日期，可以使用本周结束日期-7，在E4单元格中输入</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=C4-7</span></code></p>\r\n<p>对于上周销售额，可以使用SUMIFS函数获得 ，在E5单元格中输入</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=SUMIFS(数据源!$F:$F,数据源!$B:$B,&quot;&gt;=&quot;&amp;$E$3,数据源!$B:$B,&quot;&lt;=&quot;&amp;$E$4)</span></code></p>\r\n<p>对于上周的订单数，可以使用COUNTIFS函数获得 ，在E6单元格中输入</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=COUNTIFS(数据源!$B:$B,&quot;&gt;=&quot;&amp;$E$3,数据源!$B:$B,&quot;&lt;=&quot;&amp;$E$4)</span></code></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.7.gif\" />\r\n</div>\r\n<p>对于相比上周销售额变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C7单元格中输入</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=TEXT(((C5-E5)/E5)*100,&quot;0.00&quot;)&amp;&quot;%&quot;</span></code></p>\r\n<p>对于相比上周订单数变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C8单元格中输入</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=TEXT(((C6-E6)/E6)*100,&quot;0.00&quot;)&amp;&quot;%&quot;</span></code></p>\r\n<p>当然也可以直接设置单元格格式为【百分比】</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.8.gif\" />\r\n</div>\r\n<p>当然这个【相比上周销售额变化】指标是一个比较重要的指标，可以对这个指标进行格式设置</p>\r\n<p>选择C6单元格并设置条件格式，判断C5单元格与E5单元格值的大小，如果C5&gt;=E5，那么C6单元值为红，否则为绿色</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.9.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id6\">\r\n<h3>3.周销售数据变化趋势<a class=\"headerlink\" href=\"#id6\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>对于每周的数据需要做一个统计，并对每周数据的下单金额与下单数进行整理</p>\r\n<p>装B13-B19单元格输入星期数</p>\r\n<p>现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=SUMIFS(数据源!$F:$F,数据源!$B:$B,&quot;&gt;=&quot;&amp;$C$3,数据源!$B:$B,&quot;&lt;=&quot;&amp;$C$4,数据源!$I:$I,&quot;=&quot;&amp;'计算过程'!B13)</span></code></p>\r\n<p>现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=COUNTIFS(数据源!$B:$B,&quot;&gt;=&quot;&amp;$C$3,数据源!$B:$B,&quot;&lt;=&quot;&amp;$C$4,数据源!$I:$I,&quot;=&quot;&amp;'计算过程'!B13)</span></code></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.10.gif\" />\r\n</div>\r\n<p>接下来就对数据进行可视化展示</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.11.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id7\">\r\n<h3>4.周销售渠道整理<a class=\"headerlink\" href=\"#id7\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>对于每周的数据需要做一个统计，并对每周数据的渠道分布进行整理</p>\r\n<p>装G3-G6单元格分别输入产品的电商渠道京东、拼多多、淘宝</p>\r\n<p>在H3单元格中输入SUMIFS函数求不同渠道的销售金额，并进行向下填充</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=SUMIFS(数据源!$F:$F,数据源!$E:$E,G3,数据源!$B:$B,&quot;&gt;=&quot;&amp;$C$3,数据源!$B:$B,&quot;&lt;=&quot;&amp;$C$4)</span></code></p>\r\n<p>在I3单元格中输入COUNTIF函数求不同渠道的下单数，并进行向下填充</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=COUNTIFS(数据源!$E:$E,G3,数据源!$B:$B,&quot;&gt;=&quot;&amp;$C$3,数据源!$B:$B,&quot;&lt;=&quot;&amp;$C$4)</span></code></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.12.gif\" />\r\n</div>\r\n<p>接下来就对数据进行可视化展示，将图片进行简单的美化，就可以得到下单金额饼状图与下单数的柱状图</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.13.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id8\">\r\n<h3>5.看板绘制<a class=\"headerlink\" href=\"#id8\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>完成了前面的全部计算后，接下来的工作就是将绘制的图结合在一起进行展示</p>\r\n<p>首先是上述计算的数据与绘图的信息集合到一起</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.13.png\" />\r\n</div>\r\n<p>其中本周的总销量、本周订单数、当前周数、开始日期以及结束日期都是引用计算过程中的值</p>\r\n<p>本周总销量的值为<code class=\"docutils literal notranslate\"><span class=\"pre\">=计算过程!$C$5</span></code></p>\r\n<p>本周总订单的值为<code class=\"docutils literal notranslate\"><span class=\"pre\">=计算过程!$C$6</span></code></p>\r\n<p>本周周数的值为<code class=\"docutils literal notranslate\"><span class=\"pre\">=计算过程!$C$2</span></code></p>\r\n<p>本周的开始日期为<code class=\"docutils literal notranslate\"><span class=\"pre\">=计算过程!$C$3</span></code></p>\r\n<p>本周的结束日期为<code class=\"docutils literal notranslate\"><span class=\"pre\">=计算过程!$C$4</span></code></p>\r\n<p>因为本周的变化情况带有条件单元格式，因此不能直接引用，需要将其转化成链接图片的形式，具体操作为</p>\r\n<p>1.复制C7单元格</p>\r\n<p>2.粘贴选择链接的图片</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.14.png\" />\r\n</div>\r\n<p>对于本周的周数，需要设置按钮方便调节</p>\r\n<p>1.选择开发工具</p>\r\n<p>2.选择插入，选择数值调节按钮</p>\r\n<p>3.选择设置控件格式</p>\r\n<p>4.设置控件的对应参数</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.15.png\" />\r\n</div>\r\n<p>到这里就完成了看板90%的步骤，点击按钮，能看动态展示看板的相关数据</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.16.png\" />\r\n</div>\r\n<p>最后就对看板进行相应的美化，在看板美化过程中也参考了其他EXCEL教程中的配色，因此最后的看板展示效果为</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/10.17.png\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id9\">\r\n<h2>练习<a class=\"headerlink\" href=\"#id9\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.完成数据看板，需要通过按钮调节周数，同时销售额，订单数以及数据图进行变化</p>\r\n</div>\r\n<div class=\"section\" id=\"id10\">\r\n<h2>思考<a class=\"headerlink\" href=\"#id10\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.为什么每周的介绍日期和开始日期都可以使用XLOOKUP获得</p>\r\n<p>2.为什么每周1的下单金额之和可以通过SUMIF函数求</p>\r\n<p>3.为什么设置按钮调节每周的数据变化，这样有什么好处</p>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id11\">\r\n<h1>后记<a class=\"headerlink\" href=\"#id11\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>行文至此，以上就是Free-excel教程的全部内容，整个教程的编写过程中也广泛的参阅了各式各样的Excel教程，尽力让本教程变得轻松易学，希望读者能掌握相关的Excel技巧，并能灵活的运用到工作中，面对数字化社会，数据将渗透到生活的点点滴滴，拥抱数字，同时也拥抱变化。</p>\r\n<p>–作者：牧小熊，Datawhale成员，数据分析师</p>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap2.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第二章 Excel的快捷操作 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第三章 Excel的表合并\" href=\"chap3.html\" />\r\n    <link rel=\"prev\" title=\"第一章 Excel与数据格式\" href=\"chap1.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#header-n2\">\r\n   1.Excel快捷操作简介\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n9\">\r\n     1.1文件相关\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n29\">\r\n     1.2通用快捷键\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n50\">\r\n     1.3表格选择\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n72\">\r\n     1.4单元格编辑\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n99\">\r\n     1.5Excel格式化\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n116\">\r\n     1.6Excel公式\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#header-n3\">\r\n   2.Excel快捷操作实践\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n126\">\r\n     2.1自动插入求和公式\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n4\">\r\n     2.2自动进行列差异比对\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n137\">\r\n     2.3自动填充\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#header-n167\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<span id=\"header-n0\"></span><h1>第二章 Excel的快捷操作<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<blockquote>\r\n<div><p>在本节中我们将了解Excel中的各种快捷操作，目前已知的Excel快捷操作键有230个，本篇重点介绍那些常用的Excel快捷操作键。</p>\r\n</div></blockquote>\r\n<div class=\"section\" id=\"header-n2\">\r\n<span id=\"id1\"></span><h2>1.Excel快捷操作简介<a class=\"headerlink\" href=\"#header-n2\" title=\"Permalink to this heading\">#</a></h2>\r\n<div class=\"section\" id=\"header-n9\">\r\n<span id=\"id2\"></span><h3>1.1文件相关<a class=\"headerlink\" href=\"#header-n9\" title=\"Permalink to this heading\">#</a></h3>\r\n<ul class=\"simple\">\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">N</span></code> 创建一个新的Excel工作簿</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">w</span></code> 关闭当前工作簿</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">S</span></code> 保存当前的Excel工作簿</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">F12</span></code> 将当前文件进行另存为</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">p</span></code> 打印当前工作表</p></li>\r\n</ul>\r\n</div>\r\n<div class=\"section\" id=\"header-n29\">\r\n<span id=\"id3\"></span><h3>1.2通用快捷键<a class=\"headerlink\" href=\"#header-n29\" title=\"Permalink to this heading\">#</a></h3>\r\n<ul class=\"simple\">\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">z</span></code> 撤销当前操作</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">Y</span></code> 恢复撤销，可以用这个快捷键恢复被撤消的操作</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">C</span></code> 复制所选单元格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">x</span></code> 剪切所选单元格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">v</span></code> 粘贴所选单元格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span></code> 弹出查找和替换对话框</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">G</span></code> 显示定位对话框</p></li>\r\n</ul>\r\n</div>\r\n<div class=\"section\" id=\"header-n50\">\r\n<span id=\"id4\"></span><h3>1.3表格选择<a class=\"headerlink\" href=\"#header-n50\" title=\"Permalink to this heading\">#</a></h3>\r\n<ul class=\"simple\">\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">A</span></code> 全选表格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">→</span></code> 移动到数据区域的右边缘</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">←</span></code> 移动到数据区域的左边缘</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">↑</span></code> 移动到数据区域的上边缘</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">↓</span></code> 移动到数据区域的下边缘</p></li>\r\n</ul>\r\n</div>\r\n<div class=\"section\" id=\"header-n72\">\r\n<span id=\"id5\"></span><h3>1.4单元格编辑<a class=\"headerlink\" href=\"#header-n72\" title=\"Permalink to this heading\">#</a></h3>\r\n<ul class=\"simple\">\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">F2</span></code> 编辑当前单元格（跟双击单元格效果一致）</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Alt</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">Enter</span></code> 在当前单元格内换行 (直接按\r\n<code class=\"docutils literal notranslate\"><span class=\"pre\">Enter</span></code>会跳转到下一行)</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Enter</span></code> 下移一个单元格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Shift</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">Enter</span></code> 上移一个单元格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Tab</span></code> 右移一个单元格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Shift</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">Tab</span></code> 左移一个单元格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">Enter</span></code> 输入完成，并停留在当前单元格</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">;</span></code>（分号） 输入当前日期（显示为年/月/日）</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> +<code class=\"docutils literal notranslate\"><span class=\"pre\">Shift</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">:</span></code> 输入当前时间 (显示为小时/分钟)</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">E</span></code> 快速填充</p></li>\r\n</ul>\r\n</div>\r\n<div class=\"section\" id=\"header-n99\">\r\n<span id=\"id6\"></span><h3>1.5Excel格式化<a class=\"headerlink\" href=\"#header-n99\" title=\"Permalink to this heading\">#</a></h3>\r\n<ul class=\"simple\">\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code>（数字1） 设置单元格格式</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">B</span></code> 加粗或取消加粗</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Ctrl</span></code> + <code class=\"docutils literal notranslate\"><span class=\"pre\">i</span></code> 加斜体或取消斜体</p></li>\r\n</ul>\r\n</div>\r\n<div class=\"section\" id=\"header-n116\">\r\n<span id=\"id7\"></span><h3>1.6Excel公式<a class=\"headerlink\" href=\"#header-n116\" title=\"Permalink to this heading\">#</a></h3>\r\n<ul class=\"simple\">\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">F4</span></code> 绝对引用和相对引用切换</p></li>\r\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Alt</span></code>+<code class=\"docutils literal notranslate\"><span class=\"pre\">=</span></code> 自动插入求和公式</p></li>\r\n</ul>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n3\">\r\n<span id=\"id8\"></span><h2>2.Excel快捷操作实践<a class=\"headerlink\" href=\"#header-n3\" title=\"Permalink to this heading\">#</a></h2>\r\n<div class=\"section\" id=\"header-n126\">\r\n<span id=\"id9\"></span><h3>2.1自动插入求和公式<a class=\"headerlink\" href=\"#header-n126\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.1.xlsx</span></code>，点击【案例1】</p>\r\n<p>1.选中案例1中的表格区域（<strong>注意这里要把汇总的那一行也选上</strong>）</p>\r\n<p>2.使用快捷键<code class=\"docutils literal notranslate\"><span class=\"pre\">Alt</span></code>+<code class=\"docutils literal notranslate\"><span class=\"pre\">=</span></code>\r\n，自动插入求和公式，可以看到，对上述的Excel表格区域进行自动求和。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.1.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n4\">\r\n<span id=\"id10\"></span><h3>2.2自动进行列差异比对<a class=\"headerlink\" href=\"#header-n4\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.2.xlsx</span></code>，点击【案例1】，我们现在的任务是找到1月和2月客户数不同的区域，如何快速定位？</p>\r\n<p>1.选中需要进行列差异比对的区域，注意选择顺序从左往右</p>\r\n<p>2.使用快捷键<code class=\"docutils literal notranslate\"><span class=\"pre\">ctrl</span></code>+<code class=\"docutils literal notranslate\"><span class=\"pre\">\\</span></code>\r\n(<strong>注意不是”/”</strong>)，可以快速定位到区域4、区域8以及区域10所对应的客户数不同</p>\r\n<p>3.选择填充颜色，即可快速显示两列的差异</p>\r\n<p>注意这里的选择方向，从右往左选择，那么默认最右边为参考标准，其他列的数据可参考标准比较，如果从左往右选择，那最左边就是参考标准，其他的操作同上。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.2.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n137\">\r\n<span id=\"id11\"></span><h3>2.3自动填充<a class=\"headerlink\" href=\"#header-n137\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>在excel中很多重复、繁琐的工作由数据提取和数据合并这类问题造成，<strong>2013年以后的Excel</strong>支持智能填充，能灵活的解决这类问题。需要注意的是，自动填充的数据需要是同一个规范数据才可以完成自动填充。</p>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.3.xlsx</span></code>，点击【案例1】，需要提取客户的手机号</p>\r\n<p>1.手动提取客户1的手机号，并输入到【B2】</p>\r\n<p>2.选择需要快速填充的列，也就是【B2-B11】</p>\r\n<p>3.按<code class=\"docutils literal notranslate\"><span class=\"pre\">ctrl</span></code>+<code class=\"docutils literal notranslate\"><span class=\"pre\">E</span></code>进行自动填充</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/2.31.gif\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n167\">\r\n<span id=\"id12\"></span><h2>练习<a class=\"headerlink\" href=\"#header-n167\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.1.xlsx</span></code>工作簿中的【案例2】【案例3】的快捷键自动求和任务</p>\r\n<p>2.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.2.xlsx</span></code>工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）</p>\r\n<p>3.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.3.xlsx</span></code>工作簿中的【案例2】【案例3】【案例4】的填充任务</p>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap3.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第三章 Excel的表合并 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第四章 Excel函数-逻辑判断\" href=\"chap4.html\" />\r\n    <link rel=\"prev\" title=\"第二章 Excel的快捷操作\" href=\"chap2.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#header-n4\">\r\n   1.多表行合并\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#header-n19\">\r\n   2.多表列合并\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#header-n23\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<span id=\"header-n0\"></span><h1>第三章 Excel的表合并<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<blockquote>\r\n<div><p>当遇到需要将多个表的行记录合并在一起的时候，我们一般会手动复制粘贴，这会带来很多重复繁琐的操作，并且容易出错，可以使用Excel的合并计算工具来快速完成。</p>\r\n</div></blockquote>\r\n<div class=\"section\" id=\"header-n4\">\r\n<span id=\"id1\"></span><h2>1.多表行合并<a class=\"headerlink\" href=\"#header-n4\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap3/3.1.xlsx</span></code>，点击【案例1】可以看到有3个消费表格，每个客户的消费金额不同，现在需要你统计每个客户在消费的总金额。</p>\r\n<p>一般的操作方法是将这3个数据复制粘贴，那么有没有更加优雅的方法呢？这里推荐使用合并计算</p>\r\n<p><strong>1.选择需要汇总的单元格起点</strong></p>\r\n<p><strong>2.选择Excel中的数据栏</strong></p>\r\n<p><strong>3.找到数据栏中的合并计算块</strong></p>\r\n<p><strong>4.选择合并计算函数中的求和</strong></p>\r\n<p><strong>5.点击引用位置右侧的引用项</strong></p>\r\n<p><strong>6.选择第一个数据表所在的范围</strong></p>\r\n<p><strong>7.点击添加</strong></p>\r\n<p><strong>8.将3个数据表添加到所有引用位置</strong></p>\r\n<p><strong>9.选择标签位置信息</strong></p>\r\n<p><strong>10.点击完成</strong></p>\r\n<p>可以看到完成了所有客户消费金额的求和计算~</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/3.1.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n19\">\r\n<span id=\"id2\"></span><h2>2.多表列合并<a class=\"headerlink\" href=\"#header-n19\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap3/3.1.xlsx</span></code>，点击【案例2】可以看到有3个不同的消费表格，每个客户的消费金额不同，现在需要你统计每个客户在3个不同消费的总金额。</p>\r\n<p>使用合并计算选择3个不同项目的数据区域</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/3.2.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n23\">\r\n<span id=\"id3\"></span><h2>练习<a class=\"headerlink\" href=\"#header-n23\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap3/3.1.xlsx</span></code>工作簿中的【案例1】得到不同客户的消费次数</p>\r\n<p>2.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap3/3.1.xlsx</span></code>工作簿中的【案例2】得到不同客户的不同项目的消费次数</p>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap4.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第四章 Excel函数-逻辑判断 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第五章 Excel函数-文本函数\" href=\"chap5.html\" />\r\n    <link rel=\"prev\" title=\"第三章 Excel的表合并\" href=\"chap3.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#if\">\r\n   1.if函数\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#ifs\">\r\n   2.ifs函数\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#sumif\">\r\n   3.sumif函数\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n39\">\r\n     案例1\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n47\">\r\n     案例2\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n53\">\r\n     案例3\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n63\">\r\n     案例4\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#countifs\">\r\n   4.countifs函数\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#header-n78\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<span id=\"header-n0\"></span><h1>第四章 Excel函数-逻辑判断<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<blockquote>\r\n<div><p>Excel中有着非常丰富的函数，这些函数能大幅度提升我们的工作效率，本节中会重点介绍一些常用的Excel函数。</p>\r\n</div></blockquote>\r\n<div class=\"section\" id=\"if\">\r\n<span id=\"header-n4\"></span><h2>1.if函数<a class=\"headerlink\" href=\"#if\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>，点击【案例1】，现在需要对客户的原始得分进行校正，当客户的原始得分为负时，校正为0</p>\r\n<p>针对上面遇到的问题，可以使用IF函数，Excel函数用法如下</p>\r\n<p>【IF函数】<strong>=IF(判断条件，如果满足则，如果不满足则)</strong></p>\r\n<p>针对遇到的问题，那么在C2单元格中输入</p>\r\n<p><strong>=IF(B2&lt;0,0,B2)</strong> —-&gt; <strong>注意，这里的逗号要使用英文的逗号</strong></p>\r\n<p>那么这个公式是什么意思呢？判断B2单元格是不是小于0，如果是，则C2单元格为0，如果不是则返回B2单元格的值，可以看到C2单元格实际返回值为0，这是因为B2的值为-1，满足判断条件，因此C2单元格返回为0</p>\r\n<p>那么如何进行公式批量填充呢？</p>\r\n<p>这里推荐一个比较优雅的方法</p>\r\n<p>1.在C2单元格写Excel公式</p>\r\n<p>2.选择需要填充公式的区域，包括C2单元格</p>\r\n<p>3.点击C2单元格，进入公式编辑状态</p>\r\n<p>4.使用快捷键<code class=\"docutils literal notranslate\"><span class=\"pre\">CTRL</span></code>+<code class=\"docutils literal notranslate\"><span class=\"pre\">Enter</span></code>进行批量填充</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.1.gif\" />\r\n</div>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>，点击【案例2】，现在有客户的1月、2月消费金额，如果客户2个月的消费金额都超过400，那么就认为这个客户为高消费客户。</p>\r\n<p>这里与5.1中的案例不同，需要IF函数与逻辑函数进行配合</p>\r\n<p>【AND函数】<strong>=AND(条件1，条件2，…)</strong></p>\r\n<p>【OR函数】<strong>=OR(条件，条件2，…)</strong></p>\r\n<p>AND函数，需要所有条件全部满足，才返还TRUE，OR函数，所有条件中只要有1个条件满足，就返还TRUE</p>\r\n<p>针对遇到的问题，那么在D2单元格中输入</p>\r\n<p><strong>=IF(AND(B2&gt;400,C2&gt;400),”高消费客户”,””)</strong> —–&gt; 这里””代表返回空值</p>\r\n<p>随后对整列的函数进行填充，具体填充方法见5.1中详解</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.2.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"ifs\">\r\n<span id=\"header-n27\"></span><h2>2.ifs函数<a class=\"headerlink\" href=\"#ifs\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>，点击【案例3】，有员工的相关考核分，考核得分在4.8分以上，优秀；考核得分在3.5-4.7分，良好；考核得分在0-3.4分，一般。</p>\r\n<p>这里可以使用IFS函数，具体用法为</p>\r\n<p>【IFS函数】=IFS(判断条件1,如果满足条件1则,判断条件2,如果满足条件2则)</p>\r\n<p>针对遇到的问题，则可以在C2单元格输入</p>\r\n<p><strong>=IFS(B3&lt;=3.4,”一般”,AND(B3&gt;=3.5,B3&lt;=4.7),”良好”,B3&gt;=4.8,”优秀”)</strong></p>\r\n<p>对整列数据进行函数填充</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.3.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"sumif\">\r\n<span id=\"header-n35\"></span><h2>3.sumif函数<a class=\"headerlink\" href=\"#sumif\" title=\"Permalink to this heading\">#</a></h2>\r\n<blockquote>\r\n<div><p>在Excel数据任务处理中，会遇到大量的求和的任务，SUMIF函数在求和任务中具有天然优势，因此在本节中将详细的讲解SUMIF函数的相关用法</p>\r\n</div></blockquote>\r\n<p>【SUMIF函数】=SUMIF(条件区域，求和条件，[实际求和区域])\r\n—&gt;实际求和区域位选择条件</p>\r\n<div class=\"section\" id=\"header-n39\">\r\n<span id=\"id1\"></span><h3>案例1<a class=\"headerlink\" href=\"#header-n39\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例1】现在有几名同学的考试成绩，现在想统计数学成绩在90分以上的成绩之和</p>\r\n<p>那么可以输入如下的函数公式</p>\r\n<p><strong>=SUMIF(B:B,”&gt;=90”,B:B)</strong></p>\r\n<p>第一个参数为条件区域，因为要判断数学成绩，所以这里选择B列，当然这里也可以修改为实际的区域B2:B12</p>\r\n<p>第二个参数为判定条件，判定条件为大于等于90</p>\r\n<p>第三个参数为实际求和区，这是选填参数</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.4.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n47\">\r\n<span id=\"id2\"></span><h3>案例2<a class=\"headerlink\" href=\"#header-n47\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例2】，现在想统计小米系列的产品销售额</p>\r\n<p>SUMIF函数支持模糊匹配，因此我们输入如下公式</p>\r\n<p><strong>=SUMIF(B:B,”小米*”,C:C)</strong></p>\r\n<p>使用小米*匹配所有的小米系产品</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.5.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n53\">\r\n<span id=\"id3\"></span><h3>案例3<a class=\"headerlink\" href=\"#header-n53\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例3】，现在想统计1月-3月的预计销售额预计销售和实际销售额</p>\r\n<p>因此可以巧用SUMIF函数，将条件区域进行横向选择，条件选择自己需要的字段，因此输入如下两个函数公式，并向下拖拽填充其他位置</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=SUMIF($B$2:$G$2,I$2,B3:G3)</span></code></p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=SUMIF($B$2:$G$2,H$2,B3:G3)</span></code></p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">$</span></code>在Excel中是绝对引用，公式中引用的单元格如果使用绝对引用\r\n<code class=\"docutils literal notranslate\"><span class=\"pre\">$</span></code>，那么向下拖拽的过程中，这个单元格不会增加。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.6.png\" />\r\n</div>\r\n<p>例如，在J3单元格中输入<code class=\"docutils literal notranslate\"><span class=\"pre\">=C3</span></code>，在K3单元格中输入<code class=\"docutils literal notranslate\"><span class=\"pre\">=$C$3</span></code>并向下拖拽进行公式填充，观察区别</p>\r\n<p>发现，如果使用绝对引用，引用格式值并不会随着公式的拖拽而改变，这就是绝对引用与非绝对引用的区别。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.7.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n63\">\r\n<span id=\"id4\"></span><h3>案例4<a class=\"headerlink\" href=\"#header-n63\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例4】，现在需要统计语文成绩在80分以上，90分以下同学的数学成绩之和</p>\r\n<p>那么遇到这种情况应该怎么处理呢？相比于前面的案例，这里有2个筛选条件，而SUMIF函数无法满足需求，这里可以使用SUMIFS函数</p>\r\n<p>【SUMIFS函数】=SUMIFS（条件区域1，条件1，条件区域2，条件2）</p>\r\n<p>因此写如下函数公式</p>\r\n<p><strong>=SUMIFS(C2:C13,B2:B13,”&gt;80”,B2:B13,”&lt;90”)</strong></p>\r\n<p>因为要求数学成绩，所以第一个参数为C2:C13，而筛选条件为语文，因此条件区域为B2:B13</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.8.gif\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"countifs\">\r\n<span id=\"header-n71\"></span><h2>4.countifs函数<a class=\"headerlink\" href=\"#countifs\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例5】，现在需要统计语文成绩超过60，数学成绩超过65，英语成绩超过70的同学个数</p>\r\n<p>那么遇到这种情况应该怎么处理呢？其实countifs函数与sumifs函数用法非常接近，求满足所有条件的个数</p>\r\n<p>【COUNTIFS函数】=COUNTIFS（条件区域1，条件1，条件区域2，条件2）</p>\r\n<p>因此写如下函数公式</p>\r\n<p><strong>=COUNTIFS(B2:B13,”&gt;60”,C2:C13,”&gt;65”,D2:D13,”&gt;70”)</strong></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/4.9.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n78\">\r\n<span id=\"id5\"></span><h2>练习<a class=\"headerlink\" href=\"#header-n78\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>工作簿中的【案例1】，将客户原始得分为1以下的校正为0</p>\r\n<p>2.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为”高消费客户”</p>\r\n<p>3.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的务。</p>\r\n<p>4.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例1】语文成绩在80分以上的同学成绩之和</p>\r\n<p>5.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例2】统计所有苹果系列产品的销售额</p>\r\n<p>6.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例6】完成所有手机的销售额求和</p>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap5.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第五章 Excel函数-文本函数 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第六章 Excel函数-查找函数\" href=\"chap6.html\" />\r\n    <link rel=\"prev\" title=\"第四章 Excel函数-逻辑判断\" href=\"chap4.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#text\">\r\n   1.Text函数\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id1\">\r\n     案例1\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id2\">\r\n     案例2\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#id3\">\r\n     案例3\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#mid\">\r\n   2.mid函数\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#replace\">\r\n   3.replace函数\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id4\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<h1>第五章 Excel函数-文本函数<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<div class=\"section\" id=\"text\">\r\n<h2>1.Text函数<a class=\"headerlink\" href=\"#text\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>Text函数可以将数值转换为指定格式的文本，其语法格式为TEXT(value,format_text)</p>\r\n<p>【TEXT函数】=TEXT(值，自定义数字格式代码)</p>\r\n<div class=\"section\" id=\"id1\">\r\n<h3>案例1<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.1.xlsx</span></code>，点击【案例1】，将客户的消费日期和消费金额转成大写</p>\r\n<p>针对遇到的问题，那么在D2单元格中输入</p>\r\n<p><strong>=TEXT(C2,”[DBNUM2]”)</strong> —-&gt; <strong>注意，这里的逗号要使用英文的逗号</strong></p>\r\n<p>在E2单元格中输入</p>\r\n<p><strong>=TEXT(A2,”[DBNUM1]yyyy年m月d日”)</strong></p>\r\n<p>DBNUM1和DBNUM2为2种常见的中文格式，一般金额用DBNUM2，日期用DBNUM1</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/5.1.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id2\">\r\n<h3>案例2<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.1.xlsx</span></code>，点击【案例2】，将客户的消费日期转换为周次，即星期几</p>\r\n<p>针对遇到的问题，那么在D2单元格中输入</p>\r\n<p><strong>=TEXT(A2,”aaaa”)</strong></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/5.2.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id3\">\r\n<h3>案例3<a class=\"headerlink\" href=\"#id3\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.1.xlsx</span></code>，点击【案例3】，取客户消费的年、月、日</p>\r\n<p>针对遇到的问题，那么在D2单元格中输入</p>\r\n<p><strong>=TEXT(A2,”yyyy”)</strong> 或者 <strong>=TEXT(A2,”e”)</strong></p>\r\n<p>在E2单元格中输入</p>\r\n<p><strong>=TEXT(A2,”m”)</strong> 或者 <strong>=TEXT(A2,”mm”)</strong> 注意.这2种格式是有区别的</p>\r\n<p>在F2单元格中输入</p>\r\n<p><strong>=TEXT(A2,”d”)</strong> 或者 <strong>=TEXT(A2,”dd”)</strong></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/5.3.gif\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"mid\">\r\n<h2>2.mid函数<a class=\"headerlink\" href=\"#mid\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.2.xlsx</span></code>，点击【案例1】，提取身份证中的生日，并转换成2022年12月4日这种格式</p>\r\n<p>面对这个问题，可以使用mid函数提取生日</p>\r\n<p>【MID函数】=MID(text,start<em>num,num</em>chars)</p>\r\n<p>test:为要提取的文本字符串</p>\r\n<p>start_num:为文本中要提取的第一个字符串的位置</p>\r\n<p>num_chars为提取字符串的长度</p>\r\n<p>因此可以在B2中输入 因为生日是8位数字，所以最后一个参数填8</p>\r\n<p><strong>=MID(A2,7,8)</strong></p>\r\n<p>在C2中输入格式化的生日</p>\r\n<p><strong>=TEXT(MID(A2,7,8),”0000年00月00日”)</strong></p>\r\n<p>问题：这里TEXT函数格式为什么没有使用yyyy年mm月dd日 这种格式？</p>\r\n<p>因为MID(A2,7,8)提取出来的是文本，不是日期，因此Excel无法识别日期的年月，所以用数字格式进行代替</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/5.4.gif\" />\r\n</div>\r\n<p>文本提取中相似的函数有LEFT，RIGHT</p>\r\n<p>LEFT函数，以字符串左侧为起始位置，返回指定数量的字符</p>\r\n<p>【LEFT函数】=MID(text,,num_chars)</p>\r\n<blockquote>\r\n<div><p>text:要提取的字符串或单元格引用；\r\nnum_chars:要提取的字符数量</p>\r\n</div></blockquote>\r\n<p>RIGHT函数，从字符串右侧首字符开始，从右向左提取指定的字符，其功能和LEFT函数完全一样，只是方向不同</p>\r\n<p>【RIGHT函数】=MID(text,num_chars)</p>\r\n<blockquote>\r\n<div><p>text:要提取的字符串或单元格引用；\r\nnum_chars:要提取的字符数量</p>\r\n</div></blockquote>\r\n</div>\r\n<div class=\"section\" id=\"replace\">\r\n<h2>3.replace函数<a class=\"headerlink\" href=\"#replace\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.2.xlsx</span></code>，点击【案例2】，现在需要将Excel表格打印，为了不泄露客户电话号码，需要将电话后5位进行屏蔽</p>\r\n<p>REPLACEI函数作用：把一个文本字符串，人为指定一个位置，用定个数新字符进行替换。</p>\r\n<p>【REPLACEI函数】=REPLACEI(old<em>text,start</em>num,num<em>chars,new</em>text)</p>\r\n<p>old_text:需要替换的文本</p>\r\n<p>start_num:需要替换文本的开始位置</p>\r\n<p>num_chars:替换文本的长度</p>\r\n<p>new_text:替换内容</p>\r\n<p>因此可以在B2单元格中输入</p>\r\n<p><strong>=REPLACE(A2,11,5,”#####”)</strong></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/5.5.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id4\">\r\n<h2>练习<a class=\"headerlink\" href=\"#id4\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.1.xlsx</span></code>工作簿中的【案例1-3】</p>\r\n<p>2.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.2.xlsx</span></code>工作簿中的【案例1】中身份证后6位加密</p>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap6.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第六章 Excel函数-查找函数 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第七章 Excel函数-动态函数\" href=\"chap7.html\" />\r\n    <link rel=\"prev\" title=\"第五章 Excel函数-文本函数\" href=\"chap5.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#vlookup\">\r\n   1.VLOOKUP\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n7\">\r\n     案例1\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n15\">\r\n     案例2\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n26\">\r\n     案例3\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n32\">\r\n     案例4\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#xlookup\">\r\n   2 XLOOKUP\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n55\">\r\n     案例1\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n62\">\r\n     案例2\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n67\">\r\n     案例3\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n72\">\r\n     案例4\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n78\">\r\n     案例5\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n83\">\r\n     案例6\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n88\">\r\n     案例7\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#header-n94\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<span id=\"header-n0\"></span><h1>第六章 Excel函数-查找函数<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<blockquote>\r\n<div><p>VLOOKUP是经典的查找与引用函数，在Excel数据查询任务中有多种用途。XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，<strong>非常推荐大家使用XLOOKUP函数</strong>，如果自己的电脑Excel不是最新版不支持XLOOKUP函数，也可以来学习VLOOKUP函数。</p>\r\n</div></blockquote>\r\n<blockquote>\r\n<div><p>在本节教程中会重点介绍XLOOKUP函数的相关用法，对于VLOOKUP不好解决，XLOOKUP能解决的问题放在了【案例5】、【案例6】、【案例7】</p>\r\n</div></blockquote>\r\n<div class=\"section\" id=\"vlookup\">\r\n<span id=\"header-n6\"></span><h2>1.VLOOKUP<a class=\"headerlink\" href=\"#vlookup\" title=\"Permalink to this heading\">#</a></h2>\r\n<div class=\"section\" id=\"header-n7\">\r\n<span id=\"id1\"></span><h3>案例1<a class=\"headerlink\" href=\"#header-n7\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，点击【案例1】，根据岗位编号，得到该员工的应发工资</p>\r\n<p>针对这个问题，可以使用VLOOKUP函数</p>\r\n<p>【VLOOKUP函数】<strong>=VLOOKUP（要查找的值，查找区域，要返回的结果在查找区域的第几列，精确匹配或近似匹配）</strong></p>\r\n<p><strong>在L3单元格中输入如下公式</strong></p>\r\n<p><strong>=VLOOKUP(K2,A2:H50,8,FALSE)</strong></p>\r\n<p>因为应发工资在整个单元格中的第8列，所以第3个参数为8，第4个参数选择TRUE或者FALSE，TRUE为模糊匹配，FALSE为精确匹配，因此第4个参数选择为FALSE，\r\n有的EXCEL版本第4个参数是0是精确查找，1是精确匹配，根据实际情况输入即可。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/6.1.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n15\">\r\n<span id=\"id2\"></span><h3>案例2<a class=\"headerlink\" href=\"#header-n15\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，点击【案例2】，根据岗位编号，得到该员工的应发工资</p>\r\n<p>在案例2的任务中我们发现，这里的员工的编号位于最后一列，那么应该如何处理呢？</p>\r\n<p>如果按照正常的VLOOKUP的函数用法在L2单元格输入=VLOOKUP(K2,A2:H19,7,FALSE)，输入后会发现并没有安装预期得到应发工资。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/6.2.gif\" />\r\n</div>\r\n<p>这是因为VLOOKUP函数的限制，必须查找的区域在被查找值的左侧，当然这里有其他的办法解决。</p>\r\n<p>这里用到了换列的小技巧，如果感兴趣可以看相关文章，<a class=\"reference external\" href=\"https://zhuanlan.zhihu.com/p/377654196\">Excel技巧：一文搞懂\r\nIF{1,0} 的用法</a></p>\r\n<p>那么在L2中输入如下函数</p>\r\n<p><strong>=VLOOKUP(K2,IF({1,0},H2:H19,G2:G19),2,FALSE)</strong></p>\r\n<p>这个函数中，将G2:G17列与H2:H19列做成了一个临时数据组，并让这2列交换位置，这样G2:G19列就在临时数组中的第2列，因此VLOOKUP中第3个参数为2</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/6.3.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n26\">\r\n<span id=\"id3\"></span><h3>案例3<a class=\"headerlink\" href=\"#header-n26\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，点击【案例3】，根据性别与部门信息，获得员工编号</p>\r\n<p>案例3的任务与前面不同的是，无法只通过1个信息完全定位到员工编号，因此这里使用了一个技巧，在L3单元格中输入</p>\r\n<p><strong>=VLOOKUP(J2&amp;K2,IF({1,0},C2:C20&amp;D2:D20,A2:A20),2,0)</strong></p>\r\n<p>细心的同学可能发现了其中的技巧，就是将多个条件通过&amp;连接成一个字符串，同时将待查找的数据也连接起来，从而通过这个连接的特殊字符来查找数据</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/6.4.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n32\">\r\n<span id=\"id4\"></span><h3>案例4<a class=\"headerlink\" href=\"#header-n32\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，点击【案例4】，当不知道具体的信息，需要进行模糊查询</p>\r\n<p>那么如何使用VLOOKUP进行模糊查询呢？</p>\r\n<p><strong>=VLOOKUP(“*”&amp;K2,A2:F20,2,0)</strong></p>\r\n<p>Excel中的通配符匹配规则见如下，因为DW为2个字符，我们选择*</p>\r\n<p>还记得第四章中的SUMIFS函数中的案例，计算小米系列的销量中，我们就使用了通配符</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/6.5.png\" />\r\n</div>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/6.6.gif\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"xlookup\">\r\n<span id=\"header-n39\"></span><h2>2 XLOOKUP<a class=\"headerlink\" href=\"#xlookup\" title=\"Permalink to this heading\">#</a></h2>\r\n<blockquote>\r\n<div><p>XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，<strong>非常推荐大家使用XLOOKUP函数</strong>，如果不能支持这个函数也不用灰心，使用VLOOKUP函数也能完成绝大多数查询问题</p>\r\n</div></blockquote>\r\n<p>因为XLOOKUP函数功能非常强大，因此在本节中对函数进行讲解</p>\r\n<p>【XLOOKUP函数】<strong>==XLOOKUP(想要查找值, 想要在哪个数据区域中查找,\r\n要返回的数据区域，, [ifnotfound], [matchmode], [searchmode])</strong></p>\r\n<p>第四参数（可选参数）：if<em>not</em>found，找不到结果，就返回第四参数，如果省略第四参数函数默认返回#N/A这个错误值</p>\r\n<p>第五参数（可选参数）：match_mode，指定匹配类型</p>\r\n<p>参数为：0 ，精确匹配，未找到结果，返回 #N/A。 这是默认选项。</p>\r\n<p>参数为：-1，近似匹配，未找到结果，返回下一个较小的项。</p>\r\n<p>参数为：1，近似匹配，未找到结果，返回下一个较大的项。</p>\r\n<p>参数为：2 ，通配符匹配</p>\r\n<p>第六参数（可选参数）：search_mode, 指定要使用的搜索模式</p>\r\n<p>参数为：1，从第一项开始执行搜索。 这是默认选项。</p>\r\n<p>参数为：-1，从最后一项开始执行反向搜索。</p>\r\n<p>参数为：2，根据 lookup_array 按升序排序的二进制搜索。\r\n如果未排序，将返回无效结果。</p>\r\n<p>参数为：-2，根据lookup_array 按降序排序的二进制搜索。\r\n如果未排序，将返回无效结果。</p>\r\n<div class=\"section\" id=\"header-n55\">\r\n<span id=\"id5\"></span><h3>案例1<a class=\"headerlink\" href=\"#header-n55\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，一起来实现【案例1】</p>\r\n<p>我们在M2单元格中输入如下公式</p>\r\n<p><strong>=XLOOKUP(K2,A1:A50,H1:H50)</strong></p>\r\n<p>第1个K2 就是需要查询的岗位编号DW0005</p>\r\n<p>第2个参数为A1:A50，也就是要查哪一列，<strong>细心的同学已经注意到这里与VLOOKUP的不同</strong></p>\r\n<p>第3个参数就是需要返回的哪一列，也就是返回H列</p>\r\n</div>\r\n<div class=\"section\" id=\"header-n62\">\r\n<span id=\"id6\"></span><h3>案例2<a class=\"headerlink\" href=\"#header-n62\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，一起来实现【案例2】</p>\r\n<p>我们在L2单元格中输入如下公式</p>\r\n<p><strong>=XLOOKUP(J2,H1:H19,G1:G19)</strong></p>\r\n<p>细心的同学就发现上面的公式中没有用到列的转换，这个公式的可读性非常强，这是就是XLOOKUP比VLOOKUP更加强大的地方</p>\r\n</div>\r\n<div class=\"section\" id=\"header-n67\">\r\n<span id=\"id7\"></span><h3>案例3<a class=\"headerlink\" href=\"#header-n67\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，一起来实现【案例3】</p>\r\n<p>我们在M2单元格中输入如下公式</p>\r\n<p><strong>=XLOOKUP(J2&amp;K2,C1:C20&amp;D1:D20,A1:A20)</strong></p>\r\n<p>在XLOOKUP中的多条件查找，只需要使用<strong>&amp;</strong>，将多个条件的信息连接起来即可，非常的方便</p>\r\n</div>\r\n<div class=\"section\" id=\"header-n72\">\r\n<span id=\"id8\"></span><h3>案例4<a class=\"headerlink\" href=\"#header-n72\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，一起来实现【案例4】</p>\r\n<p>我们在M2单元格中输入如下公式</p>\r\n<p><strong>=XLOOKUP(“*”&amp;K2,A2:A20,B2:B20,,2)</strong></p>\r\n<p>在使用XLOOKUP进行通配符查找事，需要指定第5个参数为2，即告诉XLOOKUP需要用通配符进行查找，这里是好VLOOKUP不同的地方</p>\r\n<p>具体通配符用法，可见1.4的讲解</p>\r\n</div>\r\n<div class=\"section\" id=\"header-n78\">\r\n<span id=\"id9\"></span><h3>案例5<a class=\"headerlink\" href=\"#header-n78\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，一起来实现【案例5】，姓名6在数据表中出现了2次，想知道他的最后销售额应该怎么操作？</p>\r\n<p>我们在I2单元格中输入如下公式</p>\r\n<p><strong>=XLOOKUP(H2,B1:B20,F1:F20,0,0,-1)</strong></p>\r\n<p>前3个参数想必大家已经很熟悉了，第4个参数是0，就是当XLOOKUP查找不到时，就返回0，第5个参数是0，就是选择精确匹配，第6个参数选择搜索参数，这里选择-1，从后开始往前搜索，因此这样设置就能获得正确结果。</p>\r\n</div>\r\n<div class=\"section\" id=\"header-n83\">\r\n<span id=\"id10\"></span><h3>案例6<a class=\"headerlink\" href=\"#header-n83\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，一起来实现【案例6】，这里有4个人，现在想知道这4个人的最大销售额</p>\r\n<p><strong>=MAX(XLOOKUP(H2:H5,B2:B20,F2:F20,0,0,1))</strong></p>\r\n<p>先通过XLOOKUP批量查找这4个人销售额，再通过MAX函数，求这4个人中的最大的销售额。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/6.7.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n88\">\r\n<span id=\"id11\"></span><h3>案例7<a class=\"headerlink\" href=\"#header-n88\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开文件<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>，一起来实现【案例7】，当数据集以横向形式时，如果查询到需要的数据</p>\r\n<p>在C2单元格中输入如下公式</p>\r\n<p><strong>=XLOOKUP(B6,B2:L2,B1:L1)</strong></p>\r\n<p>细心的同学发现，横向数据的查询方法与纵向数据并无太大区别</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/6.8.gif\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n94\">\r\n<span id=\"id12\"></span><h2>练习<a class=\"headerlink\" href=\"#header-n94\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>中的【案例1-4】</p>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap7.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第七章 Excel函数-动态函数 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第八章Excel数据可视化\" href=\"chap8.html\" />\r\n    <link rel=\"prev\" title=\"第六章 Excel函数-查找函数\" href=\"chap6.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#filter\">\r\n   1.FILTER函数\r\n  </a>\r\n  <ul class=\"nav section-nav flex-column\">\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n107\">\r\n     案例1\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n114\">\r\n     案例2\r\n    </a>\r\n   </li>\r\n   <li class=\"toc-h3 nav-item toc-entry\">\r\n    <a class=\"reference internal nav-link\" href=\"#header-n123\">\r\n     案例3\r\n    </a>\r\n   </li>\r\n  </ul>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#subtotal\">\r\n   2.SUBTOTAL函数\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id4\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<span id=\"header-n98\"></span><h1>第七章 Excel函数-动态函数<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<blockquote>\r\n<div><p>在本节中会讲解一些Excel更新的动态函数，从而帮助大家更好的掌握Excel的数据处理与分析</p>\r\n</div></blockquote>\r\n<div class=\"section\" id=\"filter\">\r\n<span id=\"header-n102\"></span><h2>1.FILTER函数<a class=\"headerlink\" href=\"#filter\" title=\"Permalink to this heading\">#</a></h2>\r\n<blockquote>\r\n<div><p>在工作中，我们需要根据指定的条件，将符合条件的所有记录从数据源表格式查找过来，一是可以用高级筛选。但高级筛选在查询下一个单位时\r\n，需要重新设置一次，很麻烦。二是用函数公式查询。典型的套路有：INDEX+SMALL+ROW、或者LOOKUP+COUNTIF+OFFSET，而这样的方法对初学者非常不友好，而EXCEL新更新的感受FILTER可以很好的解决这个问题。</p>\r\n</div></blockquote>\r\n<p>【FILTER】函数=FILTER（数据区域，筛选条件，[无满足条件的记录时返回的值]）</p>\r\n<p>接下来就看看FILTER的实际应用案例</p>\r\n<div class=\"section\" id=\"header-n107\">\r\n<span id=\"id1\"></span><h3>案例1<a class=\"headerlink\" href=\"#header-n107\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap7/7.1xlsx</span></code>中的【案例1】</p>\r\n<p>获得湖北区的相关数据</p>\r\n<p>在J2单元格中输入</p>\r\n<p><strong>=FILTER(A2:G30,C2:C30=”湖北区”)</strong> 注意数据区域不包含标题</p>\r\n<p>生成的数据的动态数组（WPS由于不兼容动态数组，稍微和Excel有点区别，会产生数据溢出的情况）</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/7.1.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n114\">\r\n<span id=\"id2\"></span><h3>案例2<a class=\"headerlink\" href=\"#header-n114\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap7/7.1xlsx</span></code>中的【案例1】</p>\r\n<p>如果在实际的任务中不需要所有的列，只需要其中的几行，那么应该怎么操作？</p>\r\n<p>可以在K2单元格中输入</p>\r\n<p><strong>=FILTER(F2:G30,C2:C30=”湖北区”)</strong></p>\r\n<p>细心的同学就发现了这里与7.1.1中的不同，如果需要返回其中的几行，只需要将数据区域修改为自己需要的区域即可</p>\r\n<p>现在需要知道湖北区的最大销售金额是多少</p>\r\n<p><strong>=MAX(FILTER(F2:F30,C2:C30=”湖北区”))</strong></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/7.2.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"header-n123\">\r\n<span id=\"id3\"></span><h3>案例3<a class=\"headerlink\" href=\"#header-n123\" title=\"Permalink to this heading\">#</a></h3>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap7/7.1xlsx</span></code>中的【案例1】</p>\r\n<p>FILTER函数中的多条件筛选，使用<code class=\"docutils literal notranslate\"><span class=\"pre\">+</span></code>来表示或，使用<code class=\"docutils literal notranslate\"><span class=\"pre\">*</span></code>表示且</p>\r\n<p>例如，需要计算湖北区、湖南区大最大销售金额，那么函数公式为</p>\r\n<p><strong>=MAX(FILTER(F2:F30,(C2:C30=”湖北区”)+(C2:C30=”湖南区”)))</strong></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/7.3.gif\" />\r\n</div>\r\n<p>例如，需要计算湖北区商品2的最大销售金额，那么函数公式为</p>\r\n<p><strong>=MAX(FILTER(F2:F30,(C2:C30=”湖北区”)*(D2:D30=”商品2”)))</strong></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/7.4.gif\" />\r\n</div>\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"subtotal\">\r\n<span id=\"header-n132\"></span><h2>2.SUBTOTAL函数<a class=\"headerlink\" href=\"#subtotal\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>Excel中有数据筛选非常好用，那么，如果想统计筛选后的结果应该怎么弄？例如想知道筛选后的销售总额</p>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap7/7.2xlsx</span></code>中的案例1，使用筛选选择不同的区，而SUM求和并没有变化</p>\r\n<p>如果想实现上述需求，可以使用【SUBTOTAL函数】</p>\r\n<p>【SUBTOTAL函数】=SUBTOTAL(功能函数,选择区域)</p>\r\n<p>功能函数</p>\r\n<p>数字 1-11 或 101-111，用于指定要为分类汇总使用的函数。 如果使用\r\n1-11，将包括手动隐藏的行，如果使用\r\n101-111，则排除手动隐藏的行；始终排除已筛选掉的单元格。详见附件1</p>\r\n<p>在J2单元格中输入如下公式</p>\r\n<p><strong>=SUBTOTAL(9,F2:F21)</strong></p>\r\n<p>可以看到SUBTOTAL对筛选的数据列进行正确的求和，而SUM无法跟随选择的数据列进行正确求和</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/7.5.gif\" />\r\n</div>\r\n<p>【附件1】</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/7.6.png\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id4\">\r\n<h2>练习<a class=\"headerlink\" href=\"#id4\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap7/7.1xlsx</span></code>中的【案例1】计算河北区中商品1的最小销售额</p>\r\n<p>2.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap7/7.1xlsx</span></code>中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额</p>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap8.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第八章Excel数据可视化 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第九章Excel数据透视\" href=\"chap9.html\" />\r\n    <link rel=\"prev\" title=\"第七章 Excel函数-动态函数\" href=\"chap7.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id1\">\r\n   1.条形图\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id2\">\r\n   2.条件单元格格式\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id3\">\r\n   3.迷你图\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id4\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<h1>第八章Excel数据可视化<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<blockquote>\r\n<div><p>对于Excel中的数据可视化，相信各位读者应该能很熟练的使用，使用Excel汇总各种类型图，包括柱状图、折线图等等，从而让数据进行图形化展示。基于此，本节中对Excel中的数据作图部分不做展开讲解，本节更加偏重于讲解另一类辅助数据可视化的部分。</p>\r\n</div></blockquote>\r\n<div class=\"section\" id=\"id1\">\r\n<h2>1.条形图<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap8/8.1xlsx</span></code>中的【案例1】，现在有湖北区2022/01/01的不同商品的销售额，怎么更加直观的展示销售额之间的差别呢？</p>\r\n<p>这里可以使用条形图对销售的金额进展可视化展示</p>\r\n<p>选择【开始】–&gt;【条件格式】–&gt;【数据条】</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/8.1.gif\" />\r\n</div>\r\n<p>通过对销售金额进行数据条的填充，读者可以很快锁定湖北区2022/01/01销售额中，韩闲具有最高销售额为9442</p>\r\n<p>如果只想显示条形图，不想显示金额应该如果操作？</p>\r\n<p>选择条形图区域—&gt;条件格式—&gt;管理规则</p>\r\n<p>打开管理规则后可以看到，选择设置的规则，点击编辑规则</p>\r\n<p>选择仅显示数据条，当然可以在颜色的地方选择自己喜欢的颜色</p>\r\n<p>选择之后得到如下效果</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/8.2.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id2\">\r\n<h2>2.条件单元格格式<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap8/8.2xlsx</span></code>，现在有不同业务员向客户推销商品的相关信息，现在需要将截止日期还没有过今天的标注出来，应该如何操作？</p>\r\n<p>EXCEL中【TODAY】函数可以获得当前日期</p>\r\n<p>这里，可以使用Excel中的条件格式进行自动识别</p>\r\n<p>1.选择需要设置条件的列；</p>\r\n<p>2.选择条件格式；</p>\r\n<p>3.选择新建规则</p>\r\n<p>这里选择使用公式确定要设置格式的单元格</p>\r\n<p>因为选择的区域为B2:B10\r\n因此输入的公式满足B2要求，剩余的单元格会自动填充，因此输入的公式为</p>\r\n<p><strong>=B2&gt;TODAY()</strong></p>\r\n<p>接下来设置单元格的格式，在本节示范中选择对满足条件的单元格填充为黄色，得到如下效果图</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/8.3.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id3\">\r\n<h2>3.迷你图<a class=\"headerlink\" href=\"#id3\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap8/8.3.xlsx</span></code>中原始数据，现在知道不同业务员1-12月的销售额，且销售额最差月份以及业务员的销售额的变化趋势，应该怎么操作？</p>\r\n<p>1.确定销售额最差月份</p>\r\n<p>这里可以使用XLOOKUP公式，具体公式为</p>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">=XLOOKUP(MIN(B2:M2),B2:M2,$B$1:$M$1)</span></code></p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/8.4.gif\" />\r\n</div>\r\n<p>2.在B2插入新的单元格，命名为趋势图</p>\r\n<p>点击插入，找到迷你图部分，选择折线，数据范围选择为C2:N13，防止迷你图的位置选择在B2:B13单元格</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/8.5.gif\" />\r\n</div>\r\n<p>生成迷你图后，可以在显示处，调整迷你图显示的重要点，这里显示折线中的最低点，通过图中可以看到，蔡勇仁的销售业绩趋势是不断下降，而江宁寒的销售业绩不断上升，迷你图能够很好的展示原数据与数据变化的趋势情况</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/8.6.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id4\">\r\n<h2>练习<a class=\"headerlink\" href=\"#id4\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap8/8.2.xlsx</span></code>工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充</p>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/chap9.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>第九章Excel数据透视 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第十章Excel看板\" href=\"chap10.html\" />\r\n    <link rel=\"prev\" title=\"第八章Excel数据可视化\" href=\"chap8.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"current nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1 current active\">\r\n  <a class=\"current reference internal\" href=\"#\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id1\">\r\n   1.Excel数据透视表\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id2\">\r\n   2.Excel数据透视图\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id3\">\r\n   练习\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"excel\">\r\n<h1>第九章Excel数据透视<a class=\"headerlink\" href=\"#excel\" title=\"Permalink to this heading\">#</a></h1>\r\n<blockquote>\r\n<div><p>数据透视是Excel中个强大的数据处理和分析工具，能够快速实现数据的汇总与统计分析，本节重点讲解Excel数据透视的相关操作</p>\r\n</div></blockquote>\r\n<div class=\"section\" id=\"id1\">\r\n<h2>1.Excel数据透视表<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap9/9.1.xlsx</span></code>中的数据源，现在对数据源进行数据透视</p>\r\n<p>1.选择插入</p>\r\n<p>2.选择数据透视表</p>\r\n<p>3.选择表格区域</p>\r\n<p>4.选择数据透视表放置的位置</p>\r\n<p>可以看到，在新的数据表中出现了数据透视表</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/9.1.gif\" />\r\n</div>\r\n<p>例如，想知道不同月份的不同区域销售金额统计情况，可以将区域置于列，月置于行，金额的求和项置于值，即可得到不同区域不同月份的销售金额之和</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/9.2.gif\" />\r\n</div>\r\n<p>如果又想知道不同店员的销售额怎么办呢？</p>\r\n<p>1.点击数据透视表分析</p>\r\n<p>2.点击插入切片器</p>\r\n<p>3.选择插片器的字段</p>\r\n<p>点击不同的店员，可以直接统计该店员的销售额，这里的插片器相当于直接筛选店员的数据做统计。如果想统计多个店员的数据，可以点击切片器的多选项，可以同时统计多个店员的数据。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/9.3.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id2\">\r\n<h2>2.Excel数据透视图<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap9/9.1.xlsx</span></code>中的数据源，现在对数据源进行数据透视图</p>\r\n<p>1.选择插入</p>\r\n<p>2.选择数据透视图</p>\r\n<p>3.选择创建数据透视图，选择数据源作为数据区域</p>\r\n<p>4.选择新工作表</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/9.5.gif\" />\r\n</div>\r\n<p>选择月为类别，选择区域为图例，选择金额求和作为值，得到如下透视图</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/9.6.gif\" />\r\n</div>\r\n<p>如果，想切换透视图的类型，可以选择不同的图像类型，例如我们想知道不同月份销售的变化趋势，可以选择为折线图</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/9.7.gif\" />\r\n</div>\r\n<p>当然数据透视图也支持插片器，同样是选择店员作为切片的条件</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"../_images/9.8.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id3\">\r\n<h2>练习<a class=\"headerlink\" href=\"#id3\" title=\"Permalink to this heading\">#</a></h2>\r\n<p>1.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap9/9.1.xlsx</span></code>工作簿中的【数据源】绘制不同的透视图</p>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Content/index.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>教程 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"../_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"../_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"../_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"../\" id=\"documentation_options\" src=\"../_static/documentation_options.js\"></script>\r\n    <script src=\"../_static/jquery.js\"></script>\r\n    <script src=\"../_static/underscore.js\"></script>\r\n    <script src=\"../_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"../_static/doctools.js\"></script>\r\n    <script src=\"../_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"../_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"../genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"../search.html\" />\r\n    <link rel=\"next\" title=\"第一章 Excel与数据格式\" href=\"chap1.html\" />\r\n    <link rel=\"prev\" title=\"主页\" href=\"../%E4%B8%BB%E9%A1%B5.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"../index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"../_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"current reference internal nav-link\" href=\"#\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"../%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"../search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    <ul class=\"nav bd-sidenav\">\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap1.html\">\r\n   第一章 Excel与数据格式\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap2.html\">\r\n   第二章 Excel的快捷操作\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap3.html\">\r\n   第三章 Excel的表合并\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap4.html\">\r\n   第四章 Excel函数-逻辑判断\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap5.html\">\r\n   第五章 Excel函数-文本函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap6.html\">\r\n   第六章 Excel函数-查找函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap7.html\">\r\n   第七章 Excel函数-动态函数\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap8.html\">\r\n   第八章Excel数据可视化\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap9.html\">\r\n   第九章Excel数据透视\r\n  </a>\r\n </li>\r\n <li class=\"toctree-l1\">\r\n  <a class=\"reference internal\" href=\"chap10.html\">\r\n   第十章Excel看板\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n\r\n<nav id=\"bd-toc-nav\">\r\n    \r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"id1\">\r\n<h1>教程<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h1>\r\n<div class=\"toctree-wrapper compound\">\r\n<ul>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap1.html\">第一章 Excel与数据格式</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap1.html#id1\">1.数据缘何而来</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap1.html#id4\">2.Excel数据格式</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap1.html#id16\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap2.html\">第二章 Excel的快捷操作</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap2.html#header-n2\">1.Excel快捷操作简介</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap2.html#header-n3\">2.Excel快捷操作实践</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap2.html#header-n167\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap3.html\">第三章 Excel的表合并</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap3.html#header-n4\">1.多表行合并</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap3.html#header-n19\">2.多表列合并</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap3.html#header-n23\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap4.html\">第四章 Excel函数-逻辑判断</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap4.html#if\">1.if函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap4.html#ifs\">2.ifs函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap4.html#sumif\">3.sumif函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap4.html#countifs\">4.countifs函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap4.html#header-n78\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap5.html\">第五章 Excel函数-文本函数</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap5.html#text\">1.Text函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap5.html#mid\">2.mid函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap5.html#replace\">3.replace函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap5.html#id4\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap6.html\">第六章 Excel函数-查找函数</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap6.html#vlookup\">1.VLOOKUP</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap6.html#xlookup\">2 XLOOKUP</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap6.html#header-n94\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap7.html\">第七章 Excel函数-动态函数</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap7.html#filter\">1.FILTER函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap7.html#subtotal\">2.SUBTOTAL函数</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap7.html#id4\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap8.html\">第八章Excel数据可视化</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap8.html#id1\">1.条形图</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap8.html#id2\">2.条件单元格格式</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap8.html#id3\">3.迷你图</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap8.html#id4\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap9.html\">第九章Excel数据透视</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap9.html#id1\">1.Excel数据透视表</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap9.html#id2\">2.Excel数据透视图</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap9.html#id3\">练习</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap10.html\">第十章Excel看板</a><ul>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap10.html#id1\">1.业务背景</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap10.html#id2\">2.实现分析</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap10.html#id3\">3.实现过程</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap10.html#id9\">练习</a></li>\r\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"chap10.html#id10\">思考</a></li>\r\n</ul>\r\n</li>\r\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"chap10.html#id11\">后记</a></li>\r\n</ul>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"../_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/Datawhale.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>Datawhale &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"./\" id=\"documentation_options\" src=\"_static/documentation_options.js\"></script>\r\n    <script src=\"_static/jquery.js\"></script>\r\n    <script src=\"_static/underscore.js\"></script>\r\n    <script src=\"_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"_static/doctools.js\"></script>\r\n    <script src=\"_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"search.html\" />\r\n    <link rel=\"next\" title=\"练习题参考操作\" href=\"%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\" />\r\n    <link rel=\"prev\" title=\"作者\" href=\"%E4%BD%9C%E8%80%85.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Content/index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"current reference internal nav-link\" href=\"#\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    \r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id1\">\r\n   知乎\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id2\">\r\n   微信公众号\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"datawhale\">\r\n<h1>Datawhale<a class=\"headerlink\" href=\"#datawhale\" title=\"Permalink to this heading\">#</a></h1>\r\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">Datawhale</span></code> 是一个专注于 <code class=\"docutils literal notranslate\"><span class=\"pre\">AI</span></code> 领域的开源组织，希望构建对学习者最有价值的开源社区。</p>\r\n<p>作为一个由国内外各个高校的教授、学生、企业从业者等创建的开放式组织形态，抱有开源精神和探索精神，愿景：for the learner，和学习者一起成长。</p>\r\n<p>Datawhale官网：<a class=\"reference external\" href=\"https://datawhale.club/\">https://datawhale.club/</a></p>\r\n<div class=\"section\" id=\"id1\">\r\n<h2>知乎<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h2>\r\n<p><a class=\"reference external\" href=\"https://www.zhihu.com/people/datawhale2018\">https://www.zhihu.com/people/datawhale2018</a></p>\r\n</div>\r\n<div class=\"section\" id=\"id2\">\r\n<h2>微信公众号<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h2>\r\n<a class=\"reference internal image-reference\" href=\"_images/datawhale.jpg\"><img alt=\"_images/datawhale.jpg\" class=\"align-center\" src=\"_images/datawhale.jpg\" style=\"width: 336.0px; height: 388.0px;\" /></a>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/_sources/Content/chap1.rst.txt",
    "content": "\r\n\r\n第一章 Excel与数据格式\r\n======================\r\n\r\n\r\n\r\n1.数据缘何而来\r\n--------------\r\n\r\nExecel是我们常见的用来进行数据处理的工具，其中Excel文件主要包含有2种格式分别是\\ ``xls``\\ 或\\ ``xlsx``\\ ，\\ ``xls``\\ 和\\ ``xlsx``\\ 主要区别如下：\r\n\r\n.. figure:: ../_static/chap1/1.0.png\r\n   :alt: \r\n\r\n因此，推荐大家使用最新版本的Excel或者WPS进行相关的学习与操作。\r\n\r\n\r\n\r\n1.1 了解Excel\r\n~~~~~~~~~~~~~\r\n\r\nExcel文每个数据文件叫做工作簿，每个工作簿里面含有多个工作表，每个工作表里面的格子叫做单元格。\r\n\r\n在Excel中点击新建文档后，Excel默认的文档名称是工作簿1，也就是一个Excel文档，就是一个工作簿\r\n\r\n.. figure:: ../_static/chap1/1.1.png\r\n   :alt: \r\n\r\n在新建的工作簿中，可以看到左下方有\\ ``Sheet1``\\ 的标签，每个工作簿里面可以含有多个工作表，Excel表中最大支持255个工作表\r\n\r\n.. figure:: ../_static/chap1/1.2.png\r\n   :alt: \r\n\r\n单元格就是工作表中间每一个格子\r\n\r\n.. figure:: ../_static/chap1/1.3.png\r\n   :alt: \r\n\r\n在Excel最上方是工具栏，如果希望在Excel中导入第三方插件，可以点击\\ ``文件``-->\\ ``选项``-->\\ ``自定义功能区``\\ 点击右侧的√，即可导入相关模块\r\n\r\n.. figure:: ../_static/chap1/1.5.gif\r\n   :alt: \r\n\r\n\r\n\r\n1.2 Excel存储格式\r\n~~~~~~~~~~~~~~~~~\r\n\r\nExcel中的数据可以存储为不同的类型格式，其中常用的存储类似分别是xlsx、csv以及txt，一般情况下，csv文件采用是逗号分隔，txt文件采用的是制表符作为分隔，例如\\ ``data/chap1/Titanic_normal.csv``\\ 和\\ ``data/chap1/Titanic_tab.txt``\\ ，而在较为特殊的情况下，数据的分隔符合可能不是常规的分隔符合，例如\\ ``data/chap1/Titanic_special.txt``\\ ，使用记事本打开这个文件发现文件采用\\ ``|``\\ 作为分隔的符合，那么这样的文件如何使用Excel打开呢？\r\n\r\n.. figure:: ../_static/chap1/1.6.png\r\n   :alt: \r\n\r\n这里推荐大家使用以下的操作方案，操作路径为菜单栏选择：\\ **数据-->获取和转换数据-->从文件/CSV**\r\n\r\n.. figure:: ../_static/chap1/1.7.gif\r\n   :alt: \r\n\r\n\\ 点击\\ **加载**\\ 后可以看到我们导入的数据集，接着按快捷键\\ ``ctrl+s``\\ 保存工作簿到本地。\r\n\r\n   至此我们已经成功加载数据集到工作表当中，需要注意的是此时构建的数据表跟原始数据是存在连接关系，更改csv文件的数据后在点击路径：\\ **设计-外部表数据-刷新**\\ 后就可以更新工作表数据。如果要取消链接关系则点击路径：\\ **设计-外部数据表-取消链接**\\ 即可。\r\n\r\n\r\n\r\n2.Excel数据格式\r\n---------------\r\n\r\n\r\n\r\n2.1 单元格数据类型\r\n~~~~~~~~~~~~~~~~~~\r\n\r\n打开\\ ``data/chap1/2.1.xlsx``\\ 文件，点击【单元格数据类型】工作表，可以看到Excel有11种数据类型\r\n\r\n.. figure:: ../_static/chap1/2.1.png\r\n   :alt: \r\n\r\n在平时工作和学习中常见的数据类型有3种分别是数字、文本和日期，接下来就详细讲解这3种格式的相关应用\r\n\r\n\r\n\r\n2.1.1 数字\r\n^^^^^^^^^^\r\n\r\n数值是单元格最常见的数据之一，12位数的时候会以科学计数法显示。\r\n\r\n打开\\ ``data/chap1/2.1.xlsx``\\ 文件，点击【真假数字】工作表看到展示的是真假数值列，真数值默认情况下是右对齐（方便观测数据位数），假数值是数值型文本属于\\ **文本**\\ ，左上角会有个绿色三角错误检查，当数据是文本时，无法完成数字运算操作。\r\n\r\n.. figure:: ../_static/chap1/2.2.png\r\n   :alt: \r\n\r\nExcel会自带数据纠错功能，点击黄色感叹号可以看到，将文本转出数字，或者使用\\ ``=VALUE()``\\ 函数将文本转成数字\r\n\r\n.. figure:: ../_static/chap1/2.3.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.1.2 文本\r\n^^^^^^^^^^\r\n\r\n文本为Excel中的常见格式，主要为文本字符串，例如下图就是典型的文本数据。当数据是文本类型时就可以完成文本数据相关操作。\r\n\r\n.. figure:: ../_static/chap1/2.4.png\r\n   :alt: \r\n\r\n\r\n\r\n2.1.3 日期\r\n^^^^^^^^^^\r\n\r\nExcel中的标准日期由年月日组成的数据，例如\\ ``2021/1/1``\\ ，同时日期又是很特殊的数值，在Excel里面日期最早是1900年1月1日，对应的数值为1，通过两日期相减可以得到日期相差的天数。需要注意的是如果是\\ ``2021-01-01``\\ 的数据就要看是否实际数据为\\ ``'2021/1/1'``\\ ，否则为文本型日期，需要进行转换才行。观察下图真假日期，可以发现真日期右对齐，假日期左对齐（内容跟显示的一致），真日期转格式可以看到单元格数据仍然是真日期格式（内容跟显示不一致）。\r\n\r\n.. figure:: ../_static/chap1/2.5.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.2 单元格格式\r\n~~~~~~~~~~~~~~\r\n\r\n设置单元格格式可以点击单元格后，\\ **右键-设置单元格格式**\\ 选项，或者按快捷键\\ **ctrl+1**\\ ，或者通过工具栏：\\ **开始-数字**\\ 去快速做更改。单元格可以设置的格式类型包括：\r\n\r\n-  数字：调整数值格式或者日期格式。\r\n\r\n-  对齐：调整对齐方式。\r\n\r\n-  字体：更改字体、字型、字号等。\r\n\r\n-  边框：单元格边框设置。\r\n\r\n-  填充：填充单元格背景颜色，标注数据经常使用。\r\n\r\n-  保护：锁定单元格或者隐藏公式。\r\n\r\n\r\n\r\n2.2.1 数值格式\r\n^^^^^^^^^^^^^^\r\n\r\n设置单元格格式分类选择数值，对数值设置小数点一般保留两位，同时能让数值对齐，使用千分位分隔符能更容易观察数值大小。\r\n\r\n\r\n\r\n2.2.2 文本格式\r\n^^^^^^^^^^^^^^\r\n\r\n文本常见的设置格式用于对文本进行加单引号、双引号或者逗号的情况。\r\n\r\n例如对真假日期中的假日期增加单引号\r\n\r\n.. figure:: ../_static/chap1/2.7.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.2.3 日期格式\r\n^^^^^^^^^^^^^^\r\n\r\n通过日期分类调整日期格式为年-月-日，需要注意的是文本型的日期格式无法调整，而数值是可以调整为日期。\r\n\r\n.. figure:: ../_static/chap1/2.8.png\r\n   :alt: \r\n\r\n\r\n\r\n2.3 转换单元格数据\r\n~~~~~~~~~~~~~~~~~~\r\n\r\n\r\n\r\n2.3.1 数值和文本相互转换\r\n^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n打开\\ ``data/chap1/2.1.xlsx``\\ ，将数值转换成文本\r\n\r\n.. figure:: ../_static/chap1/2.9.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.3.2 日期和文本相互转换\r\n^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n打开\\ ``data/chap1/2.1.xlsx``\\ ，将不规范日期转成规范日期，然后转成文本\r\n\r\n.. figure:: ../_static/chap1/2.10.gif\r\n   :alt: \r\n\r\n\r\n\r\n练习\r\n----\r\n\r\n1. 使用Excel数据导入功能，完成\\ ``data/chap1/Titanic_normal.csv``\\ 和\\ ``data/chap1/Titanic_train.txt``\\ 数据导入\r\n\r\n2. 完成\\ ``data/chap1/2.1.xlsx``\\ 中案例1-4中的问题\r\n\r\n\r\n"
  },
  {
    "path": "docs/_sources/Content/chap10.rst.txt",
    "content": "\r\n\r\n第十章Excel看板\r\n===============\r\n\r\n   数据看板作为数据动态展示的一种重要方式，被广泛的应用于各个领域，因此本节根据1个案例讲解使用Excel制作数据看板的过程，以期起到抛砖引玉的效果，在学习技能的同时也将其应用到实践的工作中\r\n\r\n\r\n\r\n1.业务背景\r\n----------------------\r\n\r\n打开\\ ``data/chap10/10.1.xlsx``\\ 中的数据源，这是某厂家在淘宝、拼多多、京东这3个电商销售平台的销售数据，现在你是这个厂家的员工，老板想知道商品在不同渠道的每周销售情况，想请你做一个数据周报看板。\r\n\r\n.. figure:: ../_static/chap10/10.1.png\r\n   :alt: \r\n\r\n\r\n\r\n2.实现分析\r\n----------------------\r\n\r\n1.既然是周报看板，需要确定每天日期所在周数与每周的第几天\r\n\r\n2.根据确定周数对销售金额进行汇总\r\n\r\n3.对销售金额进行动态展示\r\n\r\n\r\n\r\n3.实现过程\r\n----------------------\r\n\r\n\r\n\r\n1.确定周数\r\n~~~~~~~~~~~\r\n\r\n确定日期所在的周数用【WEEKNUM函数】，确定日期是第几周可以用【WEEKDAY函数】\r\n\r\n在H2单元格输入 **=WEEKNUM(B2,2)**\r\n\r\n在I2单元格输入 **=WEEKDAY(B2,11)** （如果想得到中文星期几 可以输入\r\n=TEXT(B2,\"aaaa\")）\r\n\r\n.. figure:: ../_static/chap10/10.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.销售基础整理\r\n~~~~~~~~~~~\r\n\r\n新建1个工作表，确定动态数据的变量为周数，并确定需要计算的指标，本周开始日期、介绍日期、销售额、订单数、上周销售额、上周订单数、销售额变化、订单数变化\r\n\r\n使用公式求解相关的基础数据\r\n\r\n在C3单元格输入公式\\ ``=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001)``\r\n\r\n如果发现数据日期变成了44200，显然就是格式不正确，只需要将单元格的格式转为日期即可\r\n\r\n.. figure:: ../_static/chap10/10.3.gif\r\n   :alt: \r\n\r\n在C4单元格输入公式\\ ``=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001,0,0,-1)``\r\n\r\n.. figure:: ../_static/chap10/10.4.gif\r\n   :alt: \r\n\r\n对于本周的销售额，可以使用SUMIFS函数获得 ，在C5单元格中输入\r\n\r\n``=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)``\r\n\r\n.. figure:: ../_static/chap10/10.5.gif\r\n   :alt: \r\n\r\n对于本周的订单数，可以使用COUNTIFS函数获得 ，在C6单元格中输入\r\n\r\n``=COUNTIFS(数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)``\r\n\r\n.. figure:: ../_static/chap10/10.6.gif\r\n   :alt: \r\n\r\n对于上周开始日期，可以使用本周开始日期-7，在E3单元格中输入\r\n\r\n``=C3-7``\r\n\r\n对于上周结束日期，可以使用本周结束日期-7，在E4单元格中输入\r\n\r\n``=C4-7``\r\n\r\n对于上周销售额，可以使用SUMIFS函数获得 ，在E5单元格中输入\r\n\r\n``=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$E$3,数据源!$B:$B,\"<=\"&$E$4)``\r\n\r\n对于上周的订单数，可以使用COUNTIFS函数获得 ，在E6单元格中输入\r\n\r\n``=COUNTIFS(数据源!$B:$B,\">=\"&$E$3,数据源!$B:$B,\"<=\"&$E$4)``\r\n\r\n.. figure:: ../_static/chap10/10.7.gif\r\n   :alt: \r\n\r\n对于相比上周销售额变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C7单元格中输入\r\n\r\n``=TEXT(((C5-E5)/E5)*100,\"0.00\")&\"%\"``\r\n\r\n对于相比上周订单数变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C8单元格中输入\r\n\r\n``=TEXT(((C6-E6)/E6)*100,\"0.00\")&\"%\"``\r\n\r\n当然也可以直接设置单元格格式为【百分比】\r\n\r\n.. figure:: ../_static/chap10/10.8.gif\r\n   :alt: \r\n\r\n当然这个【相比上周销售额变化】指标是一个比较重要的指标，可以对这个指标进行格式设置\r\n\r\n选择C6单元格并设置条件格式，判断C5单元格与E5单元格值的大小，如果C5>=E5，那么C6单元值为红，否则为绿色\r\n\r\n.. figure:: ../_static/chap10/10.9.gif\r\n   :alt: \r\n\r\n\r\n\r\n3.周销售数据变化趋势\r\n~~~~~~~~~~~\r\n\r\n对于每周的数据需要做一个统计，并对每周数据的下单金额与下单数进行整理\r\n\r\n装B13-B19单元格输入星期数\r\n\r\n现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式\r\n\r\n``=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4,数据源!$I:$I,\"=\"&'计算过程'!B13)``\r\n\r\n现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式\r\n\r\n``=COUNTIFS(数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4,数据源!$I:$I,\"=\"&'计算过程'!B13)``\r\n\r\n.. figure:: ../_static/chap10/10.10.gif\r\n   :alt: \r\n\r\n接下来就对数据进行可视化展示\r\n\r\n.. figure:: ../_static/chap10/10.11.gif\r\n   :alt: \r\n\r\n\r\n\r\n4.周销售渠道整理\r\n~~~~~~~~~~~\r\n\r\n对于每周的数据需要做一个统计，并对每周数据的渠道分布进行整理\r\n\r\n装G3-G6单元格分别输入产品的电商渠道京东、拼多多、淘宝\r\n\r\n在H3单元格中输入SUMIFS函数求不同渠道的销售金额，并进行向下填充\r\n\r\n``=SUMIFS(数据源!$F:$F,数据源!$E:$E,G3,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)``\r\n\r\n在I3单元格中输入COUNTIF函数求不同渠道的下单数，并进行向下填充\r\n\r\n``=COUNTIFS(数据源!$E:$E,G3,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)``\r\n\r\n.. figure:: ../_static/chap10/10.12.gif\r\n   :alt: \r\n\r\n接下来就对数据进行可视化展示，将图片进行简单的美化，就可以得到下单金额饼状图与下单数的柱状图\r\n\r\n.. figure:: ../_static/chap10/10.13.gif\r\n   :alt: \r\n\r\n\r\n\r\n5.看板绘制\r\n~~~~~~~~~~~\r\n\r\n完成了前面的全部计算后，接下来的工作就是将绘制的图结合在一起进行展示\r\n\r\n首先是上述计算的数据与绘图的信息集合到一起\r\n\r\n.. figure:: ../_static/chap10/10.13.png\r\n   :alt: \r\n\r\n其中本周的总销量、本周订单数、当前周数、开始日期以及结束日期都是引用计算过程中的值\r\n\r\n本周总销量的值为\\ ``=计算过程!$C$5``\r\n\r\n本周总订单的值为\\ ``=计算过程!$C$6``\r\n\r\n本周周数的值为\\ ``=计算过程!$C$2``\r\n\r\n本周的开始日期为\\ ``=计算过程!$C$3``\r\n\r\n本周的结束日期为\\ ``=计算过程!$C$4``\r\n\r\n因为本周的变化情况带有条件单元格式，因此不能直接引用，需要将其转化成链接图片的形式，具体操作为\r\n\r\n1.复制C7单元格\r\n\r\n2.粘贴选择链接的图片\r\n\r\n.. figure:: ../_static/chap10/10.14.png\r\n   :alt: \r\n\r\n对于本周的周数，需要设置按钮方便调节\r\n\r\n1.选择开发工具\r\n\r\n2.选择插入，选择数值调节按钮\r\n\r\n3.选择设置控件格式\r\n\r\n4.设置控件的对应参数\r\n\r\n.. figure:: ../_static/chap10/10.15.png\r\n   :alt: \r\n\r\n到这里就完成了看板90%的步骤，点击按钮，能看动态展示看板的相关数据\r\n\r\n.. figure:: ../_static/chap10/10.16.png\r\n   :alt: \r\n\r\n最后就对看板进行相应的美化，在看板美化过程中也参考了其他EXCEL教程中的配色，因此最后的看板展示效果为\r\n\r\n.. figure:: ../_static/chap10/10.17.png\r\n   :alt: \r\n\r\n练习\r\n----\r\n1.完成数据看板，需要通过按钮调节周数，同时销售额，订单数以及数据图进行变化\r\n\r\n思考\r\n----\r\n\r\n1.为什么每周的介绍日期和开始日期都可以使用XLOOKUP获得\r\n\r\n2.为什么每周1的下单金额之和可以通过SUMIF函数求\r\n\r\n3.为什么设置按钮调节每周的数据变化，这样有什么好处\r\n\r\n\r\n\r\n后记\r\n====\r\n\r\n行文至此，以上就是Free-excel教程的全部内容，整个教程的编写过程中也广泛的参阅了各式各样的Excel教程，尽力让本教程变得轻松易学，希望读者能掌握相关的Excel技巧，并能灵活的运用到工作中，面对数字化社会，数据将渗透到生活的点点滴滴，拥抱数字，同时也拥抱变化。\r\n\r\n--作者：牧小熊，Datawhale成员，数据分析师\r\n"
  },
  {
    "path": "docs/_sources/Content/chap2.rst.txt",
    "content": ".. _header-n0:\r\n\r\n第二章 Excel的快捷操作\r\n======================\r\n\r\n   在本节中我们将了解Excel中的各种快捷操作，目前已知的Excel快捷操作键有230个，本篇重点介绍那些常用的Excel快捷操作键。\r\n\r\n.. _header-n2:\r\n\r\n1.Excel快捷操作简介\r\n-------------------\r\n\r\n.. _header-n9:\r\n\r\n1.1文件相关\r\n~~~~~~~~~~~\r\n\r\n-  ``Ctrl`` + ``N`` 创建一个新的Excel工作簿\r\n\r\n-  ``Ctrl`` + ``w`` 关闭当前工作簿\r\n\r\n-  ``Ctrl`` + ``S`` 保存当前的Excel工作簿\r\n\r\n-  ``F12`` 将当前文件进行另存为\r\n\r\n-  ``Ctrl`` + ``p`` 打印当前工作表\r\n\r\n.. _header-n29:\r\n\r\n1.2通用快捷键\r\n~~~~~~~~~~~~~\r\n\r\n-  ``Ctrl`` + ``z`` 撤销当前操作\r\n\r\n-  ``Ctrl`` + ``Y`` 恢复撤销，可以用这个快捷键恢复被撤消的操作\r\n\r\n-  ``Ctrl`` + ``C`` 复制所选单元格\r\n\r\n-  ``Ctrl`` + ``x`` 剪切所选单元格\r\n\r\n-  ``Ctrl`` + ``v`` 粘贴所选单元格\r\n\r\n-  ``Ctrl`` + ``F`` 弹出查找和替换对话框\r\n\r\n-  ``Ctrl`` + ``G`` 显示定位对话框\r\n\r\n.. _header-n50:\r\n\r\n1.3表格选择\r\n~~~~~~~~~~~\r\n\r\n-  ``Ctrl`` + ``A`` 全选表格\r\n\r\n-  ``Ctrl`` + ``→`` 移动到数据区域的右边缘\r\n\r\n-  ``Ctrl`` + ``←`` 移动到数据区域的左边缘\r\n\r\n-  ``Ctrl`` + ``↑`` 移动到数据区域的上边缘\r\n\r\n-  ``Ctrl`` + ``↓`` 移动到数据区域的下边缘\r\n\r\n.. _header-n72:\r\n\r\n1.4单元格编辑\r\n~~~~~~~~~~~~~\r\n\r\n-  ``F2`` 编辑当前单元格（跟双击单元格效果一致）\r\n\r\n-  ``Alt`` + ``Enter`` 在当前单元格内换行 (直接按\r\n   ``Enter``\\ 会跳转到下一行)\r\n\r\n-  ``Enter`` 下移一个单元格\r\n\r\n-  ``Shift`` + ``Enter`` 上移一个单元格\r\n\r\n-  ``Tab`` 右移一个单元格\r\n\r\n-  ``Shift`` + ``Tab`` 左移一个单元格\r\n\r\n-  ``Ctrl`` + ``Enter`` 输入完成，并停留在当前单元格\r\n\r\n-  ``Ctrl`` + ``;``\\ （分号） 输入当前日期（显示为年/月/日）\r\n\r\n-  ``Ctrl`` +\\ ``Shift`` + ``:`` 输入当前时间 (显示为小时/分钟)\r\n\r\n-  ``Ctrl`` + ``E`` 快速填充\r\n\r\n.. _header-n99:\r\n\r\n1.5Excel格式化\r\n~~~~~~~~~~~~~~\r\n\r\n-  ``Ctrl`` + ``1``\\ （数字1） 设置单元格格式\r\n\r\n-  ``Ctrl`` + ``B`` 加粗或取消加粗\r\n\r\n-  ``Ctrl`` + ``i`` 加斜体或取消斜体\r\n\r\n.. _header-n116:\r\n\r\n1.6Excel公式\r\n~~~~~~~~~~~~\r\n\r\n-  ``F4`` 绝对引用和相对引用切换\r\n\r\n-  ``Alt``\\ +\\ ``=`` 自动插入求和公式\r\n\r\n.. _header-n3:\r\n\r\n2.Excel快捷操作实践\r\n-------------------\r\n\r\n.. _header-n126:\r\n\r\n2.1自动插入求和公式\r\n~~~~~~~~~~~~~~~~~~~\r\n\r\n打开文件\\ ``data/chap2/2.1.xlsx``\\ ，点击【案例1】\r\n\r\n1.选中案例1中的表格区域（\\ **注意这里要把汇总的那一行也选上**\\ ）\r\n\r\n2.使用快捷键\\ ``Alt``\\ +\\ ``=``\r\n，自动插入求和公式，可以看到，对上述的Excel表格区域进行自动求和。\r\n\r\n.. figure:: ../_static/chap2/2.1.gif\r\n   :alt: \r\n\r\n.. _header-n4:\r\n\r\n2.2自动进行列差异比对\r\n~~~~~~~~~~~~~~~~~~~~~\r\n\r\n打开文件\\ ``data/chap2/2.2.xlsx``\\ ，点击【案例1】，我们现在的任务是找到1月和2月客户数不同的区域，如何快速定位？\r\n\r\n1.选中需要进行列差异比对的区域，注意选择顺序从左往右\r\n\r\n2.使用快捷键\\ ``ctrl``\\ +\\ ``\\``\r\n(**注意不是\"/\"**)，可以快速定位到区域4、区域8以及区域10所对应的客户数不同\r\n\r\n3.选择填充颜色，即可快速显示两列的差异\r\n\r\n注意这里的选择方向，从右往左选择，那么默认最右边为参考标准，其他列的数据可参考标准比较，如果从左往右选择，那最左边就是参考标准，其他的操作同上。\r\n\r\n.. figure:: ../_static/chap2/2.2.gif\r\n   :alt: \r\n\r\n.. _header-n137:\r\n\r\n2.3自动填充\r\n~~~~~~~~~~~\r\n\r\n在excel中很多重复、繁琐的工作由数据提取和数据合并这类问题造成，\\ **2013年以后的Excel**\\ 支持智能填充，能灵活的解决这类问题。需要注意的是，自动填充的数据需要是同一个规范数据才可以完成自动填充。\r\n\r\n打开文件\\ ``data/chap2/2.3.xlsx``\\ ，点击【案例1】，需要提取客户的手机号\r\n\r\n1.手动提取客户1的手机号，并输入到【B2】\r\n\r\n2.选择需要快速填充的列，也就是【B2-B11】\r\n\r\n3.按\\ ``ctrl``\\ +\\ ``E``\\ 进行自动填充\r\n\r\n.. figure:: ../_static/chap2/2.3.gif\r\n   :alt: \r\n\r\n.. _header-n167:\r\n\r\n练习\r\n----\r\n\r\n1.完成\\ ``data/chap2/2.1.xlsx``\\ 工作簿中的【案例2】【案例3】的快捷键自动求和任务\r\n\r\n2.完成\\ ``data/chap2/2.2.xlsx``\\ 工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）\r\n\r\n3.完成\\ ``data/chap2/2.3.xlsx``\\ 工作簿中的【案例2】【案例3】【案例4】的填充任务\r\n"
  },
  {
    "path": "docs/_sources/Content/chap3.rst.txt",
    "content": ".. _header-n0:\r\n\r\n第三章 Excel的表合并\r\n====================\r\n\r\n   当遇到需要将多个表的行记录合并在一起的时候，我们一般会手动复制粘贴，这会带来很多重复繁琐的操作，并且容易出错，可以使用Excel的合并计算工具来快速完成。\r\n\r\n.. _header-n4:\r\n\r\n1.多表行合并\r\n------------\r\n\r\n打开文件\\ ``data/chap3/3.1.xlsx``\\ ，点击【案例1】可以看到有3个消费表格，每个客户的消费金额不同，现在需要你统计每个客户在消费的总金额。\r\n\r\n一般的操作方法是将这3个数据复制粘贴，那么有没有更加优雅的方法呢？这里推荐使用合并计算\r\n\r\n**1.选择需要汇总的单元格起点**\r\n\r\n**2.选择Excel中的数据栏**\r\n\r\n**3.找到数据栏中的合并计算块**\r\n\r\n**4.选择合并计算函数中的求和**\r\n\r\n**5.点击引用位置右侧的引用项**\r\n\r\n**6.选择第一个数据表所在的范围**\r\n\r\n**7.点击添加**\r\n\r\n**8.将3个数据表添加到所有引用位置**\r\n\r\n**9.选择标签位置信息**\r\n\r\n**10.点击完成**\r\n\r\n可以看到完成了所有客户消费金额的求和计算~\r\n\r\n.. figure:: ../_static/chap3/3.1.gif\r\n   :alt: \r\n\r\n.. _header-n19:\r\n\r\n2.多表列合并\r\n------------\r\n\r\n打开文件\\ ``data/chap3/3.1.xlsx``\\ ，点击【案例2】可以看到有3个不同的消费表格，每个客户的消费金额不同，现在需要你统计每个客户在3个不同消费的总金额。\r\n\r\n使用合并计算选择3个不同项目的数据区域\r\n\r\n.. figure:: ../_static/chap3/3.2.gif\r\n   :alt: \r\n\r\n.. _header-n23:\r\n\r\n练习\r\n----\r\n\r\n1.选择\\ ``data/chap3/3.1.xlsx``\\ 工作簿中的【案例1】得到不同客户的消费次数\r\n\r\n2.选择\\ ``data/chap3/3.1.xlsx``\\ 工作簿中的【案例2】得到不同客户的不同项目的消费次数\r\n"
  },
  {
    "path": "docs/_sources/Content/chap4.rst.txt",
    "content": ".. _header-n0:\r\n\r\n第四章 Excel函数-逻辑判断\r\n=========================\r\n\r\n   Excel中有着非常丰富的函数，这些函数能大幅度提升我们的工作效率，本节中会重点介绍一些常用的Excel函数。\r\n\r\n.. _header-n4:\r\n\r\n1.if函数\r\n--------\r\n\r\n打开文件\\ ``data/chap4/4.1.xlsx``\\ ，点击【案例1】，现在需要对客户的原始得分进行校正，当客户的原始得分为负时，校正为0\r\n\r\n针对上面遇到的问题，可以使用IF函数，Excel函数用法如下\r\n\r\n【IF函数】\\ **=IF(判断条件，如果满足则，如果不满足则)**\r\n\r\n针对遇到的问题，那么在C2单元格中输入\r\n\r\n**=IF(B2<0,0,B2)** ----> **注意，这里的逗号要使用英文的逗号**\r\n\r\n那么这个公式是什么意思呢？判断B2单元格是不是小于0，如果是，则C2单元格为0，如果不是则返回B2单元格的值，可以看到C2单元格实际返回值为0，这是因为B2的值为-1，满足判断条件，因此C2单元格返回为0\r\n\r\n那么如何进行公式批量填充呢？\r\n\r\n这里推荐一个比较优雅的方法\r\n\r\n1.在C2单元格写Excel公式\r\n\r\n2.选择需要填充公式的区域，包括C2单元格\r\n\r\n3.点击C2单元格，进入公式编辑状态\r\n\r\n4.使用快捷键\\ ``CTRL``\\ +\\ ``Enter``\\ 进行批量填充\r\n\r\n.. figure:: ../_static/chap4/4.1.gif\r\n   :alt: \r\n\r\n打开文件\\ ``data/chap4/4.1.xlsx``\\ ，点击【案例2】，现在有客户的1月、2月消费金额，如果客户2个月的消费金额都超过400，那么就认为这个客户为高消费客户。\r\n\r\n这里与5.1中的案例不同，需要IF函数与逻辑函数进行配合\r\n\r\n【AND函数】\\ **=AND(条件1，条件2，...)**\r\n\r\n【OR函数】\\ **=OR(条件，条件2，...)**\r\n\r\nAND函数，需要所有条件全部满足，才返还TRUE，OR函数，所有条件中只要有1个条件满足，就返还TRUE\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=IF(AND(B2>400,C2>400),\"高消费客户\",\"\")** -----> 这里\"\"代表返回空值\r\n\r\n随后对整列的函数进行填充，具体填充方法见5.1中详解\r\n\r\n.. figure:: ../_static/chap4/4.2.gif\r\n   :alt: \r\n\r\n.. _header-n27:\r\n\r\n2.ifs函数\r\n---------\r\n\r\n打开文件\\ ``data/chap4/4.1.xlsx``\\ ，点击【案例3】，有员工的相关考核分，考核得分在4.8分以上，优秀；考核得分在3.5-4.7分，良好；考核得分在0-3.4分，一般。\r\n\r\n这里可以使用IFS函数，具体用法为\r\n\r\n【IFS函数】=IFS(判断条件1,如果满足条件1则,判断条件2,如果满足条件2则)\r\n\r\n针对遇到的问题，则可以在C2单元格输入\r\n\r\n**=IFS(B3<=3.4,\"一般\",AND(B3>=3.5,B3<=4.7),\"良好\",B3>=4.8,\"优秀\")**\r\n\r\n对整列数据进行函数填充\r\n\r\n.. figure:: ../_static/chap4/4.3.gif\r\n   :alt: \r\n\r\n.. _header-n35:\r\n\r\n3.sumif函数\r\n-----------\r\n\r\n   在Excel数据任务处理中，会遇到大量的求和的任务，SUMIF函数在求和任务中具有天然优势，因此在本节中将详细的讲解SUMIF函数的相关用法\r\n\r\n【SUMIF函数】=SUMIF(条件区域，求和条件，[实际求和区域])\r\n--->实际求和区域位选择条件\r\n\r\n.. _header-n39:\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例1】现在有几名同学的考试成绩，现在想统计数学成绩在90分以上的成绩之和\r\n\r\n那么可以输入如下的函数公式\r\n\r\n**=SUMIF(B:B,\">=90\",B:B)**\r\n\r\n第一个参数为条件区域，因为要判断数学成绩，所以这里选择B列，当然这里也可以修改为实际的区域B2:B12\r\n\r\n第二个参数为判定条件，判定条件为大于等于90\r\n\r\n第三个参数为实际求和区，这是选填参数\r\n\r\n.. figure:: ../_static/chap4/4.4.gif\r\n   :alt: \r\n\r\n.. _header-n47:\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例2】，现在想统计小米系列的产品销售额\r\n\r\nSUMIF函数支持模糊匹配，因此我们输入如下公式\r\n\r\n**=SUMIF(B:B,\"小米*\",C:C)**\r\n\r\n使用小米*匹配所有的小米系产品\r\n\r\n.. figure:: ../_static/chap4/4.5.gif\r\n   :alt: \r\n\r\n.. _header-n53:\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例3】，现在想统计1月-3月的预计销售额预计销售和实际销售额\r\n\r\n因此可以巧用SUMIF函数，将条件区域进行横向选择，条件选择自己需要的字段，因此输入如下两个函数公式，并向下拖拽填充其他位置\r\n\r\n``=SUMIF($B$2:$G$2,I$2,B3:G3)``\r\n\r\n``=SUMIF($B$2:$G$2,H$2,B3:G3)``\r\n\r\n``$``\\ 在Excel中是绝对引用，公式中引用的单元格如果使用绝对引用\r\n``$``\\ ，那么向下拖拽的过程中，这个单元格不会增加。\r\n\r\n.. figure:: ../_static/chap4/4.6.png\r\n   :alt: \r\n\r\n例如，在J3单元格中输入\\ ``=C3``\\ ，在K3单元格中输入\\ ``=$C$3``\\ 并向下拖拽进行公式填充，观察区别\r\n\r\n发现，如果使用绝对引用，引用格式值并不会随着公式的拖拽而改变，这就是绝对引用与非绝对引用的区别。\r\n\r\n.. figure:: ../_static/chap4/4.7.gif\r\n   :alt: \r\n\r\n.. _header-n63:\r\n\r\n案例4\r\n~~~~~\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例4】，现在需要统计语文成绩在80分以上，90分以下同学的数学成绩之和\r\n\r\n那么遇到这种情况应该怎么处理呢？相比于前面的案例，这里有2个筛选条件，而SUMIF函数无法满足需求，这里可以使用SUMIFS函数\r\n\r\n【SUMIFS函数】=SUMIFS（条件区域1，条件1，条件区域2，条件2）\r\n\r\n因此写如下函数公式\r\n\r\n**=SUMIFS(C2:C13,B2:B13,\">80\",B2:B13,\"<90\")**\r\n\r\n因为要求数学成绩，所以第一个参数为C2:C13，而筛选条件为语文，因此条件区域为B2:B13\r\n\r\n.. figure:: ../_static/chap4/4.8.gif\r\n   :alt: \r\n\r\n.. _header-n71:\r\n\r\n4.countifs函数\r\n--------------\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例5】，现在需要统计语文成绩超过60，数学成绩超过65，英语成绩超过70的同学个数\r\n\r\n那么遇到这种情况应该怎么处理呢？其实countifs函数与sumifs函数用法非常接近，求满足所有条件的个数\r\n\r\n【COUNTIFS函数】=COUNTIFS（条件区域1，条件1，条件区域2，条件2）\r\n\r\n因此写如下函数公式\r\n\r\n**=COUNTIFS(B2:B13,\">60\",C2:C13,\">65\",D2:D13,\">70\")**\r\n\r\n.. figure:: ../_static/chap4/4.9.gif\r\n   :alt: \r\n\r\n.. _header-n78:\r\n\r\n练习\r\n----\r\n\r\n1.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例1】，将客户原始得分为1以下的校正为0\r\n\r\n2.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为\"高消费客户\"\r\n\r\n3.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的务。\r\n\r\n4.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例1】语文成绩在80分以上的同学成绩之和\r\n\r\n5.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例2】统计所有苹果系列产品的销售额\r\n\r\n6.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例6】完成所有手机的销售额求和\r\n"
  },
  {
    "path": "docs/_sources/Content/chap5.rst.txt",
    "content": "\r\n\r\n第五章 Excel函数-文本函数\r\n=========================\r\n\r\n\r\n\r\n1.Text函数\r\n----------\r\n\r\nText函数可以将数值转换为指定格式的文本，其语法格式为TEXT(value,format_text)\r\n\r\n【TEXT函数】=TEXT(值，自定义数字格式代码)\r\n\r\n\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开\\ ``data/chap5/5.1.xlsx``\\ ，点击【案例1】，将客户的消费日期和消费金额转成大写\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(C2,\"[DBNUM2]\")** ----> **注意，这里的逗号要使用英文的逗号**\r\n\r\n在E2单元格中输入\r\n\r\n**=TEXT(A2,\"[DBNUM1]yyyy年m月d日\")**\r\n\r\nDBNUM1和DBNUM2为2种常见的中文格式，一般金额用DBNUM2，日期用DBNUM1\r\n\r\n.. figure:: ../_static/chap5/5.1.gif\r\n   :alt: \r\n\r\n\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开\\ ``data/chap5/5.1.xlsx``\\ ，点击【案例2】，将客户的消费日期转换为周次，即星期几\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(A2,\"aaaa\")**\r\n\r\n.. figure:: ../_static/chap5/5.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开\\ ``data/chap5/5.1.xlsx``\\ ，点击【案例3】，取客户消费的年、月、日\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(A2,\"yyyy\")** 或者 **=TEXT(A2,\"e\")**\r\n\r\n在E2单元格中输入\r\n\r\n**=TEXT(A2,\"m\")** 或者 **=TEXT(A2,\"mm\")** 注意.这2种格式是有区别的\r\n\r\n在F2单元格中输入\r\n\r\n**=TEXT(A2,\"d\")** 或者 **=TEXT(A2,\"dd\")**\r\n\r\n.. figure:: ../_static/chap5/5.3.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.mid函数\r\n---------\r\n\r\n打开\\ ``data/chap5/5.2.xlsx``\\ ，点击【案例1】，提取身份证中的生日，并转换成2022年12月4日这种格式\r\n\r\n面对这个问题，可以使用mid函数提取生日\r\n\r\n【MID函数】=MID(text,start\\ *num,num*\\ chars)\r\n\r\ntest:为要提取的文本字符串\r\n\r\nstart_num:为文本中要提取的第一个字符串的位置\r\n\r\nnum_chars为提取字符串的长度\r\n\r\n因此可以在B2中输入 因为生日是8位数字，所以最后一个参数填8\r\n\r\n**=MID(A2,7,8)**\r\n\r\n在C2中输入格式化的生日\r\n\r\n**=TEXT(MID(A2,7,8),\"0000年00月00日\")**\r\n\r\n问题：这里TEXT函数格式为什么没有使用yyyy年mm月dd日 这种格式？\r\n\r\n因为MID(A2,7,8)提取出来的是文本，不是日期，因此Excel无法识别日期的年月，所以用数字格式进行代替\r\n\r\n.. figure:: ../_static/chap5/5.4.gif\r\n   :alt: \r\n\r\n文本提取中相似的函数有LEFT，RIGHT\r\n\r\nLEFT函数，以字符串左侧为起始位置，返回指定数量的字符\r\n\r\n【LEFT函数】=MID(text,,num_chars)\r\n\r\n text:要提取的字符串或单元格引用；\r\n num_chars:要提取的字符数量\r\n\r\nRIGHT函数，从字符串右侧首字符开始，从右向左提取指定的字符，其功能和LEFT函数完全一样，只是方向不同\r\n\r\n【RIGHT函数】=MID(text,num_chars)\r\n\r\n text:要提取的字符串或单元格引用；\r\n num_chars:要提取的字符数量\r\n\r\n\r\n\r\n3.replace函数\r\n-------------\r\n\r\n打开\\ ``data/chap5/5.2.xlsx``\\ ，点击【案例2】，现在需要将Excel表格打印，为了不泄露客户电话号码，需要将电话后5位进行屏蔽\r\n\r\nREPLACEI函数作用：把一个文本字符串，人为指定一个位置，用定个数新字符进行替换。\r\n\r\n【REPLACEI函数】=REPLACEI(old\\ *text,start*\\ num,num\\ *chars,new*\\ text)\r\n\r\nold_text:需要替换的文本\r\n\r\nstart_num:需要替换文本的开始位置\r\n\r\nnum_chars:替换文本的长度\r\n\r\nnew_text:替换内容\r\n\r\n因此可以在B2单元格中输入\r\n\r\n**=REPLACE(A2,11,5,\"#####\")**\r\n\r\n.. figure:: ../_static/chap5/5.5.gif\r\n   :alt: \r\n\r\n\r\n\r\n练习\r\n----\r\n\r\n1.完成\\ ``data/chap5/5.1.xlsx``\\ 工作簿中的【案例1-3】\r\n\r\n2.完成\\ ``data/chap5/5.2.xlsx``\\ 工作簿中的【案例1】中身份证后6位加密\r\n"
  },
  {
    "path": "docs/_sources/Content/chap6.rst.txt",
    "content": ".. _header-n0:\r\n\r\n第六章 Excel函数-查找函数\r\n=========================\r\n\r\n   VLOOKUP是经典的查找与引用函数，在Excel数据查询任务中有多种用途。XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，\\ **非常推荐大家使用XLOOKUP函数**\\ ，如果自己的电脑Excel不是最新版不支持XLOOKUP函数，也可以来学习VLOOKUP函数。\r\n\r\n..\r\n\r\n   在本节教程中会重点介绍XLOOKUP函数的相关用法，对于VLOOKUP不好解决，XLOOKUP能解决的问题放在了【案例5】、【案例6】、【案例7】\r\n\r\n.. _header-n6:\r\n\r\n1.VLOOKUP\r\n---------\r\n\r\n.. _header-n7:\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，点击【案例1】，根据岗位编号，得到该员工的应发工资\r\n\r\n针对这个问题，可以使用VLOOKUP函数\r\n\r\n【VLOOKUP函数】\\ **=VLOOKUP（要查找的值，查找区域，要返回的结果在查找区域的第几列，精确匹配或近似匹配）**\r\n\r\n**在L3单元格中输入如下公式**\r\n\r\n**=VLOOKUP(K2,A2:H50,8,FALSE)**\r\n\r\n因为应发工资在整个单元格中的第8列，所以第3个参数为8，第4个参数选择TRUE或者FALSE，TRUE为模糊匹配，FALSE为精确匹配，因此第4个参数选择为FALSE，\r\n有的EXCEL版本第4个参数是0是精确查找，1是精确匹配，根据实际情况输入即可。\r\n\r\n.. figure:: ../_static/chap6/6.1.gif\r\n   :alt: \r\n\r\n.. _header-n15:\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，点击【案例2】，根据岗位编号，得到该员工的应发工资\r\n\r\n在案例2的任务中我们发现，这里的员工的编号位于最后一列，那么应该如何处理呢？\r\n\r\n如果按照正常的VLOOKUP的函数用法在L2单元格输入=VLOOKUP(K2,A2:H19,7,FALSE)，输入后会发现并没有安装预期得到应发工资。\r\n\r\n.. figure:: ../_static/chap6/6.2.gif\r\n   :alt: \r\n\r\n这是因为VLOOKUP函数的限制，必须查找的区域在被查找值的左侧，当然这里有其他的办法解决。\r\n\r\n这里用到了换列的小技巧，如果感兴趣可以看相关文章，\\ `Excel技巧：一文搞懂\r\nIF{1,0} 的用法 <https://zhuanlan.zhihu.com/p/377654196>`__\r\n\r\n那么在L2中输入如下函数\r\n\r\n**=VLOOKUP(K2,IF({1,0},H2:H19,G2:G19),2,FALSE)**\r\n\r\n这个函数中，将G2:G17列与H2:H19列做成了一个临时数据组，并让这2列交换位置，这样G2:G19列就在临时数组中的第2列，因此VLOOKUP中第3个参数为2\r\n\r\n.. figure:: ../_static/chap6/6.3.gif\r\n   :alt: \r\n\r\n.. _header-n26:\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，点击【案例3】，根据性别与部门信息，获得员工编号\r\n\r\n案例3的任务与前面不同的是，无法只通过1个信息完全定位到员工编号，因此这里使用了一个技巧，在L3单元格中输入\r\n\r\n**=VLOOKUP(J2&K2,IF({1,0},C2:C20&D2:D20,A2:A20),2,0)**\r\n\r\n细心的同学可能发现了其中的技巧，就是将多个条件通过&连接成一个字符串，同时将待查找的数据也连接起来，从而通过这个连接的特殊字符来查找数据\r\n\r\n.. figure:: ../_static/chap6/6.4.gif\r\n   :alt: \r\n\r\n.. _header-n32:\r\n\r\n案例4\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，点击【案例4】，当不知道具体的信息，需要进行模糊查询\r\n\r\n那么如何使用VLOOKUP进行模糊查询呢？\r\n\r\n**=VLOOKUP(\"*\"&K2,A2:F20,2,0)**\r\n\r\nExcel中的通配符匹配规则见如下，因为DW为2个字符，我们选择\\*\r\n\r\n还记得第四章中的SUMIFS函数中的案例，计算小米系列的销量中，我们就使用了通配符\r\n\r\n.. figure:: ../_static/chap6/6.5.png\r\n   :alt:\r\n\r\n.. figure:: ../_static/chap6/6.6.gif\r\n   :alt:\r\n\r\n.. _header-n39:\r\n\r\n2 XLOOKUP\r\n---------\r\n\r\n   XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，\\ **非常推荐大家使用XLOOKUP函数**\\ ，如果不能支持这个函数也不用灰心，使用VLOOKUP函数也能完成绝大多数查询问题\r\n\r\n因为XLOOKUP函数功能非常强大，因此在本节中对函数进行讲解\r\n\r\n【XLOOKUP函数】\\ **==XLOOKUP(想要查找值, 想要在哪个数据区域中查找,\r\n要返回的数据区域，, [if\\ not\\ found], [match\\ mode], [search\\ mode])**\r\n\r\n第四参数（可选参数）：if\\ *not*\\ found，找不到结果，就返回第四参数，如果省略第四参数函数默认返回#N/A这个错误值\r\n\r\n第五参数（可选参数）：match_mode，指定匹配类型\r\n\r\n参数为：0 ，精确匹配，未找到结果，返回 #N/A。 这是默认选项。\r\n\r\n参数为：-1，近似匹配，未找到结果，返回下一个较小的项。\r\n\r\n参数为：1，近似匹配，未找到结果，返回下一个较大的项。\r\n\r\n参数为：2 ，通配符匹配\r\n\r\n第六参数（可选参数）：search_mode, 指定要使用的搜索模式\r\n\r\n参数为：1，从第一项开始执行搜索。 这是默认选项。\r\n\r\n参数为：-1，从最后一项开始执行反向搜索。\r\n\r\n参数为：2，根据 lookup_array 按升序排序的二进制搜索。\r\n如果未排序，将返回无效结果。\r\n\r\n参数为：-2，根据lookup_array 按降序排序的二进制搜索。\r\n如果未排序，将返回无效结果。\r\n\r\n.. _header-n55:\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例1】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(K2,A1:A50,H1:H50)**\r\n\r\n第1个K2 就是需要查询的岗位编号DW0005\r\n\r\n第2个参数为A1:A50，也就是要查哪一列，\\ **细心的同学已经注意到这里与VLOOKUP的不同**\r\n\r\n第3个参数就是需要返回的哪一列，也就是返回H列\r\n\r\n.. _header-n62:\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例2】\r\n\r\n我们在L2单元格中输入如下公式\r\n\r\n**=XLOOKUP(J2,H1:H19,G1:G19)**\r\n\r\n细心的同学就发现上面的公式中没有用到列的转换，这个公式的可读性非常强，这是就是XLOOKUP比VLOOKUP更加强大的地方\r\n\r\n.. _header-n67:\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例3】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(J2&K2,C1:C20&D1:D20,A1:A20)**\r\n\r\n在XLOOKUP中的多条件查找，只需要使用\\ **&**\\ ，将多个条件的信息连接起来即可，非常的方便\r\n\r\n.. _header-n72:\r\n\r\n案例4\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例4】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(\"*\"&K2,A2:A20,B2:B20,,2)**\r\n\r\n在使用XLOOKUP进行通配符查找事，需要指定第5个参数为2，即告诉XLOOKUP需要用通配符进行查找，这里是好VLOOKUP不同的地方\r\n\r\n具体通配符用法，可见1.4的讲解\r\n\r\n.. _header-n78:\r\n\r\n案例5\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例5】，姓名6在数据表中出现了2次，想知道他的最后销售额应该怎么操作？\r\n\r\n我们在I2单元格中输入如下公式\r\n\r\n**=XLOOKUP(H2,B1:B20,F1:F20,0,0,-1)**\r\n\r\n前3个参数想必大家已经很熟悉了，第4个参数是0，就是当XLOOKUP查找不到时，就返回0，第5个参数是0，就是选择精确匹配，第6个参数选择搜索参数，这里选择-1，从后开始往前搜索，因此这样设置就能获得正确结果。\r\n\r\n.. _header-n83:\r\n\r\n案例6\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例6】，这里有4个人，现在想知道这4个人的最大销售额\r\n\r\n**=MAX(XLOOKUP(H2:H5,B2:B20,F2:F20,0,0,1))**\r\n\r\n先通过XLOOKUP批量查找这4个人销售额，再通过MAX函数，求这4个人中的最大的销售额。\r\n\r\n.. figure:: ../_static/chap6/6.7.gif\r\n   :alt: \r\n\r\n.. _header-n88:\r\n\r\n案例7\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例7】，当数据集以横向形式时，如果查询到需要的数据\r\n\r\n在C2单元格中输入如下公式\r\n\r\n**=XLOOKUP(B6,B2:L2,B1:L1)**\r\n\r\n细心的同学发现，横向数据的查询方法与纵向数据并无太大区别\r\n\r\n.. figure:: ../_static/chap6/6.8.gif\r\n   :alt: \r\n\r\n.. _header-n94:\r\n\r\n练习\r\n----\r\n\r\n1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成\\ ``data/chap6/6.1xlsx``\\ 中的【案例1-4】\r\n"
  },
  {
    "path": "docs/_sources/Content/chap7.rst.txt",
    "content": ".. _header-n98:\r\n\r\n第七章 Excel函数-动态函数\r\n=========================\r\n\r\n   在本节中会讲解一些Excel更新的动态函数，从而帮助大家更好的掌握Excel的数据处理与分析\r\n\r\n.. _header-n102:\r\n\r\n1.FILTER函数\r\n------------\r\n\r\n   在工作中，我们需要根据指定的条件，将符合条件的所有记录从数据源表格式查找过来，一是可以用高级筛选。但高级筛选在查询下一个单位时\r\n   ，需要重新设置一次，很麻烦。二是用函数公式查询。典型的套路有：INDEX+SMALL+ROW、或者LOOKUP+COUNTIF+OFFSET，而这样的方法对初学者非常不友好，而EXCEL新更新的感受FILTER可以很好的解决这个问题。\r\n\r\n【FILTER】函数=FILTER（数据区域，筛选条件，[无满足条件的记录时返回的值]）\r\n\r\n接下来就看看FILTER的实际应用案例\r\n\r\n.. _header-n107:\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】\r\n\r\n获得湖北区的相关数据\r\n\r\n在J2单元格中输入\r\n\r\n**=FILTER(A2:G30,C2:C30=\"湖北区\")** 注意数据区域不包含标题\r\n\r\n生成的数据的动态数组（WPS由于不兼容动态数组，稍微和Excel有点区别，会产生数据溢出的情况）\r\n\r\n.. figure:: ../_static/chap7/7.1.gif\r\n   :alt: \r\n\r\n.. _header-n114:\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】\r\n\r\n如果在实际的任务中不需要所有的列，只需要其中的几行，那么应该怎么操作？\r\n\r\n可以在K2单元格中输入\r\n\r\n**=FILTER(F2:G30,C2:C30=\"湖北区\")**\r\n\r\n细心的同学就发现了这里与7.1.1中的不同，如果需要返回其中的几行，只需要将数据区域修改为自己需要的区域即可\r\n\r\n现在需要知道湖北区的最大销售金额是多少\r\n\r\n**=MAX(FILTER(F2:F30,C2:C30=\"湖北区\"))**\r\n\r\n.. figure:: ../_static/chap7/7.2.gif\r\n   :alt: \r\n\r\n.. _header-n123:\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】\r\n\r\nFILTER函数中的多条件筛选，使用\\ ``+``\\ 来表示或，使用\\ ``*``\\ 表示且\r\n\r\n例如，需要计算湖北区、湖南区大最大销售金额，那么函数公式为\r\n\r\n**=MAX(FILTER(F2:F30,(C2:C30=\"湖北区\")+(C2:C30=\"湖南区\")))**\r\n\r\n.. figure:: ../_static/chap7/7.3.gif\r\n   :alt: \r\n\r\n例如，需要计算湖北区商品2的最大销售金额，那么函数公式为\r\n\r\n**=MAX(FILTER(F2:F30,(C2:C30=\"湖北区\")*(D2:D30=\"商品2\")))**\r\n\r\n.. figure:: ../_static/chap7/7.4.gif\r\n   :alt: \r\n\r\n.. _header-n132:\r\n\r\n2.SUBTOTAL函数\r\n--------------\r\n\r\nExcel中有数据筛选非常好用，那么，如果想统计筛选后的结果应该怎么弄？例如想知道筛选后的销售总额\r\n\r\n打开\\ ``data/chap7/7.2xlsx``\\ 中的案例1，使用筛选选择不同的区，而SUM求和并没有变化\r\n\r\n如果想实现上述需求，可以使用【SUBTOTAL函数】\r\n\r\n【SUBTOTAL函数】=SUBTOTAL(功能函数,选择区域)\r\n\r\n功能函数\r\n\r\n数字 1-11 或 101-111，用于指定要为分类汇总使用的函数。 如果使用\r\n1-11，将包括手动隐藏的行，如果使用\r\n101-111，则排除手动隐藏的行；始终排除已筛选掉的单元格。详见附件1\r\n\r\n在J2单元格中输入如下公式\r\n\r\n**=SUBTOTAL(9,F2:F21)**\r\n\r\n可以看到SUBTOTAL对筛选的数据列进行正确的求和，而SUM无法跟随选择的数据列进行正确求和\r\n\r\n.. figure:: ../_static/chap7/7.5.gif\r\n   :alt: \r\n\r\n【附件1】\r\n\r\n.. figure:: ../_static/chap7/7.6.png\r\n   :alt: \r\n\r\n练习\r\n----\r\n1.打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】计算河北区中商品1的最小销售额\r\n\r\n2.打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额\r\n"
  },
  {
    "path": "docs/_sources/Content/chap8.rst.txt",
    "content": "\r\n第八章Excel数据可视化\r\n=====================\r\n\r\n   对于Excel中的数据可视化，相信各位读者应该能很熟练的使用，使用Excel汇总各种类型图，包括柱状图、折线图等等，从而让数据进行图形化展示。基于此，本节中对Excel中的数据作图部分不做展开讲解，本节更加偏重于讲解另一类辅助数据可视化的部分。\r\n\r\n\r\n1.条形图\r\n------------\r\n\r\n打开\\ ``data/chap8/8.1xlsx``\\ 中的【案例1】，现在有湖北区2022/01/01的不同商品的销售额，怎么更加直观的展示销售额之间的差别呢？\r\n\r\n这里可以使用条形图对销售的金额进展可视化展示\r\n\r\n选择【开始】-->【条件格式】-->【数据条】\r\n\r\n.. figure:: ../_static/chap8/8.1.gif\r\n   :alt: \r\n\r\n通过对销售金额进行数据条的填充，读者可以很快锁定湖北区2022/01/01销售额中，韩闲具有最高销售额为9442\r\n\r\n如果只想显示条形图，不想显示金额应该如果操作？\r\n\r\n选择条形图区域--->条件格式--->管理规则\r\n\r\n打开管理规则后可以看到，选择设置的规则，点击编辑规则\r\n\r\n选择仅显示数据条，当然可以在颜色的地方选择自己喜欢的颜色\r\n\r\n选择之后得到如下效果\r\n\r\n.. figure:: ../_static/chap8/8.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.条件单元格格式\r\n------------\r\n\r\n打开\\ ``data/chap8/8.2xlsx``\\ ，现在有不同业务员向客户推销商品的相关信息，现在需要将截止日期还没有过今天的标注出来，应该如何操作？\r\n\r\nEXCEL中【TODAY】函数可以获得当前日期\r\n\r\n这里，可以使用Excel中的条件格式进行自动识别\r\n\r\n1.选择需要设置条件的列；\r\n\r\n2.选择条件格式；\r\n\r\n3.选择新建规则\r\n\r\n这里选择使用公式确定要设置格式的单元格\r\n\r\n因为选择的区域为B2:B10\r\n因此输入的公式满足B2要求，剩余的单元格会自动填充，因此输入的公式为\r\n\r\n**=B2>TODAY()**\r\n\r\n接下来设置单元格的格式，在本节示范中选择对满足条件的单元格填充为黄色，得到如下效果图\r\n\r\n.. figure:: ../_static/chap8/8.3.gif\r\n   :alt: \r\n\r\n\r\n\r\n3.迷你图\r\n------------\r\n\r\n打开\\ ``data/chap8/8.3.xlsx``\\ 中原始数据，现在知道不同业务员1-12月的销售额，且销售额最差月份以及业务员的销售额的变化趋势，应该怎么操作？\r\n\r\n1.确定销售额最差月份\r\n\r\n这里可以使用XLOOKUP公式，具体公式为\r\n\r\n``=XLOOKUP(MIN(B2:M2),B2:M2,$B$1:$M$1)``\r\n\r\n.. figure:: ../_static/chap8/8.4.gif\r\n   :alt: \r\n\r\n2.在B2插入新的单元格，命名为趋势图\r\n\r\n点击插入，找到迷你图部分，选择折线，数据范围选择为C2:N13，防止迷你图的位置选择在B2:B13单元格\r\n\r\n.. figure:: ../_static/chap8/8.5.gif\r\n   :alt: \r\n\r\n生成迷你图后，可以在显示处，调整迷你图显示的重要点，这里显示折线中的最低点，通过图中可以看到，蔡勇仁的销售业绩趋势是不断下降，而江宁寒的销售业绩不断上升，迷你图能够很好的展示原数据与数据变化的趋势情况\r\n\r\n.. figure:: ../_static/chap8/8.6.gif\r\n   :alt: \r\n\r\n\r\n\r\n练习\r\n----\r\n\r\n1.选择\\ ``data/chap8/8.2.xlsx``\\ 工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充\r\n"
  },
  {
    "path": "docs/_sources/Content/chap9.rst.txt",
    "content": "\r\n\r\n第九章Excel数据透视\r\n================\r\n\r\n   数据透视是Excel中个强大的数据处理和分析工具，能够快速实现数据的汇总与统计分析，本节重点讲解Excel数据透视的相关操作\r\n\r\n\r\n\r\n1.Excel数据透视表\r\n----------------------\r\n\r\n打开\\ ``data/chap9/9.1.xlsx``\\ 中的数据源，现在对数据源进行数据透视\r\n\r\n1.选择插入\r\n\r\n2.选择数据透视表\r\n\r\n3.选择表格区域\r\n\r\n4.选择数据透视表放置的位置\r\n\r\n可以看到，在新的数据表中出现了数据透视表\r\n\r\n.. figure:: ../_static/chap9/9.1.gif\r\n   :alt: \r\n\r\n例如，想知道不同月份的不同区域销售金额统计情况，可以将区域置于列，月置于行，金额的求和项置于值，即可得到不同区域不同月份的销售金额之和\r\n\r\n.. figure:: ../_static/chap9/9.2.gif\r\n   :alt: \r\n\r\n如果又想知道不同店员的销售额怎么办呢？\r\n\r\n1.点击数据透视表分析\r\n\r\n2.点击插入切片器\r\n\r\n3.选择插片器的字段\r\n\r\n点击不同的店员，可以直接统计该店员的销售额，这里的插片器相当于直接筛选店员的数据做统计。如果想统计多个店员的数据，可以点击切片器的多选项，可以同时统计多个店员的数据。\r\n\r\n.. figure:: ../_static/chap9/9.3.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.Excel数据透视图\r\n----------------------\r\n\r\n打开\\ ``data/chap9/9.1.xlsx``\\ 中的数据源，现在对数据源进行数据透视图\r\n\r\n1.选择插入\r\n\r\n2.选择数据透视图\r\n\r\n3.选择创建数据透视图，选择数据源作为数据区域\r\n\r\n4.选择新工作表\r\n\r\n.. figure:: ../_static/chap9/9.5.gif\r\n   :alt: \r\n\r\n选择月为类别，选择区域为图例，选择金额求和作为值，得到如下透视图\r\n\r\n.. figure:: ../_static/chap9/9.6.gif\r\n   :alt: \r\n\r\n如果，想切换透视图的类型，可以选择不同的图像类型，例如我们想知道不同月份销售的变化趋势，可以选择为折线图\r\n\r\n.. figure:: ../_static/chap9/9.7.gif\r\n   :alt: \r\n\r\n当然数据透视图也支持插片器，同样是选择店员作为切片的条件\r\n\r\n.. figure:: ../_static/chap9/9.8.gif\r\n   :alt: \r\n\r\n\r\n\r\n练习\r\n----\r\n\r\n1.选择\\ ``data/chap9/9.1.xlsx``\\ 工作簿中的【数据源】绘制不同的透视图\r\n"
  },
  {
    "path": "docs/_sources/Content/index.rst.txt",
    "content": "********\n教程\n********\n\n.. toctree::\n   :maxdepth: 2\n\n   chap1\n   chap2\n   chap3\n   chap4\n   chap5\n   chap6\n   chap7\n   chap8\n   chap9\n   chap10\n\n"
  },
  {
    "path": "docs/_sources/Datawhale.rst.txt",
    "content": "*****************\nDatawhale\n*****************\n\n``Datawhale`` 是一个专注于 ``AI`` 领域的开源组织，希望构建对学习者最有价值的开源社区。\n\n作为一个由国内外各个高校的教授、学生、企业从业者等创建的开放式组织形态，抱有开源精神和探索精神，愿景：for the learner，和学习者一起成长。\n\nDatawhale官网：https://datawhale.club/\n\n知乎\n================\nhttps://www.zhihu.com/people/datawhale2018\n\n微信公众号\n================\n.. image:: _static/datawhale.jpg\n   :height: 388 px\n   :width: 336 px\n   :scale: 100 %\n   :align: center\n"
  },
  {
    "path": "docs/_sources/index.rst.txt",
    "content": ".. Joyful Pandas documentation master file, created by\n   sphinx-quickstart on Sat Sep 19 16:56:20 2020.\n   You can adapt this file completely to your liking, but it should at least\n   contain the root `toctree` directive.\n\n\nHome\n=============\n\n.. toctree::\n   :caption: 框架\n   :maxdepth: 2\n   :hidden:\n\n   主页\n   Content/index\n   作者\n   Datawhale\n   练习题参考操作\n\n\n主页\n=============\n\nfree excel中文意为自由Excel，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！\n\n本教程的数据集在 `此处 <https://github.com/datawhalechina/free-excel>`__ 下载。\n\n教程大纲\n=============\n.. image:: _static/home.png\n   :height: 400 px\n   :width: 720 px\n   :scale: 100 %\n   :align: center\n\n更新版本与更新时间\n==================\n- V1.0  2021-08-08  \n- V2.0  2022-09-09  \n- V2.1  2022-11-27  \n\nV2.1教程配套Excel版本为2019及以上，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。\n\n注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上\n"
  },
  {
    "path": "docs/_sources/主页.rst.txt",
    "content": "主页\n=============\n\nfree excel中文意为自由Excel，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！\n\n本教程的数据集在 `此处 <https://github.com/datawhalechina/free-excel>`__ 下载。\n\n教程大纲\n=============\n.. figure:: _static/home.png\n   :alt:\n\n更新版本与更新时间\n================\n- V1.0  2021-08-08  \n- V2.0  2022-09-09  \n- V2.1  2022-11-27  \n\nV2.1教程配套Excel版本为2019及以上，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。\n\n注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上\n\n"
  },
  {
    "path": "docs/_sources/作者.rst.txt",
    "content": "\r\n\r\n作者\r\n====\r\n\r\n牧小熊，华中农业大学硕士，Datawhale成员，互联网金融数据分析师\r\n\r\n\r\n\r\n开源内容\r\n--------\r\n\r\n-  `《free-excel》 <https://github.com/datawhalechina/free-excel>`_\r\n\r\n-  `《心跳信号分类》 <https://github.com/datawhalechina/team-learning-data-mining/tree/master/HeartbeatClassification>`_\r\n\r\n-  `《python自动化办公》 <https://github.com/datawhalechina/office-automation>`_\r\n\r\n-  `《如何打一个数据挖掘比赛-\r\n   入门篇》 <https://linklearner.com/#/learn/detail/0>`_\r\n\r\n\r\nGithub\r\n----------\r\nhttps://github.com/muxiaoxiong\r\n\r\n知乎\r\n----------\r\nhttps://www.zhihu.com/people/muxiaoxiong\r\n\r\nE-mail\r\n----------\r\n1335008986@qq.com\r\n\r\n微信\r\n----------\r\n.. image:: _static/wechat.jpg\r\n   :height: 388 px\r\n   :width: 336 px\r\n   :scale: 100 %\r\n   :align: center\r\n\r\n知乎咨询\r\n----------\r\n.. image:: _static/zixun.png\r\n   :height: 360 px\r\n   :width: 779 px\r\n   :scale: 100 %\r\n   :align: left\r\n\r\n"
  },
  {
    "path": "docs/_sources/练习题参考操作.rst.txt",
    "content": "\r\n\r\n练习题参考操作\r\n==============\r\n\r\n\r\n第一章\r\n======\r\n\r\n1.1使用Excel数据导入功能，完成\\ ``data/chap1/Titanic_normal.csv``\\ 和\\ ``data/chap1/data/chap1/Titanic_special.txt``\\ 数据导入\r\n\r\n.. figure:: ./_static/ref/1.1.gif\r\n   :alt: \r\n\r\n1.2完成\\ ``data/chap1/2.1.xlsx``\\ 中案例1-4中的问题\r\n\r\n.. figure:: ./_static/ref/1.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n第二章\r\n======\r\n\r\n2.1.完成\\ ``data/chap2/2.1.xlsx``\\ 工作簿中的【案例2】【案例3】的快捷键自动求和任务\r\n\r\n.. figure:: ./_static/ref/2.1.gif\r\n   :alt: \r\n\r\n2.2.完成\\ ``data/chap2/2.2.xlsx``\\ 工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）\r\n\r\n.. figure:: ./_static/ref/2.2.gif\r\n   :alt: \r\n\r\n2.3.完成\\ ``data/chap2/2.3.xlsx``\\ 工作簿中的【案例2】【案例3】【案例4】的填充任务\r\n\r\n.. figure:: ./_static/ref/2.3.gif\r\n   :alt: \r\n\r\n\r\n\r\n第三章\r\n======\r\n\r\n3.1.选择\\ ``data/chap3/3.1.xlsx``\\ 工作簿中的【案例1】得到不同客户的消费次数\r\n\r\n3.2.选择\\ ``data/chap3/3.1.xlsx``\\ 工作簿中的【案例2】得到不同客户的不同项目的消费次数\r\n\r\n.. figure:: ./_static/ref/3.1.gif\r\n   :alt: \r\n\r\n\r\n第四章\r\n======\r\n\r\n4.1.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例1】，将客户原始得分为1以下的校正为0\r\n\r\n4.2.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为\"高消费户\"\r\n\r\n4.3.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的务。\r\n\r\n.. figure:: ./_static/ref/4.1.gif\r\n   :alt: \r\n\r\n4.4.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例1】语文成绩在80分以上的同学成绩之和\r\n\r\n4.5.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例2】统计所有苹果系列产品的销售额\r\n\r\n4.6.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例6】完成所有手机的销售额求和\r\n\r\n.. figure:: ./_static/ref/4.2.gif\r\n   :alt: \r\n\r\n\r\n第五章\r\n======\r\n\r\n5.1.完成\\ ``data/chap5/5.1.xlsx``\\ 工作簿中的【案例1-3】\r\n\r\n参考教程\r\n\r\n5.2.完成\\ ``data/chap5/5.2.xlsx``\\ 工作簿中的【案例1】中身份证后6位加密\r\n\r\n.. figure:: ./_static/ref/5.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n第六章\r\n======\r\n\r\n6.1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成\\ ``data/chap6/6.1xlsx``\\ 中的【案例1-4】\r\n\r\n参考教程\r\n\r\n\r\n第七章\r\n======\r\n\r\n7.1.打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】计算河北区中商品1的最小销售额\r\n\r\n.. figure:: ./_static/ref/7.1.gif\r\n   :alt: \r\n\r\n7.2.打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额\r\n\r\n.. figure:: ./_static/ref/7.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n第八章\r\n======\r\n\r\n8.1.选择\\ ``data/chap8/8.2.xlsx``\\ 工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充\r\n\r\n.. figure:: ./_static/ref/8.1.gif\r\n   :alt: \r\n\r\n\r\n第九章\r\n======\r\n\r\n9.1.选择\\ ``data/chap9/9.1.xlsx``\\ 工作簿中的【数据源】绘制不同的透视图\r\n\r\n.. figure:: ./_static/ref/9.1.gif\r\n   :alt: \r\n\r\n第十章\r\n======\r\n\r\n10.1.完成数据看板，需要通过按钮调节周数，同时销售额，订单数以及数据图进行变化\r\n\r\n参考教程\r\n"
  },
  {
    "path": "docs/_static/1",
    "content": "1\n"
  },
  {
    "path": "docs/_static/_sphinx_javascript_frameworks_compat.js",
    "content": "/*\n * _sphinx_javascript_frameworks_compat.js\n * ~~~~~~~~~~\n *\n * Compatability shim for jQuery and underscores.js.\n *\n * WILL BE REMOVED IN Sphinx 6.0\n * xref RemovedInSphinx60Warning\n *\n */\n\n/**\n * select a different prefix for underscore\n */\n$u = _.noConflict();\n\n\n/**\n * small helper function to urldecode strings\n *\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL\n */\njQuery.urldecode = function(x) {\n    if (!x) {\n        return x\n    }\n    return decodeURIComponent(x.replace(/\\+/g, ' '));\n};\n\n/**\n * small helper function to urlencode strings\n */\njQuery.urlencode = encodeURIComponent;\n\n/**\n * This function returns the parsed url parameters of the\n * current request. Multiple values per key are supported,\n * it will always return arrays of strings for the value parts.\n */\njQuery.getQueryParameters = function(s) {\n    if (typeof s === 'undefined')\n        s = document.location.search;\n    var parts = s.substr(s.indexOf('?') + 1).split('&');\n    var result = {};\n    for (var i = 0; i < parts.length; i++) {\n        var tmp = parts[i].split('=', 2);\n        var key = jQuery.urldecode(tmp[0]);\n        var value = jQuery.urldecode(tmp[1]);\n        if (key in result)\n            result[key].push(value);\n        else\n            result[key] = [value];\n    }\n    return result;\n};\n\n/**\n * highlight a given string on a jquery object by wrapping it in\n * span elements with the given class name.\n */\njQuery.fn.highlightText = function(text, className) {\n    function highlight(node, addItems) {\n        if (node.nodeType === 3) {\n            var val = node.nodeValue;\n            var pos = val.toLowerCase().indexOf(text);\n            if (pos >= 0 &&\n                !jQuery(node.parentNode).hasClass(className) &&\n                !jQuery(node.parentNode).hasClass(\"nohighlight\")) {\n                var span;\n                var isInSVG = jQuery(node).closest(\"body, svg, foreignObject\").is(\"svg\");\n                if (isInSVG) {\n                    span = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n                } else {\n                    span = document.createElement(\"span\");\n                    span.className = className;\n                }\n                span.appendChild(document.createTextNode(val.substr(pos, text.length)));\n                node.parentNode.insertBefore(span, node.parentNode.insertBefore(\n                    document.createTextNode(val.substr(pos + text.length)),\n                    node.nextSibling));\n                node.nodeValue = val.substr(0, pos);\n                if (isInSVG) {\n                    var rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n                    var bbox = node.parentElement.getBBox();\n                    rect.x.baseVal.value = bbox.x;\n                    rect.y.baseVal.value = bbox.y;\n                    rect.width.baseVal.value = bbox.width;\n                    rect.height.baseVal.value = bbox.height;\n                    rect.setAttribute('class', className);\n                    addItems.push({\n                        \"parent\": node.parentNode,\n                        \"target\": rect});\n                }\n            }\n        }\n        else if (!jQuery(node).is(\"button, select, textarea\")) {\n            jQuery.each(node.childNodes, function() {\n                highlight(this, addItems);\n            });\n        }\n    }\n    var addItems = [];\n    var result = this.each(function() {\n        highlight(this, addItems);\n    });\n    for (var i = 0; i < addItems.length; ++i) {\n        jQuery(addItems[i].parent).before(addItems[i].target);\n    }\n    return result;\n};\n\n/*\n * backward compatibility for jQuery.browser\n * This will be supported until firefox bug is fixed.\n */\nif (!jQuery.browser) {\n    jQuery.uaMatch = function(ua) {\n        ua = ua.toLowerCase();\n\n        var match = /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(msie) ([\\w.]+)/.exec(ua) ||\n            ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) ||\n            [];\n\n        return {\n            browser: match[ 1 ] || \"\",\n            version: match[ 2 ] || \"0\"\n        };\n    };\n    jQuery.browser = {};\n    jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;\n}\n"
  },
  {
    "path": "docs/_static/basic.css",
    "content": "/*\r\n * basic.css\r\n * ~~~~~~~~~\r\n *\r\n * Sphinx stylesheet -- basic theme.\r\n *\r\n * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.\r\n * :license: BSD, see LICENSE for details.\r\n *\r\n */\r\n\r\n/* -- main layout ----------------------------------------------------------- */\r\n\r\ndiv.clearer {\r\n    clear: both;\r\n}\r\n\r\ndiv.section::after {\r\n    display: block;\r\n    content: '';\r\n    clear: left;\r\n}\r\n\r\n/* -- relbar ---------------------------------------------------------------- */\r\n\r\ndiv.related {\r\n    width: 100%;\r\n    font-size: 90%;\r\n}\r\n\r\ndiv.related h3 {\r\n    display: none;\r\n}\r\n\r\ndiv.related ul {\r\n    margin: 0;\r\n    padding: 0 0 0 10px;\r\n    list-style: none;\r\n}\r\n\r\ndiv.related li {\r\n    display: inline;\r\n}\r\n\r\ndiv.related li.right {\r\n    float: right;\r\n    margin-right: 5px;\r\n}\r\n\r\n/* -- sidebar --------------------------------------------------------------- */\r\n\r\ndiv.sphinxsidebarwrapper {\r\n    padding: 10px 5px 0 10px;\r\n}\r\n\r\ndiv.sphinxsidebar {\r\n    float: left;\r\n    width: 270px;\r\n    margin-left: -100%;\r\n    font-size: 90%;\r\n    word-wrap: break-word;\r\n    overflow-wrap : break-word;\r\n}\r\n\r\ndiv.sphinxsidebar ul {\r\n    list-style: none;\r\n}\r\n\r\ndiv.sphinxsidebar ul ul,\r\ndiv.sphinxsidebar ul.want-points {\r\n    margin-left: 20px;\r\n    list-style: square;\r\n}\r\n\r\ndiv.sphinxsidebar ul ul {\r\n    margin-top: 0;\r\n    margin-bottom: 0;\r\n}\r\n\r\ndiv.sphinxsidebar form {\r\n    margin-top: 10px;\r\n}\r\n\r\ndiv.sphinxsidebar input {\r\n    border: 1px solid #98dbcc;\r\n    font-family: sans-serif;\r\n    font-size: 1em;\r\n}\r\n\r\ndiv.sphinxsidebar #searchbox form.search {\r\n    overflow: hidden;\r\n}\r\n\r\ndiv.sphinxsidebar #searchbox input[type=\"text\"] {\r\n    float: left;\r\n    width: 80%;\r\n    padding: 0.25em;\r\n    box-sizing: border-box;\r\n}\r\n\r\ndiv.sphinxsidebar #searchbox input[type=\"submit\"] {\r\n    float: left;\r\n    width: 20%;\r\n    border-left: none;\r\n    padding: 0.25em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\nimg {\r\n    border: 0;\r\n    max-width: 100%;\r\n}\r\n\r\n/* -- search page ----------------------------------------------------------- */\r\n\r\nul.search {\r\n    margin: 10px 0 0 20px;\r\n    padding: 0;\r\n}\r\n\r\nul.search li {\r\n    padding: 5px 0 5px 20px;\r\n    background-image: url(file.png);\r\n    background-repeat: no-repeat;\r\n    background-position: 0 7px;\r\n}\r\n\r\nul.search li a {\r\n    font-weight: bold;\r\n}\r\n\r\nul.search li p.context {\r\n    color: #888;\r\n    margin: 2px 0 0 30px;\r\n    text-align: left;\r\n}\r\n\r\nul.keywordmatches li.goodmatch a {\r\n    font-weight: bold;\r\n}\r\n\r\n/* -- index page ------------------------------------------------------------ */\r\n\r\ntable.contentstable {\r\n    width: 90%;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n}\r\n\r\ntable.contentstable p.biglink {\r\n    line-height: 150%;\r\n}\r\n\r\na.biglink {\r\n    font-size: 1.3em;\r\n}\r\n\r\nspan.linkdescr {\r\n    font-style: italic;\r\n    padding-top: 5px;\r\n    font-size: 90%;\r\n}\r\n\r\n/* -- general index --------------------------------------------------------- */\r\n\r\ntable.indextable {\r\n    width: 100%;\r\n}\r\n\r\ntable.indextable td {\r\n    text-align: left;\r\n    vertical-align: top;\r\n}\r\n\r\ntable.indextable ul {\r\n    margin-top: 0;\r\n    margin-bottom: 0;\r\n    list-style-type: none;\r\n}\r\n\r\ntable.indextable > tbody > tr > td > ul {\r\n    padding-left: 0em;\r\n}\r\n\r\ntable.indextable tr.pcap {\r\n    height: 10px;\r\n}\r\n\r\ntable.indextable tr.cap {\r\n    margin-top: 10px;\r\n    background-color: #f2f2f2;\r\n}\r\n\r\nimg.toggler {\r\n    margin-right: 3px;\r\n    margin-top: 3px;\r\n    cursor: pointer;\r\n}\r\n\r\ndiv.modindex-jumpbox {\r\n    border-top: 1px solid #ddd;\r\n    border-bottom: 1px solid #ddd;\r\n    margin: 1em 0 1em 0;\r\n    padding: 0.4em;\r\n}\r\n\r\ndiv.genindex-jumpbox {\r\n    border-top: 1px solid #ddd;\r\n    border-bottom: 1px solid #ddd;\r\n    margin: 1em 0 1em 0;\r\n    padding: 0.4em;\r\n}\r\n\r\n/* -- domain module index --------------------------------------------------- */\r\n\r\ntable.modindextable td {\r\n    padding: 2px;\r\n    border-collapse: collapse;\r\n}\r\n\r\n/* -- general body styles --------------------------------------------------- */\r\n\r\ndiv.body {\r\n    min-width: 360px;\r\n    max-width: 800px;\r\n}\r\n\r\ndiv.body p, div.body dd, div.body li, div.body blockquote {\r\n    -moz-hyphens: auto;\r\n    -ms-hyphens: auto;\r\n    -webkit-hyphens: auto;\r\n    hyphens: auto;\r\n}\r\n\r\na.headerlink {\r\n    visibility: hidden;\r\n}\r\na.brackets:before,\r\nspan.brackets > a:before{\r\n    content: \"[\";\r\n}\r\n\r\na.brackets:after,\r\nspan.brackets > a:after {\r\n    content: \"]\";\r\n}\r\n\r\n\r\nh1:hover > a.headerlink,\r\nh2:hover > a.headerlink,\r\nh3:hover > a.headerlink,\r\nh4:hover > a.headerlink,\r\nh5:hover > a.headerlink,\r\nh6:hover > a.headerlink,\r\ndt:hover > a.headerlink,\r\ncaption:hover > a.headerlink,\r\np.caption:hover > a.headerlink,\r\ndiv.code-block-caption:hover > a.headerlink {\r\n    visibility: visible;\r\n}\r\n\r\ndiv.body p.caption {\r\n    text-align: inherit;\r\n}\r\n\r\ndiv.body td {\r\n    text-align: left;\r\n}\r\n\r\n.first {\r\n    margin-top: 0 !important;\r\n}\r\n\r\np.rubric {\r\n    margin-top: 30px;\r\n    font-weight: bold;\r\n}\r\n\r\nimg.align-left, figure.align-left, .figure.align-left, object.align-left {\r\n    clear: left;\r\n    float: left;\r\n    margin-right: 1em;\r\n}\r\n\r\nimg.align-right, figure.align-right, .figure.align-right, object.align-right {\r\n    clear: right;\r\n    float: right;\r\n    margin-left: 1em;\r\n}\r\n\r\nimg.align-center, figure.align-center, .figure.align-center, object.align-center {\r\n  display: block;\r\n  margin-left: auto;\r\n  margin-right: auto;\r\n}\r\n\r\nimg.align-default, figure.align-default, .figure.align-default {\r\n  display: block;\r\n  margin-left: auto;\r\n  margin-right: auto;\r\n}\r\n\r\n.align-left {\r\n    text-align: left;\r\n}\r\n\r\n.align-center {\r\n    text-align: center;\r\n}\r\n\r\n.align-default {\r\n    text-align: center;\r\n}\r\n\r\n.align-right {\r\n    text-align: right;\r\n}\r\n\r\n/* -- sidebars -------------------------------------------------------------- */\r\n\r\ndiv.sidebar,\r\naside.sidebar {\r\n    margin: 0 0 0.5em 1em;\r\n    border: 1px solid #ddb;\r\n    padding: 7px;\r\n    background-color: #ffe;\r\n    width: 40%;\r\n    float: right;\r\n    clear: right;\r\n    overflow-x: auto;\r\n}\r\n\r\np.sidebar-title {\r\n    font-weight: bold;\r\n}\r\ndiv.admonition, div.topic, blockquote {\r\n    clear: left;\r\n}\r\n\r\n/* -- topics ---------------------------------------------------------------- */\r\ndiv.topic {\r\n    border: 1px solid #ccc;\r\n    padding: 7px;\r\n    margin: 10px 0 10px 0;\r\n}\r\n\r\np.topic-title {\r\n    font-size: 1.1em;\r\n    font-weight: bold;\r\n    margin-top: 10px;\r\n}\r\n\r\n/* -- admonitions ----------------------------------------------------------- */\r\n\r\ndiv.admonition {\r\n    margin-top: 10px;\r\n    margin-bottom: 10px;\r\n    padding: 7px;\r\n}\r\n\r\ndiv.admonition dt {\r\n    font-weight: bold;\r\n}\r\n\r\np.admonition-title {\r\n    margin: 0px 10px 5px 0px;\r\n    font-weight: bold;\r\n}\r\n\r\ndiv.body p.centered {\r\n    text-align: center;\r\n    margin-top: 25px;\r\n}\r\n\r\n/* -- content of sidebars/topics/admonitions -------------------------------- */\r\n\r\ndiv.sidebar > :last-child,\r\naside.sidebar > :last-child,\r\ndiv.topic > :last-child,\r\ndiv.admonition > :last-child {\r\n    margin-bottom: 0;\r\n}\r\n\r\ndiv.sidebar::after,\r\naside.sidebar::after,\r\ndiv.topic::after,\r\ndiv.admonition::after,\r\nblockquote::after {\r\n    display: block;\r\n    content: '';\r\n    clear: both;\r\n}\r\n\r\n/* -- tables ---------------------------------------------------------------- */\r\n\r\ntable.docutils {\r\n    margin-top: 10px;\r\n    margin-bottom: 10px;\r\n    border: 0;\r\n    border-collapse: collapse;\r\n}\r\n\r\ntable.align-center {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n}\r\n\r\ntable.align-default {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n}\r\n\r\ntable caption span.caption-number {\r\n    font-style: italic;\r\n}\r\n\r\ntable caption span.caption-text {\r\n}\r\n\r\ntable.docutils td, table.docutils th {\r\n    padding: 1px 8px 1px 5px;\r\n    border-top: 0;\r\n    border-left: 0;\r\n    border-right: 0;\r\n    border-bottom: 1px solid #aaa;\r\n}\r\n\r\nth {\r\n    text-align: left;\r\n    padding-right: 5px;\r\n}\r\n\r\ntable.citation {\r\n    border-left: solid 1px gray;\r\n    margin-left: 1px;\r\n}\r\n\r\ntable.citation td {\r\n    border-bottom: none;\r\n}\r\n\r\nth > :first-child,\r\ntd > :first-child {\r\n    margin-top: 0px;\r\n}\r\n\r\nth > :last-child,\r\ntd > :last-child {\r\n    margin-bottom: 0px;\r\n}\r\n\r\n/* -- figures --------------------------------------------------------------- */\r\n\r\ndiv.figure, figure {\r\n    margin: 0.5em;\r\n    padding: 0.5em;\r\n}\r\n\r\ndiv.figure p.caption, figcaption {\r\n    padding: 0.3em;\r\n}\r\n\r\ndiv.figure p.caption span.caption-number,\r\nfigcaption span.caption-number {\r\n    font-style: italic;\r\n}\r\n\r\ndiv.figure p.caption span.caption-text,\r\nfigcaption span.caption-text {\r\n}\r\n\r\n/* -- field list styles ----------------------------------------------------- */\r\n\r\ntable.field-list td, table.field-list th {\r\n    border: 0 !important;\r\n}\r\n\r\n.field-list ul {\r\n    margin: 0;\r\n    padding-left: 1em;\r\n}\r\n\r\n.field-list p {\r\n    margin: 0;\r\n}\r\n\r\n.field-name {\r\n    -moz-hyphens: manual;\r\n    -ms-hyphens: manual;\r\n    -webkit-hyphens: manual;\r\n    hyphens: manual;\r\n}\r\n\r\n/* -- hlist styles ---------------------------------------------------------- */\r\n\r\ntable.hlist {\r\n    margin: 1em 0;\r\n}\r\n\r\ntable.hlist td {\r\n    vertical-align: top;\r\n}\r\n\r\n/* -- object description styles --------------------------------------------- */\r\n\r\n.sig {\r\n\tfont-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;\r\n}\r\n\r\n.sig-name, code.descname {\r\n    background-color: transparent;\r\n    font-weight: bold;\r\n}\r\n\r\n.sig-name {\r\n\tfont-size: 1.1em;\r\n}\r\n\r\ncode.descname {\r\n    font-size: 1.2em;\r\n}\r\n\r\n.sig-prename, code.descclassname {\r\n    background-color: transparent;\r\n}\r\n\r\n.optional {\r\n    font-size: 1.3em;\r\n}\r\n\r\n.sig-paren {\r\n    font-size: larger;\r\n}\r\n\r\n.sig-param.n {\r\n\tfont-style: italic;\r\n}\r\n\r\n/* C++ specific styling */\r\n\r\n.sig-inline.c-texpr,\r\n.sig-inline.cpp-texpr {\r\n\tfont-family: unset;\r\n}\r\n\r\n.sig.c   .k, .sig.c   .kt,\r\n.sig.cpp .k, .sig.cpp .kt {\r\n\tcolor: #0033B3;\r\n}\r\n\r\n.sig.c   .m,\r\n.sig.cpp .m {\r\n\tcolor: #1750EB;\r\n}\r\n\r\n.sig.c   .s, .sig.c   .sc,\r\n.sig.cpp .s, .sig.cpp .sc {\r\n\tcolor: #067D17;\r\n}\r\n\r\n\r\n/* -- other body styles ----------------------------------------------------- */\r\n\r\nol.arabic {\r\n    list-style: decimal;\r\n}\r\n\r\nol.loweralpha {\r\n    list-style: lower-alpha;\r\n}\r\n\r\nol.upperalpha {\r\n    list-style: upper-alpha;\r\n}\r\n\r\nol.lowerroman {\r\n    list-style: lower-roman;\r\n}\r\n\r\nol.upperroman {\r\n    list-style: upper-roman;\r\n}\r\n\r\n:not(li) > ol > li:first-child > :first-child,\r\n:not(li) > ul > li:first-child > :first-child {\r\n    margin-top: 0px;\r\n}\r\n\r\n:not(li) > ol > li:last-child > :last-child,\r\n:not(li) > ul > li:last-child > :last-child {\r\n    margin-bottom: 0px;\r\n}\r\n\r\nol.simple ol p,\r\nol.simple ul p,\r\nul.simple ol p,\r\nul.simple ul p {\r\n    margin-top: 0;\r\n}\r\n\r\nol.simple > li:not(:first-child) > p,\r\nul.simple > li:not(:first-child) > p {\r\n    margin-top: 0;\r\n}\r\n\r\nol.simple p,\r\nul.simple p {\r\n    margin-bottom: 0;\r\n}\r\ndl.footnote > dt,\r\ndl.citation > dt {\r\n    float: left;\r\n    margin-right: 0.5em;\r\n}\r\n\r\ndl.footnote > dd,\r\ndl.citation > dd {\r\n    margin-bottom: 0em;\r\n}\r\n\r\ndl.footnote > dd:after,\r\ndl.citation > dd:after {\r\n    content: \"\";\r\n    clear: both;\r\n}\r\n\r\ndl.field-list {\r\n    display: grid;\r\n    grid-template-columns: fit-content(30%) auto;\r\n}\r\n\r\ndl.field-list > dt {\r\n    font-weight: bold;\r\n    word-break: break-word;\r\n    padding-left: 0.5em;\r\n    padding-right: 5px;\r\n}\r\ndl.field-list > dt:after {\r\n    content: \":\";\r\n}\r\n\r\n\r\ndl.field-list > dd {\r\n    padding-left: 0.5em;\r\n    margin-top: 0em;\r\n    margin-left: 0em;\r\n    margin-bottom: 0em;\r\n}\r\n\r\ndl {\r\n    margin-bottom: 15px;\r\n}\r\n\r\ndd > :first-child {\r\n    margin-top: 0px;\r\n}\r\n\r\ndd ul, dd table {\r\n    margin-bottom: 10px;\r\n}\r\n\r\ndd {\r\n    margin-top: 3px;\r\n    margin-bottom: 10px;\r\n    margin-left: 30px;\r\n}\r\n\r\ndl > dd:last-child,\r\ndl > dd:last-child > :last-child {\r\n    margin-bottom: 0;\r\n}\r\n\r\ndt:target, span.highlighted {\r\n    background-color: #fbe54e;\r\n}\r\n\r\nrect.highlighted {\r\n    fill: #fbe54e;\r\n}\r\n\r\ndl.glossary dt {\r\n    font-weight: bold;\r\n    font-size: 1.1em;\r\n}\r\n\r\n.versionmodified {\r\n    font-style: italic;\r\n}\r\n\r\n.system-message {\r\n    background-color: #fda;\r\n    padding: 5px;\r\n    border: 3px solid red;\r\n}\r\n\r\n.footnote:target  {\r\n    background-color: #ffa;\r\n}\r\n\r\n.line-block {\r\n    display: block;\r\n    margin-top: 1em;\r\n    margin-bottom: 1em;\r\n}\r\n\r\n.line-block .line-block {\r\n    margin-top: 0;\r\n    margin-bottom: 0;\r\n    margin-left: 1.5em;\r\n}\r\n\r\n.guilabel, .menuselection {\r\n    font-family: sans-serif;\r\n}\r\n\r\n.accelerator {\r\n    text-decoration: underline;\r\n}\r\n\r\n.classifier {\r\n    font-style: oblique;\r\n}\r\n\r\n.classifier:before {\r\n    font-style: normal;\r\n    margin: 0 0.5em;\r\n    content: \":\";\r\n    display: inline-block;\r\n}\r\n\r\nabbr, acronym {\r\n    border-bottom: dotted 1px;\r\n    cursor: help;\r\n}\r\n\r\n/* -- code displays --------------------------------------------------------- */\r\n\r\npre {\r\n    overflow: auto;\r\n    overflow-y: hidden;  /* fixes display issues on Chrome browsers */\r\n}\r\n\r\npre, div[class*=\"highlight-\"] {\r\n    clear: both;\r\n}\r\n\r\nspan.pre {\r\n    -moz-hyphens: none;\r\n    -ms-hyphens: none;\r\n    -webkit-hyphens: none;\r\n    hyphens: none;\r\n    white-space: nowrap;\r\n}\r\n\r\ndiv[class*=\"highlight-\"] {\r\n    margin: 1em 0;\r\n}\r\n\r\ntd.linenos pre {\r\n    border: 0;\r\n    background-color: transparent;\r\n    color: #aaa;\r\n}\r\n\r\ntable.highlighttable {\r\n    display: block;\r\n}\r\n\r\ntable.highlighttable tbody {\r\n    display: block;\r\n}\r\n\r\ntable.highlighttable tr {\r\n    display: flex;\r\n}\r\n\r\ntable.highlighttable td {\r\n    margin: 0;\r\n    padding: 0;\r\n}\r\n\r\ntable.highlighttable td.linenos {\r\n    padding-right: 0.5em;\r\n}\r\n\r\ntable.highlighttable td.code {\r\n    flex: 1;\r\n    overflow: hidden;\r\n}\r\n\r\n.highlight .hll {\r\n    display: block;\r\n}\r\n\r\ndiv.highlight pre,\r\ntable.highlighttable pre {\r\n    margin: 0;\r\n}\r\n\r\ndiv.code-block-caption + div {\r\n    margin-top: 0;\r\n}\r\n\r\ndiv.code-block-caption {\r\n    margin-top: 1em;\r\n    padding: 2px 5px;\r\n    font-size: small;\r\n}\r\n\r\ndiv.code-block-caption code {\r\n    background-color: transparent;\r\n}\r\n\r\ntable.highlighttable td.linenos,\r\nspan.linenos,\r\ndiv.highlight span.gp {  /* gp: Generic.Prompt */\r\n  user-select: none;\r\n  -webkit-user-select: text; /* Safari fallback only */\r\n  -webkit-user-select: none; /* Chrome/Safari */\r\n  -moz-user-select: none; /* Firefox */\r\n  -ms-user-select: none; /* IE10+ */\r\n}\r\n\r\ndiv.code-block-caption span.caption-number {\r\n    padding: 0.1em 0.3em;\r\n    font-style: italic;\r\n}\r\n\r\ndiv.code-block-caption span.caption-text {\r\n}\r\n\r\ndiv.literal-block-wrapper {\r\n    margin: 1em 0;\r\n}\r\n\r\ncode.xref, a code {\r\n    background-color: transparent;\r\n    font-weight: bold;\r\n}\r\n\r\nh1 code, h2 code, h3 code, h4 code, h5 code, h6 code {\r\n    background-color: transparent;\r\n}\r\n\r\n.viewcode-link {\r\n    float: right;\r\n}\r\n\r\n.viewcode-back {\r\n    float: right;\r\n    font-family: sans-serif;\r\n}\r\n\r\ndiv.viewcode-block:target {\r\n    margin: -1px -10px;\r\n    padding: 0 10px;\r\n}\r\n\r\n/* -- math display ---------------------------------------------------------- */\r\n\r\nimg.math {\r\n    vertical-align: middle;\r\n}\r\n\r\ndiv.body div.math p {\r\n    text-align: center;\r\n}\r\n\r\nspan.eqno {\r\n    float: right;\r\n}\r\n\r\nspan.eqno a.headerlink {\r\n    position: absolute;\r\n    z-index: 1;\r\n}\r\n\r\ndiv.math:hover a.headerlink {\r\n    visibility: visible;\r\n}\r\n\r\n/* -- printout stylesheet --------------------------------------------------- */\r\n\r\n@media print {\r\n    div.document,\r\n    div.documentwrapper,\r\n    div.bodywrapper {\r\n        margin: 0 !important;\r\n        width: 100%;\r\n    }\r\n\r\n    div.sphinxsidebar,\r\n    div.related,\r\n    div.footer,\r\n    #top-link {\r\n        display: none;\r\n    }\r\n}"
  },
  {
    "path": "docs/_static/css/s4defs-roles.css",
    "content": "/*\n * CSS hacks and small modification for my Sphinx website\n * :copyright: Copyright 2013-2016 Lilian Besson\n * :license: GPLv3, see LICENSE for details.\n */\n\n\n/* Colors and text decoration.\n For example, :black:`text in black` or :blink:`text blinking` in rST. */\n\n.black {\n    color: black;\n}\n\n.gray {\n    color: gray;\n}\n\n.grey {\n    color: gray;\n}\n\n.silver {\n    color: silver;\n}\n\n.white {\n    color: white;\n}\n\n.maroon {\n    color: maroon;\n}\n\n.red {\n    color: red;\n}\n\n.magenta {\n    color: magenta;\n}\n\n.fuchsia {\n    color: fuchsia;\n}\n\n.pink {\n    color: pink;\n}\n\n.orange {\n    color: orange;\n}\n\n.yellow {\n    color: yellow;\n}\n\n.lime {\n    color: lime;\n}\n\n.green {\n    color: green;\n}\n\n.olive {\n    color: olive;\n}\n\n.teal {\n    color: teal;\n}\n\n.cyan {\n    color: cyan;\n}\n\n.aqua {\n    color: aqua;\n}\n\n.blue {\n    color: blue;\n}\n\n.navy {\n    color: navy;\n}\n\n.purple {\n    color: purple;\n}\n\n.under {\n    text-decoration: underline;\n}\n\n.over {\n    text-decoration: overline;\n}\n\n.blink {\n    text-decoration: blink;\n}\n\n.line {\n    text-decoration: line-through;\n}\n\n.strike {\n    text-decoration: line-through;\n}\n\n.it {\n    font-style: italic;\n}\n\n.ob {\n    font-style: oblique;\n}\n\n.small {\n    font-size: small;\n}\n\n.large {\n    font-size: large;\n}\n\n.smallpar {\n    font-size: small;\n}\n\n\n/* Style pour les badges en bas de la page. */\n\ndiv.supportBadges {\n    margin: 1em;\n    text-align: right;\n}\n\ndiv.supportBadges ul {\n    padding: 0;\n    display: inline;\n}\n\ndiv.supportBadges li {\n    display: inline;\n}\n\ndiv.supportBadges a {\n    margin-right: 1px;\n    opacity: 0.6;\n}\n\ndiv.supportBadges a:hover {\n    opacity: 1;\n}\n\n\n/* Details elements in the sidebar */\n\na.reference {\n    border-bottom: none;\n    text-decoration: none;\n}\n\nul.details {\n    font-size: 80%;\n}\n\nul.details li p {\n    font-size: 85%;\n}\n\nul.externallinks {\n    font-size: 85%;\n}\n\n\n/* Pour le drapeau de langue */\n\nimg.languageswitch {\n    width: 50px;\n    height: 32px;\n    margin-left: 5px;\n    vertical-align: bottom;\n}\n\ndiv.sphinxsidebar {\n    overflow: hidden !important;\n    font-size: 120%;\n    word-wrap: break-word;\n    width: 300px;\n    max-width: 300px;\n}\n\ndiv.sphinxsidebar h3 {\n    font-size: 125%;\n}\n\ndiv.sphinxsidebar h4 {\n    font-size: 110%;\n}\n\ndiv.sphinxsidebar a {\n    font-size: 85%;\n}\n\n\n/* Image style for scrollUp jQuery plugin */\n\n#scrollUpLeft {\n    bottom: 50px;\n    left: 260px;\n    height: 38px;\n    width: 38px;\n    background: url('//perso.crans.org/besson/_images/.top.svg');\n    background: url('../_images/.top.svg');\n}\n\n@media screen and (max-width: 875px) {\n    #scrollUpLeft {\n        right: 50px;\n        left: auto;\n    }\n}\n\n\n/* responsive for font-size. */\n\n@media (max-width: 875px) {\n    body {\n        font-size: 105%;\n        /* Increase font size for responsive theme */\n    }\n}\n\n@media (max-width: 1480px) and (min-width: 876px) {\n    body {\n        font-size: 110%;\n        /* Increase font size for not-so-big screens */\n    }\n}\n\n@media (min-width: 1481px) {\n    body {\n        font-size: 115%;\n        /* Increase even more font size for big screens */\n    }\n}\n\n\n/* Social Icons in the sidebar (available: twitter, facebook, linkedin, google+, bitbucket, github) */\n\n.social-icons {\n    display: inline-block;\n    margin: 0;\n    text-align: center;\n}\n\n.social-icons a {\n    background: none no-repeat scroll center top #444444;\n    border: 1px solid #F6F6F6;\n    border-radius: 50% 50% 50% 50%;\n    display: inline-block;\n    height: 35px;\n    width: 35px;\n    margin: 0;\n    text-indent: -9000px;\n    transition: all 0.2s ease 0s;\n    text-align: center;\n    border-bottom: none;\n}\n\n.social-icons li {\n    display: inline-block;\n    list-style-type: none;\n    border-bottom: none;\n}\n.social-icons li a {\n    border-bottom: none;\n}\n\n.social-icons a:hover {\n    background-color: #666666;\n    transition: all 0.2s ease 0s;\n    text-decoration: none;\n}\n\n.social-icons a.facebook {\n    background-image: url('../_images/.facebook.png');\n    background-image: url('//perso.crans.org/besson/_images/.facebook.png');\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    background-size: 35px 35px;\n}\n\n.social-icons a.bitbucket {\n    background-image: url('../_images/.bitbucket.png');\n    background-image: url('//perso.crans.org/besson/_images/.bitbucket.png');\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    background-size: 35px 35px;\n}\n\n.social-icons li a.github {\n    background-image: url('../_images/.github.png');\n    background-image: url('//perso.crans.org/besson/_images/.github.png');\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    background-size: 35px 35px;\n}\n\n.social-icons li a.wikipedia {\n    background-image: url('../_images/.wikipedia.png');\n    background-image: url('//perso.crans.org/besson/_images/.wikipedia.png');\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    background-size: 35px 35px;\n}"
  },
  {
    "path": "docs/_static/doctools.js",
    "content": "/*\n * doctools.js\n * ~~~~~~~~~~~\n *\n * Base JavaScript utilities for all Sphinx HTML documentation.\n *\n * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.\n * :license: BSD, see LICENSE for details.\n *\n */\n\"use strict\";\n\nconst BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([\n  \"TEXTAREA\",\n  \"INPUT\",\n  \"SELECT\",\n  \"BUTTON\",\n]);\n\nconst _ready = (callback) => {\n  if (document.readyState !== \"loading\") {\n    callback();\n  } else {\n    document.addEventListener(\"DOMContentLoaded\", callback);\n  }\n};\n\n/**\n * Small JavaScript module for the documentation.\n */\nconst Documentation = {\n  init: () => {\n    Documentation.initDomainIndexTable();\n    Documentation.initOnKeyListeners();\n  },\n\n  /**\n   * i18n support\n   */\n  TRANSLATIONS: {},\n  PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),\n  LOCALE: \"unknown\",\n\n  // gettext and ngettext don't access this so that the functions\n  // can safely bound to a different name (_ = Documentation.gettext)\n  gettext: (string) => {\n    const translated = Documentation.TRANSLATIONS[string];\n    switch (typeof translated) {\n      case \"undefined\":\n        return string; // no translation\n      case \"string\":\n        return translated; // translation exists\n      default:\n        return translated[0]; // (singular, plural) translation tuple exists\n    }\n  },\n\n  ngettext: (singular, plural, n) => {\n    const translated = Documentation.TRANSLATIONS[singular];\n    if (typeof translated !== \"undefined\")\n      return translated[Documentation.PLURAL_EXPR(n)];\n    return n === 1 ? singular : plural;\n  },\n\n  addTranslations: (catalog) => {\n    Object.assign(Documentation.TRANSLATIONS, catalog.messages);\n    Documentation.PLURAL_EXPR = new Function(\n      \"n\",\n      `return (${catalog.plural_expr})`\n    );\n    Documentation.LOCALE = catalog.locale;\n  },\n\n  /**\n   * helper function to focus on search bar\n   */\n  focusSearchBar: () => {\n    document.querySelectorAll(\"input[name=q]\")[0]?.focus();\n  },\n\n  /**\n   * Initialise the domain index toggle buttons\n   */\n  initDomainIndexTable: () => {\n    const toggler = (el) => {\n      const idNumber = el.id.substr(7);\n      const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);\n      if (el.src.substr(-9) === \"minus.png\") {\n        el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;\n        toggledRows.forEach((el) => (el.style.display = \"none\"));\n      } else {\n        el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;\n        toggledRows.forEach((el) => (el.style.display = \"\"));\n      }\n    };\n\n    const togglerElements = document.querySelectorAll(\"img.toggler\");\n    togglerElements.forEach((el) =>\n      el.addEventListener(\"click\", (event) => toggler(event.currentTarget))\n    );\n    togglerElements.forEach((el) => (el.style.display = \"\"));\n    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);\n  },\n\n  initOnKeyListeners: () => {\n    // only install a listener if it is really needed\n    if (\n      !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&\n      !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS\n    )\n      return;\n\n    document.addEventListener(\"keydown\", (event) => {\n      // bail for input elements\n      if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;\n      // bail with special keys\n      if (event.altKey || event.ctrlKey || event.metaKey) return;\n\n      if (!event.shiftKey) {\n        switch (event.key) {\n          case \"ArrowLeft\":\n            if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;\n\n            const prevLink = document.querySelector('link[rel=\"prev\"]');\n            if (prevLink && prevLink.href) {\n              window.location.href = prevLink.href;\n              event.preventDefault();\n            }\n            break;\n          case \"ArrowRight\":\n            if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;\n\n            const nextLink = document.querySelector('link[rel=\"next\"]');\n            if (nextLink && nextLink.href) {\n              window.location.href = nextLink.href;\n              event.preventDefault();\n            }\n            break;\n        }\n      }\n\n      // some keyboard layouts may need Shift to get /\n      switch (event.key) {\n        case \"/\":\n          if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;\n          Documentation.focusSearchBar();\n          event.preventDefault();\n      }\n    });\n  },\n};\n\n// quick alias for translations\nconst _ = Documentation.gettext;\n\n_ready(Documentation.init);\n"
  },
  {
    "path": "docs/_static/documentation_options.js",
    "content": "var DOCUMENTATION_OPTIONS = {\r\n    URL_ROOT: document.getElementById(\"documentation_options\").getAttribute('data-url_root'),\r\n    VERSION: '2.1',\r\n    LANGUAGE: 'en',\r\n    COLLAPSE_INDEX: false,\r\n    BUILDER: 'html',\r\n    FILE_SUFFIX: '.html',\r\n    LINK_SUFFIX: '.html',\r\n    HAS_SOURCE: true,\r\n    SOURCELINK_SUFFIX: '.txt',\r\n    NAVIGATION_WITH_KEYS: true,\r\n    SHOW_SEARCH_SUMMARY: true,\r\n    ENABLE_SEARCH_SHORTCUTS: true,\r\n};"
  },
  {
    "path": "docs/_static/jquery-3.6.0.js",
    "content": "/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n"
  },
  {
    "path": "docs/_static/jquery.js",
    "content": "/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(C,e){\"use strict\";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType&&\"function\"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement(\"script\");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[o.call(e)]||\"object\":typeof e}var f=\"3.6.0\",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&\"length\"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],\"__proto__\"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:\"jQuery\"+(f+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==o.call(e))&&(!(t=r(e))||\"function\"==typeof(n=v.call(t,\"constructor\")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,\"string\"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),\"function\"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){n[\"[object \"+t+\"]\"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S=\"sizzle\"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",M=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",I=\"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",W=\"\\\\[\"+M+\"*(\"+I+\")(?:\"+M+\"*([*^$|!~]?=)\"+M+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+I+\"))|)\"+M+\"*\\\\]\",F=\":(\"+I+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+W+\")*)|.*)\\\\)|)\",B=new RegExp(M+\"+\",\"g\"),$=new RegExp(\"^\"+M+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+M+\"+$\",\"g\"),_=new RegExp(\"^\"+M+\"*,\"+M+\"*\"),z=new RegExp(\"^\"+M+\"*([>+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+\" \"]&&(!v||!v.test(t))&&(1!==p||\"object\"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute(\"id\"))?s=s.replace(re,ie):e.setAttribute(\"id\",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?\"#\"+s:\":scope\")+\" \"+xe(l[o]);c=l.join(\",\")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute(\"id\")}}}return g(t.replace($,\"$1\"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+\" \")>b.cacheLength&&delete e[r.shift()],e[t+\" \"]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split(\"|\"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return\"input\"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function ge(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement(\"div\")),\"undefined\"!=typeof e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length}),d.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=\"<a id='\"+S+\"'></a><select id='\"+S+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+S+\"-]\").length||v.push(\"~=\"),(t=C.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[\"+M+\"*name\"+M+\"*=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+S+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")}),ce(function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=C.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,\"*\"),c.call(e,\"[s!='']:x\"),s.push(\"!=\",F)}),v=v.length&&new RegExp(v.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+\" \"]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&m(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?\"!=\"===r:!r||(t+=\"\",\"=\"===r?t===i:\"!=\"===r?t!==i:\"^=\"===r?i&&0===t.indexOf(i):\"*=\"===r?i&&-1<t.indexOf(i):\"$=\"===r?i&&t.slice(-i.length)===i:\"~=\"===r?-1<(\" \"+t.replace(B,\" \")+\" \").indexOf(i):\"|=\"===r&&(t===i||t.slice(0,i.length+1)===i+\"-\"))}},CHILD:function(h,e,t,g,v){var y=\"nth\"!==h.slice(0,3),m=\"last\"!==h.slice(-4),x=\"of-type\"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?\"nextSibling\":\"previousSibling\",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l=\"only\"===h&&!u&&\"nextSibling\"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return a[S]?a(o):1<a.length?(t=[e,e,\"\",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,\"$1\"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||\"\")||se.error(\"unsupported lang: \"+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute(\"xml:lang\")||e.getAttribute(\"lang\"))return(t=t.toLowerCase())===n||0===t.indexOf(n+\"-\")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&\"parentNode\"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||\"*\",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[\" \"],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:\" \"===e[s-2].type?\"*\":\"\"})).replace($,\"$1\"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+\" \"];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($,\" \")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+\" \"];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l=\"0\",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG(\"*\",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l=\"function\"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&\"ID\"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split(\"\").sort(j).join(\"\")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement(\"fieldset\"))}),ce(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||fe(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||fe(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[\":\"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):\"string\"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a=\"string\"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,\"parentNode\")},parentsUntil:function(e,t,n){return h(e,\"parentNode\",n)},next:function(e){return O(e,\"nextSibling\")},prev:function(e){return O(e,\"previousSibling\")},nextAll:function(e){return h(e,\"nextSibling\")},prevAll:function(e){return h(e,\"previousSibling\")},nextUntil:function(e,t,n){return h(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return h(e,\"previousSibling\",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,\"template\")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return\"Until\"!==r.slice(-5)&&(t=e),t&&\"string\"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r=\"string\"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:\"\")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&\"string\"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t=\"\",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=\"\"),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[[\"notify\",\"progress\",S.Callbacks(\"memory\"),S.Callbacks(\"memory\"),2],[\"resolve\",\"done\",S.Callbacks(\"once memory\"),S.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",S.Callbacks(\"once memory\"),S.Callbacks(\"once memory\"),1,\"rejected\"]],i=\"pending\",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},\"catch\":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+\"With\"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError(\"Thenable self-resolution\");t=e&&(\"object\"==typeof e||\"function\"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+\"With\"](this===s?void 0:this,arguments),this},s[t[0]+\"With\"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),\"pending\"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn(\"jQuery.Deferred exception: \"+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener(\"DOMContentLoaded\",B),C.removeEventListener(\"load\",B),S.ready()}S.fn.ready=function(e){return F.then(e)[\"catch\"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,\"complete\"===E.readyState||\"loading\"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener(\"DOMContentLoaded\",B),C.addEventListener(\"load\",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,\"ms-\").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(K,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=\"true\"===(i=n)||\"false\"!==i&&(\"null\"===i?null:i===+i+\"\"?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,\"hasDataAttrs\"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf(\"data-\")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks(\"once memory\").add(function(){Y.remove(e,[t+\"queue\",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return\"string\"!=typeof t&&(n=t,t=\"fx\",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),\"fx\"===t&&\"inprogress\"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";while(a--)(n=Y.get(o[a],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,te=new RegExp(\"^(?:([+-])=|)(\"+ee+\")([a-z%]*)$\",\"i\"),ne=[\"Top\",\"Right\",\"Bottom\",\"Left\"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&ie(e)&&\"none\"===S.css(e,\"display\")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,\"\")},u=s(),l=n&&n[3]||(S.cssNumber[t]?\"\":\"px\"),c=e.nodeType&&(S.cssNumber[t]||\"px\"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?(\"none\"===n&&(l[c]=Y.get(r,\"display\")||null,l[c]||(r.style.display=\"\")),\"\"===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,\"display\"),o.parentNode.removeChild(o),\"none\"===u&&(u=\"block\"),ue[s]=u)))):\"none\"!==n&&(l[c]=\"none\",Y.set(r,\"display\",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement(\"div\")),(fe=E.createElement(\"input\")).setAttribute(\"type\",\"radio\"),fe.setAttribute(\"checked\",\"checked\"),fe.setAttribute(\"name\",\"t\"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML=\"<textarea>x</textarea>\",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=\"<option></option>\",y.option=!!ce.lastChild;var ge={thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],\"globalEval\",!t||Y.get(t[n],\"globalEval\"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,\"<select multiple='multiple'>\",\"</select>\"]);var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if(\"object\"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement(\"div\")),s=(de.exec(o)||[\"\",\"\"])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=\"\"}else p.push(t.createTextNode(o));f.textContent=\"\",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),\"script\"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||\"\")&&n.push(o)}return f}var be=/^([^.]*)(?:\\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==(\"focus\"===t)}function Ee(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return\"undefined\"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||\"\").match(P)||[\"\"]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||\"\").match(P)||[\"\"]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,\"events\")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!(\"click\"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+\" \"]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Se(t,\"click\",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Se(t,\"click\"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Y.get(t,\"click\")||A(t,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Ne=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function je(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&S(e).children(\"tbody\")[0]||e}function De(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function qe(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&\"string\"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,\"script\"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,\"script\"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||\"\")&&!Y.access(u,\"globalEval\")&&S.contains(l,u)&&(u.src&&\"module\"!==(u.type||\"\").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute(\"nonce\")},l):b(u.textContent.replace(Ne,\"\"),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,\"script\")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,\"input\"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:\"input\"!==l&&\"textarea\"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,\"script\")).length&&ye(a,!f&&ve(e,\"script\")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp(\"^(\"+ee+\")(?!px)[a-z%]+$\",\"i\"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join(\"|\"),\"i\");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(\"\"!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+\"\":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",l.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n=\"1%\"!==e.top,s=12===t(e.marginLeft),l.style.right=\"60%\",o=36===t(e.right),r=36===t(e.width),l.style.position=\"absolute\",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement(\"div\"),l=E.createElement(\"div\");l.style&&(l.style.backgroundClip=\"content-box\",l.cloneNode(!0).style.backgroundClip=\"\",y.clearCloneStyle=\"content-box\"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement(\"table\"),t=E.createElement(\"tr\"),n=E.createElement(\"div\"),e.style.cssText=\"position:absolute;left:-11111px;border-collapse:separate\",t.style.cssText=\"border:1px solid\",t.style.height=\"1px\",n.style.height=\"9px\",n.style.display=\"block\",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=[\"Webkit\",\"Moz\",\"ms\"],$e=E.createElement(\"div\").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ge={letterSpacing:\"0\",fontWeight:\"400\"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Qe(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?(\"content\"===n&&(u-=S.css(e,\"padding\"+ne[a],!0,i)),\"margin\"!==n&&(u-=S.css(e,\"border\"+ne[a]+\"Width\",!0,i))):(u+=S.css(e,\"padding\"+ne[a],!0,i),\"padding\"!==n?u+=S.css(e,\"border\"+ne[a]+\"Width\",!0,i):s+=S.css(e,\"border\"+ne[a]+\"Width\",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&\"border-box\"===S.css(e,\"boxSizing\",!1,r),o=i,a=We(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a=\"auto\"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===S.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===S.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?\"\":\"px\")),y.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),\"normal\"===i&&t in Ge&&(i=Ge[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each([\"height\",\"width\"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&\"absolute\"===i.position,a=(o||n)&&\"border-box\"===S.css(e,\"boxSizing\",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e[\"offset\"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,\"border\",!1,i)-.5)),s&&(r=te.exec(t))&&\"px\"!==(r[3]||\"px\")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,\"marginLeft\"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),S.each({margin:\"\",padding:\"\",border:\"Width\"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r=\"string\"==typeof e?e.split(\" \"):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},\"margin\"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?\"\":\"px\")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&\"expand\"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=[\"*\"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f=\"width\"in t||\"height\"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,\"fxshow\");for(r in n.queue||(null==(a=S._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,\"fx\").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(g?\"hide\":\"show\")){if(\"show\"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,\"display\")),\"none\"===(c=S.css(e,\"display\"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,\"display\"),le([e]))),(\"inline\"===c||\"inline-block\"===c&&null!=l)&&\"none\"===S.css(e,\"float\")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l=\"none\"===c?\"\":c)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?\"hidden\"in v&&(g=v.hidden):v=Y.access(e,\"fxshow\",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,\"fxshow\"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&\"object\"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,\"finish\"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return\"string\"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||\"fx\",[]),this.each(function(){var e=!0,t=null!=i&&i+\"queueHooks\",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||\"fx\"),this.each(function(){var e,t=Y.get(this),n=t[a+\"queue\"],r=t[a+\"queueHooks\"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each([\"toggle\",\"show\",\"hide\"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||\"boolean\"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st(\"show\"),slideUp:st(\"hide\"),slideToggle:st(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||\"fx\",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement(\"input\"),nt=E.createElement(\"select\").appendChild(E.createElement(\"option\")),tt.type=\"checkbox\",y.checkOn=\"\"!==tt.value,y.optSelected=nt.selected,(tt=E.createElement(\"input\")).value=\"t\",tt.type=\"radio\",y.radioValue=\"t\"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(\" \")}function gt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function vt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,\"tabindex\");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){a=0;while(o=e[a++])r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){a=0;while(o=e[a++])while(-1<r.indexOf(\" \"+o+\" \"))r=r.replace(\" \"+o+\" \",\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(i,t){var o=typeof i,a=\"string\"===o||Array.isArray(i);return\"boolean\"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&\"boolean\"!==o||((e=gt(this))&&Y.set(this,\"__className__\",e),this.setAttribute&&this.setAttribute(\"class\",e||!1===i?\"\":Y.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;t=\" \"+e+\" \";while(n=this[r++])if(1===n.nodeType&&-1<(\" \"+ht(gt(n))+\" \").indexOf(t))return!0;return!1}});var yt=/\\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t=\"\":\"number\"==typeof t?t+=\"\":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?\"\":e+\"\"})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&\"set\"in r&&void 0!==r.set(this,t,\"value\")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&\"get\"in r&&void 0!==(e=r.get(t,\"value\"))?e:\"string\"==typeof(e=t.value)?e.replace(yt,\"\"):null==e?\"\":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,\"value\");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,\"optgroup\"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each([\"radio\",\"checkbox\"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),y.focusin=\"onfocusin\"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,\"type\")?e.type:e,h=v.call(e,\"namespace\")?e.namespace.split(\".\"):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(\".\")&&(d=(h=d.split(\".\")).shift(),h.sort()),u=d.indexOf(\":\")<0&&\"on\"+d,(e=e[S.expando]?e:new S.Event(d,\"object\"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join(\".\"),e.rnamespace=e.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,\"events\")||Object.create(null))[e.type]&&Y.get(o,\"handle\"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:\"focusin\",blur:\"focusout\"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\\?/;S.parseXML=function(e){var t,n;if(!e||\"string\"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,\"text/xml\")}catch(e){}return n=t&&t.getElementsByTagName(\"parsererror\")[0],t&&!n||S.error(\"Invalid XML: \"+(n?S.map(n.childNodes,function(e){return e.textContent}).join(\"\\n\"):e)),t};var Ct=/\\[\\]$/,Et=/\\r?\\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+\"[\"+(\"object\"==typeof t&&null!=t?e:\"\")+\"]\",t,r,i)});else if(r||\"object\"!==w(e))i(n,e);else for(t in e)At(n+\"[\"+t+\"]\",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join(\"&\")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,\"elements\");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(\":disabled\")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,\"\\r\\n\")}}):{name:t.name,value:n.replace(Et,\"\\r\\n\")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\\/\\//,Ot={},Pt={},Rt=\"*/\".concat(\"*\"),Mt=E.createElement(\"a\");function It(o){return function(e,t){\"string\"!=typeof e&&(t=e,e=\"*\");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])\"+\"===n[0]?(n=n.slice(1)||\"*\",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return\"string\"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s[\"*\"]&&l(\"*\")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Rt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks(\"once memory\"),w=v.statusCode||{},a={},s={},u=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+\" \"]=(n[t[1].toLowerCase()+\" \"]||[]).concat(t[2])}t=n[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+\"\").replace(Ht,bt.protocol+\"//\"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==v.crossDomain){r=E.createElement(\"a\");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+\"//\"+Mt.host!=r.protocol+\"//\"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&\"string\"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger(\"ajaxStart\"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,\"\"),v.hasContent?v.data&&v.processData&&0===(v.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(v.data=v.data.replace(Nt,\"+\")):(o=v.url.slice(f.length),v.data&&(v.processData||\"string\"==typeof v.data)&&(f+=(Tt.test(f)?\"&\":\"?\")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,\"$1\"),o=(Tt.test(f)?\"&\":\"?\")+\"_=\"+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader(\"If-Modified-Since\",S.lastModified[f]),S.etag[f]&&T.setRequestHeader(\"If-None-Match\",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader(\"Content-Type\",v.contentType),T.setRequestHeader(\"Accept\",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+(\"*\"!==v.dataTypes[0]?\", \"+Rt+\"; q=0.01\":\"\"):v.accepts[\"*\"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u=\"abort\",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger(\"ajaxSend\",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort(\"timeout\")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,\"No Transport\");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||\"\",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while(\"*\"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray(\"script\",v.dataTypes)&&S.inArray(\"json\",v.dataTypes)<0&&(v.converters[\"text script\"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader(\"Last-Modified\"))&&(S.lastModified[f]=u),(u=T.getResponseHeader(\"etag\"))&&(S.etag[f]=u)),204===e||\"HEAD\"===v.type?l=\"nocontent\":304===e?l=\"notmodified\":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l=\"error\",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+\"\",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?\"ajaxSuccess\":\"ajaxError\",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger(\"ajaxComplete\",[T,v]),--S.active||S.event.trigger(\"ajaxStop\")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,\"json\")},getScript:function(e,t){return S.get(e,void 0,t,\"script\")}}),S.each([\"get\",\"post\"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&\"withCredentials\"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e[\"X-Requested-With\"]||(e[\"X-Requested-With\"]=\"XMLHttpRequest\"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,\"abort\"===e?r.abort():\"error\"===e?\"number\"!=typeof r.status?t(0,\"error\"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,\"text\"!==(r.responseType||\"text\")||\"string\"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o(\"error\"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o(\"abort\");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),S.ajaxTransport(\"script\",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S(\"<script>\").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(e){r.remove(),i=null,e&&t(\"error\"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\\?(?=&|$)|\\?\\?/;S.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=zt.pop()||S.expando+\"_\"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter(\"json jsonp\",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ut.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,\"$1\"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return o||S.error(r+\" was not called\"),o[0]},e.dataTypes[0]=\"json\",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),\"script\"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument(\"\").body).innerHTML=\"<form></form><form></form>\",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),0<a.length&&S.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?S(\"<div>\").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,\"position\"),c=S(e),f={};\"static\"===l&&(e.style.position=\"relative\"),s=c.offset(),o=S.css(e,\"top\"),u=S.css(e,\"left\"),(\"absolute\"===l||\"fixed\"===l)&&-1<(o+u).indexOf(\"auto\")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===S.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===S.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,\"borderTopWidth\",!0),i.left+=S.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-S.css(r,\"marginTop\",!0),left:t.left-i.left-S.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===S.css(e,\"position\"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,i){var o=\"pageYOffset\"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each([\"top\",\"left\"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+\"px\":t})}),S.each({Height:\"height\",Width:\"width\"},function(a,s){S.each({padding:\"inner\"+a,content:s,\"\":\"outer\"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||\"boolean\"!=typeof e),i=r||(!0===e||!0===t?\"margin\":\"border\");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf(\"outer\")?e[\"inner\"+a]:e.document.documentElement[\"client\"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body[\"scroll\"+a],r[\"scroll\"+a],e.body[\"offset\"+a],r[\"offset\"+a],r[\"client\"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?\"\":(e+\"\").replace(Xt,\"\")},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},\"undefined\"==typeof e&&(C.jQuery=C.$=S),S});\n"
  },
  {
    "path": "docs/_static/language_data.js",
    "content": "/*\r\n * language_data.js\r\n * ~~~~~~~~~~~~~~~~\r\n *\r\n * This script contains the language-specific data used by searchtools.js,\r\n * namely the list of stopwords, stemmer, scorer and splitter.\r\n *\r\n * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.\r\n * :license: BSD, see LICENSE for details.\r\n *\r\n */\r\n\r\nvar stopwords = [\"a\", \"and\", \"are\", \"as\", \"at\", \"be\", \"but\", \"by\", \"for\", \"if\", \"in\", \"into\", \"is\", \"it\", \"near\", \"no\", \"not\", \"of\", \"on\", \"or\", \"such\", \"that\", \"the\", \"their\", \"then\", \"there\", \"these\", \"they\", \"this\", \"to\", \"was\", \"will\", \"with\"];\r\n\r\n\r\n/* Non-minified version is copied as a separate JS file, is available */\r\n\r\n/**\r\n * Porter Stemmer\r\n */\r\nvar Stemmer = function() {\r\n\r\n  var step2list = {\r\n    ational: 'ate',\r\n    tional: 'tion',\r\n    enci: 'ence',\r\n    anci: 'ance',\r\n    izer: 'ize',\r\n    bli: 'ble',\r\n    alli: 'al',\r\n    entli: 'ent',\r\n    eli: 'e',\r\n    ousli: 'ous',\r\n    ization: 'ize',\r\n    ation: 'ate',\r\n    ator: 'ate',\r\n    alism: 'al',\r\n    iveness: 'ive',\r\n    fulness: 'ful',\r\n    ousness: 'ous',\r\n    aliti: 'al',\r\n    iviti: 'ive',\r\n    biliti: 'ble',\r\n    logi: 'log'\r\n  };\r\n\r\n  var step3list = {\r\n    icate: 'ic',\r\n    ative: '',\r\n    alize: 'al',\r\n    iciti: 'ic',\r\n    ical: 'ic',\r\n    ful: '',\r\n    ness: ''\r\n  };\r\n\r\n  var c = \"[^aeiou]\";          // consonant\r\n  var v = \"[aeiouy]\";          // vowel\r\n  var C = c + \"[^aeiouy]*\";    // consonant sequence\r\n  var V = v + \"[aeiou]*\";      // vowel sequence\r\n\r\n  var mgr0 = \"^(\" + C + \")?\" + V + C;                      // [C]VC... is m>0\r\n  var meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\";    // [C]VC[V] is m=1\r\n  var mgr1 = \"^(\" + C + \")?\" + V + C + V + C;              // [C]VCVC... is m>1\r\n  var s_v   = \"^(\" + C + \")?\" + v;                         // vowel in stem\r\n\r\n  this.stemWord = function (w) {\r\n    var stem;\r\n    var suffix;\r\n    var firstch;\r\n    var origword = w;\r\n\r\n    if (w.length < 3)\r\n      return w;\r\n\r\n    var re;\r\n    var re2;\r\n    var re3;\r\n    var re4;\r\n\r\n    firstch = w.substr(0,1);\r\n    if (firstch == \"y\")\r\n      w = firstch.toUpperCase() + w.substr(1);\r\n\r\n    // Step 1a\r\n    re = /^(.+?)(ss|i)es$/;\r\n    re2 = /^(.+?)([^s])s$/;\r\n\r\n    if (re.test(w))\r\n      w = w.replace(re,\"$1$2\");\r\n    else if (re2.test(w))\r\n      w = w.replace(re2,\"$1$2\");\r\n\r\n    // Step 1b\r\n    re = /^(.+?)eed$/;\r\n    re2 = /^(.+?)(ed|ing)$/;\r\n    if (re.test(w)) {\r\n      var fp = re.exec(w);\r\n      re = new RegExp(mgr0);\r\n      if (re.test(fp[1])) {\r\n        re = /.$/;\r\n        w = w.replace(re,\"\");\r\n      }\r\n    }\r\n    else if (re2.test(w)) {\r\n      var fp = re2.exec(w);\r\n      stem = fp[1];\r\n      re2 = new RegExp(s_v);\r\n      if (re2.test(stem)) {\r\n        w = stem;\r\n        re2 = /(at|bl|iz)$/;\r\n        re3 = new RegExp(\"([^aeiouylsz])\\\\1$\");\r\n        re4 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\r\n        if (re2.test(w))\r\n          w = w + \"e\";\r\n        else if (re3.test(w)) {\r\n          re = /.$/;\r\n          w = w.replace(re,\"\");\r\n        }\r\n        else if (re4.test(w))\r\n          w = w + \"e\";\r\n      }\r\n    }\r\n\r\n    // Step 1c\r\n    re = /^(.+?)y$/;\r\n    if (re.test(w)) {\r\n      var fp = re.exec(w);\r\n      stem = fp[1];\r\n      re = new RegExp(s_v);\r\n      if (re.test(stem))\r\n        w = stem + \"i\";\r\n    }\r\n\r\n    // Step 2\r\n    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\r\n    if (re.test(w)) {\r\n      var fp = re.exec(w);\r\n      stem = fp[1];\r\n      suffix = fp[2];\r\n      re = new RegExp(mgr0);\r\n      if (re.test(stem))\r\n        w = stem + step2list[suffix];\r\n    }\r\n\r\n    // Step 3\r\n    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\r\n    if (re.test(w)) {\r\n      var fp = re.exec(w);\r\n      stem = fp[1];\r\n      suffix = fp[2];\r\n      re = new RegExp(mgr0);\r\n      if (re.test(stem))\r\n        w = stem + step3list[suffix];\r\n    }\r\n\r\n    // Step 4\r\n    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\r\n    re2 = /^(.+?)(s|t)(ion)$/;\r\n    if (re.test(w)) {\r\n      var fp = re.exec(w);\r\n      stem = fp[1];\r\n      re = new RegExp(mgr1);\r\n      if (re.test(stem))\r\n        w = stem;\r\n    }\r\n    else if (re2.test(w)) {\r\n      var fp = re2.exec(w);\r\n      stem = fp[1] + fp[2];\r\n      re2 = new RegExp(mgr1);\r\n      if (re2.test(stem))\r\n        w = stem;\r\n    }\r\n\r\n    // Step 5\r\n    re = /^(.+?)e$/;\r\n    if (re.test(w)) {\r\n      var fp = re.exec(w);\r\n      stem = fp[1];\r\n      re = new RegExp(mgr1);\r\n      re2 = new RegExp(meq1);\r\n      re3 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\r\n      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))\r\n        w = stem;\r\n    }\r\n    re = /ll$/;\r\n    re2 = new RegExp(mgr1);\r\n    if (re.test(w) && re2.test(w)) {\r\n      re = /.$/;\r\n      w = w.replace(re,\"\");\r\n    }\r\n\r\n    // and turn initial Y back to y\r\n    if (firstch == \"y\")\r\n      w = firstch.toLowerCase() + w.substr(1);\r\n    return w;\r\n  }\r\n}\r\n\r\n"
  },
  {
    "path": "docs/_static/pygments.css",
    "content": "html[data-theme=\"light\"] .highlight pre { line-height: 125%; }\r\nhtml[data-theme=\"light\"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\r\nhtml[data-theme=\"light\"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\r\nhtml[data-theme=\"light\"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\r\nhtml[data-theme=\"light\"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\r\nhtml[data-theme=\"light\"] .highlight .hll { background-color: #ffffcc }\r\nhtml[data-theme=\"light\"] .highlight { background: #f8f8f8; }\r\nhtml[data-theme=\"light\"] .highlight .c { color: #8f5902; font-style: italic } /* Comment */\r\nhtml[data-theme=\"light\"] .highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */\r\nhtml[data-theme=\"light\"] .highlight .g { color: #000000 } /* Generic */\r\nhtml[data-theme=\"light\"] .highlight .k { color: #204a87; font-weight: bold } /* Keyword */\r\nhtml[data-theme=\"light\"] .highlight .l { color: #000000 } /* Literal */\r\nhtml[data-theme=\"light\"] .highlight .n { color: #000000 } /* Name */\r\nhtml[data-theme=\"light\"] .highlight .o { color: #ce5c00; font-weight: bold } /* Operator */\r\nhtml[data-theme=\"light\"] .highlight .x { color: #000000 } /* Other */\r\nhtml[data-theme=\"light\"] .highlight .p { color: #000000; font-weight: bold } /* Punctuation */\r\nhtml[data-theme=\"light\"] .highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */\r\nhtml[data-theme=\"light\"] .highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */\r\nhtml[data-theme=\"light\"] .highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */\r\nhtml[data-theme=\"light\"] .highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */\r\nhtml[data-theme=\"light\"] .highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */\r\nhtml[data-theme=\"light\"] .highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */\r\nhtml[data-theme=\"light\"] .highlight .gd { color: #a40000 } /* Generic.Deleted */\r\nhtml[data-theme=\"light\"] .highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */\r\nhtml[data-theme=\"light\"] .highlight .gr { color: #ef2929 } /* Generic.Error */\r\nhtml[data-theme=\"light\"] .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */\r\nhtml[data-theme=\"light\"] .highlight .gi { color: #00A000 } /* Generic.Inserted */\r\nhtml[data-theme=\"light\"] .highlight .go { color: #000000; font-style: italic } /* Generic.Output */\r\nhtml[data-theme=\"light\"] .highlight .gp { color: #8f5902 } /* Generic.Prompt */\r\nhtml[data-theme=\"light\"] .highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */\r\nhtml[data-theme=\"light\"] .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\r\nhtml[data-theme=\"light\"] .highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */\r\nhtml[data-theme=\"light\"] .highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */\r\nhtml[data-theme=\"light\"] .highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */\r\nhtml[data-theme=\"light\"] .highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */\r\nhtml[data-theme=\"light\"] .highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */\r\nhtml[data-theme=\"light\"] .highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */\r\nhtml[data-theme=\"light\"] .highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */\r\nhtml[data-theme=\"light\"] .highlight .ld { color: #000000 } /* Literal.Date */\r\nhtml[data-theme=\"light\"] .highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */\r\nhtml[data-theme=\"light\"] .highlight .s { color: #4e9a06 } /* Literal.String */\r\nhtml[data-theme=\"light\"] .highlight .na { color: #c4a000 } /* Name.Attribute */\r\nhtml[data-theme=\"light\"] .highlight .nb { color: #204a87 } /* Name.Builtin */\r\nhtml[data-theme=\"light\"] .highlight .nc { color: #000000 } /* Name.Class */\r\nhtml[data-theme=\"light\"] .highlight .no { color: #000000 } /* Name.Constant */\r\nhtml[data-theme=\"light\"] .highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */\r\nhtml[data-theme=\"light\"] .highlight .ni { color: #ce5c00 } /* Name.Entity */\r\nhtml[data-theme=\"light\"] .highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */\r\nhtml[data-theme=\"light\"] .highlight .nf { color: #000000 } /* Name.Function */\r\nhtml[data-theme=\"light\"] .highlight .nl { color: #f57900 } /* Name.Label */\r\nhtml[data-theme=\"light\"] .highlight .nn { color: #000000 } /* Name.Namespace */\r\nhtml[data-theme=\"light\"] .highlight .nx { color: #000000 } /* Name.Other */\r\nhtml[data-theme=\"light\"] .highlight .py { color: #000000 } /* Name.Property */\r\nhtml[data-theme=\"light\"] .highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */\r\nhtml[data-theme=\"light\"] .highlight .nv { color: #000000 } /* Name.Variable */\r\nhtml[data-theme=\"light\"] .highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */\r\nhtml[data-theme=\"light\"] .highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */\r\nhtml[data-theme=\"light\"] .highlight .w { color: #f8f8f8 } /* Text.Whitespace */\r\nhtml[data-theme=\"light\"] .highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */\r\nhtml[data-theme=\"light\"] .highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */\r\nhtml[data-theme=\"light\"] .highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */\r\nhtml[data-theme=\"light\"] .highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */\r\nhtml[data-theme=\"light\"] .highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */\r\nhtml[data-theme=\"light\"] .highlight .sa { color: #4e9a06 } /* Literal.String.Affix */\r\nhtml[data-theme=\"light\"] .highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */\r\nhtml[data-theme=\"light\"] .highlight .sc { color: #4e9a06 } /* Literal.String.Char */\r\nhtml[data-theme=\"light\"] .highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */\r\nhtml[data-theme=\"light\"] .highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */\r\nhtml[data-theme=\"light\"] .highlight .s2 { color: #4e9a06 } /* Literal.String.Double */\r\nhtml[data-theme=\"light\"] .highlight .se { color: #4e9a06 } /* Literal.String.Escape */\r\nhtml[data-theme=\"light\"] .highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */\r\nhtml[data-theme=\"light\"] .highlight .si { color: #4e9a06 } /* Literal.String.Interpol */\r\nhtml[data-theme=\"light\"] .highlight .sx { color: #4e9a06 } /* Literal.String.Other */\r\nhtml[data-theme=\"light\"] .highlight .sr { color: #4e9a06 } /* Literal.String.Regex */\r\nhtml[data-theme=\"light\"] .highlight .s1 { color: #4e9a06 } /* Literal.String.Single */\r\nhtml[data-theme=\"light\"] .highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */\r\nhtml[data-theme=\"light\"] .highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */\r\nhtml[data-theme=\"light\"] .highlight .fm { color: #000000 } /* Name.Function.Magic */\r\nhtml[data-theme=\"light\"] .highlight .vc { color: #000000 } /* Name.Variable.Class */\r\nhtml[data-theme=\"light\"] .highlight .vg { color: #000000 } /* Name.Variable.Global */\r\nhtml[data-theme=\"light\"] .highlight .vi { color: #000000 } /* Name.Variable.Instance */\r\nhtml[data-theme=\"light\"] .highlight .vm { color: #000000 } /* Name.Variable.Magic */\r\nhtml[data-theme=\"light\"] .highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */\r\nhtml[data-theme=\"dark\"] .highlight pre { line-height: 125%; }\r\nhtml[data-theme=\"dark\"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; }\r\nhtml[data-theme=\"dark\"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; }\r\nhtml[data-theme=\"dark\"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\r\nhtml[data-theme=\"dark\"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\r\nhtml[data-theme=\"dark\"] .highlight .hll { background-color: #404040 }\r\nhtml[data-theme=\"dark\"] .highlight { background: #202020; color: #d0d0d0 }\r\nhtml[data-theme=\"dark\"] .highlight .c { color: #ababab; font-style: italic } /* Comment */\r\nhtml[data-theme=\"dark\"] .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */\r\nhtml[data-theme=\"dark\"] .highlight .esc { color: #d0d0d0 } /* Escape */\r\nhtml[data-theme=\"dark\"] .highlight .g { color: #d0d0d0 } /* Generic */\r\nhtml[data-theme=\"dark\"] .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */\r\nhtml[data-theme=\"dark\"] .highlight .l { color: #d0d0d0 } /* Literal */\r\nhtml[data-theme=\"dark\"] .highlight .n { color: #d0d0d0 } /* Name */\r\nhtml[data-theme=\"dark\"] .highlight .o { color: #d0d0d0 } /* Operator */\r\nhtml[data-theme=\"dark\"] .highlight .x { color: #d0d0d0 } /* Other */\r\nhtml[data-theme=\"dark\"] .highlight .p { color: #d0d0d0 } /* Punctuation */\r\nhtml[data-theme=\"dark\"] .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */\r\nhtml[data-theme=\"dark\"] .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */\r\nhtml[data-theme=\"dark\"] .highlight .cp { color: #cd2828; font-weight: bold } /* Comment.Preproc */\r\nhtml[data-theme=\"dark\"] .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */\r\nhtml[data-theme=\"dark\"] .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */\r\nhtml[data-theme=\"dark\"] .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */\r\nhtml[data-theme=\"dark\"] .highlight .gd { color: #d22323 } /* Generic.Deleted */\r\nhtml[data-theme=\"dark\"] .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */\r\nhtml[data-theme=\"dark\"] .highlight .gr { color: #d22323 } /* Generic.Error */\r\nhtml[data-theme=\"dark\"] .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */\r\nhtml[data-theme=\"dark\"] .highlight .gi { color: #589819 } /* Generic.Inserted */\r\nhtml[data-theme=\"dark\"] .highlight .go { color: #cccccc } /* Generic.Output */\r\nhtml[data-theme=\"dark\"] .highlight .gp { color: #aaaaaa } /* Generic.Prompt */\r\nhtml[data-theme=\"dark\"] .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */\r\nhtml[data-theme=\"dark\"] .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */\r\nhtml[data-theme=\"dark\"] .highlight .gt { color: #d22323 } /* Generic.Traceback */\r\nhtml[data-theme=\"dark\"] .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */\r\nhtml[data-theme=\"dark\"] .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */\r\nhtml[data-theme=\"dark\"] .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */\r\nhtml[data-theme=\"dark\"] .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */\r\nhtml[data-theme=\"dark\"] .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */\r\nhtml[data-theme=\"dark\"] .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */\r\nhtml[data-theme=\"dark\"] .highlight .ld { color: #d0d0d0 } /* Literal.Date */\r\nhtml[data-theme=\"dark\"] .highlight .m { color: #51b2fd } /* Literal.Number */\r\nhtml[data-theme=\"dark\"] .highlight .s { color: #ed9d13 } /* Literal.String */\r\nhtml[data-theme=\"dark\"] .highlight .na { color: #bbbbbb } /* Name.Attribute */\r\nhtml[data-theme=\"dark\"] .highlight .nb { color: #2fbccd } /* Name.Builtin */\r\nhtml[data-theme=\"dark\"] .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */\r\nhtml[data-theme=\"dark\"] .highlight .no { color: #40ffff } /* Name.Constant */\r\nhtml[data-theme=\"dark\"] .highlight .nd { color: #ffa500 } /* Name.Decorator */\r\nhtml[data-theme=\"dark\"] .highlight .ni { color: #d0d0d0 } /* Name.Entity */\r\nhtml[data-theme=\"dark\"] .highlight .ne { color: #bbbbbb } /* Name.Exception */\r\nhtml[data-theme=\"dark\"] .highlight .nf { color: #71adff } /* Name.Function */\r\nhtml[data-theme=\"dark\"] .highlight .nl { color: #d0d0d0 } /* Name.Label */\r\nhtml[data-theme=\"dark\"] .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */\r\nhtml[data-theme=\"dark\"] .highlight .nx { color: #d0d0d0 } /* Name.Other */\r\nhtml[data-theme=\"dark\"] .highlight .py { color: #d0d0d0 } /* Name.Property */\r\nhtml[data-theme=\"dark\"] .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */\r\nhtml[data-theme=\"dark\"] .highlight .nv { color: #40ffff } /* Name.Variable */\r\nhtml[data-theme=\"dark\"] .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */\r\nhtml[data-theme=\"dark\"] .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */\r\nhtml[data-theme=\"dark\"] .highlight .w { color: #666666 } /* Text.Whitespace */\r\nhtml[data-theme=\"dark\"] .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */\r\nhtml[data-theme=\"dark\"] .highlight .mf { color: #51b2fd } /* Literal.Number.Float */\r\nhtml[data-theme=\"dark\"] .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */\r\nhtml[data-theme=\"dark\"] .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */\r\nhtml[data-theme=\"dark\"] .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */\r\nhtml[data-theme=\"dark\"] .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */\r\nhtml[data-theme=\"dark\"] .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */\r\nhtml[data-theme=\"dark\"] .highlight .sc { color: #ed9d13 } /* Literal.String.Char */\r\nhtml[data-theme=\"dark\"] .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */\r\nhtml[data-theme=\"dark\"] .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */\r\nhtml[data-theme=\"dark\"] .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */\r\nhtml[data-theme=\"dark\"] .highlight .se { color: #ed9d13 } /* Literal.String.Escape */\r\nhtml[data-theme=\"dark\"] .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */\r\nhtml[data-theme=\"dark\"] .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */\r\nhtml[data-theme=\"dark\"] .highlight .sx { color: #ffa500 } /* Literal.String.Other */\r\nhtml[data-theme=\"dark\"] .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */\r\nhtml[data-theme=\"dark\"] .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */\r\nhtml[data-theme=\"dark\"] .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */\r\nhtml[data-theme=\"dark\"] .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */\r\nhtml[data-theme=\"dark\"] .highlight .fm { color: #71adff } /* Name.Function.Magic */\r\nhtml[data-theme=\"dark\"] .highlight .vc { color: #40ffff } /* Name.Variable.Class */\r\nhtml[data-theme=\"dark\"] .highlight .vg { color: #40ffff } /* Name.Variable.Global */\r\nhtml[data-theme=\"dark\"] .highlight .vi { color: #40ffff } /* Name.Variable.Instance */\r\nhtml[data-theme=\"dark\"] .highlight .vm { color: #40ffff } /* Name.Variable.Magic */\r\nhtml[data-theme=\"dark\"] .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */"
  },
  {
    "path": "docs/_static/scripts/pydata-sphinx-theme.js",
    "content": "!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=2)}([function(t,e){t.exports=jQuery},function(t,e,n){\"use strict\";n.r(e),function(t){\n/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar n=\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&\"undefined\"!=typeof navigator,i=function(){for(var t=[\"Edge\",\"Trident\",\"Firefox\"],e=0;e<t.length;e+=1)if(n&&navigator.userAgent.indexOf(t[e])>=0)return 1;return 0}();var o=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),i))}};function r(t){return t&&\"[object Function]\"==={}.toString.call(t)}function a(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function s(t){return\"HTML\"===t.nodeName?t:t.parentNode||t.host}function l(t){if(!t)return document.body;switch(t.nodeName){case\"HTML\":case\"BODY\":return t.ownerDocument.body;case\"#document\":return t.body}var e=a(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:l(s(t))}function u(t){return t&&t.referenceNode?t.referenceNode:t}var f=n&&!(!window.MSInputMethodContext||!document.documentMode),d=n&&/MSIE 10/.test(navigator.userAgent);function c(t){return 11===t?f:10===t?d:f||d}function h(t){if(!t)return document.documentElement;for(var e=c(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&\"BODY\"!==i&&\"HTML\"!==i?-1!==[\"TH\",\"TD\",\"TABLE\"].indexOf(n.nodeName)&&\"static\"===a(n,\"position\")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function p(t){return null!==t.parentNode?p(t.parentNode):t}function m(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return\"BODY\"===(s=(a=l).nodeName)||\"HTML\"!==s&&h(a.firstElementChild)!==a?h(l):l;var u=p(t);return u.host?m(u.host,e):m(t,p(e).host)}function g(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"top\",n=\"top\"===e?\"scrollTop\":\"scrollLeft\",i=t.nodeName;if(\"BODY\"===i||\"HTML\"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function v(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=g(e,\"top\"),o=g(e,\"left\"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function _(t,e){var n=\"x\"===e?\"Left\":\"Top\",i=\"Left\"===n?\"Right\":\"Bottom\";return parseFloat(t[\"border\"+n+\"Width\"])+parseFloat(t[\"border\"+i+\"Width\"])}function b(t,e,n,i){return Math.max(e[\"offset\"+t],e[\"scroll\"+t],n[\"client\"+t],n[\"offset\"+t],n[\"scroll\"+t],c(10)?parseInt(n[\"offset\"+t])+parseInt(i[\"margin\"+(\"Height\"===t?\"Top\":\"Left\")])+parseInt(i[\"margin\"+(\"Height\"===t?\"Bottom\":\"Right\")]):0)}function y(t){var e=t.body,n=t.documentElement,i=c(10)&&getComputedStyle(n);return{height:b(\"Height\",e,n,i),width:b(\"Width\",e,n,i)}}var w=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")},E=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),T=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},C=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function S(t){return C({},t,{right:t.left+t.width,bottom:t.top+t.height})}function N(t){var e={};try{if(c(10)){e=t.getBoundingClientRect();var n=g(t,\"top\"),i=g(t,\"left\");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},r=\"HTML\"===t.nodeName?y(t.ownerDocument):{},s=r.width||t.clientWidth||o.width,l=r.height||t.clientHeight||o.height,u=t.offsetWidth-s,f=t.offsetHeight-l;if(u||f){var d=a(t);u-=_(d,\"x\"),f-=_(d,\"y\"),o.width-=u,o.height-=f}return S(o)}function D(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=c(10),o=\"HTML\"===e.nodeName,r=N(t),s=N(e),u=l(t),f=a(e),d=parseFloat(f.borderTopWidth),h=parseFloat(f.borderLeftWidth);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var p=S({top:r.top-s.top-d,left:r.left-s.left-h,width:r.width,height:r.height});if(p.marginTop=0,p.marginLeft=0,!i&&o){var m=parseFloat(f.marginTop),g=parseFloat(f.marginLeft);p.top-=d-m,p.bottom-=d-m,p.left-=h-g,p.right-=h-g,p.marginTop=m,p.marginLeft=g}return(i&&!n?e.contains(u):e===u&&\"BODY\"!==u.nodeName)&&(p=v(p,e)),p}function k(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=D(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:g(n),s=e?0:g(n,\"left\"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return S(l)}function A(t){var e=t.nodeName;if(\"BODY\"===e||\"HTML\"===e)return!1;if(\"fixed\"===a(t,\"position\"))return!0;var n=s(t);return!!n&&A(n)}function I(t){if(!t||!t.parentElement||c())return document.documentElement;for(var e=t.parentElement;e&&\"none\"===a(e,\"transform\");)e=e.parentElement;return e||document.documentElement}function O(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?I(t):m(t,u(e));if(\"viewport\"===i)r=k(a,o);else{var f=void 0;\"scrollParent\"===i?\"BODY\"===(f=l(s(e))).nodeName&&(f=t.ownerDocument.documentElement):f=\"window\"===i?t.ownerDocument.documentElement:i;var d=D(f,a,o);if(\"HTML\"!==f.nodeName||A(a))r=d;else{var c=y(t.ownerDocument),h=c.height,p=c.width;r.top+=d.top-d.marginTop,r.bottom=h+d.top,r.left+=d.left-d.marginLeft,r.right=p+d.left}}var g=\"number\"==typeof(n=n||0);return r.left+=g?n:n.left||0,r.top+=g?n:n.top||0,r.right-=g?n:n.right||0,r.bottom-=g?n:n.bottom||0,r}function x(t){return t.width*t.height}function j(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf(\"auto\"))return t;var a=O(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return C({key:t},s[t],{area:x(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split(\"-\")[1];return f+(d?\"-\"+d:\"\")}function L(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?I(e):m(e,u(n));return D(n,o,i)}function P(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function F(t){var e={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function R(t,e,n){n=n.split(\"-\")[0];var i=P(t),o={width:i.width,height:i.height},r=-1!==[\"right\",\"left\"].indexOf(n),a=r?\"top\":\"left\",s=r?\"left\":\"top\",l=r?\"height\":\"width\",u=r?\"width\":\"height\";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[F(s)],o}function M(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function B(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=M(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,\"name\",n))).forEach((function(t){t.function&&console.warn(\"`modifier.function` is deprecated, use `modifier.fn`!\");var n=t.function||t.fn;t.enabled&&r(n)&&(e.offsets.popper=S(e.offsets.popper),e.offsets.reference=S(e.offsets.reference),e=n(e,t))})),e}function H(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=j(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=R(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?\"fixed\":\"absolute\",t=B(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function q(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function Q(t){for(var e=[!1,\"ms\",\"Webkit\",\"Moz\",\"O\"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],r=o?\"\"+o+n:t;if(void 0!==document.body.style[r])return r}return null}function W(){return this.state.isDestroyed=!0,q(this.modifiers,\"applyStyle\")&&(this.popper.removeAttribute(\"x-placement\"),this.popper.style.position=\"\",this.popper.style.top=\"\",this.popper.style.left=\"\",this.popper.style.right=\"\",this.popper.style.bottom=\"\",this.popper.style.willChange=\"\",this.popper.style[Q(\"transform\")]=\"\"),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function U(t){var e=t.ownerDocument;return e?e.defaultView:window}function V(t,e,n,i){n.updateBound=i,U(t).addEventListener(\"resize\",n.updateBound,{passive:!0});var o=l(t);return function t(e,n,i,o){var r=\"BODY\"===e.nodeName,a=r?e.ownerDocument.defaultView:e;a.addEventListener(n,i,{passive:!0}),r||t(l(a.parentNode),n,i,o),o.push(a)}(o,\"scroll\",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function Y(){this.state.eventsEnabled||(this.state=V(this.reference,this.options,this.state,this.scheduleUpdate))}function z(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,U(t).removeEventListener(\"resize\",e.updateBound),e.scrollParents.forEach((function(t){t.removeEventListener(\"scroll\",e.updateBound)})),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function K(t){return\"\"!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function X(t,e){Object.keys(e).forEach((function(n){var i=\"\";-1!==[\"width\",\"height\",\"top\",\"right\",\"bottom\",\"left\"].indexOf(n)&&K(e[n])&&(i=\"px\"),t.style[n]=e[n]+i}))}var $=n&&/Firefox/i.test(navigator.userAgent);function G(t,e,n){var i=M(t,(function(t){return t.name===e})),o=!!i&&t.some((function(t){return t.name===n&&t.enabled&&t.order<i.order}));if(!o){var r=\"`\"+e+\"`\",a=\"`\"+n+\"`\";console.warn(a+\" modifier is required by \"+r+\" modifier in order to work, be sure to include it before \"+r+\"!\")}return o}var J=[\"auto-start\",\"auto\",\"auto-end\",\"top-start\",\"top\",\"top-end\",\"right-start\",\"right\",\"right-end\",\"bottom-end\",\"bottom\",\"bottom-start\",\"left-end\",\"left\",\"left-start\"],Z=J.slice(3);function tt(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Z.indexOf(t),i=Z.slice(n+1).concat(Z.slice(0,n));return e?i.reverse():i}var et=\"flip\",nt=\"clockwise\",it=\"counterclockwise\";function ot(t,e,n,i){var o=[0,0],r=-1!==[\"right\",\"left\"].indexOf(i),a=t.split(/(\\+|\\-)/).map((function(t){return t.trim()})),s=a.indexOf(M(a,(function(t){return-1!==t.search(/,|\\s/)})));a[s]&&-1===a[s].indexOf(\",\")&&console.warn(\"Offsets separated by white space(s) are deprecated, use a comma (,) instead.\");var l=/\\s*,\\s*|\\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,i){var o=(1===i?!r:r)?\"height\":\"width\",a=!1;return t.reduce((function(t,e){return\"\"===t[t.length-1]&&-1!==[\"+\",\"-\"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0===a.indexOf(\"%\")){var s=void 0;switch(a){case\"%p\":s=n;break;case\"%\":case\"%r\":default:s=i}return S(s)[e]/100*r}if(\"vh\"===a||\"vw\"===a){return(\"vh\"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r}return r}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){K(n)&&(o[e]+=n*(\"-\"===t[i-1]?-1:1))}))})),o}var rt={placement:\"bottom\",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split(\"-\")[0],i=e.split(\"-\")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==[\"bottom\",\"top\"].indexOf(n),l=s?\"left\":\"top\",u=s?\"width\":\"height\",f={start:T({},l,r[l]),end:T({},l,r[l]+r[u]-a[u])};t.offsets.popper=C({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split(\"-\")[0],l=void 0;return l=K(+n)?[+n,0]:ot(n,r,a,s),\"left\"===s?(r.top+=l[0],r.left-=l[1]):\"right\"===s?(r.top+=l[0],r.left+=l[1]):\"top\"===s?(r.left+=l[0],r.top-=l[1]):\"bottom\"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=Q(\"transform\"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top=\"\",o.left=\"\",o[i]=\"\";var l=O(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]<l[t]&&!e.escapeWithReference&&(n=Math.max(f[t],l[t])),T({},t,n)},secondary:function(t){var n=\"right\"===t?\"left\":\"top\",i=f[n];return f[t]>l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-(\"right\"===t?f.width:f.height))),T({},n,i)}};return u.forEach((function(t){var e=-1!==[\"left\",\"top\"].indexOf(t)?\"primary\":\"secondary\";f=C({},f,d[e](t))})),t.offsets.popper=f,t},priority:[\"left\",\"right\",\"top\",\"bottom\"],padding:5,boundariesElement:\"scrollParent\"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split(\"-\")[0],r=Math.floor,a=-1!==[\"top\",\"bottom\"].indexOf(o),s=a?\"right\":\"bottom\",l=a?\"left\":\"top\",u=a?\"width\":\"height\";return n[s]<r(i[l])&&(t.offsets.popper[l]=r(i[l])-n[u]),n[l]>r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!G(t.instance.modifiers,\"arrow\",\"keepTogether\"))return t;var i=e.element;if(\"string\"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn(\"WARNING: `arrow.element` must be child of its popper element!\"),t;var o=t.placement.split(\"-\")[0],r=t.offsets,s=r.popper,l=r.reference,u=-1!==[\"left\",\"right\"].indexOf(o),f=u?\"height\":\"width\",d=u?\"Top\":\"Left\",c=d.toLowerCase(),h=u?\"left\":\"top\",p=u?\"bottom\":\"right\",m=P(i)[f];l[p]-m<s[c]&&(t.offsets.popper[c]-=s[c]-(l[p]-m)),l[c]+m>s[p]&&(t.offsets.popper[c]+=l[c]+m-s[p]),t.offsets.popper=S(t.offsets.popper);var g=l[c]+l[f]/2-m/2,v=a(t.instance.popper),_=parseFloat(v[\"margin\"+d]),b=parseFloat(v[\"border\"+d+\"Width\"]),y=g-t.offsets.popper[c]-_-b;return y=Math.max(Math.min(s[f]-m,y),0),t.arrowElement=i,t.offsets.arrow=(T(n={},c,Math.round(y)),T(n,h,\"\"),n),t},element:\"[x-arrow]\"},flip:{order:600,enabled:!0,fn:function(t,e){if(q(t.instance.modifiers,\"inner\"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=O(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split(\"-\")[0],o=F(i),r=t.placement.split(\"-\")[1]||\"\",a=[];switch(e.behavior){case et:a=[i,o];break;case nt:a=tt(i);break;case it:a=tt(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split(\"-\")[0],o=F(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c=\"left\"===i&&d(u.right)>d(f.left)||\"right\"===i&&d(u.left)<d(f.right)||\"top\"===i&&d(u.bottom)>d(f.top)||\"bottom\"===i&&d(u.top)<d(f.bottom),h=d(u.left)<d(n.left),p=d(u.right)>d(n.right),m=d(u.top)<d(n.top),g=d(u.bottom)>d(n.bottom),v=\"left\"===i&&h||\"right\"===i&&p||\"top\"===i&&m||\"bottom\"===i&&g,_=-1!==[\"top\",\"bottom\"].indexOf(i),b=!!e.flipVariations&&(_&&\"start\"===r&&h||_&&\"end\"===r&&p||!_&&\"start\"===r&&m||!_&&\"end\"===r&&g),y=!!e.flipVariationsByContent&&(_&&\"start\"===r&&p||_&&\"end\"===r&&h||!_&&\"start\"===r&&g||!_&&\"end\"===r&&m),w=b||y;(c||v||w)&&(t.flipped=!0,(c||v)&&(i=a[l+1]),w&&(r=function(t){return\"end\"===t?\"start\":\"start\"===t?\"end\":t}(r)),t.placement=i+(r?\"-\"+r:\"\"),t.offsets.popper=C({},t.offsets.popper,R(t.instance.popper,t.offsets.reference,t.placement)),t=B(t.instance.modifiers,t,\"flip\"))})),t},behavior:\"flip\",padding:5,boundariesElement:\"viewport\",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split(\"-\")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==[\"left\",\"right\"].indexOf(n),s=-1===[\"top\",\"left\"].indexOf(n);return o[a?\"left\":\"top\"]=r[n]-(s?o[a?\"width\":\"height\"]:0),t.placement=F(e),t.offsets.popper=S(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!G(t.instance.modifiers,\"hide\",\"preventOverflow\"))return t;var e=t.offsets.reference,n=M(t.instance.modifiers,(function(t){return\"preventOverflow\"===t.name})).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes[\"x-out-of-boundaries\"]=\"\"}else{if(!1===t.hide)return t;t.hide=!1,t.attributes[\"x-out-of-boundaries\"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,r=M(t.instance.modifiers,(function(t){return\"applyStyle\"===t.name})).gpuAcceleration;void 0!==r&&console.warn(\"WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!\");var a=void 0!==r?r:e.gpuAcceleration,s=h(t.instance.popper),l=N(s),u={position:o.position},f=function(t,e){var n=t.offsets,i=n.popper,o=n.reference,r=Math.round,a=Math.floor,s=function(t){return t},l=r(o.width),u=r(i.width),f=-1!==[\"left\",\"right\"].indexOf(t.placement),d=-1!==t.placement.indexOf(\"-\"),c=e?f||d||l%2==u%2?r:a:s,h=e?r:s;return{left:c(l%2==1&&u%2==1&&!d&&e?i.left-1:i.left),top:h(i.top),bottom:h(i.bottom),right:c(i.right)}}(t,window.devicePixelRatio<2||!$),d=\"bottom\"===n?\"top\":\"bottom\",c=\"right\"===i?\"left\":\"right\",p=Q(\"transform\"),m=void 0,g=void 0;if(g=\"bottom\"===d?\"HTML\"===s.nodeName?-s.clientHeight+f.bottom:-l.height+f.bottom:f.top,m=\"right\"===c?\"HTML\"===s.nodeName?-s.clientWidth+f.right:-l.width+f.right:f.left,a&&p)u[p]=\"translate3d(\"+m+\"px, \"+g+\"px, 0)\",u[d]=0,u[c]=0,u.willChange=\"transform\";else{var v=\"bottom\"===d?-1:1,_=\"right\"===c?-1:1;u[d]=g*v,u[c]=m*_,u.willChange=d+\", \"+c}var b={\"x-placement\":t.placement};return t.attributes=C({},b,t.attributes),t.styles=C({},u,t.styles),t.arrowStyles=C({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:\"bottom\",y:\"right\"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return X(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach((function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)})),t.arrowElement&&Object.keys(t.arrowStyles).length&&X(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var r=L(o,e,t,n.positionFixed),a=j(n.placement,r,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute(\"x-placement\",a),X(e,{position:n.positionFixed?\"fixed\":\"absolute\"}),n},gpuAcceleration:void 0}}},at=function(){function t(e,n){var i=this,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};w(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=o(this.update.bind(this)),this.options=C({},t.Defaults,a),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(C({},t.Defaults.modifiers,a.modifiers)).forEach((function(e){i.options.modifiers[e]=C({},t.Defaults.modifiers[e]||{},a.modifiers?a.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return C({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&r(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var s=this.options.eventsEnabled;s&&this.enableEventListeners(),this.state.eventsEnabled=s}return E(t,[{key:\"update\",value:function(){return H.call(this)}},{key:\"destroy\",value:function(){return W.call(this)}},{key:\"enableEventListeners\",value:function(){return Y.call(this)}},{key:\"disableEventListeners\",value:function(){return z.call(this)}}]),t}();at.Utils=(\"undefined\"!=typeof window?window:t).PopperUtils,at.placements=J,at.Defaults=rt,e.default=at}.call(this,n(4))},function(t,e,n){t.exports=n(5)},function(t,e,n){\n/*!\n  * Bootstrap v4.6.1 (https://getbootstrap.com/)\n  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n!function(t,e,n){\"use strict\";function i(t){return t&&\"object\"==typeof t&&\"default\"in t?t:{default:t}}var o=i(e),r=i(n);function a(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&a(t.prototype,e),n&&a(t,n),t}function l(){return(l=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function f(t){var e=this,n=!1;return o.default(this).one(d.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||d.triggerTransitionEnd(e)}),t),this}var d={TRANSITION_END:\"bsTransitionEnd\",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(t){var e=t.getAttribute(\"data-target\");if(!e||\"#\"===e){var n=t.getAttribute(\"href\");e=n&&\"#\"!==n?n.trim():\"\"}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=o.default(t).css(\"transition-duration\"),n=o.default(t).css(\"transition-delay\"),i=parseFloat(e),r=parseFloat(n);return i||r?(e=e.split(\",\")[0],n=n.split(\",\")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){o.default(t).trigger(\"transitionend\")},supportsTransitionEnd:function(){return Boolean(\"transitionend\")},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],a=r&&d.isElement(r)?\"element\":null==(s=r)?\"\"+s:{}.toString.call(s).match(/\\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(a))throw new Error(t.toUpperCase()+': Option \"'+i+'\" provided type \"'+a+'\" but expected type \"'+o+'\".')}var s},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if(\"function\"==typeof t.getRootNode){var e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?d.findShadowRoot(t.parentNode):null},jQueryDetection:function(){if(void 0===o.default)throw new TypeError(\"Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.\");var t=o.default.fn.jquery.split(\" \")[0].split(\".\");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||t[0]>=4)throw new Error(\"Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=f,o.default.event.special[d.TRANSITION_END]={bindType:\"transitionend\",delegateType:\"transitionend\",handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c=o.default.fn.alert,h=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,\"bs.alert\"),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(\".alert\")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event(\"close.bs.alert\");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass(\"show\"),o.default(t).hasClass(\"fade\")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger(\"closed.bs.alert\").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(\"bs.alert\");i||(i=new t(this),n.data(\"bs.alert\",i)),\"close\"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}}]),t}();o.default(document).on(\"click.bs.alert.data-api\",'[data-dismiss=\"alert\"]',h._handleDismiss(new h)),o.default.fn.alert=h._jQueryInterface,o.default.fn.alert.Constructor=h,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=c,h._jQueryInterface};var p=o.default.fn.button,m=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle=\"buttons\"]')[0];if(n){var i=this._element.querySelector('input:not([type=\"hidden\"])');if(i){if(\"radio\"===i.type)if(i.checked&&this._element.classList.contains(\"active\"))t=!1;else{var r=n.querySelector(\".active\");r&&o.default(r).removeClass(\"active\")}t&&(\"checkbox\"!==i.type&&\"radio\"!==i.type||(i.checked=!this._element.classList.contains(\"active\")),this.shouldAvoidTriggerChange||o.default(i).trigger(\"change\")),i.focus(),e=!1}}this._element.hasAttribute(\"disabled\")||this._element.classList.contains(\"disabled\")||(e&&this._element.setAttribute(\"aria-pressed\",!this._element.classList.contains(\"active\")),t&&o.default(this._element).toggleClass(\"active\"))},e.dispose=function(){o.default.removeData(this._element,\"bs.button\"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),r=i.data(\"bs.button\");r||(r=new t(this),i.data(\"bs.button\",r)),r.shouldAvoidTriggerChange=n,\"toggle\"===e&&r[e]()}))},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}}]),t}();o.default(document).on(\"click.bs.button.data-api\",'[data-toggle^=\"button\"]',(function(t){var e=t.target,n=e;if(o.default(e).hasClass(\"btn\")||(e=o.default(e).closest(\".btn\")[0]),!e||e.hasAttribute(\"disabled\")||e.classList.contains(\"disabled\"))t.preventDefault();else{var i=e.querySelector('input:not([type=\"hidden\"])');if(i&&(i.hasAttribute(\"disabled\")||i.classList.contains(\"disabled\")))return void t.preventDefault();\"INPUT\"!==n.tagName&&\"LABEL\"===e.tagName||m._jQueryInterface.call(o.default(e),\"toggle\",\"INPUT\"===n.tagName)}})).on(\"focus.bs.button.data-api blur.bs.button.data-api\",'[data-toggle^=\"button\"]',(function(t){var e=o.default(t.target).closest(\".btn\")[0];o.default(e).toggleClass(\"focus\",/^focus(in)?$/.test(t.type))})),o.default(window).on(\"load.bs.button.data-api\",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle=\"buttons\"] .btn')),e=0,n=t.length;e<n;e++){var i=t[e],o=i.querySelector('input:not([type=\"hidden\"])');o.checked||o.hasAttribute(\"checked\")?i.classList.add(\"active\"):i.classList.remove(\"active\")}for(var r=0,a=(t=[].slice.call(document.querySelectorAll('[data-toggle=\"button\"]'))).length;r<a;r++){var s=t[r];\"true\"===s.getAttribute(\"aria-pressed\")?s.classList.add(\"active\"):s.classList.remove(\"active\")}})),o.default.fn.button=m._jQueryInterface,o.default.fn.button.Constructor=m,o.default.fn.button.noConflict=function(){return o.default.fn.button=p,m._jQueryInterface};var g=\"carousel\",v=\".bs.carousel\",_=o.default.fn[g],b={interval:5e3,keyboard:!0,slide:!1,pause:\"hover\",wrap:!0,touch:!0},y={interval:\"(number|boolean)\",keyboard:\"boolean\",slide:\"(boolean|string)\",pause:\"(string|boolean)\",wrap:\"boolean\",touch:\"boolean\"},w={TOUCH:\"touch\",PEN:\"pen\"},E=function(){function t(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(\".carousel-indicators\"),this._touchSupported=\"ontouchstart\"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(\"next\")},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(\":visible\")&&\"hidden\"!==t.css(\"visibility\")&&this.next()},e.prev=function(){this._isSliding||this._slide(\"prev\")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(\".carousel-item-next, .carousel-item-prev\")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(\".active.carousel-item\");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one(\"slid.bs.carousel\",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?\"next\":\"prev\";this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(v),o.default.removeData(this._element,\"bs.carousel\"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=l({},b,t),d.typeCheckConfig(g,t,y),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on(\"keydown.bs.carousel\",(function(e){return t._keydown(e)})),\"hover\"===this._config.pause&&o.default(this._element).on(\"mouseenter.bs.carousel\",(function(e){return t.pause(e)})).on(\"mouseleave.bs.carousel\",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&w[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&w[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),\"hover\"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(\".carousel-item img\")).on(\"dragstart.bs.carousel\",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on(\"pointerdown.bs.carousel\",(function(t){return e(t)})),o.default(this._element).on(\"pointerup.bs.carousel\",(function(t){return n(t)})),this._element.classList.add(\"pointer-event\")):(o.default(this._element).on(\"touchstart.bs.carousel\",(function(t){return e(t)})),o.default(this._element).on(\"touchmove.bs.carousel\",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on(\"touchend.bs.carousel\",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(\".carousel-item\")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=\"next\"===t,i=\"prev\"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+(\"prev\"===t?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(\".active.carousel-item\")),r=o.default.Event(\"slide.bs.carousel\",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(\".active\"));o.default(e).removeClass(\"active\");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass(\"active\")}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(\".active.carousel-item\");if(t){var e=parseInt(t.getAttribute(\"data-interval\"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,r,a=this,s=this._element.querySelector(\".active.carousel-item\"),l=this._getItemIndex(s),u=e||s&&this._getItemByDirection(t,s),f=this._getItemIndex(u),c=Boolean(this._interval);if(\"next\"===t?(n=\"carousel-item-left\",i=\"carousel-item-next\",r=\"left\"):(n=\"carousel-item-right\",i=\"carousel-item-prev\",r=\"right\"),u&&o.default(u).hasClass(\"active\"))this._isSliding=!1;else if(!this._triggerSlideEvent(u,r).isDefaultPrevented()&&s&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event(\"slid.bs.carousel\",{relatedTarget:u,direction:r,from:l,to:f});if(o.default(this._element).hasClass(\"slide\")){o.default(u).addClass(i),d.reflow(u),o.default(s).addClass(n),o.default(u).addClass(n);var p=d.getTransitionDurationFromElement(s);o.default(s).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+\" \"+i).addClass(\"active\"),o.default(s).removeClass(\"active \"+i+\" \"+n),a._isSliding=!1,setTimeout((function(){return o.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else o.default(s).removeClass(\"active\"),o.default(u).addClass(\"active\"),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(\"bs.carousel\"),i=l({},b,o.default(this).data());\"object\"==typeof e&&(i=l({},i,e));var r=\"string\"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data(\"bs.carousel\",n)),\"number\"==typeof e)n.to(e);else if(\"string\"==typeof r){if(void 0===n[r])throw new TypeError('No method named \"'+r+'\"');n[r]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass(\"carousel\")){var r=l({},o.default(i).data(),o.default(this).data()),a=this.getAttribute(\"data-slide-to\");a&&(r.interval=!1),t._jQueryInterface.call(o.default(i),r),a&&o.default(i).data(\"bs.carousel\").to(a),e.preventDefault()}}},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}},{key:\"Default\",get:function(){return b}}]),t}();o.default(document).on(\"click.bs.carousel.data-api\",\"[data-slide], [data-slide-to]\",E._dataApiClickHandler),o.default(window).on(\"load.bs.carousel.data-api\",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride=\"carousel\"]')),e=0,n=t.length;e<n;e++){var i=o.default(t[e]);E._jQueryInterface.call(i,i.data())}})),o.default.fn[g]=E._jQueryInterface,o.default.fn[g].Constructor=E,o.default.fn[g].noConflict=function(){return o.default.fn[g]=_,E._jQueryInterface};var T=\"collapse\",C=o.default.fn[T],S={toggle:!0,parent:\"\"},N={toggle:\"boolean\",parent:\"(string|element)\"},D=function(){function t(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle=\"collapse\"][href=\"#'+t.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+t.id+'\"]'));for(var n=[].slice.call(document.querySelectorAll('[data-toggle=\"collapse\"]')),i=0,o=n.length;i<o;i++){var r=n[i],a=d.getSelectorFromElement(r),s=[].slice.call(document.querySelectorAll(a)).filter((function(e){return e===t}));null!==a&&s.length>0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass(\"show\")?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass(\"show\")||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(\".show, .collapsing\")).filter((function(t){return\"string\"==typeof i._config.parent?t.getAttribute(\"data-parent\")===i._config.parent:t.classList.contains(\"collapse\")}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data(\"bs.collapse\"))&&n._isTransitioning))){var r=o.default.Event(\"show.bs.collapse\");if(o.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),\"hide\"),n||o.default(e).data(\"bs.collapse\",null));var a=this._getDimension();o.default(this._element).removeClass(\"collapse\").addClass(\"collapsing\"),this._element.style[a]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass(\"collapsed\").attr(\"aria-expanded\",!0),this.setTransitioning(!0);var s=\"scroll\"+(a[0].toUpperCase()+a.slice(1)),l=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass(\"collapsing\").addClass(\"collapse show\"),i._element.style[a]=\"\",i.setTransitioning(!1),o.default(i._element).trigger(\"shown.bs.collapse\")})).emulateTransitionEnd(l),this._element.style[a]=this._element[s]+\"px\"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass(\"show\")){var e=o.default.Event(\"hide.bs.collapse\");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+\"px\",d.reflow(this._element),o.default(this._element).addClass(\"collapsing\").removeClass(\"collapse show\");var i=this._triggerArray.length;if(i>0)for(var r=0;r<i;r++){var a=this._triggerArray[r],s=d.getSelectorFromElement(a);null!==s&&(o.default([].slice.call(document.querySelectorAll(s))).hasClass(\"show\")||o.default(a).addClass(\"collapsed\").attr(\"aria-expanded\",!1))}this.setTransitioning(!0),this._element.style[n]=\"\";var l=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){t.setTransitioning(!1),o.default(t._element).removeClass(\"collapsing\").addClass(\"collapse\").trigger(\"hidden.bs.collapse\")})).emulateTransitionEnd(l)}}},e.setTransitioning=function(t){this._isTransitioning=t},e.dispose=function(){o.default.removeData(this._element,\"bs.collapse\"),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(t){return(t=l({},S,t)).toggle=Boolean(t.toggle),d.typeCheckConfig(T,t,N),t},e._getDimension=function(){return o.default(this._element).hasClass(\"width\")?\"width\":\"height\"},e._getParent=function(){var e,n=this;d.isElement(this._config.parent)?(e=this._config.parent,void 0!==this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var i='[data-toggle=\"collapse\"][data-parent=\"'+this._config.parent+'\"]',r=[].slice.call(e.querySelectorAll(i));return o.default(r).each((function(e,i){n._addAriaAndCollapsedClass(t._getTargetFromElement(i),[i])})),e},e._addAriaAndCollapsedClass=function(t,e){var n=o.default(t).hasClass(\"show\");e.length&&o.default(e).toggleClass(\"collapsed\",!n).attr(\"aria-expanded\",n)},t._getTargetFromElement=function(t){var e=d.getSelectorFromElement(t);return e?document.querySelector(e):null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(\"bs.collapse\"),r=l({},S,n.data(),\"object\"==typeof e&&e?e:{});if(!i&&r.toggle&&\"string\"==typeof e&&/show|hide/.test(e)&&(r.toggle=!1),i||(i=new t(this,r),n.data(\"bs.collapse\",i)),\"string\"==typeof e){if(void 0===i[e])throw new TypeError('No method named \"'+e+'\"');i[e]()}}))},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}},{key:\"Default\",get:function(){return S}}]),t}();o.default(document).on(\"click.bs.collapse.data-api\",'[data-toggle=\"collapse\"]',(function(t){\"A\"===t.currentTarget.tagName&&t.preventDefault();var e=o.default(this),n=d.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(n));o.default(i).each((function(){var t=o.default(this),n=t.data(\"bs.collapse\")?\"toggle\":e.data();D._jQueryInterface.call(t,n)}))})),o.default.fn[T]=D._jQueryInterface,o.default.fn[T].Constructor=D,o.default.fn[T].noConflict=function(){return o.default.fn[T]=C,D._jQueryInterface};var k=\"dropdown\",A=o.default.fn[k],I=new RegExp(\"38|40|27\"),O={offset:0,flip:!0,boundary:\"scrollParent\",reference:\"toggle\",display:\"dynamic\",popperConfig:null},x={offset:\"(number|string|function)\",flip:\"boolean\",boundary:\"(string|element)\",reference:\"(string|element)\",display:\"string\",popperConfig:\"(null|object)\"},j=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!o.default(this._element).hasClass(\"disabled\")){var e=o.default(this._menu).hasClass(\"show\");t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||o.default(this._element).hasClass(\"disabled\")||o.default(this._menu).hasClass(\"show\"))){var n={relatedTarget:this._element},i=o.default.Event(\"show.bs.dropdown\",n),a=t._getParentFromElement(this._element);if(o.default(a).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar&&e){if(void 0===r.default)throw new TypeError(\"Bootstrap's dropdowns require Popper (https://popper.js.org)\");var s=this._element;\"parent\"===this._config.reference?s=a:d.isElement(this._config.reference)&&(s=this._config.reference,void 0!==this._config.reference.jquery&&(s=this._config.reference[0])),\"scrollParent\"!==this._config.boundary&&o.default(a).addClass(\"position-static\"),this._popper=new r.default(s,this._menu,this._getPopperConfig())}\"ontouchstart\"in document.documentElement&&0===o.default(a).closest(\".navbar-nav\").length&&o.default(document.body).children().on(\"mouseover\",null,o.default.noop),this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),o.default(this._menu).toggleClass(\"show\"),o.default(a).toggleClass(\"show\").trigger(o.default.Event(\"shown.bs.dropdown\",n))}}},e.hide=function(){if(!this._element.disabled&&!o.default(this._element).hasClass(\"disabled\")&&o.default(this._menu).hasClass(\"show\")){var e={relatedTarget:this._element},n=o.default.Event(\"hide.bs.dropdown\",e),i=t._getParentFromElement(this._element);o.default(i).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),o.default(this._menu).toggleClass(\"show\"),o.default(i).toggleClass(\"show\").trigger(o.default.Event(\"hidden.bs.dropdown\",e)))}},e.dispose=function(){o.default.removeData(this._element,\"bs.dropdown\"),o.default(this._element).off(\".bs.dropdown\"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;o.default(this._element).on(\"click.bs.dropdown\",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=l({},this.constructor.Default,o.default(this._element).data(),t),d.typeCheckConfig(k,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(\".dropdown-menu\"))}return this._menu},e._getPlacement=function(){var t=o.default(this._element.parentNode),e=\"bottom-start\";return t.hasClass(\"dropup\")?e=o.default(this._menu).hasClass(\"dropdown-menu-right\")?\"top-end\":\"top-start\":t.hasClass(\"dropright\")?e=\"right-start\":t.hasClass(\"dropleft\")?e=\"left-start\":o.default(this._menu).hasClass(\"dropdown-menu-right\")&&(e=\"bottom-end\"),e},e._detectNavbar=function(){return o.default(this._element).closest(\".navbar\").length>0},e._getOffset=function(){var t=this,e={};return\"function\"==typeof this._config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return\"static\"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),l({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(\"bs.dropdown\");if(n||(n=new t(this,\"object\"==typeof e?e:null),o.default(this).data(\"bs.dropdown\",n)),\"string\"==typeof e){if(void 0===n[e])throw new TypeError('No method named \"'+e+'\"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&(\"keyup\"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle=\"dropdown\"]')),i=0,r=n.length;i<r;i++){var a=t._getParentFromElement(n[i]),s=o.default(n[i]).data(\"bs.dropdown\"),l={relatedTarget:n[i]};if(e&&\"click\"===e.type&&(l.clickEvent=e),s){var u=s._menu;if(o.default(a).hasClass(\"show\")&&!(e&&(\"click\"===e.type&&/input|textarea/i.test(e.target.tagName)||\"keyup\"===e.type&&9===e.which)&&o.default.contains(a,e.target))){var f=o.default.Event(\"hide.bs.dropdown\",l);o.default(a).trigger(f),f.isDefaultPrevented()||(\"ontouchstart\"in document.documentElement&&o.default(document.body).children().off(\"mouseover\",null,o.default.noop),n[i].setAttribute(\"aria-expanded\",\"false\"),s._popper&&s._popper.destroy(),o.default(u).removeClass(\"show\"),o.default(a).removeClass(\"show\").trigger(o.default.Event(\"hidden.bs.dropdown\",l)))}}}},t._getParentFromElement=function(t){var e,n=d.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},t._dataApiKeydownHandler=function(e){if(!(/input|textarea/i.test(e.target.tagName)?32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||o.default(e.target).closest(\".dropdown-menu\").length):!I.test(e.which))&&!this.disabled&&!o.default(this).hasClass(\"disabled\")){var n=t._getParentFromElement(this),i=o.default(n).hasClass(\"show\");if(i||27!==e.which){if(e.preventDefault(),e.stopPropagation(),!i||27===e.which||32===e.which)return 27===e.which&&o.default(n.querySelector('[data-toggle=\"dropdown\"]')).trigger(\"focus\"),void o.default(this).trigger(\"click\");var r=[].slice.call(n.querySelectorAll(\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\")).filter((function(t){return o.default(t).is(\":visible\")}));if(0!==r.length){var a=r.indexOf(e.target);38===e.which&&a>0&&a--,40===e.which&&a<r.length-1&&a++,a<0&&(a=0),r[a].focus()}}}},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}},{key:\"Default\",get:function(){return O}},{key:\"DefaultType\",get:function(){return x}}]),t}();o.default(document).on(\"keydown.bs.dropdown.data-api\",'[data-toggle=\"dropdown\"]',j._dataApiKeydownHandler).on(\"keydown.bs.dropdown.data-api\",\".dropdown-menu\",j._dataApiKeydownHandler).on(\"click.bs.dropdown.data-api keyup.bs.dropdown.data-api\",j._clearMenus).on(\"click.bs.dropdown.data-api\",'[data-toggle=\"dropdown\"]',(function(t){t.preventDefault(),t.stopPropagation(),j._jQueryInterface.call(o.default(this),\"toggle\")})).on(\"click.bs.dropdown.data-api\",\".dropdown form\",(function(t){t.stopPropagation()})),o.default.fn[k]=j._jQueryInterface,o.default.fn[k].Constructor=j,o.default.fn[k].noConflict=function(){return o.default.fn[k]=A,j._jQueryInterface};var L=o.default.fn.modal,P={backdrop:!0,keyboard:!0,focus:!0,show:!0},F={backdrop:\"(boolean|string)\",keyboard:\"boolean\",focus:\"boolean\",show:\"boolean\"},R=function(){function t(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(\".modal-dialog\"),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var e=t.prototype;return e.toggle=function(t){return this._isShown?this.hide():this.show(t)},e.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){var n=o.default.Event(\"show.bs.modal\",{relatedTarget:t});o.default(this._element).trigger(n),n.isDefaultPrevented()||(this._isShown=!0,o.default(this._element).hasClass(\"fade\")&&(this._isTransitioning=!0),this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),o.default(this._element).on(\"click.dismiss.bs.modal\",'[data-dismiss=\"modal\"]',(function(t){return e.hide(t)})),o.default(this._dialog).on(\"mousedown.dismiss.bs.modal\",(function(){o.default(e._element).one(\"mouseup.dismiss.bs.modal\",(function(t){o.default(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)}))})),this._showBackdrop((function(){return e._showElement(t)})))}},e.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=o.default.Event(\"hide.bs.modal\");if(o.default(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=o.default(this._element).hasClass(\"fade\");if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),o.default(document).off(\"focusin.bs.modal\"),o.default(this._element).removeClass(\"show\"),o.default(this._element).off(\"click.dismiss.bs.modal\"),o.default(this._dialog).off(\"mousedown.dismiss.bs.modal\"),i){var r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(t){return e._hideModal(t)})).emulateTransitionEnd(r)}else this._hideModal()}}},e.dispose=function(){[window,this._element,this._dialog].forEach((function(t){return o.default(t).off(\".bs.modal\")})),o.default(document).off(\"focusin.bs.modal\"),o.default.removeData(this._element,\"bs.modal\"),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},e.handleUpdate=function(){this._adjustDialog()},e._getConfig=function(t){return t=l({},P,t),d.typeCheckConfig(\"modal\",t,F),t},e._triggerBackdropTransition=function(){var t=this,e=o.default.Event(\"hidePrevented.bs.modal\");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._element.scrollHeight>document.documentElement.clientHeight;n||(this._element.style.overflowY=\"hidden\"),this._element.classList.add(\"modal-static\");var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove(\"modal-static\"),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=\"\"})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass(\"fade\"),i=this._dialog?this._dialog.querySelector(\".modal-body\"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),o.default(this._dialog).hasClass(\"modal-dialog-scrollable\")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass(\"show\"),this._config.focus&&this._enforceFocus();var r=o.default.Event(\"shown.bs.modal\",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(r)};if(n){var s=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;o.default(document).off(\"focusin.bs.modal\").on(\"focusin.bs.modal\",(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on(\"keydown.dismiss.bs.modal\",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off(\"keydown.dismiss.bs.modal\")},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on(\"resize.bs.modal\",(function(e){return t.handleUpdate(e)})):o.default(window).off(\"resize.bs.modal\")},e._hideModal=function(){var t=this;this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass(\"modal-open\"),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger(\"hidden.bs.modal\")}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass(\"fade\")?\"fade\":\"\";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement(\"div\"),this._backdrop.className=\"modal-backdrop\",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on(\"click.dismiss.bs.modal\",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&(\"static\"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass(\"show\"),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass(\"show\");var r=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass(\"fade\")){var a=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+\"px\"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+\"px\")},e._resetAdjustments=function(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var t=this;if(this._isBodyOverflowing){var e=[].slice.call(document.querySelectorAll(\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\")),n=[].slice.call(document.querySelectorAll(\".sticky-top\"));o.default(e).each((function(e,n){var i=n.style.paddingRight,r=o.default(n).css(\"padding-right\");o.default(n).data(\"padding-right\",i).css(\"padding-right\",parseFloat(r)+t._scrollbarWidth+\"px\")})),o.default(n).each((function(e,n){var i=n.style.marginRight,r=o.default(n).css(\"margin-right\");o.default(n).data(\"margin-right\",i).css(\"margin-right\",parseFloat(r)-t._scrollbarWidth+\"px\")}));var i=document.body.style.paddingRight,r=o.default(document.body).css(\"padding-right\");o.default(document.body).data(\"padding-right\",i).css(\"padding-right\",parseFloat(r)+this._scrollbarWidth+\"px\")}o.default(document.body).addClass(\"modal-open\")},e._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\"));o.default(t).each((function(t,e){var n=o.default(e).data(\"padding-right\");o.default(e).removeData(\"padding-right\"),e.style.paddingRight=n||\"\"}));var e=[].slice.call(document.querySelectorAll(\".sticky-top\"));o.default(e).each((function(t,e){var n=o.default(e).data(\"margin-right\");void 0!==n&&o.default(e).css(\"margin-right\",n).removeData(\"margin-right\")}));var n=o.default(document.body).data(\"padding-right\");o.default(document.body).removeData(\"padding-right\"),document.body.style.paddingRight=n||\"\"},e._getScrollbarWidth=function(){var t=document.createElement(\"div\");t.className=\"modal-scrollbar-measure\",document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this).data(\"bs.modal\"),r=l({},P,o.default(this).data(),\"object\"==typeof e&&e?e:{});if(i||(i=new t(this,r),o.default(this).data(\"bs.modal\",i)),\"string\"==typeof e){if(void 0===i[e])throw new TypeError('No method named \"'+e+'\"');i[e](n)}else r.show&&i.show(n)}))},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}},{key:\"Default\",get:function(){return P}}]),t}();o.default(document).on(\"click.bs.modal.data-api\",'[data-toggle=\"modal\"]',(function(t){var e,n=this,i=d.getSelectorFromElement(this);i&&(e=document.querySelector(i));var r=o.default(e).data(\"bs.modal\")?\"toggle\":l({},o.default(e).data(),o.default(this).data());\"A\"!==this.tagName&&\"AREA\"!==this.tagName||t.preventDefault();var a=o.default(e).one(\"show.bs.modal\",(function(t){t.isDefaultPrevented()||a.one(\"hidden.bs.modal\",(function(){o.default(n).is(\":visible\")&&n.focus()}))}));R._jQueryInterface.call(o.default(e),r,this)})),o.default.fn.modal=R._jQueryInterface,o.default.fn.modal.Constructor=R,o.default.fn.modal.noConflict=function(){return o.default.fn.modal=L,R._jQueryInterface};var M=[\"background\",\"cite\",\"href\",\"itemtype\",\"longdesc\",\"poster\",\"src\",\"xlink:href\"],B={\"*\":[\"class\",\"dir\",\"id\",\"lang\",\"role\",/^aria-[\\w-]*$/i],a:[\"target\",\"href\",\"title\",\"rel\"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:[\"src\",\"srcset\",\"alt\",\"title\",\"width\",\"height\"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},H=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,q=/^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;function Q(t,e,n){if(0===t.length)return t;if(n&&\"function\"==typeof n)return n(t);for(var i=(new window.DOMParser).parseFromString(t,\"text/html\"),o=Object.keys(e),r=[].slice.call(i.body.querySelectorAll(\"*\")),a=function(t,n){var i=r[t],a=i.nodeName.toLowerCase();if(-1===o.indexOf(i.nodeName.toLowerCase()))return i.parentNode.removeChild(i),\"continue\";var s=[].slice.call(i.attributes),l=[].concat(e[\"*\"]||[],e[a]||[]);s.forEach((function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===M.indexOf(n)||Boolean(H.test(t.nodeValue)||q.test(t.nodeValue));for(var i=e.filter((function(t){return t instanceof RegExp})),o=0,r=i.length;o<r;o++)if(i[o].test(n))return!0;return!1})(t,l)||i.removeAttribute(t.nodeName)}))},s=0,l=r.length;s<l;s++)a(s);return i.body.innerHTML}var W=\"tooltip\",U=o.default.fn[W],V=new RegExp(\"(^|\\\\s)bs-tooltip\\\\S+\",\"g\"),Y=[\"sanitize\",\"whiteList\",\"sanitizeFn\"],z={AUTO:\"auto\",TOP:\"top\",RIGHT:\"right\",BOTTOM:\"bottom\",LEFT:\"left\"},K={animation:!0,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,selector:!1,placement:\"top\",offset:0,container:!1,fallbackPlacement:\"flip\",boundary:\"scrollParent\",customClass:\"\",sanitize:!0,sanitizeFn:null,whiteList:B,popperConfig:null},X={animation:\"boolean\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\",delay:\"(number|object)\",html:\"boolean\",selector:\"(string|boolean)\",placement:\"(string|function)\",offset:\"(number|string|function)\",container:\"(string|element|boolean)\",fallbackPlacement:\"(string|array)\",boundary:\"(string|element)\",customClass:\"(string|function)\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",whiteList:\"object\",popperConfig:\"(null|object)\"},$={HIDE:\"hide.bs.tooltip\",HIDDEN:\"hidden.bs.tooltip\",SHOW:\"show.bs.tooltip\",SHOWN:\"shown.bs.tooltip\",INSERTED:\"inserted.bs.tooltip\",CLICK:\"click.bs.tooltip\",FOCUSIN:\"focusin.bs.tooltip\",FOCUSOUT:\"focusout.bs.tooltip\",MOUSEENTER:\"mouseenter.bs.tooltip\",MOUSELEAVE:\"mouseleave.bs.tooltip\"},G=function(){function t(t,e){if(void 0===r.default)throw new TypeError(\"Bootstrap's tooltips require Popper (https://popper.js.org)\");this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass(\"show\"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(\".modal\").off(\"hide.bs.modal\",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if(\"none\"===o.default(this.element).css(\"display\"))throw new Error(\"Please use show on visible elements\");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var a=this.getTipElement(),s=d.getUID(this.constructor.NAME);a.setAttribute(\"id\",s),this.element.setAttribute(\"aria-describedby\",s),this.setContent(),this.config.animation&&o.default(a).addClass(\"fade\");var l=\"function\"==typeof this.config.placement?this.config.placement.call(this,a,this.element):this.config.placement,u=this._getAttachment(l);this.addAttachmentClass(u);var f=this._getContainer();o.default(a).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(a).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new r.default(this.element,a,this._getPopperConfig(u)),o.default(a).addClass(\"show\"),o.default(a).addClass(this.config.customClass),\"ontouchstart\"in document.documentElement&&o.default(document.body).children().on(\"mouseover\",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),\"out\"===e&&t._leave(null,t)};if(o.default(this.tip).hasClass(\"fade\")){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),r=function(){\"show\"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute(\"aria-describedby\"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass(\"show\"),\"ontouchstart\"in document.documentElement&&o.default(document.body).children().off(\"mouseover\",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass(\"fade\")){var a=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=\"\"}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass(\"bs-tooltip-\"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(\".tooltip-inner\")),this.getTitle()),o.default(t).removeClass(\"fade show\")},e.setElementContent=function(t,e){\"object\"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Q(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute(\"data-original-title\");return t||(t=\"function\"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return l({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:\".arrow\"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return\"function\"==typeof this.config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return z[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(\" \").forEach((function(e){if(\"click\"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if(\"manual\"!==e){var n=\"hover\"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=\"hover\"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(\".modal\").on(\"hide.bs.modal\",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:\"manual\",selector:\"\"}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute(\"data-original-title\");(this.element.getAttribute(\"title\")||\"string\"!==t)&&(this.element.setAttribute(\"data-original-title\",this.element.getAttribute(\"title\")||\"\"),this.element.setAttribute(\"title\",\"\"))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusin\"===t.type?\"focus\":\"hover\"]=!0),o.default(e.getTipElement()).hasClass(\"show\")||\"show\"===e._hoverState?e._hoverState=\"show\":(clearTimeout(e._timeout),e._hoverState=\"show\",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){\"show\"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusout\"===t.type?\"focus\":\"hover\"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=\"out\",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){\"out\"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Y.indexOf(t)&&delete e[t]})),\"number\"==typeof(t=l({},this.constructor.Default,e,\"object\"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title&&(t.title=t.title.toString()),\"number\"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(W,t,this.constructor.DefaultType),t.sanitize&&(t.template=Q(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr(\"class\").match(V);null!==e&&e.length&&t.removeClass(e.join(\"\"))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute(\"x-placement\")&&(o.default(t).removeClass(\"fade\"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(\"bs.tooltip\"),r=\"object\"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,r),n.data(\"bs.tooltip\",i)),\"string\"==typeof e)){if(void 0===i[e])throw new TypeError('No method named \"'+e+'\"');i[e]()}}))},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}},{key:\"Default\",get:function(){return K}},{key:\"NAME\",get:function(){return W}},{key:\"DATA_KEY\",get:function(){return\"bs.tooltip\"}},{key:\"Event\",get:function(){return $}},{key:\"EVENT_KEY\",get:function(){return\".bs.tooltip\"}},{key:\"DefaultType\",get:function(){return X}}]),t}();o.default.fn[W]=G._jQueryInterface,o.default.fn[W].Constructor=G,o.default.fn[W].noConflict=function(){return o.default.fn[W]=U,G._jQueryInterface};var J=\"popover\",Z=o.default.fn[J],tt=new RegExp(\"(^|\\\\s)bs-popover\\\\S+\",\"g\"),et=l({},G.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>'}),nt=l({},G.DefaultType,{content:\"(string|element|function)\"}),it={HIDE:\"hide.bs.popover\",HIDDEN:\"hidden.bs.popover\",SHOW:\"show.bs.popover\",SHOWN:\"shown.bs.popover\",INSERTED:\"inserted.bs.popover\",CLICK:\"click.bs.popover\",FOCUSIN:\"focusin.bs.popover\",FOCUSOUT:\"focusout.bs.popover\",MOUSEENTER:\"mouseenter.bs.popover\",MOUSELEAVE:\"mouseleave.bs.popover\"},ot=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass(\"bs-popover-\"+t)},r.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},r.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(\".popover-header\"),this.getTitle());var e=this._getContent();\"function\"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(\".popover-body\"),e),t.removeClass(\"fade show\")},r._getContent=function(){return this.element.getAttribute(\"data-content\")||this.config.content},r._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr(\"class\").match(tt);null!==e&&e.length>0&&t.removeClass(e.join(\"\"))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data(\"bs.popover\"),n=\"object\"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data(\"bs.popover\",e)),\"string\"==typeof t)){if(void 0===e[t])throw new TypeError('No method named \"'+t+'\"');e[t]()}}))},s(i,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}},{key:\"Default\",get:function(){return et}},{key:\"NAME\",get:function(){return J}},{key:\"DATA_KEY\",get:function(){return\"bs.popover\"}},{key:\"Event\",get:function(){return it}},{key:\"EVENT_KEY\",get:function(){return\".bs.popover\"}},{key:\"DefaultType\",get:function(){return nt}}]),i}(G);o.default.fn[J]=ot._jQueryInterface,o.default.fn[J].Constructor=ot,o.default.fn[J].noConflict=function(){return o.default.fn[J]=Z,ot._jQueryInterface};var rt=\"scrollspy\",at=o.default.fn[rt],st={offset:10,method:\"auto\",target:\"\"},lt={offset:\"number\",method:\"string\",target:\"(string|element)\"},ut=function(){function t(t,e){var n=this;this._element=t,this._scrollElement=\"BODY\"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+\" .nav-link,\"+this._config.target+\" .list-group-item,\"+this._config.target+\" .dropdown-item\",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on(\"scroll.bs.scrollspy\",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?\"offset\":\"position\",n=\"auto\"===this._config.method?e:this._config.method,i=\"position\"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=d.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[o.default(e)[n]().top+i,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,\"bs.scrollspy\"),o.default(this._scrollElement).off(\".bs.scrollspy\"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if(\"string\"!=typeof(t=l({},st,\"object\"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr(\"id\");e||(e=d.getUID(rt),o.default(t.target).attr(\"id\",e)),t.target=\"#\"+e}return d.typeCheckConfig(rt,t,lt),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}},e._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(\",\").map((function(e){return e+'[data-target=\"'+t+'\"],'+e+'[href=\"'+t+'\"]'})),n=o.default([].slice.call(document.querySelectorAll(e.join(\",\"))));n.hasClass(\"dropdown-item\")?(n.closest(\".dropdown\").find(\".dropdown-toggle\").addClass(\"active\"),n.addClass(\"active\")):(n.addClass(\"active\"),n.parents(\".nav, .list-group\").prev(\".nav-link, .list-group-item\").addClass(\"active\"),n.parents(\".nav, .list-group\").prev(\".nav-item\").children(\".nav-link\").addClass(\"active\")),o.default(this._scrollElement).trigger(\"activate.bs.scrollspy\",{relatedTarget:t})},e._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter((function(t){return t.classList.contains(\"active\")})).forEach((function(t){return t.classList.remove(\"active\")}))},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(\"bs.scrollspy\");if(n||(n=new t(this,\"object\"==typeof e&&e),o.default(this).data(\"bs.scrollspy\",n)),\"string\"==typeof e){if(void 0===n[e])throw new TypeError('No method named \"'+e+'\"');n[e]()}}))},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}},{key:\"Default\",get:function(){return st}}]),t}();o.default(window).on(\"load.bs.scrollspy.data-api\",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-spy=\"scroll\"]')),e=t.length;e--;){var n=o.default(t[e]);ut._jQueryInterface.call(n,n.data())}})),o.default.fn[rt]=ut._jQueryInterface,o.default.fn[rt].Constructor=ut,o.default.fn[rt].noConflict=function(){return o.default.fn[rt]=at,ut._jQueryInterface};var ft=o.default.fn.tab,dt=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&o.default(this._element).hasClass(\"active\")||o.default(this._element).hasClass(\"disabled\"))){var e,n,i=o.default(this._element).closest(\".nav, .list-group\")[0],r=d.getSelectorFromElement(this._element);if(i){var a=\"UL\"===i.nodeName||\"OL\"===i.nodeName?\"> li > .active\":\".active\";n=(n=o.default.makeArray(o.default(i).find(a)))[n.length-1]}var s=o.default.Event(\"hide.bs.tab\",{relatedTarget:this._element}),l=o.default.Event(\"show.bs.tab\",{relatedTarget:n});if(n&&o.default(n).trigger(s),o.default(this._element).trigger(l),!l.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,i);var u=function(){var e=o.default.Event(\"hidden.bs.tab\",{relatedTarget:t._element}),i=o.default.Event(\"shown.bs.tab\",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,\"bs.tab\"),this._element=null},e._activate=function(t,e,n){var i=this,r=(!e||\"UL\"!==e.nodeName&&\"OL\"!==e.nodeName?o.default(e).children(\".active\"):o.default(e).find(\"> li > .active\"))[0],a=n&&r&&o.default(r).hasClass(\"fade\"),s=function(){return i._transitionComplete(t,r,n)};if(r&&a){var l=d.getTransitionDurationFromElement(r);o.default(r).removeClass(\"show\").one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass(\"active\");var i=o.default(e.parentNode).find(\"> .dropdown-menu .active\")[0];i&&o.default(i).removeClass(\"active\"),\"tab\"===e.getAttribute(\"role\")&&e.setAttribute(\"aria-selected\",!1)}o.default(t).addClass(\"active\"),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!0),d.reflow(t),t.classList.contains(\"fade\")&&t.classList.add(\"show\");var r=t.parentNode;if(r&&\"LI\"===r.nodeName&&(r=r.parentNode),r&&o.default(r).hasClass(\"dropdown-menu\")){var a=o.default(t).closest(\".dropdown\")[0];if(a){var s=[].slice.call(a.querySelectorAll(\".dropdown-toggle\"));o.default(s).addClass(\"active\")}t.setAttribute(\"aria-expanded\",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(\"bs.tab\");if(i||(i=new t(this),n.data(\"bs.tab\",i)),\"string\"==typeof e){if(void 0===i[e])throw new TypeError('No method named \"'+e+'\"');i[e]()}}))},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}}]),t}();o.default(document).on(\"click.bs.tab.data-api\",'[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',(function(t){t.preventDefault(),dt._jQueryInterface.call(o.default(this),\"show\")})),o.default.fn.tab=dt._jQueryInterface,o.default.fn.tab.Constructor=dt,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=ft,dt._jQueryInterface};var ct=\"toast\",ht=o.default.fn[ct],pt={animation:!0,autohide:!0,delay:500},mt={animation:\"boolean\",autohide:\"boolean\",delay:\"number\"},gt=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event(\"show.bs.toast\");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add(\"fade\");var n=function(){t._element.classList.remove(\"showing\"),t._element.classList.add(\"show\"),o.default(t._element).trigger(\"shown.bs.toast\"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(\"hide\"),d.reflow(this._element),this._element.classList.add(\"showing\"),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(\"show\")){var t=o.default.Event(\"hide.bs.toast\");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(\"show\")&&this._element.classList.remove(\"show\"),o.default(this._element).off(\"click.dismiss.bs.toast\"),o.default.removeData(this._element,\"bs.toast\"),this._element=null,this._config=null},e._getConfig=function(t){return t=l({},pt,o.default(this._element).data(),\"object\"==typeof t&&t?t:{}),d.typeCheckConfig(ct,t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on(\"click.dismiss.bs.toast\",'[data-dismiss=\"toast\"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(\"hide\"),o.default(t._element).trigger(\"hidden.bs.toast\")};if(this._element.classList.remove(\"show\"),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(\"bs.toast\");if(i||(i=new t(this,\"object\"==typeof e&&e),n.data(\"bs.toast\",i)),\"string\"==typeof e){if(void 0===i[e])throw new TypeError('No method named \"'+e+'\"');i[e](this)}}))},s(t,null,[{key:\"VERSION\",get:function(){return\"4.6.1\"}},{key:\"DefaultType\",get:function(){return mt}},{key:\"Default\",get:function(){return pt}}]),t}();o.default.fn[ct]=gt._jQueryInterface,o.default.fn[ct].Constructor=gt,o.default.fn[ct].noConflict=function(){return o.default.fn[ct]=ht,gt._jQueryInterface},t.Alert=h,t.Button=m,t.Carousel=E,t.Collapse=D,t.Dropdown=j,t.Modal=R,t.Popover=ot,t.Scrollspy=ut,t.Tab=dt,t.Toast=gt,t.Tooltip=G,t.Util=d,Object.defineProperty(t,\"__esModule\",{value:!0})}(e,n(0),n(1))},function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){\"use strict\";n.r(e);n(0),n(3),n.p;var i=window.matchMedia(\"(prefers-color-scheme: dark)\");function o(t){document.documentElement.dataset.theme=i.matches?\"dark\":\"light\"}function r(t){\"light\"!==t&&\"dark\"!==t&&\"auto\"!==t&&(console.error(`Got invalid theme mode: ${t}. Resetting to auto.`),t=\"auto\");var e=i.matches?\"dark\":\"light\";document.documentElement.dataset.mode=t;var n=\"auto\"==t?e:t;document.documentElement.dataset.theme=n,localStorage.setItem(\"mode\",t),localStorage.setItem(\"theme\",n),console.log(`Changed to ${t} mode using the ${n} theme.`),i.onchange=\"auto\"==t?o:\"\"}function a(){const t=document.documentElement.dataset.defaultMode||\"auto\",e=localStorage.getItem(\"mode\")||t;var n,o,a=i.matches?[\"auto\",\"light\",\"dark\"]:[\"auto\",\"dark\",\"light\"];r(((o=(n=a).indexOf(e)+1)===n.length&&(o=0),n[o]))}$((function(){r(document.documentElement.dataset.mode);const t=document.getElementById(\"theme-switch\");null!=t&&t.addEventListener(\"click\",a)})),$((function(){var t=document.querySelector(\"div.bd-sidebar\");let e=parseInt(sessionStorage.getItem(\"sidebar-scroll-top\"),10);if(isNaN(e)){var n=document.getElementById(\"bd-docs-nav\").querySelectorAll(\".active\");if(n.length>0){var i=n[n.length-1],o=i.getBoundingClientRect().y-t.getBoundingClientRect().y;if(i.getBoundingClientRect().y>.5*window.innerHeight){let e=.25;t.scrollTop=o-t.clientHeight*e,console.log(\"[PST]: Scrolled sidebar using last active link...\")}}}else t.scrollTop=e,console.log(\"[PST]: Scrolled sidebar using stored browser position...\");window.addEventListener(\"beforeunload\",()=>{sessionStorage.setItem(\"sidebar-scroll-top\",t.scrollTop)})})),$((function(){$(window).on(\"activate.bs.scrollspy\",(function(){document.querySelectorAll(\"#bd-toc-nav a\").forEach(t=>{t.parentElement.classList.remove(\"active\")});document.querySelectorAll(\"#bd-toc-nav a.active\").forEach(t=>{t.parentElement.classList.add(\"active\")})}))}))}]);"
  },
  {
    "path": "docs/_static/searchtools.js",
    "content": "/*\n * searchtools.js\n * ~~~~~~~~~~~~~~~~\n *\n * Sphinx JavaScript utilities for the full-text search.\n *\n * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.\n * :license: BSD, see LICENSE for details.\n *\n */\n\"use strict\";\n\n/**\n * Simple result scoring code.\n */\nif (typeof Scorer === \"undefined\") {\n  var Scorer = {\n    // Implement the following function to further tweak the score for each result\n    // The function takes a result array [docname, title, anchor, descr, score, filename]\n    // and returns the new score.\n    /*\n    score: result => {\n      const [docname, title, anchor, descr, score, filename] = result\n      return score\n    },\n    */\n\n    // query matches the full name of an object\n    objNameMatch: 11,\n    // or matches in the last dotted part of the object name\n    objPartialMatch: 6,\n    // Additive scores depending on the priority of the object\n    objPrio: {\n      0: 15, // used to be importantResults\n      1: 5, // used to be objectResults\n      2: -5, // used to be unimportantResults\n    },\n    //  Used when the priority is not in the mapping.\n    objPrioDefault: 0,\n\n    // query found in title\n    title: 15,\n    partialTitle: 7,\n    // query found in terms\n    term: 5,\n    partialTerm: 2,\n  };\n}\n\nconst _removeChildren = (element) => {\n  while (element && element.lastChild) element.removeChild(element.lastChild);\n};\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping\n */\nconst _escapeRegExp = (string) =>\n  string.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n\nconst _displayItem = (item, searchTerms) => {\n  const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;\n  const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT;\n  const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;\n  const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;\n  const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;\n\n  const [docName, title, anchor, descr, score, _filename] = item;\n\n  let listItem = document.createElement(\"li\");\n  let requestUrl;\n  let linkUrl;\n  if (docBuilder === \"dirhtml\") {\n    // dirhtml builder\n    let dirname = docName + \"/\";\n    if (dirname.match(/\\/index\\/$/))\n      dirname = dirname.substring(0, dirname.length - 6);\n    else if (dirname === \"index/\") dirname = \"\";\n    requestUrl = docUrlRoot + dirname;\n    linkUrl = requestUrl;\n  } else {\n    // normal html builders\n    requestUrl = docUrlRoot + docName + docFileSuffix;\n    linkUrl = docName + docLinkSuffix;\n  }\n  let linkEl = listItem.appendChild(document.createElement(\"a\"));\n  linkEl.href = linkUrl + anchor;\n  linkEl.dataset.score = score;\n  linkEl.innerHTML = title;\n  if (descr)\n    listItem.appendChild(document.createElement(\"span\")).innerHTML =\n      \" (\" + descr + \")\";\n  else if (showSearchSummary)\n    fetch(requestUrl)\n      .then((responseData) => responseData.text())\n      .then((data) => {\n        if (data)\n          listItem.appendChild(\n            Search.makeSearchSummary(data, searchTerms)\n          );\n      });\n  Search.output.appendChild(listItem);\n};\nconst _finishSearch = (resultCount) => {\n  Search.stopPulse();\n  Search.title.innerText = _(\"Search Results\");\n  if (!resultCount)\n    Search.status.innerText = Documentation.gettext(\n      \"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.\"\n    );\n  else\n    Search.status.innerText = _(\n      `Search finished, found ${resultCount} page(s) matching the search query.`\n    );\n};\nconst _displayNextItem = (\n  results,\n  resultCount,\n  searchTerms\n) => {\n  // results left, load the summary and display it\n  // this is intended to be dynamic (don't sub resultsCount)\n  if (results.length) {\n    _displayItem(results.pop(), searchTerms);\n    setTimeout(\n      () => _displayNextItem(results, resultCount, searchTerms),\n      5\n    );\n  }\n  // search finished, update title and status message\n  else _finishSearch(resultCount);\n};\n\n/**\n * Default splitQuery function. Can be overridden in ``sphinx.search`` with a\n * custom function per language.\n *\n * The regular expression works by splitting the string on consecutive characters\n * that are not Unicode letters, numbers, underscores, or emoji characters.\n * This is the same as ``\\W+`` in Python, preserving the surrogate pair area.\n */\nif (typeof splitQuery === \"undefined\") {\n  var splitQuery = (query) => query\n      .split(/[^\\p{Letter}\\p{Number}_\\p{Emoji_Presentation}]+/gu)\n      .filter(term => term)  // remove remaining empty strings\n}\n\n/**\n * Search Module\n */\nconst Search = {\n  _index: null,\n  _queued_query: null,\n  _pulse_status: -1,\n\n  htmlToText: (htmlString) => {\n    const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');\n    htmlElement.querySelectorAll(\".headerlink\").forEach((el) => { el.remove() });\n    const docContent = htmlElement.querySelector('[role=\"main\"]');\n    if (docContent !== undefined) return docContent.textContent;\n    console.warn(\n      \"Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template.\"\n    );\n    return \"\";\n  },\n\n  init: () => {\n    const query = new URLSearchParams(window.location.search).get(\"q\");\n    document\n      .querySelectorAll('input[name=\"q\"]')\n      .forEach((el) => (el.value = query));\n    if (query) Search.performSearch(query);\n  },\n\n  loadIndex: (url) =>\n    (document.body.appendChild(document.createElement(\"script\")).src = url),\n\n  setIndex: (index) => {\n    Search._index = index;\n    if (Search._queued_query !== null) {\n      const query = Search._queued_query;\n      Search._queued_query = null;\n      Search.query(query);\n    }\n  },\n\n  hasIndex: () => Search._index !== null,\n\n  deferQuery: (query) => (Search._queued_query = query),\n\n  stopPulse: () => (Search._pulse_status = -1),\n\n  startPulse: () => {\n    if (Search._pulse_status >= 0) return;\n\n    const pulse = () => {\n      Search._pulse_status = (Search._pulse_status + 1) % 4;\n      Search.dots.innerText = \".\".repeat(Search._pulse_status);\n      if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);\n    };\n    pulse();\n  },\n\n  /**\n   * perform a search for something (or wait until index is loaded)\n   */\n  performSearch: (query) => {\n    // create the required interface elements\n    const searchText = document.createElement(\"h2\");\n    searchText.textContent = _(\"Searching\");\n    const searchSummary = document.createElement(\"p\");\n    searchSummary.classList.add(\"search-summary\");\n    searchSummary.innerText = \"\";\n    const searchList = document.createElement(\"ul\");\n    searchList.classList.add(\"search\");\n\n    const out = document.getElementById(\"search-results\");\n    Search.title = out.appendChild(searchText);\n    Search.dots = Search.title.appendChild(document.createElement(\"span\"));\n    Search.status = out.appendChild(searchSummary);\n    Search.output = out.appendChild(searchList);\n\n    const searchProgress = document.getElementById(\"search-progress\");\n    // Some themes don't use the search progress node\n    if (searchProgress) {\n      searchProgress.innerText = _(\"Preparing search...\");\n    }\n    Search.startPulse();\n\n    // index already loaded, the browser was quick!\n    if (Search.hasIndex()) Search.query(query);\n    else Search.deferQuery(query);\n  },\n\n  /**\n   * execute search (requires search index to be loaded)\n   */\n  query: (query) => {\n    const filenames = Search._index.filenames;\n    const docNames = Search._index.docnames;\n    const titles = Search._index.titles;\n    const allTitles = Search._index.alltitles;\n    const indexEntries = Search._index.indexentries;\n\n    // stem the search terms and add them to the correct list\n    const stemmer = new Stemmer();\n    const searchTerms = new Set();\n    const excludedTerms = new Set();\n    const highlightTerms = new Set();\n    const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));\n    splitQuery(query.trim()).forEach((queryTerm) => {\n      const queryTermLower = queryTerm.toLowerCase();\n\n      // maybe skip this \"word\"\n      // stopwords array is from language_data.js\n      if (\n        stopwords.indexOf(queryTermLower) !== -1 ||\n        queryTerm.match(/^\\d+$/)\n      )\n        return;\n\n      // stem the word\n      let word = stemmer.stemWord(queryTermLower);\n      // select the correct list\n      if (word[0] === \"-\") excludedTerms.add(word.substr(1));\n      else {\n        searchTerms.add(word);\n        highlightTerms.add(queryTermLower);\n      }\n    });\n\n    if (SPHINX_HIGHLIGHT_ENABLED) {  // set in sphinx_highlight.js\n      localStorage.setItem(\"sphinx_highlight_terms\", [...highlightTerms].join(\" \"))\n    }\n\n    // console.debug(\"SEARCH: searching for:\");\n    // console.info(\"required: \", [...searchTerms]);\n    // console.info(\"excluded: \", [...excludedTerms]);\n\n    // array of [docname, title, anchor, descr, score, filename]\n    let results = [];\n    _removeChildren(document.getElementById(\"search-progress\"));\n\n    const queryLower = query.toLowerCase();\n    for (const [title, foundTitles] of Object.entries(allTitles)) {\n      if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {\n        for (const [file, id] of foundTitles) {\n          let score = Math.round(100 * queryLower.length / title.length)\n          results.push([\n            docNames[file],\n            titles[file] !== title ? `${titles[file]} > ${title}` : title,\n            id !== null ? \"#\" + id : \"\",\n            null,\n            score,\n            filenames[file],\n          ]);\n        }\n      }\n    }\n\n    // search for explicit entries in index directives\n    for (const [entry, foundEntries] of Object.entries(indexEntries)) {\n      if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {\n        for (const [file, id] of foundEntries) {\n          let score = Math.round(100 * queryLower.length / entry.length)\n          results.push([\n            docNames[file],\n            titles[file],\n            id ? \"#\" + id : \"\",\n            null,\n            score,\n            filenames[file],\n          ]);\n        }\n      }\n    }\n\n    // lookup as object\n    objectTerms.forEach((term) =>\n      results.push(...Search.performObjectSearch(term, objectTerms))\n    );\n\n    // lookup as search terms in fulltext\n    results.push(...Search.performTermsSearch(searchTerms, excludedTerms));\n\n    // let the scorer override scores with a custom scoring function\n    if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));\n\n    // now sort the results by score (in opposite order of appearance, since the\n    // display function below uses pop() to retrieve items) and then\n    // alphabetically\n    results.sort((a, b) => {\n      const leftScore = a[4];\n      const rightScore = b[4];\n      if (leftScore === rightScore) {\n        // same score: sort alphabetically\n        const leftTitle = a[1].toLowerCase();\n        const rightTitle = b[1].toLowerCase();\n        if (leftTitle === rightTitle) return 0;\n        return leftTitle > rightTitle ? -1 : 1; // inverted is intentional\n      }\n      return leftScore > rightScore ? 1 : -1;\n    });\n\n    // remove duplicate search results\n    // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept\n    let seen = new Set();\n    results = results.reverse().reduce((acc, result) => {\n      let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');\n      if (!seen.has(resultStr)) {\n        acc.push(result);\n        seen.add(resultStr);\n      }\n      return acc;\n    }, []);\n\n    results = results.reverse();\n\n    // for debugging\n    //Search.lastresults = results.slice();  // a copy\n    // console.info(\"search results:\", Search.lastresults);\n\n    // print the results\n    _displayNextItem(results, results.length, searchTerms);\n  },\n\n  /**\n   * search for object names\n   */\n  performObjectSearch: (object, objectTerms) => {\n    const filenames = Search._index.filenames;\n    const docNames = Search._index.docnames;\n    const objects = Search._index.objects;\n    const objNames = Search._index.objnames;\n    const titles = Search._index.titles;\n\n    const results = [];\n\n    const objectSearchCallback = (prefix, match) => {\n      const name = match[4]\n      const fullname = (prefix ? prefix + \".\" : \"\") + name;\n      const fullnameLower = fullname.toLowerCase();\n      if (fullnameLower.indexOf(object) < 0) return;\n\n      let score = 0;\n      const parts = fullnameLower.split(\".\");\n\n      // check for different match types: exact matches of full name or\n      // \"last name\" (i.e. last dotted part)\n      if (fullnameLower === object || parts.slice(-1)[0] === object)\n        score += Scorer.objNameMatch;\n      else if (parts.slice(-1)[0].indexOf(object) > -1)\n        score += Scorer.objPartialMatch; // matches in last name\n\n      const objName = objNames[match[1]][2];\n      const title = titles[match[0]];\n\n      // If more than one term searched for, we require other words to be\n      // found in the name/title/description\n      const otherTerms = new Set(objectTerms);\n      otherTerms.delete(object);\n      if (otherTerms.size > 0) {\n        const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();\n        if (\n          [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)\n        )\n          return;\n      }\n\n      let anchor = match[3];\n      if (anchor === \"\") anchor = fullname;\n      else if (anchor === \"-\") anchor = objNames[match[1]][1] + \"-\" + fullname;\n\n      const descr = objName + _(\", in \") + title;\n\n      // add custom score for some objects according to scorer\n      if (Scorer.objPrio.hasOwnProperty(match[2]))\n        score += Scorer.objPrio[match[2]];\n      else score += Scorer.objPrioDefault;\n\n      results.push([\n        docNames[match[0]],\n        fullname,\n        \"#\" + anchor,\n        descr,\n        score,\n        filenames[match[0]],\n      ]);\n    };\n    Object.keys(objects).forEach((prefix) =>\n      objects[prefix].forEach((array) =>\n        objectSearchCallback(prefix, array)\n      )\n    );\n    return results;\n  },\n\n  /**\n   * search for full-text terms in the index\n   */\n  performTermsSearch: (searchTerms, excludedTerms) => {\n    // prepare search\n    const terms = Search._index.terms;\n    const titleTerms = Search._index.titleterms;\n    const filenames = Search._index.filenames;\n    const docNames = Search._index.docnames;\n    const titles = Search._index.titles;\n\n    const scoreMap = new Map();\n    const fileMap = new Map();\n\n    // perform the search on the required terms\n    searchTerms.forEach((word) => {\n      const files = [];\n      const arr = [\n        { files: terms[word], score: Scorer.term },\n        { files: titleTerms[word], score: Scorer.title },\n      ];\n      // add support for partial matches\n      if (word.length > 2) {\n        const escapedWord = _escapeRegExp(word);\n        Object.keys(terms).forEach((term) => {\n          if (term.match(escapedWord) && !terms[word])\n            arr.push({ files: terms[term], score: Scorer.partialTerm });\n        });\n        Object.keys(titleTerms).forEach((term) => {\n          if (term.match(escapedWord) && !titleTerms[word])\n            arr.push({ files: titleTerms[word], score: Scorer.partialTitle });\n        });\n      }\n\n      // no match but word was a required one\n      if (arr.every((record) => record.files === undefined)) return;\n\n      // found search word in contents\n      arr.forEach((record) => {\n        if (record.files === undefined) return;\n\n        let recordFiles = record.files;\n        if (recordFiles.length === undefined) recordFiles = [recordFiles];\n        files.push(...recordFiles);\n\n        // set score for the word in each file\n        recordFiles.forEach((file) => {\n          if (!scoreMap.has(file)) scoreMap.set(file, {});\n          scoreMap.get(file)[word] = record.score;\n        });\n      });\n\n      // create the mapping\n      files.forEach((file) => {\n        if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)\n          fileMap.get(file).push(word);\n        else fileMap.set(file, [word]);\n      });\n    });\n\n    // now check if the files don't contain excluded terms\n    const results = [];\n    for (const [file, wordList] of fileMap) {\n      // check if all requirements are matched\n\n      // as search terms with length < 3 are discarded\n      const filteredTermCount = [...searchTerms].filter(\n        (term) => term.length > 2\n      ).length;\n      if (\n        wordList.length !== searchTerms.size &&\n        wordList.length !== filteredTermCount\n      )\n        continue;\n\n      // ensure that none of the excluded terms is in the search result\n      if (\n        [...excludedTerms].some(\n          (term) =>\n            terms[term] === file ||\n            titleTerms[term] === file ||\n            (terms[term] || []).includes(file) ||\n            (titleTerms[term] || []).includes(file)\n        )\n      )\n        break;\n\n      // select one (max) score for the file.\n      const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));\n      // add result to the result list\n      results.push([\n        docNames[file],\n        titles[file],\n        \"\",\n        null,\n        score,\n        filenames[file],\n      ]);\n    }\n    return results;\n  },\n\n  /**\n   * helper function to return a node containing the\n   * search summary for a given text. keywords is a list\n   * of stemmed words.\n   */\n  makeSearchSummary: (htmlText, keywords) => {\n    const text = Search.htmlToText(htmlText);\n    if (text === \"\") return null;\n\n    const textLower = text.toLowerCase();\n    const actualStartPosition = [...keywords]\n      .map((k) => textLower.indexOf(k.toLowerCase()))\n      .filter((i) => i > -1)\n      .slice(-1)[0];\n    const startWithContext = Math.max(actualStartPosition - 120, 0);\n\n    const top = startWithContext === 0 ? \"\" : \"...\";\n    const tail = startWithContext + 240 < text.length ? \"...\" : \"\";\n\n    let summary = document.createElement(\"p\");\n    summary.classList.add(\"context\");\n    summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;\n\n    return summary;\n  },\n};\n\n_ready(Search.init);\n"
  },
  {
    "path": "docs/_static/sphinx_highlight.js",
    "content": "/* Highlighting utilities for Sphinx HTML documentation. */\n\"use strict\";\n\nconst SPHINX_HIGHLIGHT_ENABLED = true\n\n/**\n * highlight a given string on a node by wrapping it in\n * span elements with the given class name.\n */\nconst _highlight = (node, addItems, text, className) => {\n  if (node.nodeType === Node.TEXT_NODE) {\n    const val = node.nodeValue;\n    const parent = node.parentNode;\n    const pos = val.toLowerCase().indexOf(text);\n    if (\n      pos >= 0 &&\n      !parent.classList.contains(className) &&\n      !parent.classList.contains(\"nohighlight\")\n    ) {\n      let span;\n\n      const closestNode = parent.closest(\"body, svg, foreignObject\");\n      const isInSVG = closestNode && closestNode.matches(\"svg\");\n      if (isInSVG) {\n        span = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n      } else {\n        span = document.createElement(\"span\");\n        span.classList.add(className);\n      }\n\n      span.appendChild(document.createTextNode(val.substr(pos, text.length)));\n      parent.insertBefore(\n        span,\n        parent.insertBefore(\n          document.createTextNode(val.substr(pos + text.length)),\n          node.nextSibling\n        )\n      );\n      node.nodeValue = val.substr(0, pos);\n\n      if (isInSVG) {\n        const rect = document.createElementNS(\n          \"http://www.w3.org/2000/svg\",\n          \"rect\"\n        );\n        const bbox = parent.getBBox();\n        rect.x.baseVal.value = bbox.x;\n        rect.y.baseVal.value = bbox.y;\n        rect.width.baseVal.value = bbox.width;\n        rect.height.baseVal.value = bbox.height;\n        rect.setAttribute(\"class\", className);\n        addItems.push({ parent: parent, target: rect });\n      }\n    }\n  } else if (node.matches && !node.matches(\"button, select, textarea\")) {\n    node.childNodes.forEach((el) => _highlight(el, addItems, text, className));\n  }\n};\nconst _highlightText = (thisNode, text, className) => {\n  let addItems = [];\n  _highlight(thisNode, addItems, text, className);\n  addItems.forEach((obj) =>\n    obj.parent.insertAdjacentElement(\"beforebegin\", obj.target)\n  );\n};\n\n/**\n * Small JavaScript module for the documentation.\n */\nconst SphinxHighlight = {\n\n  /**\n   * highlight the search words provided in localstorage in the text\n   */\n  highlightSearchWords: () => {\n    if (!SPHINX_HIGHLIGHT_ENABLED) return;  // bail if no highlight\n\n    // get and clear terms from localstorage\n    const url = new URL(window.location);\n    const highlight =\n        localStorage.getItem(\"sphinx_highlight_terms\")\n        || url.searchParams.get(\"highlight\")\n        || \"\";\n    localStorage.removeItem(\"sphinx_highlight_terms\")\n    url.searchParams.delete(\"highlight\");\n    window.history.replaceState({}, \"\", url);\n\n    // get individual terms from highlight string\n    const terms = highlight.toLowerCase().split(/\\s+/).filter(x => x);\n    if (terms.length === 0) return; // nothing to do\n\n    // There should never be more than one element matching \"div.body\"\n    const divBody = document.querySelectorAll(\"div.body\");\n    const body = divBody.length ? divBody[0] : document.querySelector(\"body\");\n    window.setTimeout(() => {\n      terms.forEach((term) => _highlightText(body, term, \"highlighted\"));\n    }, 10);\n\n    const searchBox = document.getElementById(\"searchbox\");\n    if (searchBox === null) return;\n    searchBox.appendChild(\n      document\n        .createRange()\n        .createContextualFragment(\n          '<p class=\"highlight-link\">' +\n            '<a href=\"javascript:SphinxHighlight.hideSearchWords()\">' +\n            _(\"Hide Search Matches\") +\n            \"</a></p>\"\n        )\n    );\n  },\n\n  /**\n   * helper function to hide the search marks again\n   */\n  hideSearchWords: () => {\n    document\n      .querySelectorAll(\"#searchbox .highlight-link\")\n      .forEach((el) => el.remove());\n    document\n      .querySelectorAll(\"span.highlighted\")\n      .forEach((el) => el.classList.remove(\"highlighted\"));\n    localStorage.removeItem(\"sphinx_highlight_terms\")\n  },\n\n  initEscapeListener: () => {\n    // only install a listener if it is really needed\n    if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;\n\n    document.addEventListener(\"keydown\", (event) => {\n      // bail for input elements\n      if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;\n      // bail with special keys\n      if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;\n      if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === \"Escape\")) {\n        SphinxHighlight.hideSearchWords();\n        event.preventDefault();\n      }\n    });\n  },\n};\n\n_ready(SphinxHighlight.highlightSearchWords);\n_ready(SphinxHighlight.initEscapeListener);\n"
  },
  {
    "path": "docs/_static/styles/pydata-sphinx-theme.css",
    "content": "/*!\n * Bootstrap v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:540px;--breakpoint-md:720px;--breakpoint-lg:960px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",\"Liberation Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex=\"-1\"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;background-color:transparent}a:hover{color:#0056b3}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:\"\\2014\\00A0\"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:540px){.container,.container-sm{max-width:540px}}@media (min-width:720px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:960px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1400px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:540px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:720px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:960px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:539.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:719.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:959.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") right .75rem center/8px 10px no-repeat,#fff url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") right .75rem center/8px 10px no-repeat,#fff url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E\") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:540px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:540px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:720px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:960px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label:after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label:after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\"}.custom-control-label:after{background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:\"Browse\"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);overflow:hidden;font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:\"Browse\";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:539.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:540px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:719.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:720px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:959.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:960px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:540px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:540px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:540px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:540px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:540px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:720px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:960px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:min-content;content:\"\"}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:540px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width:960px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:\"\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:540px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:720px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:960px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:540px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:720px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:960px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:540px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:720px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:960px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:540px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:720px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:960px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:\"\";background-color:transparent}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:540px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:720px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:960px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd}blockquote,img,pre,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:960px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}:root{--pst-header-height:60px;--pst-font-size-base:15px;--pst-font-size-h1:36px;--pst-font-size-h2:32px;--pst-font-size-h3:26px;--pst-font-size-h4:21px;--pst-font-size-h5:18px;--pst-font-size-h6:16px;--pst-font-size-milli:12px;--pst-sidebar-primary-font-size:0.9em;--pst-sidebar-primary-caption-font-size:0.9em;--pst-font-family-base-system:-apple-system,BlinkMacSystemFont,Segoe UI,\"Helvetica Neue\",Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;--pst-font-family-monospace-system:\"SFMono-Regular\",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--pst-font-family-base:var(--pst-font-family-base-system);--pst-font-family-heading:var(--pst-font-family-base-system);--pst-font-family-monospace:var(--pst-font-family-monospace-system);--pst-icon-check-circle:\"\\f058\";--pst-icon-info-circle:\"\\f05a\";--pst-icon-exclamation-triangle:\"\\f071\";--pst-icon-exclamation-circle:\"\\f06a\";--pst-icon-times-circle:\"\\f057\";--pst-icon-lightbulb:\"\\f0eb\";--pst-icon-admonition-default:var(--pst-icon-info-circle);--pst-icon-admonition-note:var(--pst-icon-info-circle);--pst-icon-admonition-attention:var(--pst-icon-exclamation-circle);--pst-icon-admonition-caution:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-warning:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-danger:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-error:var(--pst-icon-times-circle);--pst-icon-admonition-hint:var(--pst-icon-lightbulb);--pst-icon-admonition-tip:var(--pst-icon-lightbulb);--pst-icon-admonition-important:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-default:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-added:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-changed:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-deprecated:var(--pst-icon-exclamation-circle)}html[data-theme=light]{--pst-color-primary:#459db9;--pst-color-secondary:#ee9040;--pst-color-success:#28a745;--pst-color-info:var(--pst-color-primary);--pst-color-warning:var(--pst-color-secondary);--pst-color-danger:#dc3545;--pst-color-text-base:#333;--pst-color-text-muted:#4d4d4d;--pst-color-border:#c9c9c9;--pst-color-shadow:#d8d8d8;--pst-color-background:#fff;--pst-color-on-background:#fff;--pst-color-surface:#f0f0f0;--pst-color-on-surface:#ffe;--pst-color-panel-background:var(--pst-color-background);--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);--pst-color-inline-code:#e83e8c;--pst-color-target:#fbe54e}html[data-theme=light] .only-dark{display:none!important}html[data-theme=dark]{--pst-color-primary:#459db9;--pst-color-secondary:#ee9040;--pst-color-success:#488757;--pst-color-info:var(--pst-color-primary);--pst-color-warning:var(--pst-color-secondary);--pst-color-danger:#cb4653;--pst-color-text-base:#c9d1d9;--pst-color-text-muted:silver;--pst-color-border:silver;--pst-color-shadow:var(--pst-color-background);--pst-color-background:#121212;--pst-color-on-background:#1e1e1e;--pst-color-surface:#292929;--pst-color-on-surface:#373737;--pst-color-panel-background:var(--pst-color-background-up);--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);--pst-color-inline-code:#dd9ec2;--pst-color-target:#472700}html[data-theme=dark] .only-light{display:none!important}html[data-theme=dark] img{filter:brightness(.8) contrast(1.2)}html{font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 12px)}body{padding-top:var(--pst-header-height);background-color:var(--pst-color-background);font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;color:var(--pst-color-text-base);min-height:100vh;display:flex;flex-direction:column}body::-webkit-scrollbar{width:.3rem;height:.3rem}body::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}body::-webkit-scrollbar-track{background:transparent}body:not(:hover)::-webkit-scrollbar-thumb{visibility:hidden}body::-webkit-scrollbar-track{background:var(--pst-color-background)}p{margin-bottom:1.15rem;font-size:1em;color:var(--pst-color-text-base)}p.rubric{border-bottom:1px solid var(--pst-color-border)}p.centered{text-align:center}a{color:var(--pst-color-link);text-decoration:none}a:hover{color:var(--pst-color-link-hover);text-decoration:underline}a.headerlink{color:var(--pst-color-warning);opacity:.4;font-size:.8em;padding:0 4px;margin-left:.2em;text-decoration:none;transition:all .2s ease-out;user-select:none}a.headerlink:hover{opacity:1}.heading-style,h1,h2,h3,h4,h5,h6{margin:2.75rem 0 1.05rem;font-family:var(--pst-font-family-heading);font-weight:400;line-height:1.15}h1{margin-top:0;font-size:var(--pst-font-size-h1)}h1,h2{color:var(--pst-color-primary)}h2{font-size:var(--pst-font-size-h2)}h3{font-size:var(--pst-font-size-h3)}h3,h4{color:var(--pst-color-text-base)}h4{font-size:var(--pst-font-size-h4)}h5{font-size:var(--pst-font-size-h5)}h5,h6{color:var(--pst-color-text-base)}h6{font-size:var(--pst-font-size-h6)}.text_small,small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid var(pst-color-border)}code,kbd,pre,samp{font-family:var(--pst-font-family-monospace)}kbd{background-color:var(--pst-color-text-base);color:var(--pst-color-background)}code{color:var(--pst-color-inline-code)}pre{margin:1.5em 0;padding:10px;background-color:var(--pst-color-surface);color:var(--pst-color-text-base);line-height:1.2em;border:1px solid var(--pst-color-border);border-radius:.2rem;box-shadow:1px 1px 1px var(--pst-color-shadow)}pre::-webkit-scrollbar{width:.3rem;height:.3rem}pre::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}pre::-webkit-scrollbar-track{background:transparent}pre:not(:hover)::-webkit-scrollbar-thumb{visibility:hidden}pre .linenos{opacity:.5;padding-right:10px}.bd-container{flex-grow:1;display:flex;flex-direction:column}.bd-container .bd-container__inner{flex-grow:1}.bd-content{display:flex;flex-direction:column;padding:3rem 1.5rem 2rem 3rem}@media (max-width:959.98px){.bd-content{padding:3rem 1rem 1rem}}.bd-content .section{max-width:100%}.bd-content .section table{display:block;overflow:auto}footer.bd-footer{width:100%;border-top:1px solid var(--pst-color-border);padding:10px}footer.bd-footer .footer-item p{margin-bottom:0}.bd-footer-article{display:flex;margin-top:auto}.navbar{position:fixed;min-height:var(--pst-header-height);width:100%;padding:0}.navbar .container-xl{height:100%}.navbar #navbar-center,.navbar #navbar-end,.navbar #navbar-start{display:flex;align-items:center}@media (max-width:1199.98px){.navbar #navbar-start{margin-left:1em}.navbar button.navbar-toggler{margin-right:1em;border-color:var(--pst-color-text-muted);color:var(--pst-color-text-muted)}.navbar #navbar-end{margin-bottom:.5em}.navbar #navbar-center>*,.navbar #navbar-end>*{margin-top:.5em}}.bd-header.navbar-light#navbar-main{background:var(--pst-color-on-background)!important;box-shadow:0 .125rem .25rem 0 var(--pst-color-shadow)}.bd-header.navbar-light#navbar-main .navbar-nav li a.nav-link{padding:0 .5rem;color:var(--pst-color-text-muted)}.bd-header.navbar-light#navbar-main .navbar-nav li a.nav-link:focus,.bd-header.navbar-light#navbar-main .navbar-nav li a.nav-link:hover{color:var(--pst-color-primary)}.bd-header.navbar-light#navbar-main .navbar-nav>.active>.nav-link{font-weight:600;color:var(--pst-color-primary)}.bd-header#navbar-main{background-color:var(--pst-color-navbar-background)!important}.navbar-header a{padding:0 15px}@media (min-width:720px){.navbar-center-item{display:inline-block}}.nav-link:hover{border-style:none}#navbar-main-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.bd-sidebar{padding-top:1em;overflow-y:auto;display:flex;flex-direction:column}@media (min-width:720px){.bd-sidebar{border-right:1px solid var(--pst-color-border);position:sticky;top:var(--pst-header-height);z-index:1000;max-height:calc(100vh - var(--pst-header-height))}}.bd-sidebar::-webkit-scrollbar{width:.3rem;height:.3rem}.bd-sidebar::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}.bd-sidebar::-webkit-scrollbar-track{background:transparent}.bd-sidebar:not(:hover)::-webkit-scrollbar-thumb{visibility:hidden}.bd-sidebar.no-sidebar{border-right:0}.bd-sidebar .sidebar-end-items{margin-top:auto;margin-bottom:1em}.bd-sidebar .list-caption{list-style:none;padding-left:0}.bd-sidebar li{position:relative}.bd-sidebar li.has-children>.reference{padding-right:30px}.bd-sidebar label{position:absolute;top:0;right:0;height:30px;width:30px;cursor:pointer;display:flex;justify-content:center;align-items:center}.bd-sidebar label:hover{background:var(--pst-color-surface)}.bd-sidebar label i{display:inline-block;font-size:.75rem;text-align:center}.bd-sidebar label i:hover{color:var(--pst-color-primary)}.bd-sidebar .label-parts{width:100%;height:100%}.bd-sidebar .label-parts:hover{background:none}.bd-sidebar .label-parts i{width:30px;position:absolute;top:.3em;right:0}nav.bd-links{font-size:var(--pst-sidebar-primary-font-size)}nav.bd-links ul{list-style:none;padding:0 0 0 1.5rem}nav.bd-links li>a{display:block;padding:.25rem 1.5rem;color:var(--pst-color-text-muted)}nav.bd-links li>a:hover{color:var(--pst-color-primary);text-decoration:none;background-color:transparent}nav.bd-links li>a.reference.external:after{font-family:Font Awesome\\ 5 Free;font-weight:900;content:\"\\f35d\";font-size:.75em;margin-left:.3em}nav.bd-links .active:hover>a,nav.bd-links .active>a{font-weight:600;color:var(--pst-color-primary)}nav.bd-links p.caption{font-size:var(--pst-sidebar-primary-caption-font-size);text-transform:uppercase;font-weight:700;position:relative;margin-top:1.25em;margin-bottom:.5em;padding:0 1.5rem;color:var(--pst-color-text-base)}nav.bd-links p.caption:first-child{margin-top:0}.bd-sidenav{display:none}.bd-toc-item.active{margin-bottom:1rem}.bd-toc-item.active:not(:first-child){margin-top:1rem}.bd-toc-item.active>.bd-sidenav{display:block}.bd-links{padding-top:1rem;padding-bottom:1rem;margin-right:-15px;margin-left:-15px}@media (min-width:720px){.bd-links{display:block}}.toctree-checkbox{position:absolute;display:none}.toctree-checkbox~ul{display:none}.toctree-checkbox~label i{transform:rotate(0deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label i{transform:rotate(180deg)}.tocsection{border-left:1px solid var(--pst-color-border);padding:.3rem 1.5rem}.tocsection i{padding-right:.5rem}.section-nav{padding-left:0;border-left:1px solid var(--pst-color-border);border-bottom:none}.section-nav ul{padding-left:1rem}.bd-toc{-ms-flex-order:2;order:2;max-height:calc(100vh - 5rem);overflow-y:auto;top:var(--pst-header-height);position:sticky}.bd-toc .onthispage{color:var(--pst-color-text-base)}.bd-toc::-webkit-scrollbar{width:.3rem;height:.3rem}.bd-toc::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}.bd-toc::-webkit-scrollbar-track{background:transparent}.bd-toc:not(:hover)::-webkit-scrollbar-thumb{visibility:hidden}.toc-entry,.toc-entry a{display:block}.toc-entry a{padding:.125rem 1.5rem;color:var(--pst-color-text-muted)}@media (min-width:1200px){.toc-entry a{padding-right:0}}.toc-entry a:hover{color:var(--pst-color-primary);text-decoration:none}.toc-h2{font-size:.85rem}.toc-h3{font-size:.75rem}.toc-h4{font-size:.65rem}.editthispage{padding-top:2rem}.editthispage a{color:var(--pst-color-primary)}#navbar-icon-links i.fa,#navbar-icon-links i.fab,#navbar-icon-links i.far,#navbar-icon-links i.fas{vertical-align:middle;font-style:normal;font-size:1.5rem;line-height:1.25}#navbar-icon-links i.fa-twitter-square:before{color:#55acee}#navbar-icon-links i.fa-gitlab:before{color:#548}#navbar-icon-links i.fa-bitbucket:before{color:#0052cc}#navbar-icon-links img.icon-link-image{height:1.5em;border-radius:.2rem}@media (max-width:959.98px){#navbar-icon-links{flex-direction:row}#navbar-icon-links a{margin-right:.1em}}.navbar-brand{position:relative;height:var(--pst-header-height);width:auto;padding:.5rem 0;display:flex;align-items:center;gap:.5rem}.navbar-brand p{margin-bottom:0}.navbar-brand img{max-width:100%;height:100%;width:auto}.prev-next-area{width:100%}.prev-next-area p{margin:0 .3em;line-height:1.3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{display:flex;align-items:center;border:none;padding:10px;max-width:45%;overflow-x:hidden;color:var(--pst-color-text-muted);text-decoration:none}.prev-next-area a p.prev-next-title{color:var(--pst-color-primary);font-weight:600;font-size:1.1em}.prev-next-area a:hover p.prev-next-title{text-decoration:underline}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.bd-search{position:relative;padding:1rem 15px;margin-right:-15px;margin-left:-15px}.bd-search .icon{position:absolute;color:var(--pst-color-border);left:25px}.bd-search input{background-color:var(--pst-color-background);border-radius:.2rem;border:1px solid var(--pst-color-border);padding-left:35px;color:var(--pst-color-text-base)}.bd-search input::placeholder{color:var(--pst-color-border)}.bd-search input:active,.bd-search input:focus{background-color:var(--pst-color-background);color:var(--pst-color-border)}#theme-switch{border-color:var(--pst-color-primary);margin-right:.4rem}#theme-switch a{color:var(--pst-color-primary);display:none}#theme-switch:hover{background-color:var(--pst-color-primary)}#theme-switch:hover a{color:var(--pst-color-on-background)}html[data-mode=auto] #theme-switch a[data-mode=auto],html[data-mode=dark] #theme-switch a[data-mode=dark],html[data-mode=light] #theme-switch a[data-mode=light]{display:block}#version_switcher_button{border-color:var(--pst-color-border);color:var(--pst-color-text-base)}#version_switcher_menu a.list-group-item.active{background-color:var(--pst-color-primary);border-color:var(--pst-color-primary)}.bd-toc .nav .nav,.list-caption .nav{display:none}.bd-toc .nav .nav.visible,.bd-toc .nav>.active>ul,.list-caption .nav.visible,.list-caption>.active>ul{display:block}.toc-entry>.nav-link.active{font-weight:600;color:var(--pst-color-primary);background-color:transparent;border-left:2px solid var(--pst-color-primary)}div.deprecated,div.versionadded,div.versionchanged{vertical-align:middle;margin:1.5625em auto;padding:0 .6rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-left-color:var(--pst-color-info);border-bottom-color:var(--pst-color-info);border-right-color:var(--pst-color-info);border-top-color:var(--pst-color-info);border-radius:.2rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow);transition:color .25s,background-color .25s,border-color .25s;position:relative;background-color:var(--pst-color-on-background)}div.deprecated>p,div.versionadded>p,div.versionchanged>p{margin-bottom:.6rem;margin-top:.6rem}div.deprecated>p:before,div.versionadded>p:before,div.versionchanged>p:before{content:\"\";width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--pst-color-info);opacity:.1}div.versionadded{border-color:var(--pst-color-success)}div.versionadded p:before{background-color:var(--pst-color-success)}div.versionchanged{border-color:var(--pst-color-warning)}div.versionchanged p:before{background-color:var(--pst-color-warning)}div.deprecated{border-color:var(--pst-color-danger)}div.deprecated p:before{background-color:var(--pst-color-danger)}span.versionmodified{font-weight:700}span.versionmodified:before{font-style:normal;margin-right:.6rem;color:var(--pst-color-info);font-family:Font Awesome\\ 5 Free;font-weight:900;content:var(--pst-icon-versionmodified-default)}span.versionmodified.added:before{color:var(--pst-color-success);content:var(--pst-icon-versionmodified-added)}span.versionmodified.changed:before{color:var(--pst-color-warning);content:var(--pst-icon-versionmodified-changed)}span.versionmodified.deprecated:before{color:var(--pst-color-danger);content:var(--pst-icon-versionmodified-deprecated)}.admonition,div.admonition{margin:1.5625em auto;padding:0 .6rem .8rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-left-color:var(--pst-color-info);border-bottom-color:var(--pst-color-info);border-right-color:var(--pst-color-info);border-top-color:var(--pst-color-info);border-radius:.2rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow);background-color:var(--pst-color-on-background)}.admonition :last-child,div.admonition :last-child{margin-bottom:0}.admonition p.admonition-title~*,div.admonition p.admonition-title~*{margin-left:1.4rem;margin-right:1.4rem}.admonition>ol,.admonition>ul,div.admonition>ol,div.admonition>ul{margin-left:1em}.admonition>.admonition-title,div.admonition>.admonition-title{position:relative;margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;font-weight:700}.admonition>.admonition-title:before,div.admonition>.admonition-title:before{position:absolute;left:.6rem;width:1rem;height:1rem;color:var(--pst-color-info);font-family:Font Awesome\\ 5 Free;font-weight:900;content:var(--pst-icon-admonition-default);opacity:1}.admonition>.admonition-title:after,div.admonition>.admonition-title:after{content:\"\";width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--pst-color-info);opacity:.1}.admonition>.admonition-title+*,div.admonition>.admonition-title+*{margin-top:.4em}.admonition.attention,div.admonition.attention{border-color:var(--pst-color-warning)}.admonition.attention>.admonition-title:after,div.admonition.attention>.admonition-title:after{background-color:var(--pst-color-warning)}.admonition.attention>.admonition-title:before,div.admonition.attention>.admonition-title:before{color:var(--pst-color-warning);content:var(--pst-icon-admonition-attention)}.admonition.caution,div.admonition.caution{border-color:var(--pst-color-warning)}.admonition.caution>.admonition-title:after,div.admonition.caution>.admonition-title:after{background-color:var(--pst-color-warning)}.admonition.caution>.admonition-title:before,div.admonition.caution>.admonition-title:before{color:var(--pst-color-warning);content:var(--pst-icon-admonition-caution)}.admonition.warning,div.admonition.warning{border-color:var(--pst-color-warning)}.admonition.warning>.admonition-title:after,div.admonition.warning>.admonition-title:after{background-color:var(--pst-color-warning)}.admonition.warning>.admonition-title:before,div.admonition.warning>.admonition-title:before{color:var(--pst-color-warning);content:var(--pst-icon-admonition-warning)}.admonition.danger,div.admonition.danger{border-color:var(--pst-color-danger)}.admonition.danger>.admonition-title:after,div.admonition.danger>.admonition-title:after{background-color:var(--pst-color-danger)}.admonition.danger>.admonition-title:before,div.admonition.danger>.admonition-title:before{color:var(--pst-color-danger);content:var(--pst-icon-admonition-danger)}.admonition.error,div.admonition.error{border-color:var(--pst-color-danger)}.admonition.error>.admonition-title:after,div.admonition.error>.admonition-title:after{background-color:var(--pst-color-danger)}.admonition.error>.admonition-title:before,div.admonition.error>.admonition-title:before{color:var(--pst-color-danger);content:var(--pst-icon-admonition-error)}.admonition.hint,div.admonition.hint{border-color:var(--pst-color-success)}.admonition.hint>.admonition-title:after,div.admonition.hint>.admonition-title:after{background-color:var(--pst-color-success)}.admonition.hint>.admonition-title:before,div.admonition.hint>.admonition-title:before{color:var(--pst-color-success);content:var(--pst-icon-admonition-hint)}.admonition.tip,div.admonition.tip{border-color:var(--pst-color-success)}.admonition.tip>.admonition-title:after,div.admonition.tip>.admonition-title:after{background-color:var(--pst-color-success)}.admonition.tip>.admonition-title:before,div.admonition.tip>.admonition-title:before{color:var(--pst-color-success);content:var(--pst-icon-admonition-tip)}.admonition.important,div.admonition.important{border-color:var(--pst-color-success)}.admonition.important>.admonition-title:after,div.admonition.important>.admonition-title:after{background-color:var(--pst-color-success)}.admonition.important>.admonition-title:before,div.admonition.important>.admonition-title:before{color:var(--pst-color-success);content:var(--pst-icon-admonition-important)}.admonition.note,div.admonition.note{border-color:var(--pst-color-info)}.admonition.note>.admonition-title:after,div.admonition.note>.admonition-title:after{background-color:var(--pst-color-info)}.admonition.note>.admonition-title:before,div.admonition.note>.admonition-title:before{color:var(--pst-color-info);content:var(--pst-icon-admonition-note)}.topic{background-color:var(--pst-color-surface)}.topic,aside.sidebar{border-color:var(--pst-color-border)}aside.sidebar{background-color:var(--pst-color-on-surface)}.seealso dd{margin-top:0;margin-bottom:0}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{padding:1px 8px 1px 5px;white-space:nowrap;background-color:var(--pst-color-surface)}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0 0 .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.c .m,.sig.c .s,.sig.c .sc,.sig.cpp .k,.sig.cpp .kt,.sig.cpp .m,.sig.cpp .s,.sig.cpp .sc{color:var(--pst-color-text-base)}.sig-name{color:var(--pst-color-inline-code)}dt:target,span.highlighted{background-color:var(--pst-color-target)}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{border-top:1px solid var(--pst-color-border);border-bottom:1px solid var(--pst-color-border);position:relative;background-color:var(--pst-color-target)}dt.label>span.brackets:not(:only-child):before{content:\"[\"}dt.label>span.brackets:not(:only-child):after{content:\"]\"}a.footnote-reference{vertical-align:super;font-size:small}div.doctest>div.highlight span.gp,span.linenos,table.highlighttable td.linenos{user-select:none;-webkit-user-select:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}dd{margin-top:3px;margin-bottom:10px;margin-left:30px}dl.field-list{display:grid;grid-template-columns:fit-content(30%) minmax(0,1fr)}blockquote{padding:0 1em;color:var(--pst-color-text-muted);border-left:.25em solid var(--pst-color-blockquote-border)}span.guilabel{border:1px solid var(--pst-color-info);color:var(--pst-color-info);font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px;position:relative}span.guilabel:before{content:\"\";width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--pst-color-info);opacity:.1}td.text-align\\:left,th.text-align\\:left{text-align:left}td.text-align\\:right,th.text-align\\:right{text-align:right}table caption,td.text-align\\:center,th.text-align\\:center{text-align:center}table caption{caption-side:top}.toctree-wrapper p.caption{font-size:1.5em;margin-bottom:0}.toctree-wrapper>ul{padding-left:0}.toctree-wrapper li[class^=toctree-l]{list-style:none;margin-bottom:.2em}.toctree-wrapper li[class^=toctree-l]>a{list-style:none;font-size:1.1em}.toctree-wrapper li[class^=toctree-l]>ul{list-style:none;padding-inline-start:1.5em}.toctree-wrapper .toctree-l1>a{font-size:1.3em}.docutils.container{padding-left:unset;padding-right:unset}#ethical-ad-placement .ethical-footer a,#ethical-ad-placement .ethical-footer a:active,#ethical-ad-placement .ethical-footer a:hover,#ethical-ad-placement .ethical-footer a:visited,#ethical-ad-placement .ethical-sidebar a,#ethical-ad-placement .ethical-sidebar a:active,#ethical-ad-placement .ethical-sidebar a:hover,#ethical-ad-placement .ethical-sidebar a:visited{color:var(--pst-color-text-base)}#ethical-ad-placement .ethical-footer,#ethical-ad-placement .ethical-sidebar{background-color:var(--pst-color-background);border:1px solid var(--pst-color-border);border-radius:5px;color:var(--pst-color-text-base);font-size:14px;line-height:20px}.xr-wrap[hidden]{display:block!important}.sd-shadow-lg,.sd-shadow-md,.sd-shadow-sm,.sd-shadow-xs{box-shadow:0 .5rem 1rem var(--pst-color-shadow)}.bd-content .sd-card{border:1px solid var(--pst-color-preformatted-border)}.bd-content .sd-card .sd-card-header{background-color:var(--pst-color-panel-background);border-bottom:1px solid var(--pst-color-preformatted-border)}.bd-content .sd-card .sd-card-footer{border-top:1px solid var(--pst-color-preformatted-border)}.bd-content .sd-card .sd-card-body,.bd-content .sd-card .sd-card-footer{background-color:var(--pst-color-panel-background)}.bd-content details.sd-dropdown:not([open])>.sd-card-header{border:none}.bd-content .sd-tab-set>input:checked+label,.bd-content .sd-tab-set>input:not(:checked)+label:hover{border-color:var(--pst-color-active-navigation);color:var(--pst-color-active-navigation)}.bd-content .sd-tab-set>input:not(:checked)+label:hover{opacity:.5}.bd-content .sd-tab-set>label{color:var(--pst-color-deactive-navigation)}html .bd-content .sd-tab-set>label:hover{color:var(--pst-color-active-navigation);border-color:var(--pst-color-active-navigation);opacity:.5}.container[role=main]{max-width:none;padding-left:0;padding-right:0}.sphinx-bs .card{border:1px solid var(--pst-color-preformatted-border);background-color:var(--pst-color-panel-background)}.sphinx-bs .card .card-header{border-bottom:1px solid var(--pst-color-preformatted-border)}.sphinx-bs .card .card-footer{border-top:1px solid var(--pst-color-preformatted-border)}.bd-content .tabbed-set>input:checked+label,.bd-content .tabbed-set>input:not(:checked)+label:hover{border-color:var(--pst-color-active-navigation);color:var(--pst-color-active-navigation)}.bd-content .tabbed-set>input:not(:checked)+label:hover{opacity:.5}.bd-content .tabbed-set>label{color:var(--pst-color-deactive-navigation)}html .bd-content .tabbed-set>label:hover{color:var(--pst-color-active-navigation);border-color:var(--pst-color-active-navigation);opacity:.5}.bd-content .tabbed-set>.tabbed-content{border-color:var(pst-color-border)}#search-documentation,#search-documentation~form,#search-documentation~p{display:none}div#search-results>h2{margin-top:0}ul.search{margin:0;list-style:none}ul.search li{background-image:none;padding:0}"
  },
  {
    "path": "docs/_static/styles/theme.css",
    "content": "/* Provided by Sphinx's 'basic' theme, and included in the final set of assets */\n@import \"../basic.css\";\n"
  },
  {
    "path": "docs/_static/underscore-1.13.1.js",
    "content": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define('underscore', factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {\n    var current = global._;\n    var exports = global._ = factory();\n    exports.noConflict = function () { global._ = current; return exports; };\n  }()));\n}(this, (function () {\n  //     Underscore.js 1.13.1\n  //     https://underscorejs.org\n  //     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n  //     Underscore may be freely distributed under the MIT license.\n\n  // Current version.\n  var VERSION = '1.13.1';\n\n  // Establish the root object, `window` (`self`) in the browser, `global`\n  // on the server, or `this` in some virtual machines. We use `self`\n  // instead of `window` for `WebWorker` support.\n  var root = typeof self == 'object' && self.self === self && self ||\n            typeof global == 'object' && global.global === global && global ||\n            Function('return this')() ||\n            {};\n\n  // Save bytes in the minified (but not gzipped) version:\n  var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n  var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n  // Create quick reference variables for speed access to core prototypes.\n  var push = ArrayProto.push,\n      slice = ArrayProto.slice,\n      toString = ObjProto.toString,\n      hasOwnProperty = ObjProto.hasOwnProperty;\n\n  // Modern feature detection.\n  var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n      supportsDataView = typeof DataView !== 'undefined';\n\n  // All **ECMAScript 5+** native function implementations that we hope to use\n  // are declared here.\n  var nativeIsArray = Array.isArray,\n      nativeKeys = Object.keys,\n      nativeCreate = Object.create,\n      nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n  // Create references to these builtin functions because we override them.\n  var _isNaN = isNaN,\n      _isFinite = isFinite;\n\n  // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n  var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n  var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n    'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n  // The largest integer that can be represented exactly.\n  var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n  // Some functions take a variable number of arguments, or a few expected\n  // arguments at the beginning and then a variable number of values to operate\n  // on. This helper accumulates all remaining arguments past the function’s\n  // argument length (or an explicit `startIndex`), into an array that becomes\n  // the last argument. Similar to ES6’s \"rest parameter\".\n  function restArguments(func, startIndex) {\n    startIndex = startIndex == null ? func.length - 1 : +startIndex;\n    return function() {\n      var length = Math.max(arguments.length - startIndex, 0),\n          rest = Array(length),\n          index = 0;\n      for (; index < length; index++) {\n        rest[index] = arguments[index + startIndex];\n      }\n      switch (startIndex) {\n        case 0: return func.call(this, rest);\n        case 1: return func.call(this, arguments[0], rest);\n        case 2: return func.call(this, arguments[0], arguments[1], rest);\n      }\n      var args = Array(startIndex + 1);\n      for (index = 0; index < startIndex; index++) {\n        args[index] = arguments[index];\n      }\n      args[startIndex] = rest;\n      return func.apply(this, args);\n    };\n  }\n\n  // Is a given variable an object?\n  function isObject(obj) {\n    var type = typeof obj;\n    return type === 'function' || type === 'object' && !!obj;\n  }\n\n  // Is a given value equal to null?\n  function isNull(obj) {\n    return obj === null;\n  }\n\n  // Is a given variable undefined?\n  function isUndefined(obj) {\n    return obj === void 0;\n  }\n\n  // Is a given value a boolean?\n  function isBoolean(obj) {\n    return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n  }\n\n  // Is a given value a DOM element?\n  function isElement(obj) {\n    return !!(obj && obj.nodeType === 1);\n  }\n\n  // Internal function for creating a `toString`-based type tester.\n  function tagTester(name) {\n    var tag = '[object ' + name + ']';\n    return function(obj) {\n      return toString.call(obj) === tag;\n    };\n  }\n\n  var isString = tagTester('String');\n\n  var isNumber = tagTester('Number');\n\n  var isDate = tagTester('Date');\n\n  var isRegExp = tagTester('RegExp');\n\n  var isError = tagTester('Error');\n\n  var isSymbol = tagTester('Symbol');\n\n  var isArrayBuffer = tagTester('ArrayBuffer');\n\n  var isFunction = tagTester('Function');\n\n  // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n  // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n  var nodelist = root.document && root.document.childNodes;\n  if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n    isFunction = function(obj) {\n      return typeof obj == 'function' || false;\n    };\n  }\n\n  var isFunction$1 = isFunction;\n\n  var hasObjectTag = tagTester('Object');\n\n  // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n  // In IE 11, the most common among them, this problem also applies to\n  // `Map`, `WeakMap` and `Set`.\n  var hasStringTagBug = (\n        supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n      ),\n      isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\n  var isDataView = tagTester('DataView');\n\n  // In IE 10 - Edge 13, we need a different heuristic\n  // to determine whether an object is a `DataView`.\n  function ie10IsDataView(obj) {\n    return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n  }\n\n  var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);\n\n  // Is a given value an array?\n  // Delegates to ECMA5's native `Array.isArray`.\n  var isArray = nativeIsArray || tagTester('Array');\n\n  // Internal function to check whether `key` is an own property name of `obj`.\n  function has$1(obj, key) {\n    return obj != null && hasOwnProperty.call(obj, key);\n  }\n\n  var isArguments = tagTester('Arguments');\n\n  // Define a fallback version of the method in browsers (ahem, IE < 9), where\n  // there isn't any inspectable \"Arguments\" type.\n  (function() {\n    if (!isArguments(arguments)) {\n      isArguments = function(obj) {\n        return has$1(obj, 'callee');\n      };\n    }\n  }());\n\n  var isArguments$1 = isArguments;\n\n  // Is a given object a finite number?\n  function isFinite$1(obj) {\n    return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n  }\n\n  // Is the given value `NaN`?\n  function isNaN$1(obj) {\n    return isNumber(obj) && _isNaN(obj);\n  }\n\n  // Predicate-generating function. Often useful outside of Underscore.\n  function constant(value) {\n    return function() {\n      return value;\n    };\n  }\n\n  // Common internal logic for `isArrayLike` and `isBufferLike`.\n  function createSizePropertyCheck(getSizeProperty) {\n    return function(collection) {\n      var sizeProperty = getSizeProperty(collection);\n      return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n    }\n  }\n\n  // Internal helper to generate a function to obtain property `key` from `obj`.\n  function shallowProperty(key) {\n    return function(obj) {\n      return obj == null ? void 0 : obj[key];\n    };\n  }\n\n  // Internal helper to obtain the `byteLength` property of an object.\n  var getByteLength = shallowProperty('byteLength');\n\n  // Internal helper to determine whether we should spend extensive checks against\n  // `ArrayBuffer` et al.\n  var isBufferLike = createSizePropertyCheck(getByteLength);\n\n  // Is a given value a typed array?\n  var typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\n  function isTypedArray(obj) {\n    // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n    // Otherwise, fall back on the above regular expression.\n    return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n                  isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n  }\n\n  var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n  // Internal helper to obtain the `length` property of an object.\n  var getLength = shallowProperty('length');\n\n  // Internal helper to create a simple lookup structure.\n  // `collectNonEnumProps` used to depend on `_.contains`, but this led to\n  // circular imports. `emulatedSet` is a one-off solution that only works for\n  // arrays of strings.\n  function emulatedSet(keys) {\n    var hash = {};\n    for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n    return {\n      contains: function(key) { return hash[key]; },\n      push: function(key) {\n        hash[key] = true;\n        return keys.push(key);\n      }\n    };\n  }\n\n  // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n  // be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n  // needed.\n  function collectNonEnumProps(obj, keys) {\n    keys = emulatedSet(keys);\n    var nonEnumIdx = nonEnumerableProps.length;\n    var constructor = obj.constructor;\n    var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;\n\n    // Constructor is a special case.\n    var prop = 'constructor';\n    if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n    while (nonEnumIdx--) {\n      prop = nonEnumerableProps[nonEnumIdx];\n      if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n        keys.push(prop);\n      }\n    }\n  }\n\n  // Retrieve the names of an object's own properties.\n  // Delegates to **ECMAScript 5**'s native `Object.keys`.\n  function keys(obj) {\n    if (!isObject(obj)) return [];\n    if (nativeKeys) return nativeKeys(obj);\n    var keys = [];\n    for (var key in obj) if (has$1(obj, key)) keys.push(key);\n    // Ahem, IE < 9.\n    if (hasEnumBug) collectNonEnumProps(obj, keys);\n    return keys;\n  }\n\n  // Is a given array, string, or object empty?\n  // An \"empty\" object has no enumerable own-properties.\n  function isEmpty(obj) {\n    if (obj == null) return true;\n    // Skip the more expensive `toString`-based type checks if `obj` has no\n    // `.length`.\n    var length = getLength(obj);\n    if (typeof length == 'number' && (\n      isArray(obj) || isString(obj) || isArguments$1(obj)\n    )) return length === 0;\n    return getLength(keys(obj)) === 0;\n  }\n\n  // Returns whether an object has a given set of `key:value` pairs.\n  function isMatch(object, attrs) {\n    var _keys = keys(attrs), length = _keys.length;\n    if (object == null) return !length;\n    var obj = Object(object);\n    for (var i = 0; i < length; i++) {\n      var key = _keys[i];\n      if (attrs[key] !== obj[key] || !(key in obj)) return false;\n    }\n    return true;\n  }\n\n  // If Underscore is called as a function, it returns a wrapped object that can\n  // be used OO-style. This wrapper holds altered versions of all functions added\n  // through `_.mixin`. Wrapped objects may be chained.\n  function _$1(obj) {\n    if (obj instanceof _$1) return obj;\n    if (!(this instanceof _$1)) return new _$1(obj);\n    this._wrapped = obj;\n  }\n\n  _$1.VERSION = VERSION;\n\n  // Extracts the result from a wrapped and chained object.\n  _$1.prototype.value = function() {\n    return this._wrapped;\n  };\n\n  // Provide unwrapping proxies for some methods used in engine operations\n  // such as arithmetic and JSON stringification.\n  _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n  _$1.prototype.toString = function() {\n    return String(this._wrapped);\n  };\n\n  // Internal function to wrap or shallow-copy an ArrayBuffer,\n  // typed array or DataView to a new view, reusing the buffer.\n  function toBufferView(bufferSource) {\n    return new Uint8Array(\n      bufferSource.buffer || bufferSource,\n      bufferSource.byteOffset || 0,\n      getByteLength(bufferSource)\n    );\n  }\n\n  // We use this string twice, so give it a name for minification.\n  var tagDataView = '[object DataView]';\n\n  // Internal recursive comparison function for `_.isEqual`.\n  function eq(a, b, aStack, bStack) {\n    // Identical objects are equal. `0 === -0`, but they aren't identical.\n    // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n    if (a === b) return a !== 0 || 1 / a === 1 / b;\n    // `null` or `undefined` only equal to itself (strict comparison).\n    if (a == null || b == null) return false;\n    // `NaN`s are equivalent, but non-reflexive.\n    if (a !== a) return b !== b;\n    // Exhaust primitive checks\n    var type = typeof a;\n    if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n    return deepEq(a, b, aStack, bStack);\n  }\n\n  // Internal recursive comparison function for `_.isEqual`.\n  function deepEq(a, b, aStack, bStack) {\n    // Unwrap any wrapped objects.\n    if (a instanceof _$1) a = a._wrapped;\n    if (b instanceof _$1) b = b._wrapped;\n    // Compare `[[Class]]` names.\n    var className = toString.call(a);\n    if (className !== toString.call(b)) return false;\n    // Work around a bug in IE 10 - Edge 13.\n    if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {\n      if (!isDataView$1(b)) return false;\n      className = tagDataView;\n    }\n    switch (className) {\n      // These types are compared by value.\n      case '[object RegExp]':\n        // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n      case '[object String]':\n        // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n        // equivalent to `new String(\"5\")`.\n        return '' + a === '' + b;\n      case '[object Number]':\n        // `NaN`s are equivalent, but non-reflexive.\n        // Object(NaN) is equivalent to NaN.\n        if (+a !== +a) return +b !== +b;\n        // An `egal` comparison is performed for other numeric values.\n        return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n      case '[object Date]':\n      case '[object Boolean]':\n        // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n        // millisecond representations. Note that invalid dates with millisecond representations\n        // of `NaN` are not equivalent.\n        return +a === +b;\n      case '[object Symbol]':\n        return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n      case '[object ArrayBuffer]':\n      case tagDataView:\n        // Coerce to typed array so we can fall through.\n        return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n    }\n\n    var areArrays = className === '[object Array]';\n    if (!areArrays && isTypedArray$1(a)) {\n        var byteLength = getByteLength(a);\n        if (byteLength !== getByteLength(b)) return false;\n        if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n        areArrays = true;\n    }\n    if (!areArrays) {\n      if (typeof a != 'object' || typeof b != 'object') return false;\n\n      // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n      // from different frames are.\n      var aCtor = a.constructor, bCtor = b.constructor;\n      if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n                               isFunction$1(bCtor) && bCtor instanceof bCtor)\n                          && ('constructor' in a && 'constructor' in b)) {\n        return false;\n      }\n    }\n    // Assume equality for cyclic structures. The algorithm for detecting cyclic\n    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n    // Initializing stack of traversed objects.\n    // It's done here since we only need them for objects and arrays comparison.\n    aStack = aStack || [];\n    bStack = bStack || [];\n    var length = aStack.length;\n    while (length--) {\n      // Linear search. Performance is inversely proportional to the number of\n      // unique nested structures.\n      if (aStack[length] === a) return bStack[length] === b;\n    }\n\n    // Add the first object to the stack of traversed objects.\n    aStack.push(a);\n    bStack.push(b);\n\n    // Recursively compare objects and arrays.\n    if (areArrays) {\n      // Compare array lengths to determine if a deep comparison is necessary.\n      length = a.length;\n      if (length !== b.length) return false;\n      // Deep compare the contents, ignoring non-numeric properties.\n      while (length--) {\n        if (!eq(a[length], b[length], aStack, bStack)) return false;\n      }\n    } else {\n      // Deep compare objects.\n      var _keys = keys(a), key;\n      length = _keys.length;\n      // Ensure that both objects contain the same number of properties before comparing deep equality.\n      if (keys(b).length !== length) return false;\n      while (length--) {\n        // Deep compare each member\n        key = _keys[length];\n        if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n      }\n    }\n    // Remove the first object from the stack of traversed objects.\n    aStack.pop();\n    bStack.pop();\n    return true;\n  }\n\n  // Perform a deep comparison to check if two objects are equal.\n  function isEqual(a, b) {\n    return eq(a, b);\n  }\n\n  // Retrieve all the enumerable property names of an object.\n  function allKeys(obj) {\n    if (!isObject(obj)) return [];\n    var keys = [];\n    for (var key in obj) keys.push(key);\n    // Ahem, IE < 9.\n    if (hasEnumBug) collectNonEnumProps(obj, keys);\n    return keys;\n  }\n\n  // Since the regular `Object.prototype.toString` type tests don't work for\n  // some types in IE 11, we use a fingerprinting heuristic instead, based\n  // on the methods. It's not great, but it's the best we got.\n  // The fingerprint method lists are defined below.\n  function ie11fingerprint(methods) {\n    var length = getLength(methods);\n    return function(obj) {\n      if (obj == null) return false;\n      // `Map`, `WeakMap` and `Set` have no enumerable keys.\n      var keys = allKeys(obj);\n      if (getLength(keys)) return false;\n      for (var i = 0; i < length; i++) {\n        if (!isFunction$1(obj[methods[i]])) return false;\n      }\n      // If we are testing against `WeakMap`, we need to ensure that\n      // `obj` doesn't have a `forEach` method in order to distinguish\n      // it from a regular `Map`.\n      return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n    };\n  }\n\n  // In the interest of compact minification, we write\n  // each string in the fingerprints only once.\n  var forEachName = 'forEach',\n      hasName = 'has',\n      commonInit = ['clear', 'delete'],\n      mapTail = ['get', hasName, 'set'];\n\n  // `Map`, `WeakMap` and `Set` each have slightly different\n  // combinations of the above sublists.\n  var mapMethods = commonInit.concat(forEachName, mapTail),\n      weakMapMethods = commonInit.concat(mapTail),\n      setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n  var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\n  var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\n  var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\n  var isWeakSet = tagTester('WeakSet');\n\n  // Retrieve the values of an object's properties.\n  function values(obj) {\n    var _keys = keys(obj);\n    var length = _keys.length;\n    var values = Array(length);\n    for (var i = 0; i < length; i++) {\n      values[i] = obj[_keys[i]];\n    }\n    return values;\n  }\n\n  // Convert an object into a list of `[key, value]` pairs.\n  // The opposite of `_.object` with one argument.\n  function pairs(obj) {\n    var _keys = keys(obj);\n    var length = _keys.length;\n    var pairs = Array(length);\n    for (var i = 0; i < length; i++) {\n      pairs[i] = [_keys[i], obj[_keys[i]]];\n    }\n    return pairs;\n  }\n\n  // Invert the keys and values of an object. The values must be serializable.\n  function invert(obj) {\n    var result = {};\n    var _keys = keys(obj);\n    for (var i = 0, length = _keys.length; i < length; i++) {\n      result[obj[_keys[i]]] = _keys[i];\n    }\n    return result;\n  }\n\n  // Return a sorted list of the function names available on the object.\n  function functions(obj) {\n    var names = [];\n    for (var key in obj) {\n      if (isFunction$1(obj[key])) names.push(key);\n    }\n    return names.sort();\n  }\n\n  // An internal function for creating assigner functions.\n  function createAssigner(keysFunc, defaults) {\n    return function(obj) {\n      var length = arguments.length;\n      if (defaults) obj = Object(obj);\n      if (length < 2 || obj == null) return obj;\n      for (var index = 1; index < length; index++) {\n        var source = arguments[index],\n            keys = keysFunc(source),\n            l = keys.length;\n        for (var i = 0; i < l; i++) {\n          var key = keys[i];\n          if (!defaults || obj[key] === void 0) obj[key] = source[key];\n        }\n      }\n      return obj;\n    };\n  }\n\n  // Extend a given object with all the properties in passed-in object(s).\n  var extend = createAssigner(allKeys);\n\n  // Assigns a given object with all the own properties in the passed-in\n  // object(s).\n  // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n  var extendOwn = createAssigner(keys);\n\n  // Fill in a given object with default properties.\n  var defaults = createAssigner(allKeys, true);\n\n  // Create a naked function reference for surrogate-prototype-swapping.\n  function ctor() {\n    return function(){};\n  }\n\n  // An internal function for creating a new object that inherits from another.\n  function baseCreate(prototype) {\n    if (!isObject(prototype)) return {};\n    if (nativeCreate) return nativeCreate(prototype);\n    var Ctor = ctor();\n    Ctor.prototype = prototype;\n    var result = new Ctor;\n    Ctor.prototype = null;\n    return result;\n  }\n\n  // Creates an object that inherits from the given prototype object.\n  // If additional properties are provided then they will be added to the\n  // created object.\n  function create(prototype, props) {\n    var result = baseCreate(prototype);\n    if (props) extendOwn(result, props);\n    return result;\n  }\n\n  // Create a (shallow-cloned) duplicate of an object.\n  function clone(obj) {\n    if (!isObject(obj)) return obj;\n    return isArray(obj) ? obj.slice() : extend({}, obj);\n  }\n\n  // Invokes `interceptor` with the `obj` and then returns `obj`.\n  // The primary purpose of this method is to \"tap into\" a method chain, in\n  // order to perform operations on intermediate results within the chain.\n  function tap(obj, interceptor) {\n    interceptor(obj);\n    return obj;\n  }\n\n  // Normalize a (deep) property `path` to array.\n  // Like `_.iteratee`, this function can be customized.\n  function toPath$1(path) {\n    return isArray(path) ? path : [path];\n  }\n  _$1.toPath = toPath$1;\n\n  // Internal wrapper for `_.toPath` to enable minification.\n  // Similar to `cb` for `_.iteratee`.\n  function toPath(path) {\n    return _$1.toPath(path);\n  }\n\n  // Internal function to obtain a nested property in `obj` along `path`.\n  function deepGet(obj, path) {\n    var length = path.length;\n    for (var i = 0; i < length; i++) {\n      if (obj == null) return void 0;\n      obj = obj[path[i]];\n    }\n    return length ? obj : void 0;\n  }\n\n  // Get the value of the (deep) property on `path` from `object`.\n  // If any property in `path` does not exist or if the value is\n  // `undefined`, return `defaultValue` instead.\n  // The `path` is normalized through `_.toPath`.\n  function get(object, path, defaultValue) {\n    var value = deepGet(object, toPath(path));\n    return isUndefined(value) ? defaultValue : value;\n  }\n\n  // Shortcut function for checking if an object has a given property directly on\n  // itself (in other words, not on a prototype). Unlike the internal `has`\n  // function, this public version can also traverse nested properties.\n  function has(obj, path) {\n    path = toPath(path);\n    var length = path.length;\n    for (var i = 0; i < length; i++) {\n      var key = path[i];\n      if (!has$1(obj, key)) return false;\n      obj = obj[key];\n    }\n    return !!length;\n  }\n\n  // Keep the identity function around for default iteratees.\n  function identity(value) {\n    return value;\n  }\n\n  // Returns a predicate for checking whether an object has a given set of\n  // `key:value` pairs.\n  function matcher(attrs) {\n    attrs = extendOwn({}, attrs);\n    return function(obj) {\n      return isMatch(obj, attrs);\n    };\n  }\n\n  // Creates a function that, when passed an object, will traverse that object’s\n  // properties down the given `path`, specified as an array of keys or indices.\n  function property(path) {\n    path = toPath(path);\n    return function(obj) {\n      return deepGet(obj, path);\n    };\n  }\n\n  // Internal function that returns an efficient (for current engines) version\n  // of the passed-in callback, to be repeatedly applied in other Underscore\n  // functions.\n  function optimizeCb(func, context, argCount) {\n    if (context === void 0) return func;\n    switch (argCount == null ? 3 : argCount) {\n      case 1: return function(value) {\n        return func.call(context, value);\n      };\n      // The 2-argument case is omitted because we’re not using it.\n      case 3: return function(value, index, collection) {\n        return func.call(context, value, index, collection);\n      };\n      case 4: return function(accumulator, value, index, collection) {\n        return func.call(context, accumulator, value, index, collection);\n      };\n    }\n    return function() {\n      return func.apply(context, arguments);\n    };\n  }\n\n  // An internal function to generate callbacks that can be applied to each\n  // element in a collection, returning the desired result — either `_.identity`,\n  // an arbitrary callback, a property matcher, or a property accessor.\n  function baseIteratee(value, context, argCount) {\n    if (value == null) return identity;\n    if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n    if (isObject(value) && !isArray(value)) return matcher(value);\n    return property(value);\n  }\n\n  // External wrapper for our callback generator. Users may customize\n  // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n  // This abstraction hides the internal-only `argCount` argument.\n  function iteratee(value, context) {\n    return baseIteratee(value, context, Infinity);\n  }\n  _$1.iteratee = iteratee;\n\n  // The function we call internally to generate a callback. It invokes\n  // `_.iteratee` if overridden, otherwise `baseIteratee`.\n  function cb(value, context, argCount) {\n    if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n    return baseIteratee(value, context, argCount);\n  }\n\n  // Returns the results of applying the `iteratee` to each element of `obj`.\n  // In contrast to `_.map` it returns an object.\n  function mapObject(obj, iteratee, context) {\n    iteratee = cb(iteratee, context);\n    var _keys = keys(obj),\n        length = _keys.length,\n        results = {};\n    for (var index = 0; index < length; index++) {\n      var currentKey = _keys[index];\n      results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n    }\n    return results;\n  }\n\n  // Predicate-generating function. Often useful outside of Underscore.\n  function noop(){}\n\n  // Generates a function for a given object that returns a given property.\n  function propertyOf(obj) {\n    if (obj == null) return noop;\n    return function(path) {\n      return get(obj, path);\n    };\n  }\n\n  // Run a function **n** times.\n  function times(n, iteratee, context) {\n    var accum = Array(Math.max(0, n));\n    iteratee = optimizeCb(iteratee, context, 1);\n    for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n    return accum;\n  }\n\n  // Return a random integer between `min` and `max` (inclusive).\n  function random(min, max) {\n    if (max == null) {\n      max = min;\n      min = 0;\n    }\n    return min + Math.floor(Math.random() * (max - min + 1));\n  }\n\n  // A (possibly faster) way to get the current timestamp as an integer.\n  var now = Date.now || function() {\n    return new Date().getTime();\n  };\n\n  // Internal helper to generate functions for escaping and unescaping strings\n  // to/from HTML interpolation.\n  function createEscaper(map) {\n    var escaper = function(match) {\n      return map[match];\n    };\n    // Regexes for identifying a key that needs to be escaped.\n    var source = '(?:' + keys(map).join('|') + ')';\n    var testRegexp = RegExp(source);\n    var replaceRegexp = RegExp(source, 'g');\n    return function(string) {\n      string = string == null ? '' : '' + string;\n      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n    };\n  }\n\n  // Internal list of HTML entities for escaping.\n  var escapeMap = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#x27;',\n    '`': '&#x60;'\n  };\n\n  // Function for escaping strings to HTML interpolation.\n  var _escape = createEscaper(escapeMap);\n\n  // Internal list of HTML entities for unescaping.\n  var unescapeMap = invert(escapeMap);\n\n  // Function for unescaping strings from HTML interpolation.\n  var _unescape = createEscaper(unescapeMap);\n\n  // By default, Underscore uses ERB-style template delimiters. Change the\n  // following template settings to use alternative delimiters.\n  var templateSettings = _$1.templateSettings = {\n    evaluate: /<%([\\s\\S]+?)%>/g,\n    interpolate: /<%=([\\s\\S]+?)%>/g,\n    escape: /<%-([\\s\\S]+?)%>/g\n  };\n\n  // When customizing `_.templateSettings`, if you don't want to define an\n  // interpolation, evaluation or escaping regex, we need one that is\n  // guaranteed not to match.\n  var noMatch = /(.)^/;\n\n  // Certain characters need to be escaped so that they can be put into a\n  // string literal.\n  var escapes = {\n    \"'\": \"'\",\n    '\\\\': '\\\\',\n    '\\r': 'r',\n    '\\n': 'n',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n  function escapeChar(match) {\n    return '\\\\' + escapes[match];\n  }\n\n  // In order to prevent third-party code injection through\n  // `_.templateSettings.variable`, we test it against the following regular\n  // expression. It is intentionally a bit more liberal than just matching valid\n  // identifiers, but still prevents possible loopholes through defaults or\n  // destructuring assignment.\n  var bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n  // JavaScript micro-templating, similar to John Resig's implementation.\n  // Underscore templating handles arbitrary delimiters, preserves whitespace,\n  // and correctly escapes quotes within interpolated code.\n  // NB: `oldSettings` only exists for backwards compatibility.\n  function template(text, settings, oldSettings) {\n    if (!settings && oldSettings) settings = oldSettings;\n    settings = defaults({}, settings, _$1.templateSettings);\n\n    // Combine delimiters into one regular expression via alternation.\n    var matcher = RegExp([\n      (settings.escape || noMatch).source,\n      (settings.interpolate || noMatch).source,\n      (settings.evaluate || noMatch).source\n    ].join('|') + '|$', 'g');\n\n    // Compile the template source, escaping string literals appropriately.\n    var index = 0;\n    var source = \"__p+='\";\n    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n      source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n      index = offset + match.length;\n\n      if (escape) {\n        source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n      } else if (interpolate) {\n        source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n      } else if (evaluate) {\n        source += \"';\\n\" + evaluate + \"\\n__p+='\";\n      }\n\n      // Adobe VMs need the match returned to produce the correct offset.\n      return match;\n    });\n    source += \"';\\n\";\n\n    var argument = settings.variable;\n    if (argument) {\n      // Insure against third-party code injection. (CVE-2021-23358)\n      if (!bareIdentifier.test(argument)) throw new Error(\n        'variable is not a bare identifier: ' + argument\n      );\n    } else {\n      // If a variable is not specified, place data values in local scope.\n      source = 'with(obj||{}){\\n' + source + '}\\n';\n      argument = 'obj';\n    }\n\n    source = \"var __t,__p='',__j=Array.prototype.join,\" +\n      \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n      source + 'return __p;\\n';\n\n    var render;\n    try {\n      render = new Function(argument, '_', source);\n    } catch (e) {\n      e.source = source;\n      throw e;\n    }\n\n    var template = function(data) {\n      return render.call(this, data, _$1);\n    };\n\n    // Provide the compiled source as a convenience for precompilation.\n    template.source = 'function(' + argument + '){\\n' + source + '}';\n\n    return template;\n  }\n\n  // Traverses the children of `obj` along `path`. If a child is a function, it\n  // is invoked with its parent as context. Returns the value of the final\n  // child, or `fallback` if any child is undefined.\n  function result(obj, path, fallback) {\n    path = toPath(path);\n    var length = path.length;\n    if (!length) {\n      return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n    }\n    for (var i = 0; i < length; i++) {\n      var prop = obj == null ? void 0 : obj[path[i]];\n      if (prop === void 0) {\n        prop = fallback;\n        i = length; // Ensure we don't continue iterating.\n      }\n      obj = isFunction$1(prop) ? prop.call(obj) : prop;\n    }\n    return obj;\n  }\n\n  // Generate a unique integer id (unique within the entire client session).\n  // Useful for temporary DOM ids.\n  var idCounter = 0;\n  function uniqueId(prefix) {\n    var id = ++idCounter + '';\n    return prefix ? prefix + id : id;\n  }\n\n  // Start chaining a wrapped Underscore object.\n  function chain(obj) {\n    var instance = _$1(obj);\n    instance._chain = true;\n    return instance;\n  }\n\n  // Internal function to execute `sourceFunc` bound to `context` with optional\n  // `args`. Determines whether to execute a function as a constructor or as a\n  // normal function.\n  function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n    if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n    var self = baseCreate(sourceFunc.prototype);\n    var result = sourceFunc.apply(self, args);\n    if (isObject(result)) return result;\n    return self;\n  }\n\n  // Partially apply a function by creating a version that has had some of its\n  // arguments pre-filled, without changing its dynamic `this` context. `_` acts\n  // as a placeholder by default, allowing any combination of arguments to be\n  // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n  var partial = restArguments(function(func, boundArgs) {\n    var placeholder = partial.placeholder;\n    var bound = function() {\n      var position = 0, length = boundArgs.length;\n      var args = Array(length);\n      for (var i = 0; i < length; i++) {\n        args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n      }\n      while (position < arguments.length) args.push(arguments[position++]);\n      return executeBound(func, bound, this, this, args);\n    };\n    return bound;\n  });\n\n  partial.placeholder = _$1;\n\n  // Create a function bound to a given object (assigning `this`, and arguments,\n  // optionally).\n  var bind = restArguments(function(func, context, args) {\n    if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n    var bound = restArguments(function(callArgs) {\n      return executeBound(func, bound, context, this, args.concat(callArgs));\n    });\n    return bound;\n  });\n\n  // Internal helper for collection methods to determine whether a collection\n  // should be iterated as an array or as an object.\n  // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n  // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n  var isArrayLike = createSizePropertyCheck(getLength);\n\n  // Internal implementation of a recursive `flatten` function.\n  function flatten$1(input, depth, strict, output) {\n    output = output || [];\n    if (!depth && depth !== 0) {\n      depth = Infinity;\n    } else if (depth <= 0) {\n      return output.concat(input);\n    }\n    var idx = output.length;\n    for (var i = 0, length = getLength(input); i < length; i++) {\n      var value = input[i];\n      if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n        // Flatten current level of array or arguments object.\n        if (depth > 1) {\n          flatten$1(value, depth - 1, strict, output);\n          idx = output.length;\n        } else {\n          var j = 0, len = value.length;\n          while (j < len) output[idx++] = value[j++];\n        }\n      } else if (!strict) {\n        output[idx++] = value;\n      }\n    }\n    return output;\n  }\n\n  // Bind a number of an object's methods to that object. Remaining arguments\n  // are the method names to be bound. Useful for ensuring that all callbacks\n  // defined on an object belong to it.\n  var bindAll = restArguments(function(obj, keys) {\n    keys = flatten$1(keys, false, false);\n    var index = keys.length;\n    if (index < 1) throw new Error('bindAll must be passed function names');\n    while (index--) {\n      var key = keys[index];\n      obj[key] = bind(obj[key], obj);\n    }\n    return obj;\n  });\n\n  // Memoize an expensive function by storing its results.\n  function memoize(func, hasher) {\n    var memoize = function(key) {\n      var cache = memoize.cache;\n      var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n      if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n      return cache[address];\n    };\n    memoize.cache = {};\n    return memoize;\n  }\n\n  // Delays a function for the given number of milliseconds, and then calls\n  // it with the arguments supplied.\n  var delay = restArguments(function(func, wait, args) {\n    return setTimeout(function() {\n      return func.apply(null, args);\n    }, wait);\n  });\n\n  // Defers a function, scheduling it to run after the current call stack has\n  // cleared.\n  var defer = partial(delay, _$1, 1);\n\n  // Returns a function, that, when invoked, will only be triggered at most once\n  // during a given window of time. Normally, the throttled function will run\n  // as much as it can, without ever going more than once per `wait` duration;\n  // but if you'd like to disable the execution on the leading edge, pass\n  // `{leading: false}`. To disable execution on the trailing edge, ditto.\n  function throttle(func, wait, options) {\n    var timeout, context, args, result;\n    var previous = 0;\n    if (!options) options = {};\n\n    var later = function() {\n      previous = options.leading === false ? 0 : now();\n      timeout = null;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    };\n\n    var throttled = function() {\n      var _now = now();\n      if (!previous && options.leading === false) previous = _now;\n      var remaining = wait - (_now - previous);\n      context = this;\n      args = arguments;\n      if (remaining <= 0 || remaining > wait) {\n        if (timeout) {\n          clearTimeout(timeout);\n          timeout = null;\n        }\n        previous = _now;\n        result = func.apply(context, args);\n        if (!timeout) context = args = null;\n      } else if (!timeout && options.trailing !== false) {\n        timeout = setTimeout(later, remaining);\n      }\n      return result;\n    };\n\n    throttled.cancel = function() {\n      clearTimeout(timeout);\n      previous = 0;\n      timeout = context = args = null;\n    };\n\n    return throttled;\n  }\n\n  // When a sequence of calls of the returned function ends, the argument\n  // function is triggered. The end of a sequence is defined by the `wait`\n  // parameter. If `immediate` is passed, the argument function will be\n  // triggered at the beginning of the sequence instead of at the end.\n  function debounce(func, wait, immediate) {\n    var timeout, previous, args, result, context;\n\n    var later = function() {\n      var passed = now() - previous;\n      if (wait > passed) {\n        timeout = setTimeout(later, wait - passed);\n      } else {\n        timeout = null;\n        if (!immediate) result = func.apply(context, args);\n        // This check is needed because `func` can recursively invoke `debounced`.\n        if (!timeout) args = context = null;\n      }\n    };\n\n    var debounced = restArguments(function(_args) {\n      context = this;\n      args = _args;\n      previous = now();\n      if (!timeout) {\n        timeout = setTimeout(later, wait);\n        if (immediate) result = func.apply(context, args);\n      }\n      return result;\n    });\n\n    debounced.cancel = function() {\n      clearTimeout(timeout);\n      timeout = args = context = null;\n    };\n\n    return debounced;\n  }\n\n  // Returns the first function passed as an argument to the second,\n  // allowing you to adjust arguments, run code before and after, and\n  // conditionally execute the original function.\n  function wrap(func, wrapper) {\n    return partial(wrapper, func);\n  }\n\n  // Returns a negated version of the passed-in predicate.\n  function negate(predicate) {\n    return function() {\n      return !predicate.apply(this, arguments);\n    };\n  }\n\n  // Returns a function that is the composition of a list of functions, each\n  // consuming the return value of the function that follows.\n  function compose() {\n    var args = arguments;\n    var start = args.length - 1;\n    return function() {\n      var i = start;\n      var result = args[start].apply(this, arguments);\n      while (i--) result = args[i].call(this, result);\n      return result;\n    };\n  }\n\n  // Returns a function that will only be executed on and after the Nth call.\n  function after(times, func) {\n    return function() {\n      if (--times < 1) {\n        return func.apply(this, arguments);\n      }\n    };\n  }\n\n  // Returns a function that will only be executed up to (but not including) the\n  // Nth call.\n  function before(times, func) {\n    var memo;\n    return function() {\n      if (--times > 0) {\n        memo = func.apply(this, arguments);\n      }\n      if (times <= 1) func = null;\n      return memo;\n    };\n  }\n\n  // Returns a function that will be executed at most one time, no matter how\n  // often you call it. Useful for lazy initialization.\n  var once = partial(before, 2);\n\n  // Returns the first key on an object that passes a truth test.\n  function findKey(obj, predicate, context) {\n    predicate = cb(predicate, context);\n    var _keys = keys(obj), key;\n    for (var i = 0, length = _keys.length; i < length; i++) {\n      key = _keys[i];\n      if (predicate(obj[key], key, obj)) return key;\n    }\n  }\n\n  // Internal function to generate `_.findIndex` and `_.findLastIndex`.\n  function createPredicateIndexFinder(dir) {\n    return function(array, predicate, context) {\n      predicate = cb(predicate, context);\n      var length = getLength(array);\n      var index = dir > 0 ? 0 : length - 1;\n      for (; index >= 0 && index < length; index += dir) {\n        if (predicate(array[index], index, array)) return index;\n      }\n      return -1;\n    };\n  }\n\n  // Returns the first index on an array-like that passes a truth test.\n  var findIndex = createPredicateIndexFinder(1);\n\n  // Returns the last index on an array-like that passes a truth test.\n  var findLastIndex = createPredicateIndexFinder(-1);\n\n  // Use a comparator function to figure out the smallest index at which\n  // an object should be inserted so as to maintain order. Uses binary search.\n  function sortedIndex(array, obj, iteratee, context) {\n    iteratee = cb(iteratee, context, 1);\n    var value = iteratee(obj);\n    var low = 0, high = getLength(array);\n    while (low < high) {\n      var mid = Math.floor((low + high) / 2);\n      if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n    }\n    return low;\n  }\n\n  // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\n  function createIndexFinder(dir, predicateFind, sortedIndex) {\n    return function(array, item, idx) {\n      var i = 0, length = getLength(array);\n      if (typeof idx == 'number') {\n        if (dir > 0) {\n          i = idx >= 0 ? idx : Math.max(idx + length, i);\n        } else {\n          length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n        }\n      } else if (sortedIndex && idx && length) {\n        idx = sortedIndex(array, item);\n        return array[idx] === item ? idx : -1;\n      }\n      if (item !== item) {\n        idx = predicateFind(slice.call(array, i, length), isNaN$1);\n        return idx >= 0 ? idx + i : -1;\n      }\n      for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n        if (array[idx] === item) return idx;\n      }\n      return -1;\n    };\n  }\n\n  // Return the position of the first occurrence of an item in an array,\n  // or -1 if the item is not included in the array.\n  // If the array is large and already in sort order, pass `true`\n  // for **isSorted** to use binary search.\n  var indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n  // Return the position of the last occurrence of an item in an array,\n  // or -1 if the item is not included in the array.\n  var lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n  // Return the first value which passes a truth test.\n  function find(obj, predicate, context) {\n    var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n    var key = keyFinder(obj, predicate, context);\n    if (key !== void 0 && key !== -1) return obj[key];\n  }\n\n  // Convenience version of a common use case of `_.find`: getting the first\n  // object containing specific `key:value` pairs.\n  function findWhere(obj, attrs) {\n    return find(obj, matcher(attrs));\n  }\n\n  // The cornerstone for collection functions, an `each`\n  // implementation, aka `forEach`.\n  // Handles raw objects in addition to array-likes. Treats all\n  // sparse array-likes as if they were dense.\n  function each(obj, iteratee, context) {\n    iteratee = optimizeCb(iteratee, context);\n    var i, length;\n    if (isArrayLike(obj)) {\n      for (i = 0, length = obj.length; i < length; i++) {\n        iteratee(obj[i], i, obj);\n      }\n    } else {\n      var _keys = keys(obj);\n      for (i = 0, length = _keys.length; i < length; i++) {\n        iteratee(obj[_keys[i]], _keys[i], obj);\n      }\n    }\n    return obj;\n  }\n\n  // Return the results of applying the iteratee to each element.\n  function map(obj, iteratee, context) {\n    iteratee = cb(iteratee, context);\n    var _keys = !isArrayLike(obj) && keys(obj),\n        length = (_keys || obj).length,\n        results = Array(length);\n    for (var index = 0; index < length; index++) {\n      var currentKey = _keys ? _keys[index] : index;\n      results[index] = iteratee(obj[currentKey], currentKey, obj);\n    }\n    return results;\n  }\n\n  // Internal helper to create a reducing function, iterating left or right.\n  function createReduce(dir) {\n    // Wrap code that reassigns argument variables in a separate function than\n    // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n    var reducer = function(obj, iteratee, memo, initial) {\n      var _keys = !isArrayLike(obj) && keys(obj),\n          length = (_keys || obj).length,\n          index = dir > 0 ? 0 : length - 1;\n      if (!initial) {\n        memo = obj[_keys ? _keys[index] : index];\n        index += dir;\n      }\n      for (; index >= 0 && index < length; index += dir) {\n        var currentKey = _keys ? _keys[index] : index;\n        memo = iteratee(memo, obj[currentKey], currentKey, obj);\n      }\n      return memo;\n    };\n\n    return function(obj, iteratee, memo, context) {\n      var initial = arguments.length >= 3;\n      return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n    };\n  }\n\n  // **Reduce** builds up a single result from a list of values, aka `inject`,\n  // or `foldl`.\n  var reduce = createReduce(1);\n\n  // The right-associative version of reduce, also known as `foldr`.\n  var reduceRight = createReduce(-1);\n\n  // Return all the elements that pass a truth test.\n  function filter(obj, predicate, context) {\n    var results = [];\n    predicate = cb(predicate, context);\n    each(obj, function(value, index, list) {\n      if (predicate(value, index, list)) results.push(value);\n    });\n    return results;\n  }\n\n  // Return all the elements for which a truth test fails.\n  function reject(obj, predicate, context) {\n    return filter(obj, negate(cb(predicate)), context);\n  }\n\n  // Determine whether all of the elements pass a truth test.\n  function every(obj, predicate, context) {\n    predicate = cb(predicate, context);\n    var _keys = !isArrayLike(obj) && keys(obj),\n        length = (_keys || obj).length;\n    for (var index = 0; index < length; index++) {\n      var currentKey = _keys ? _keys[index] : index;\n      if (!predicate(obj[currentKey], currentKey, obj)) return false;\n    }\n    return true;\n  }\n\n  // Determine if at least one element in the object passes a truth test.\n  function some(obj, predicate, context) {\n    predicate = cb(predicate, context);\n    var _keys = !isArrayLike(obj) && keys(obj),\n        length = (_keys || obj).length;\n    for (var index = 0; index < length; index++) {\n      var currentKey = _keys ? _keys[index] : index;\n      if (predicate(obj[currentKey], currentKey, obj)) return true;\n    }\n    return false;\n  }\n\n  // Determine if the array or object contains a given item (using `===`).\n  function contains(obj, item, fromIndex, guard) {\n    if (!isArrayLike(obj)) obj = values(obj);\n    if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n    return indexOf(obj, item, fromIndex) >= 0;\n  }\n\n  // Invoke a method (with arguments) on every item in a collection.\n  var invoke = restArguments(function(obj, path, args) {\n    var contextPath, func;\n    if (isFunction$1(path)) {\n      func = path;\n    } else {\n      path = toPath(path);\n      contextPath = path.slice(0, -1);\n      path = path[path.length - 1];\n    }\n    return map(obj, function(context) {\n      var method = func;\n      if (!method) {\n        if (contextPath && contextPath.length) {\n          context = deepGet(context, contextPath);\n        }\n        if (context == null) return void 0;\n        method = context[path];\n      }\n      return method == null ? method : method.apply(context, args);\n    });\n  });\n\n  // Convenience version of a common use case of `_.map`: fetching a property.\n  function pluck(obj, key) {\n    return map(obj, property(key));\n  }\n\n  // Convenience version of a common use case of `_.filter`: selecting only\n  // objects containing specific `key:value` pairs.\n  function where(obj, attrs) {\n    return filter(obj, matcher(attrs));\n  }\n\n  // Return the maximum element (or element-based computation).\n  function max(obj, iteratee, context) {\n    var result = -Infinity, lastComputed = -Infinity,\n        value, computed;\n    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n      obj = isArrayLike(obj) ? obj : values(obj);\n      for (var i = 0, length = obj.length; i < length; i++) {\n        value = obj[i];\n        if (value != null && value > result) {\n          result = value;\n        }\n      }\n    } else {\n      iteratee = cb(iteratee, context);\n      each(obj, function(v, index, list) {\n        computed = iteratee(v, index, list);\n        if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n          result = v;\n          lastComputed = computed;\n        }\n      });\n    }\n    return result;\n  }\n\n  // Return the minimum element (or element-based computation).\n  function min(obj, iteratee, context) {\n    var result = Infinity, lastComputed = Infinity,\n        value, computed;\n    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n      obj = isArrayLike(obj) ? obj : values(obj);\n      for (var i = 0, length = obj.length; i < length; i++) {\n        value = obj[i];\n        if (value != null && value < result) {\n          result = value;\n        }\n      }\n    } else {\n      iteratee = cb(iteratee, context);\n      each(obj, function(v, index, list) {\n        computed = iteratee(v, index, list);\n        if (computed < lastComputed || computed === Infinity && result === Infinity) {\n          result = v;\n          lastComputed = computed;\n        }\n      });\n    }\n    return result;\n  }\n\n  // Sample **n** random values from a collection using the modern version of the\n  // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n  // If **n** is not specified, returns a single random element.\n  // The internal `guard` argument allows it to work with `_.map`.\n  function sample(obj, n, guard) {\n    if (n == null || guard) {\n      if (!isArrayLike(obj)) obj = values(obj);\n      return obj[random(obj.length - 1)];\n    }\n    var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n    var length = getLength(sample);\n    n = Math.max(Math.min(n, length), 0);\n    var last = length - 1;\n    for (var index = 0; index < n; index++) {\n      var rand = random(index, last);\n      var temp = sample[index];\n      sample[index] = sample[rand];\n      sample[rand] = temp;\n    }\n    return sample.slice(0, n);\n  }\n\n  // Shuffle a collection.\n  function shuffle(obj) {\n    return sample(obj, Infinity);\n  }\n\n  // Sort the object's values by a criterion produced by an iteratee.\n  function sortBy(obj, iteratee, context) {\n    var index = 0;\n    iteratee = cb(iteratee, context);\n    return pluck(map(obj, function(value, key, list) {\n      return {\n        value: value,\n        index: index++,\n        criteria: iteratee(value, key, list)\n      };\n    }).sort(function(left, right) {\n      var a = left.criteria;\n      var b = right.criteria;\n      if (a !== b) {\n        if (a > b || a === void 0) return 1;\n        if (a < b || b === void 0) return -1;\n      }\n      return left.index - right.index;\n    }), 'value');\n  }\n\n  // An internal function used for aggregate \"group by\" operations.\n  function group(behavior, partition) {\n    return function(obj, iteratee, context) {\n      var result = partition ? [[], []] : {};\n      iteratee = cb(iteratee, context);\n      each(obj, function(value, index) {\n        var key = iteratee(value, index, obj);\n        behavior(result, value, key);\n      });\n      return result;\n    };\n  }\n\n  // Groups the object's values by a criterion. Pass either a string attribute\n  // to group by, or a function that returns the criterion.\n  var groupBy = group(function(result, value, key) {\n    if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n  });\n\n  // Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n  // when you know that your index values will be unique.\n  var indexBy = group(function(result, value, key) {\n    result[key] = value;\n  });\n\n  // Counts instances of an object that group by a certain criterion. Pass\n  // either a string attribute to count by, or a function that returns the\n  // criterion.\n  var countBy = group(function(result, value, key) {\n    if (has$1(result, key)) result[key]++; else result[key] = 1;\n  });\n\n  // Split a collection into two arrays: one whose elements all pass the given\n  // truth test, and one whose elements all do not pass the truth test.\n  var partition = group(function(result, value, pass) {\n    result[pass ? 0 : 1].push(value);\n  }, true);\n\n  // Safely create a real, live array from anything iterable.\n  var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n  function toArray(obj) {\n    if (!obj) return [];\n    if (isArray(obj)) return slice.call(obj);\n    if (isString(obj)) {\n      // Keep surrogate pair characters together.\n      return obj.match(reStrSymbol);\n    }\n    if (isArrayLike(obj)) return map(obj, identity);\n    return values(obj);\n  }\n\n  // Return the number of elements in a collection.\n  function size(obj) {\n    if (obj == null) return 0;\n    return isArrayLike(obj) ? obj.length : keys(obj).length;\n  }\n\n  // Internal `_.pick` helper function to determine whether `key` is an enumerable\n  // property name of `obj`.\n  function keyInObj(value, key, obj) {\n    return key in obj;\n  }\n\n  // Return a copy of the object only containing the allowed properties.\n  var pick = restArguments(function(obj, keys) {\n    var result = {}, iteratee = keys[0];\n    if (obj == null) return result;\n    if (isFunction$1(iteratee)) {\n      if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n      keys = allKeys(obj);\n    } else {\n      iteratee = keyInObj;\n      keys = flatten$1(keys, false, false);\n      obj = Object(obj);\n    }\n    for (var i = 0, length = keys.length; i < length; i++) {\n      var key = keys[i];\n      var value = obj[key];\n      if (iteratee(value, key, obj)) result[key] = value;\n    }\n    return result;\n  });\n\n  // Return a copy of the object without the disallowed properties.\n  var omit = restArguments(function(obj, keys) {\n    var iteratee = keys[0], context;\n    if (isFunction$1(iteratee)) {\n      iteratee = negate(iteratee);\n      if (keys.length > 1) context = keys[1];\n    } else {\n      keys = map(flatten$1(keys, false, false), String);\n      iteratee = function(value, key) {\n        return !contains(keys, key);\n      };\n    }\n    return pick(obj, iteratee, context);\n  });\n\n  // Returns everything but the last entry of the array. Especially useful on\n  // the arguments object. Passing **n** will return all the values in\n  // the array, excluding the last N.\n  function initial(array, n, guard) {\n    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n  }\n\n  // Get the first element of an array. Passing **n** will return the first N\n  // values in the array. The **guard** check allows it to work with `_.map`.\n  function first(array, n, guard) {\n    if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n    if (n == null || guard) return array[0];\n    return initial(array, array.length - n);\n  }\n\n  // Returns everything but the first entry of the `array`. Especially useful on\n  // the `arguments` object. Passing an **n** will return the rest N values in the\n  // `array`.\n  function rest(array, n, guard) {\n    return slice.call(array, n == null || guard ? 1 : n);\n  }\n\n  // Get the last element of an array. Passing **n** will return the last N\n  // values in the array.\n  function last(array, n, guard) {\n    if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n    if (n == null || guard) return array[array.length - 1];\n    return rest(array, Math.max(0, array.length - n));\n  }\n\n  // Trim out all falsy values from an array.\n  function compact(array) {\n    return filter(array, Boolean);\n  }\n\n  // Flatten out an array, either recursively (by default), or up to `depth`.\n  // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\n  function flatten(array, depth) {\n    return flatten$1(array, depth, false);\n  }\n\n  // Take the difference between one array and a number of other arrays.\n  // Only the elements present in just the first array will remain.\n  var difference = restArguments(function(array, rest) {\n    rest = flatten$1(rest, true, true);\n    return filter(array, function(value){\n      return !contains(rest, value);\n    });\n  });\n\n  // Return a version of the array that does not contain the specified value(s).\n  var without = restArguments(function(array, otherArrays) {\n    return difference(array, otherArrays);\n  });\n\n  // Produce a duplicate-free version of the array. If the array has already\n  // been sorted, you have the option of using a faster algorithm.\n  // The faster algorithm will not work with an iteratee if the iteratee\n  // is not a one-to-one function, so providing an iteratee will disable\n  // the faster algorithm.\n  function uniq(array, isSorted, iteratee, context) {\n    if (!isBoolean(isSorted)) {\n      context = iteratee;\n      iteratee = isSorted;\n      isSorted = false;\n    }\n    if (iteratee != null) iteratee = cb(iteratee, context);\n    var result = [];\n    var seen = [];\n    for (var i = 0, length = getLength(array); i < length; i++) {\n      var value = array[i],\n          computed = iteratee ? iteratee(value, i, array) : value;\n      if (isSorted && !iteratee) {\n        if (!i || seen !== computed) result.push(value);\n        seen = computed;\n      } else if (iteratee) {\n        if (!contains(seen, computed)) {\n          seen.push(computed);\n          result.push(value);\n        }\n      } else if (!contains(result, value)) {\n        result.push(value);\n      }\n    }\n    return result;\n  }\n\n  // Produce an array that contains the union: each distinct element from all of\n  // the passed-in arrays.\n  var union = restArguments(function(arrays) {\n    return uniq(flatten$1(arrays, true, true));\n  });\n\n  // Produce an array that contains every item shared between all the\n  // passed-in arrays.\n  function intersection(array) {\n    var result = [];\n    var argsLength = arguments.length;\n    for (var i = 0, length = getLength(array); i < length; i++) {\n      var item = array[i];\n      if (contains(result, item)) continue;\n      var j;\n      for (j = 1; j < argsLength; j++) {\n        if (!contains(arguments[j], item)) break;\n      }\n      if (j === argsLength) result.push(item);\n    }\n    return result;\n  }\n\n  // Complement of zip. Unzip accepts an array of arrays and groups\n  // each array's elements on shared indices.\n  function unzip(array) {\n    var length = array && max(array, getLength).length || 0;\n    var result = Array(length);\n\n    for (var index = 0; index < length; index++) {\n      result[index] = pluck(array, index);\n    }\n    return result;\n  }\n\n  // Zip together multiple lists into a single array -- elements that share\n  // an index go together.\n  var zip = restArguments(unzip);\n\n  // Converts lists into objects. Pass either a single array of `[key, value]`\n  // pairs, or two parallel arrays of the same length -- one of keys, and one of\n  // the corresponding values. Passing by pairs is the reverse of `_.pairs`.\n  function object(list, values) {\n    var result = {};\n    for (var i = 0, length = getLength(list); i < length; i++) {\n      if (values) {\n        result[list[i]] = values[i];\n      } else {\n        result[list[i][0]] = list[i][1];\n      }\n    }\n    return result;\n  }\n\n  // Generate an integer Array containing an arithmetic progression. A port of\n  // the native Python `range()` function. See\n  // [the Python documentation](https://docs.python.org/library/functions.html#range).\n  function range(start, stop, step) {\n    if (stop == null) {\n      stop = start || 0;\n      start = 0;\n    }\n    if (!step) {\n      step = stop < start ? -1 : 1;\n    }\n\n    var length = Math.max(Math.ceil((stop - start) / step), 0);\n    var range = Array(length);\n\n    for (var idx = 0; idx < length; idx++, start += step) {\n      range[idx] = start;\n    }\n\n    return range;\n  }\n\n  // Chunk a single array into multiple arrays, each containing `count` or fewer\n  // items.\n  function chunk(array, count) {\n    if (count == null || count < 1) return [];\n    var result = [];\n    var i = 0, length = array.length;\n    while (i < length) {\n      result.push(slice.call(array, i, i += count));\n    }\n    return result;\n  }\n\n  // Helper function to continue chaining intermediate results.\n  function chainResult(instance, obj) {\n    return instance._chain ? _$1(obj).chain() : obj;\n  }\n\n  // Add your own custom functions to the Underscore object.\n  function mixin(obj) {\n    each(functions(obj), function(name) {\n      var func = _$1[name] = obj[name];\n      _$1.prototype[name] = function() {\n        var args = [this._wrapped];\n        push.apply(args, arguments);\n        return chainResult(this, func.apply(_$1, args));\n      };\n    });\n    return _$1;\n  }\n\n  // Add all mutator `Array` functions to the wrapper.\n  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n    var method = ArrayProto[name];\n    _$1.prototype[name] = function() {\n      var obj = this._wrapped;\n      if (obj != null) {\n        method.apply(obj, arguments);\n        if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n          delete obj[0];\n        }\n      }\n      return chainResult(this, obj);\n    };\n  });\n\n  // Add all accessor `Array` functions to the wrapper.\n  each(['concat', 'join', 'slice'], function(name) {\n    var method = ArrayProto[name];\n    _$1.prototype[name] = function() {\n      var obj = this._wrapped;\n      if (obj != null) obj = method.apply(obj, arguments);\n      return chainResult(this, obj);\n    };\n  });\n\n  // Named Exports\n\n  var allExports = {\n    __proto__: null,\n    VERSION: VERSION,\n    restArguments: restArguments,\n    isObject: isObject,\n    isNull: isNull,\n    isUndefined: isUndefined,\n    isBoolean: isBoolean,\n    isElement: isElement,\n    isString: isString,\n    isNumber: isNumber,\n    isDate: isDate,\n    isRegExp: isRegExp,\n    isError: isError,\n    isSymbol: isSymbol,\n    isArrayBuffer: isArrayBuffer,\n    isDataView: isDataView$1,\n    isArray: isArray,\n    isFunction: isFunction$1,\n    isArguments: isArguments$1,\n    isFinite: isFinite$1,\n    isNaN: isNaN$1,\n    isTypedArray: isTypedArray$1,\n    isEmpty: isEmpty,\n    isMatch: isMatch,\n    isEqual: isEqual,\n    isMap: isMap,\n    isWeakMap: isWeakMap,\n    isSet: isSet,\n    isWeakSet: isWeakSet,\n    keys: keys,\n    allKeys: allKeys,\n    values: values,\n    pairs: pairs,\n    invert: invert,\n    functions: functions,\n    methods: functions,\n    extend: extend,\n    extendOwn: extendOwn,\n    assign: extendOwn,\n    defaults: defaults,\n    create: create,\n    clone: clone,\n    tap: tap,\n    get: get,\n    has: has,\n    mapObject: mapObject,\n    identity: identity,\n    constant: constant,\n    noop: noop,\n    toPath: toPath$1,\n    property: property,\n    propertyOf: propertyOf,\n    matcher: matcher,\n    matches: matcher,\n    times: times,\n    random: random,\n    now: now,\n    escape: _escape,\n    unescape: _unescape,\n    templateSettings: templateSettings,\n    template: template,\n    result: result,\n    uniqueId: uniqueId,\n    chain: chain,\n    iteratee: iteratee,\n    partial: partial,\n    bind: bind,\n    bindAll: bindAll,\n    memoize: memoize,\n    delay: delay,\n    defer: defer,\n    throttle: throttle,\n    debounce: debounce,\n    wrap: wrap,\n    negate: negate,\n    compose: compose,\n    after: after,\n    before: before,\n    once: once,\n    findKey: findKey,\n    findIndex: findIndex,\n    findLastIndex: findLastIndex,\n    sortedIndex: sortedIndex,\n    indexOf: indexOf,\n    lastIndexOf: lastIndexOf,\n    find: find,\n    detect: find,\n    findWhere: findWhere,\n    each: each,\n    forEach: each,\n    map: map,\n    collect: map,\n    reduce: reduce,\n    foldl: reduce,\n    inject: reduce,\n    reduceRight: reduceRight,\n    foldr: reduceRight,\n    filter: filter,\n    select: filter,\n    reject: reject,\n    every: every,\n    all: every,\n    some: some,\n    any: some,\n    contains: contains,\n    includes: contains,\n    include: contains,\n    invoke: invoke,\n    pluck: pluck,\n    where: where,\n    max: max,\n    min: min,\n    shuffle: shuffle,\n    sample: sample,\n    sortBy: sortBy,\n    groupBy: groupBy,\n    indexBy: indexBy,\n    countBy: countBy,\n    partition: partition,\n    toArray: toArray,\n    size: size,\n    pick: pick,\n    omit: omit,\n    first: first,\n    head: first,\n    take: first,\n    initial: initial,\n    last: last,\n    rest: rest,\n    tail: rest,\n    drop: rest,\n    compact: compact,\n    flatten: flatten,\n    without: without,\n    uniq: uniq,\n    unique: uniq,\n    union: union,\n    intersection: intersection,\n    difference: difference,\n    unzip: unzip,\n    transpose: unzip,\n    zip: zip,\n    object: object,\n    range: range,\n    chunk: chunk,\n    mixin: mixin,\n    'default': _$1\n  };\n\n  // Default Export\n\n  // Add all of the Underscore functions to the wrapper object.\n  var _ = mixin(allExports);\n  // Legacy Node.js API.\n  _._ = _;\n\n  return _;\n\n})));\n//# sourceMappingURL=underscore-umd.js.map\n"
  },
  {
    "path": "docs/_static/underscore.js",
    "content": "!function(n,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(\"underscore\",r):(n=\"undefined\"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){\n//     Underscore.js 1.13.1\n//     https://underscorejs.org\n//     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n//     Underscore may be freely distributed under the MIT license.\nvar n=\"1.13.1\",r=\"object\"==typeof self&&self.self===self&&self||\"object\"==typeof global&&global.global===global&&global||Function(\"return this\")()||{},t=Array.prototype,e=Object.prototype,u=\"undefined\"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c=\"undefined\"!=typeof ArrayBuffer,l=\"undefined\"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable(\"toString\"),b=[\"valueOf\",\"isPrototypeOf\",\"toString\",\"propertyIsEnumerable\",\"hasOwnProperty\",\"toLocaleString\"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u<t;u++)e[u]=arguments[u+r];switch(r){case 0:return n.call(this,e);case 1:return n.call(this,arguments[0],e);case 2:return n.call(this,arguments[0],arguments[1],e)}var o=Array(r+1);for(u=0;u<r;u++)o[u]=arguments[u];return o[r]=e,n.apply(this,o)}}function _(n){var r=typeof n;return\"function\"===r||\"object\"===r&&!!n}function w(n){return void 0===n}function A(n){return!0===n||!1===n||\"[object Boolean]\"===a.call(n)}function x(n){var r=\"[object \"+n+\"]\";return function(n){return a.call(n)===r}}var S=x(\"String\"),O=x(\"Number\"),M=x(\"Date\"),E=x(\"RegExp\"),B=x(\"Error\"),N=x(\"Symbol\"),I=x(\"ArrayBuffer\"),T=x(\"Function\"),k=r.document&&r.document.childNodes;\"function\"!=typeof/./&&\"object\"!=typeof Int8Array&&\"function\"!=typeof k&&(T=function(n){return\"function\"==typeof n||!1});var D=T,R=x(\"Object\"),F=l&&R(new DataView(new ArrayBuffer(8))),V=\"undefined\"!=typeof Map&&R(new Map),P=x(\"DataView\");var q=F?function(n){return null!=n&&D(n.getInt8)&&I(n.buffer)}:P,U=s||x(\"Array\");function W(n,r){return null!=n&&f.call(n,r)}var z=x(\"Arguments\");!function(){z(arguments)||(z=function(n){return W(n,\"callee\")})}();var L=z;function $(n){return O(n)&&y(n)}function C(n){return function(){return n}}function K(n){return function(r){var t=n(r);return\"number\"==typeof t&&t>=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J(\"byteLength\"),H=K(G),Q=/\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J(\"length\");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e<t;++e)r[n[e]]=!0;return{contains:function(n){return r[n]},push:function(t){return r[t]=!0,n.push(t)}}}(r);var t=b.length,u=n.constructor,o=D(u)&&u.prototype||e,i=\"constructor\";for(W(n,i)&&!r.contains(i)&&r.push(i);t--;)(i=b[t])in n&&n[i]!==o[i]&&!r.contains(i)&&r.push(i)}function nn(n){if(!_(n))return[];if(p)return p(n);var r=[];for(var t in n)W(n,t)&&r.push(t);return g&&Z(n,r),r}function rn(n,r){var t=nn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function tn(n){return n instanceof tn?n:this instanceof tn?void(this._wrapped=n):new tn(n)}function en(n){return new Uint8Array(n.buffer||n,n.byteOffset||0,G(n))}tn.VERSION=n,tn.prototype.value=function(){return this._wrapped},tn.prototype.valueOf=tn.prototype.toJSON=tn.prototype.value,tn.prototype.toString=function(){return String(this._wrapped)};var un=\"[object DataView]\";function on(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var o=typeof n;return(\"function\"===o||\"object\"===o||\"object\"==typeof r)&&function n(r,t,e,o){r instanceof tn&&(r=r._wrapped);t instanceof tn&&(t=t._wrapped);var i=a.call(r);if(i!==a.call(t))return!1;if(F&&\"[object Object]\"==i&&q(r)){if(!q(t))return!1;i=un}switch(i){case\"[object RegExp]\":case\"[object String]\":return\"\"+r==\"\"+t;case\"[object Number]\":return+r!=+r?+t!=+t:0==+r?1/+r==1/t:+r==+t;case\"[object Date]\":case\"[object Boolean]\":return+r==+t;case\"[object Symbol]\":return u.valueOf.call(r)===u.valueOf.call(t);case\"[object ArrayBuffer]\":case un:return n(en(r),en(t),e,o)}var f=\"[object Array]\"===i;if(!f&&X(r)){if(G(r)!==G(t))return!1;if(r.buffer===t.buffer&&r.byteOffset===t.byteOffset)return!0;f=!0}if(!f){if(\"object\"!=typeof r||\"object\"!=typeof t)return!1;var c=r.constructor,l=t.constructor;if(c!==l&&!(D(c)&&c instanceof c&&D(l)&&l instanceof l)&&\"constructor\"in r&&\"constructor\"in t)return!1}o=o||[];var s=(e=e||[]).length;for(;s--;)if(e[s]===r)return o[s]===t;if(e.push(r),o.push(t),f){if((s=r.length)!==t.length)return!1;for(;s--;)if(!on(r[s],t[s],e,o))return!1}else{var p,v=nn(r);if(s=v.length,nn(t).length!==s)return!1;for(;s--;)if(p=v[s],!W(t,p)||!on(r[p],t[p],e,o))return!1}return e.pop(),o.pop(),!0}(n,r,t,e)}function an(n){if(!_(n))return[];var r=[];for(var t in n)r.push(t);return g&&Z(n,r),r}function fn(n){var r=Y(n);return function(t){if(null==t)return!1;var e=an(t);if(Y(e))return!1;for(var u=0;u<r;u++)if(!D(t[n[u]]))return!1;return n!==hn||!D(t[cn])}}var cn=\"forEach\",ln=\"has\",sn=[\"clear\",\"delete\"],pn=[\"get\",ln,\"set\"],vn=sn.concat(cn,pn),hn=sn.concat(pn),yn=[\"add\"].concat(sn,cn,ln),dn=V?fn(vn):x(\"Map\"),gn=V?fn(hn):x(\"WeakMap\"),bn=V?fn(yn):x(\"Set\"),mn=x(\"WeakSet\");function jn(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function _n(n){for(var r={},t=nn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function wn(n){var r=[];for(var t in n)D(n[t])&&r.push(t);return r.sort()}function An(n,r){return function(t){var e=arguments.length;if(r&&(t=Object(t)),e<2||null==t)return t;for(var u=1;u<e;u++)for(var o=arguments[u],i=n(o),a=i.length,f=0;f<a;f++){var c=i[f];r&&void 0!==t[c]||(t[c]=o[c])}return t}}var xn=An(an),Sn=An(nn),On=An(an,!0);function Mn(n){if(!_(n))return{};if(v)return v(n);var r=function(){};r.prototype=n;var t=new r;return r.prototype=null,t}function En(n){return _(n)?U(n)?n.slice():xn({},n):n}function Bn(n){return U(n)?n:[n]}function Nn(n){return tn.toPath(n)}function In(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}function Tn(n,r,t){var e=In(n,Nn(r));return w(e)?t:e}function kn(n){return n}function Dn(n){return n=Sn({},n),function(r){return rn(r,n)}}function Rn(n){return n=Nn(n),function(r){return In(r,n)}}function Fn(n,r,t){if(void 0===r)return n;switch(null==t?3:t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return function(){return n.apply(r,arguments)}}function Vn(n,r,t){return null==n?kn:D(n)?Fn(n,r,t):_(n)&&!U(n)?Dn(n):Rn(n)}function Pn(n,r){return Vn(n,r,1/0)}function qn(n,r,t){return tn.iteratee!==Pn?tn.iteratee(n,r):Vn(n,r,t)}function Un(){}function Wn(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}tn.toPath=Bn,tn.iteratee=Pn;var zn=Date.now||function(){return(new Date).getTime()};function Ln(n){var r=function(r){return n[r]},t=\"(?:\"+nn(n).join(\"|\")+\")\",e=RegExp(t),u=RegExp(t,\"g\");return function(n){return n=null==n?\"\":\"\"+n,e.test(n)?n.replace(u,r):n}}var $n={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#x27;\",\"`\":\"&#x60;\"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g},Gn=/(.)^/,Hn={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Qn=/\\\\|'|\\r|\\n|\\u2028|\\u2029/g;function Xn(n){return\"\\\\\"+Hn[n]}var Yn=/^\\s*(\\w|\\$)+\\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a<o;a++)i[a]=r[a]===t?arguments[u++]:r[a];for(;u<arguments.length;)i.push(arguments[u++]);return nr(n,e,this,this,i)};return e}));rr.placeholder=tn;var tr=j((function(n,r,t){if(!D(n))throw new TypeError(\"Bind must be called on a function\");var e=j((function(u){return nr(n,e,r,this,t.concat(u))}));return e})),er=K(Y);function ur(n,r,t,e){if(e=e||[],r||0===r){if(r<=0)return e.concat(n)}else r=1/0;for(var u=e.length,o=0,i=Y(n);o<i;o++){var a=n[o];if(er(a)&&(U(a)||L(a)))if(r>1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else t||(e[u++]=a)}return e}var or=j((function(n,r){var t=(r=ur(r,!1,!1)).length;if(t<1)throw new Error(\"bindAll must be passed function names\");for(;t--;){var e=r[t];n[e]=tr(n[e],n)}return n}));var ir=j((function(n,r,t){return setTimeout((function(){return n.apply(null,t)}),r)})),ar=rr(ir,tn,1);function fr(n){return function(){return!n.apply(this,arguments)}}function cr(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function pr(n){return function(r,t,e){t=qn(t,e);for(var u=Y(r),o=n>0?0:u-1;o>=0&&o<u;o+=n)if(t(r[o],o,r))return o;return-1}}var vr=pr(1),hr=pr(-1);function yr(n,r,t,e){for(var u=(t=qn(t,e,1))(r),o=0,i=Y(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function dr(n,r,t){return function(e,u,o){var a=0,f=Y(e);if(\"number\"==typeof o)n>0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o<f;o+=n)if(e[o]===u)return o;return-1}}var gr=dr(1,vr,yr),br=dr(-1,hr);function mr(n,r,t){var e=(er(n)?vr:sr)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function jr(n,r,t){var e,u;if(r=Fn(r,t),er(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=nn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function _r(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function wr(n){var r=function(r,t,e,u){var o=!er(r)&&nn(r),i=(o||r).length,a=n>0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a<i;a+=n){var f=o?o[a]:a;e=t(e,r[f],f,r)}return e};return function(n,t,e,u){var o=arguments.length>=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function Mr(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function Er(n,r,t,e){return er(n)||(n=jn(n)),(\"number\"!=typeof t||e)&&(t=0),gr(n,r,t)>=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||\"number\"==typeof r&&\"object\"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e>o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=Wn(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function kr(n,r){return function(t,e,u){var o=r?[[],[]]:{};return e=qn(e,u),jr(t,(function(r,u){var i=e(r,u,t);n(o,r,i)})),o}}var Dr=kr((function(n,r,t){W(n,t)?n[t].push(r):n[t]=[r]})),Rr=kr((function(n,r,t){n[t]=r})),Fr=kr((function(n,r,t){W(n,t)?n[t]++:n[t]=1})),Vr=kr((function(n,r,t){n[t?0:1].push(r)}),!0),Pr=/[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;function qr(n,r,t){return r in t}var Ur=j((function(n,r){var t={},e=r[0];if(null==n)return t;D(e)?(r.length>1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t})),Wr=j((function(n,r){var t,e=r[0];return D(e)?(e=fr(e),r.length>1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?Er(o,c)||(o.push(c),u.push(f)):Er(u,f)||u.push(f)}return u}var Gr=j((function(n){return Jr(ur(n,!0,!0))}));function Hr(n){for(var r=n&&Ir(n,Y).length||0,t=Array(r),e=0;e<r;e++)t[e]=Nr(n,e);return t}var Qr=j(Hr);function Xr(n,r){return n._chain?tn(r).chain():r}function Yr(n){return jr(wn(n),(function(r){var t=tn[r]=n[r];tn.prototype[r]=function(){var n=[this._wrapped];return o.apply(n,arguments),Xr(this,t.apply(tn,n))}})),tn}jr([\"pop\",\"push\",\"reverse\",\"shift\",\"sort\",\"splice\",\"unshift\"],(function(n){var r=t[n];tn.prototype[n]=function(){var t=this._wrapped;return null!=t&&(r.apply(t,arguments),\"shift\"!==n&&\"splice\"!==n||0!==t.length||delete t[0]),Xr(this,t)}})),jr([\"concat\",\"join\",\"slice\"],(function(n){var r=t[n];tn.prototype[n]=function(){var n=this._wrapped;return null!=n&&(n=r.apply(n,arguments)),Xr(this,n)}}));var Zr=Yr({__proto__:null,VERSION:n,restArguments:j,isObject:_,isNull:function(n){return null===n},isUndefined:w,isBoolean:A,isElement:function(n){return!(!n||1!==n.nodeType)},isString:S,isNumber:O,isDate:M,isRegExp:E,isError:B,isSymbol:N,isArrayBuffer:I,isDataView:q,isArray:U,isFunction:D,isArguments:L,isFinite:function(n){return!N(n)&&d(n)&&!isNaN(parseFloat(n))},isNaN:$,isTypedArray:X,isEmpty:function(n){if(null==n)return!0;var r=Y(n);return\"number\"==typeof r&&(U(n)||S(n)||L(n))?0===r:0===Y(nn(n))},isMatch:rn,isEqual:function(n,r){return on(n,r)},isMap:dn,isWeakMap:gn,isSet:bn,isWeakSet:mn,keys:nn,allKeys:an,values:jn,pairs:function(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:_n,functions:wn,methods:wn,extend:xn,extendOwn:Sn,assign:Sn,defaults:On,create:function(n,r){var t=Mn(n);return r&&Sn(t,r),t},clone:En,tap:function(n,r){return r(n),n},get:Tn,has:function(n,r){for(var t=(r=Nn(r)).length,e=0;e<t;e++){var u=r[e];if(!W(n,u))return!1;n=n[u]}return!!t},mapObject:function(n,r,t){r=qn(r,t);for(var e=nn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},identity:kn,constant:C,noop:Un,toPath:Bn,property:Rn,propertyOf:function(n){return null==n?Un:function(r){return Tn(n,r)}},matcher:Dn,matches:Dn,times:function(n,r,t){var e=Array(Math.max(0,n));r=Fn(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:Wn,now:zn,escape:Cn,unescape:Kn,templateSettings:Jn,template:function(n,r,t){!r&&t&&(r=t),r=On({},r,tn.templateSettings);var e=RegExp([(r.escape||Gn).source,(r.interpolate||Gn).source,(r.evaluate||Gn).source].join(\"|\")+\"|$\",\"g\"),u=0,o=\"__p+='\";n.replace(e,(function(r,t,e,i,a){return o+=n.slice(u,a).replace(Qn,Xn),u=a+r.length,t?o+=\"'+\\n((__t=(\"+t+\"))==null?'':_.escape(__t))+\\n'\":e?o+=\"'+\\n((__t=(\"+e+\"))==null?'':__t)+\\n'\":i&&(o+=\"';\\n\"+i+\"\\n__p+='\"),r})),o+=\"';\\n\";var i,a=r.variable;if(a){if(!Yn.test(a))throw new Error(\"variable is not a bare identifier: \"+a)}else o=\"with(obj||{}){\\n\"+o+\"}\\n\",a=\"obj\";o=\"var __t,__p='',__j=Array.prototype.join,\"+\"print=function(){__p+=__j.call(arguments,'');};\\n\"+o+\"return __p;\\n\";try{i=new Function(a,\"_\",o)}catch(n){throw n.source=o,n}var f=function(n){return i.call(this,n,tn)};return f.source=\"function(\"+a+\"){\\n\"+o+\"}\",f},result:function(n,r,t){var e=(r=Nn(r)).length;if(!e)return D(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=D(o)?o.call(n):o}return n},uniqueId:function(n){var r=++Zn+\"\";return n?n+r:r},chain:function(n){var r=tn(n);return r._chain=!0,r},iteratee:Pn,partial:rr,bind:tr,bindAll:or,memoize:function(n,r){var t=function(e){var u=t.cache,o=\"\"+(r?r.apply(this,arguments):e);return W(u,o)||(u[o]=n.apply(this,arguments)),u[o]};return t.cache={},t},delay:ir,defer:ar,throttle:function(n,r,t){var e,u,o,i,a=0;t||(t={});var f=function(){a=!1===t.leading?0:zn(),e=null,i=n.apply(u,o),e||(u=o=null)},c=function(){var c=zn();a||!1!==t.leading||(a=c);var l=r-(c-a);return u=this,o=arguments,l<=0||l>r?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||\"number\"==typeof r&&\"object\"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e<o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))<i||u===1/0&&o===1/0)&&(o=n,i=u)}));return o},shuffle:function(n){return Tr(n,1/0)},sample:Tr,sortBy:function(n,r,t){var e=0;return r=qn(r,t),Nr(_r(n,(function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}})).sort((function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(t>e||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index})),\"value\")},groupBy:Dr,indexBy:Rr,countBy:Fr,partition:Vr,toArray:function(n){return n?U(n)?i.call(n):S(n)?n.match(Pr):er(n)?_r(n,kn):jn(n):[]},size:function(n){return null==n?0:er(n)?n.length:nn(n).length},pick:Ur,omit:Wr,first:Lr,head:Lr,take:Lr,initial:zr,last:function(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[n.length-1]:$r(n,Math.max(0,n.length-r))},rest:$r,tail:$r,drop:$r,compact:function(n){return Sr(n,Boolean)},flatten:function(n,r){return ur(n,r,!1)},without:Kr,uniq:Jr,unique:Jr,union:Gr,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=Y(n);e<u;e++){var o=n[e];if(!Er(r,o)){var i;for(i=1;i<t&&Er(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:Cr,unzip:Hr,transpose:Hr,zip:Qr,object:function(n,r){for(var t={},e=0,u=Y(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(i.call(n,e,e+=r));return t},mixin:Yr,default:tn});return Zr._=Zr,Zr}));"
  },
  {
    "path": "docs/_static/vendor/fontawesome/5.13.0/LICENSE.txt",
    "content": "Font Awesome Free License\n-------------------------\n\nFont Awesome Free is free, open source, and GPL friendly. You can use it for\ncommercial projects, open source projects, or really almost whatever you want.\nFull Font Awesome Free license: https://fontawesome.com/license/free.\n\n# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)\nIn the Font Awesome Free download, the CC BY 4.0 license applies to all icons\npackaged as SVG and JS file types.\n\n# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)\nIn the Font Awesome Free download, the SIL OFL license applies to all icons\npackaged as web and desktop font files.\n\n# Code: MIT License (https://opensource.org/licenses/MIT)\nIn the Font Awesome Free download, the MIT license applies to all non-font and\nnon-icon files.\n\n# Attribution\nAttribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font\nAwesome Free files already contain embedded comments with sufficient\nattribution, so you shouldn't need to do anything additional when using these\nfiles normally.\n\nWe've kept attribution comments terse, so we ask that you do not actively work\nto remove them from files, especially code. They're a great way for folks to\nlearn about Font Awesome.\n\n# Brand Icons\nAll brand icons are trademarks of their respective owners. The use of these\ntrademarks does not indicate endorsement of the trademark holder by Font\nAwesome, nor vice versa. **Please do not use brand logos for any purpose except\nto represent the company, product, or service to which they refer.**\n"
  },
  {
    "path": "docs/_static/webpack-macros.html",
    "content": "<!--\n  AUTO-GENERATED from webpack.config.js, do **NOT** edit by hand.\n  These are re-used in layout.html\n-->\n{# Load FontAwesome icons #}\n{% macro head_pre_icons() %}\n  <link rel=\"stylesheet\"\n    href=\"{{ pathto('_static/vendor/fontawesome/5.13.0/css/all.min.css', 1) }}\">\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\n    href=\"{{ pathto('_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2', 1) }}\">\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\n    href=\"{{ pathto('_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2', 1) }}\">\n{% endmacro %}\n\n{% macro head_pre_assets() %}\n  <!-- Loaded before other Sphinx assets -->\n  <link href=\"{{ pathto('_static/styles/theme.css', 1) }}?digest=92025949c220c2e29695\" rel=\"stylesheet\">\n<link href=\"{{ pathto('_static/styles/pydata-sphinx-theme.css', 1) }}?digest=92025949c220c2e29695\" rel=\"stylesheet\">\n{% endmacro %}\n\n{% macro head_js_preload() %}\n  <!-- Pre-loaded scripts that we'll load fully later -->\n  <link rel=\"preload\" as=\"script\" href=\"{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=92025949c220c2e29695\">\n{% endmacro %}\n\n{% macro body_post() %}\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\n  <script src=\"{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=92025949c220c2e29695\"></script>\n{% endmacro %}"
  },
  {
    "path": "docs/genindex.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>Index &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"./\" id=\"documentation_options\" src=\"_static/documentation_options.js\"></script>\r\n    <script src=\"_static/jquery.js\"></script>\r\n    <script src=\"_static/underscore.js\"></script>\r\n    <script src=\"_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"_static/doctools.js\"></script>\r\n    <script src=\"_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"#\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"search.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Content/index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    \r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n\r\n<h1 id=\"index\">Index</h1>\r\n\r\n<div class=\"genindex-jumpbox\">\r\n \r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/index.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>Home &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"./\" id=\"documentation_options\" src=\"_static/documentation_options.js\"></script>\r\n    <script src=\"_static/jquery.js\"></script>\r\n    <script src=\"_static/underscore.js\"></script>\r\n    <script src=\"_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"_static/doctools.js\"></script>\r\n    <script src=\"_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"search.html\" />\r\n    <link rel=\"next\" title=\"主页\" href=\"%E4%B8%BB%E9%A1%B5.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"#\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Content/index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    \r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#\">\r\n   Home\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id1\">\r\n   主页\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id2\">\r\n   教程大纲\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id3\">\r\n   更新版本与更新时间\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"home\">\r\n<h1>Home<a class=\"headerlink\" href=\"#home\" title=\"Permalink to this heading\">#</a></h1>\r\n<div class=\"toctree-wrapper compound\">\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id1\">\r\n<h1>主页<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>free excel中文意为自由Excel，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！</p>\r\n<p>本教程的数据集在 <a class=\"reference external\" href=\"https://github.com/datawhalechina/free-excel\">此处</a> 下载。</p>\r\n</div>\r\n<div class=\"section\" id=\"id2\">\r\n<h1>教程大纲<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h1>\r\n<a class=\"reference internal image-reference\" href=\"_images/home.png\"><img alt=\"_images/home.png\" class=\"align-center\" src=\"_images/home.png\" style=\"width: 720.0px; height: 400.0px;\" /></a>\r\n</div>\r\n<div class=\"section\" id=\"id3\">\r\n<h1>更新版本与更新时间<a class=\"headerlink\" href=\"#id3\" title=\"Permalink to this heading\">#</a></h1>\r\n<ul class=\"simple\">\r\n<li><p>V1.0  2021-08-08</p></li>\r\n<li><p>V2.0  2022-09-09</p></li>\r\n<li><p>V2.1  2022-11-27</p></li>\r\n</ul>\r\n<p>V2.1教程配套Excel版本为2019及以上，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。</p>\r\n<p>注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上</p>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/search.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>Search &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    \r\n    <script data-url_root=\"./\" id=\"documentation_options\" src=\"_static/documentation_options.js\"></script>\r\n    <script src=\"_static/jquery.js\"></script>\r\n    <script src=\"_static/underscore.js\"></script>\r\n    <script src=\"_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"_static/doctools.js\"></script>\r\n    <script src=\"_static/sphinx_highlight.js\"></script>\r\n    <script src=\"_static/searchtools.js\"></script>\r\n    <script src=\"_static/language_data.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"#\" />\r\n  <script src=\"searchindex.js\" defer></script>\r\n  \r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Content/index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"#\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    \r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <h1 id=\"search-documentation\">Search</h1>\r\n  \r\n  <noscript>\r\n  <div class=\"admonition warning\">\r\n  <p>\r\n    Please activate JavaScript to enable the search\r\n    functionality.\r\n  </p>\r\n  </div>\r\n  </noscript>\r\n  \r\n  \r\n  <p>\r\n    Searching for multiple words only shows matches that contain\r\n    all words.\r\n  </p>\r\n  \r\n  \r\n  <form action=\"\" method=\"get\">\r\n    <input type=\"text\" name=\"q\" aria-labelledby=\"search-documentation\" value=\"\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\"/>\r\n    <input type=\"submit\" value=\"search\" />\r\n    <span id=\"search-progress\" style=\"padding-left: 10px\"></span>\r\n  </form>\r\n  \r\n  \r\n  \r\n  <div id=\"search-results\">\r\n  \r\n  </div>\r\n  \r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/searchindex.js",
    "content": "Search.setIndex({\"docnames\": [\"Content/chap1\", \"Content/chap10\", \"Content/chap2\", \"Content/chap3\", \"Content/chap4\", \"Content/chap5\", \"Content/chap6\", \"Content/chap7\", \"Content/chap8\", \"Content/chap9\", \"Content/index\", \"Datawhale\", \"index\", \"\\u4e3b\\u9875\", \"\\u4f5c\\u8005\", \"\\u7ec3\\u4e60\\u9898\\u53c2\\u8003\\u64cd\\u4f5c\"], \"filenames\": [\"Content\\\\chap1.rst\", \"Content\\\\chap10.rst\", \"Content\\\\chap2.rst\", \"Content\\\\chap3.rst\", \"Content\\\\chap4.rst\", \"Content\\\\chap5.rst\", \"Content\\\\chap6.rst\", \"Content\\\\chap7.rst\", \"Content\\\\chap8.rst\", \"Content\\\\chap9.rst\", \"Content\\\\index.rst\", \"Datawhale.rst\", \"index.rst\", \"\\u4e3b\\u9875.rst\", \"\\u4f5c\\u8005.rst\", \"\\u7ec3\\u4e60\\u9898\\u53c2\\u8003\\u64cd\\u4f5c.rst\"], \"titles\": [\"\\u7b2c\\u4e00\\u7ae0 Excel\\u4e0e\\u6570\\u636e\\u683c\\u5f0f\", \"\\u7b2c\\u5341\\u7ae0Excel\\u770b\\u677f\", \"\\u7b2c\\u4e8c\\u7ae0 Excel\\u7684\\u5feb\\u6377\\u64cd\\u4f5c\", \"\\u7b2c\\u4e09\\u7ae0 Excel\\u7684\\u8868\\u5408\\u5e76\", \"\\u7b2c\\u56db\\u7ae0 Excel\\u51fd\\u6570-\\u903b\\u8f91\\u5224\\u65ad\", \"\\u7b2c\\u4e94\\u7ae0 Excel\\u51fd\\u6570-\\u6587\\u672c\\u51fd\\u6570\", \"\\u7b2c\\u516d\\u7ae0 Excel\\u51fd\\u6570-\\u67e5\\u627e\\u51fd\\u6570\", \"\\u7b2c\\u4e03\\u7ae0 Excel\\u51fd\\u6570-\\u52a8\\u6001\\u51fd\\u6570\", \"\\u7b2c\\u516b\\u7ae0Excel\\u6570\\u636e\\u53ef\\u89c6\\u5316\", \"\\u7b2c\\u4e5d\\u7ae0Excel\\u6570\\u636e\\u900f\\u89c6\", \"\\u6559\\u7a0b\", \"Datawhale\", \"Home\", \"\\u4e3b\\u9875\", \"\\u4f5c\\u8005\", \"\\u7ec3\\u4e60\\u9898\\u53c2\\u8003\\u64cd\\u4f5c\"], \"terms\": {\"execel\\u662f\\u6211\\u4eec\\u5e38\\u89c1\\u7684\\u7528\\u6765\\u8fdb\\u884c\\u6570\\u636e\\u5904\\u7406\\u7684\\u5de5\\u5177\": 0, \"\\u5176\\u4e2dexcel\\u6587\\u4ef6\\u4e3b\\u8981\\u5305\\u542b\\u67092\\u79cd\\u683c\\u5f0f\\u5206\\u522b\\u662f\": 0, \"xl\": 0, \"\\u6216\": [0, 7], \"xlsx\": [0, 1, 2, 3, 4, 5, 8, 9, 15], \"\\u548c\": [0, 15], \"\\u4e3b\\u8981\\u533a\\u522b\\u5982\\u4e0b\": 0, \"\\u56e0\\u6b64\": 0, \"\\u63a8\\u8350\\u5927\\u5bb6\\u4f7f\\u7528\\u6700\\u65b0\\u7248\\u672c\\u7684excel\\u6216\\u8005wps\\u8fdb\\u884c\\u76f8\\u5173\\u7684\\u5b66\\u4e60\\u4e0e\\u64cd\\u4f5c\": 0, \"excel\\u6587\\u6bcf\\u4e2a\\u6570\\u636e\\u6587\\u4ef6\\u53eb\\u505a\\u5de5\\u4f5c\\u7c3f\": 0, \"\\u6bcf\\u4e2a\\u5de5\\u4f5c\\u7c3f\\u91cc\\u9762\\u542b\\u6709\\u591a\\u4e2a\\u5de5\\u4f5c\\u8868\": 0, \"\\u6bcf\\u4e2a\\u5de5\\u4f5c\\u8868\\u91cc\\u9762\\u7684\\u683c\\u5b50\\u53eb\\u505a\\u5355\\u5143\\u683c\": 0, \"\\u5728excel\\u4e2d\\u70b9\\u51fb\\u65b0\\u5efa\\u6587\\u6863\\u540e\": 0, \"excel\\u9ed8\\u8ba4\\u7684\\u6587\\u6863\\u540d\\u79f0\\u662f\\u5de5\\u4f5c\\u7c3f1\": 0, \"\\u4e5f\\u5c31\\u662f\\u4e00\\u4e2aexcel\\u6587\\u6863\": 0, \"\\u5c31\\u662f\\u4e00\\u4e2a\\u5de5\\u4f5c\\u7c3f\": 0, \"\\u5728\\u65b0\\u5efa\\u7684\\u5de5\\u4f5c\\u7c3f\\u4e2d\": 0, \"\\u53ef\\u4ee5\\u770b\\u5230\\u5de6\\u4e0b\\u65b9\\u6709\": 0, \"sheet1\": 0, \"\\u7684\\u6807\\u7b7e\": 0, \"\\u6bcf\\u4e2a\\u5de5\\u4f5c\\u7c3f\\u91cc\\u9762\\u53ef\\u4ee5\\u542b\\u6709\\u591a\\u4e2a\\u5de5\\u4f5c\\u8868\": 0, \"excel\\u8868\\u4e2d\\u6700\\u5927\\u652f\\u6301255\\u4e2a\\u5de5\\u4f5c\\u8868\": 0, \"\\u5355\\u5143\\u683c\\u5c31\\u662f\\u5de5\\u4f5c\\u8868\\u4e2d\\u95f4\\u6bcf\\u4e00\\u4e2a\\u683c\\u5b50\": 0, \"\\u5728excel\\u6700\\u4e0a\\u65b9\\u662f\\u5de5\\u5177\\u680f\": 0, \"\\u5982\\u679c\\u5e0c\\u671b\\u5728excel\\u4e2d\\u5bfc\\u5165\\u7b2c\\u4e09\\u65b9\\u63d2\\u4ef6\": 0, \"\\u53ef\\u4ee5\\u70b9\\u51fb\": 0, \"\\u6587\\u4ef6\": 0, \"\\u9009\\u9879\": 0, \"\\u81ea\\u5b9a\\u4e49\\u529f\\u80fd\\u533a\": 0, \"\\u70b9\\u51fb\\u53f3\\u4fa7\\u7684\": 0, \"\\u5373\\u53ef\\u5bfc\\u5165\\u76f8\\u5173\\u6a21\\u5757\": 0, \"excel\\u4e2d\\u7684\\u6570\\u636e\\u53ef\\u4ee5\\u5b58\\u50a8\\u4e3a\\u4e0d\\u540c\\u7684\\u7c7b\\u578b\\u683c\\u5f0f\": 0, \"\\u5176\\u4e2d\\u5e38\\u7528\\u7684\\u5b58\\u50a8\\u7c7b\\u4f3c\\u5206\\u522b\\u662fxlsx\": 0, \"csv\\u4ee5\\u53catxt\": 0, \"\\u4e00\\u822c\\u60c5\\u51b5\\u4e0b\": 0, \"csv\\u6587\\u4ef6\\u91c7\\u7528\\u662f\\u9017\\u53f7\\u5206\\u9694\": 0, \"txt\\u6587\\u4ef6\\u91c7\\u7528\\u7684\\u662f\\u5236\\u8868\\u7b26\\u4f5c\\u4e3a\\u5206\\u9694\": 0, \"\\u4f8b\\u5982\": [0, 4, 7, 9], \"data\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 15], \"chap1\": [0, 15], \"titanic_norm\": [0, 15], \"csv\": [0, 15], \"titanic_tab\": 0, \"txt\": [0, 15], \"\\u800c\\u5728\\u8f83\\u4e3a\\u7279\\u6b8a\\u7684\\u60c5\\u51b5\\u4e0b\": 0, \"\\u6570\\u636e\\u7684\\u5206\\u9694\\u7b26\\u5408\\u53ef\\u80fd\\u4e0d\\u662f\\u5e38\\u89c4\\u7684\\u5206\\u9694\\u7b26\\u5408\": 0, \"titanic_speci\": [0, 15], \"\\u4f7f\\u7528\\u8bb0\\u4e8b\\u672c\\u6253\\u5f00\\u8fd9\\u4e2a\\u6587\\u4ef6\\u53d1\\u73b0\\u6587\\u4ef6\\u91c7\\u7528\": 0, \"\\u4f5c\\u4e3a\\u5206\\u9694\\u7684\\u7b26\\u5408\": 0, \"\\u90a3\\u4e48\\u8fd9\\u6837\\u7684\\u6587\\u4ef6\\u5982\\u4f55\\u4f7f\\u7528excel\\u6253\\u5f00\\u5462\": 0, \"\\u8fd9\\u91cc\\u63a8\\u8350\\u5927\\u5bb6\\u4f7f\\u7528\\u4ee5\\u4e0b\\u7684\\u64cd\\u4f5c\\u65b9\\u6848\": 0, \"\\u64cd\\u4f5c\\u8def\\u5f84\\u4e3a\\u83dc\\u5355\\u680f\\u9009\\u62e9\": 0, \"\\u6570\\u636e\": 0, \"\\u83b7\\u53d6\\u548c\\u8f6c\\u6362\\u6570\\u636e\": 0, \"\\u4ece\\u6587\\u4ef6\": 0, \"\\u70b9\\u51fb\": [0, 2, 3, 4, 5, 6], \"\\u52a0\\u8f7d\": 0, \"\\u540e\\u53ef\\u4ee5\\u770b\\u5230\\u6211\\u4eec\\u5bfc\\u5165\\u7684\\u6570\\u636e\\u96c6\": 0, \"\\u63a5\\u7740\\u6309\\u5feb\\u6377\\u952e\": 0, \"ctrl\": [0, 2, 4], \"\": [0, 2], \"\\u4fdd\\u5b58\\u5de5\\u4f5c\\u7c3f\\u5230\\u672c\\u5730\": 0, \"\\u81f3\\u6b64\\u6211\\u4eec\\u5df2\\u7ecf\\u6210\\u529f\\u52a0\\u8f7d\\u6570\\u636e\\u96c6\\u5230\\u5de5\\u4f5c\\u8868\\u5f53\\u4e2d\": 0, \"\\u9700\\u8981\\u6ce8\\u610f\\u7684\\u662f\\u6b64\\u65f6\\u6784\\u5efa\\u7684\\u6570\\u636e\\u8868\\u8ddf\\u539f\\u59cb\\u6570\\u636e\\u662f\\u5b58\\u5728\\u8fde\\u63a5\\u5173\\u7cfb\": 0, \"\\u66f4\\u6539csv\\u6587\\u4ef6\\u7684\\u6570\\u636e\\u540e\\u5728\\u70b9\\u51fb\\u8def\\u5f84\": 0, \"\\u8bbe\\u8ba1\": 0, \"\\u5916\\u90e8\\u8868\\u6570\\u636e\": 0, \"\\u5237\\u65b0\": 0, \"\\u540e\\u5c31\\u53ef\\u4ee5\\u66f4\\u65b0\\u5de5\\u4f5c\\u8868\\u6570\\u636e\": 0, \"\\u5982\\u679c\\u8981\\u53d6\\u6d88\\u94fe\\u63a5\\u5173\\u7cfb\\u5219\\u70b9\\u51fb\\u8def\\u5f84\": 0, \"\\u5916\\u90e8\\u6570\\u636e\\u8868\": 0, \"\\u53d6\\u6d88\\u94fe\\u63a5\": 0, \"\\u5373\\u53ef\": 0, \"\\u6253\\u5f00\": [0, 1, 4, 5, 7, 8, 9, 15], \"\\u5de5\\u4f5c\\u8868\": 0, \"\\u53ef\\u4ee5\\u770b\\u5230excel\\u670911\\u79cd\\u6570\\u636e\\u7c7b\\u578b\": 0, \"\\u5728\\u5e73\\u65f6\\u5de5\\u4f5c\\u548c\\u5b66\\u4e60\\u4e2d\\u5e38\\u89c1\\u7684\\u6570\\u636e\\u7c7b\\u578b\\u67093\\u79cd\\u5206\\u522b\\u662f\\u6570\\u5b57\": 0, \"\\u6587\\u672c\\u548c\\u65e5\\u671f\": 0, \"\\u63a5\\u4e0b\\u6765\\u5c31\\u8be6\\u7ec6\\u8bb2\\u89e3\\u8fd93\\u79cd\\u683c\\u5f0f\\u7684\\u76f8\\u5173\\u5e94\\u7528\": 0, \"\\u6570\\u503c\\u662f\\u5355\\u5143\\u683c\\u6700\\u5e38\\u89c1\\u7684\\u6570\\u636e\\u4e4b\\u4e00\": 0, \"12\\u4f4d\\u6570\\u7684\\u65f6\\u5019\\u4f1a\\u4ee5\\u79d1\\u5b66\\u8ba1\\u6570\\u6cd5\\u663e\\u793a\": 0, \"\\u771f\\u5047\\u6570\\u5b57\": 0, \"\\u5de5\\u4f5c\\u8868\\u770b\\u5230\\u5c55\\u793a\\u7684\\u662f\\u771f\\u5047\\u6570\\u503c\\u5217\": 0, \"\\u771f\\u6570\\u503c\\u9ed8\\u8ba4\\u60c5\\u51b5\\u4e0b\\u662f\\u53f3\\u5bf9\\u9f50\": 0, \"\\u65b9\\u4fbf\\u89c2\\u6d4b\\u6570\\u636e\\u4f4d\\u6570\": 0, \"\\u5047\\u6570\\u503c\\u662f\\u6570\\u503c\\u578b\\u6587\\u672c\\u5c5e\\u4e8e\": 0, \"\\u5de6\\u4e0a\\u89d2\\u4f1a\\u6709\\u4e2a\\u7eff\\u8272\\u4e09\\u89d2\\u9519\\u8bef\\u68c0\\u67e5\": 0, \"\\u5f53\\u6570\\u636e\\u662f\\u6587\\u672c\\u65f6\": 0, \"\\u65e0\\u6cd5\\u5b8c\\u6210\\u6570\\u5b57\\u8fd0\\u7b97\\u64cd\\u4f5c\": 0, \"excel\\u4f1a\\u81ea\\u5e26\\u6570\\u636e\\u7ea0\\u9519\\u529f\\u80fd\": 0, \"\\u70b9\\u51fb\\u9ec4\\u8272\\u611f\\u53f9\\u53f7\\u53ef\\u4ee5\\u770b\\u5230\": 0, \"\\u5c06\\u6587\\u672c\\u8f6c\\u51fa\\u6570\\u5b57\": 0, \"\\u6216\\u8005\\u4f7f\\u7528\": 0, \"valu\": [0, 5], \"\\u51fd\\u6570\\u5c06\\u6587\\u672c\\u8f6c\\u6210\\u6570\\u5b57\": 0, \"\\u6587\\u672c\\u4e3aexcel\\u4e2d\\u7684\\u5e38\\u89c1\\u683c\\u5f0f\": 0, \"\\u4e3b\\u8981\\u4e3a\\u6587\\u672c\\u5b57\\u7b26\\u4e32\": 0, \"\\u4f8b\\u5982\\u4e0b\\u56fe\\u5c31\\u662f\\u5178\\u578b\\u7684\\u6587\\u672c\\u6570\\u636e\": 0, \"\\u5f53\\u6570\\u636e\\u662f\\u6587\\u672c\\u7c7b\\u578b\\u65f6\\u5c31\\u53ef\\u4ee5\\u5b8c\\u6210\\u6587\\u672c\\u6570\\u636e\\u76f8\\u5173\\u64cd\\u4f5c\": 0, \"excel\\u4e2d\\u7684\\u6807\\u51c6\\u65e5\\u671f\\u7531\\u5e74\\u6708\\u65e5\\u7ec4\\u6210\\u7684\\u6570\\u636e\": 0, \"2021\": [0, 12, 13], \"\\u540c\\u65f6\\u65e5\\u671f\\u53c8\\u662f\\u5f88\\u7279\\u6b8a\\u7684\\u6570\\u503c\": 0, \"\\u5728excel\\u91cc\\u9762\\u65e5\\u671f\\u6700\\u65e9\\u662f1900\\u5e741\\u67081\\u65e5\": 0, \"\\u5bf9\\u5e94\\u7684\\u6570\\u503c\\u4e3a1\": 0, \"\\u901a\\u8fc7\\u4e24\\u65e5\\u671f\\u76f8\\u51cf\\u53ef\\u4ee5\\u5f97\\u5230\\u65e5\\u671f\\u76f8\\u5dee\\u7684\\u5929\\u6570\": 0, \"\\u9700\\u8981\\u6ce8\\u610f\\u7684\\u662f\\u5982\\u679c\\u662f\": 0, \"01\": [0, 8], \"\\u7684\\u6570\\u636e\\u5c31\\u8981\\u770b\\u662f\\u5426\\u5b9e\\u9645\\u6570\\u636e\\u4e3a\": 0, \"\\u5426\\u5219\\u4e3a\\u6587\\u672c\\u578b\\u65e5\\u671f\": 0, \"\\u9700\\u8981\\u8fdb\\u884c\\u8f6c\\u6362\\u624d\\u884c\": 0, \"\\u89c2\\u5bdf\\u4e0b\\u56fe\\u771f\\u5047\\u65e5\\u671f\": 0, \"\\u53ef\\u4ee5\\u53d1\\u73b0\\u771f\\u65e5\\u671f\\u53f3\\u5bf9\\u9f50\": 0, \"\\u5047\\u65e5\\u671f\\u5de6\\u5bf9\\u9f50\": 0, \"\\u5185\\u5bb9\\u8ddf\\u663e\\u793a\\u7684\\u4e00\\u81f4\": 0, \"\\u771f\\u65e5\\u671f\\u8f6c\\u683c\\u5f0f\\u53ef\\u4ee5\\u770b\\u5230\\u5355\\u5143\\u683c\\u6570\\u636e\\u4ecd\\u7136\\u662f\\u771f\\u65e5\\u671f\\u683c\\u5f0f\": 0, \"\\u5185\\u5bb9\\u8ddf\\u663e\\u793a\\u4e0d\\u4e00\\u81f4\": 0, \"\\u8bbe\\u7f6e\\u5355\\u5143\\u683c\\u683c\\u5f0f\\u53ef\\u4ee5\\u70b9\\u51fb\\u5355\\u5143\\u683c\\u540e\": 0, \"\\u53f3\\u952e\": 0, \"\\u8bbe\\u7f6e\\u5355\\u5143\\u683c\\u683c\\u5f0f\": [0, 2], \"\\u6216\\u8005\\u6309\\u5feb\\u6377\\u952e\": 0, \"\\u6216\\u8005\\u901a\\u8fc7\\u5de5\\u5177\\u680f\": 0, \"\\u5f00\\u59cb\": [0, 8], \"\\u53bb\\u5feb\\u901f\\u505a\\u66f4\\u6539\": 0, \"\\u5355\\u5143\\u683c\\u53ef\\u4ee5\\u8bbe\\u7f6e\\u7684\\u683c\\u5f0f\\u7c7b\\u578b\\u5305\\u62ec\": 0, \"\\u8c03\\u6574\\u6570\\u503c\\u683c\\u5f0f\\u6216\\u8005\\u65e5\\u671f\\u683c\\u5f0f\": 0, \"\\u5bf9\\u9f50\": 0, \"\\u8c03\\u6574\\u5bf9\\u9f50\\u65b9\\u5f0f\": 0, \"\\u5b57\\u4f53\": 0, \"\\u66f4\\u6539\\u5b57\\u4f53\": 0, \"\\u5b57\\u578b\": 0, \"\\u5b57\\u53f7\\u7b49\": 0, \"\\u8fb9\\u6846\": 0, \"\\u5355\\u5143\\u683c\\u8fb9\\u6846\\u8bbe\\u7f6e\": 0, \"\\u586b\\u5145\": 0, \"\\u586b\\u5145\\u5355\\u5143\\u683c\\u80cc\\u666f\\u989c\\u8272\": 0, \"\\u6807\\u6ce8\\u6570\\u636e\\u7ecf\\u5e38\\u4f7f\\u7528\": 0, \"\\u4fdd\\u62a4\": 0, \"\\u9501\\u5b9a\\u5355\\u5143\\u683c\\u6216\\u8005\\u9690\\u85cf\\u516c\\u5f0f\": 0, \"\\u8bbe\\u7f6e\\u5355\\u5143\\u683c\\u683c\\u5f0f\\u5206\\u7c7b\\u9009\\u62e9\\u6570\\u503c\": 0, \"\\u5bf9\\u6570\\u503c\\u8bbe\\u7f6e\\u5c0f\\u6570\\u70b9\\u4e00\\u822c\\u4fdd\\u7559\\u4e24\\u4f4d\": 0, \"\\u540c\\u65f6\\u80fd\\u8ba9\\u6570\\u503c\\u5bf9\\u9f50\": 0, \"\\u4f7f\\u7528\\u5343\\u5206\\u4f4d\\u5206\\u9694\\u7b26\\u80fd\\u66f4\\u5bb9\\u6613\\u89c2\\u5bdf\\u6570\\u503c\\u5927\\u5c0f\": 0, \"\\u6587\\u672c\\u5e38\\u89c1\\u7684\\u8bbe\\u7f6e\\u683c\\u5f0f\\u7528\\u4e8e\\u5bf9\\u6587\\u672c\\u8fdb\\u884c\\u52a0\\u5355\\u5f15\\u53f7\": 0, \"\\u53cc\\u5f15\\u53f7\\u6216\\u8005\\u9017\\u53f7\\u7684\\u60c5\\u51b5\": 0, \"\\u4f8b\\u5982\\u5bf9\\u771f\\u5047\\u65e5\\u671f\\u4e2d\\u7684\\u5047\\u65e5\\u671f\\u589e\\u52a0\\u5355\\u5f15\\u53f7\": 0, \"\\u901a\\u8fc7\\u65e5\\u671f\\u5206\\u7c7b\\u8c03\\u6574\\u65e5\\u671f\\u683c\\u5f0f\\u4e3a\\u5e74\": 0, \"\\u6708\": [0, 2, 5], \"\\u65e5\": [0, 2, 5], \"\\u9700\\u8981\\u6ce8\\u610f\\u7684\\u662f\\u6587\\u672c\\u578b\\u7684\\u65e5\\u671f\\u683c\\u5f0f\\u65e0\\u6cd5\\u8c03\\u6574\": 0, \"\\u800c\\u6570\\u503c\\u662f\\u53ef\\u4ee5\\u8c03\\u6574\\u4e3a\\u65e5\\u671f\": 0, \"\\u5c06\\u6570\\u503c\\u8f6c\\u6362\\u6210\\u6587\\u672c\": 0, \"\\u5c06\\u4e0d\\u89c4\\u8303\\u65e5\\u671f\\u8f6c\\u6210\\u89c4\\u8303\\u65e5\\u671f\": 0, \"\\u7136\\u540e\\u8f6c\\u6210\\u6587\\u672c\": 0, \"\\u4f7f\\u7528excel\\u6570\\u636e\\u5bfc\\u5165\\u529f\\u80fd\": 0, \"\\u5b8c\\u6210\": [0, 2, 5, 6, 15], \"titanic_train\": 0, \"\\u6570\\u636e\\u5bfc\\u5165\": [0, 15], \"\\u4e2d\\u6848\\u4f8b1\": [0, 15], \"4\\u4e2d\\u7684\\u95ee\\u9898\": [0, 15], \"\\u6570\\u636e\\u770b\\u677f\\u4f5c\\u4e3a\\u6570\\u636e\\u52a8\\u6001\\u5c55\\u793a\\u7684\\u4e00\\u79cd\\u91cd\\u8981\\u65b9\\u5f0f\": 1, \"\\u88ab\\u5e7f\\u6cdb\\u7684\\u5e94\\u7528\\u4e8e\\u5404\\u4e2a\\u9886\\u57df\": 1, \"\\u56e0\\u6b64\\u672c\\u8282\\u6839\\u636e1\\u4e2a\\u6848\\u4f8b\\u8bb2\\u89e3\\u4f7f\\u7528excel\\u5236\\u4f5c\\u6570\\u636e\\u770b\\u677f\\u7684\\u8fc7\\u7a0b\": 1, \"\\u4ee5\\u671f\\u8d77\\u5230\\u629b\\u7816\\u5f15\\u7389\\u7684\\u6548\\u679c\": 1, \"\\u5728\\u5b66\\u4e60\\u6280\\u80fd\\u7684\\u540c\\u65f6\\u4e5f\\u5c06\\u5176\\u5e94\\u7528\\u5230\\u5b9e\\u8df5\\u7684\\u5de5\\u4f5c\\u4e2d\": 1, \"chap10\": 1, \"10\": [1, 3, 15], \"\\u4e2d\\u7684\\u6570\\u636e\\u6e90\": [1, 9], \"\\u8fd9\\u662f\\u67d0\\u5382\\u5bb6\\u5728\\u6dd8\\u5b9d\": 1, \"\\u62fc\\u591a\\u591a\": 1, \"\\u4eac\\u4e1c\\u8fd93\\u4e2a\\u7535\\u5546\\u9500\\u552e\\u5e73\\u53f0\\u7684\\u9500\\u552e\\u6570\\u636e\": 1, \"\\u73b0\\u5728\\u4f60\\u662f\\u8fd9\\u4e2a\\u5382\\u5bb6\\u7684\\u5458\\u5de5\": 1, \"\\u8001\\u677f\\u60f3\\u77e5\\u9053\\u5546\\u54c1\\u5728\\u4e0d\\u540c\\u6e20\\u9053\\u7684\\u6bcf\\u5468\\u9500\\u552e\\u60c5\\u51b5\": 1, \"\\u60f3\\u8bf7\\u4f60\\u505a\\u4e00\\u4e2a\\u6570\\u636e\\u5468\\u62a5\\u770b\\u677f\": 1, \"\\u65e2\\u7136\\u662f\\u5468\\u62a5\\u770b\\u677f\": 1, \"\\u9700\\u8981\\u786e\\u5b9a\\u6bcf\\u5929\\u65e5\\u671f\\u6240\\u5728\\u5468\\u6570\\u4e0e\\u6bcf\\u5468\\u7684\\u7b2c\\u51e0\\u5929\": 1, \"\\u6839\\u636e\\u786e\\u5b9a\\u5468\\u6570\\u5bf9\\u9500\\u552e\\u91d1\\u989d\\u8fdb\\u884c\\u6c47\\u603b\": 1, \"\\u5bf9\\u9500\\u552e\\u91d1\\u989d\\u8fdb\\u884c\\u52a8\\u6001\\u5c55\\u793a\": 1, \"\\u786e\\u5b9a\\u65e5\\u671f\\u6240\\u5728\\u7684\\u5468\\u6570\\u7528\": 1, \"weeknum\\u51fd\\u6570\": 1, \"\\u786e\\u5b9a\\u65e5\\u671f\\u662f\\u7b2c\\u51e0\\u5468\\u53ef\\u4ee5\\u7528\": 1, \"weekday\\u51fd\\u6570\": 1, \"\\u5728h2\\u5355\\u5143\\u683c\\u8f93\\u5165\": 1, \"weeknum\": 1, \"b2\": [1, 2, 4, 6, 8], \"\\u5728i2\\u5355\\u5143\\u683c\\u8f93\\u5165\": 1, \"weekdai\": 1, \"11\": [1, 5, 7, 12, 13], \"\\u5982\\u679c\\u60f3\\u5f97\\u5230\\u4e2d\\u6587\\u661f\\u671f\\u51e0\": 1, \"\\u53ef\\u4ee5\\u8f93\\u5165\": 1, \"text\": [1, 5], \"aaaa\": [1, 5], \"\\u65b0\\u5efa1\\u4e2a\\u5de5\\u4f5c\\u8868\": 1, \"\\u786e\\u5b9a\\u52a8\\u6001\\u6570\\u636e\\u7684\\u53d8\\u91cf\\u4e3a\\u5468\\u6570\": 1, \"\\u5e76\\u786e\\u5b9a\\u9700\\u8981\\u8ba1\\u7b97\\u7684\\u6307\\u6807\": 1, \"\\u672c\\u5468\\u5f00\\u59cb\\u65e5\\u671f\": 1, \"\\u4ecb\\u7ecd\\u65e5\\u671f\": 1, \"\\u9500\\u552e\\u989d\": 1, \"\\u8ba2\\u5355\\u6570\": 1, \"\\u4e0a\\u5468\\u9500\\u552e\\u989d\": 1, \"\\u4e0a\\u5468\\u8ba2\\u5355\\u6570\": 1, \"\\u9500\\u552e\\u989d\\u53d8\\u5316\": 1, \"\\u8ba2\\u5355\\u6570\\u53d8\\u5316\": 1, \"\\u4f7f\\u7528\\u516c\\u5f0f\\u6c42\\u89e3\\u76f8\\u5173\\u7684\\u57fa\\u7840\\u6570\\u636e\": 1, \"\\u5728c3\\u5355\\u5143\\u683c\\u8f93\\u5165\\u516c\\u5f0f\": 1, \"xlookup\": [1, 8, 10], \"c2\": [1, 4, 5, 6, 7], \"\\u6570\\u636e\\u6e90\": [1, 9, 15], \"h1\": [1, 6], \"h50001\": 1, \"b1\": [1, 6], \"b50001\": 1, \"\\u5982\\u679c\\u53d1\\u73b0\\u6570\\u636e\\u65e5\\u671f\\u53d8\\u6210\\u4e8644200\": 1, \"\\u663e\\u7136\\u5c31\\u662f\\u683c\\u5f0f\\u4e0d\\u6b63\\u786e\": 1, \"\\u53ea\\u9700\\u8981\\u5c06\\u5355\\u5143\\u683c\\u7684\\u683c\\u5f0f\\u8f6c\\u4e3a\\u65e5\\u671f\\u5373\\u53ef\": 1, \"\\u5728c4\\u5355\\u5143\\u683c\\u8f93\\u5165\\u516c\\u5f0f\": 1, \"0\": [1, 4, 6, 12, 13], \"\\u5bf9\\u4e8e\\u672c\\u5468\\u7684\\u9500\\u552e\\u989d\": 1, \"\\u53ef\\u4ee5\\u4f7f\\u7528sumifs\\u51fd\\u6570\\u83b7\\u5f97\": 1, \"\\u5728c5\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 1, \"sumif\": [1, 4], \"f\": [1, 2], \"b\": [1, 2, 4, 8], \"c\": [1, 2, 4], \"\\u5bf9\\u4e8e\\u672c\\u5468\\u7684\\u8ba2\\u5355\\u6570\": 1, \"\\u53ef\\u4ee5\\u4f7f\\u7528countifs\\u51fd\\u6570\\u83b7\\u5f97\": 1, \"\\u5728c6\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 1, \"countif\": [1, 4, 7], \"\\u5bf9\\u4e8e\\u4e0a\\u5468\\u5f00\\u59cb\\u65e5\\u671f\": 1, \"\\u53ef\\u4ee5\\u4f7f\\u7528\\u672c\\u5468\\u5f00\\u59cb\\u65e5\\u671f\": 1, \"7\": [1, 3, 4, 5, 6, 7, 15], \"\\u5728e3\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 1, \"c3\": [1, 4], \"\\u5bf9\\u4e8e\\u4e0a\\u5468\\u7ed3\\u675f\\u65e5\\u671f\": 1, \"\\u53ef\\u4ee5\\u4f7f\\u7528\\u672c\\u5468\\u7ed3\\u675f\\u65e5\\u671f\": 1, \"\\u5728e4\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 1, \"c4\": 1, \"\\u5bf9\\u4e8e\\u4e0a\\u5468\\u9500\\u552e\\u989d\": 1, \"\\u5728e5\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 1, \"e\": [1, 2, 5], \"\\u5bf9\\u4e8e\\u4e0a\\u5468\\u7684\\u8ba2\\u5355\\u6570\": 1, \"\\u5728e6\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 1, \"\\u5bf9\\u4e8e\\u76f8\\u6bd4\\u4e0a\\u5468\\u9500\\u552e\\u989d\\u53d8\\u5316\": 1, \"\\u53ef\\u4ee5\\u4f7f\\u7528\\u767e\\u5206\\u6bd4\\u8ba1\\u7b97\": 1, \"\\u4f7f\\u7528\": [1, 7], \"text\\u51fd\\u6570\": [1, 10], \"\\u786e\\u5b9a\\u683c\\u5f0f\": 1, \"\\u5728c7\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 1, \"c5\": 1, \"e5\": 1, \"100\": 1, \"00\": 1, \"\\u5bf9\\u4e8e\\u76f8\\u6bd4\\u4e0a\\u5468\\u8ba2\\u5355\\u6570\\u53d8\\u5316\": 1, \"\\u5728c8\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 1, \"c6\": 1, \"e6\": 1, \"\\u5f53\\u7136\\u4e5f\\u53ef\\u4ee5\\u76f4\\u63a5\\u8bbe\\u7f6e\\u5355\\u5143\\u683c\\u683c\\u5f0f\\u4e3a\": 1, \"\\u767e\\u5206\\u6bd4\": 1, \"\\u5f53\\u7136\\u8fd9\\u4e2a\": 1, \"\\u76f8\\u6bd4\\u4e0a\\u5468\\u9500\\u552e\\u989d\\u53d8\\u5316\": 1, \"\\u6307\\u6807\\u662f\\u4e00\\u4e2a\\u6bd4\\u8f83\\u91cd\\u8981\\u7684\\u6307\\u6807\": 1, \"\\u53ef\\u4ee5\\u5bf9\\u8fd9\\u4e2a\\u6307\\u6807\\u8fdb\\u884c\\u683c\\u5f0f\\u8bbe\\u7f6e\": 1, \"\\u9009\\u62e9c6\\u5355\\u5143\\u683c\\u5e76\\u8bbe\\u7f6e\\u6761\\u4ef6\\u683c\\u5f0f\": 1, \"\\u5224\\u65adc5\\u5355\\u5143\\u683c\\u4e0ee5\\u5355\\u5143\\u683c\\u503c\\u7684\\u5927\\u5c0f\": 1, \"\\u5982\\u679cc5\": 1, \"\\u90a3\\u4e48c6\\u5355\\u5143\\u503c\\u4e3a\\u7ea2\": 1, \"\\u5426\\u5219\\u4e3a\\u7eff\\u8272\": 1, \"\\u5bf9\\u4e8e\\u6bcf\\u5468\\u7684\\u6570\\u636e\\u9700\\u8981\\u505a\\u4e00\\u4e2a\\u7edf\\u8ba1\": 1, \"\\u5e76\\u5bf9\\u6bcf\\u5468\\u6570\\u636e\\u7684\\u4e0b\\u5355\\u91d1\\u989d\\u4e0e\\u4e0b\\u5355\\u6570\\u8fdb\\u884c\\u6574\\u7406\": 1, \"\\u88c5b13\": 1, \"b19\\u5355\\u5143\\u683c\\u8f93\\u5165\\u661f\\u671f\\u6570\": 1, \"\\u73b0\\u5728\\u9700\\u8981\\u7edf\\u8ba1\\u6bcf\\u54681\": 1, \"7\\u7684\\u4e0b\\u5355\\u91d1\\u989d\": 1, \"\\u56e0\\u6b64\\u5728c13\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\\u516c\\u5f0f\": 1, \"\\u5e76\\u5411\\u4e0b\\u586b\\u5145\\u516c\\u5f0f\": 1, \"i\": [1, 2, 4], \"\\u8ba1\\u7b97\\u8fc7\\u7a0b\": 1, \"b13\": [1, 4], \"\\u63a5\\u4e0b\\u6765\\u5c31\\u5bf9\\u6570\\u636e\\u8fdb\\u884c\\u53ef\\u89c6\\u5316\\u5c55\\u793a\": 1, \"\\u5e76\\u5bf9\\u6bcf\\u5468\\u6570\\u636e\\u7684\\u6e20\\u9053\\u5206\\u5e03\\u8fdb\\u884c\\u6574\\u7406\": 1, \"\\u88c5g3\": 1, \"g6\\u5355\\u5143\\u683c\\u5206\\u522b\\u8f93\\u5165\\u4ea7\\u54c1\\u7684\\u7535\\u5546\\u6e20\\u9053\\u4eac\\u4e1c\": 1, \"\\u6dd8\\u5b9d\": 1, \"\\u5728h3\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165sumifs\\u51fd\\u6570\\u6c42\\u4e0d\\u540c\\u6e20\\u9053\\u7684\\u9500\\u552e\\u91d1\\u989d\": 1, \"\\u5e76\\u8fdb\\u884c\\u5411\\u4e0b\\u586b\\u5145\": 1, \"g3\": [1, 4], \"\\u5728i3\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165countif\\u51fd\\u6570\\u6c42\\u4e0d\\u540c\\u6e20\\u9053\\u7684\\u4e0b\\u5355\\u6570\": 1, \"\\u5c06\\u56fe\\u7247\\u8fdb\\u884c\\u7b80\\u5355\\u7684\\u7f8e\\u5316\": 1, \"\\u5c31\\u53ef\\u4ee5\\u5f97\\u5230\\u4e0b\\u5355\\u91d1\\u989d\\u997c\\u72b6\\u56fe\\u4e0e\\u4e0b\\u5355\\u6570\\u7684\\u67f1\\u72b6\\u56fe\": 1, \"\\u5b8c\\u6210\\u4e86\\u524d\\u9762\\u7684\\u5168\\u90e8\\u8ba1\\u7b97\\u540e\": 1, \"\\u63a5\\u4e0b\\u6765\\u7684\\u5de5\\u4f5c\\u5c31\\u662f\\u5c06\\u7ed8\\u5236\\u7684\\u56fe\\u7ed3\\u5408\\u5728\\u4e00\\u8d77\\u8fdb\\u884c\\u5c55\\u793a\": 1, \"\\u9996\\u5148\\u662f\\u4e0a\\u8ff0\\u8ba1\\u7b97\\u7684\\u6570\\u636e\\u4e0e\\u7ed8\\u56fe\\u7684\\u4fe1\\u606f\\u96c6\\u5408\\u5230\\u4e00\\u8d77\": 1, \"\\u5176\\u4e2d\\u672c\\u5468\\u7684\\u603b\\u9500\\u91cf\": 1, \"\\u672c\\u5468\\u8ba2\\u5355\\u6570\": 1, \"\\u5f53\\u524d\\u5468\\u6570\": 1, \"\\u5f00\\u59cb\\u65e5\\u671f\\u4ee5\\u53ca\\u7ed3\\u675f\\u65e5\\u671f\\u90fd\\u662f\\u5f15\\u7528\\u8ba1\\u7b97\\u8fc7\\u7a0b\\u4e2d\\u7684\\u503c\": 1, \"\\u672c\\u5468\\u603b\\u9500\\u91cf\\u7684\\u503c\\u4e3a\": 1, \"\\u672c\\u5468\\u603b\\u8ba2\\u5355\\u7684\\u503c\\u4e3a\": 1, \"6\": [1, 3, 4, 6, 15], \"\\u672c\\u5468\\u5468\\u6570\\u7684\\u503c\\u4e3a\": 1, \"\\u672c\\u5468\\u7684\\u5f00\\u59cb\\u65e5\\u671f\\u4e3a\": 1, \"\\u672c\\u5468\\u7684\\u7ed3\\u675f\\u65e5\\u671f\\u4e3a\": 1, \"\\u56e0\\u4e3a\\u672c\\u5468\\u7684\\u53d8\\u5316\\u60c5\\u51b5\\u5e26\\u6709\\u6761\\u4ef6\\u5355\\u5143\\u683c\\u5f0f\": 1, \"\\u56e0\\u6b64\\u4e0d\\u80fd\\u76f4\\u63a5\\u5f15\\u7528\": 1, \"\\u9700\\u8981\\u5c06\\u5176\\u8f6c\\u5316\\u6210\\u94fe\\u63a5\\u56fe\\u7247\\u7684\\u5f62\\u5f0f\": 1, \"\\u5177\\u4f53\\u64cd\\u4f5c\\u4e3a\": 1, \"\\u590d\\u5236c7\\u5355\\u5143\\u683c\": 1, \"\\u7c98\\u8d34\\u9009\\u62e9\\u94fe\\u63a5\\u7684\\u56fe\\u7247\": 1, \"\\u5bf9\\u4e8e\\u672c\\u5468\\u7684\\u5468\\u6570\": 1, \"\\u9700\\u8981\\u8bbe\\u7f6e\\u6309\\u94ae\\u65b9\\u4fbf\\u8c03\\u8282\": 1, \"\\u9009\\u62e9\\u5f00\\u53d1\\u5de5\\u5177\": 1, \"\\u9009\\u62e9\\u63d2\\u5165\": [1, 9], \"\\u9009\\u62e9\\u6570\\u503c\\u8c03\\u8282\\u6309\\u94ae\": 1, \"\\u9009\\u62e9\\u8bbe\\u7f6e\\u63a7\\u4ef6\\u683c\\u5f0f\": 1, \"\\u8bbe\\u7f6e\\u63a7\\u4ef6\\u7684\\u5bf9\\u5e94\\u53c2\\u6570\": 1, \"\\u5230\\u8fd9\\u91cc\\u5c31\\u5b8c\\u6210\\u4e86\\u770b\\u677f90\": 1, \"\\u7684\\u6b65\\u9aa4\": 1, \"\\u70b9\\u51fb\\u6309\\u94ae\": 1, \"\\u80fd\\u770b\\u52a8\\u6001\\u5c55\\u793a\\u770b\\u677f\\u7684\\u76f8\\u5173\\u6570\\u636e\": 1, \"\\u6700\\u540e\\u5c31\\u5bf9\\u770b\\u677f\\u8fdb\\u884c\\u76f8\\u5e94\\u7684\\u7f8e\\u5316\": 1, \"\\u5728\\u770b\\u677f\\u7f8e\\u5316\\u8fc7\\u7a0b\\u4e2d\\u4e5f\\u53c2\\u8003\\u4e86\\u5176\\u4ed6excel\\u6559\\u7a0b\\u4e2d\\u7684\\u914d\\u8272\": 1, \"\\u56e0\\u6b64\\u6700\\u540e\\u7684\\u770b\\u677f\\u5c55\\u793a\\u6548\\u679c\\u4e3a\": 1, \"\\u5b8c\\u6210\\u6570\\u636e\\u770b\\u677f\": [1, 15], \"\\u9700\\u8981\\u901a\\u8fc7\\u6309\\u94ae\\u8c03\\u8282\\u5468\\u6570\": [1, 15], \"\\u540c\\u65f6\\u9500\\u552e\\u989d\": [1, 15], \"\\u8ba2\\u5355\\u6570\\u4ee5\\u53ca\\u6570\\u636e\\u56fe\\u8fdb\\u884c\\u53d8\\u5316\": [1, 15], \"\\u4e3a\\u4ec0\\u4e48\\u6bcf\\u5468\\u7684\\u4ecb\\u7ecd\\u65e5\\u671f\\u548c\\u5f00\\u59cb\\u65e5\\u671f\\u90fd\\u53ef\\u4ee5\\u4f7f\\u7528xlookup\\u83b7\\u5f97\": 1, \"\\u4e3a\\u4ec0\\u4e48\\u6bcf\\u54681\\u7684\\u4e0b\\u5355\\u91d1\\u989d\\u4e4b\\u548c\\u53ef\\u4ee5\\u901a\\u8fc7sumif\\u51fd\\u6570\\u6c42\": 1, \"\\u4e3a\\u4ec0\\u4e48\\u8bbe\\u7f6e\\u6309\\u94ae\\u8c03\\u8282\\u6bcf\\u5468\\u7684\\u6570\\u636e\\u53d8\\u5316\": 1, \"\\u8fd9\\u6837\\u6709\\u4ec0\\u4e48\\u597d\\u5904\": 1, \"\\u884c\\u6587\\u81f3\\u6b64\": 1, \"\\u4ee5\\u4e0a\\u5c31\\u662ffree\": 1, \"excel\\u6559\\u7a0b\\u7684\\u5168\\u90e8\\u5185\\u5bb9\": 1, \"\\u6574\\u4e2a\\u6559\\u7a0b\\u7684\\u7f16\\u5199\\u8fc7\\u7a0b\\u4e2d\\u4e5f\\u5e7f\\u6cdb\\u7684\\u53c2\\u9605\\u4e86\\u5404\\u5f0f\\u5404\\u6837\\u7684excel\\u6559\\u7a0b\": 1, \"\\u5c3d\\u529b\\u8ba9\\u672c\\u6559\\u7a0b\\u53d8\\u5f97\\u8f7b\\u677e\\u6613\\u5b66\": 1, \"\\u5e0c\\u671b\\u8bfb\\u8005\\u80fd\\u638c\\u63e1\\u76f8\\u5173\\u7684excel\\u6280\\u5de7\": 1, \"\\u5e76\\u80fd\\u7075\\u6d3b\\u7684\\u8fd0\\u7528\\u5230\\u5de5\\u4f5c\\u4e2d\": 1, \"\\u9762\\u5bf9\\u6570\\u5b57\\u5316\\u793e\\u4f1a\": 1, \"\\u6570\\u636e\\u5c06\\u6e17\\u900f\\u5230\\u751f\\u6d3b\\u7684\\u70b9\\u70b9\\u6ef4\\u6ef4\": 1, \"\\u62e5\\u62b1\\u6570\\u5b57\": 1, \"\\u540c\\u65f6\\u4e5f\\u62e5\\u62b1\\u53d8\\u5316\": 1, \"\\u4f5c\\u8005\": 1, \"\\u7267\\u5c0f\\u718a\": [1, 14], \"datawhale\\u6210\\u5458\": [1, 14], \"\\u6570\\u636e\\u5206\\u6790\\u5e08\": 1, \"\\u5728\\u672c\\u8282\\u4e2d\\u6211\\u4eec\\u5c06\\u4e86\\u89e3excel\\u4e2d\\u7684\\u5404\\u79cd\\u5feb\\u6377\\u64cd\\u4f5c\": 2, \"\\u76ee\\u524d\\u5df2\\u77e5\\u7684excel\\u5feb\\u6377\\u64cd\\u4f5c\\u952e\\u6709230\\u4e2a\": 2, \"\\u672c\\u7bc7\\u91cd\\u70b9\\u4ecb\\u7ecd\\u90a3\\u4e9b\\u5e38\\u7528\\u7684excel\\u5feb\\u6377\\u64cd\\u4f5c\\u952e\": 2, \"n\": [2, 6], \"\\u521b\\u5efa\\u4e00\\u4e2a\\u65b0\\u7684excel\\u5de5\\u4f5c\\u7c3f\": 2, \"w\": 2, \"\\u5173\\u95ed\\u5f53\\u524d\\u5de5\\u4f5c\\u7c3f\": 2, \"\\u4fdd\\u5b58\\u5f53\\u524d\\u7684excel\\u5de5\\u4f5c\\u7c3f\": 2, \"f12\": 2, \"\\u5c06\\u5f53\\u524d\\u6587\\u4ef6\\u8fdb\\u884c\\u53e6\\u5b58\\u4e3a\": 2, \"p\": 2, \"\\u6253\\u5370\\u5f53\\u524d\\u5de5\\u4f5c\\u8868\": 2, \"z\": 2, \"\\u64a4\\u9500\\u5f53\\u524d\\u64cd\\u4f5c\": 2, \"y\": 2, \"\\u6062\\u590d\\u64a4\\u9500\": 2, \"\\u53ef\\u4ee5\\u7528\\u8fd9\\u4e2a\\u5feb\\u6377\\u952e\\u6062\\u590d\\u88ab\\u64a4\\u6d88\\u7684\\u64cd\\u4f5c\": 2, \"\\u590d\\u5236\\u6240\\u9009\\u5355\\u5143\\u683c\": 2, \"x\": 2, \"\\u526a\\u5207\\u6240\\u9009\\u5355\\u5143\\u683c\": 2, \"v\": 2, \"\\u7c98\\u8d34\\u6240\\u9009\\u5355\\u5143\\u683c\": 2, \"\\u5f39\\u51fa\\u67e5\\u627e\\u548c\\u66ff\\u6362\\u5bf9\\u8bdd\\u6846\": 2, \"g\": [2, 4], \"\\u663e\\u793a\\u5b9a\\u4f4d\\u5bf9\\u8bdd\\u6846\": 2, \"A\": [2, 6], \"\\u5168\\u9009\\u8868\\u683c\": 2, \"\\u79fb\\u52a8\\u5230\\u6570\\u636e\\u533a\\u57df\\u7684\\u53f3\\u8fb9\\u7f18\": 2, \"\\u79fb\\u52a8\\u5230\\u6570\\u636e\\u533a\\u57df\\u7684\\u5de6\\u8fb9\\u7f18\": 2, \"\\u79fb\\u52a8\\u5230\\u6570\\u636e\\u533a\\u57df\\u7684\\u4e0a\\u8fb9\\u7f18\": 2, \"\\u79fb\\u52a8\\u5230\\u6570\\u636e\\u533a\\u57df\\u7684\\u4e0b\\u8fb9\\u7f18\": 2, \"f2\": [2, 6, 7], \"\\u7f16\\u8f91\\u5f53\\u524d\\u5355\\u5143\\u683c\": 2, \"\\u8ddf\\u53cc\\u51fb\\u5355\\u5143\\u683c\\u6548\\u679c\\u4e00\\u81f4\": 2, \"alt\": 2, \"enter\": [2, 4], \"\\u5728\\u5f53\\u524d\\u5355\\u5143\\u683c\\u5185\\u6362\\u884c\": 2, \"\\u76f4\\u63a5\\u6309\": 2, \"\\u4f1a\\u8df3\\u8f6c\\u5230\\u4e0b\\u4e00\\u884c\": 2, \"\\u4e0b\\u79fb\\u4e00\\u4e2a\\u5355\\u5143\\u683c\": 2, \"shift\": 2, \"\\u4e0a\\u79fb\\u4e00\\u4e2a\\u5355\\u5143\\u683c\": 2, \"tab\": 2, \"\\u53f3\\u79fb\\u4e00\\u4e2a\\u5355\\u5143\\u683c\": 2, \"\\u5de6\\u79fb\\u4e00\\u4e2a\\u5355\\u5143\\u683c\": 2, \"\\u8f93\\u5165\\u5b8c\\u6210\": 2, \"\\u5e76\\u505c\\u7559\\u5728\\u5f53\\u524d\\u5355\\u5143\\u683c\": 2, \"\\u5206\\u53f7\": 2, \"\\u8f93\\u5165\\u5f53\\u524d\\u65e5\\u671f\": 2, \"\\u663e\\u793a\\u4e3a\\u5e74\": 2, \"\\u8f93\\u5165\\u5f53\\u524d\\u65f6\\u95f4\": 2, \"\\u663e\\u793a\\u4e3a\\u5c0f\\u65f6\": 2, \"\\u5206\\u949f\": 2, \"\\u5feb\\u901f\\u586b\\u5145\": 2, \"\\u6570\\u5b571\": 2, \"\\u52a0\\u7c97\\u6216\\u53d6\\u6d88\\u52a0\\u7c97\": 2, \"\\u52a0\\u659c\\u4f53\\u6216\\u53d6\\u6d88\\u659c\\u4f53\": 2, \"f4\": 2, \"\\u7edd\\u5bf9\\u5f15\\u7528\\u548c\\u76f8\\u5bf9\\u5f15\\u7528\\u5207\\u6362\": 2, \"\\u81ea\\u52a8\\u63d2\\u5165\\u6c42\\u548c\\u516c\\u5f0f\": 2, \"\\u6253\\u5f00\\u6587\\u4ef6\": [2, 3, 4, 6], \"chap2\": [2, 15], \"\\u6848\\u4f8b1\": [2, 3, 8, 15], \"\\u9009\\u4e2d\\u6848\\u4f8b1\\u4e2d\\u7684\\u8868\\u683c\\u533a\\u57df\": 2, \"\\u6ce8\\u610f\\u8fd9\\u91cc\\u8981\\u628a\\u6c47\\u603b\\u7684\\u90a3\\u4e00\\u884c\\u4e5f\\u9009\\u4e0a\": 2, \"\\u4f7f\\u7528\\u5feb\\u6377\\u952e\": [2, 4], \"\\u53ef\\u4ee5\\u770b\\u5230\": [2, 9], \"\\u5bf9\\u4e0a\\u8ff0\\u7684excel\\u8868\\u683c\\u533a\\u57df\\u8fdb\\u884c\\u81ea\\u52a8\\u6c42\\u548c\": 2, \"\\u6211\\u4eec\\u73b0\\u5728\\u7684\\u4efb\\u52a1\\u662f\\u627e\\u52301\\u6708\\u548c2\\u6708\\u5ba2\\u6237\\u6570\\u4e0d\\u540c\\u7684\\u533a\\u57df\": 2, \"\\u5982\\u4f55\\u5feb\\u901f\\u5b9a\\u4f4d\": 2, \"\\u9009\\u4e2d\\u9700\\u8981\\u8fdb\\u884c\\u5217\\u5dee\\u5f02\\u6bd4\\u5bf9\\u7684\\u533a\\u57df\": 2, \"\\u6ce8\\u610f\\u9009\\u62e9\\u987a\\u5e8f\\u4ece\\u5de6\\u5f80\\u53f3\": 2, \"\\u6ce8\\u610f\\u4e0d\\u662f\": 2, \"\\u53ef\\u4ee5\\u5feb\\u901f\\u5b9a\\u4f4d\\u5230\\u533a\\u57df4\": 2, \"\\u533a\\u57df8\\u4ee5\\u53ca\\u533a\\u57df10\\u6240\\u5bf9\\u5e94\\u7684\\u5ba2\\u6237\\u6570\\u4e0d\\u540c\": 2, \"3\": [2, 3, 9, 10, 15], \"\\u9009\\u62e9\\u586b\\u5145\\u989c\\u8272\": 2, \"\\u5373\\u53ef\\u5feb\\u901f\\u663e\\u793a\\u4e24\\u5217\\u7684\\u5dee\\u5f02\": 2, \"\\u6ce8\\u610f\\u8fd9\\u91cc\\u7684\\u9009\\u62e9\\u65b9\\u5411\": 2, \"\\u4ece\\u53f3\\u5f80\\u5de6\\u9009\\u62e9\": 2, \"\\u90a3\\u4e48\\u9ed8\\u8ba4\\u6700\\u53f3\\u8fb9\\u4e3a\\u53c2\\u8003\\u6807\\u51c6\": 2, \"\\u5176\\u4ed6\\u5217\\u7684\\u6570\\u636e\\u53ef\\u53c2\\u8003\\u6807\\u51c6\\u6bd4\\u8f83\": 2, \"\\u5982\\u679c\\u4ece\\u5de6\\u5f80\\u53f3\\u9009\\u62e9\": 2, \"\\u90a3\\u6700\\u5de6\\u8fb9\\u5c31\\u662f\\u53c2\\u8003\\u6807\\u51c6\": 2, \"\\u5176\\u4ed6\\u7684\\u64cd\\u4f5c\\u540c\\u4e0a\": 2, \"\\u5728excel\\u4e2d\\u5f88\\u591a\\u91cd\\u590d\": 2, \"\\u7e41\\u7410\\u7684\\u5de5\\u4f5c\\u7531\\u6570\\u636e\\u63d0\\u53d6\\u548c\\u6570\\u636e\\u5408\\u5e76\\u8fd9\\u7c7b\\u95ee\\u9898\\u9020\\u6210\": 2, \"2013\\u5e74\\u4ee5\\u540e\\u7684excel\": 2, \"\\u652f\\u6301\\u667a\\u80fd\\u586b\\u5145\": 2, \"\\u80fd\\u7075\\u6d3b\\u7684\\u89e3\\u51b3\\u8fd9\\u7c7b\\u95ee\\u9898\": 2, \"\\u9700\\u8981\\u6ce8\\u610f\\u7684\\u662f\": 2, \"\\u81ea\\u52a8\\u586b\\u5145\\u7684\\u6570\\u636e\\u9700\\u8981\\u662f\\u540c\\u4e00\\u4e2a\\u89c4\\u8303\\u6570\\u636e\\u624d\\u53ef\\u4ee5\\u5b8c\\u6210\\u81ea\\u52a8\\u586b\\u5145\": 2, \"\\u9700\\u8981\\u63d0\\u53d6\\u5ba2\\u6237\\u7684\\u624b\\u673a\\u53f7\": 2, \"\\u624b\\u52a8\\u63d0\\u53d6\\u5ba2\\u62371\\u7684\\u624b\\u673a\\u53f7\": 2, \"\\u5e76\\u8f93\\u5165\\u5230\": 2, \"\\u9009\\u62e9\\u9700\\u8981\\u5feb\\u901f\\u586b\\u5145\\u7684\\u5217\": 2, \"\\u4e5f\\u5c31\\u662f\": 2, \"b11\": 2, \"\\u6309\": 2, \"\\u8fdb\\u884c\\u81ea\\u52a8\\u586b\\u5145\": 2, \"\\u5de5\\u4f5c\\u7c3f\\u4e2d\\u7684\": [2, 3, 4, 5, 8, 9, 15], \"\\u6848\\u4f8b2\": [2, 3, 15], \"\\u6848\\u4f8b3\": [2, 15], \"\\u7684\\u5feb\\u6377\\u952e\\u81ea\\u52a8\\u6c42\\u548c\\u4efb\\u52a1\": [2, 15], \"\\u7684\\u591a\\u884c\\u5feb\\u901f\\u6bd4\\u5bf9\\u4efb\\u52a1\": [2, 15], \"\\u63d0\\u793a\": [2, 15], \"\\u9700\\u8981\\u9009\\u4e2d\\u6240\\u6709\\u5f85\\u6bd4\\u5bf9\\u8868\\u683c\\u6846\": [2, 15], \"\\u6848\\u4f8b4\": [2, 15], \"\\u7684\\u586b\\u5145\\u4efb\\u52a1\": [2, 15], \"\\u5f53\\u9047\\u5230\\u9700\\u8981\\u5c06\\u591a\\u4e2a\\u8868\\u7684\\u884c\\u8bb0\\u5f55\\u5408\\u5e76\\u5728\\u4e00\\u8d77\\u7684\\u65f6\\u5019\": 3, \"\\u6211\\u4eec\\u4e00\\u822c\\u4f1a\\u624b\\u52a8\\u590d\\u5236\\u7c98\\u8d34\": 3, \"\\u8fd9\\u4f1a\\u5e26\\u6765\\u5f88\\u591a\\u91cd\\u590d\\u7e41\\u7410\\u7684\\u64cd\\u4f5c\": 3, \"\\u5e76\\u4e14\\u5bb9\\u6613\\u51fa\\u9519\": 3, \"\\u53ef\\u4ee5\\u4f7f\\u7528excel\\u7684\\u5408\\u5e76\\u8ba1\\u7b97\\u5de5\\u5177\\u6765\\u5feb\\u901f\\u5b8c\\u6210\": 3, \"chap3\": [3, 15], \"\\u53ef\\u4ee5\\u770b\\u5230\\u67093\\u4e2a\\u6d88\\u8d39\\u8868\\u683c\": 3, \"\\u6bcf\\u4e2a\\u5ba2\\u6237\\u7684\\u6d88\\u8d39\\u91d1\\u989d\\u4e0d\\u540c\": 3, \"\\u73b0\\u5728\\u9700\\u8981\\u4f60\\u7edf\\u8ba1\\u6bcf\\u4e2a\\u5ba2\\u6237\\u5728\\u6d88\\u8d39\\u7684\\u603b\\u91d1\\u989d\": 3, \"\\u4e00\\u822c\\u7684\\u64cd\\u4f5c\\u65b9\\u6cd5\\u662f\\u5c06\\u8fd93\\u4e2a\\u6570\\u636e\\u590d\\u5236\\u7c98\\u8d34\": 3, \"\\u90a3\\u4e48\\u6709\\u6ca1\\u6709\\u66f4\\u52a0\\u4f18\\u96c5\\u7684\\u65b9\\u6cd5\\u5462\": 3, \"\\u8fd9\\u91cc\\u63a8\\u8350\\u4f7f\\u7528\\u5408\\u5e76\\u8ba1\\u7b97\": 3, \"\\u9009\\u62e9\\u9700\\u8981\\u6c47\\u603b\\u7684\\u5355\\u5143\\u683c\\u8d77\\u70b9\": 3, \"\\u9009\\u62e9excel\\u4e2d\\u7684\\u6570\\u636e\\u680f\": 3, \"\\u627e\\u5230\\u6570\\u636e\\u680f\\u4e2d\\u7684\\u5408\\u5e76\\u8ba1\\u7b97\\u5757\": 3, \"4\": [3, 6, 9, 10, 15], \"\\u9009\\u62e9\\u5408\\u5e76\\u8ba1\\u7b97\\u51fd\\u6570\\u4e2d\\u7684\\u6c42\\u548c\": 3, \"5\": [3, 4, 5, 15], \"\\u70b9\\u51fb\\u5f15\\u7528\\u4f4d\\u7f6e\\u53f3\\u4fa7\\u7684\\u5f15\\u7528\\u9879\": 3, \"\\u9009\\u62e9\\u7b2c\\u4e00\\u4e2a\\u6570\\u636e\\u8868\\u6240\\u5728\\u7684\\u8303\\u56f4\": 3, \"\\u70b9\\u51fb\\u6dfb\\u52a0\": 3, \"8\": [3, 4, 5, 6, 8, 15], \"\\u5c063\\u4e2a\\u6570\\u636e\\u8868\\u6dfb\\u52a0\\u5230\\u6240\\u6709\\u5f15\\u7528\\u4f4d\\u7f6e\": 3, \"9\": [3, 7, 9, 15], \"\\u9009\\u62e9\\u6807\\u7b7e\\u4f4d\\u7f6e\\u4fe1\\u606f\": 3, \"\\u70b9\\u51fb\\u5b8c\\u6210\": 3, \"\\u53ef\\u4ee5\\u770b\\u5230\\u5b8c\\u6210\\u4e86\\u6240\\u6709\\u5ba2\\u6237\\u6d88\\u8d39\\u91d1\\u989d\\u7684\\u6c42\\u548c\\u8ba1\\u7b97\": 3, \"\\u53ef\\u4ee5\\u770b\\u5230\\u67093\\u4e2a\\u4e0d\\u540c\\u7684\\u6d88\\u8d39\\u8868\\u683c\": 3, \"\\u73b0\\u5728\\u9700\\u8981\\u4f60\\u7edf\\u8ba1\\u6bcf\\u4e2a\\u5ba2\\u6237\\u57283\\u4e2a\\u4e0d\\u540c\\u6d88\\u8d39\\u7684\\u603b\\u91d1\\u989d\": 3, \"\\u4f7f\\u7528\\u5408\\u5e76\\u8ba1\\u7b97\\u9009\\u62e93\\u4e2a\\u4e0d\\u540c\\u9879\\u76ee\\u7684\\u6570\\u636e\\u533a\\u57df\": 3, \"\\u9009\\u62e9\": [3, 4, 8, 9, 15], \"\\u5f97\\u5230\\u4e0d\\u540c\\u5ba2\\u6237\\u7684\\u6d88\\u8d39\\u6b21\\u6570\": [3, 15], \"\\u5f97\\u5230\\u4e0d\\u540c\\u5ba2\\u6237\\u7684\\u4e0d\\u540c\\u9879\\u76ee\\u7684\\u6d88\\u8d39\\u6b21\\u6570\": [3, 15], \"excel\\u4e2d\\u6709\\u7740\\u975e\\u5e38\\u4e30\\u5bcc\\u7684\\u51fd\\u6570\": 4, \"\\u8fd9\\u4e9b\\u51fd\\u6570\\u80fd\\u5927\\u5e45\\u5ea6\\u63d0\\u5347\\u6211\\u4eec\\u7684\\u5de5\\u4f5c\\u6548\\u7387\": 4, \"\\u672c\\u8282\\u4e2d\\u4f1a\\u91cd\\u70b9\\u4ecb\\u7ecd\\u4e00\\u4e9b\\u5e38\\u7528\\u7684excel\\u51fd\\u6570\": 4, \"chap4\": [4, 15], \"\\u73b0\\u5728\\u9700\\u8981\\u5bf9\\u5ba2\\u6237\\u7684\\u539f\\u59cb\\u5f97\\u5206\\u8fdb\\u884c\\u6821\\u6b63\": 4, \"\\u5f53\\u5ba2\\u6237\\u7684\\u539f\\u59cb\\u5f97\\u5206\\u4e3a\\u8d1f\\u65f6\": 4, \"\\u6821\\u6b63\\u4e3a0\": 4, \"\\u9488\\u5bf9\\u4e0a\\u9762\\u9047\\u5230\\u7684\\u95ee\\u9898\": 4, \"\\u53ef\\u4ee5\\u4f7f\\u7528if\\u51fd\\u6570\": 4, \"excel\\u51fd\\u6570\\u7528\\u6cd5\\u5982\\u4e0b\": 4, \"IF\": [4, 6], \"\\u5224\\u65ad\\u6761\\u4ef6\": 4, \"\\u5982\\u679c\\u6ee1\\u8db3\\u5219\": 4, \"\\u5982\\u679c\\u4e0d\\u6ee1\\u8db3\\u5219\": 4, \"\\u9488\\u5bf9\\u9047\\u5230\\u7684\\u95ee\\u9898\": [4, 5], \"\\u90a3\\u4e48\\u5728c2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 4, \"\\u6ce8\\u610f\": [4, 5], \"\\u8fd9\\u91cc\\u7684\\u9017\\u53f7\\u8981\\u4f7f\\u7528\\u82f1\\u6587\\u7684\\u9017\\u53f7\": [4, 5], \"\\u90a3\\u4e48\\u8fd9\\u4e2a\\u516c\\u5f0f\\u662f\\u4ec0\\u4e48\\u610f\\u601d\\u5462\": 4, \"\\u5224\\u65adb2\\u5355\\u5143\\u683c\\u662f\\u4e0d\\u662f\\u5c0f\\u4e8e0\": 4, \"\\u5982\\u679c\\u662f\": 4, \"\\u5219c2\\u5355\\u5143\\u683c\\u4e3a0\": 4, \"\\u5982\\u679c\\u4e0d\\u662f\\u5219\\u8fd4\\u56deb2\\u5355\\u5143\\u683c\\u7684\\u503c\": 4, \"\\u53ef\\u4ee5\\u770b\\u5230c2\\u5355\\u5143\\u683c\\u5b9e\\u9645\\u8fd4\\u56de\\u503c\\u4e3a0\": 4, \"\\u8fd9\\u662f\\u56e0\\u4e3ab2\\u7684\\u503c\\u4e3a\": 4, \"\\u6ee1\\u8db3\\u5224\\u65ad\\u6761\\u4ef6\": 4, \"\\u56e0\\u6b64c2\\u5355\\u5143\\u683c\\u8fd4\\u56de\\u4e3a0\": 4, \"\\u90a3\\u4e48\\u5982\\u4f55\\u8fdb\\u884c\\u516c\\u5f0f\\u6279\\u91cf\\u586b\\u5145\\u5462\": 4, \"\\u8fd9\\u91cc\\u63a8\\u8350\\u4e00\\u4e2a\\u6bd4\\u8f83\\u4f18\\u96c5\\u7684\\u65b9\\u6cd5\": 4, \"\\u5728c2\\u5355\\u5143\\u683c\\u5199excel\\u516c\\u5f0f\": 4, \"\\u9009\\u62e9\\u9700\\u8981\\u586b\\u5145\\u516c\\u5f0f\\u7684\\u533a\\u57df\": 4, \"\\u5305\\u62ecc2\\u5355\\u5143\\u683c\": 4, \"\\u70b9\\u51fbc2\\u5355\\u5143\\u683c\": 4, \"\\u8fdb\\u5165\\u516c\\u5f0f\\u7f16\\u8f91\\u72b6\\u6001\": 4, \"\\u8fdb\\u884c\\u6279\\u91cf\\u586b\\u5145\": 4, \"\\u73b0\\u5728\\u6709\\u5ba2\\u6237\\u76841\\u6708\": 4, \"2\\u6708\\u6d88\\u8d39\\u91d1\\u989d\": 4, \"\\u5982\\u679c\\u5ba2\\u62372\\u4e2a\\u6708\\u7684\\u6d88\\u8d39\\u91d1\\u989d\\u90fd\\u8d85\\u8fc7400\": 4, \"\\u90a3\\u4e48\\u5c31\\u8ba4\\u4e3a\\u8fd9\\u4e2a\\u5ba2\\u6237\\u4e3a\\u9ad8\\u6d88\\u8d39\\u5ba2\\u6237\": 4, \"\\u8fd9\\u91cc\\u4e0e5\": 4, \"1\\u4e2d\\u7684\\u6848\\u4f8b\\u4e0d\\u540c\": 4, \"\\u9700\\u8981if\\u51fd\\u6570\\u4e0e\\u903b\\u8f91\\u51fd\\u6570\\u8fdb\\u884c\\u914d\\u5408\": 4, \"and\\u51fd\\u6570\": 4, \"AND\": 4, \"\\u6761\\u4ef61\": 4, \"\\u6761\\u4ef62\": 4, \"or\\u51fd\\u6570\": 4, \"OR\": 4, \"\\u6761\\u4ef6\": 4, \"\\u9700\\u8981\\u6240\\u6709\\u6761\\u4ef6\\u5168\\u90e8\\u6ee1\\u8db3\": 4, \"\\u624d\\u8fd4\\u8fd8true\": 4, \"\\u6240\\u6709\\u6761\\u4ef6\\u4e2d\\u53ea\\u8981\\u67091\\u4e2a\\u6761\\u4ef6\\u6ee1\\u8db3\": 4, \"\\u5c31\\u8fd4\\u8fd8true\": 4, \"\\u90a3\\u4e48\\u5728d2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": [4, 5], \"400\": 4, \"\\u9ad8\\u6d88\\u8d39\\u5ba2\\u6237\": 4, \"\\u8fd9\\u91cc\": [4, 8], \"\\u4ee3\\u8868\\u8fd4\\u56de\\u7a7a\\u503c\": 4, \"\\u968f\\u540e\\u5bf9\\u6574\\u5217\\u7684\\u51fd\\u6570\\u8fdb\\u884c\\u586b\\u5145\": 4, \"\\u5177\\u4f53\\u586b\\u5145\\u65b9\\u6cd5\\u89c15\": 4, \"1\\u4e2d\\u8be6\\u89e3\": 4, \"\\u6709\\u5458\\u5de5\\u7684\\u76f8\\u5173\\u8003\\u6838\\u5206\": 4, \"\\u8003\\u6838\\u5f97\\u5206\\u57284\": 4, \"8\\u5206\\u4ee5\\u4e0a\": 4, \"\\u4f18\\u79c0\": 4, \"\\u8003\\u6838\\u5f97\\u5206\\u57283\": 4, \"7\\u5206\": 4, \"\\u826f\\u597d\": 4, \"\\u8003\\u6838\\u5f97\\u5206\\u57280\": 4, \"4\\u5206\": 4, \"\\u4e00\\u822c\": 4, \"\\u8fd9\\u91cc\\u53ef\\u4ee5\\u4f7f\\u7528ifs\\u51fd\\u6570\": 4, \"\\u5177\\u4f53\\u7528\\u6cd5\\u4e3a\": 4, \"IFS\": 4, \"\\u5224\\u65ad\\u6761\\u4ef61\": 4, \"\\u5982\\u679c\\u6ee1\\u8db3\\u6761\\u4ef61\\u5219\": 4, \"\\u5224\\u65ad\\u6761\\u4ef62\": 4, \"\\u5982\\u679c\\u6ee1\\u8db3\\u6761\\u4ef62\\u5219\": 4, \"\\u5219\\u53ef\\u4ee5\\u5728c2\\u5355\\u5143\\u683c\\u8f93\\u5165\": 4, \"b3\": 4, \"\\u5bf9\\u6574\\u5217\\u6570\\u636e\\u8fdb\\u884c\\u51fd\\u6570\\u586b\\u5145\": 4, \"\\u5728excel\\u6570\\u636e\\u4efb\\u52a1\\u5904\\u7406\\u4e2d\": 4, \"\\u4f1a\\u9047\\u5230\\u5927\\u91cf\\u7684\\u6c42\\u548c\\u7684\\u4efb\\u52a1\": 4, \"sumif\\u51fd\\u6570\\u5728\\u6c42\\u548c\\u4efb\\u52a1\\u4e2d\\u5177\\u6709\\u5929\\u7136\\u4f18\\u52bf\": 4, \"\\u56e0\\u6b64\\u5728\\u672c\\u8282\\u4e2d\\u5c06\\u8be6\\u7ec6\\u7684\\u8bb2\\u89e3sumif\\u51fd\\u6570\\u7684\\u76f8\\u5173\\u7528\\u6cd5\": 4, \"\\u6761\\u4ef6\\u533a\\u57df\": 4, \"\\u6c42\\u548c\\u6761\\u4ef6\": 4, \"\\u5b9e\\u9645\\u6c42\\u548c\\u533a\\u57df\": 4, \"\\u5b9e\\u9645\\u6c42\\u548c\\u533a\\u57df\\u4f4d\\u9009\\u62e9\\u6761\\u4ef6\": 4, \"2xlsx\": [4, 7, 8, 15], \"\\u4e2d\\u7684\": [4, 6, 7, 8, 15], \"\\u73b0\\u5728\\u6709\\u51e0\\u540d\\u540c\\u5b66\\u7684\\u8003\\u8bd5\\u6210\\u7ee9\": 4, \"\\u73b0\\u5728\\u60f3\\u7edf\\u8ba1\\u6570\\u5b66\\u6210\\u7ee9\\u572890\\u5206\\u4ee5\\u4e0a\\u7684\\u6210\\u7ee9\\u4e4b\\u548c\": 4, \"\\u90a3\\u4e48\\u53ef\\u4ee5\\u8f93\\u5165\\u5982\\u4e0b\\u7684\\u51fd\\u6570\\u516c\\u5f0f\": 4, \"90\": 4, \"\\u7b2c\\u4e00\\u4e2a\\u53c2\\u6570\\u4e3a\\u6761\\u4ef6\\u533a\\u57df\": 4, \"\\u56e0\\u4e3a\\u8981\\u5224\\u65ad\\u6570\\u5b66\\u6210\\u7ee9\": 4, \"\\u6240\\u4ee5\\u8fd9\\u91cc\\u9009\\u62e9b\\u5217\": 4, \"\\u5f53\\u7136\\u8fd9\\u91cc\\u4e5f\\u53ef\\u4ee5\\u4fee\\u6539\\u4e3a\\u5b9e\\u9645\\u7684\\u533a\\u57dfb2\": 4, \"b12\": 4, \"\\u7b2c\\u4e8c\\u4e2a\\u53c2\\u6570\\u4e3a\\u5224\\u5b9a\\u6761\\u4ef6\": 4, \"\\u5224\\u5b9a\\u6761\\u4ef6\\u4e3a\\u5927\\u4e8e\\u7b49\\u4e8e90\": 4, \"\\u7b2c\\u4e09\\u4e2a\\u53c2\\u6570\\u4e3a\\u5b9e\\u9645\\u6c42\\u548c\\u533a\": 4, \"\\u8fd9\\u662f\\u9009\\u586b\\u53c2\\u6570\": 4, \"\\u73b0\\u5728\\u60f3\\u7edf\\u8ba1\\u5c0f\\u7c73\\u7cfb\\u5217\\u7684\\u4ea7\\u54c1\\u9500\\u552e\\u989d\": 4, \"sumif\\u51fd\\u6570\\u652f\\u6301\\u6a21\\u7cca\\u5339\\u914d\": 4, \"\\u56e0\\u6b64\\u6211\\u4eec\\u8f93\\u5165\\u5982\\u4e0b\\u516c\\u5f0f\": 4, \"\\u5c0f\\u7c73\": 4, \"\\u4f7f\\u7528\\u5c0f\\u7c73\": 4, \"\\u5339\\u914d\\u6240\\u6709\\u7684\\u5c0f\\u7c73\\u7cfb\\u4ea7\\u54c1\": 4, \"\\u73b0\\u5728\\u60f3\\u7edf\\u8ba11\\u6708\": 4, \"3\\u6708\\u7684\\u9884\\u8ba1\\u9500\\u552e\\u989d\\u9884\\u8ba1\\u9500\\u552e\\u548c\\u5b9e\\u9645\\u9500\\u552e\\u989d\": 4, \"\\u56e0\\u6b64\\u53ef\\u4ee5\\u5de7\\u7528sumif\\u51fd\\u6570\": 4, \"\\u5c06\\u6761\\u4ef6\\u533a\\u57df\\u8fdb\\u884c\\u6a2a\\u5411\\u9009\\u62e9\": 4, \"\\u6761\\u4ef6\\u9009\\u62e9\\u81ea\\u5df1\\u9700\\u8981\\u7684\\u5b57\\u6bb5\": 4, \"\\u56e0\\u6b64\\u8f93\\u5165\\u5982\\u4e0b\\u4e24\\u4e2a\\u51fd\\u6570\\u516c\\u5f0f\": 4, \"\\u5e76\\u5411\\u4e0b\\u62d6\\u62fd\\u586b\\u5145\\u5176\\u4ed6\\u4f4d\\u7f6e\": 4, \"h\": 4, \"\\u5728excel\\u4e2d\\u662f\\u7edd\\u5bf9\\u5f15\\u7528\": 4, \"\\u516c\\u5f0f\\u4e2d\\u5f15\\u7528\\u7684\\u5355\\u5143\\u683c\\u5982\\u679c\\u4f7f\\u7528\\u7edd\\u5bf9\\u5f15\\u7528\": 4, \"\\u90a3\\u4e48\\u5411\\u4e0b\\u62d6\\u62fd\\u7684\\u8fc7\\u7a0b\\u4e2d\": 4, \"\\u8fd9\\u4e2a\\u5355\\u5143\\u683c\\u4e0d\\u4f1a\\u589e\\u52a0\": 4, \"\\u5728j3\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 4, \"\\u5728k3\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 4, \"\\u5e76\\u5411\\u4e0b\\u62d6\\u62fd\\u8fdb\\u884c\\u516c\\u5f0f\\u586b\\u5145\": 4, \"\\u89c2\\u5bdf\\u533a\\u522b\": 4, \"\\u53d1\\u73b0\": 4, \"\\u5982\\u679c\\u4f7f\\u7528\\u7edd\\u5bf9\\u5f15\\u7528\": 4, \"\\u5f15\\u7528\\u683c\\u5f0f\\u503c\\u5e76\\u4e0d\\u4f1a\\u968f\\u7740\\u516c\\u5f0f\\u7684\\u62d6\\u62fd\\u800c\\u6539\\u53d8\": 4, \"\\u8fd9\\u5c31\\u662f\\u7edd\\u5bf9\\u5f15\\u7528\\u4e0e\\u975e\\u7edd\\u5bf9\\u5f15\\u7528\\u7684\\u533a\\u522b\": 4, \"\\u73b0\\u5728\\u9700\\u8981\\u7edf\\u8ba1\\u8bed\\u6587\\u6210\\u7ee9\\u572880\\u5206\\u4ee5\\u4e0a\": 4, \"90\\u5206\\u4ee5\\u4e0b\\u540c\\u5b66\\u7684\\u6570\\u5b66\\u6210\\u7ee9\\u4e4b\\u548c\": 4, \"\\u90a3\\u4e48\\u9047\\u5230\\u8fd9\\u79cd\\u60c5\\u51b5\\u5e94\\u8be5\\u600e\\u4e48\\u5904\\u7406\\u5462\": 4, \"\\u76f8\\u6bd4\\u4e8e\\u524d\\u9762\\u7684\\u6848\\u4f8b\": 4, \"\\u8fd9\\u91cc\\u67092\\u4e2a\\u7b5b\\u9009\\u6761\\u4ef6\": 4, \"\\u800csumif\\u51fd\\u6570\\u65e0\\u6cd5\\u6ee1\\u8db3\\u9700\\u6c42\": 4, \"\\u8fd9\\u91cc\\u53ef\\u4ee5\\u4f7f\\u7528sumifs\\u51fd\\u6570\": 4, \"sumifs\\u51fd\\u6570\": 4, \"\\u6761\\u4ef6\\u533a\\u57df1\": 4, \"\\u6761\\u4ef6\\u533a\\u57df2\": 4, \"\\u56e0\\u6b64\\u5199\\u5982\\u4e0b\\u51fd\\u6570\\u516c\\u5f0f\": 4, \"c13\": 4, \"80\": 4, \"\\u56e0\\u4e3a\\u8981\\u6c42\\u6570\\u5b66\\u6210\\u7ee9\": 4, \"\\u6240\\u4ee5\\u7b2c\\u4e00\\u4e2a\\u53c2\\u6570\\u4e3ac2\": 4, \"\\u800c\\u7b5b\\u9009\\u6761\\u4ef6\\u4e3a\\u8bed\\u6587\": 4, \"\\u56e0\\u6b64\\u6761\\u4ef6\\u533a\\u57df\\u4e3ab2\": 4, \"\\u6848\\u4f8b5\": 4, \"\\u73b0\\u5728\\u9700\\u8981\\u7edf\\u8ba1\\u8bed\\u6587\\u6210\\u7ee9\\u8d85\\u8fc760\": 4, \"\\u6570\\u5b66\\u6210\\u7ee9\\u8d85\\u8fc765\": 4, \"\\u82f1\\u8bed\\u6210\\u7ee9\\u8d85\\u8fc770\\u7684\\u540c\\u5b66\\u4e2a\\u6570\": 4, \"\\u5176\\u5b9ecountifs\\u51fd\\u6570\\u4e0esumifs\\u51fd\\u6570\\u7528\\u6cd5\\u975e\\u5e38\\u63a5\\u8fd1\": 4, \"\\u6c42\\u6ee1\\u8db3\\u6240\\u6709\\u6761\\u4ef6\\u7684\\u4e2a\\u6570\": 4, \"60\": 4, \"65\": 4, \"d2\": [4, 6, 7], \"d13\": 4, \"70\": 4, \"\\u5c06\\u5ba2\\u6237\\u539f\\u59cb\\u5f97\\u5206\\u4e3a1\\u4ee5\\u4e0b\\u7684\\u6821\\u6b63\\u4e3a0\": [4, 15], \"\\u5ba2\\u62371\\u67082\\u6708\\u4e2d\\u53ea\\u8981\\u67091\\u4e2a\\u6708\\u6d88\\u8d39\\u8d85\\u8fc7400\": [4, 15], \"\\u5373\\u4e3a\": [4, 15], \"\\u80fd\\u5426\\u4e0d\\u4f7f\\u7528ifs\\u51fd\\u6570\": [4, 15], \"\\u4f7f\\u7528if\\u51fd\\u6570\\u901a\\u8fc7\\u5d4c\\u5957\\u5b8c\\u6210\\u76f8\\u5e94\\u7684\\u52a1\": [4, 15], \"\\u8bed\\u6587\\u6210\\u7ee9\\u572880\\u5206\\u4ee5\\u4e0a\\u7684\\u540c\\u5b66\\u6210\\u7ee9\\u4e4b\\u548c\": [4, 15], \"\\u7edf\\u8ba1\\u6240\\u6709\\u82f9\\u679c\\u7cfb\\u5217\\u4ea7\\u54c1\\u7684\\u9500\\u552e\\u989d\": [4, 15], \"\\u6848\\u4f8b6\": [4, 15], \"\\u5b8c\\u6210\\u6240\\u6709\\u624b\\u673a\\u7684\\u9500\\u552e\\u989d\\u6c42\\u548c\": [4, 15], \"text\\u51fd\\u6570\\u53ef\\u4ee5\\u5c06\\u6570\\u503c\\u8f6c\\u6362\\u4e3a\\u6307\\u5b9a\\u683c\\u5f0f\\u7684\\u6587\\u672c\": 5, \"\\u5176\\u8bed\\u6cd5\\u683c\\u5f0f\\u4e3atext\": 5, \"format_text\": 5, \"\\u503c\": 5, \"\\u81ea\\u5b9a\\u4e49\\u6570\\u5b57\\u683c\\u5f0f\\u4ee3\\u7801\": 5, \"chap5\": [5, 15], \"\\u5c06\\u5ba2\\u6237\\u7684\\u6d88\\u8d39\\u65e5\\u671f\\u548c\\u6d88\\u8d39\\u91d1\\u989d\\u8f6c\\u6210\\u5927\\u5199\": 5, \"dbnum2\": 5, \"\\u5728e2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 5, \"a2\": [5, 6, 7], \"dbnum1\": 5, \"yyyy\\u5e74m\\u6708d\\u65e5\": 5, \"dbnum1\\u548cdbnum2\\u4e3a2\\u79cd\\u5e38\\u89c1\\u7684\\u4e2d\\u6587\\u683c\\u5f0f\": 5, \"\\u4e00\\u822c\\u91d1\\u989d\\u7528dbnum2\": 5, \"\\u65e5\\u671f\\u7528dbnum1\": 5, \"\\u5c06\\u5ba2\\u6237\\u7684\\u6d88\\u8d39\\u65e5\\u671f\\u8f6c\\u6362\\u4e3a\\u5468\\u6b21\": 5, \"\\u5373\\u661f\\u671f\\u51e0\": 5, \"\\u53d6\\u5ba2\\u6237\\u6d88\\u8d39\\u7684\\u5e74\": 5, \"yyyi\": 5, \"\\u6216\\u8005\": 5, \"m\": [5, 8], \"mm\": 5, \"\\u8fd92\\u79cd\\u683c\\u5f0f\\u662f\\u6709\\u533a\\u522b\\u7684\": 5, \"\\u5728f2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 5, \"d\": 5, \"dd\": 5, \"\\u63d0\\u53d6\\u8eab\\u4efd\\u8bc1\\u4e2d\\u7684\\u751f\\u65e5\": 5, \"\\u5e76\\u8f6c\\u6362\\u62102022\\u5e7412\\u67084\\u65e5\\u8fd9\\u79cd\\u683c\\u5f0f\": 5, \"\\u9762\\u5bf9\\u8fd9\\u4e2a\\u95ee\\u9898\": 5, \"\\u53ef\\u4ee5\\u4f7f\\u7528mid\\u51fd\\u6570\\u63d0\\u53d6\\u751f\\u65e5\": 5, \"mid\": 5, \"start\": 5, \"num\": 5, \"char\": 5, \"test\": 5, \"\\u4e3a\\u8981\\u63d0\\u53d6\\u7684\\u6587\\u672c\\u5b57\\u7b26\\u4e32\": 5, \"start_num\": 5, \"\\u4e3a\\u6587\\u672c\\u4e2d\\u8981\\u63d0\\u53d6\\u7684\\u7b2c\\u4e00\\u4e2a\\u5b57\\u7b26\\u4e32\\u7684\\u4f4d\\u7f6e\": 5, \"num_chars\\u4e3a\\u63d0\\u53d6\\u5b57\\u7b26\\u4e32\\u7684\\u957f\\u5ea6\": 5, \"\\u56e0\\u6b64\\u53ef\\u4ee5\\u5728b2\\u4e2d\\u8f93\\u5165\": 5, \"\\u56e0\\u4e3a\\u751f\\u65e5\\u662f8\\u4f4d\\u6570\\u5b57\": 5, \"\\u6240\\u4ee5\\u6700\\u540e\\u4e00\\u4e2a\\u53c2\\u6570\\u586b8\": 5, \"\\u5728c2\\u4e2d\\u8f93\\u5165\\u683c\\u5f0f\\u5316\\u7684\\u751f\\u65e5\": 5, \"0000\\u5e7400\\u670800\\u65e5\": 5, \"\\u95ee\\u9898\": 5, \"\\u8fd9\\u91cctext\\u51fd\\u6570\\u683c\\u5f0f\\u4e3a\\u4ec0\\u4e48\\u6ca1\\u6709\\u4f7f\\u7528yyyy\\u5e74mm\\u6708dd\\u65e5\": 5, \"\\u8fd9\\u79cd\\u683c\\u5f0f\": 5, \"\\u56e0\\u4e3amid\": 5, \"\\u63d0\\u53d6\\u51fa\\u6765\\u7684\\u662f\\u6587\\u672c\": 5, \"\\u4e0d\\u662f\\u65e5\\u671f\": 5, \"\\u56e0\\u6b64excel\\u65e0\\u6cd5\\u8bc6\\u522b\\u65e5\\u671f\\u7684\\u5e74\\u6708\": 5, \"\\u6240\\u4ee5\\u7528\\u6570\\u5b57\\u683c\\u5f0f\\u8fdb\\u884c\\u4ee3\\u66ff\": 5, \"\\u6587\\u672c\\u63d0\\u53d6\\u4e2d\\u76f8\\u4f3c\\u7684\\u51fd\\u6570\\u6709left\": 5, \"right\": 5, \"left\\u51fd\\u6570\": 5, \"\\u4ee5\\u5b57\\u7b26\\u4e32\\u5de6\\u4fa7\\u4e3a\\u8d77\\u59cb\\u4f4d\\u7f6e\": 5, \"\\u8fd4\\u56de\\u6307\\u5b9a\\u6570\\u91cf\\u7684\\u5b57\\u7b26\": 5, \"num_char\": 5, \"\\u8981\\u63d0\\u53d6\\u7684\\u5b57\\u7b26\\u4e32\\u6216\\u5355\\u5143\\u683c\\u5f15\\u7528\": 5, \"\\u8981\\u63d0\\u53d6\\u7684\\u5b57\\u7b26\\u6570\\u91cf\": 5, \"right\\u51fd\\u6570\": 5, \"\\u4ece\\u5b57\\u7b26\\u4e32\\u53f3\\u4fa7\\u9996\\u5b57\\u7b26\\u5f00\\u59cb\": 5, \"\\u4ece\\u53f3\\u5411\\u5de6\\u63d0\\u53d6\\u6307\\u5b9a\\u7684\\u5b57\\u7b26\": 5, \"\\u5176\\u529f\\u80fd\\u548cleft\\u51fd\\u6570\\u5b8c\\u5168\\u4e00\\u6837\": 5, \"\\u53ea\\u662f\\u65b9\\u5411\\u4e0d\\u540c\": 5, \"\\u73b0\\u5728\\u9700\\u8981\\u5c06excel\\u8868\\u683c\\u6253\\u5370\": 5, \"\\u4e3a\\u4e86\\u4e0d\\u6cc4\\u9732\\u5ba2\\u6237\\u7535\\u8bdd\\u53f7\\u7801\": 5, \"\\u9700\\u8981\\u5c06\\u7535\\u8bdd\\u540e5\\u4f4d\\u8fdb\\u884c\\u5c4f\\u853d\": 5, \"replacei\\u51fd\\u6570\\u4f5c\\u7528\": 5, \"\\u628a\\u4e00\\u4e2a\\u6587\\u672c\\u5b57\\u7b26\\u4e32\": 5, \"\\u4eba\\u4e3a\\u6307\\u5b9a\\u4e00\\u4e2a\\u4f4d\\u7f6e\": 5, \"\\u7528\\u5b9a\\u4e2a\\u6570\\u65b0\\u5b57\\u7b26\\u8fdb\\u884c\\u66ff\\u6362\": 5, \"replacei\\u51fd\\u6570\": 5, \"replacei\": 5, \"old\": 5, \"new\": 5, \"old_text\": 5, \"\\u9700\\u8981\\u66ff\\u6362\\u7684\\u6587\\u672c\": 5, \"\\u9700\\u8981\\u66ff\\u6362\\u6587\\u672c\\u7684\\u5f00\\u59cb\\u4f4d\\u7f6e\": 5, \"\\u66ff\\u6362\\u6587\\u672c\\u7684\\u957f\\u5ea6\": 5, \"new_text\": 5, \"\\u66ff\\u6362\\u5185\\u5bb9\": 5, \"\\u56e0\\u6b64\\u53ef\\u4ee5\\u5728b2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 5, \"replac\": 5, \"\\u4e2d\\u8eab\\u4efd\\u8bc1\\u540e6\\u4f4d\\u52a0\\u5bc6\": [5, 15], \"vlookup\\u662f\\u7ecf\\u5178\\u7684\\u67e5\\u627e\\u4e0e\\u5f15\\u7528\\u51fd\\u6570\": 6, \"\\u5728excel\\u6570\\u636e\\u67e5\\u8be2\\u4efb\\u52a1\\u4e2d\\u6709\\u591a\\u79cd\\u7528\\u9014\": 6, \"xlookup\\u4f5c\\u4e3aexcel\\u5f00\\u53d1\\u7684\\u6700\\u65b0\\u67e5\\u627e\\u51fd\\u6570\": 6, \"\\u5728\\u4f7f\\u7528\\u4fbf\\u5229\\u6027\\u4e0a\\u8fdc\\u8d85vlookup\\u51fd\\u6570\": 6, \"\\u56e0\\u6b64\\u5982\\u679c\\u662f\\u80fd\\u652f\\u6301xlookup\\u51fd\\u6570\": 6, \"\\u975e\\u5e38\\u63a8\\u8350\\u5927\\u5bb6\\u4f7f\\u7528xlookup\\u51fd\\u6570\": 6, \"\\u5982\\u679c\\u81ea\\u5df1\\u7684\\u7535\\u8111excel\\u4e0d\\u662f\\u6700\\u65b0\\u7248\\u4e0d\\u652f\\u6301xlookup\\u51fd\\u6570\": 6, \"\\u4e5f\\u53ef\\u4ee5\\u6765\\u5b66\\u4e60vlookup\\u51fd\\u6570\": 6, \"\\u5728\\u672c\\u8282\\u6559\\u7a0b\\u4e2d\\u4f1a\\u91cd\\u70b9\\u4ecb\\u7ecdxlookup\\u51fd\\u6570\\u7684\\u76f8\\u5173\\u7528\\u6cd5\": 6, \"\\u5bf9\\u4e8evlookup\\u4e0d\\u597d\\u89e3\\u51b3\": 6, \"xlookup\\u80fd\\u89e3\\u51b3\\u7684\\u95ee\\u9898\\u653e\\u5728\\u4e86\": 6, \"chap6\": [6, 15], \"1xlsx\": [6, 7, 8, 15], \"\\u6839\\u636e\\u5c97\\u4f4d\\u7f16\\u53f7\": 6, \"\\u5f97\\u5230\\u8be5\\u5458\\u5de5\\u7684\\u5e94\\u53d1\\u5de5\\u8d44\": 6, \"\\u9488\\u5bf9\\u8fd9\\u4e2a\\u95ee\\u9898\": 6, \"\\u53ef\\u4ee5\\u4f7f\\u7528vlookup\\u51fd\\u6570\": 6, \"vlookup\\u51fd\\u6570\": 6, \"\\u8981\\u67e5\\u627e\\u7684\\u503c\": 6, \"\\u67e5\\u627e\\u533a\\u57df\": 6, \"\\u8981\\u8fd4\\u56de\\u7684\\u7ed3\\u679c\\u5728\\u67e5\\u627e\\u533a\\u57df\\u7684\\u7b2c\\u51e0\\u5217\": 6, \"\\u7cbe\\u786e\\u5339\\u914d\\u6216\\u8fd1\\u4f3c\\u5339\\u914d\": 6, \"\\u5728l3\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\\u5982\\u4e0b\\u516c\\u5f0f\": 6, \"k2\": 6, \"h50\": 6, \"fals\": 6, \"\\u56e0\\u4e3a\\u5e94\\u53d1\\u5de5\\u8d44\\u5728\\u6574\\u4e2a\\u5355\\u5143\\u683c\\u4e2d\\u7684\\u7b2c8\\u5217\": 6, \"\\u6240\\u4ee5\\u7b2c3\\u4e2a\\u53c2\\u6570\\u4e3a8\": 6, \"\\u7b2c4\\u4e2a\\u53c2\\u6570\\u9009\\u62e9true\\u6216\\u8005fals\": 6, \"true\\u4e3a\\u6a21\\u7cca\\u5339\\u914d\": 6, \"false\\u4e3a\\u7cbe\\u786e\\u5339\\u914d\": 6, \"\\u56e0\\u6b64\\u7b2c4\\u4e2a\\u53c2\\u6570\\u9009\\u62e9\\u4e3afals\": 6, \"\\u6709\\u7684excel\\u7248\\u672c\\u7b2c4\\u4e2a\\u53c2\\u6570\\u662f0\\u662f\\u7cbe\\u786e\\u67e5\\u627e\": 6, \"1\\u662f\\u7cbe\\u786e\\u5339\\u914d\": 6, \"\\u6839\\u636e\\u5b9e\\u9645\\u60c5\\u51b5\\u8f93\\u5165\\u5373\\u53ef\": 6, \"\\u5728\\u6848\\u4f8b2\\u7684\\u4efb\\u52a1\\u4e2d\\u6211\\u4eec\\u53d1\\u73b0\": 6, \"\\u8fd9\\u91cc\\u7684\\u5458\\u5de5\\u7684\\u7f16\\u53f7\\u4f4d\\u4e8e\\u6700\\u540e\\u4e00\\u5217\": 6, \"\\u90a3\\u4e48\\u5e94\\u8be5\\u5982\\u4f55\\u5904\\u7406\\u5462\": 6, \"\\u5982\\u679c\\u6309\\u7167\\u6b63\\u5e38\\u7684vlookup\\u7684\\u51fd\\u6570\\u7528\\u6cd5\\u5728l2\\u5355\\u5143\\u683c\\u8f93\\u5165\": 6, \"h19\": 6, \"\\u8f93\\u5165\\u540e\\u4f1a\\u53d1\\u73b0\\u5e76\\u6ca1\\u6709\\u5b89\\u88c5\\u9884\\u671f\\u5f97\\u5230\\u5e94\\u53d1\\u5de5\\u8d44\": 6, \"\\u8fd9\\u662f\\u56e0\\u4e3avlookup\\u51fd\\u6570\\u7684\\u9650\\u5236\": 6, \"\\u5fc5\\u987b\\u67e5\\u627e\\u7684\\u533a\\u57df\\u5728\\u88ab\\u67e5\\u627e\\u503c\\u7684\\u5de6\\u4fa7\": 6, \"\\u5f53\\u7136\\u8fd9\\u91cc\\u6709\\u5176\\u4ed6\\u7684\\u529e\\u6cd5\\u89e3\\u51b3\": 6, \"\\u8fd9\\u91cc\\u7528\\u5230\\u4e86\\u6362\\u5217\\u7684\\u5c0f\\u6280\\u5de7\": 6, \"\\u5982\\u679c\\u611f\\u5174\\u8da3\\u53ef\\u4ee5\\u770b\\u76f8\\u5173\\u6587\\u7ae0\": 6, \"excel\\u6280\\u5de7\": 6, \"\\u4e00\\u6587\\u641e\\u61c2\": 6, \"\\u7684\\u7528\\u6cd5\": 6, \"\\u90a3\\u4e48\\u5728l2\\u4e2d\\u8f93\\u5165\\u5982\\u4e0b\\u51fd\\u6570\": 6, \"h2\": 6, \"g2\": 6, \"g19\": 6, \"\\u8fd9\\u4e2a\\u51fd\\u6570\\u4e2d\": 6, \"\\u5c06g2\": 6, \"g17\\u5217\\u4e0eh2\": 6, \"h19\\u5217\\u505a\\u6210\\u4e86\\u4e00\\u4e2a\\u4e34\\u65f6\\u6570\\u636e\\u7ec4\": 6, \"\\u5e76\\u8ba9\\u8fd92\\u5217\\u4ea4\\u6362\\u4f4d\\u7f6e\": 6, \"\\u8fd9\\u6837g2\": 6, \"g19\\u5217\\u5c31\\u5728\\u4e34\\u65f6\\u6570\\u7ec4\\u4e2d\\u7684\\u7b2c2\\u5217\": 6, \"\\u56e0\\u6b64vlookup\\u4e2d\\u7b2c3\\u4e2a\\u53c2\\u6570\\u4e3a2\": 6, \"\\u6839\\u636e\\u6027\\u522b\\u4e0e\\u90e8\\u95e8\\u4fe1\\u606f\": 6, \"\\u83b7\\u5f97\\u5458\\u5de5\\u7f16\\u53f7\": 6, \"\\u6848\\u4f8b3\\u7684\\u4efb\\u52a1\\u4e0e\\u524d\\u9762\\u4e0d\\u540c\\u7684\\u662f\": 6, \"\\u65e0\\u6cd5\\u53ea\\u901a\\u8fc71\\u4e2a\\u4fe1\\u606f\\u5b8c\\u5168\\u5b9a\\u4f4d\\u5230\\u5458\\u5de5\\u7f16\\u53f7\": 6, \"\\u56e0\\u6b64\\u8fd9\\u91cc\\u4f7f\\u7528\\u4e86\\u4e00\\u4e2a\\u6280\\u5de7\": 6, \"\\u5728l3\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 6, \"j2\": 6, \"c20\": 6, \"d20\": 6, \"a20\": 6, \"\\u7ec6\\u5fc3\\u7684\\u540c\\u5b66\\u53ef\\u80fd\\u53d1\\u73b0\\u4e86\\u5176\\u4e2d\\u7684\\u6280\\u5de7\": 6, \"\\u5c31\\u662f\\u5c06\\u591a\\u4e2a\\u6761\\u4ef6\\u901a\\u8fc7\": 6, \"\\u8fde\\u63a5\\u6210\\u4e00\\u4e2a\\u5b57\\u7b26\\u4e32\": 6, \"\\u540c\\u65f6\\u5c06\\u5f85\\u67e5\\u627e\\u7684\\u6570\\u636e\\u4e5f\\u8fde\\u63a5\\u8d77\\u6765\": 6, \"\\u4ece\\u800c\\u901a\\u8fc7\\u8fd9\\u4e2a\\u8fde\\u63a5\\u7684\\u7279\\u6b8a\\u5b57\\u7b26\\u6765\\u67e5\\u627e\\u6570\\u636e\": 6, \"\\u5f53\\u4e0d\\u77e5\\u9053\\u5177\\u4f53\\u7684\\u4fe1\\u606f\": 6, \"\\u9700\\u8981\\u8fdb\\u884c\\u6a21\\u7cca\\u67e5\\u8be2\": 6, \"\\u90a3\\u4e48\\u5982\\u4f55\\u4f7f\\u7528vlookup\\u8fdb\\u884c\\u6a21\\u7cca\\u67e5\\u8be2\\u5462\": 6, \"f20\": 6, \"excel\\u4e2d\\u7684\\u901a\\u914d\\u7b26\\u5339\\u914d\\u89c4\\u5219\\u89c1\\u5982\\u4e0b\": 6, \"\\u56e0\\u4e3adw\\u4e3a2\\u4e2a\\u5b57\\u7b26\": 6, \"\\u6211\\u4eec\\u9009\\u62e9\": 6, \"\\u8fd8\\u8bb0\\u5f97\\u7b2c\\u56db\\u7ae0\\u4e2d\\u7684sumifs\\u51fd\\u6570\\u4e2d\\u7684\\u6848\\u4f8b\": 6, \"\\u8ba1\\u7b97\\u5c0f\\u7c73\\u7cfb\\u5217\\u7684\\u9500\\u91cf\\u4e2d\": 6, \"\\u6211\\u4eec\\u5c31\\u4f7f\\u7528\\u4e86\\u901a\\u914d\\u7b26\": 6, \"\\u5982\\u679c\\u4e0d\\u80fd\\u652f\\u6301\\u8fd9\\u4e2a\\u51fd\\u6570\\u4e5f\\u4e0d\\u7528\\u7070\\u5fc3\": 6, \"\\u4f7f\\u7528vlookup\\u51fd\\u6570\\u4e5f\\u80fd\\u5b8c\\u6210\\u7edd\\u5927\\u591a\\u6570\\u67e5\\u8be2\\u95ee\\u9898\": 6, \"\\u56e0\\u4e3axlookup\\u51fd\\u6570\\u529f\\u80fd\\u975e\\u5e38\\u5f3a\\u5927\": 6, \"\\u56e0\\u6b64\\u5728\\u672c\\u8282\\u4e2d\\u5bf9\\u51fd\\u6570\\u8fdb\\u884c\\u8bb2\\u89e3\": 6, \"xlookup\\u51fd\\u6570\": 6, \"\\u60f3\\u8981\\u67e5\\u627e\\u503c\": 6, \"\\u60f3\\u8981\\u5728\\u54ea\\u4e2a\\u6570\\u636e\\u533a\\u57df\\u4e2d\\u67e5\\u627e\": 6, \"\\u8981\\u8fd4\\u56de\\u7684\\u6570\\u636e\\u533a\\u57df\": 6, \"ifnotfound\": 6, \"matchmod\": 6, \"searchmod\": 6, \"\\u7b2c\\u56db\\u53c2\\u6570\": 6, \"\\u53ef\\u9009\\u53c2\\u6570\": 6, \"found\": 6, \"\\u627e\\u4e0d\\u5230\\u7ed3\\u679c\": 6, \"\\u5c31\\u8fd4\\u56de\\u7b2c\\u56db\\u53c2\\u6570\": 6, \"\\u5982\\u679c\\u7701\\u7565\\u7b2c\\u56db\\u53c2\\u6570\\u51fd\\u6570\\u9ed8\\u8ba4\\u8fd4\\u56de\": 6, \"a\\u8fd9\\u4e2a\\u9519\\u8bef\\u503c\": 6, \"\\u7b2c\\u4e94\\u53c2\\u6570\": 6, \"match_mod\": 6, \"\\u6307\\u5b9a\\u5339\\u914d\\u7c7b\\u578b\": 6, \"\\u53c2\\u6570\\u4e3a\": 6, \"\\u7cbe\\u786e\\u5339\\u914d\": 6, \"\\u672a\\u627e\\u5230\\u7ed3\\u679c\": 6, \"\\u8fd4\\u56de\": 6, \"\\u8fd9\\u662f\\u9ed8\\u8ba4\\u9009\\u9879\": 6, \"\\u8fd1\\u4f3c\\u5339\\u914d\": 6, \"\\u8fd4\\u56de\\u4e0b\\u4e00\\u4e2a\\u8f83\\u5c0f\\u7684\\u9879\": 6, \"\\u8fd4\\u56de\\u4e0b\\u4e00\\u4e2a\\u8f83\\u5927\\u7684\\u9879\": 6, \"\\u901a\\u914d\\u7b26\\u5339\\u914d\": 6, \"\\u7b2c\\u516d\\u53c2\\u6570\": 6, \"search_mod\": 6, \"\\u6307\\u5b9a\\u8981\\u4f7f\\u7528\\u7684\\u641c\\u7d22\\u6a21\\u5f0f\": 6, \"\\u4ece\\u7b2c\\u4e00\\u9879\\u5f00\\u59cb\\u6267\\u884c\\u641c\\u7d22\": 6, \"\\u4ece\\u6700\\u540e\\u4e00\\u9879\\u5f00\\u59cb\\u6267\\u884c\\u53cd\\u5411\\u641c\\u7d22\": 6, \"\\u6839\\u636e\": 6, \"lookup_arrai\": 6, \"\\u6309\\u5347\\u5e8f\\u6392\\u5e8f\\u7684\\u4e8c\\u8fdb\\u5236\\u641c\\u7d22\": 6, \"\\u5982\\u679c\\u672a\\u6392\\u5e8f\": 6, \"\\u5c06\\u8fd4\\u56de\\u65e0\\u6548\\u7ed3\\u679c\": 6, \"\\u6839\\u636elookup_arrai\": 6, \"\\u6309\\u964d\\u5e8f\\u6392\\u5e8f\\u7684\\u4e8c\\u8fdb\\u5236\\u641c\\u7d22\": 6, \"\\u4e00\\u8d77\\u6765\\u5b9e\\u73b0\": 6, \"\\u6211\\u4eec\\u5728m2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\\u5982\\u4e0b\\u516c\\u5f0f\": 6, \"a1\": 6, \"a50\": 6, \"\\u7b2c1\\u4e2ak2\": 6, \"\\u5c31\\u662f\\u9700\\u8981\\u67e5\\u8be2\\u7684\\u5c97\\u4f4d\\u7f16\\u53f7dw0005\": 6, \"\\u7b2c2\\u4e2a\\u53c2\\u6570\\u4e3aa1\": 6, \"\\u4e5f\\u5c31\\u662f\\u8981\\u67e5\\u54ea\\u4e00\\u5217\": 6, \"\\u7ec6\\u5fc3\\u7684\\u540c\\u5b66\\u5df2\\u7ecf\\u6ce8\\u610f\\u5230\\u8fd9\\u91cc\\u4e0evlookup\\u7684\\u4e0d\\u540c\": 6, \"\\u7b2c3\\u4e2a\\u53c2\\u6570\\u5c31\\u662f\\u9700\\u8981\\u8fd4\\u56de\\u7684\\u54ea\\u4e00\\u5217\": 6, \"\\u4e5f\\u5c31\\u662f\\u8fd4\\u56deh\\u5217\": 6, \"\\u6211\\u4eec\\u5728l2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\\u5982\\u4e0b\\u516c\\u5f0f\": 6, \"g1\": 6, \"\\u7ec6\\u5fc3\\u7684\\u540c\\u5b66\\u5c31\\u53d1\\u73b0\\u4e0a\\u9762\\u7684\\u516c\\u5f0f\\u4e2d\\u6ca1\\u6709\\u7528\\u5230\\u5217\\u7684\\u8f6c\\u6362\": 6, \"\\u8fd9\\u4e2a\\u516c\\u5f0f\\u7684\\u53ef\\u8bfb\\u6027\\u975e\\u5e38\\u5f3a\": 6, \"\\u8fd9\\u662f\\u5c31\\u662fxlookup\\u6bd4vlookup\\u66f4\\u52a0\\u5f3a\\u5927\\u7684\\u5730\\u65b9\": 6, \"c1\": 6, \"d1\": 6, \"\\u5728xlookup\\u4e2d\\u7684\\u591a\\u6761\\u4ef6\\u67e5\\u627e\": 6, \"\\u53ea\\u9700\\u8981\\u4f7f\\u7528\": 6, \"\\u5c06\\u591a\\u4e2a\\u6761\\u4ef6\\u7684\\u4fe1\\u606f\\u8fde\\u63a5\\u8d77\\u6765\\u5373\\u53ef\": 6, \"\\u975e\\u5e38\\u7684\\u65b9\\u4fbf\": 6, \"b20\": 6, \"\\u5728\\u4f7f\\u7528xlookup\\u8fdb\\u884c\\u901a\\u914d\\u7b26\\u67e5\\u627e\\u4e8b\": 6, \"\\u9700\\u8981\\u6307\\u5b9a\\u7b2c5\\u4e2a\\u53c2\\u6570\\u4e3a2\": 6, \"\\u5373\\u544a\\u8bc9xlookup\\u9700\\u8981\\u7528\\u901a\\u914d\\u7b26\\u8fdb\\u884c\\u67e5\\u627e\": 6, \"\\u8fd9\\u91cc\\u662f\\u597dvlookup\\u4e0d\\u540c\\u7684\\u5730\\u65b9\": 6, \"\\u5177\\u4f53\\u901a\\u914d\\u7b26\\u7528\\u6cd5\": 6, \"\\u53ef\\u89c11\": 6, \"4\\u7684\\u8bb2\\u89e3\": 6, \"\\u59d3\\u540d6\\u5728\\u6570\\u636e\\u8868\\u4e2d\\u51fa\\u73b0\\u4e862\\u6b21\": 6, \"\\u60f3\\u77e5\\u9053\\u4ed6\\u7684\\u6700\\u540e\\u9500\\u552e\\u989d\\u5e94\\u8be5\\u600e\\u4e48\\u64cd\\u4f5c\": 6, \"\\u6211\\u4eec\\u5728i2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\\u5982\\u4e0b\\u516c\\u5f0f\": 6, \"f1\": 6, \"\\u524d3\\u4e2a\\u53c2\\u6570\\u60f3\\u5fc5\\u5927\\u5bb6\\u5df2\\u7ecf\\u5f88\\u719f\\u6089\\u4e86\": 6, \"\\u7b2c4\\u4e2a\\u53c2\\u6570\\u662f0\": 6, \"\\u5c31\\u662f\\u5f53xlookup\\u67e5\\u627e\\u4e0d\\u5230\\u65f6\": 6, \"\\u5c31\\u8fd4\\u56de0\": 6, \"\\u7b2c5\\u4e2a\\u53c2\\u6570\\u662f0\": 6, \"\\u5c31\\u662f\\u9009\\u62e9\\u7cbe\\u786e\\u5339\\u914d\": 6, \"\\u7b2c6\\u4e2a\\u53c2\\u6570\\u9009\\u62e9\\u641c\\u7d22\\u53c2\\u6570\": 6, \"\\u8fd9\\u91cc\\u9009\\u62e9\": 6, \"\\u4ece\\u540e\\u5f00\\u59cb\\u5f80\\u524d\\u641c\\u7d22\": 6, \"\\u56e0\\u6b64\\u8fd9\\u6837\\u8bbe\\u7f6e\\u5c31\\u80fd\\u83b7\\u5f97\\u6b63\\u786e\\u7ed3\\u679c\": 6, \"\\u8fd9\\u91cc\\u67094\\u4e2a\\u4eba\": 6, \"\\u73b0\\u5728\\u60f3\\u77e5\\u9053\\u8fd94\\u4e2a\\u4eba\\u7684\\u6700\\u5927\\u9500\\u552e\\u989d\": 6, \"max\": [6, 7], \"h5\": 6, \"\\u5148\\u901a\\u8fc7xlookup\\u6279\\u91cf\\u67e5\\u627e\\u8fd94\\u4e2a\\u4eba\\u9500\\u552e\\u989d\": 6, \"\\u518d\\u901a\\u8fc7max\\u51fd\\u6570\": 6, \"\\u6c42\\u8fd94\\u4e2a\\u4eba\\u4e2d\\u7684\\u6700\\u5927\\u7684\\u9500\\u552e\\u989d\": 6, \"\\u5f53\\u6570\\u636e\\u96c6\\u4ee5\\u6a2a\\u5411\\u5f62\\u5f0f\\u65f6\": 6, \"\\u5982\\u679c\\u67e5\\u8be2\\u5230\\u9700\\u8981\\u7684\\u6570\\u636e\": 6, \"\\u5728c2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\\u5982\\u4e0b\\u516c\\u5f0f\": 6, \"b6\": 6, \"l2\": 6, \"l1\": 6, \"\\u7ec6\\u5fc3\\u7684\\u540c\\u5b66\\u53d1\\u73b0\": 6, \"\\u6a2a\\u5411\\u6570\\u636e\\u7684\\u67e5\\u8be2\\u65b9\\u6cd5\\u4e0e\\u7eb5\\u5411\\u6570\\u636e\\u5e76\\u65e0\\u592a\\u5927\\u533a\\u522b\": 6, \"\\u9009\\u62e9vlookup\\u548cxlookup\\u8fd92\\u79cd\\u51fd\\u6570\\u4e2d\\u7684\\u4e00\\u79cd\": [6, 15], \"\\u5728\\u672c\\u8282\\u4e2d\\u4f1a\\u8bb2\\u89e3\\u4e00\\u4e9bexcel\\u66f4\\u65b0\\u7684\\u52a8\\u6001\\u51fd\\u6570\": 7, \"\\u4ece\\u800c\\u5e2e\\u52a9\\u5927\\u5bb6\\u66f4\\u597d\\u7684\\u638c\\u63e1excel\\u7684\\u6570\\u636e\\u5904\\u7406\\u4e0e\\u5206\\u6790\": 7, \"\\u5728\\u5de5\\u4f5c\\u4e2d\": 7, \"\\u6211\\u4eec\\u9700\\u8981\\u6839\\u636e\\u6307\\u5b9a\\u7684\\u6761\\u4ef6\": 7, \"\\u5c06\\u7b26\\u5408\\u6761\\u4ef6\\u7684\\u6240\\u6709\\u8bb0\\u5f55\\u4ece\\u6570\\u636e\\u6e90\\u8868\\u683c\\u5f0f\\u67e5\\u627e\\u8fc7\\u6765\": 7, \"\\u4e00\\u662f\\u53ef\\u4ee5\\u7528\\u9ad8\\u7ea7\\u7b5b\\u9009\": 7, \"\\u4f46\\u9ad8\\u7ea7\\u7b5b\\u9009\\u5728\\u67e5\\u8be2\\u4e0b\\u4e00\\u4e2a\\u5355\\u4f4d\\u65f6\": 7, \"\\u9700\\u8981\\u91cd\\u65b0\\u8bbe\\u7f6e\\u4e00\\u6b21\": 7, \"\\u5f88\\u9ebb\\u70e6\": 7, \"\\u4e8c\\u662f\\u7528\\u51fd\\u6570\\u516c\\u5f0f\\u67e5\\u8be2\": 7, \"\\u5178\\u578b\\u7684\\u5957\\u8def\\u6709\": 7, \"index\": 7, \"small\": 7, \"row\": 7, \"\\u6216\\u8005lookup\": 7, \"offset\": 7, \"\\u800c\\u8fd9\\u6837\\u7684\\u65b9\\u6cd5\\u5bf9\\u521d\\u5b66\\u8005\\u975e\\u5e38\\u4e0d\\u53cb\\u597d\": 7, \"\\u800cexcel\\u65b0\\u66f4\\u65b0\\u7684\\u611f\\u53d7filter\\u53ef\\u4ee5\\u5f88\\u597d\\u7684\\u89e3\\u51b3\\u8fd9\\u4e2a\\u95ee\\u9898\": 7, \"filter\": 7, \"\\u51fd\\u6570\": 7, \"\\u6570\\u636e\\u533a\\u57df\": 7, \"\\u7b5b\\u9009\\u6761\\u4ef6\": 7, \"\\u65e0\\u6ee1\\u8db3\\u6761\\u4ef6\\u7684\\u8bb0\\u5f55\\u65f6\\u8fd4\\u56de\\u7684\\u503c\": 7, \"\\u63a5\\u4e0b\\u6765\\u5c31\\u770b\\u770bfilter\\u7684\\u5b9e\\u9645\\u5e94\\u7528\\u6848\\u4f8b\": 7, \"chap7\": [7, 15], \"\\u83b7\\u5f97\\u6e56\\u5317\\u533a\\u7684\\u76f8\\u5173\\u6570\\u636e\": 7, \"\\u5728j2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 7, \"g30\": 7, \"c30\": 7, \"\\u6e56\\u5317\\u533a\": 7, \"\\u6ce8\\u610f\\u6570\\u636e\\u533a\\u57df\\u4e0d\\u5305\\u542b\\u6807\\u9898\": 7, \"\\u751f\\u6210\\u7684\\u6570\\u636e\\u7684\\u52a8\\u6001\\u6570\\u7ec4\": 7, \"wps\\u7531\\u4e8e\\u4e0d\\u517c\\u5bb9\\u52a8\\u6001\\u6570\\u7ec4\": 7, \"\\u7a0d\\u5fae\\u548cexcel\\u6709\\u70b9\\u533a\\u522b\": 7, \"\\u4f1a\\u4ea7\\u751f\\u6570\\u636e\\u6ea2\\u51fa\\u7684\\u60c5\\u51b5\": 7, \"\\u5982\\u679c\\u5728\\u5b9e\\u9645\\u7684\\u4efb\\u52a1\\u4e2d\\u4e0d\\u9700\\u8981\\u6240\\u6709\\u7684\\u5217\": 7, \"\\u53ea\\u9700\\u8981\\u5176\\u4e2d\\u7684\\u51e0\\u884c\": 7, \"\\u90a3\\u4e48\\u5e94\\u8be5\\u600e\\u4e48\\u64cd\\u4f5c\": 7, \"\\u53ef\\u4ee5\\u5728k2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\": 7, \"\\u7ec6\\u5fc3\\u7684\\u540c\\u5b66\\u5c31\\u53d1\\u73b0\\u4e86\\u8fd9\\u91cc\\u4e0e7\": 7, \"1\\u4e2d\\u7684\\u4e0d\\u540c\": 7, \"\\u5982\\u679c\\u9700\\u8981\\u8fd4\\u56de\\u5176\\u4e2d\\u7684\\u51e0\\u884c\": 7, \"\\u53ea\\u9700\\u8981\\u5c06\\u6570\\u636e\\u533a\\u57df\\u4fee\\u6539\\u4e3a\\u81ea\\u5df1\\u9700\\u8981\\u7684\\u533a\\u57df\\u5373\\u53ef\": 7, \"\\u73b0\\u5728\\u9700\\u8981\\u77e5\\u9053\\u6e56\\u5317\\u533a\\u7684\\u6700\\u5927\\u9500\\u552e\\u91d1\\u989d\\u662f\\u591a\\u5c11\": 7, \"f30\": 7, \"filter\\u51fd\\u6570\\u4e2d\\u7684\\u591a\\u6761\\u4ef6\\u7b5b\\u9009\": 7, \"\\u6765\\u8868\\u793a\\u6216\": 7, \"\\u8868\\u793a\\u4e14\": 7, \"\\u9700\\u8981\\u8ba1\\u7b97\\u6e56\\u5317\\u533a\": 7, \"\\u6e56\\u5357\\u533a\\u5927\\u6700\\u5927\\u9500\\u552e\\u91d1\\u989d\": 7, \"\\u90a3\\u4e48\\u51fd\\u6570\\u516c\\u5f0f\\u4e3a\": 7, \"\\u6e56\\u5357\\u533a\": 7, \"\\u9700\\u8981\\u8ba1\\u7b97\\u6e56\\u5317\\u533a\\u5546\\u54c12\\u7684\\u6700\\u5927\\u9500\\u552e\\u91d1\\u989d\": 7, \"d30\": 7, \"\\u5546\\u54c12\": 7, \"excel\\u4e2d\\u6709\\u6570\\u636e\\u7b5b\\u9009\\u975e\\u5e38\\u597d\\u7528\": 7, \"\\u90a3\\u4e48\": 7, \"\\u5982\\u679c\\u60f3\\u7edf\\u8ba1\\u7b5b\\u9009\\u540e\\u7684\\u7ed3\\u679c\\u5e94\\u8be5\\u600e\\u4e48\\u5f04\": 7, \"\\u4f8b\\u5982\\u60f3\\u77e5\\u9053\\u7b5b\\u9009\\u540e\\u7684\\u9500\\u552e\\u603b\\u989d\": 7, \"\\u4e2d\\u7684\\u6848\\u4f8b1\": 7, \"\\u4f7f\\u7528\\u7b5b\\u9009\\u9009\\u62e9\\u4e0d\\u540c\\u7684\\u533a\": 7, \"\\u800csum\\u6c42\\u548c\\u5e76\\u6ca1\\u6709\\u53d8\\u5316\": 7, \"\\u5982\\u679c\\u60f3\\u5b9e\\u73b0\\u4e0a\\u8ff0\\u9700\\u6c42\": 7, \"\\u53ef\\u4ee5\\u4f7f\\u7528\": 7, \"subtot\": 7, \"\\u529f\\u80fd\\u51fd\\u6570\": 7, \"\\u9009\\u62e9\\u533a\\u57df\": 7, \"\\u6570\\u5b57\": 7, \"101\": 7, \"111\": 7, \"\\u7528\\u4e8e\\u6307\\u5b9a\\u8981\\u4e3a\\u5206\\u7c7b\\u6c47\\u603b\\u4f7f\\u7528\\u7684\\u51fd\\u6570\": 7, \"\\u5982\\u679c\\u4f7f\\u7528\": 7, \"\\u5c06\\u5305\\u62ec\\u624b\\u52a8\\u9690\\u85cf\\u7684\\u884c\": 7, \"\\u5219\\u6392\\u9664\\u624b\\u52a8\\u9690\\u85cf\\u7684\\u884c\": 7, \"\\u59cb\\u7ec8\\u6392\\u9664\\u5df2\\u7b5b\\u9009\\u6389\\u7684\\u5355\\u5143\\u683c\": 7, \"\\u8be6\\u89c1\\u9644\\u4ef61\": 7, \"\\u5728j2\\u5355\\u5143\\u683c\\u4e2d\\u8f93\\u5165\\u5982\\u4e0b\\u516c\\u5f0f\": 7, \"f21\": 7, \"\\u53ef\\u4ee5\\u770b\\u5230subtotal\\u5bf9\\u7b5b\\u9009\\u7684\\u6570\\u636e\\u5217\\u8fdb\\u884c\\u6b63\\u786e\\u7684\\u6c42\\u548c\": 7, \"\\u800csum\\u65e0\\u6cd5\\u8ddf\\u968f\\u9009\\u62e9\\u7684\\u6570\\u636e\\u5217\\u8fdb\\u884c\\u6b63\\u786e\\u6c42\\u548c\": 7, \"\\u9644\\u4ef61\": 7, \"\\u8ba1\\u7b97\\u6cb3\\u5317\\u533a\\u4e2d\\u5546\\u54c11\\u7684\\u6700\\u5c0f\\u9500\\u552e\\u989d\": [7, 15], \"\\u8ba1\\u7b97\\u6e56\\u5317\\u4e2d\\u4ec0\\u4e48\\u6e20\\u9053\\u4e0b\\u7684\\u4ec0\\u4e48\\u5546\\u54c1\\u5177\\u6709\\u6700\\u9ad8\\u9500\\u552e\\u989d\": [7, 15], \"\\u5bf9\\u4e8eexcel\\u4e2d\\u7684\\u6570\\u636e\\u53ef\\u89c6\\u5316\": 8, \"\\u76f8\\u4fe1\\u5404\\u4f4d\\u8bfb\\u8005\\u5e94\\u8be5\\u80fd\\u5f88\\u719f\\u7ec3\\u7684\\u4f7f\\u7528\": 8, \"\\u4f7f\\u7528excel\\u6c47\\u603b\\u5404\\u79cd\\u7c7b\\u578b\\u56fe\": 8, \"\\u5305\\u62ec\\u67f1\\u72b6\\u56fe\": 8, \"\\u6298\\u7ebf\\u56fe\\u7b49\\u7b49\": 8, \"\\u4ece\\u800c\\u8ba9\\u6570\\u636e\\u8fdb\\u884c\\u56fe\\u5f62\\u5316\\u5c55\\u793a\": 8, \"\\u57fa\\u4e8e\\u6b64\": 8, \"\\u672c\\u8282\\u4e2d\\u5bf9excel\\u4e2d\\u7684\\u6570\\u636e\\u4f5c\\u56fe\\u90e8\\u5206\\u4e0d\\u505a\\u5c55\\u5f00\\u8bb2\\u89e3\": 8, \"\\u672c\\u8282\\u66f4\\u52a0\\u504f\\u91cd\\u4e8e\\u8bb2\\u89e3\\u53e6\\u4e00\\u7c7b\\u8f85\\u52a9\\u6570\\u636e\\u53ef\\u89c6\\u5316\\u7684\\u90e8\\u5206\": 8, \"chap8\": [8, 15], \"\\u73b0\\u5728\\u6709\\u6e56\\u5317\\u533a2022\": 8, \"01\\u7684\\u4e0d\\u540c\\u5546\\u54c1\\u7684\\u9500\\u552e\\u989d\": 8, \"\\u600e\\u4e48\\u66f4\\u52a0\\u76f4\\u89c2\\u7684\\u5c55\\u793a\\u9500\\u552e\\u989d\\u4e4b\\u95f4\\u7684\\u5dee\\u522b\\u5462\": 8, \"\\u8fd9\\u91cc\\u53ef\\u4ee5\\u4f7f\\u7528\\u6761\\u5f62\\u56fe\\u5bf9\\u9500\\u552e\\u7684\\u91d1\\u989d\\u8fdb\\u5c55\\u53ef\\u89c6\\u5316\\u5c55\\u793a\": 8, \"\\u6761\\u4ef6\\u683c\\u5f0f\": 8, \"\\u6570\\u636e\\u6761\": 8, \"\\u901a\\u8fc7\\u5bf9\\u9500\\u552e\\u91d1\\u989d\\u8fdb\\u884c\\u6570\\u636e\\u6761\\u7684\\u586b\\u5145\": 8, \"\\u8bfb\\u8005\\u53ef\\u4ee5\\u5f88\\u5feb\\u9501\\u5b9a\\u6e56\\u5317\\u533a2022\": 8, \"01\\u9500\\u552e\\u989d\\u4e2d\": 8, \"\\u97e9\\u95f2\\u5177\\u6709\\u6700\\u9ad8\\u9500\\u552e\\u989d\\u4e3a9442\": 8, \"\\u5982\\u679c\\u53ea\\u60f3\\u663e\\u793a\\u6761\\u5f62\\u56fe\": 8, \"\\u4e0d\\u60f3\\u663e\\u793a\\u91d1\\u989d\\u5e94\\u8be5\\u5982\\u679c\\u64cd\\u4f5c\": 8, \"\\u9009\\u62e9\\u6761\\u5f62\\u56fe\\u533a\\u57df\": 8, \"\\u7ba1\\u7406\\u89c4\\u5219\": 8, \"\\u6253\\u5f00\\u7ba1\\u7406\\u89c4\\u5219\\u540e\\u53ef\\u4ee5\\u770b\\u5230\": 8, \"\\u9009\\u62e9\\u8bbe\\u7f6e\\u7684\\u89c4\\u5219\": 8, \"\\u70b9\\u51fb\\u7f16\\u8f91\\u89c4\\u5219\": 8, \"\\u9009\\u62e9\\u4ec5\\u663e\\u793a\\u6570\\u636e\\u6761\": 8, \"\\u5f53\\u7136\\u53ef\\u4ee5\\u5728\\u989c\\u8272\\u7684\\u5730\\u65b9\\u9009\\u62e9\\u81ea\\u5df1\\u559c\\u6b22\\u7684\\u989c\\u8272\": 8, \"\\u9009\\u62e9\\u4e4b\\u540e\\u5f97\\u5230\\u5982\\u4e0b\\u6548\\u679c\": 8, \"\\u73b0\\u5728\\u6709\\u4e0d\\u540c\\u4e1a\\u52a1\\u5458\\u5411\\u5ba2\\u6237\\u63a8\\u9500\\u5546\\u54c1\\u7684\\u76f8\\u5173\\u4fe1\\u606f\": 8, \"\\u73b0\\u5728\\u9700\\u8981\\u5c06\\u622a\\u6b62\\u65e5\\u671f\\u8fd8\\u6ca1\\u6709\\u8fc7\\u4eca\\u5929\\u7684\\u6807\\u6ce8\\u51fa\\u6765\": 8, \"\\u5e94\\u8be5\\u5982\\u4f55\\u64cd\\u4f5c\": 8, \"excel\\u4e2d\": 8, \"todai\": 8, \"\\u51fd\\u6570\\u53ef\\u4ee5\\u83b7\\u5f97\\u5f53\\u524d\\u65e5\\u671f\": 8, \"\\u53ef\\u4ee5\\u4f7f\\u7528excel\\u4e2d\\u7684\\u6761\\u4ef6\\u683c\\u5f0f\\u8fdb\\u884c\\u81ea\\u52a8\\u8bc6\\u522b\": 8, \"\\u9009\\u62e9\\u9700\\u8981\\u8bbe\\u7f6e\\u6761\\u4ef6\\u7684\\u5217\": 8, \"\\u9009\\u62e9\\u6761\\u4ef6\\u683c\\u5f0f\": 8, \"\\u9009\\u62e9\\u65b0\\u5efa\\u89c4\\u5219\": 8, \"\\u8fd9\\u91cc\\u9009\\u62e9\\u4f7f\\u7528\\u516c\\u5f0f\\u786e\\u5b9a\\u8981\\u8bbe\\u7f6e\\u683c\\u5f0f\\u7684\\u5355\\u5143\\u683c\": 8, \"\\u56e0\\u4e3a\\u9009\\u62e9\\u7684\\u533a\\u57df\\u4e3ab2\": 8, \"b10\": 8, \"\\u56e0\\u6b64\\u8f93\\u5165\\u7684\\u516c\\u5f0f\\u6ee1\\u8db3b2\\u8981\\u6c42\": 8, \"\\u5269\\u4f59\\u7684\\u5355\\u5143\\u683c\\u4f1a\\u81ea\\u52a8\\u586b\\u5145\": 8, \"\\u56e0\\u6b64\\u8f93\\u5165\\u7684\\u516c\\u5f0f\\u4e3a\": 8, \"\\u63a5\\u4e0b\\u6765\\u8bbe\\u7f6e\\u5355\\u5143\\u683c\\u7684\\u683c\\u5f0f\": 8, \"\\u5728\\u672c\\u8282\\u793a\\u8303\\u4e2d\\u9009\\u62e9\\u5bf9\\u6ee1\\u8db3\\u6761\\u4ef6\\u7684\\u5355\\u5143\\u683c\\u586b\\u5145\\u4e3a\\u9ec4\\u8272\": 8, \"\\u5f97\\u5230\\u5982\\u4e0b\\u6548\\u679c\\u56fe\": 8, \"\\u4e2d\\u539f\\u59cb\\u6570\\u636e\": 8, \"\\u73b0\\u5728\\u77e5\\u9053\\u4e0d\\u540c\\u4e1a\\u52a1\\u54581\": 8, \"12\\u6708\\u7684\\u9500\\u552e\\u989d\": 8, \"\\u4e14\\u9500\\u552e\\u989d\\u6700\\u5dee\\u6708\\u4efd\\u4ee5\\u53ca\\u4e1a\\u52a1\\u5458\\u7684\\u9500\\u552e\\u989d\\u7684\\u53d8\\u5316\\u8d8b\\u52bf\": 8, \"\\u5e94\\u8be5\\u600e\\u4e48\\u64cd\\u4f5c\": 8, \"\\u786e\\u5b9a\\u9500\\u552e\\u989d\\u6700\\u5dee\\u6708\\u4efd\": 8, \"\\u8fd9\\u91cc\\u53ef\\u4ee5\\u4f7f\\u7528xlookup\\u516c\\u5f0f\": 8, \"\\u5177\\u4f53\\u516c\\u5f0f\\u4e3a\": 8, \"min\": 8, \"m2\": 8, \"\\u5728b2\\u63d2\\u5165\\u65b0\\u7684\\u5355\\u5143\\u683c\": 8, \"\\u547d\\u540d\\u4e3a\\u8d8b\\u52bf\\u56fe\": 8, \"\\u70b9\\u51fb\\u63d2\\u5165\": 8, \"\\u627e\\u5230\\u8ff7\\u4f60\\u56fe\\u90e8\\u5206\": 8, \"\\u9009\\u62e9\\u6298\\u7ebf\": 8, \"\\u6570\\u636e\\u8303\\u56f4\\u9009\\u62e9\\u4e3ac2\": 8, \"n13\": 8, \"\\u9632\\u6b62\\u8ff7\\u4f60\\u56fe\\u7684\\u4f4d\\u7f6e\\u9009\\u62e9\\u5728b2\": 8, \"b13\\u5355\\u5143\\u683c\": 8, \"\\u751f\\u6210\\u8ff7\\u4f60\\u56fe\\u540e\": 8, \"\\u53ef\\u4ee5\\u5728\\u663e\\u793a\\u5904\": 8, \"\\u8c03\\u6574\\u8ff7\\u4f60\\u56fe\\u663e\\u793a\\u7684\\u91cd\\u8981\\u70b9\": 8, \"\\u8fd9\\u91cc\\u663e\\u793a\\u6298\\u7ebf\\u4e2d\\u7684\\u6700\\u4f4e\\u70b9\": 8, \"\\u901a\\u8fc7\\u56fe\\u4e2d\\u53ef\\u4ee5\\u770b\\u5230\": 8, \"\\u8521\\u52c7\\u4ec1\\u7684\\u9500\\u552e\\u4e1a\\u7ee9\\u8d8b\\u52bf\\u662f\\u4e0d\\u65ad\\u4e0b\\u964d\": 8, \"\\u800c\\u6c5f\\u5b81\\u5bd2\\u7684\\u9500\\u552e\\u4e1a\\u7ee9\\u4e0d\\u65ad\\u4e0a\\u5347\": 8, \"\\u8ff7\\u4f60\\u56fe\\u80fd\\u591f\\u5f88\\u597d\\u7684\\u5c55\\u793a\\u539f\\u6570\\u636e\\u4e0e\\u6570\\u636e\\u53d8\\u5316\\u7684\\u8d8b\\u52bf\\u60c5\\u51b5\": 8, \"\\u5bf9\\u62dc\\u8bbf\\u5ba2\\u6237\\u6570\\u5927\\u4e8e5\\u4ee5\\u4e0a\\u7684\\u4e1a\\u52a1\\u5458\\u8fdb\\u884c\\u9ec4\\u8272\\u586b\\u5145\": [8, 15], \"\\u6570\\u636e\\u900f\\u89c6\\u662fexcel\\u4e2d\\u4e2a\\u5f3a\\u5927\\u7684\\u6570\\u636e\\u5904\\u7406\\u548c\\u5206\\u6790\\u5de5\\u5177\": 9, \"\\u80fd\\u591f\\u5feb\\u901f\\u5b9e\\u73b0\\u6570\\u636e\\u7684\\u6c47\\u603b\\u4e0e\\u7edf\\u8ba1\\u5206\\u6790\": 9, \"\\u672c\\u8282\\u91cd\\u70b9\\u8bb2\\u89e3excel\\u6570\\u636e\\u900f\\u89c6\\u7684\\u76f8\\u5173\\u64cd\\u4f5c\": 9, \"chap9\": [9, 15], \"\\u73b0\\u5728\\u5bf9\\u6570\\u636e\\u6e90\\u8fdb\\u884c\\u6570\\u636e\\u900f\\u89c6\": 9, \"\\u9009\\u62e9\\u6570\\u636e\\u900f\\u89c6\\u8868\": 9, \"\\u9009\\u62e9\\u8868\\u683c\\u533a\\u57df\": 9, \"\\u9009\\u62e9\\u6570\\u636e\\u900f\\u89c6\\u8868\\u653e\\u7f6e\\u7684\\u4f4d\\u7f6e\": 9, \"\\u5728\\u65b0\\u7684\\u6570\\u636e\\u8868\\u4e2d\\u51fa\\u73b0\\u4e86\\u6570\\u636e\\u900f\\u89c6\\u8868\": 9, \"\\u60f3\\u77e5\\u9053\\u4e0d\\u540c\\u6708\\u4efd\\u7684\\u4e0d\\u540c\\u533a\\u57df\\u9500\\u552e\\u91d1\\u989d\\u7edf\\u8ba1\\u60c5\\u51b5\": 9, \"\\u53ef\\u4ee5\\u5c06\\u533a\\u57df\\u7f6e\\u4e8e\\u5217\": 9, \"\\u6708\\u7f6e\\u4e8e\\u884c\": 9, \"\\u91d1\\u989d\\u7684\\u6c42\\u548c\\u9879\\u7f6e\\u4e8e\\u503c\": 9, \"\\u5373\\u53ef\\u5f97\\u5230\\u4e0d\\u540c\\u533a\\u57df\\u4e0d\\u540c\\u6708\\u4efd\\u7684\\u9500\\u552e\\u91d1\\u989d\\u4e4b\\u548c\": 9, \"\\u5982\\u679c\\u53c8\\u60f3\\u77e5\\u9053\\u4e0d\\u540c\\u5e97\\u5458\\u7684\\u9500\\u552e\\u989d\\u600e\\u4e48\\u529e\\u5462\": 9, \"\\u70b9\\u51fb\\u6570\\u636e\\u900f\\u89c6\\u8868\\u5206\\u6790\": 9, \"\\u70b9\\u51fb\\u63d2\\u5165\\u5207\\u7247\\u5668\": 9, \"\\u9009\\u62e9\\u63d2\\u7247\\u5668\\u7684\\u5b57\\u6bb5\": 9, \"\\u70b9\\u51fb\\u4e0d\\u540c\\u7684\\u5e97\\u5458\": 9, \"\\u53ef\\u4ee5\\u76f4\\u63a5\\u7edf\\u8ba1\\u8be5\\u5e97\\u5458\\u7684\\u9500\\u552e\\u989d\": 9, \"\\u8fd9\\u91cc\\u7684\\u63d2\\u7247\\u5668\\u76f8\\u5f53\\u4e8e\\u76f4\\u63a5\\u7b5b\\u9009\\u5e97\\u5458\\u7684\\u6570\\u636e\\u505a\\u7edf\\u8ba1\": 9, \"\\u5982\\u679c\\u60f3\\u7edf\\u8ba1\\u591a\\u4e2a\\u5e97\\u5458\\u7684\\u6570\\u636e\": 9, \"\\u53ef\\u4ee5\\u70b9\\u51fb\\u5207\\u7247\\u5668\\u7684\\u591a\\u9009\\u9879\": 9, \"\\u53ef\\u4ee5\\u540c\\u65f6\\u7edf\\u8ba1\\u591a\\u4e2a\\u5e97\\u5458\\u7684\\u6570\\u636e\": 9, \"\\u73b0\\u5728\\u5bf9\\u6570\\u636e\\u6e90\\u8fdb\\u884c\\u6570\\u636e\\u900f\\u89c6\\u56fe\": 9, \"\\u9009\\u62e9\\u6570\\u636e\\u900f\\u89c6\\u56fe\": 9, \"\\u9009\\u62e9\\u521b\\u5efa\\u6570\\u636e\\u900f\\u89c6\\u56fe\": 9, \"\\u9009\\u62e9\\u6570\\u636e\\u6e90\\u4f5c\\u4e3a\\u6570\\u636e\\u533a\\u57df\": 9, \"\\u9009\\u62e9\\u65b0\\u5de5\\u4f5c\\u8868\": 9, \"\\u9009\\u62e9\\u6708\\u4e3a\\u7c7b\\u522b\": 9, \"\\u9009\\u62e9\\u533a\\u57df\\u4e3a\\u56fe\\u4f8b\": 9, \"\\u9009\\u62e9\\u91d1\\u989d\\u6c42\\u548c\\u4f5c\\u4e3a\\u503c\": 9, \"\\u5f97\\u5230\\u5982\\u4e0b\\u900f\\u89c6\\u56fe\": 9, \"\\u5982\\u679c\": 9, \"\\u60f3\\u5207\\u6362\\u900f\\u89c6\\u56fe\\u7684\\u7c7b\\u578b\": 9, \"\\u53ef\\u4ee5\\u9009\\u62e9\\u4e0d\\u540c\\u7684\\u56fe\\u50cf\\u7c7b\\u578b\": 9, \"\\u4f8b\\u5982\\u6211\\u4eec\\u60f3\\u77e5\\u9053\\u4e0d\\u540c\\u6708\\u4efd\\u9500\\u552e\\u7684\\u53d8\\u5316\\u8d8b\\u52bf\": 9, \"\\u53ef\\u4ee5\\u9009\\u62e9\\u4e3a\\u6298\\u7ebf\\u56fe\": 9, \"\\u5f53\\u7136\\u6570\\u636e\\u900f\\u89c6\\u56fe\\u4e5f\\u652f\\u6301\\u63d2\\u7247\\u5668\": 9, \"\\u540c\\u6837\\u662f\\u9009\\u62e9\\u5e97\\u5458\\u4f5c\\u4e3a\\u5207\\u7247\\u7684\\u6761\\u4ef6\": 9, \"\\u7ed8\\u5236\\u4e0d\\u540c\\u7684\\u900f\\u89c6\\u56fe\": [9, 15], \"\\u7b2c\\u4e00\\u7ae0\": 10, \"excel\\u4e0e\\u6570\\u636e\\u683c\\u5f0f\": 10, \"1\": [10, 12, 13, 15], \"\\u6570\\u636e\\u7f18\\u4f55\\u800c\\u6765\": 10, \"2\": [10, 15], \"excel\\u6570\\u636e\\u683c\\u5f0f\": 10, \"\\u7ec3\\u4e60\": 10, \"\\u7b2c\\u4e8c\\u7ae0\": 10, \"excel\\u7684\\u5feb\\u6377\\u64cd\\u4f5c\": 10, \"excel\\u5feb\\u6377\\u64cd\\u4f5c\\u7b80\\u4ecb\": 10, \"excel\\u5feb\\u6377\\u64cd\\u4f5c\\u5b9e\\u8df5\": 10, \"\\u7b2c\\u4e09\\u7ae0\": 10, \"excel\\u7684\\u8868\\u5408\\u5e76\": 10, \"\\u591a\\u8868\\u884c\\u5408\\u5e76\": 10, \"\\u591a\\u8868\\u5217\\u5408\\u5e76\": 10, \"\\u7b2c\\u56db\\u7ae0\": 10, \"excel\\u51fd\\u6570\": 10, \"\\u903b\\u8f91\\u5224\\u65ad\": 10, \"if\\u51fd\\u6570\": 10, \"ifs\\u51fd\\u6570\": 10, \"sumif\\u51fd\\u6570\": 10, \"countifs\\u51fd\\u6570\": 10, \"\\u7b2c\\u4e94\\u7ae0\": 10, \"\\u6587\\u672c\\u51fd\\u6570\": 10, \"mid\\u51fd\\u6570\": 10, \"replace\\u51fd\\u6570\": 10, \"\\u7b2c\\u516d\\u7ae0\": 10, \"\\u67e5\\u627e\\u51fd\\u6570\": 10, \"vlookup\": 10, \"\\u7b2c\\u4e03\\u7ae0\": 10, \"\\u52a8\\u6001\\u51fd\\u6570\": 10, \"filter\\u51fd\\u6570\": 10, \"subtotal\\u51fd\\u6570\": 10, \"\\u7b2c\\u516b\\u7ae0excel\\u6570\\u636e\\u53ef\\u89c6\\u5316\": 10, \"\\u6761\\u5f62\\u56fe\": 10, \"\\u6761\\u4ef6\\u5355\\u5143\\u683c\\u683c\\u5f0f\": 10, \"\\u8ff7\\u4f60\\u56fe\": 10, \"\\u7b2c\\u4e5d\\u7ae0excel\\u6570\\u636e\\u900f\\u89c6\": 10, \"excel\\u6570\\u636e\\u900f\\u89c6\\u8868\": 10, \"excel\\u6570\\u636e\\u900f\\u89c6\\u56fe\": 10, \"\\u7b2c\\u5341\\u7ae0excel\\u770b\\u677f\": 10, \"\\u4e1a\\u52a1\\u80cc\\u666f\": 10, \"\\u5b9e\\u73b0\\u5206\\u6790\": 10, \"\\u5b9e\\u73b0\\u8fc7\\u7a0b\": 10, \"\\u601d\\u8003\": 10, \"\\u540e\\u8bb0\": 10, \"\\u662f\\u4e00\\u4e2a\\u4e13\\u6ce8\\u4e8e\": 11, \"ai\": 11, \"\\u9886\\u57df\\u7684\\u5f00\\u6e90\\u7ec4\\u7ec7\": 11, \"\\u5e0c\\u671b\\u6784\\u5efa\\u5bf9\\u5b66\\u4e60\\u8005\\u6700\\u6709\\u4ef7\\u503c\\u7684\\u5f00\\u6e90\\u793e\\u533a\": 11, \"\\u4f5c\\u4e3a\\u4e00\\u4e2a\\u7531\\u56fd\\u5185\\u5916\\u5404\\u4e2a\\u9ad8\\u6821\\u7684\\u6559\\u6388\": 11, \"\\u5b66\\u751f\": 11, \"\\u4f01\\u4e1a\\u4ece\\u4e1a\\u8005\\u7b49\\u521b\\u5efa\\u7684\\u5f00\\u653e\\u5f0f\\u7ec4\\u7ec7\\u5f62\\u6001\": 11, \"\\u62b1\\u6709\\u5f00\\u6e90\\u7cbe\\u795e\\u548c\\u63a2\\u7d22\\u7cbe\\u795e\": 11, \"\\u613f\\u666f\": 11, \"learner\": 11, \"\\u548c\\u5b66\\u4e60\\u8005\\u4e00\\u8d77\\u6210\\u957f\": 11, \"datawhale\\u5b98\\u7f51\": 11, \"http\": [11, 14], \"club\": 11, \"www\": [11, 14], \"zhihu\": [11, 14], \"com\": [11, 14], \"peopl\": [11, 14], \"datawhale2018\": 11, \"free\": [12, 13, 14], \"excel\\u4e2d\\u6587\\u610f\\u4e3a\\u81ea\\u7531excel\": [12, 13], \"\\u6e90\\u4e8e\\u5e0c\\u671b\\u5b66\\u4e60\\u8005\\u80fd\\u591f\\u901a\\u8fc7\\u8be5\\u6559\\u7a0b\\u80fd\\u591f\\u66f4\\u52a0\\u81ea\\u7531\\u5730\\u4f7f\\u7528excel\\u8fdb\\u884c\\u6570\\u636e\\u5206\\u6790\": [12, 13], \"\\u6570\\u636e\\u7edf\\u8ba1\": [12, 13], \"\\u89e3\\u653eexcel\\u4e0d\\u518d\\u4e3aexcel\\u6240\\u56f0\": [12, 13], \"\\u5185\\u5bb9\\u4e0a\\u4f1a\\u66f4\\u52a0\\u504f\\u5b9e\\u8df5\\u5e94\\u7528\": [12, 13], \"\\u529b\\u6c42\\u5c3d\\u53ef\\u80fd\\u7b80\\u5355\\u800c\\u53c8\\u5177\\u6709\\u4e00\\u5b9a\\u6df1\\u5ea6\": [12, 13], \"\\u5176\\u4ed6\\u5f88\\u591a\\u6559\\u7a0b\\u90fd\\u662f\\u6309\\u529f\\u80fd\\u6a21\\u5757\\u6765\\u8bb2\\u89e3\": [12, 13], \"\\u800c\\u4e14\\u8fd8\\u8be6\\u7ec6\\u7684\\u8bf4\\u660e\\u6bcf\\u4e2a\\u529f\\u80fd\": [12, 13], \"\\u4ee4\\u4eba\\u67af\\u71e5\\u4e4f\\u5473\": [12, 13], \"excel\\u6839\\u636e\\u591a\\u5e74\\u5de5\\u4f5c\\u7ecf\\u9a8c\\u603b\\u7ed3\\u800c\\u6210\": [12, 13], \"\\u5f88\\u591a\\u5185\\u5bb9\\u662f\\u5e38\\u7528\\u4e14\\u91cd\\u8981\\u7684\": [12, 13], \"\\u540c\\u65f6\\u5b66\\u5b8c\\u540e\\u80fd\\u52a0\\u6df1\\u5bf9excel\\u7684\\u7406\\u89e3\": [12, 13], \"\\u6388\\u4e4b\\u4ee5\\u9c7c\\u4e0d\\u5982\\u6388\\u4e4b\\u4ee5\\u6e14\": [12, 13], \"\\u8ba9\\u6211\\u4eec\\u5f00\\u59cb\\u6109\\u5feb\\u7684excel\\u4e4b\\u65c5\\u5427\": [12, 13], \"\\u672c\\u6559\\u7a0b\\u7684\\u6570\\u636e\\u96c6\\u5728\": [12, 13], \"\\u6b64\\u5904\": [12, 13], \"\\u4e0b\\u8f7d\": [12, 13], \"v1\": [12, 13], \"08\": [12, 13], \"v2\": [12, 13], \"2022\": [12, 13], \"09\": [12, 13], \"27\": [12, 13], \"1\\u6559\\u7a0b\\u914d\\u5957excel\\u7248\\u672c\\u4e3a2019\\u53ca\\u4ee5\\u4e0a\": [12, 13], \"\\u8bf7\\u81ea\\u884c\\u88c5\\u597d\\u73af\\u5883\\u4ee5\\u4fbf\\u64cd\\u4f5c\": [12, 13], \"\\u5982\\u679c\\u7535\\u8111\\u6ca1\\u6709excel\": [12, 13], \"\\u53ef\\u4ee5\\u4e0b\\u8f7dwps\\u8fdb\\u884c\\u76f8\\u5173\\u7684\\u64cd\\u4f5c\\u5b66\\u4e60\": [12, 13], \"\\u6ce8\": [12, 13], \"\\u672c\\u8bfe\\u7a0b\\u4e2d\\u90e8\\u5206\\u51fd\\u6570\\u4e3aexcel\\u65b0\\u66f4\\u65b0\\u7684\\u5185\\u5bb9\": [12, 13], \"\\u5982\\u679c\\u60f3\\u4f53\\u9a8cexcel\\u65b0\\u6dfb\\u52a0\\u7684\\u51fd\\u6570\": [12, 13], \"\\u53ef\\u5c06excel\\u66f4\\u65b0\\u81f3\\u6700\\u65b0\\u7248\": [12, 13], \"\\u6216\\u5c06wps\\u66f4\\u65b0\\u81f311\": [12, 13], \"1\\u7248\\u53ca\\u4ee5\\u4e0a\": [12, 13], \"\\u534e\\u4e2d\\u519c\\u4e1a\\u5927\\u5b66\\u7855\\u58eb\": 14, \"\\u4e92\\u8054\\u7f51\\u91d1\\u878d\\u6570\\u636e\\u5206\\u6790\\u5e08\": 14, \"excel\": 14, \"\\u5fc3\\u8df3\\u4fe1\\u53f7\\u5206\\u7c7b\": 14, \"python\\u81ea\\u52a8\\u5316\\u529e\\u516c\": 14, \"\\u5982\\u4f55\\u6253\\u4e00\\u4e2a\\u6570\\u636e\\u6316\\u6398\\u6bd4\\u8d5b\": 14, \"\\u5165\\u95e8\\u7bc7\": 14, \"muxiaoxiong\": 14, \"1335008986\": 14, \"qq\": 14, \"1\\u4f7f\\u7528excel\\u6570\\u636e\\u5bfc\\u5165\\u529f\\u80fd\": 15, \"2\\u5b8c\\u6210\": 15, \"\\u9ad8\\u6d88\\u8d39\\u6237\": 15, \"\\u53c2\\u8003\\u6559\\u7a0b\": 15}, \"objects\": {}, \"objtypes\": {}, \"objnames\": {}, \"titleterms\": {\"\\u7b2c\\u4e00\\u7ae0\": [0, 15], \"excel\\u4e0e\\u6570\\u636e\\u683c\\u5f0f\": 0, \"1\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], \"\\u6570\\u636e\\u7f18\\u4f55\\u800c\\u6765\": 0, \"\\u4e86\\u89e3excel\": 0, \"2\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], \"excel\\u5b58\\u50a8\\u683c\\u5f0f\": 0, \"excel\\u6570\\u636e\\u683c\\u5f0f\": 0, \"\\u5355\\u5143\\u683c\\u6570\\u636e\\u7c7b\\u578b\": 0, \"\\u6570\\u5b57\": 0, \"\\u6587\\u672c\": 0, \"3\": [0, 1, 4, 5, 8], \"\\u65e5\\u671f\": 0, \"\\u5355\\u5143\\u683c\\u683c\\u5f0f\": 0, \"\\u6570\\u503c\\u683c\\u5f0f\": 0, \"\\u6587\\u672c\\u683c\\u5f0f\": 0, \"\\u65e5\\u671f\\u683c\\u5f0f\": 0, \"\\u8f6c\\u6362\\u5355\\u5143\\u683c\\u6570\\u636e\": 0, \"\\u6570\\u503c\\u548c\\u6587\\u672c\\u76f8\\u4e92\\u8f6c\\u6362\": 0, \"\\u65e5\\u671f\\u548c\\u6587\\u672c\\u76f8\\u4e92\\u8f6c\\u6362\": 0, \"\\u7ec3\\u4e60\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], \"\\u7b2c\\u5341\\u7ae0excel\\u770b\\u677f\": 1, \"\\u4e1a\\u52a1\\u80cc\\u666f\": 1, \"\\u5b9e\\u73b0\\u5206\\u6790\": 1, \"\\u5b9e\\u73b0\\u8fc7\\u7a0b\": 1, \"\\u786e\\u5b9a\\u5468\\u6570\": 1, \"\\u9500\\u552e\\u57fa\\u7840\\u6574\\u7406\": 1, \"\\u5468\\u9500\\u552e\\u6570\\u636e\\u53d8\\u5316\\u8d8b\\u52bf\": 1, \"4\": [1, 4], \"\\u5468\\u9500\\u552e\\u6e20\\u9053\\u6574\\u7406\": 1, \"5\": 1, \"\\u770b\\u677f\\u7ed8\\u5236\": 1, \"\\u601d\\u8003\": 1, \"\\u540e\\u8bb0\": 1, \"\\u7b2c\\u4e8c\\u7ae0\": [2, 15], \"excel\\u7684\\u5feb\\u6377\\u64cd\\u4f5c\": 2, \"excel\\u5feb\\u6377\\u64cd\\u4f5c\\u7b80\\u4ecb\": 2, \"1\\u6587\\u4ef6\\u76f8\\u5173\": 2, \"2\\u901a\\u7528\\u5feb\\u6377\\u952e\": 2, \"3\\u8868\\u683c\\u9009\\u62e9\": 2, \"4\\u5355\\u5143\\u683c\\u7f16\\u8f91\": 2, \"5excel\\u683c\\u5f0f\\u5316\": 2, \"6excel\\u516c\\u5f0f\": 2, \"excel\\u5feb\\u6377\\u64cd\\u4f5c\\u5b9e\\u8df5\": 2, \"1\\u81ea\\u52a8\\u63d2\\u5165\\u6c42\\u548c\\u516c\\u5f0f\": 2, \"2\\u81ea\\u52a8\\u8fdb\\u884c\\u5217\\u5dee\\u5f02\\u6bd4\\u5bf9\": 2, \"3\\u81ea\\u52a8\\u586b\\u5145\": 2, \"\\u7b2c\\u4e09\\u7ae0\": [3, 15], \"excel\\u7684\\u8868\\u5408\\u5e76\": 3, \"\\u591a\\u8868\\u884c\\u5408\\u5e76\": 3, \"\\u591a\\u8868\\u5217\\u5408\\u5e76\": 3, \"\\u7b2c\\u56db\\u7ae0\": [4, 15], \"excel\\u51fd\\u6570\": [4, 5, 6, 7], \"\\u903b\\u8f91\\u5224\\u65ad\": 4, \"if\\u51fd\\u6570\": 4, \"ifs\\u51fd\\u6570\": 4, \"sumif\\u51fd\\u6570\": 4, \"\\u6848\\u4f8b1\": [4, 5, 6, 7], \"\\u6848\\u4f8b2\": [4, 5, 6, 7], \"\\u6848\\u4f8b3\": [4, 5, 6, 7], \"\\u6848\\u4f8b4\": [4, 6], \"countifs\\u51fd\\u6570\": 4, \"\\u7b2c\\u4e94\\u7ae0\": [5, 15], \"\\u6587\\u672c\\u51fd\\u6570\": 5, \"text\\u51fd\\u6570\": 5, \"mid\\u51fd\\u6570\": 5, \"replace\\u51fd\\u6570\": 5, \"\\u7b2c\\u516d\\u7ae0\": [6, 15], \"\\u67e5\\u627e\\u51fd\\u6570\": 6, \"vlookup\": 6, \"xlookup\": 6, \"\\u6848\\u4f8b5\": 6, \"\\u6848\\u4f8b6\": 6, \"\\u6848\\u4f8b7\": 6, \"\\u7b2c\\u4e03\\u7ae0\": [7, 15], \"\\u52a8\\u6001\\u51fd\\u6570\": 7, \"filter\\u51fd\\u6570\": 7, \"subtotal\\u51fd\\u6570\": 7, \"\\u7b2c\\u516b\\u7ae0excel\\u6570\\u636e\\u53ef\\u89c6\\u5316\": 8, \"\\u6761\\u5f62\\u56fe\": 8, \"\\u6761\\u4ef6\\u5355\\u5143\\u683c\\u683c\\u5f0f\": 8, \"\\u8ff7\\u4f60\\u56fe\": 8, \"\\u7b2c\\u4e5d\\u7ae0excel\\u6570\\u636e\\u900f\\u89c6\": 9, \"excel\\u6570\\u636e\\u900f\\u89c6\\u8868\": 9, \"excel\\u6570\\u636e\\u900f\\u89c6\\u56fe\": 9, \"\\u6559\\u7a0b\": 10, \"datawhal\": 11, \"\\u77e5\\u4e4e\": [11, 14], \"\\u5fae\\u4fe1\\u516c\\u4f17\\u53f7\": 11, \"home\": 12, \"\\u4e3b\\u9875\": [12, 13], \"\\u6559\\u7a0b\\u5927\\u7eb2\": [12, 13], \"\\u66f4\\u65b0\\u7248\\u672c\\u4e0e\\u66f4\\u65b0\\u65f6\\u95f4\": [12, 13], \"\\u4f5c\\u8005\": 14, \"\\u5f00\\u6e90\\u5185\\u5bb9\": 14, \"github\": 14, \"e\": 14, \"mail\": 14, \"\\u5fae\\u4fe1\": 14, \"\\u77e5\\u4e4e\\u54a8\\u8be2\": 14, \"\\u7ec3\\u4e60\\u9898\\u53c2\\u8003\\u64cd\\u4f5c\": 15, \"\\u7b2c\\u516b\\u7ae0\": 15, \"\\u7b2c\\u4e5d\\u7ae0\": 15, \"\\u7b2c\\u5341\\u7ae0\": 15}, \"envversion\": {\"sphinx.domains.c\": 2, \"sphinx.domains.changeset\": 1, \"sphinx.domains.citation\": 1, \"sphinx.domains.cpp\": 8, \"sphinx.domains.index\": 1, \"sphinx.domains.javascript\": 2, \"sphinx.domains.math\": 2, \"sphinx.domains.python\": 3, \"sphinx.domains.rst\": 2, \"sphinx.domains.std\": 2, \"sphinx\": 57}, \"alltitles\": {\"\\u7b2c\\u4e00\\u7ae0 Excel\\u4e0e\\u6570\\u636e\\u683c\\u5f0f\": [[0, \"excel\"]], \"1.\\u6570\\u636e\\u7f18\\u4f55\\u800c\\u6765\": [[0, \"id1\"]], \"1.1 \\u4e86\\u89e3Excel\": [[0, \"id2\"]], \"1.2 Excel\\u5b58\\u50a8\\u683c\\u5f0f\": [[0, \"id3\"]], \"2.Excel\\u6570\\u636e\\u683c\\u5f0f\": [[0, \"id4\"]], \"2.1 \\u5355\\u5143\\u683c\\u6570\\u636e\\u7c7b\\u578b\": [[0, \"id5\"]], \"2.1.1 \\u6570\\u5b57\": [[0, \"id6\"]], \"2.1.2 \\u6587\\u672c\": [[0, \"id7\"]], \"2.1.3 \\u65e5\\u671f\": [[0, \"id8\"]], \"2.2 \\u5355\\u5143\\u683c\\u683c\\u5f0f\": [[0, \"id9\"]], \"2.2.1 \\u6570\\u503c\\u683c\\u5f0f\": [[0, \"id10\"]], \"2.2.2 \\u6587\\u672c\\u683c\\u5f0f\": [[0, \"id11\"]], \"2.2.3 \\u65e5\\u671f\\u683c\\u5f0f\": [[0, \"id12\"]], \"2.3 \\u8f6c\\u6362\\u5355\\u5143\\u683c\\u6570\\u636e\": [[0, \"id13\"]], \"2.3.1 \\u6570\\u503c\\u548c\\u6587\\u672c\\u76f8\\u4e92\\u8f6c\\u6362\": [[0, \"id14\"]], \"2.3.2 \\u65e5\\u671f\\u548c\\u6587\\u672c\\u76f8\\u4e92\\u8f6c\\u6362\": [[0, \"id15\"]], \"\\u7ec3\\u4e60\": [[0, \"id16\"], [1, \"id9\"], [2, \"header-n167\"], [3, \"header-n23\"], [4, \"header-n78\"], [5, \"id4\"], [6, \"header-n94\"], [7, \"id4\"], [8, \"id4\"], [9, \"id3\"]], \"\\u7b2c\\u5341\\u7ae0Excel\\u770b\\u677f\": [[1, \"excel\"]], \"1.\\u4e1a\\u52a1\\u80cc\\u666f\": [[1, \"id1\"]], \"2.\\u5b9e\\u73b0\\u5206\\u6790\": [[1, \"id2\"]], \"3.\\u5b9e\\u73b0\\u8fc7\\u7a0b\": [[1, \"id3\"]], \"1.\\u786e\\u5b9a\\u5468\\u6570\": [[1, \"id4\"]], \"2.\\u9500\\u552e\\u57fa\\u7840\\u6574\\u7406\": [[1, \"id5\"]], \"3.\\u5468\\u9500\\u552e\\u6570\\u636e\\u53d8\\u5316\\u8d8b\\u52bf\": [[1, \"id6\"]], \"4.\\u5468\\u9500\\u552e\\u6e20\\u9053\\u6574\\u7406\": [[1, \"id7\"]], \"5.\\u770b\\u677f\\u7ed8\\u5236\": [[1, \"id8\"]], \"\\u601d\\u8003\": [[1, \"id10\"]], \"\\u540e\\u8bb0\": [[1, \"id11\"]], \"\\u7b2c\\u4e8c\\u7ae0 Excel\\u7684\\u5feb\\u6377\\u64cd\\u4f5c\": [[2, \"excel\"]], \"1.Excel\\u5feb\\u6377\\u64cd\\u4f5c\\u7b80\\u4ecb\": [[2, \"header-n2\"]], \"1.1\\u6587\\u4ef6\\u76f8\\u5173\": [[2, \"header-n9\"]], \"1.2\\u901a\\u7528\\u5feb\\u6377\\u952e\": [[2, \"header-n29\"]], \"1.3\\u8868\\u683c\\u9009\\u62e9\": [[2, \"header-n50\"]], \"1.4\\u5355\\u5143\\u683c\\u7f16\\u8f91\": [[2, \"header-n72\"]], \"1.5Excel\\u683c\\u5f0f\\u5316\": [[2, \"header-n99\"]], \"1.6Excel\\u516c\\u5f0f\": [[2, \"header-n116\"]], \"2.Excel\\u5feb\\u6377\\u64cd\\u4f5c\\u5b9e\\u8df5\": [[2, \"header-n3\"]], \"2.1\\u81ea\\u52a8\\u63d2\\u5165\\u6c42\\u548c\\u516c\\u5f0f\": [[2, \"header-n126\"]], \"2.2\\u81ea\\u52a8\\u8fdb\\u884c\\u5217\\u5dee\\u5f02\\u6bd4\\u5bf9\": [[2, \"header-n4\"]], \"2.3\\u81ea\\u52a8\\u586b\\u5145\": [[2, \"header-n137\"]], \"\\u7b2c\\u4e09\\u7ae0 Excel\\u7684\\u8868\\u5408\\u5e76\": [[3, \"excel\"]], \"1.\\u591a\\u8868\\u884c\\u5408\\u5e76\": [[3, \"header-n4\"]], \"2.\\u591a\\u8868\\u5217\\u5408\\u5e76\": [[3, \"header-n19\"]], \"\\u7b2c\\u56db\\u7ae0 Excel\\u51fd\\u6570-\\u903b\\u8f91\\u5224\\u65ad\": [[4, \"excel\"]], \"1.if\\u51fd\\u6570\": [[4, \"if\"]], \"2.ifs\\u51fd\\u6570\": [[4, \"ifs\"]], \"3.sumif\\u51fd\\u6570\": [[4, \"sumif\"]], \"\\u6848\\u4f8b1\": [[4, \"header-n39\"], [5, \"id1\"], [6, \"header-n7\"], [6, \"header-n55\"], [7, \"header-n107\"]], \"\\u6848\\u4f8b2\": [[4, \"header-n47\"], [5, \"id2\"], [6, \"header-n15\"], [6, \"header-n62\"], [7, \"header-n114\"]], \"\\u6848\\u4f8b3\": [[4, \"header-n53\"], [5, \"id3\"], [6, \"header-n26\"], [6, \"header-n67\"], [7, \"header-n123\"]], \"\\u6848\\u4f8b4\": [[4, \"header-n63\"], [6, \"header-n32\"], [6, \"header-n72\"]], \"4.countifs\\u51fd\\u6570\": [[4, \"countifs\"]], \"\\u7b2c\\u4e94\\u7ae0 Excel\\u51fd\\u6570-\\u6587\\u672c\\u51fd\\u6570\": [[5, \"excel\"]], \"1.Text\\u51fd\\u6570\": [[5, \"text\"]], \"2.mid\\u51fd\\u6570\": [[5, \"mid\"]], \"3.replace\\u51fd\\u6570\": [[5, \"replace\"]], \"\\u7b2c\\u516d\\u7ae0 Excel\\u51fd\\u6570-\\u67e5\\u627e\\u51fd\\u6570\": [[6, \"excel\"]], \"1.VLOOKUP\": [[6, \"vlookup\"]], \"2 XLOOKUP\": [[6, \"xlookup\"]], \"\\u6848\\u4f8b5\": [[6, \"header-n78\"]], \"\\u6848\\u4f8b6\": [[6, \"header-n83\"]], \"\\u6848\\u4f8b7\": [[6, \"header-n88\"]], \"\\u7b2c\\u4e03\\u7ae0 Excel\\u51fd\\u6570-\\u52a8\\u6001\\u51fd\\u6570\": [[7, \"excel\"]], \"1.FILTER\\u51fd\\u6570\": [[7, \"filter\"]], \"2.SUBTOTAL\\u51fd\\u6570\": [[7, \"subtotal\"]], \"\\u7b2c\\u516b\\u7ae0Excel\\u6570\\u636e\\u53ef\\u89c6\\u5316\": [[8, \"excel\"]], \"1.\\u6761\\u5f62\\u56fe\": [[8, \"id1\"]], \"2.\\u6761\\u4ef6\\u5355\\u5143\\u683c\\u683c\\u5f0f\": [[8, \"id2\"]], \"3.\\u8ff7\\u4f60\\u56fe\": [[8, \"id3\"]], \"\\u7b2c\\u4e5d\\u7ae0Excel\\u6570\\u636e\\u900f\\u89c6\": [[9, \"excel\"]], \"1.Excel\\u6570\\u636e\\u900f\\u89c6\\u8868\": [[9, \"id1\"]], \"2.Excel\\u6570\\u636e\\u900f\\u89c6\\u56fe\": [[9, \"id2\"]], \"\\u6559\\u7a0b\": [[10, \"id1\"]], \"Datawhale\": [[11, \"datawhale\"]], \"\\u77e5\\u4e4e\": [[11, \"id1\"], [14, \"id5\"]], \"\\u5fae\\u4fe1\\u516c\\u4f17\\u53f7\": [[11, \"id2\"]], \"Home\": [[12, \"home\"]], \"\\u4e3b\\u9875\": [[12, \"id1\"], [13, \"id1\"]], \"\\u6559\\u7a0b\\u5927\\u7eb2\": [[12, \"id2\"], [13, \"id2\"]], \"\\u66f4\\u65b0\\u7248\\u672c\\u4e0e\\u66f4\\u65b0\\u65f6\\u95f4\": [[12, \"id3\"], [13, \"id3\"]], \"\\u4f5c\\u8005\": [[14, \"id1\"]], \"\\u5f00\\u6e90\\u5185\\u5bb9\": [[14, \"id2\"]], \"Github\": [[14, \"github\"]], \"E-mail\": [[14, \"e-mail\"]], \"\\u5fae\\u4fe1\": [[14, \"id6\"]], \"\\u77e5\\u4e4e\\u54a8\\u8be2\": [[14, \"id7\"]], \"\\u7ec3\\u4e60\\u9898\\u53c2\\u8003\\u64cd\\u4f5c\": [[15, \"id1\"]], \"\\u7b2c\\u4e00\\u7ae0\": [[15, \"id2\"]], \"\\u7b2c\\u4e8c\\u7ae0\": [[15, \"id3\"]], \"\\u7b2c\\u4e09\\u7ae0\": [[15, \"id4\"]], \"\\u7b2c\\u56db\\u7ae0\": [[15, \"id5\"]], \"\\u7b2c\\u4e94\\u7ae0\": [[15, \"id6\"]], \"\\u7b2c\\u516d\\u7ae0\": [[15, \"id7\"]], \"\\u7b2c\\u4e03\\u7ae0\": [[15, \"id8\"]], \"\\u7b2c\\u516b\\u7ae0\": [[15, \"id9\"]], \"\\u7b2c\\u4e5d\\u7ae0\": [[15, \"id10\"]], \"\\u7b2c\\u5341\\u7ae0\": [[15, \"id11\"]]}, \"indexentries\": {}})"
  },
  {
    "path": "docs/主页.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>主页 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"./\" id=\"documentation_options\" src=\"_static/documentation_options.js\"></script>\r\n    <script src=\"_static/jquery.js\"></script>\r\n    <script src=\"_static/underscore.js\"></script>\r\n    <script src=\"_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"_static/doctools.js\"></script>\r\n    <script src=\"_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"search.html\" />\r\n    <link rel=\"next\" title=\"教程\" href=\"Content/index.html\" />\r\n    <link rel=\"prev\" title=\"Home\" href=\"index.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"current reference internal nav-link\" href=\"#\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Content/index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    \r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#\">\r\n   主页\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id2\">\r\n   教程大纲\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id3\">\r\n   更新版本与更新时间\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"id1\">\r\n<h1>主页<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>free excel中文意为自由Excel，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！</p>\r\n<p>本教程的数据集在 <a class=\"reference external\" href=\"https://github.com/datawhalechina/free-excel\">此处</a> 下载。</p>\r\n</div>\r\n<div class=\"section\" id=\"id2\">\r\n<h1>教程大纲<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h1>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/home.png\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id3\">\r\n<h1>更新版本与更新时间<a class=\"headerlink\" href=\"#id3\" title=\"Permalink to this heading\">#</a></h1>\r\n<ul class=\"simple\">\r\n<li><p>V1.0  2021-08-08</p></li>\r\n<li><p>V2.0  2022-09-09</p></li>\r\n<li><p>V2.1  2022-11-27</p></li>\r\n</ul>\r\n<p>V2.1教程配套Excel版本为2019及以上，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。</p>\r\n<p>注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上</p>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/作者.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>作者 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"./\" id=\"documentation_options\" src=\"_static/documentation_options.js\"></script>\r\n    <script src=\"_static/jquery.js\"></script>\r\n    <script src=\"_static/underscore.js\"></script>\r\n    <script src=\"_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"_static/doctools.js\"></script>\r\n    <script src=\"_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"search.html\" />\r\n    <link rel=\"next\" title=\"Datawhale\" href=\"Datawhale.html\" />\r\n    <link rel=\"prev\" title=\"第十章Excel看板\" href=\"Content/chap10.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Content/index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"current reference internal nav-link\" href=\"#\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E7%BB%83%E4%B9%A0%E9%A2%98%E5%8F%82%E8%80%83%E6%93%8D%E4%BD%9C.html\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    \r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id2\">\r\n   开源内容\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#github\">\r\n   Github\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id5\">\r\n   知乎\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#e-mail\">\r\n   E-mail\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id6\">\r\n   微信\r\n  </a>\r\n </li>\r\n <li class=\"toc-h2 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id7\">\r\n   知乎咨询\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"id1\">\r\n<h1>作者<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>牧小熊，华中农业大学硕士，Datawhale成员，互联网金融数据分析师</p>\r\n<div class=\"section\" id=\"id2\">\r\n<h2>开源内容<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h2>\r\n<ul class=\"simple\">\r\n<li><p><a class=\"reference external\" href=\"https://github.com/datawhalechina/free-excel\">《free-excel》</a></p></li>\r\n<li><p><a class=\"reference external\" href=\"https://github.com/datawhalechina/team-learning-data-mining/tree/master/HeartbeatClassification\">《心跳信号分类》</a></p></li>\r\n<li><p><a class=\"reference external\" href=\"https://github.com/datawhalechina/office-automation\">《python自动化办公》</a></p></li>\r\n<li><p><a class=\"reference external\" href=\"https://linklearner.com/#/learn/detail/0\">《如何打一个数据挖掘比赛-\r\n入门篇》</a></p></li>\r\n</ul>\r\n</div>\r\n<div class=\"section\" id=\"github\">\r\n<h2>Github<a class=\"headerlink\" href=\"#github\" title=\"Permalink to this heading\">#</a></h2>\r\n<p><a class=\"reference external\" href=\"https://github.com/muxiaoxiong\">https://github.com/muxiaoxiong</a></p>\r\n</div>\r\n<div class=\"section\" id=\"id5\">\r\n<h2>知乎<a class=\"headerlink\" href=\"#id5\" title=\"Permalink to this heading\">#</a></h2>\r\n<p><a class=\"reference external\" href=\"https://www.zhihu.com/people/muxiaoxiong\">https://www.zhihu.com/people/muxiaoxiong</a></p>\r\n</div>\r\n<div class=\"section\" id=\"e-mail\">\r\n<h2>E-mail<a class=\"headerlink\" href=\"#e-mail\" title=\"Permalink to this heading\">#</a></h2>\r\n<p><a class=\"reference external\" href=\"mailto:1335008986&#37;&#52;&#48;qq&#46;com\">1335008986<span>&#64;</span>qq<span>&#46;</span>com</a></p>\r\n</div>\r\n<div class=\"section\" id=\"id6\">\r\n<h2>微信<a class=\"headerlink\" href=\"#id6\" title=\"Permalink to this heading\">#</a></h2>\r\n<a class=\"reference internal image-reference\" href=\"_images/wechat.jpg\"><img alt=\"_images/wechat.jpg\" class=\"align-center\" src=\"_images/wechat.jpg\" style=\"width: 336.0px; height: 388.0px;\" /></a>\r\n</div>\r\n<div class=\"section\" id=\"id7\">\r\n<h2>知乎咨询<a class=\"headerlink\" href=\"#id7\" title=\"Permalink to this heading\">#</a></h2>\r\n<a class=\"reference internal image-reference\" href=\"_images/zixun.png\"><img alt=\"_images/zixun.png\" class=\"align-left\" src=\"_images/zixun.png\" style=\"width: 779.0px; height: 360.0px;\" /></a>\r\n</div>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "docs/练习题参考操作.html",
    "content": "\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>练习题参考操作 &#8212; free-excel</title>\r\n<script>\r\n  document.documentElement.dataset.mode = localStorage.getItem(\"mode\") || \"\";\r\n  document.documentElement.dataset.theme = localStorage.getItem(\"theme\") || \"light\"\r\n</script>\r\n\r\n  <!-- Loaded before other Sphinx assets -->\r\n  <link href=\"_static/styles/theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n<link href=\"_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695\" rel=\"stylesheet\">\r\n\r\n\r\n  <link rel=\"stylesheet\"\r\n    href=\"_static/vendor/fontawesome/5.13.0/css/all.min.css\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2\">\r\n  <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin\r\n    href=\"_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2\">\r\n\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/pygments.css\" />\r\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"_static/css/s4defs-roles.css\" />\r\n\r\n  <!-- Pre-loaded scripts that we'll load fully later -->\r\n  <link rel=\"preload\" as=\"script\" href=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\">\r\n\r\n    <script data-url_root=\"./\" id=\"documentation_options\" src=\"_static/documentation_options.js\"></script>\r\n    <script src=\"_static/jquery.js\"></script>\r\n    <script src=\"_static/underscore.js\"></script>\r\n    <script src=\"_static/_sphinx_javascript_frameworks_compat.js\"></script>\r\n    <script src=\"_static/doctools.js\"></script>\r\n    <script src=\"_static/sphinx_highlight.js\"></script>\r\n    <link rel=\"shortcut icon\" href=\"_static/logo.ico\"/>\r\n    <link rel=\"index\" title=\"Index\" href=\"genindex.html\" />\r\n    <link rel=\"search\" title=\"Search\" href=\"search.html\" />\r\n    <link rel=\"prev\" title=\"Datawhale\" href=\"Datawhale.html\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n<meta name=\"docsearch:language\" content=\"en\">\r\n  </head>\r\n  \r\n  \r\n  <body data-spy=\"scroll\" data-target=\"#bd-toc-nav\" data-offset=\"180\" data-default-mode=\"\">\r\n    <div class=\"bd-header-announcement container-fluid\" id=\"banner\">\r\n      \r\n\r\n    </div>\r\n\r\n    \r\n    <nav class=\"bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar\" id=\"navbar-main\"><div class=\"bd-header__inner container-xl\">\r\n\r\n  <div id=\"navbar-start\">\r\n    \r\n    \r\n  \r\n\r\n\r\n<a class=\"navbar-brand logo\" href=\"index.html\">\r\n  \r\n  \r\n  \r\n  \r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-light\" alt=\"Logo image\">\r\n    <img src=\"_static/logo.svg\" class=\"logo__image only-dark\" alt=\"Logo image\">\r\n  \r\n  \r\n</a>\r\n    \r\n  </div>\r\n\r\n  <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar-collapsible\" aria-controls=\"navbar-collapsible\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n    <span class=\"fas fa-bars\"></span>\r\n  </button>\r\n\r\n  \r\n  <div id=\"navbar-collapsible\" class=\"col-lg-9 collapse navbar-collapse\">\r\n    <div id=\"navbar-center\" class=\"mr-auto\">\r\n      \r\n      <div class=\"navbar-center-item\">\r\n        <ul id=\"navbar-main-elements\" class=\"navbar-nav\">\r\n    <li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%B8%BB%E9%A1%B5.html\">\r\n  主页\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Content/index.html\">\r\n  教程\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"%E4%BD%9C%E8%80%85.html\">\r\n  作者\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 nav-item\">\r\n <a class=\"reference internal nav-link\" href=\"Datawhale.html\">\r\n  Datawhale\r\n </a>\r\n</li>\r\n\r\n<li class=\"toctree-l1 current active nav-item\">\r\n <a class=\"current reference internal nav-link\" href=\"#\">\r\n  练习题参考操作\r\n </a>\r\n</li>\r\n\r\n    \r\n</ul>\r\n      </div>\r\n      \r\n    </div>\r\n\r\n    <div id=\"navbar-end\">\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <span id=\"theme-switch\" class=\"btn btn-sm btn-outline-primary navbar-btn rounded-circle\">\r\n    <a class=\"theme-switch\" data-mode=\"light\"><i class=\"fas fa-sun\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"dark\"><i class=\"far fa-moon\"></i></a>\r\n    <a class=\"theme-switch\" data-mode=\"auto\"><i class=\"fas fa-adjust\"></i></a>\r\n</span>\r\n      </div>\r\n      \r\n      <div class=\"navbar-end-item\">\r\n        <ul id=\"navbar-icon-links\" class=\"navbar-nav\" aria-label=\"Icon Links\">\r\n        <li class=\"nav-item\">\r\n          <a class=\"nav-link\" href=\"https://github.com/datawhalechina/free-excel\" rel=\"noopener\" target=\"_blank\" title=\"GitHub\"><span><i class=\"fab fa-github-square\"></i></span>\r\n            <label class=\"sr-only\">GitHub</label></a>\r\n        </li>\r\n      </ul>\r\n      </div>\r\n      \r\n    </div>\r\n  </div>\r\n</div>\r\n    </nav>\r\n    \r\n\r\n    <div class=\"bd-container container-xl\">\r\n      <div class=\"bd-container__inner row\">\r\n          \r\n\r\n<!-- Only show if we have sidebars configured, else just a small margin  -->\r\n<div class=\"bd-sidebar-primary col-12 col-md-3 bd-sidebar\">\r\n  <div class=\"sidebar-start-items\"><form class=\"bd-search d-flex align-items-center\" action=\"search.html\" method=\"get\">\r\n  <i class=\"icon fas fa-search\"></i>\r\n  <input type=\"search\" class=\"form-control\" name=\"q\" id=\"search-input\" placeholder=\"在这里搜索\" aria-label=\"在这里搜索\" autocomplete=\"off\" >\r\n</form><nav class=\"bd-links\" id=\"bd-docs-nav\" aria-label=\"Main navigation\">\r\n  <div class=\"bd-toc-item active\">\r\n    \r\n  </div>\r\n</nav>\r\n  </div>\r\n  <div class=\"sidebar-end-items\">\r\n  </div>\r\n</div>\r\n\r\n\r\n          \r\n\r\n\r\n<div class=\"bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc\">\r\n  \r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n<div class=\"tocsection onthispage mt-5 pt-1 pb-3\">\r\n    <i class=\"fas fa-list\"></i> On this page\r\n</div>\r\n\r\n<nav id=\"bd-toc-nav\">\r\n    <ul class=\"visible nav section-nav flex-column\">\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#\">\r\n   练习题参考操作\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id2\">\r\n   第一章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id3\">\r\n   第二章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id4\">\r\n   第三章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id5\">\r\n   第四章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id6\">\r\n   第五章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id7\">\r\n   第六章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id8\">\r\n   第七章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id9\">\r\n   第八章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id10\">\r\n   第九章\r\n  </a>\r\n </li>\r\n <li class=\"toc-h1 nav-item toc-entry\">\r\n  <a class=\"reference internal nav-link\" href=\"#id11\">\r\n   第十章\r\n  </a>\r\n </li>\r\n</ul>\r\n\r\n</nav>\r\n    </div>\r\n    \r\n    <div class=\"toc-item\">\r\n      \r\n    </div>\r\n    \r\n  \r\n</div>\r\n\r\n\r\n          \r\n          \r\n          <div class=\"bd-content col-12 col-md-9 col-xl-7\">\r\n              \r\n              <article class=\"bd-article\" role=\"main\">\r\n                \r\n  <div class=\"section\" id=\"id1\">\r\n<h1>练习题参考操作<a class=\"headerlink\" href=\"#id1\" title=\"Permalink to this heading\">#</a></h1>\r\n</div>\r\n<div class=\"section\" id=\"id2\">\r\n<h1>第一章<a class=\"headerlink\" href=\"#id2\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>1.1使用Excel数据导入功能，完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/Titanic_normal.csv</span></code>和<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/data/chap1/Titanic_special.txt</span></code>数据导入</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/1.1.gif\" />\r\n</div>\r\n<p>1.2完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap1/2.1.xlsx</span></code>中案例1-4中的问题</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/1.2.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id3\">\r\n<h1>第二章<a class=\"headerlink\" href=\"#id3\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>2.1.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.1.xlsx</span></code>工作簿中的【案例2】【案例3】的快捷键自动求和任务</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/2.11.gif\" />\r\n</div>\r\n<p>2.2.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.2.xlsx</span></code>工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/2.21.gif\" />\r\n</div>\r\n<p>2.3.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap2/2.3.xlsx</span></code>工作簿中的【案例2】【案例3】【案例4】的填充任务</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/2.32.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id4\">\r\n<h1>第三章<a class=\"headerlink\" href=\"#id4\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>3.1.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap3/3.1.xlsx</span></code>工作簿中的【案例1】得到不同客户的消费次数</p>\r\n<p>3.2.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap3/3.1.xlsx</span></code>工作簿中的【案例2】得到不同客户的不同项目的消费次数</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/3.11.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id5\">\r\n<h1>第四章<a class=\"headerlink\" href=\"#id5\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>4.1.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>工作簿中的【案例1】，将客户原始得分为1以下的校正为0</p>\r\n<p>4.2.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为”高消费户”</p>\r\n<p>4.3.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.1.xlsx</span></code>工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的务。</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/4.11.gif\" />\r\n</div>\r\n<p>4.4.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例1】语文成绩在80分以上的同学成绩之和</p>\r\n<p>4.5.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例2】统计所有苹果系列产品的销售额</p>\r\n<p>4.6.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap4/4.2xlsx</span></code>中的【案例6】完成所有手机的销售额求和</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/4.21.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id6\">\r\n<h1>第五章<a class=\"headerlink\" href=\"#id6\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>5.1.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.1.xlsx</span></code>工作簿中的【案例1-3】</p>\r\n<p>参考教程</p>\r\n<p>5.2.完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap5/5.2.xlsx</span></code>工作簿中的【案例1】中身份证后6位加密</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/5.21.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id7\">\r\n<h1>第六章<a class=\"headerlink\" href=\"#id7\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>6.1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap6/6.1xlsx</span></code>中的【案例1-4】</p>\r\n<p>参考教程</p>\r\n</div>\r\n<div class=\"section\" id=\"id8\">\r\n<h1>第七章<a class=\"headerlink\" href=\"#id8\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>7.1.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap7/7.1xlsx</span></code>中的【案例1】计算河北区中商品1的最小销售额</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/7.11.gif\" />\r\n</div>\r\n<p>7.2.打开<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap7/7.1xlsx</span></code>中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/7.21.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id9\">\r\n<h1>第八章<a class=\"headerlink\" href=\"#id9\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>8.1.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap8/8.2.xlsx</span></code>工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/8.11.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id10\">\r\n<h1>第九章<a class=\"headerlink\" href=\"#id10\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>9.1.选择<code class=\"docutils literal notranslate\"><span class=\"pre\">data/chap9/9.1.xlsx</span></code>工作簿中的【数据源】绘制不同的透视图</p>\r\n<div class=\"figure align-default\">\r\n<img alt=\"\" src=\"_images/9.11.gif\" />\r\n</div>\r\n</div>\r\n<div class=\"section\" id=\"id11\">\r\n<h1>第十章<a class=\"headerlink\" href=\"#id11\" title=\"Permalink to this heading\">#</a></h1>\r\n<p>10.1.完成数据看板，需要通过按钮调节周数，同时销售额，订单数以及数据图进行变化</p>\r\n<p>参考教程</p>\r\n</div>\r\n\r\n\r\n              </article>\r\n              \r\n\r\n              \r\n          </div>\r\n          \r\n      </div>\r\n    </div>\r\n\r\n  \r\n  \r\n  <!-- Scripts loaded after <body> so the DOM is not blocked -->\r\n  <script src=\"_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695\"></script>\r\n\r\n<footer class=\"bd-footer\"><div class=\"bd-footer__inner container\">\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"copyright\">\r\n    &copy; Copyright 2022, Datawhale, 牧小熊.<br>\r\n</p>\r\n  </div>\r\n  \r\n  <div class=\"footer-item\">\r\n    <p class=\"sphinx-version\">\r\nCreated using <a href=\"http://sphinx-doc.org/\">Sphinx</a> 5.3.0.<br>\r\n</p>\r\n  </div>\r\n  \r\n</div>\r\n</footer>\r\n  </body>\r\n</html>"
  },
  {
    "path": "make.bat",
    "content": "@ECHO OFF\r\n\r\npushd %~dp0\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\nset SOURCEDIR=source\r\nset BUILDDIR=build\r\n\r\n%SPHINXBUILD% >NUL 2>NUL\r\nif errorlevel 9009 (\r\n\techo.\r\n\techo.The 'sphinx-build' command was not found. Make sure you have Sphinx\r\n\techo.installed, then set the SPHINXBUILD environment variable to point\r\n\techo.to the full path of the 'sphinx-build' executable. Alternatively you\r\n\techo.may add the Sphinx directory to PATH.\r\n\techo.\r\n\techo.If you don't have Sphinx installed, grab it from\r\n\techo.https://www.sphinx-doc.org/\r\n\texit /b 1\r\n)\r\n\r\nif \"%1\" == \"\" goto help\r\n\r\n%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%\r\ngoto end\r\n\r\n:help\r\n%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%\r\n\r\n:end\r\npopd\r\n"
  },
  {
    "path": "source/1.txt",
    "content": ""
  },
  {
    "path": "source/Content/chap1.rst",
    "content": "\r\n\r\n第一章 Excel与数据格式\r\n======================\r\n\r\n\r\n\r\n1.数据缘何而来\r\n--------------\r\n\r\nExecel是我们常见的用来进行数据处理的工具，其中Excel文件主要包含有2种格式分别是\\ ``xls``\\ 或\\ ``xlsx``\\ ，\\ ``xls``\\ 和\\ ``xlsx``\\ 主要区别如下：\r\n\r\n.. figure:: ../_static/chap1/1.0.png\r\n   :alt: \r\n\r\n因此，推荐大家使用最新版本的Excel或者WPS进行相关的学习与操作。\r\n\r\n\r\n\r\n1.1 了解Excel\r\n~~~~~~~~~~~~~\r\n\r\nExcel文每个数据文件叫做工作簿，每个工作簿里面含有多个工作表，每个工作表里面的格子叫做单元格。\r\n\r\n在Excel中点击新建文档后，Excel默认的文档名称是工作簿1，也就是一个Excel文档，就是一个工作簿\r\n\r\n.. figure:: ../_static/chap1/1.1.png\r\n   :alt: \r\n\r\n在新建的工作簿中，可以看到左下方有\\ ``Sheet1``\\ 的标签，每个工作簿里面可以含有多个工作表，Excel表中最大支持255个工作表\r\n\r\n.. figure:: ../_static/chap1/1.2.png\r\n   :alt: \r\n\r\n单元格就是工作表中间每一个格子\r\n\r\n.. figure:: ../_static/chap1/1.3.png\r\n   :alt: \r\n\r\n在Excel最上方是工具栏，如果希望在Excel中导入第三方插件，可以点击\\ ``文件``-->\\ ``选项``-->\\ ``自定义功能区``\\ 点击右侧的√，即可导入相关模块\r\n\r\n.. figure:: ../_static/chap1/1.5.gif\r\n   :alt: \r\n\r\n\r\n\r\n1.2 Excel存储格式\r\n~~~~~~~~~~~~~~~~~\r\n\r\nExcel中的数据可以存储为不同的类型格式，其中常用的存储类似分别是xlsx、csv以及txt，一般情况下，csv文件采用是逗号分隔，txt文件采用的是制表符作为分隔，例如\\ ``data/chap1/Titanic_normal.csv``\\ 和\\ ``data/chap1/Titanic_tab.txt``\\ ，而在较为特殊的情况下，数据的分隔符合可能不是常规的分隔符合，例如\\ ``data/chap1/Titanic_special.txt``\\ ，使用记事本打开这个文件发现文件采用\\ ``|``\\ 作为分隔的符合，那么这样的文件如何使用Excel打开呢？\r\n\r\n.. figure:: ../_static/chap1/1.6.png\r\n   :alt: \r\n\r\n这里推荐大家使用以下的操作方案，操作路径为菜单栏选择：\\ **数据-->获取和转换数据-->从文件/CSV**\r\n\r\n.. figure:: ../_static/chap1/1.7.gif\r\n   :alt: \r\n\r\n\\ 点击\\ **加载**\\ 后可以看到我们导入的数据集，接着按快捷键\\ ``ctrl+s``\\ 保存工作簿到本地。\r\n\r\n   至此我们已经成功加载数据集到工作表当中，需要注意的是此时构建的数据表跟原始数据是存在连接关系，更改csv文件的数据后在点击路径：\\ **设计-外部表数据-刷新**\\ 后就可以更新工作表数据。如果要取消链接关系则点击路径：\\ **设计-外部数据表-取消链接**\\ 即可。\r\n\r\n\r\n\r\n2.Excel数据格式\r\n---------------\r\n\r\n\r\n\r\n2.1 单元格数据类型\r\n~~~~~~~~~~~~~~~~~~\r\n\r\n打开\\ ``data/chap1/2.1.xlsx``\\ 文件，点击【单元格数据类型】工作表，可以看到Excel有11种数据类型\r\n\r\n.. figure:: ../_static/chap1/2.1.png\r\n   :alt: \r\n\r\n在平时工作和学习中常见的数据类型有3种分别是数字、文本和日期，接下来就详细讲解这3种格式的相关应用\r\n\r\n\r\n\r\n2.1.1 数字\r\n^^^^^^^^^^\r\n\r\n数值是单元格最常见的数据之一，12位数的时候会以科学计数法显示。\r\n\r\n打开\\ ``data/chap1/2.1.xlsx``\\ 文件，点击【真假数字】工作表看到展示的是真假数值列，真数值默认情况下是右对齐（方便观测数据位数），假数值是数值型文本属于\\ **文本**\\ ，左上角会有个绿色三角错误检查，当数据是文本时，无法完成数字运算操作。\r\n\r\n.. figure:: ../_static/chap1/2.2.png\r\n   :alt: \r\n\r\nExcel会自带数据纠错功能，点击黄色感叹号可以看到，将文本转出数字，或者使用\\ ``=VALUE()``\\ 函数将文本转成数字\r\n\r\n.. figure:: ../_static/chap1/2.3.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.1.2 文本\r\n^^^^^^^^^^\r\n\r\n文本为Excel中的常见格式，主要为文本字符串，例如下图就是典型的文本数据。当数据是文本类型时就可以完成文本数据相关操作。\r\n\r\n.. figure:: ../_static/chap1/2.4.png\r\n   :alt: \r\n\r\n\r\n\r\n2.1.3 日期\r\n^^^^^^^^^^\r\n\r\nExcel中的标准日期由年月日组成的数据，例如\\ ``2021/1/1``\\ ，同时日期又是很特殊的数值，在Excel里面日期最早是1900年1月1日，对应的数值为1，通过两日期相减可以得到日期相差的天数。需要注意的是如果是\\ ``2021-01-01``\\ 的数据就要看是否实际数据为\\ ``'2021/1/1'``\\ ，否则为文本型日期，需要进行转换才行。观察下图真假日期，可以发现真日期右对齐，假日期左对齐（内容跟显示的一致），真日期转格式可以看到单元格数据仍然是真日期格式（内容跟显示不一致）。\r\n\r\n.. figure:: ../_static/chap1/2.5.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.2 单元格格式\r\n~~~~~~~~~~~~~~\r\n\r\n设置单元格格式可以点击单元格后，\\ **右键-设置单元格格式**\\ 选项，或者按快捷键\\ **ctrl+1**\\ ，或者通过工具栏：\\ **开始-数字**\\ 去快速做更改。单元格可以设置的格式类型包括：\r\n\r\n-  数字：调整数值格式或者日期格式。\r\n\r\n-  对齐：调整对齐方式。\r\n\r\n-  字体：更改字体、字型、字号等。\r\n\r\n-  边框：单元格边框设置。\r\n\r\n-  填充：填充单元格背景颜色，标注数据经常使用。\r\n\r\n-  保护：锁定单元格或者隐藏公式。\r\n\r\n\r\n\r\n2.2.1 数值格式\r\n^^^^^^^^^^^^^^\r\n\r\n设置单元格格式分类选择数值，对数值设置小数点一般保留两位，同时能让数值对齐，使用千分位分隔符能更容易观察数值大小。\r\n\r\n\r\n\r\n2.2.2 文本格式\r\n^^^^^^^^^^^^^^\r\n\r\n文本常见的设置格式用于对文本进行加单引号、双引号或者逗号的情况。\r\n\r\n例如对真假日期中的假日期增加单引号\r\n\r\n.. figure:: ../_static/chap1/2.7.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.2.3 日期格式\r\n^^^^^^^^^^^^^^\r\n\r\n通过日期分类调整日期格式为年-月-日，需要注意的是文本型的日期格式无法调整，而数值是可以调整为日期。\r\n\r\n.. figure:: ../_static/chap1/2.8.png\r\n   :alt: \r\n\r\n\r\n\r\n2.3 转换单元格数据\r\n~~~~~~~~~~~~~~~~~~\r\n\r\n\r\n\r\n2.3.1 数值和文本相互转换\r\n^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n打开\\ ``data/chap1/2.1.xlsx``\\ ，将数值转换成文本\r\n\r\n.. figure:: ../_static/chap1/2.9.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.3.2 日期和文本相互转换\r\n^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n打开\\ ``data/chap1/2.1.xlsx``\\ ，将不规范日期转成规范日期，然后转成文本\r\n\r\n.. figure:: ../_static/chap1/2.10.gif\r\n   :alt: \r\n\r\n\r\n\r\n练习\r\n----\r\n\r\n1. 使用Excel数据导入功能，完成\\ ``data/chap1/Titanic_normal.csv``\\ 和\\ ``data/chap1/Titanic_train.txt``\\ 数据导入\r\n\r\n2. 完成\\ ``data/chap1/2.1.xlsx``\\ 中案例1-4中的问题\r\n\r\n\r\n"
  },
  {
    "path": "source/Content/chap10.rst",
    "content": "\r\n\r\n第十章Excel看板\r\n===============\r\n\r\n   数据看板作为数据动态展示的一种重要方式，被广泛的应用于各个领域，因此本节根据1个案例讲解使用Excel制作数据看板的过程，以期起到抛砖引玉的效果，在学习技能的同时也将其应用到实践的工作中\r\n\r\n\r\n\r\n1.业务背景\r\n==========\r\n\r\n打开\\ ``data/chap10/10.1.xlsx``\\ 中的数据源，这是某厂家在淘宝、拼多多、京东这3个电商销售平台的销售数据，现在你是这个厂家的员工，老板想知道商品在不同渠道的每周销售情况，想请你做一个数据周报看板。\r\n\r\n.. figure:: ../_static/chap10/10.1.png\r\n   :alt: \r\n\r\n\r\n\r\n2.实现分析\r\n==========\r\n\r\n1.既然是周报看板，需要确定每天日期所在周数与每周的第几天\r\n\r\n2.根据确定周数对销售金额进行汇总\r\n\r\n3.对销售金额进行动态展示\r\n\r\n\r\n\r\n3.实现过程\r\n==========\r\n\r\n\r\n\r\n1.确定周数\r\n----------------\r\n\r\n确定日期所在的周数用【WEEKNUM函数】，确定日期是第几周可以用【WEEKDAY函数】\r\n\r\n在H2单元格输入 **=WEEKNUM(B2,2)**\r\n\r\n在I2单元格输入 **=WEEKDAY(B2,11)** （如果想得到中文星期几 可以输入\r\n=TEXT(B2,\"aaaa\")）\r\n\r\n.. figure:: ../_static/chap10/10.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.销售基础整理\r\n------------------\r\n\r\n新建1个工作表，确定动态数据的变量为周数，并确定需要计算的指标，本周开始日期、介绍日期、销售额、订单数、上周销售额、上周订单数、销售额变化、订单数变化\r\n\r\n使用公式求解相关的基础数据\r\n\r\n在C3单元格输入公式\\ ``=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001)``\r\n\r\n如果发现数据日期变成了44200，显然就是格式不正确，只需要将单元格的格式转为日期即可\r\n\r\n.. figure:: ../_static/chap10/10.3.gif\r\n   :alt: \r\n\r\n在C4单元格输入公式\\ ``=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001,0,0,-1)``\r\n\r\n.. figure:: ../_static/chap10/10.4.gif\r\n   :alt: \r\n\r\n对于本周的销售额，可以使用SUMIFS函数获得 ，在C5单元格中输入\r\n\r\n``=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)``\r\n\r\n.. figure:: ../_static/chap10/10.5.gif\r\n   :alt: \r\n\r\n对于本周的订单数，可以使用COUNTIFS函数获得 ，在C6单元格中输入\r\n\r\n``=COUNTIFS(数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)``\r\n\r\n.. figure:: ../_static/chap10/10.6.gif\r\n   :alt: \r\n\r\n对于上周开始日期，可以使用本周开始日期-7，在E3单元格中输入\r\n\r\n``=C3-7``\r\n\r\n对于上周结束日期，可以使用本周结束日期-7，在E4单元格中输入\r\n\r\n``=C4-7``\r\n\r\n对于上周销售额，可以使用SUMIFS函数获得 ，在E5单元格中输入\r\n\r\n``=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$E$3,数据源!$B:$B,\"<=\"&$E$4)``\r\n\r\n对于上周的订单数，可以使用COUNTIFS函数获得 ，在E6单元格中输入\r\n\r\n``=COUNTIFS(数据源!$B:$B,\">=\"&$E$3,数据源!$B:$B,\"<=\"&$E$4)``\r\n\r\n.. figure:: ../_static/chap10/10.7.gif\r\n   :alt: \r\n\r\n对于相比上周销售额变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C7单元格中输入\r\n\r\n``=TEXT(((C5-E5)/E5)*100,\"0.00\")&\"%\"``\r\n\r\n对于相比上周订单数变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C8单元格中输入\r\n\r\n``=TEXT(((C6-E6)/E6)*100,\"0.00\")&\"%\"``\r\n\r\n当然也可以直接设置单元格格式为【百分比】\r\n\r\n.. figure:: ../_static/chap10/10.8.gif\r\n   :alt: \r\n\r\n当然这个【相比上周销售额变化】指标是一个比较重要的指标，可以对这个指标进行格式设置\r\n\r\n选择C6单元格并设置条件格式，判断C5单元格与E5单元格值的大小，如果C5>=E5，那么C6单元值为红，否则为绿色\r\n\r\n.. figure:: ../_static/chap10/10.9.gif\r\n   :alt: \r\n\r\n\r\n\r\n3.周销售数据变化趋势\r\n------------------------\r\n\r\n对于每周的数据需要做一个统计，并对每周数据的下单金额与下单数进行整理\r\n\r\n装B13-B19单元格输入星期数\r\n\r\n现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式\r\n\r\n``=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4,数据源!$I:$I,\"=\"&'计算过程'!B13)``\r\n\r\n现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式\r\n\r\n``=COUNTIFS(数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4,数据源!$I:$I,\"=\"&'计算过程'!B13)``\r\n\r\n.. figure:: ../_static/chap10/10.10.gif\r\n   :alt: \r\n\r\n接下来就对数据进行可视化展示\r\n\r\n.. figure:: ../_static/chap10/10.11.gif\r\n   :alt: \r\n\r\n\r\n\r\n4.周销售渠道整理\r\n--------------------\r\n\r\n对于每周的数据需要做一个统计，并对每周数据的渠道分布进行整理\r\n\r\n装G3-G6单元格分别输入产品的电商渠道京东、拼多多、淘宝\r\n\r\n在H3单元格中输入SUMIFS函数求不同渠道的销售金额，并进行向下填充\r\n\r\n``=SUMIFS(数据源!$F:$F,数据源!$E:$E,G3,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)``\r\n\r\n在I3单元格中输入COUNTIF函数求不同渠道的下单数，并进行向下填充\r\n\r\n``=COUNTIFS(数据源!$E:$E,G3,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)``\r\n\r\n.. figure:: ../_static/chap10/10.12.gif\r\n   :alt: \r\n\r\n接下来就对数据进行可视化展示，将图片进行简单的美化，就可以得到下单金额饼状图与下单数的柱状图\r\n\r\n.. figure:: ../_static/chap10/10.13.gif\r\n   :alt: \r\n\r\n\r\n\r\n5.看板绘制\r\n--------------\r\n\r\n完成了前面的全部计算后，接下来的工作就是将绘制的图结合在一起进行展示\r\n\r\n首先是上述计算的数据与绘图的信息集合到一起\r\n\r\n.. figure:: ../_static/chap10/10.13.png\r\n   :alt: \r\n\r\n其中本周的总销量、本周订单数、当前周数、开始日期以及结束日期都是引用计算过程中的值\r\n\r\n本周总销量的值为\\ ``=计算过程!$C$5``\r\n\r\n本周总订单的值为\\ ``=计算过程!$C$6``\r\n\r\n本周周数的值为\\ ``=计算过程!$C$2``\r\n\r\n本周的开始日期为\\ ``=计算过程!$C$3``\r\n\r\n本周的结束日期为\\ ``=计算过程!$C$4``\r\n\r\n因为本周的变化情况带有条件单元格式，因此不能直接引用，需要将其转化成链接图片的形式，具体操作为\r\n\r\n1.复制C7单元格\r\n\r\n2.粘贴选择链接的图片\r\n\r\n.. figure:: ../_static/chap10/10.14.png\r\n   :alt: \r\n\r\n对于本周的周数，需要设置按钮方便调节\r\n\r\n1.选择开发工具\r\n\r\n2.选择插入，选择数值调节按钮\r\n\r\n3.选择设置控件格式\r\n\r\n4.设置控件的对应参数\r\n\r\n.. figure:: ../_static/chap10/10.15.png\r\n   :alt: \r\n\r\n到这里就完成了看板90%的步骤，点击按钮，能看动态展示看板的相关数据\r\n\r\n.. figure:: ../_static/chap10/10.16.png\r\n   :alt: \r\n\r\n最后就对看板进行相应的美化，在看板美化过程中也参考了其他EXCEL教程中的配色，因此最后的看板展示效果为\r\n\r\n.. figure:: ../_static/chap10/10.17.png\r\n   :alt: \r\n\r\n练习\r\n----\r\n1.完成数据看板，需要通过按钮调节周数，同时销售额，订单数以及数据图进行变化\r\n\r\n思考\r\n====\r\n\r\n1.为什么每周的介绍日期和开始日期都可以使用XLOOKUP获得\r\n\r\n2.为什么每周1的下单金额之和可以通过SUMIF函数求\r\n\r\n3.为什么设置按钮调节每周的数据变化，这样有什么好处\r\n\r\n\r\n\r\n后记\r\n====\r\n\r\n行文至此，以上就是Free-excel教程的全部内容，整个教程的编写过程中也广泛的参阅了各式各样的Excel教程，尽力让本教程变得轻松易学，希望读者能掌握相关的Excel技巧，并能灵活的运用到工作中，面对数字化社会，数据将渗透到生活的点点滴滴，拥抱数字，同时也拥抱变化。\r\n\r\n--作者：牧小熊，Datawhale成员，数据分析师\r\n"
  },
  {
    "path": "source/Content/chap2.rst",
    "content": ".. _header-n0:\r\n\r\n第二章 Excel的快捷操作\r\n======================\r\n\r\n   在本节中我们将了解Excel中的各种快捷操作，目前已知的Excel快捷操作键有230个，本篇重点介绍那些常用的Excel快捷操作键。\r\n\r\n.. _header-n2:\r\n\r\n1.Excel快捷操作简介\r\n-------------------\r\n\r\n.. _header-n9:\r\n\r\n1.1文件相关\r\n~~~~~~~~~~~\r\n\r\n-  ``Ctrl`` + ``N`` 创建一个新的Excel工作簿\r\n\r\n-  ``Ctrl`` + ``w`` 关闭当前工作簿\r\n\r\n-  ``Ctrl`` + ``S`` 保存当前的Excel工作簿\r\n\r\n-  ``F12`` 将当前文件进行另存为\r\n\r\n-  ``Ctrl`` + ``p`` 打印当前工作表\r\n\r\n.. _header-n29:\r\n\r\n1.2通用快捷键\r\n~~~~~~~~~~~~~\r\n\r\n-  ``Ctrl`` + ``z`` 撤销当前操作\r\n\r\n-  ``Ctrl`` + ``Y`` 恢复撤销，可以用这个快捷键恢复被撤消的操作\r\n\r\n-  ``Ctrl`` + ``C`` 复制所选单元格\r\n\r\n-  ``Ctrl`` + ``x`` 剪切所选单元格\r\n\r\n-  ``Ctrl`` + ``v`` 粘贴所选单元格\r\n\r\n-  ``Ctrl`` + ``F`` 弹出查找和替换对话框\r\n\r\n-  ``Ctrl`` + ``G`` 显示定位对话框\r\n\r\n.. _header-n50:\r\n\r\n1.3表格选择\r\n~~~~~~~~~~~\r\n\r\n-  ``Ctrl`` + ``A`` 全选表格\r\n\r\n-  ``Ctrl`` + ``→`` 移动到数据区域的右边缘\r\n\r\n-  ``Ctrl`` + ``←`` 移动到数据区域的左边缘\r\n\r\n-  ``Ctrl`` + ``↑`` 移动到数据区域的上边缘\r\n\r\n-  ``Ctrl`` + ``↓`` 移动到数据区域的下边缘\r\n\r\n.. _header-n72:\r\n\r\n1.4单元格编辑\r\n~~~~~~~~~~~~~\r\n\r\n-  ``F2`` 编辑当前单元格（跟双击单元格效果一致）\r\n\r\n-  ``Alt`` + ``Enter`` 在当前单元格内换行 (直接按\r\n   ``Enter``\\ 会跳转到下一行)\r\n\r\n-  ``Enter`` 下移一个单元格\r\n\r\n-  ``Shift`` + ``Enter`` 上移一个单元格\r\n\r\n-  ``Tab`` 右移一个单元格\r\n\r\n-  ``Shift`` + ``Tab`` 左移一个单元格\r\n\r\n-  ``Ctrl`` + ``Enter`` 输入完成，并停留在当前单元格\r\n\r\n-  ``Ctrl`` + ``;``\\ （分号） 输入当前日期（显示为年/月/日）\r\n\r\n-  ``Ctrl`` +\\ ``Shift`` + ``:`` 输入当前时间 (显示为小时/分钟)\r\n\r\n-  ``Ctrl`` + ``E`` 快速填充\r\n\r\n.. _header-n99:\r\n\r\n1.5Excel格式化\r\n~~~~~~~~~~~~~~\r\n\r\n-  ``Ctrl`` + ``1``\\ （数字1） 设置单元格格式\r\n\r\n-  ``Ctrl`` + ``B`` 加粗或取消加粗\r\n\r\n-  ``Ctrl`` + ``i`` 加斜体或取消斜体\r\n\r\n.. _header-n116:\r\n\r\n1.6Excel公式\r\n~~~~~~~~~~~~\r\n\r\n-  ``F4`` 绝对引用和相对引用切换\r\n\r\n-  ``Alt``\\ +\\ ``=`` 自动插入求和公式\r\n\r\n.. _header-n3:\r\n\r\n2.Excel快捷操作实践\r\n-------------------\r\n\r\n.. _header-n126:\r\n\r\n2.1自动插入求和公式\r\n~~~~~~~~~~~~~~~~~~~\r\n\r\n打开文件\\ ``data/chap2/2.1.xlsx``\\ ，点击【案例1】\r\n\r\n1.选中案例1中的表格区域（\\ **注意这里要把汇总的那一行也选上**\\ ）\r\n\r\n2.使用快捷键\\ ``Alt``\\ +\\ ``=``\r\n，自动插入求和公式，可以看到，对上述的Excel表格区域进行自动求和。\r\n\r\n.. figure:: ../_static/chap2/2.1.gif\r\n   :alt: \r\n\r\n.. _header-n4:\r\n\r\n2.2自动进行列差异比对\r\n~~~~~~~~~~~~~~~~~~~~~\r\n\r\n打开文件\\ ``data/chap2/2.2.xlsx``\\ ，点击【案例1】，我们现在的任务是找到1月和2月客户数不同的区域，如何快速定位？\r\n\r\n1.选中需要进行列差异比对的区域，注意选择顺序从左往右\r\n\r\n2.使用快捷键\\ ``ctrl``\\ +\\ ``\\``\r\n(**注意不是\"/\"**)，可以快速定位到区域4、区域8以及区域10所对应的客户数不同\r\n\r\n3.选择填充颜色，即可快速显示两列的差异\r\n\r\n注意这里的选择方向，从右往左选择，那么默认最右边为参考标准，其他列的数据可参考标准比较，如果从左往右选择，那最左边就是参考标准，其他的操作同上。\r\n\r\n.. figure:: ../_static/chap2/2.2.gif\r\n   :alt: \r\n\r\n.. _header-n137:\r\n\r\n2.3自动填充\r\n~~~~~~~~~~~\r\n\r\n在excel中很多重复、繁琐的工作由数据提取和数据合并这类问题造成，\\ **2013年以后的Excel**\\ 支持智能填充，能灵活的解决这类问题。需要注意的是，自动填充的数据需要是同一个规范数据才可以完成自动填充。\r\n\r\n打开文件\\ ``data/chap2/2.3.xlsx``\\ ，点击【案例1】，需要提取客户的手机号\r\n\r\n1.手动提取客户1的手机号，并输入到【B2】\r\n\r\n2.选择需要快速填充的列，也就是【B2-B11】\r\n\r\n3.按\\ ``ctrl``\\ +\\ ``E``\\ 进行自动填充\r\n\r\n.. figure:: ../_static/chap2/2.3.gif\r\n   :alt: \r\n\r\n.. _header-n167:\r\n\r\n练习\r\n----\r\n\r\n1.完成\\ ``data/chap2/2.1.xlsx``\\ 工作簿中的【案例2】【案例3】的快捷键自动求和任务\r\n\r\n2.完成\\ ``data/chap2/2.2.xlsx``\\ 工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）\r\n\r\n3.完成\\ ``data/chap2/2.3.xlsx``\\ 工作簿中的【案例2】【案例3】【案例4】的填充任务\r\n"
  },
  {
    "path": "source/Content/chap3.rst",
    "content": ".. _header-n0:\r\n\r\n第三章 Excel的表合并\r\n====================\r\n\r\n   当遇到需要将多个表的行记录合并在一起的时候，我们一般会手动复制粘贴，这会带来很多重复繁琐的操作，并且容易出错，可以使用Excel的合并计算工具来快速完成。\r\n\r\n.. _header-n4:\r\n\r\n1.多表行合并\r\n------------\r\n\r\n打开文件\\ ``data/chap3/3.1.xlsx``\\ ，点击【案例1】可以看到有3个消费表格，每个客户的消费金额不同，现在需要你统计每个客户在消费的总金额。\r\n\r\n一般的操作方法是将这3个数据复制粘贴，那么有没有更加优雅的方法呢？这里推荐使用合并计算\r\n\r\n**1.选择需要汇总的单元格起点**\r\n\r\n**2.选择Excel中的数据栏**\r\n\r\n**3.找到数据栏中的合并计算块**\r\n\r\n**4.选择合并计算函数中的求和**\r\n\r\n**5.点击引用位置右侧的引用项**\r\n\r\n**6.选择第一个数据表所在的范围**\r\n\r\n**7.点击添加**\r\n\r\n**8.将3个数据表添加到所有引用位置**\r\n\r\n**9.选择标签位置信息**\r\n\r\n**10.点击完成**\r\n\r\n可以看到完成了所有客户消费金额的求和计算~\r\n\r\n.. figure:: ../_static/chap3/3.1.gif\r\n   :alt: \r\n\r\n.. _header-n19:\r\n\r\n2.多表列合并\r\n------------\r\n\r\n打开文件\\ ``data/chap3/3.1.xlsx``\\ ，点击【案例2】可以看到有3个不同的消费表格，每个客户的消费金额不同，现在需要你统计每个客户在3个不同消费的总金额。\r\n\r\n使用合并计算选择3个不同项目的数据区域\r\n\r\n.. figure:: ../_static/chap3/3.2.gif\r\n   :alt: \r\n\r\n.. _header-n23:\r\n\r\n练习\r\n----\r\n\r\n1.选择\\ ``data/chap3/3.1.xlsx``\\ 工作簿中的【案例1】得到不同客户的消费次数\r\n\r\n2.选择\\ ``data/chap3/3.1.xlsx``\\ 工作簿中的【案例2】得到不同客户的不同项目的消费次数\r\n"
  },
  {
    "path": "source/Content/chap4.rst",
    "content": ".. _header-n0:\r\n\r\n第四章 Excel函数-逻辑判断\r\n=========================\r\n\r\n   Excel中有着非常丰富的函数，这些函数能大幅度提升我们的工作效率，本节中会重点介绍一些常用的Excel函数。\r\n\r\n.. _header-n4:\r\n\r\n1.if函数\r\n--------\r\n\r\n打开文件\\ ``data/chap4/4.1.xlsx``\\ ，点击【案例1】，现在需要对客户的原始得分进行校正，当客户的原始得分为负时，校正为0\r\n\r\n针对上面遇到的问题，可以使用IF函数，Excel函数用法如下\r\n\r\n【IF函数】\\ **=IF(判断条件，如果满足则，如果不满足则)**\r\n\r\n针对遇到的问题，那么在C2单元格中输入\r\n\r\n**=IF(B2<0,0,B2)** ----> **注意，这里的逗号要使用英文的逗号**\r\n\r\n那么这个公式是什么意思呢？判断B2单元格是不是小于0，如果是，则C2单元格为0，如果不是则返回B2单元格的值，可以看到C2单元格实际返回值为0，这是因为B2的值为-1，满足判断条件，因此C2单元格返回为0\r\n\r\n那么如何进行公式批量填充呢？\r\n\r\n这里推荐一个比较优雅的方法\r\n\r\n1.在C2单元格写Excel公式\r\n\r\n2.选择需要填充公式的区域，包括C2单元格\r\n\r\n3.点击C2单元格，进入公式编辑状态\r\n\r\n4.使用快捷键\\ ``CTRL``\\ +\\ ``Enter``\\ 进行批量填充\r\n\r\n.. figure:: ../_static/chap4/4.1.gif\r\n   :alt: \r\n\r\n打开文件\\ ``data/chap4/4.1.xlsx``\\ ，点击【案例2】，现在有客户的1月、2月消费金额，如果客户2个月的消费金额都超过400，那么就认为这个客户为高消费客户。\r\n\r\n这里与5.1中的案例不同，需要IF函数与逻辑函数进行配合\r\n\r\n【AND函数】\\ **=AND(条件1，条件2，...)**\r\n\r\n【OR函数】\\ **=OR(条件，条件2，...)**\r\n\r\nAND函数，需要所有条件全部满足，才返还TRUE，OR函数，所有条件中只要有1个条件满足，就返还TRUE\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=IF(AND(B2>400,C2>400),\"高消费客户\",\"\")** -----> 这里\"\"代表返回空值\r\n\r\n随后对整列的函数进行填充，具体填充方法见5.1中详解\r\n\r\n.. figure:: ../_static/chap4/4.2.gif\r\n   :alt: \r\n\r\n.. _header-n27:\r\n\r\n2.ifs函数\r\n---------\r\n\r\n打开文件\\ ``data/chap4/4.1.xlsx``\\ ，点击【案例3】，有员工的相关考核分，考核得分在4.8分以上，优秀；考核得分在3.5-4.7分，良好；考核得分在0-3.4分，一般。\r\n\r\n这里可以使用IFS函数，具体用法为\r\n\r\n【IFS函数】=IFS(判断条件1,如果满足条件1则,判断条件2,如果满足条件2则)\r\n\r\n针对遇到的问题，则可以在C2单元格输入\r\n\r\n**=IFS(B3<=3.4,\"一般\",AND(B3>=3.5,B3<=4.7),\"良好\",B3>=4.8,\"优秀\")**\r\n\r\n对整列数据进行函数填充\r\n\r\n.. figure:: ../_static/chap4/4.3.gif\r\n   :alt: \r\n\r\n.. _header-n35:\r\n\r\n3.sumif函数\r\n-----------\r\n\r\n   在Excel数据任务处理中，会遇到大量的求和的任务，SUMIF函数在求和任务中具有天然优势，因此在本节中将详细的讲解SUMIF函数的相关用法\r\n\r\n【SUMIF函数】=SUMIF(条件区域，求和条件，[实际求和区域])\r\n--->实际求和区域位选择条件\r\n\r\n.. _header-n39:\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例1】现在有几名同学的考试成绩，现在想统计数学成绩在90分以上的成绩之和\r\n\r\n那么可以输入如下的函数公式\r\n\r\n**=SUMIF(B:B,\">=90\",B:B)**\r\n\r\n第一个参数为条件区域，因为要判断数学成绩，所以这里选择B列，当然这里也可以修改为实际的区域B2:B12\r\n\r\n第二个参数为判定条件，判定条件为大于等于90\r\n\r\n第三个参数为实际求和区，这是选填参数\r\n\r\n.. figure:: ../_static/chap4/4.4.gif\r\n   :alt: \r\n\r\n.. _header-n47:\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例2】，现在想统计小米系列的产品销售额\r\n\r\nSUMIF函数支持模糊匹配，因此我们输入如下公式\r\n\r\n**=SUMIF(B:B,\"小米*\",C:C)**\r\n\r\n使用小米*匹配所有的小米系产品\r\n\r\n.. figure:: ../_static/chap4/4.5.gif\r\n   :alt: \r\n\r\n.. _header-n53:\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例3】，现在想统计1月-3月的预计销售额预计销售和实际销售额\r\n\r\n因此可以巧用SUMIF函数，将条件区域进行横向选择，条件选择自己需要的字段，因此输入如下两个函数公式，并向下拖拽填充其他位置\r\n\r\n``=SUMIF($B$2:$G$2,I$2,B3:G3)``\r\n\r\n``=SUMIF($B$2:$G$2,H$2,B3:G3)``\r\n\r\n``$``\\ 在Excel中是绝对引用，公式中引用的单元格如果使用绝对引用\r\n``$``\\ ，那么向下拖拽的过程中，这个单元格不会增加。\r\n\r\n.. figure:: ../_static/chap4/4.6.png\r\n   :alt: \r\n\r\n例如，在J3单元格中输入\\ ``=C3``\\ ，在K3单元格中输入\\ ``=$C$3``\\ 并向下拖拽进行公式填充，观察区别\r\n\r\n发现，如果使用绝对引用，引用格式值并不会随着公式的拖拽而改变，这就是绝对引用与非绝对引用的区别。\r\n\r\n.. figure:: ../_static/chap4/4.7.gif\r\n   :alt: \r\n\r\n.. _header-n63:\r\n\r\n案例4\r\n~~~~~\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例4】，现在需要统计语文成绩在80分以上，90分以下同学的数学成绩之和\r\n\r\n那么遇到这种情况应该怎么处理呢？相比于前面的案例，这里有2个筛选条件，而SUMIF函数无法满足需求，这里可以使用SUMIFS函数\r\n\r\n【SUMIFS函数】=SUMIFS（条件区域1，条件1，条件区域2，条件2）\r\n\r\n因此写如下函数公式\r\n\r\n**=SUMIFS(C2:C13,B2:B13,\">80\",B2:B13,\"<90\")**\r\n\r\n因为要求数学成绩，所以第一个参数为C2:C13，而筛选条件为语文，因此条件区域为B2:B13\r\n\r\n.. figure:: ../_static/chap4/4.8.gif\r\n   :alt: \r\n\r\n.. _header-n71:\r\n\r\n4.countifs函数\r\n--------------\r\n\r\n打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例5】，现在需要统计语文成绩超过60，数学成绩超过65，英语成绩超过70的同学个数\r\n\r\n那么遇到这种情况应该怎么处理呢？其实countifs函数与sumifs函数用法非常接近，求满足所有条件的个数\r\n\r\n【COUNTIFS函数】=COUNTIFS（条件区域1，条件1，条件区域2，条件2）\r\n\r\n因此写如下函数公式\r\n\r\n**=COUNTIFS(B2:B13,\">60\",C2:C13,\">65\",D2:D13,\">70\")**\r\n\r\n.. figure:: ../_static/chap4/4.9.gif\r\n   :alt: \r\n\r\n.. _header-n78:\r\n\r\n练习\r\n----\r\n\r\n1.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例1】，将客户原始得分为1以下的校正为0\r\n\r\n2.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为\"高消费客户\"\r\n\r\n3.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的务。\r\n\r\n4.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例1】语文成绩在80分以上的同学成绩之和\r\n\r\n5.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例2】统计所有苹果系列产品的销售额\r\n\r\n6.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例6】完成所有手机的销售额求和\r\n"
  },
  {
    "path": "source/Content/chap5.rst",
    "content": "\r\n\r\n第五章 Excel函数-文本函数\r\n=========================\r\n\r\n\r\n\r\n1.Text函数\r\n----------\r\n\r\nText函数可以将数值转换为指定格式的文本，其语法格式为TEXT(value,format_text)\r\n\r\n【TEXT函数】=TEXT(值，自定义数字格式代码)\r\n\r\n\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开\\ ``data/chap5/5.1.xlsx``\\ ，点击【案例1】，将客户的消费日期和消费金额转成大写\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(C2,\"[DBNUM2]\")** ----> **注意，这里的逗号要使用英文的逗号**\r\n\r\n在E2单元格中输入\r\n\r\n**=TEXT(A2,\"[DBNUM1]yyyy年m月d日\")**\r\n\r\nDBNUM1和DBNUM2为2种常见的中文格式，一般金额用DBNUM2，日期用DBNUM1\r\n\r\n.. figure:: ../_static/chap5/5.1.gif\r\n   :alt: \r\n\r\n\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开\\ ``data/chap5/5.1.xlsx``\\ ，点击【案例2】，将客户的消费日期转换为周次，即星期几\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(A2,\"aaaa\")**\r\n\r\n.. figure:: ../_static/chap5/5.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开\\ ``data/chap5/5.1.xlsx``\\ ，点击【案例3】，取客户消费的年、月、日\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=TEXT(A2,\"yyyy\")** 或者 **=TEXT(A2,\"e\")**\r\n\r\n在E2单元格中输入\r\n\r\n**=TEXT(A2,\"m\")** 或者 **=TEXT(A2,\"mm\")** 注意.这2种格式是有区别的\r\n\r\n在F2单元格中输入\r\n\r\n**=TEXT(A2,\"d\")** 或者 **=TEXT(A2,\"dd\")**\r\n\r\n.. figure:: ../_static/chap5/5.3.gif\r\n   :alt: \r\n\r\n\r\n\r\n2.mid函数\r\n---------\r\n\r\n打开\\ ``data/chap5/5.2.xlsx``\\ ，点击【案例1】，提取身份证中的生日，并转换成2022年12月4日这种格式\r\n\r\n面对这个问题，可以使用mid函数提取生日\r\n\r\n【MID函数】=MID(text,start\\ *num,num*\\ chars)\r\n\r\ntest:为要提取的文本字符串\r\n\r\nstart_num:为文本中要提取的第一个字符串的位置\r\n\r\nnum_chars为提取字符串的长度\r\n\r\n因此可以在B2中输入 因为生日是8位数字，所以最后一个参数填8\r\n\r\n**=MID(A2,7,8)**\r\n\r\n在C2中输入格式化的生日\r\n\r\n**=TEXT(MID(A2,7,8),\"0000年00月00日\")**\r\n\r\n问题：这里TEXT函数格式为什么没有使用yyyy年mm月dd日 这种格式？\r\n\r\n因为MID(A2,7,8)提取出来的是文本，不是日期，因此Excel无法识别日期的年月，所以用数字格式进行代替\r\n\r\n.. figure:: ../_static/chap5/5.4.gif\r\n   :alt: \r\n\r\n文本提取中相似的函数有LEFT，RIGHT\r\n\r\nLEFT函数，以字符串左侧为起始位置，返回指定数量的字符\r\n\r\n【LEFT函数】=MID(text,,num_chars)\r\n\r\n text:要提取的字符串或单元格引用；\r\n num_chars:要提取的字符数量\r\n\r\nRIGHT函数，从字符串右侧首字符开始，从右向左提取指定的字符，其功能和LEFT函数完全一样，只是方向不同\r\n\r\n【RIGHT函数】=MID(text,num_chars)\r\n\r\n text:要提取的字符串或单元格引用；\r\n num_chars:要提取的字符数量\r\n\r\n\r\n\r\n3.replace函数\r\n-------------\r\n\r\n打开\\ ``data/chap5/5.2.xlsx``\\ ，点击【案例2】，现在需要将Excel表格打印，为了不泄露客户电话号码，需要将电话后5位进行屏蔽\r\n\r\nREPLACEI函数作用：把一个文本字符串，人为指定一个位置，用定个数新字符进行替换。\r\n\r\n【REPLACEI函数】=REPLACEI(old\\ *text,start*\\ num,num\\ *chars,new*\\ text)\r\n\r\nold_text:需要替换的文本\r\n\r\nstart_num:需要替换文本的开始位置\r\n\r\nnum_chars:替换文本的长度\r\n\r\nnew_text:替换内容\r\n\r\n因此可以在B2单元格中输入\r\n\r\n**=REPLACE(A2,11,5,\"#####\")**\r\n\r\n.. figure:: ../_static/chap5/5.5.gif\r\n   :alt: \r\n\r\n\r\n\r\n练习\r\n----\r\n\r\n1.完成\\ ``data/chap5/5.1.xlsx``\\ 工作簿中的【案例1-3】\r\n\r\n2.完成\\ ``data/chap5/5.2.xlsx``\\ 工作簿中的【案例1】中身份证后6位加密\r\n"
  },
  {
    "path": "source/Content/chap6.rst",
    "content": ".. _header-n0:\r\n\r\n第六章 Excel函数-查找函数\r\n=========================\r\n\r\n   VLOOKUP是经典的查找与引用函数，在Excel数据查询任务中有多种用途。XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，\\ **非常推荐大家使用XLOOKUP函数**\\ ，如果自己的电脑Excel不是最新版不支持XLOOKUP函数，也可以来学习VLOOKUP函数。\r\n\r\n..\r\n\r\n   在本节教程中会重点介绍XLOOKUP函数的相关用法，对于VLOOKUP不好解决，XLOOKUP能解决的问题放在了【案例5】、【案例6】、【案例7】\r\n\r\n.. _header-n6:\r\n\r\n1.VLOOKUP\r\n---------\r\n\r\n.. _header-n7:\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，点击【案例1】，根据岗位编号，得到该员工的应发工资\r\n\r\n针对这个问题，可以使用VLOOKUP函数\r\n\r\n【VLOOKUP函数】\\ **=VLOOKUP（要查找的值，查找区域，要返回的结果在查找区域的第几列，精确匹配或近似匹配）**\r\n\r\n**在L3单元格中输入如下公式**\r\n\r\n**=VLOOKUP(K2,A2:H50,8,FALSE)**\r\n\r\n因为应发工资在整个单元格中的第8列，所以第3个参数为8，第4个参数选择TRUE或者FALSE，TRUE为模糊匹配，FALSE为精确匹配，因此第4个参数选择为FALSE，\r\n有的EXCEL版本第4个参数是0是精确查找，1是精确匹配，根据实际情况输入即可。\r\n\r\n.. figure:: ../_static/chap6/6.1.gif\r\n   :alt: \r\n\r\n.. _header-n15:\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，点击【案例2】，根据岗位编号，得到该员工的应发工资\r\n\r\n在案例2的任务中我们发现，这里的员工的编号位于最后一列，那么应该如何处理呢？\r\n\r\n如果按照正常的VLOOKUP的函数用法在L2单元格输入=VLOOKUP(K2,A2:H19,7,FALSE)，输入后会发现并没有安装预期得到应发工资。\r\n\r\n.. figure:: ../_static/chap6/6.2.gif\r\n   :alt: \r\n\r\n这是因为VLOOKUP函数的限制，必须查找的区域在被查找值的左侧，当然这里有其他的办法解决。\r\n\r\n这里用到了换列的小技巧，如果感兴趣可以看相关文章，\\ `Excel技巧：一文搞懂\r\nIF{1,0} 的用法 <https://zhuanlan.zhihu.com/p/377654196>`__\r\n\r\n那么在L2中输入如下函数\r\n\r\n**=VLOOKUP(K2,IF({1,0},H2:H19,G2:G19),2,FALSE)**\r\n\r\n这个函数中，将G2:G17列与H2:H19列做成了一个临时数据组，并让这2列交换位置，这样G2:G19列就在临时数组中的第2列，因此VLOOKUP中第3个参数为2\r\n\r\n.. figure:: ../_static/chap6/6.3.gif\r\n   :alt: \r\n\r\n.. _header-n26:\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，点击【案例3】，根据性别与部门信息，获得员工编号\r\n\r\n案例3的任务与前面不同的是，无法只通过1个信息完全定位到员工编号，因此这里使用了一个技巧，在L3单元格中输入\r\n\r\n**=VLOOKUP(J2&K2,IF({1,0},C2:C20&D2:D20,A2:A20),2,0)**\r\n\r\n细心的同学可能发现了其中的技巧，就是将多个条件通过&连接成一个字符串，同时将待查找的数据也连接起来，从而通过这个连接的特殊字符来查找数据\r\n\r\n.. figure:: ../_static/chap6/6.4.gif\r\n   :alt: \r\n\r\n.. _header-n32:\r\n\r\n案例4\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，点击【案例4】，当不知道具体的信息，需要进行模糊查询\r\n\r\n那么如何使用VLOOKUP进行模糊查询呢？\r\n\r\n**=VLOOKUP(\"*\"&K2,A2:F20,2,0)**\r\n\r\nExcel中的通配符匹配规则见如下，因为DW为2个字符，我们选择\\*\r\n\r\n还记得第四章中的SUMIFS函数中的案例，计算小米系列的销量中，我们就使用了通配符\r\n\r\n.. figure:: ../_static/chap6/6.5.png\r\n   :alt:\r\n\r\n.. figure:: ../_static/chap6/6.6.gif\r\n   :alt:\r\n\r\n.. _header-n39:\r\n\r\n2 XLOOKUP\r\n---------\r\n\r\n   XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，\\ **非常推荐大家使用XLOOKUP函数**\\ ，如果不能支持这个函数也不用灰心，使用VLOOKUP函数也能完成绝大多数查询问题\r\n\r\n因为XLOOKUP函数功能非常强大，因此在本节中对函数进行讲解\r\n\r\n【XLOOKUP函数】\\ **==XLOOKUP(想要查找值, 想要在哪个数据区域中查找,\r\n要返回的数据区域，, [if\\ not\\ found], [match\\ mode], [search\\ mode])**\r\n\r\n第四参数（可选参数）：if\\ *not*\\ found，找不到结果，就返回第四参数，如果省略第四参数函数默认返回#N/A这个错误值\r\n\r\n第五参数（可选参数）：match_mode，指定匹配类型\r\n\r\n参数为：0 ，精确匹配，未找到结果，返回 #N/A。 这是默认选项。\r\n\r\n参数为：-1，近似匹配，未找到结果，返回下一个较小的项。\r\n\r\n参数为：1，近似匹配，未找到结果，返回下一个较大的项。\r\n\r\n参数为：2 ，通配符匹配\r\n\r\n第六参数（可选参数）：search_mode, 指定要使用的搜索模式\r\n\r\n参数为：1，从第一项开始执行搜索。 这是默认选项。\r\n\r\n参数为：-1，从最后一项开始执行反向搜索。\r\n\r\n参数为：2，根据 lookup_array 按升序排序的二进制搜索。\r\n如果未排序，将返回无效结果。\r\n\r\n参数为：-2，根据lookup_array 按降序排序的二进制搜索。\r\n如果未排序，将返回无效结果。\r\n\r\n.. _header-n55:\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例1】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(K2,A1:A50,H1:H50)**\r\n\r\n第1个K2 就是需要查询的岗位编号DW0005\r\n\r\n第2个参数为A1:A50，也就是要查哪一列，\\ **细心的同学已经注意到这里与VLOOKUP的不同**\r\n\r\n第3个参数就是需要返回的哪一列，也就是返回H列\r\n\r\n.. _header-n62:\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例2】\r\n\r\n我们在L2单元格中输入如下公式\r\n\r\n**=XLOOKUP(J2,H1:H19,G1:G19)**\r\n\r\n细心的同学就发现上面的公式中没有用到列的转换，这个公式的可读性非常强，这是就是XLOOKUP比VLOOKUP更加强大的地方\r\n\r\n.. _header-n67:\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例3】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(J2&K2,C1:C20&D1:D20,A1:A20)**\r\n\r\n在XLOOKUP中的多条件查找，只需要使用\\ **&**\\ ，将多个条件的信息连接起来即可，非常的方便\r\n\r\n.. _header-n72:\r\n\r\n案例4\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例4】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(\"*\"&K2,A2:A20,B2:B20,,2)**\r\n\r\n在使用XLOOKUP进行通配符查找事，需要指定第5个参数为2，即告诉XLOOKUP需要用通配符进行查找，这里是好VLOOKUP不同的地方\r\n\r\n具体通配符用法，可见1.4的讲解\r\n\r\n.. _header-n78:\r\n\r\n案例5\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例5】，姓名6在数据表中出现了2次，想知道他的最后销售额应该怎么操作？\r\n\r\n我们在I2单元格中输入如下公式\r\n\r\n**=XLOOKUP(H2,B1:B20,F1:F20,0,0,-1)**\r\n\r\n前3个参数想必大家已经很熟悉了，第4个参数是0，就是当XLOOKUP查找不到时，就返回0，第5个参数是0，就是选择精确匹配，第6个参数选择搜索参数，这里选择-1，从后开始往前搜索，因此这样设置就能获得正确结果。\r\n\r\n.. _header-n83:\r\n\r\n案例6\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例6】，这里有4个人，现在想知道这4个人的最大销售额\r\n\r\n**=MAX(XLOOKUP(H2:H5,B2:B20,F2:F20,0,0,1))**\r\n\r\n先通过XLOOKUP批量查找这4个人销售额，再通过MAX函数，求这4个人中的最大的销售额。\r\n\r\n.. figure:: ../_static/chap6/6.7.gif\r\n   :alt: \r\n\r\n.. _header-n88:\r\n\r\n案例7\r\n~~~~~\r\n\r\n打开文件\\ ``data/chap6/6.1xlsx``\\ ，一起来实现【案例7】，当数据集以横向形式时，如果查询到需要的数据\r\n\r\n在C2单元格中输入如下公式\r\n\r\n**=XLOOKUP(B6,B2:L2,B1:L1)**\r\n\r\n细心的同学发现，横向数据的查询方法与纵向数据并无太大区别\r\n\r\n.. figure:: ../_static/chap6/6.8.gif\r\n   :alt: \r\n\r\n.. _header-n94:\r\n\r\n练习\r\n----\r\n\r\n1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成\\ ``data/chap6/6.1xlsx``\\ 中的【案例1-4】\r\n"
  },
  {
    "path": "source/Content/chap7.rst",
    "content": ".. _header-n98:\r\n\r\n第七章 Excel函数-动态函数\r\n=========================\r\n\r\n   在本节中会讲解一些Excel更新的动态函数，从而帮助大家更好的掌握Excel的数据处理与分析\r\n\r\n.. _header-n102:\r\n\r\n1.FILTER函数\r\n------------\r\n\r\n   在工作中，我们需要根据指定的条件，将符合条件的所有记录从数据源表格式查找过来，一是可以用高级筛选。但高级筛选在查询下一个单位时\r\n   ，需要重新设置一次，很麻烦。二是用函数公式查询。典型的套路有：INDEX+SMALL+ROW、或者LOOKUP+COUNTIF+OFFSET，而这样的方法对初学者非常不友好，而EXCEL新更新的感受FILTER可以很好的解决这个问题。\r\n\r\n【FILTER】函数=FILTER（数据区域，筛选条件，[无满足条件的记录时返回的值]）\r\n\r\n接下来就看看FILTER的实际应用案例\r\n\r\n.. _header-n107:\r\n\r\n案例1\r\n~~~~~\r\n\r\n打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】\r\n\r\n获得湖北区的相关数据\r\n\r\n在J2单元格中输入\r\n\r\n**=FILTER(A2:G30,C2:C30=\"湖北区\")** 注意数据区域不包含标题\r\n\r\n生成的数据的动态数组（WPS由于不兼容动态数组，稍微和Excel有点区别，会产生数据溢出的情况）\r\n\r\n.. figure:: ../_static/chap7/7.1.gif\r\n   :alt: \r\n\r\n.. _header-n114:\r\n\r\n案例2\r\n~~~~~\r\n\r\n打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】\r\n\r\n如果在实际的任务中不需要所有的列，只需要其中的几行，那么应该怎么操作？\r\n\r\n可以在K2单元格中输入\r\n\r\n**=FILTER(F2:G30,C2:C30=\"湖北区\")**\r\n\r\n细心的同学就发现了这里与7.1.1中的不同，如果需要返回其中的几行，只需要将数据区域修改为自己需要的区域即可\r\n\r\n现在需要知道湖北区的最大销售金额是多少\r\n\r\n**=MAX(FILTER(F2:F30,C2:C30=\"湖北区\"))**\r\n\r\n.. figure:: ../_static/chap7/7.2.gif\r\n   :alt: \r\n\r\n.. _header-n123:\r\n\r\n案例3\r\n~~~~~\r\n\r\n打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】\r\n\r\nFILTER函数中的多条件筛选，使用\\ ``+``\\ 来表示或，使用\\ ``*``\\ 表示且\r\n\r\n例如，需要计算湖北区、湖南区大最大销售金额，那么函数公式为\r\n\r\n**=MAX(FILTER(F2:F30,(C2:C30=\"湖北区\")+(C2:C30=\"湖南区\")))**\r\n\r\n.. figure:: ../_static/chap7/7.3.gif\r\n   :alt: \r\n\r\n例如，需要计算湖北区商品2的最大销售金额，那么函数公式为\r\n\r\n**=MAX(FILTER(F2:F30,(C2:C30=\"湖北区\")*(D2:D30=\"商品2\")))**\r\n\r\n.. figure:: ../_static/chap7/7.4.gif\r\n   :alt: \r\n\r\n.. _header-n132:\r\n\r\n2.SUBTOTAL函数\r\n--------------\r\n\r\nExcel中有数据筛选非常好用，那么，如果想统计筛选后的结果应该怎么弄？例如想知道筛选后的销售总额\r\n\r\n打开\\ ``data/chap7/7.2xlsx``\\ 中的案例1，使用筛选选择不同的区，而SUM求和并没有变化\r\n\r\n如果想实现上述需求，可以使用【SUBTOTAL函数】\r\n\r\n【SUBTOTAL函数】=SUBTOTAL(功能函数,选择区域)\r\n\r\n功能函数\r\n\r\n数字 1-11 或 101-111，用于指定要为分类汇总使用的函数。 如果使用\r\n1-11，将包括手动隐藏的行，如果使用\r\n101-111，则排除手动隐藏的行；始终排除已筛选掉的单元格。详见附件1\r\n\r\n在J2单元格中输入如下公式\r\n\r\n**=SUBTOTAL(9,F2:F21)**\r\n\r\n可以看到SUBTOTAL对筛选的数据列进行正确的求和，而SUM无法跟随选择的数据列进行正确求和\r\n\r\n.. figure:: ../_static/chap7/7.5.gif\r\n   :alt: \r\n\r\n【附件1】\r\n\r\n.. figure:: ../_static/chap7/7.6.png\r\n   :alt: \r\n\r\n练习\r\n----\r\n1.打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】计算河北区中商品1的最小销售额\r\n\r\n2.打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额\r\n"
  },
  {
    "path": "source/Content/chap8.rst",
    "content": ".. _header-n0:\r\n\r\n第八章Excel数据可视化\r\n=====================\r\n\r\n   对于Excel中的数据可视化，相信各位读者应该能很熟练的使用，使用Excel汇总各种类型图，包括柱状图、折线图等等，从而让数据进行图形化展示。基于此，本节中对Excel中的数据作图部分不做展开讲解，本节更加偏重于讲解另一类辅助数据可视化的部分。\r\n\r\n.. _header-n4:\r\n\r\n1 条形图\r\n========\r\n\r\n打开\\ ``data/chap8/8.1xlsx``\\ 中的【案例1】，现在有湖北区2022/01/01的不同商品的销售额，怎么更加直观的展示销售额之间的差别呢？\r\n\r\n这里可以使用条形图对销售的金额进展可视化展示\r\n\r\n选择【开始】-->【条件格式】-->【数据条】\r\n\r\n.. figure:: ../_static/chap8/8.1.gif\r\n   :alt: \r\n\r\n通过对销售金额进行数据条的填充，读者可以很快锁定湖北区2022/01/01销售额中，韩闲具有最高销售额为9442\r\n\r\n如果只想显示条形图，不想显示金额应该如果操作？\r\n\r\n选择条形图区域--->条件格式--->管理规则\r\n\r\n打开管理规则后可以看到，选择设置的规则，点击编辑规则\r\n\r\n选择仅显示数据条，当然可以在颜色的地方选择自己喜欢的颜色\r\n\r\n选择之后得到如下效果\r\n\r\n.. figure:: ../_static/chap8/8.2.gif\r\n   :alt: \r\n\r\n.. _header-n16:\r\n\r\n2 条件单元格格式\r\n================\r\n\r\n打开\\ ``data/chap8/8.2xlsx``\\ ，现在有不同业务员向客户推销商品的相关信息，现在需要将截止日期还没有过今天的标注出来，应该如何操作？\r\n\r\nEXCEL中【TODAY】函数可以获得当前日期\r\n\r\n这里，可以使用Excel中的条件格式进行自动识别\r\n\r\n1.选择需要设置条件的列；\r\n\r\n2.选择条件格式；\r\n\r\n3.选择新建规则\r\n\r\n这里选择使用公式确定要设置格式的单元格\r\n\r\n因为选择的区域为B2:B10\r\n因此输入的公式满足B2要求，剩余的单元格会自动填充，因此输入的公式为\r\n\r\n**=B2>TODAY()**\r\n\r\n接下来设置单元格的格式，在本节示范中选择对满足条件的单元格填充为黄色，得到如下效果图\r\n\r\n.. figure:: ../_static/chap8/8.3.gif\r\n   :alt: \r\n\r\n.. _header-n28:\r\n\r\n3 迷你图\r\n========\r\n\r\n打开\\ ``data/chap8/8.3.xlsx``\\ 中原始数据，现在知道不同业务员1-12月的销售额，且销售额最差月份以及业务员的销售额的变化趋势，应该怎么操作？\r\n\r\n1.确定销售额最差月份\r\n\r\n这里可以使用XLOOKUP公式，具体公式为\r\n\r\n``=XLOOKUP(MIN(B2:M2),B2:M2,$B$1:$M$1)``\r\n\r\n.. figure:: ../_static/chap8/8.4.gif\r\n   :alt: \r\n\r\n2.在B2插入新的单元格，命名为趋势图\r\n\r\n点击插入，找到迷你图部分，选择折线，数据范围选择为C2:N13，防止迷你图的位置选择在B2:B13单元格\r\n\r\n.. figure:: ../_static/chap8/8.5.gif\r\n   :alt: \r\n\r\n生成迷你图后，可以在显示处，调整迷你图显示的重要点，这里显示折线中的最低点，通过图中可以看到，蔡勇仁的销售业绩趋势是不断下降，而江宁寒的销售业绩不断上升，迷你图能够很好的展示原数据与数据变化的趋势情况\r\n\r\n.. figure:: ../_static/chap8/8.6.gif\r\n   :alt: \r\n\r\n.. _header-n39:\r\n\r\n练习\r\n----\r\n\r\n1.选择\\ ``data/chap8/8.2.xlsx``\\ 工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充\r\n"
  },
  {
    "path": "source/Content/chap9.rst",
    "content": ".. _header-n0:\r\n\r\n第九章Excel数据透视\r\n================\r\n\r\n   数据透视是Excel中个强大的数据处理和分析工具，能够快速实现数据的汇总与统计分析，本节重点讲解Excel数据透视的相关操作\r\n\r\n.. _header-n4:\r\n\r\n1Excel数据透视表\r\n==================\r\n\r\n打开\\ ``data/chap9/9.1.xlsx``\\ 中的数据源，现在对数据源进行数据透视\r\n\r\n1.选择插入\r\n\r\n2.选择数据透视表\r\n\r\n3.选择表格区域\r\n\r\n4.选择数据透视表放置的位置\r\n\r\n可以看到，在新的数据表中出现了数据透视表\r\n\r\n.. figure:: ../_static/chap9/9.1.gif\r\n   :alt: \r\n\r\n例如，想知道不同月份的不同区域销售金额统计情况，可以将区域置于列，月置于行，金额的求和项置于值，即可得到不同区域不同月份的销售金额之和\r\n\r\n.. figure:: ../_static/chap9/9.2.gif\r\n   :alt: \r\n\r\n如果又想知道不同店员的销售额怎么办呢？\r\n\r\n1.点击数据透视表分析\r\n\r\n2.点击插入切片器\r\n\r\n3.选择插片器的字段\r\n\r\n点击不同的店员，可以直接统计该店员的销售额，这里的插片器相当于直接筛选店员的数据做统计。如果想统计多个店员的数据，可以点击切片器的多选项，可以同时统计多个店员的数据。\r\n\r\n.. figure:: ../_static/chap9/9.3.gif\r\n   :alt: \r\n\r\n.. _header-n20:\r\n\r\n2Excel数据透视图\r\n==================\r\n\r\n打开\\ ``data/chap9/9.1.xlsx``\\ 中的数据源，现在对数据源进行数据透视图\r\n\r\n1.选择插入\r\n\r\n2.选择数据透视图\r\n\r\n3.选择创建数据透视图，选择数据源作为数据区域\r\n\r\n4.选择新工作表\r\n\r\n.. figure:: ../_static/chap9/9.5.gif\r\n   :alt: \r\n\r\n选择月为类别，选择区域为图例，选择金额求和作为值，得到如下透视图\r\n\r\n.. figure:: ../_static/chap9/9.6.gif\r\n   :alt: \r\n\r\n如果，想切换透视图的类型，可以选择不同的图像类型，例如我们想知道不同月份销售的变化趋势，可以选择为折线图\r\n\r\n.. figure:: ../_static/chap9/9.7.gif\r\n   :alt: \r\n\r\n当然数据透视图也支持插片器，同样是选择店员作为切片的条件\r\n\r\n.. figure:: ../_static/chap9/9.8.gif\r\n   :alt: \r\n\r\n.. _header-n33:\r\n\r\n练习\r\n----\r\n\r\n1.选择\\ ``data/chap9/9.1.xlsx``\\ 工作簿中的【数据源】绘制不同的透视图\r\n"
  },
  {
    "path": "source/Content/index.rst",
    "content": "********\n教程\n********\n\n.. toctree::\n   :maxdepth: 2\n\n   chap1\n   chap2\n   chap3\n   chap4\n   chap5\n   chap6\n   chap7\n   chap8\n   chap9\n   chap10\n\n"
  },
  {
    "path": "source/Datawhale.rst",
    "content": "*****************\nDatawhale\n*****************\n\n``Datawhale`` 是一个专注于 ``AI`` 领域的开源组织，希望构建对学习者最有价值的开源社区。\n\n作为一个由国内外各个高校的教授、学生、企业从业者等创建的开放式组织形态，抱有开源精神和探索精神，愿景：for the learner，和学习者一起成长。\n\nDatawhale官网：https://datawhale.club/\n\n知乎\n================\nhttps://www.zhihu.com/people/datawhale2018\n\n微信公众号\n================\n.. image:: _static/datawhale.jpg\n   :height: 388 px\n   :width: 336 px\n   :scale: 100 %\n   :align: center\n"
  },
  {
    "path": "source/_static/1.txt",
    "content": ""
  },
  {
    "path": "source/_static/css/s4defs-roles.css",
    "content": "/*\n * CSS hacks and small modification for my Sphinx website\n * :copyright: Copyright 2013-2016 Lilian Besson\n * :license: GPLv3, see LICENSE for details.\n */\n\n\n/* Colors and text decoration.\n For example, :black:`text in black` or :blink:`text blinking` in rST. */\n\n.black {\n    color: black;\n}\n\n.gray {\n    color: gray;\n}\n\n.grey {\n    color: gray;\n}\n\n.silver {\n    color: silver;\n}\n\n.white {\n    color: white;\n}\n\n.maroon {\n    color: maroon;\n}\n\n.red {\n    color: red;\n}\n\n.magenta {\n    color: magenta;\n}\n\n.fuchsia {\n    color: fuchsia;\n}\n\n.pink {\n    color: pink;\n}\n\n.orange {\n    color: orange;\n}\n\n.yellow {\n    color: yellow;\n}\n\n.lime {\n    color: lime;\n}\n\n.green {\n    color: green;\n}\n\n.olive {\n    color: olive;\n}\n\n.teal {\n    color: teal;\n}\n\n.cyan {\n    color: cyan;\n}\n\n.aqua {\n    color: aqua;\n}\n\n.blue {\n    color: blue;\n}\n\n.navy {\n    color: navy;\n}\n\n.purple {\n    color: purple;\n}\n\n.under {\n    text-decoration: underline;\n}\n\n.over {\n    text-decoration: overline;\n}\n\n.blink {\n    text-decoration: blink;\n}\n\n.line {\n    text-decoration: line-through;\n}\n\n.strike {\n    text-decoration: line-through;\n}\n\n.it {\n    font-style: italic;\n}\n\n.ob {\n    font-style: oblique;\n}\n\n.small {\n    font-size: small;\n}\n\n.large {\n    font-size: large;\n}\n\n.smallpar {\n    font-size: small;\n}\n\n\n/* Style pour les badges en bas de la page. */\n\ndiv.supportBadges {\n    margin: 1em;\n    text-align: right;\n}\n\ndiv.supportBadges ul {\n    padding: 0;\n    display: inline;\n}\n\ndiv.supportBadges li {\n    display: inline;\n}\n\ndiv.supportBadges a {\n    margin-right: 1px;\n    opacity: 0.6;\n}\n\ndiv.supportBadges a:hover {\n    opacity: 1;\n}\n\n\n/* Details elements in the sidebar */\n\na.reference {\n    border-bottom: none;\n    text-decoration: none;\n}\n\nul.details {\n    font-size: 80%;\n}\n\nul.details li p {\n    font-size: 85%;\n}\n\nul.externallinks {\n    font-size: 85%;\n}\n\n\n/* Pour le drapeau de langue */\n\nimg.languageswitch {\n    width: 50px;\n    height: 32px;\n    margin-left: 5px;\n    vertical-align: bottom;\n}\n\ndiv.sphinxsidebar {\n    overflow: hidden !important;\n    font-size: 120%;\n    word-wrap: break-word;\n    width: 300px;\n    max-width: 300px;\n}\n\ndiv.sphinxsidebar h3 {\n    font-size: 125%;\n}\n\ndiv.sphinxsidebar h4 {\n    font-size: 110%;\n}\n\ndiv.sphinxsidebar a {\n    font-size: 85%;\n}\n\n\n/* Image style for scrollUp jQuery plugin */\n\n#scrollUpLeft {\n    bottom: 50px;\n    left: 260px;\n    height: 38px;\n    width: 38px;\n    background: url('//perso.crans.org/besson/_images/.top.svg');\n    background: url('../_images/.top.svg');\n}\n\n@media screen and (max-width: 875px) {\n    #scrollUpLeft {\n        right: 50px;\n        left: auto;\n    }\n}\n\n\n/* responsive for font-size. */\n\n@media (max-width: 875px) {\n    body {\n        font-size: 105%;\n        /* Increase font size for responsive theme */\n    }\n}\n\n@media (max-width: 1480px) and (min-width: 876px) {\n    body {\n        font-size: 110%;\n        /* Increase font size for not-so-big screens */\n    }\n}\n\n@media (min-width: 1481px) {\n    body {\n        font-size: 115%;\n        /* Increase even more font size for big screens */\n    }\n}\n\n\n/* Social Icons in the sidebar (available: twitter, facebook, linkedin, google+, bitbucket, github) */\n\n.social-icons {\n    display: inline-block;\n    margin: 0;\n    text-align: center;\n}\n\n.social-icons a {\n    background: none no-repeat scroll center top #444444;\n    border: 1px solid #F6F6F6;\n    border-radius: 50% 50% 50% 50%;\n    display: inline-block;\n    height: 35px;\n    width: 35px;\n    margin: 0;\n    text-indent: -9000px;\n    transition: all 0.2s ease 0s;\n    text-align: center;\n    border-bottom: none;\n}\n\n.social-icons li {\n    display: inline-block;\n    list-style-type: none;\n    border-bottom: none;\n}\n.social-icons li a {\n    border-bottom: none;\n}\n\n.social-icons a:hover {\n    background-color: #666666;\n    transition: all 0.2s ease 0s;\n    text-decoration: none;\n}\n\n.social-icons a.facebook {\n    background-image: url('../_images/.facebook.png');\n    background-image: url('//perso.crans.org/besson/_images/.facebook.png');\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    background-size: 35px 35px;\n}\n\n.social-icons a.bitbucket {\n    background-image: url('../_images/.bitbucket.png');\n    background-image: url('//perso.crans.org/besson/_images/.bitbucket.png');\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    background-size: 35px 35px;\n}\n\n.social-icons li a.github {\n    background-image: url('../_images/.github.png');\n    background-image: url('//perso.crans.org/besson/_images/.github.png');\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    background-size: 35px 35px;\n}\n\n.social-icons li a.wikipedia {\n    background-image: url('../_images/.wikipedia.png');\n    background-image: url('//perso.crans.org/besson/_images/.wikipedia.png');\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    background-size: 35px 35px;\n}"
  },
  {
    "path": "source/conf.py",
    "content": "# Configuration file for the Sphinx documentation builder.\n#\n# This file only contains a selection of the most common options. For a full\n# list see the documentation:\n# https://www.sphinx-doc.org/en/master/usage/configuration.html\n\n# -- Path setup --------------------------------------------------------------\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n#\n# import os\n# import sys\n# sys.path.insert(0, os.path.abspath('.'))\n\n\n# -- Project information -----------------------------------------------------\n\nproject = 'free-excel'\ncopyright = '2022, Datawhale, 牧小熊'\nauthor = '牧小熊'\n\n# The full version, including alpha/beta/rc tags\nrelease = '2.1'\n\n\nbuilddir = '../docs'\n\n# -- General configuration ---------------------------------------------------\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = []\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This pattern also affects html_static_path and html_extra_path.\nexclude_patterns = []\n\n\n# -- Options for HTML output -------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = 'pydata_sphinx_theme'\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = ['_static']\nhtml_logo = \"_static/logo.svg\"\n\nhtml_css_files = ['css/s4defs-roles.css']\n\nhtml_theme_options = {\n  \"github_url\": \"https://github.com/datawhalechina/free-excel\",\n  \"search_bar_text\":\"在这里搜索\",\n  \"show_prev_next\": False\n}\n"
  },
  {
    "path": "source/index.rst",
    "content": ".. Joyful Pandas documentation master file, created by\n   sphinx-quickstart on Sat Sep 19 16:56:20 2020.\n   You can adapt this file completely to your liking, but it should at least\n   contain the root `toctree` directive.\n\n\nHome\n=============\n\n.. toctree::\n   :caption: 框架\n   :maxdepth: 2\n   :hidden:\n\n   主页\n   Content/index\n   作者\n   Datawhale\n   练习题参考操作\n\n\n主页\n=============\n\nfree excel中文意为自由Excel，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！\n\n本教程的数据集在 `此处 <https://github.com/datawhalechina/free-excel>`__ 下载。\n\n教程大纲\n=============\n.. image:: _static/home.png\n   :height: 400 px\n   :width: 720 px\n   :scale: 100 %\n   :align: center\n\n更新版本与更新时间\n==================\n- V1.0  2021-08-08  \n- V2.0  2022-09-09  \n- V2.1  2022-11-27  \n\nV2.1教程配套Excel版本为2019及以上，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。\n\n注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上\n"
  },
  {
    "path": "source/主页.rst",
    "content": "主页\n=============\n\nfree excel中文意为自由Excel，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！\n\n本教程的数据集在 `此处 <https://github.com/datawhalechina/free-excel>`__ 下载。\n\n教程大纲\n=============\n.. figure:: _static/home.png\n   :alt:\n\n更新版本与更新时间\n================\n- V1.0  2021-08-08  \n- V2.0  2022-09-09  \n- V2.1  2022-11-27  \n\nV2.1教程配套Excel版本为2019及以上，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。\n\n注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上\n\n"
  },
  {
    "path": "source/作者.rst",
    "content": "\r\n\r\n作者\r\n====\r\n\r\n牧小熊，华中农业大学硕士，Datawhale成员，互联网金融数据分析师\r\n\r\n\r\n\r\n开源内容\r\n--------\r\n\r\n-  `《free-excel》 <https://github.com/datawhalechina/free-excel>`_\r\n\r\n-  `《心跳信号分类》 <https://github.com/datawhalechina/team-learning-data-mining/tree/master/HeartbeatClassification>`_\r\n\r\n-  `《python自动化办公》 <https://github.com/datawhalechina/office-automation>`_\r\n\r\n-  `《如何打一个数据挖掘比赛-\r\n   入门篇》 <https://linklearner.com/#/learn/detail/0>`_\r\n\r\n\r\nGithub\r\n----------\r\nhttps://github.com/muxiaoxiong\r\n\r\n知乎\r\n----------\r\nhttps://www.zhihu.com/people/muxiaoxiong\r\n\r\nE-mail\r\n----------\r\n1335008986@qq.com\r\n\r\n微信\r\n----------\r\n.. image:: _static/wechat.jpg\r\n   :height: 388 px\r\n   :width: 336 px\r\n   :scale: 100 %\r\n   :align: center\r\n\r\n知乎咨询\r\n----------\r\n.. image:: _static/zixun.png\r\n   :height: 360 px\r\n   :width: 779 px\r\n   :scale: 100 %\r\n   :align: left\r\n\r\n"
  },
  {
    "path": "source/练习题参考操作.rst",
    "content": "\r\n\r\n练习题参考操作\r\n==============\r\n\r\n\r\n第一章\r\n======\r\n\r\n1.1使用Excel数据导入功能，完成\\ ``data/chap1/Titanic_normal.csv``\\ 和\\ ``data/chap1/data/chap1/Titanic_special.txt``\\ 数据导入\r\n\r\n.. figure:: ./_static/ref/1.1.gif\r\n   :alt: \r\n\r\n1.2完成\\ ``data/chap1/2.1.xlsx``\\ 中案例1-4中的问题\r\n\r\n.. figure:: ./_static/ref/1.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n第二章\r\n======\r\n\r\n2.1.完成\\ ``data/chap2/2.1.xlsx``\\ 工作簿中的【案例2】【案例3】的快捷键自动求和任务\r\n\r\n.. figure:: ./_static/ref/2.1.gif\r\n   :alt: \r\n\r\n2.2.完成\\ ``data/chap2/2.2.xlsx``\\ 工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）\r\n\r\n.. figure:: ./_static/ref/2.2.gif\r\n   :alt: \r\n\r\n2.3.完成\\ ``data/chap2/2.3.xlsx``\\ 工作簿中的【案例2】【案例3】【案例4】的填充任务\r\n\r\n.. figure:: ./_static/ref/2.3.gif\r\n   :alt: \r\n\r\n\r\n\r\n第三章\r\n======\r\n\r\n3.1.选择\\ ``data/chap3/3.1.xlsx``\\ 工作簿中的【案例1】得到不同客户的消费次数\r\n\r\n3.2.选择\\ ``data/chap3/3.1.xlsx``\\ 工作簿中的【案例2】得到不同客户的不同项目的消费次数\r\n\r\n.. figure:: ./_static/ref/3.1.gif\r\n   :alt: \r\n\r\n\r\n第四章\r\n======\r\n\r\n4.1.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例1】，将客户原始得分为1以下的校正为0\r\n\r\n4.2.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为\"高消费户\"\r\n\r\n4.3.选择\\ ``data/chap4/4.1.xlsx``\\ 工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的务。\r\n\r\n.. figure:: ./_static/ref/4.1.gif\r\n   :alt: \r\n\r\n4.4.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例1】语文成绩在80分以上的同学成绩之和\r\n\r\n4.5.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例2】统计所有苹果系列产品的销售额\r\n\r\n4.6.打开\\ ``data/chap4/4.2xlsx``\\ 中的【案例6】完成所有手机的销售额求和\r\n\r\n.. figure:: ./_static/ref/4.2.gif\r\n   :alt: \r\n\r\n\r\n第五章\r\n======\r\n\r\n5.1.完成\\ ``data/chap5/5.1.xlsx``\\ 工作簿中的【案例1-3】\r\n\r\n参考教程\r\n\r\n5.2.完成\\ ``data/chap5/5.2.xlsx``\\ 工作簿中的【案例1】中身份证后6位加密\r\n\r\n.. figure:: ./_static/ref/5.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n第六章\r\n======\r\n\r\n6.1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成\\ ``data/chap6/6.1xlsx``\\ 中的【案例1-4】\r\n\r\n参考教程\r\n\r\n\r\n第七章\r\n======\r\n\r\n7.1.打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】计算河北区中商品1的最小销售额\r\n\r\n.. figure:: ./_static/ref/7.1.gif\r\n   :alt: \r\n\r\n7.2.打开\\ ``data/chap7/7.1xlsx``\\ 中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额\r\n\r\n.. figure:: ./_static/ref/7.2.gif\r\n   :alt: \r\n\r\n\r\n\r\n第八章\r\n======\r\n\r\n8.1.选择\\ ``data/chap8/8.2.xlsx``\\ 工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充\r\n\r\n.. figure:: ./_static/ref/8.1.gif\r\n   :alt: \r\n\r\n\r\n第九章\r\n======\r\n\r\n9.1.选择\\ ``data/chap9/9.1.xlsx``\\ 工作簿中的【数据源】绘制不同的透视图\r\n\r\n.. figure:: ./_static/ref/9.1.gif\r\n   :alt: \r\n\r\n第十章\r\n======\r\n\r\n10.1.完成数据看板，需要通过按钮调节周数，同时销售额，订单数以及数据图进行变化\r\n\r\n参考教程\r\n"
  },
  {
    "path": "历史版本/V2.0/0. 前言.md",
    "content": "# 前言\r\n\r\n本项目是在Datawhale的Free-Excel开源项目的基础上进行了内容的修订与整合，对Excel的应用特别是数据分析领域进行更加系统的总结与整合，使整体项目内容更加系统化，专业化。\r\n\r\nExcel作为小批量数据（百万条以下）的数据处理工具，被大家广泛的应用，同时Excel本身具备多种多样的功能，目前市面上的Excel教程大多冗余且复杂，非常容易打击学习者的热情。本开源项目基于个人的学习心得以及Datawhale的简杨君的Excel框架进行内容的删改，包含有Excel从数据获取、数据清洗、数据可视化、数据透视以及数据看板全套数据分析流程，详细修订后的项目能帮助到更多的数据从业人员。\r\n\r\n# 项目历史\r\n\r\n- 2022-04-15 启动Free-Excel项目重新编写\r\n- 2022-05-16 完成项目的大纲构建与完成时间节点\r\n- 2022-07-16更新第一章数据缘何而来\r\n- 2022-08-09更新第二章Excel数据格式\r\n- 2022-08-10更新第三章Excel的快捷操作\r\n- 2022-08-15更新第四章Excel的表合并\r\n- 2022-08-21更新第五章 Excel的函数1\r\n- 2022-08-25更新第六章 Excel的函数2\r\n- 2022-09-01更新第七章 Excel的函数3\r\n- 2022-09-04更新第八章 Excel数据可视化\r\n- 2022-09-05更新第九章 Excel数据透视\r\n- 2022-09-08更新第十章 Excel看板\r\n\r\n# 项目大纲\r\n\r\n- 第一章数据缘何而来\r\n  - 1.1 了解Excel\r\n  - 1.2 从文件导入数据\r\n  - 1.3 从网页导入数据\r\n- 第二章Excel数据格式\r\n  - 2.1 单元格数据类型\r\n  - 2.2 单元格格式\r\n  - 2.3 转换单元格数据\r\n- 第三章Excel的快捷操作\r\n  - 3.1 快捷键简介\r\n  - 3.2 Excel快捷键实践\r\n- 第四章Excel的表合并\r\n  - 4.1 多表行合并\r\n  - 4.2 多表列合并\r\n- 第五章Excel的函数1\r\n  - 5.1 if函数\r\n  - 5.2 if函数与复杂逻辑\r\n  - 5.3 ifs函数\r\n- 第六章Excel的函数2\r\n  - 6.1 VLOOKUP\r\n  - 6.2 XLOOKUP \r\n- 第七章Excel的函数3\r\n  - 7.1 FILTER\r\n  - 7.2 SUMIF函数\r\n  - 7.3 SUBTOTAL函数\r\n- 第八章Excel数据可视化\r\n  - 8.1 条形图\r\n  - 8.2 条件单元格格式\r\n  - 8.3 迷你图\r\n- 第九章Excel数据透视\r\n  - 9.1 Excel数据透视表\r\n  - 9.2 Excel数据透视图\r\n- 第十章Excel数据看板\r\n\r\n## 关注作者\r\n\r\n> 牧小熊，datawhale成员，华中农业大学硕士，招联金融数据分析师\r\n>\r\n> github：https://github.com/muxiaoxiong\r\n>\r\n> 知乎：https://www.zhihu.com/people/muxiaoxiong\r\n\r\n"
  },
  {
    "path": "历史版本/V2.0/1. 数据缘何而来.md",
    "content": "## 1. 数据缘何而来\r\n\r\n> 在本节中，我们将了解到Excel中的一些基础概念与不同的数据获取方法\r\n\r\nExecel是我们常见的用来进行数据处理的工具，其中Excel文件主要包含有2种格式分别是`xls`或`xlsx`，`xls`和`xlsx`主要区别如下：\r\n\r\n| xls                                   | xlsx                           |\r\n| :------------------------------------ | ------------------------------ |\r\n| 97-2003版                             | 2007之后版                     |\r\n| 只能打开xls格式，无法直接打开xlsx格式 | 可以直接打开xls、xlsx格式      |\r\n| 只有65536行、256列                    | 可以有1048576行、16384列       |\r\n| 占用空间大                            | 占用空间小，运算速度也会快一点 |\r\n\r\n因此，推荐大家使用最新版本的Excel或者WPS进行相关的学习与操作。\r\n\r\n### 1.1 了解Excel\r\n\r\n#### 1.1.1 文件\r\n\r\nExcel文每个数据文件叫做工作簿，每个工作簿里面含有多个工作表，每个工作表里面的格子叫做单元格。\r\n\r\n在Excel中点击新建文档后，Excel默认的文档名称是工作簿1，也就是一个Excel文档，就是一个工作簿\r\n\r\n![1.1](images/chap1/1.1.png)\r\n\r\n在新建的工作簿中，可以看到左下方有`Sheet1`的标签，每个工作簿里面可以含有多个工作表，Excel表中最大支持255个工作表\r\n\r\n![1.2](images/chap1/1.2.png)\r\n\r\n单元格就是工作表中间每一个格子\r\n\r\n![1.3](images/chap1/1.3.png)\r\n\r\n#### 1.1.2 工具栏\r\n\r\n* 文件：文件相关操作，导入、导出、文件加密等。\r\n* 开始：单元格常用的操作集合。\r\n* 插入：插入表格、图片、图表、文件、文本、符号等。\r\n* 页面布局：用户表格主题以及打印页面设置。\r\n* 公式：Excel所有的公式函数查询使用。\r\n* 数据：数据排序、筛选、转换操作工具。\r\n* 审阅：添加批注及数据工作表保护。\r\n* 视图：窗口管理\r\n* 帮助：帮助文档说明。\r\n* 第三方插件：Excel增强插件。\r\n\r\n![1.4](images/chap1/1.4.png)\r\n\r\n如果希望在Excel中导入第三方插件，可以点击`文件`-->`选项`-->`自定义功能区`点击右侧的√，即可导入相关模块\r\n\r\n![1.5](images/chap1/1.5.png)\r\n\r\n### 1.2 从文件导入数据\r\n\r\nExcel提供从文件导入到工作簿当中，支持.txt或csv文件，操作路径为菜单栏选择：**数据-获取和转换数据-从文件/CSV**。选择data/文件后进入预览框，预览框有三个参数供选择分别是：\r\n\r\n* 文件原始格式：默认`936：简体中文（GB2312）`\r\n* 分隔符：csv文件的分割符为`,`(逗号)\r\n* 数据类型检测：查看数据集的情况。\r\n\r\n![1.6](images/chap1/1.6.png)\r\n\r\n点击**加载**后可以看到我们导入的数据集，接着按快捷键`ctrl+s`保存工作簿到本地。\r\n\r\n![1.7](images/chap1/1.7.png)\r\n\r\n至此我们已经成功加载数据集到工作表当中，需要注意的是此时构建的数据表跟原始数据是存在连接关系，更改csv文件的数据后在点击路径：**设计-外部表数据-刷新**后就可以更新工作表数据。如果要取消链接关系则点击路径：**设计-外部数据表-取消链接**即可。\r\n\r\n![1.8](images/chap1/1.8.png)\r\n\r\n![1.9](images/chap1/1.9.png)\r\n\r\n### 1.3 从网页导入数据\r\n\r\nExcel可以从外部网页数据中获取表格数据，以中超积分榜数据为例，用浏览器访问`https://soccer.stats.qq.com/table.htm?type=zhongchao`查看表格数据。将网页表格数据导入到Excel只需要通过操作路径：**数据-自网站**，在URL里填入网页地址点击`确定`后待片刻就可以看到表格数据，选择`A组或B组`表格后点击加载，\r\n\r\n![1.10](images/chap1/1.10.png)\r\n\r\n![1.11](images/chap1/1.11.png)\r\n\r\n![1.12](images/chap1/1.12.png)\r\n\r\n![1.13](images/chap1/1.13.png)\r\n\r\n值得一提的是，Excel从网络下载数据支持数据自动更新功能，点击刷新即可重新连接网络更新数据\r\n![1.14](images/chap1/1.14.png)\r\n\r\n\r\n### 练习\r\n\r\n1. 使用Excel数据导入功能，完成`data/chap1/Titanic_train.txt`数据导入\r\n2. 将工作簿文件`data/chap1/Titanic_test.xlsx`转为表格数据\r\n3. 将“中国银行外汇牌价”通过网页导入到Excel表中\r\n\r\n### 附录\r\n\r\n中国银行外汇牌价网站：https://www.bankofchina.com/sourcedb/whpj/index.html\r\n\r\n"
  },
  {
    "path": "历史版本/V2.0/1.txt",
    "content": ""
  },
  {
    "path": "历史版本/V2.0/10. Excel数据看板.md",
    "content": "## 10. Excel看板\r\n\r\n> 数据看板作为数据动态展示的一种重要方式，被广泛的应用于各个领域，因此本节根据1个案例讲解使用Excel制作数据看板的过程，以期起到抛砖引玉的效果，在学习技能的同时也将其应用到实践的工作中\r\n\r\n## 1.业务背景\r\n\r\n打开`data/chap10/10.1.xlsx`中的数据源，这是某厂家在淘宝、拼多多、京东这3个电商销售平台的销售数据，现在你是这个厂家的员工，老板想知道商品在不同渠道的每周销售情况，想请你做一个数据周报看板。\r\n\r\n![10.1](./images/chap10/10.1.png)\r\n\r\n## 2.实现分析\r\n\r\n1.既然是周报看板，需要确定每天日期所在周数与每周的第几天\r\n\r\n2.根据确定周数对销售金额进行汇总\r\n\r\n3.对销售金额进行动态展示\r\n\r\n## 3.实现过程\r\n\r\n### **1.**确定周数\r\n\r\n确定日期所在的周数用【WEEKNUM函数】，确定日期是第几周可以用【WEEKDAY函数】\r\n\r\n在H2单元格输入 **=WEEKNUM(B2,2)**\r\n\r\n在I2单元格输入 **=WEEKDAY(B2,11)**    （如果想得到中文星期几  可以输入 =TEXT(B2,\"aaaa\")）\r\n\r\n![10.2](./images/chap10/10.2.png)\r\n\r\n### **2.销售基础整理**\r\n\r\n新建1个工作表，确定动态数据的变量为周数，并确定需要计算的指标，本周开始日期、介绍日期、销售额、订单数、上周销售额、上周订单数、销售额变化、订单数变化\r\n\r\n![10.3](./images/chap10/10.3.png)\r\n\r\n使用公式求解相关的基础数据\r\n\r\n在C3单元格输入公式`=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001)`\r\n\r\n如果发现数据日期变成了44200，显然就是格式不正确，只需要将单元格的格式转为日期即可\r\n\r\n![10.4](./images/chap10/10.4.png)\r\n\r\n在C4单元格输入公式`=XLOOKUP(C2,数据源!H1:H50001,数据源!B1:B50001,0,0,-1)`\r\n\r\n对于本周的销售额，可以使用SUMIFS函数获得 ，在C5单元格中输入\r\n\r\n`=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)`\r\n\r\n对于本周的订单数，可以使用COUNTIFS函数获得 ，在C6单元格中输入\r\n\r\n`=COUNTIFS(数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)`\r\n\r\n对于上周开始日期，可以使用本周开始日期-7，在E3单元格中输入\r\n\r\n`=C3-7`\r\n\r\n对于上周结束日期，可以使用本周结束日期-7，在E4单元格中输入\r\n\r\n`=C4-7`\r\n\r\n对于上周销售额，可以使用SUMIFS函数获得 ，在E5单元格中输入\r\n\r\n`=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$E$3,数据源!$B:$B,\"<=\"&$E$4)`\r\n\r\n对于上周的订单数，可以使用COUNTIFS函数获得 ，在E6单元格中输入\r\n\r\n`=COUNTIFS(数据源!$B:$B,\">=\"&$E$3,数据源!$B:$B,\"<=\"&$E$4)`\r\n\r\n对于相比上周销售额变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C7单元格中输入\r\n\r\n`=TEXT(((C5-E5)/E5)*100,\"0.00\")&\"%\"`\r\n\r\n对于相比上周订单数变化，可以使用百分比计算，使用【TEXT函数】确定格式，在C8单元格中输入\r\n\r\n`=TEXT(((C6-E6)/E6)*100,\"0.00\")&\"%\"`\r\n\r\n当然也可以直接设置单元格格式为【百分比】\r\n\r\n当然这个【相比上周销售额变化】指标是一个比较重要的指标，可以对这个指标进行格式设置\r\n\r\n选择C6单元格并设置条件格式，判断C5单元格与E5单元格值的大小，如果C5>=E5，那么C6单元值为红，否则为绿色\r\n\r\n![10.5](./images/chap10/10.5.png)\r\n\r\n### **3.周销售数据变化趋势**\r\n\r\n对于每周的数据需要做一个统计，并对每周数据的下单金额与下单数进行整理\r\n\r\n装B13-B19单元格输入星期数\r\n\r\n![10.6](./images/chap10/10.6.png)\r\n\r\n现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式\r\n\r\n`=SUMIFS(数据源!$F:$F,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4,数据源!$I:$I,\"=\"&计算过程!B13)`\r\n\r\n现在需要统计每周1-7的下单金额，因此在C13单元格中输入公式，并向下填充公式\r\n\r\n`=COUNTIFS(数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4,数据源!$I:$I,\"=\"&计算过程!B13)`\r\n\r\n![10.7](./images/chap10/10.7.png)\r\n\r\n接下来就对数据进行可视化展示\r\n\r\n![10.8](./images/chap10/10.8.png)\r\n\r\n将图片进行简单的美化，就可以得到下单金额与下单数的变化趋势图\r\n\r\n![10.9](./images/chap10/10.9.png)\r\n\r\n### **4.周销售渠道整理**\r\n\r\n对于每周的数据需要做一个统计，并对每周数据的渠道分布进行整理\r\n\r\n装G3-G6单元格分别输入产品的电商渠道京东、拼多多、淘宝\r\n\r\n![10.10](./images/chap10/10.10.png)\r\n\r\n在H3单元格中输入SUMIFS函数求不同渠道的销售金额，并进行向下填充\r\n\r\n`=SUMIFS(数据源!$F:$F,数据源!$E:$E,G3,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)`\r\n\r\n在I3单元格中输入COUNTIF函数求不同渠道的下单数，并进行向下填充\r\n\r\n`=COUNTIFS(数据源!$E:$E,G3,数据源!$B:$B,\">=\"&$C$3,数据源!$B:$B,\"<=\"&$C$4)`\r\n\r\n![10.11](./images/chap10/10.11.png)\r\n\r\n接下来就对数据进行可视化展示，将图片进行简单的美化，就可以得到下单金额饼状图与下单数的柱状图\r\n\r\n![10.12](./images/chap10/10.12.png)\r\n\r\n### **5.看板绘制**\r\n\r\n完成了前面的全部计算后，接下来的工作就是将绘制的图结合在一起进行展示\r\n\r\n首先是上述计算的数据与绘图的信息集合到一起\r\n\r\n![10.13](./images/chap10/10.13.png)\r\n\r\n其中本周的总销量、本周订单数、当前周数、开始日期以及结束日期都是引用计算过程中的值\r\n\r\n本周总销量的值为`=计算过程!$C$5`\r\n\r\n本周总订单的值为`=计算过程!$C$6`\r\n\r\n本周周数的值为`=计算过程!$C$2`\r\n\r\n本周的开始日期为`=计算过程!$C$3`\r\n\r\n本周的结束日期为`=计算过程!$C$4`\r\n\r\n因为本周的变化情况带有条件单元格式，因此不能直接引用，需要将其转化成链接图片的形式，具体操作为\r\n\r\n1.复制C7单元格\r\n\r\n2.粘贴选择链接的图片\r\n\r\n![10.14](./images/chap10/10.14.png)\r\n\r\n对于本周的周数，需要设置按钮方便调节\r\n\r\n1.选择开发工具\r\n\r\n2.选择插入，选择数值调节按钮\r\n\r\n3.选择设置控件格式\r\n\r\n4.设置控件的对应参数\r\n\r\n![10.15](./images/chap10/10.15.png)\r\n\r\n到这里就完成了看板90%的步骤，点击按钮，能看动态展示看板的相关数据\r\n\r\n![10.16](./images/chap10/10.16.png)\r\n\r\n最后就对看板进行相应的美化，在看板美化过程中也参考了其他EXCEL教程中的配色，因此最后的看板展示效果为\r\n\r\n![10.17](./images/chap10/10.17.png)\r\n\r\n## 思考\r\n\r\n​\t1.为什么每周的介绍日期和开始日期都可以使用XLOOKUP获得\r\n\r\n​\t2.为什么每周1的下单金额之和可以通过SUMIF函数求\r\n\r\n​\t3.为什么设置按钮调节每周的数据变化，这样有什么好处\r\n\r\n## 后记\r\n\r\n> 行文至此，以上就是Free-excel教程的全部内容，整个教程的编写过程中也广泛的参阅了各式各样的Excel教程，尽力让本教程变得轻松易学，希望读者能掌握相关的Excel技巧，并能灵活的运用到工作中，面对数字化社会，数据将渗透到生活的点点滴滴，拥抱数字，同时也拥抱变化。\r\n>\r\n> --作者：牧小熊，Datawhale成员，数据分析师\r\n"
  },
  {
    "path": "历史版本/V2.0/2. Excel数据格式.md",
    "content": "## 2. 表格所见非所得\r\n\r\n> 在本节中我们将了解Excel中的各种单元格格式，并讲解了不同格式之间的转化\r\n\r\n### 2.1 单元格数据类型\r\n\r\n打开`data/chap2/2.1.xlsx`文件，点击案例4工作表，可以看到Excel有11种数据类型\r\n\r\n![2.1](images/chap2/2.1.png)\r\n\r\n接下来会主要讲解3种常用的数据类型\r\n\r\n#### 2.1.1 数字\r\n\r\n数值是单元格最常见的数据之一，12位数的时候会以科学计数法显示。\r\n\r\n下图展示的是真假数值列，真数值默认情况下是右对齐（方便观测数据位数），假数值是数值型文本属于**文本**，左上角会有个绿色三角错误检查，当数据是文本时，无法完成数字运算操作。\r\n\r\n![2.2](images/chap2/2.2.png)\r\n\r\nExcel会自带数据纠错功能，点击黄色感叹号可以看到，将文本转出数字，或者使用`=VALUE()`函数将文本转成数字\r\n\r\n![2.3](images/chap2/2.3.png)\r\n\r\n#### 2.1.2 文本\r\n\r\n文本为Excel中的常见格式，主要为文本字符串，例如下图就是典型的文本数据。当数据是文本类型时就可以完成文本数据相关操作。\r\n\r\n![2.4](images/chap2/2.4.png)\r\n\r\n#### 2.1.3 日期\r\n\r\nExcel中的标准日期由年月日组成的数据，例如`2021/1/1`，同时日期又是很特殊的数值，在Excel里面日期最早是1900年1月1日，对应的数值为1，通过两日期相减可以得到日期相差的天数。需要注意的是如果是`2021-01-01`的数据就要看是否实际数据为`'2021/1/1'`，否则为文本型日期，需要进行转换才行。观察下图真假日期，可以发现真日期右对齐，假日期左对齐（内容跟显示的一致），真日期转格式可以看到单元格数据仍然是真日期格式（内容跟显示不一致）。\r\n\r\n![2.5](images/chap2/2.5.png)\r\n\r\n![2.6](images/chap2/2.6.png)\r\n\r\n![2.7](images/chap2/2.7.png)\r\n\r\n\r\n### 2.2 单元格格式\r\n\r\n#### 2.2.1 设置单元格格式\r\n\r\n设置单元格格式可以点击单元格后，**右键-设置单元格格式**选项，或者按快捷键**ctrl+1**，或者通过工具栏：**开始-数字**去快速做更改。单元格可以设置的格式类型包括：\r\n\r\n* 数字：调整数值格式或者日期格式。\r\n* 对齐：调整对齐方式。\r\n* 字体：更改字体、字型、字号等。\r\n* 边框：单元格边框设置。\r\n* 填充：填充单元格背景颜色，标注数据经常使用。\r\n* 保护：锁定单元格或者隐藏公式。\r\n\r\n\r\n\r\n#### 2.2.2 数值格式\r\n\r\n设置单元格格式分类选择数值，对数值设置小数点一般保留两位，同时能让数值对齐，使用千分位分隔符能更容易观察数值大小。\r\n![2.8](images/chap2/2.8.png)\r\n\r\n\r\n#### 2.2.3 文本格式\r\n\r\n文本常见的设置格式用于对文本进行加单引号、双引号或者逗号的情况。以`user_orders.xlsx`文件为例，对`email`列进行添加单引号的操作。\r\n\r\n首先选择`email`列，调出设置单元格格式，分类选择``自定义``，找到`@`后在外面加上单引号。\r\n![2.10](images/chap2/2.10.png)\r\n![2.9](images/chap2/2.9.png)\r\n\r\n\r\n\r\n\r\n#### 2.2.4 日期格式\r\n\r\n通过日期分类调整日期格式为年-月-日，需要注意的是文本型的日期格式无法调整，而数值是可以调整为日期。\r\n![2.11](images/chap2/2.11.png)\r\n\r\n\r\n### 2.3 转换单元格数据\r\n\r\n通过数据工具的`分列`功能能够巧妙的将数据进行转换，以下将使用`user_orders`表为例进行操作。\r\n\r\n#### 2.3.1 数值和文本相互转换\r\n\r\n将`数值型文本`转为`数值`，选择`order_id`列并使选择分列功能，默认下一步直至完成。\r\n![2.12](images/chap2/2.12.png)\r\n![2.13](images/chap2/2.13.png)\r\n\r\n![2.14](images/chap2/2.14.png)\r\n\r\n\r\n\r\n#### 2.3.2 日期和文本相互转换\r\n\r\n将`文本日期`转换为`日期`，选择`update_date`列并选择`分列`功能，到第三步的时候选择`日期`点击完成。\r\n![2.15](images/chap2/2.15.png)\r\n![2.16](images/chap2/2.16.png)\r\n\r\n![2.17](images/chap2/2.17.png)\r\n\r\n\r\n\r\n### 任务\r\n\r\n1. 将`data/chap1/Titanic_train`工作簿中的`Pclass`列的数值转文本\r\n2. 完成`data/chap2/2.1.xlsx`中案例1-3中的问题\r\n3. 完成`data/chap2/2.2.xlsx`中案例1-2中的问题\r\n"
  },
  {
    "path": "历史版本/V2.0/3. Excel的快捷操作.md",
    "content": "## 3. Excel的快捷操作\r\n\r\n> 在本节中我们将了解Excel中的各种快捷操作，目前已知的Excel快捷操作键有230个，本篇重点介绍那些常用的Excel快捷操作键。\r\n>\r\n> 由于编者的水平限制，如果有一些其他好用的Excel快捷键，在本篇中没有介绍的，请联系我们。\r\n\r\n## 3.1快捷键简介\r\n\r\n### 3.1.1 文件相关\r\n\r\n- `Ctrl` + `N`     创建一个新的Excel工作簿 \r\n- `Ctrl` + `w`     关闭当前工作簿\r\n- `Ctrl` + `S`     保存当前的Excel工作簿\r\n- `F12`               将当前文件进行另存为\r\n- `Ctrl` + `p`     打印当前工作表\r\n\r\n### 3.1.2 通用快捷键\r\n\r\n- `Ctrl` + `z`    撤销当前操作\r\n- `Ctrl` + `Y`     恢复撤销，可以用这个快捷键恢复被撤消的操作 \r\n- `Ctrl` + `C`     复制所选单元格\r\n- `Ctrl` + `x`     剪切所选单元格\r\n- `Ctrl` + `v`     粘贴所选单元格\r\n- `Ctrl` + `F`     弹出查找和替换对话框 \r\n- `Ctrl` + `G`     显示定位对话框\r\n\r\n### 3.1.3 表格选择\r\n\r\n- `Ctrl` + `A`     全选表格\r\n- `Ctrl` + `→`    移动到数据区域的右边缘\r\n- `Ctrl` + `←`    移动到数据区域的左边缘\r\n- `Ctrl` + `↑`    移动到数据区域的上边缘\r\n- `Ctrl` + `↓`    移动到数据区域的下边缘 \r\n\r\n### 3.1.4 单元格编辑\r\n\r\n- `F2`                             编辑当前单元格（跟双击单元格效果一致） \r\n- `Alt` + `Enter`          在当前单元格内换行 (直接按 `Enter`会跳转到下一行)\r\n\r\n- `Enter`                      下移一个单元格 \r\n- `Shift` + `Enter`       上移一个单元格  \r\n- `Tab`                           右移一个单元格 \r\n- `Shift` + `Tab`            左移一个单元格 \r\n- `Ctrl` + `Enter`          输入完成，并停留在当前单元格 \r\n- `Ctrl` + `;`（分号）    输入当前日期（显示为年/月/日）\r\n- `Ctrl` +` Shift` + `: `    输入当前时间 (显示为小时/分钟)\r\n- `Ctrl` + `E`                   快速填充 \r\n\r\n### 3.1.5 Excel格式化\r\n\r\n- `Ctrl` + `1`（数字1）   设置单元格格式\r\n- `Ctrl` + `B`                    加粗或取消加粗\r\n- `Ctrl` + `i`                     加斜体或取消斜体 \r\n\r\n### 3.1.6 Excel公式\r\n\r\n- `F4`              绝对引用和相对引用切换\r\n- `Alt`+`=`      自动插入求和公式\r\n\r\n## 3.2 Excel快捷键实践\r\n\r\n### 3.2.1 自动插入求和公式\r\n\r\n打开文件`data/chap3/3.1.xlsx`，点击【案例1】，\r\n\r\n1.选中案例1中的表格区域（**注意这里要把汇总的那一行也选上**）\r\n\r\n2.使用快捷键`Alt`+`=` ，自动插入求和公式，可以看到，对上述的Excel表格区域进行自动求和。\r\n\r\n![1](./images/chap3/1.png)\r\n\r\n### 3.2.2 自动进行列差异比对\r\n\r\n打开文件`data/chap3/3.2.xlsx`，点击【案例1】，我们现在的任务是找到1月和2月客户数不同的区域，如何快速定位？\r\n\r\n1.选中需要进行列差异比对的区域，注意选择顺序从左往右\r\n\r\n2.使用快捷键`ctrl`+`\\` (**注意是“\\”不是\"/\"**)，可以快速定位到区域4、区域8以及区域10所对应的客户数不同\r\n\r\n3.选择填充颜色，即可快速显示两列的差异\r\n\r\n![4](./images/chap3/2.png)\r\n\r\n**思考：**\r\n\r\n如果需要定位到1月客户数怎么办？\r\n\r\n注意这里的选择方向，从右往左选择，那么默认最右边为参考标准，其他列的数据可参考标准比较，如果从左往右选择，那最左边就是参考标准，其他的操作同上\r\n\r\n![image-20220805204114860](./images/chap3/3.png)\r\n\r\n### 3.2.3 自动填充\r\n\r\n在excel中很多重复、繁琐的工作由数据提取和数据合并这类问题造成，**2013年以后的Excel**支持智能填充，能灵活的解决这类问题。\r\n\r\n打开文件`data/chap3/3.3.xlsx`，点击【案例1】，需要提取客户的手机号\r\n\r\n1.手动提取客户1的手机号，并输入到【B2】\r\n\r\n2.选择需要快速填充的列，也就是【B2-B11】\r\n\r\n3.按`ctrl`+`E`进行自动填充\r\n\r\n![5](./images/chap3/5.png)\r\n\r\n打开文件`data/chap3/3.3.xlsx`，点击【案例2】，需要从身份证号码中提取出生日期\r\n\r\n1.手动出生日期，并输入到【B2】\r\n\r\n2.选择需要快速填充的列，也就是【B2-B11】\r\n\r\n3.按`ctrl`+`E`进行自动填充\r\n\r\n![4](./images/chap3/4.png)\r\n\r\n## 任务\r\n\r\n​\t1.完成`data/chap3/3.1.xlsx`工作簿中的【案例2】【案例3】的快捷键自动求和任务\r\n\r\n​\t2.完成`data/chap3/3.2.xlsx`工作簿中的【案例2】【案例3】的多行快速比对任务（提示：需要选中所有待比对表格框）\r\n\r\n​\t3.完成`data/chap3/3.3.xlsx`工作簿中的【案例3】【案例4】的多行快速比对任务（提示：需要选中所有待比对表格框）\r\n"
  },
  {
    "path": "历史版本/V2.0/4. Excel的表合并.md",
    "content": "## 4. Excel的表合并\r\n\r\n> 当遇到需要将多个表的行记录合并在一起的时候，我们一般会手动复制粘贴，这会带来很多重复繁琐的操作，并且容易出错，可以使用Excel的合并计算工具来快速完成。\r\n>\r\n\r\n## 4.1多表行合并\r\n\r\n打开文件`data/chap4/4.1.xlsx`，点击【案例1】可以看到有3个消费表格，每个客户的消费金额不同，现在需要你统计每个客户在消费的总金额。\r\n\r\n![1.1](./images/chap4/1.1.png)\r\n\r\n一般的操作方法是将这3个数据复制粘贴，那么有没有更加优雅的方法呢？这里推荐使用合并计算\r\n\r\n**1.选择需要汇总的单元格起点**\r\n\r\n**2.选择Excel中的数据栏**\r\n\r\n**3.找到数据栏中的合并计算块**\r\n\r\n![1.2](./images/chap4/1.2.png)\r\n\r\n**4.选择合并计算函数中的求和**\r\n\r\n**5.点击引用位置右侧的引用项**\r\n\r\n**6.选择第一个数据表所在的范围**\r\n\r\n**7.点击添加**\r\n\r\n![1.3](./images/chap4/1.3.png)\r\n\r\n**8.将3个数据表添加到所有引用位置**\r\n\r\n**9.选择标签位置信息**\r\n\r\n**10.点击完成**\r\n\r\n![1.4](./images/chap4/1.4.png)\r\n\r\n可以看到完成了所有客户消费金额的求和计算~\r\n\r\n![1.5](./images/chap4/1.5.png)\r\n\r\n## 4.2多表列合并\r\n\r\n打开文件`data/chap4/4.1.xlsx`，点击【案例2】可以看到有3个不同的消费表格，每个客户的消费金额不同，现在需要你统计每个客户在3个不同消费的总金额。\r\n\r\n![1.6](./images/chap4/1.6.png)\r\n\r\n与4.1的操作类型，使用合并计算选择3个不同项目的数据区域\r\n\r\n![1.7](./images/chap4/1.7.png)\r\n\r\n![1.8](./images/chap4/1.8.png)\r\n\r\n![1.9](./images/chap4/1.9.png)\r\n\r\n## 任务\r\n\r\n​\t1.选择`data/chap3/4.1.xlsx`工作簿中的【案例1】得到不同客户的消费次数\r\n\r\n​\t2.选择`data/chap3/4.1.xlsx`工作簿中的【案例2】得到不同客户的不同项目的消费次数\r\n"
  },
  {
    "path": "历史版本/V2.0/5. Excel的函数-IF函数.md",
    "content": "## 5. Excel的函数1\r\n\r\n> Excel中有着非常丰富的函数，这些函数能大幅度提升我们的工作效率，本节中会重点介绍一些常用的Excel函数。\r\n>\r\n\r\n## 5.1 if函数\r\n\r\n打开文件`data/chap5/5.1.xlsx`，点击【案例1】，现在需要对客户的原始得分进行校正，当客户的原始得分为负时，校正为0\r\n\r\n![5.1](./images/chap5/5.1.png)\r\n\r\n针对上面遇到的问题，可以使用IF函数，Excel函数用法如下\r\n\r\n【IF函数】**=IF(判断条件，如果满足则，如果不满足则)**\r\n\r\n针对遇到的问题，那么在C2单元格中输入\r\n\r\n**=IF(B2<0,0,B2)**            ----> **注意，这里的逗号要使用英文的逗号**\r\n\r\n那么这个公式是什么意思呢？判断B2单元格是不是小于0，如果是，则C2单元格为0，如果不是则返回B2单元格的值，可以看到C2单元格实际返回值为0，这是因为B2的值为-1，满足判断条件，因此C2单元格返回为0\r\n\r\n![5.2](./images/chap5/5.2.png)\r\n\r\n用鼠标选择C2单元格右下角，当鼠标变成黑色十字，向下拖拽，对剩下的列进行填充\r\n\r\n![5.3](./images/chap5/5.3.png)\r\n\r\n当然你也可以选择另一个更加优雅的方法\r\n\r\n1.在C2单元格写Excel公式\r\n\r\n2.选择需要填充公式的区域，包括C2单元格\r\n\r\n3.点击C2单元格，进入公式编辑状态\r\n\r\n4.使用快捷键`CTRL`+`Enter`进行批量填充![5.4](./images/chap5/5.4.png)\r\n\r\n## 5.2 if函数与复杂逻辑\r\n\r\n打开文件`data/chap5/5.1.xlsx`，点击【案例2】，现在有客户的1月、2月消费金额，如果客户2个月的消费金额都超过400，那么就认为这个客户为高消费客户。\r\n\r\n![5.5](./images/chap5/5.5.png)\r\n\r\n这里与5.1中的案例不同，需要IF函数与逻辑函数进行配合\r\n\r\n【AND函数】**=AND(条件1，条件2，...)** \r\n\r\n【OR函数】**=OR(条件，条件2，...)**\r\n\r\nAND函数，需要所有条件全部满足，才返还TRUE，OR函数，所有条件中只要有1个条件满足，就返还TRUE\r\n\r\n针对遇到的问题，那么在D2单元格中输入\r\n\r\n**=IF(AND(B2>400,C2>400),\"高消费客户\",\"\")**  -----> 这里\"\"代表返回空值\r\n\r\n随后对整列的函数进行填充，具体填充方法见5.1中详解\r\n\r\n![5.6](./images/chap5/5.6.png)\r\n\r\n## 5.3ifs函数\r\n\r\n打开文件`data/chap5/5.1.xlsx`，点击【案例3】，有员工的相关考核分，考核得分在4.8分以上，优秀；考核得分在3.5-4.7分，良好；考核得分在0-3.4分，一般。\r\n\r\n![5.7](./images/chap5/5.7.png)\r\n\r\n这里可以使用IFS函数，具体用法为\r\n\r\n【IFS函数】=IFS(判断条件1,如果满足条件1则,判断条件2,如果满足条件2则)\r\n\r\n针对遇到的问题，则可以在C2单元格输入\r\n\r\n**=IFS(B3<=3.4,\"一般\",AND(B3>=3.5,B3<=4.7),\"良好\",B3>=4.8,\"优秀\")**\r\n\r\n对整列数据进行函数填充后\r\n\r\n![5.8](./images/chap5/5.8.png)\r\n\r\n## 任务\r\n\r\n​\t1.选择`data/chap5/5.1.xlsx`工作簿中的【案例1】，将客户原始得分为1以下的校正为0\r\n\r\n​\t2.选择`data/chap5/5.1.xlsx`工作簿中的【案例2】，客户1月2月中只要有1个月消费超过400，即为\"高消费客户\"\r\n\r\n​\t3.选择`data/chap5/5.1.xlsx`工作簿中的【案例3】，能否不使用IFS函数，使用IF函数通过嵌套完成相应的任务。\r\n\r\n"
  },
  {
    "path": "历史版本/V2.0/6. Excel的函数-查找函数 .md",
    "content": "## 6. Excel的函数2\r\n\r\n> VLOOKUP是经典的查找与引用函数，在Excel数据查询任务中有多种用途。XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，**非常推荐大家使用XLOOKUP函数**，如果自己的电脑Excel不是最新版不支持XLOOKUP函数，也可以来学习VLOOKUP函数。\r\n\r\n> 在本节教程中会重点介绍XLOOKUP函数的相关用法，对于VLOOKUP不好解决，XLOOKUP能解决的问题放在了【案例5】、【案例6】、【案例7】\r\n\r\n## 6.1 VLOOKUP\r\n\r\n### 6.1.1 【案例1】\r\n\r\n打开文件`data/chap6/6.1xlsx`，点击【案例1】，根据岗位编号，得到该员工的应发工资\r\n\r\n![6.1](./images/chap6/6.1.png)\r\n\r\n针对这个问题，可以使用VLOOKUP函数\r\n\r\n【VLOOKUP函数】**=VLOOKUP（要查找的值，查找区域，要返回的结果在查找区域的第几列，精确匹配或近似匹配）**\r\n\r\n**在L3单元格中输入如下公式**\r\n\r\n**=VLOOKUP(K2,A2:H50,8,FALSE)**     \r\n\r\n因为应发工资在整个单元格中的第8列，所以第3个参数为8，第4个参数选择TRUE或者FALSE，TRUE为模糊匹配，FALSE为精确匹配，因此第4个参数选择为FALSE， 有的EXCEL版本第4个参数是0是精确查找，1是精确匹配，根据实际情况输入即可。\r\n\r\n### 6.1.2 【案例2】\r\n\r\n打开文件`data/chap6/6.1xlsx`，点击【案例2】，根据岗位编号，得到该员工的应发工资\r\n\r\n![6.2](./images/chap6/6.2.png)\r\n\r\n在案例2的任务中我们发现，这里的员工的编号位于最后一列，那么应该如何处理呢？\r\n\r\n如果按照正常的VLOOKUP的函数用法在L2单元格输入=VLOOKUP(K2,A2:H19,7,FALSE)，输入后会发现并没有安装预期得到应发工资。\r\n\r\n![6.3](./images/chap6/6.3.png)\r\n\r\n这是因为VLOOKUP函数的限制，必须查找的区域在被查找值的左侧，当然这里有其他的办法解决。\r\n\r\n这里用到了换列的小技巧，如果感兴趣可以看相关文章，[Excel技巧：一文搞懂 IF{1,0} 的用法](https://zhuanlan.zhihu.com/p/377654196)\r\n\r\n那么在L2中输入如下函数\r\n\r\n**=VLOOKUP(K2,IF({1,0},H2:H19,G2:G19),2,FALSE)**\r\n\r\n这个函数中，将G2:G17列与H2:H19列做成了一个临时数据组，并让这2列交换位置，这样G2:G19列就在临时数组中的第2列，因此VLOOKUP中第3个参数为2\r\n\r\n![6.4](./images/chap6/6.4.png)\r\n\r\n### 6.1.3【案例3】\r\n\r\n打开文件`data/chap6/6.1xlsx`，点击【案例3】，根据性别与部门信息，获得员工编号\r\n\r\n![6.5](./images/chap6/6.5.png)\r\n\r\n案例3的任务与前面不同的是，无法只通过1个信息完全定位到员工编号，因此这里使用了一个技巧，在L3单元格中输入\r\n\r\n**=VLOOKUP(J2&K2,IF({1,0},C2:C20&D2:D20,A2:A20),2,0)**\r\n\r\n细心的同学可能发现了其中的技巧，就是将多个条件通过&连接成一个字符串，同时将待查找的数据也连接起来，从而通过这个连接的特殊字符来查找数据\r\n\r\n### 6.1.4 【案例4】\r\n\r\n打开文件`data/chap6/6.1xlsx`，点击【案例4】，当不知道具体的信息，需要进行模糊查询\r\n\r\n![6.6](./images/chap6/6.6.png)\r\n\r\n那么如何使用VLOOKUP进行模糊查询呢？\r\n\r\n**=VLOOKUP(\"*\"&K2,A2:F20,2,0)**\r\n\r\nExcel中的通配符匹配规则见如下，因为DW为2个字符，我们选择*\r\n\r\n![6.7](./images/chap6/6.7.png)\r\n\r\n## 6.2 XLOOKUP\r\n\r\n> XLOOKUP作为Excel开发的最新查找函数，在使用便利性上远超VLOOKUP函数，因此如果是能支持XLOOKUP函数，**非常推荐大家使用XLOOKUP函数**，如果不能支持这个函数也不用灰心，使用VLOOKUP函数也能完成绝大多数查询问题\r\n\r\n因为XLOOKUP函数功能非常强大，因此在本节中对函数进行讲解\r\n\r\n【XLOOKUP函数】**==XLOOKUP(想要查找值, 想要在哪个数据区域中查找, 要返回的数据区域，, [if_not_found], [match_mode], [search_mode])**\r\n\r\n第四参数（可选参数）：if_not_found，找不到结果，就返回第四参数，如果省略第四参数函数默认返回#N/A这个错误值\r\n\r\n第五参数（可选参数）：match_mode，指定匹配类型\r\n\r\n参数为：0 ，精确匹配，未找到结果，返回 #N/A。 这是默认选项。\r\n\r\n参数为：-1，近似匹配，未找到结果，返回下一个较小的项。\r\n\r\n参数为：1，近似匹配，未找到结果，返回下一个较大的项。\r\n\r\n参数为：2 ，通配符匹配\r\n\r\n第六参数（可选参数）：search_mode, 指定要使用的搜索模式\r\n\r\n参数为：1，从第一项开始执行搜索。 这是默认选项。\r\n\r\n参数为：-1，从最后一项开始执行反向搜索。\r\n\r\n参数为：2，根据 lookup_array 按升序排序的二进制搜索。 如果未排序，将返回无效结果。\r\n\r\n参数为：-2，根据lookup_array 按降序排序的二进制搜索。 如果未排序，将返回无效结果。\r\n\r\n### 6.2.1 【案例1】\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例1】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(K2,A1:A50,H1:H50)**\r\n\r\n第1个K2 就是需要查询的岗位编号DW0005\r\n\r\n第2个参数为A1:A50，也就是要查哪一列，**细心的同学已经注意到这里与VLOOKUP的不同**\r\n\r\n第3个参数就是需要返回的哪一列，也就是返回H列\r\n\r\n### 6.2.2【案例2】\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例2】\r\n\r\n我们在L2单元格中输入如下公式\r\n\r\n**=XLOOKUP(J2,H1:H19,G1:G19)**\r\n\r\n细心的同学就发现上面的公式中没有用到列的转换，这个公式的可读性非常强，这是就是XLOOKUP比VLOOKUP更加强大的地方\r\n\r\n### 6.2.3【案例3】\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例3】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(J2&K2,C1:C20&D1:D20,A1:A20)**\r\n\r\n在XLOOKUP中的多条件查找，只需要使用**&**，将多个条件的信息连接起来即可，非常的方便\r\n\r\n### 6.2.4【案例4】\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例4】\r\n\r\n我们在M2单元格中输入如下公式\r\n\r\n**=XLOOKUP(\"*\"&K2,A2:A20,B2:B20,,2)**\r\n\r\n在使用XLOOKUP进行通配符查找事，需要指定第5个参数为2，即告诉XLOOKUP需要用通配符进行查找，这里是好VLOOKUP不同的地方\r\n\r\n具体通配符用法，可见6.1.4的讲解\r\n\r\n### 6.2.5【案例5】\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例5】，姓名6在数据表中出现了2次，想知道他的最后销售额应该怎么操作？\r\n\r\n我们在I2单元格中输入如下公式\r\n\r\n**=XLOOKUP(H2,B1:B20,F1:F20,0,0,-1)**\r\n\r\n前3个参数想必大家已经很熟悉了，第4个参数是0，就是当XLOOKUP查找不到时，就返回0，第5个参数是0，就是选择精确匹配，第6个参数选择搜索参数，这里选择-1，从后开始往前搜索，因此这样设置就能获得正确结果。\r\n\r\n### 6.2.6【案例6】\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例6】，这里有4个人，现在想知道这4个人的最大销售额\r\n\r\n![6.8](./images/chap6/6.8.png)\r\n\r\n**=MAX(XLOOKUP(H2:H5,B2:B20,F2:F20,0,0,1))**\r\n\r\n先通过XLOOKUP批量查找这4个人销售额，再通过MAX函数，求这4个人中的最大的销售额。\r\n\r\n### 6.2.6【案例7】\r\n\r\n打开文件`data/chap6/6.1xlsx`，一起来实现【案例7】，当数据集以横向形式时，如果查询到需要的数据\r\n\r\n![6.9](./images/chap6/6.9.png)\r\n\r\n在C2单元格中输入如下公式\r\n\r\n**=XLOOKUP(B6,B2:L2,B1:L1)**\r\n\r\n细心的同学发现，横向数据的查询方法与纵向数据并无太大区别\r\n\r\n## 任务\r\n\r\n​\t1.选择VLOOKUP和XLOOKUP这2种函数中的一种，完成`data/chap6/6.1xlsx`中的【案例1-4】\r\n\r\n"
  },
  {
    "path": "历史版本/V2.0/7. Excel的函数-动态函数.md",
    "content": "## 7. Excel的函数3\r\n\r\n> 在本节中会讲解一些Excel更新的动态函数，从而帮助大家更好的掌握Excel的数据处理与分析\r\n\r\n## 7.1 FILTER\r\n\r\n> 在工作中，我们需要根据指定的条件，将符合条件的所有记录从数据源表格式查找过来，一是可以用高级筛选。但高级筛选在查询下一个单位时 ，需要重新设置一次，很麻烦。二是用函数公式查询。典型的套路有：INDEX+SMALL+ROW、或者LOOKUP+COUNTIF+OFFSET，而这样的方法对初学者非常不友好，而EXCEL新更新的感受FILTER可以很好的解决这个问题。\r\n\r\n【FILTER】函数=FILTER（数据区域，筛选条件，[无满足条件的记录时返回的值]）\r\n\r\n接下来就看看FILTER的实际应用案例\r\n\r\n### 7.1.1 单条件筛选\r\n\r\n打开`data/chap7/7.1xlsx`中的【案例1】\r\n\r\n获得湖北区的相关数据\r\n\r\n在J2单元格中输入\r\n\r\n**=FILTER(A2:G30,C2:C30=\"湖北区\")**    注意数据区域不包含标题\r\n\r\n生成的数据的动态数组（WPS由于不兼容动态数组，稍微和Excel有点区别，会产生数据溢出的情况）\r\n\r\n![7.1](./images/chap7/7.1.png)\r\n\r\n### 7.1.2 返回选定的列\r\n\r\n打开`data/chap7/7.1xlsx`中的【案例1】\r\n\r\n如果在实际的任务中不需要所有的列，只需要其中的几行，那么应该怎么操作？\r\n\r\n可以在K2单元格中输入\r\n\r\n**=FILTER(F2:G30,C2:C30=\"湖北区\")**\r\n\r\n细心的同学就发现了这里与7.1.1中的不同，如果需要返回其中的几行，只需要将数据区域修改为自己需要的区域即可\r\n\r\n现在需要知道湖北区的最大销售金额是多少\r\n\r\n**=MAX(FILTER(F2:F30,C2:C30=\"湖北区\"))**\r\n\r\n### 7.1.3 多条件筛选\r\n\r\n打开`data/chap7/7.1xlsx`中的【案例1】\r\n\r\nFILTER函数中的多条件筛选，使用`+`来表示或，使用`*`表示且\r\n\r\n例如，需要计算湖北区、湖南区大最大销售金额，那么函数公式为\r\n\r\n**=MAX(FILTER(F2:F30,(C2:C30=\"湖北区\")+(C2:C30=\"湖南区\")))**\r\n\r\n例如，需要计算湖北区商品2的最大销售金额，那么函数公式为\r\n\r\n**=MAX(FILTER(F2:F30,(C2:C30=\"湖北区\")*(D2:D30=\"商品2\")))**\r\n\r\n## 7.2 SUMIF函数\r\n\r\n>  在Excel数据任务处理中，会遇到大量的求和的任务，SUMIF函数在求和任务中具有天然优势，因此在本节中将详细的讲解SUMIF函数的相关用法\r\n\r\n【SUMIF函数】=SUMIF(条件区域，求和条件，[实际求和区域])  --->实际求和区域位选择条件\r\n\r\n### 7.2.1 案例1\r\n\r\n打开`data/chap7/7.2xlsx`中的【案例1】\r\n\r\n现在有几名同学的考试成绩，现在想统计数学成绩在90分以上的成绩之和\r\n\r\n![7.2](./images/chap7/7.2.png)\r\n\r\n那么可以输入如下的函数公式\r\n\r\n**=SUMIF(B:B,\">=90\",B:B)**\r\n\r\n第一个参数为条件区域，因为要判断数学成绩，所以这里选择B列，当然这里也可以修改为实际的区域B2:B12\r\n\r\n第二个参数为判定条件，判定条件为大于等于90\r\n\r\n第三个参数为实际求和区，这是选填参数\r\n\r\n### 7.2.2 案例2\r\n\r\n打开`data/chap7/7.2xlsx`中的【案例2】\r\n\r\n现在想统计小米系列的产品销售额是多少？\r\n\r\n![7.3](./images/chap7/7.3.png)\r\n\r\nSUMIF函数支持模糊匹配，因此我们输入如下公式\r\n\r\n**=SUMIF(B:B,\"小米*\",C:C)**\r\n\r\n使用小米*匹配所有的小米系产品\r\n\r\n### 7.2.3 案例3\r\n\r\n打开`data/chap7/7.2xlsx`中的【案例3】\r\n\r\n现在想统计1月-3月的预计销售额预计销售和实际销售额\r\n\r\n![7.4](./images/chap7/7.4.png)\r\n\r\n因此可以巧用SUMIF函数，将条件区域进行横向选择，条件选择自己需要的字段，因此输入如下两个函数公式，并向下拖拽填充其他位置\r\n\r\n`=SUMIF($B$2:$G$2,I$2,B3:G3)`\r\n\r\n`=SUMIF($B$2:$G$2,H$2,B3:G3)`\r\n\r\n`$`在Excel中是绝对引用，公式中引用的单元格如果使用绝对引用 `$`，那么向下拖拽的过程中，这个单元格不会增加。\r\n\r\n例如，在J3单元格中输入`=C3`，在K3单元格中输入`=$C$3`并向下拖拽进行公式填充，观察区别\r\n\r\n![7.5](./images/chap7/7.5.png)\r\n\r\n发现，如果使用绝对引用，引用格式值并不会随着公式的拖拽而改变，这就是绝对引用与非绝对引用的区别。\r\n\r\n### 7.2.4 案例4\r\n\r\n打开`data/chap7/7.2xlsx`中的【案例4】，现在需要统计语文成绩在80分以上，90分以下同学的数学成绩之和\r\n\r\n![7.6](./images/chap7/7.6.png)\r\n\r\n那么遇到这种情况应该怎么处理呢？相比于前面的案例，这里有2个筛选条件，而SUMIF函数无法满足需求，这里可以使用SUMIFS函数\r\n\r\n【SUMIFS函数】=SUMIFS（实际求和区域，条件区域1，条件1，条件区域2，条件2）\r\n\r\n因此写如下函数公式\r\n\r\n**=SUMIFS(C2:C13,B2:B13,\">80\",B2:B13,\"<90\")**\r\n\r\n因为要求数学成绩，所以第一个参数为C2:C13，而筛选条件为语文，因此条件区域为B2:B13\r\n\r\n## 7.3 SUBTOTAL函数\r\n\r\nExcel中有数据筛选非常好用，那么，如果想统计筛选后的结果应该怎么弄？例如想知道筛选后的销售总额\r\n\r\n打开`data/chap7/7.3xlsx`中的案例1，使用筛选选择不同的区，而SUM求和并没有变化\r\n\r\n![7.7](./images/chap7/7.7.png)\r\n\r\n如果想实现上述需求，可以使用【SUBTOTAL函数】\r\n\r\n【SUBTOTAL函数】=SUBTOTAL(功能函数,选择区域)\r\n\r\n功能函数\r\n\r\n数字 1-11 或 101-111，用于指定要为分类汇总使用的函数。 如果使用 1-11，将包括手动隐藏的行，如果使用 101-111，则排除手动隐藏的行；始终排除已筛选掉的单元格。详见附件1\r\n\r\n在J2单元格中输入如下公式\r\n\r\n**=SUBTOTAL(9,F2:F21)**\r\n\r\n可以看到SUBTOTAL对筛选的数据列进行正确的求和，而SUM无法跟随选择的数据列进行正确求和\r\n\r\n![7.8](./images/chap7/7.8.png)\r\n\r\n【附件1】\r\n\r\n| **Function_num(包括隐藏的行)** | **Function_num**(忽略隐藏的行) | 函数    |\r\n| ------------------------------ | ------------------------------ | ------- |\r\n| 1                              | 101                            | AVERAGE |\r\n| 2                              | 102                            | COUNT   |\r\n| 3                              | 103                            | COUNTA  |\r\n| 4                              | 104                            | MAX     |\r\n| 5                              | 105                            | MIN     |\r\n| 6                              | 106                            | PRODUCT |\r\n| 7                              | 107                            | STDEV.S |\r\n| 8                              | 108                            | STDEV.P |\r\n| 9                              | 109                            | SUM     |\r\n| 10                             | 110                            | VAR.S   |\r\n| 11                             | 111                            | VAR.P   |\r\n\r\n## 任务\r\n\r\n​\t1.打开`data/chap7/7.1xlsx`中的【案例1】计算河北区中商品1的最小销售额\r\n\r\n​\t2.打开`data/chap7/7.1xlsx`中的【案例1】计算湖北中什么渠道下的什么商品具有最高销售额\r\n\r\n​\t3.打开`data/chap7/7.2xlsx`中的【案例1】语文成绩在80分以上的同学成绩之和\r\n\r\n​\t4.打开`data/chap7/7.2xlsx`中的【案例2】统计所有苹果系列产品的销售额\r\n\r\n​\t5.打开`data/chap7/7.2xlsx`中的【案例5】完成所有手机的销售额求和\r\n"
  },
  {
    "path": "历史版本/V2.0/8. Excel数据可视化.md",
    "content": "## 8. Excel数据可视化\r\n\r\n> 对于Excel中的数据可视化，相信各位读者应该能很熟练的使用，使用Excel汇总各种类型图，包括柱状图、折线图等等，从而让数据进行图形化展示。基于此，本节中对Excel中的数据作图部分不做展开讲解，本节更加偏重于讲解另一类辅助数据可视化的部分。\r\n\r\nhttps://baijiahao.baidu.com/s?id=1733425891127825825&wfr=spider&for=pc\r\n\r\n## 8.1 条形图\r\n\r\n打开`data/chap8/8.1xlsx`中的【案例1】，现在有湖北区2022/01/01的不同商品的销售额，怎么更加直观的展示销售额之间的差别呢？\r\n\r\n![8.1](./images/chap8/8.1.png)\r\n\r\n这里可以使用条形图对销售的金额进展可视化展示\r\n\r\n选择【开始】-->【条件格式】-->【数据条】\r\n\r\n![8.2](./images/chap8/8.2.png)\r\n\r\n通过对销售金额进行数据条的填充，读者可以很快锁定湖北区2022/01/01销售额中，韩闲具有最高销售额为9442\r\n\r\n如果只想显示条形图，不想显示金额应该如果操作？\r\n\r\n选择条形图区域--->条件格式--->管理规则\r\n\r\n![8.3](./images/chap8/8.3.png)\r\n\r\n打开管理规则后可以看到，选择设置的规则，点击编辑规则\r\n\r\n![8.4](./images/chap8/8.4.png)\r\n\r\n选择仅显示数据条，当然可以在颜色的地方选择自己喜欢的颜色\r\n\r\n![8.5](./images/chap8/8.5.png)\r\n\r\n选择之后得到如下效果\r\n\r\n![8.6](./images/chap8/8.6.png)\r\n\r\n## 8.2 条件单元格格式\r\n\r\n打开`data/chap8/8.1xlsx`中的【案例2】，现在有不同业务员向客户推销商品的相关信息，现在需要将截止日期还没有过今天的标注出来，应该如何操作？\r\n\r\n![8.7](./images/chap8/8.7.png)\r\n\r\nEXCEL中【TODAY】函数可以获得当前日期\r\n\r\n这里，可以使用Excel中的条件格式进行自动识别\r\n\r\n1.选择需要设置条件的列；\r\n\r\n2.选择条件格式；\r\n\r\n3.选择新建规则\r\n\r\n![8.8](./images/chap8/8.8.png)\r\n\r\n这里选择使用公式确定要设置格式的单元格\r\n\r\n因为选择的区域为B2:B10  因此输入的公式满足B2要求，剩余的单元格会自动填充，因此输入的公式为\r\n\r\n**=B2>TODAY()**\r\n\r\n接下来设置单元格的格式，在本节示范中选择对满足条件的单元格填充为黄色，得到如下效果图\r\n\r\n![8.9](./images/chap8/8.9.png)\r\n\r\n![8.10](./images/chap8/8.10.png)\r\n\r\n## 8.3 迷你图\r\n\r\n打开`data/chap8/8.3.xlsx`中原始数据，现在知道不同业务员1-12月的销售额，且销售额最差月份以及业务员的销售额的变化趋势，应该怎么操作？\r\n\r\n1.确定销售额最差月份\r\n\r\n这里可以使用XLOOKUP公式，具体公式为\r\n\r\n`=XLOOKUP(MIN(B2:M2),B2:M2,$B$1:$M$1)`\r\n\r\n![8.11](./images/chap8/8.11.png)\r\n\r\n2.在B2插入新的单元格，命名为趋势图\r\n\r\n点击插入，找到迷你图部分，选择折线，数据范围选择为C2:N13，防止迷你图的位置选择在B2:B13单元格\r\n\r\n![8.12](./images/chap8/8.12.png)\r\n\r\n生成迷你图后，可以在显示处，调整迷你图显示的重要点，这里显示折线中的最低点，通过图中可以看到，蔡勇仁的销售业绩趋势是不断下降，而江宁寒的销售业绩不断上升，迷你图能够很好的展示原数据与数据变化的趋势情况\r\n\r\n![8.13](./images/chap8/8.13.png)\r\n\r\n## 任务\r\n\r\n​\t1.选择`data/chap8/8.2.xlsx`工作簿中的【案例1】，对拜访客户数大于5以上的业务员进行黄色填充\r\n"
  },
  {
    "path": "历史版本/V2.0/9. Excel数据透视.md",
    "content": "## 9. Excel数据透视\r\n\r\n> 数据透视是Excel中个强大的数据处理和分析工具，能够快速实现数据的汇总与统计分析，本节重点讲解Excel数据透视的相关操作\r\n\r\n## 9.1Excel数据透视表\r\n\r\n打开`data/chap9/9.1.xlsx`中的数据源，现在对数据源进行数据透视\r\n\r\n1.选择插入\r\n\r\n2.选择数据透视表\r\n\r\n3.选择表格区域\r\n\r\n4.选择数据透视表放置的位置\r\n\r\n![9.1](./images/chap9/9.1.png)\r\n\r\n可以看到，在新的数据表中出现了数据透视表\r\n\r\n![9.2](./images/chap9/9.2.png)\r\n\r\n例如，想知道不同月份的不同区域销售金额统计情况，可以将区域置于列，月置于行，金额的求和项置于值，即可得到不同区域不同月份的销售金额之和\r\n\r\n![9.3](./images/chap9/9.3.png)\r\n\r\n如果又想知道不同店员的销售额怎么办呢？\r\n\r\n1.点击数据透视表分析\r\n\r\n2.点击插入切片器\r\n\r\n3.选择插片器的字段\r\n\r\n![9.4](./images/chap9/9.4.png)\r\n\r\n点击不同的店员，可以直接统计该店员的销售额，这里的插片器相当于直接筛选店员的数据做统计。如果想统计多个店员的数据，可以点击切片器的多选项，可以同时统计多个店员的数据。\r\n\r\n![9.5](./images/chap9/9.5.png)\r\n\r\n![9.6](./images/chap9/9.6.png)\r\n\r\n## 9.2Excel数据透视图\r\n\r\n打开`data/chap9/9.1.xlsx`中的数据源，现在对数据源进行数据透视图\r\n\r\n1.选择插入\r\n\r\n2.选择数据透视图\r\n\r\n3.选择创建数据透视图，选择数据源作为数据区域\r\n\r\n4.选择新工作表\r\n\r\n![9.7](./images/chap9/9.7.png)\r\n\r\n![9.8](./images/chap9/9.8.png)\r\n\r\n选择月为类别，选择区域为图例，选择金额求和作为值，得到如下透视图\r\n\r\n![9.9](./images/chap9/9.9.png)\r\n\r\n如果，想切换透视图的类型，可以选择不同的图像类型，例如我们想知道不同月份销售的变化趋势，可以选择为折线图\r\n\r\n![9.10](./images/chap9/9.10.png)\r\n\r\n![9.11](./images/chap9/9.11.png)\r\n\r\n当然数据透视图也支持插片器，同样是选择店员作为切片的条件\r\n\r\n![9.12](./images/chap9/9.12.png)\r\n\r\n## 任务\r\n\r\n​\t1.选择`data/chap9/9.1.xlsx`工作簿中的【数据源】绘制不同的透视图\r\n"
  },
  {
    "path": "历史版本/V2.0/LICENSE",
    "content": "MIT License\r\n\r\nCopyright (c) 2021 Datawhale\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n"
  },
  {
    "path": "历史版本/V2.0/README.md",
    "content": "# Free-Excel\r\n\r\nfree excel中文意为**自由Excel**，源于希望学习者能够通过该教程能够更加自由地使用Excel进行数据分析、数据统计，解放Excel不再为Excel所困。内容上会更加偏实践应用，力求尽可能简单而又具有一定深度。其他很多教程都是按功能模块来讲解，而且还详细的说明每个功能，令人枯燥乏味。Free Excel根据多年工作经验总结而成，很多内容是常用且重要的，同时学完后能加深对Excel的理解。授之以鱼不如授之以渔，让我们开始愉快的Excel之旅吧！\r\n\r\nv1.0.0 beta版B站配套视频：https://www.bilibili.com/video/BV1r64y1h75T\r\n\r\nv2.0.0 版配套视频正在筹备中...\r\n\r\n## 环境\r\n\r\n本教程所使用Excel版本为2016或者2019，未提供下载安装，请自行装好环境以便操作。如果电脑没有Excel，可以下载WPS进行相关的操作学习。\r\n\r\nWPS下载链接：https://www.wps.cn/product\r\n\r\n注：本课程中部分函数为Excel新更新的内容，如果想体验Excel新添加的函数，可将Excel更新至最新版，或将WPS更新至11.1版及以上\r\n\r\n## v2.0.0内容大纲\r\n- 第一章数据缘何而来\r\n  - 1.1 了解Excel\r\n  - 1.2 从文件导入数据\r\n  - 1.3 从网页导入数据\r\n- 第二章Excel数据格式\r\n  - 2.1 单元格数据类型\r\n  - 2.2 单元格格式\r\n  - 2.3 转换单元格数据\r\n- 第三章Excel的快捷操作\r\n  - 3.1 快捷键简介\r\n  - 3.2 Excel快捷键实践\r\n- 第四章Excel的表合并\r\n  - 4.1 多表行合并\r\n  - 4.2 多表列合并\r\n- 第五章Excel的函数1\r\n  - 5.1 if函数\r\n  - 5.2 if函数与复杂逻辑\r\n  - 5.3 ifs函数\r\n- 第六章Excel的函数2\r\n  - 6.1 VLOOKUP\r\n  - 6.2 XLOOKUP \r\n- 第七章Excel的函数3\r\n  - 7.1 FILTER\r\n  - 7.2 SUMIF函数\r\n  - 7.3 SUBTOTAL函数\r\n- 第八章Excel数据可视化\r\n  - 8.1 条形图\r\n  - 8.2 条件单元格格式\r\n  - 8.3 迷你图\r\n- 第九章Excel数据透视\r\n  - 9.1 Excel数据透视表\r\n  - 9.2 Excel数据透视图\r\n- 第十章Excel数据看板\r\n\r\n## 更新版本\r\n|    版本     |    日期    |       更新内容       |\r\n| :---------: | :--------: | :------------------: |\r\n| v1.0.0 beta | 2021-08-08 | 添加章节内容及数据集 |\r\n| v2.0.0      | 2022-09-09 | 全新的Excel内容与教程 |\r\n\r\n## 更新日志\r\n2022-04-16\r\n- 更新前言\r\n\r\n2022-08-09\r\n- 更新第一章 数据缘何而来\r\n\r\n2022-08-15\r\n- 更新第二章 Excel数据格式\r\n- 更新第三章 Excel的快捷操作\r\n\r\n2022-08-16\r\n- 更新第四章 Excel的表合并\r\n\r\n2022-08-21\r\n- 更新第五章 Excel的函数1\r\n\r\n2022-08-25\r\n- 更新第六章 Excel的函数2\r\n\r\n2022-09-01\r\n- 更新第七章 Excel的函数3\r\n\r\n2022-09-04\r\n- 更新第八章 Excel数据可视化\r\n\r\n2022-09-05\r\n- 更新第九章 Excel数据透视\r\n\r\n2022-09-08\r\n- 更新第十章 Excel看板\r\n\r\n## 贡献\r\n\r\n|       贡献者       |     版本      |             主页              |          联系          |\r\n| :----------------: | :-----------:| :--------------------------: | :--------------------: |\r\n| Jan Yang（简杨君） | v1.0.0 beta | https://github.com/yangjiada | yang.jiada@foxmail.com |\r\n| 牧小熊（聂雄伟）   | v2.0.0       |https://github.com/muxiaoxiong| xiongweinie@foxmail.com|\r\n\r\n\r\n## 关注我们\r\n\r\n> \"Datawhale是一个专注AI领域的开源组织，以“for the learner，和学习者一起成长”为愿景，构建对学习者最有价值的开源学习社区。关注我们，一起学习成长。\"\r\n\r\n[![img](images/datawhale_code.jpeg)](https://github.com/datawhalechina/team-learning-sql/blob/main/img/datawhale_code.jpeg)\r\n"
  },
  {
    "path": "历史版本/V2.0/images/1.txt",
    "content": ""
  }
]