diff --git a/.gitignore b/.gitignore index 837e02c..cf0540a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,14 @@ venv *.pyc __pycache__ +### VisualStudioCode ### +.vscode/* +.vscode/** +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index ca23c83..0000000 --- a/.gitpod.yml +++ /dev/null @@ -1,3 +0,0 @@ -tasks: - - before: gp open Day01-15/Day01/code/hello.py - command: python3 Day01-15/Day01/code/hello.py diff --git a/Day01-15/Day01/初识Python.md b/Day01-15/01.初识Python.md similarity index 63% rename from Day01-15/Day01/初识Python.md rename to Day01-15/01.初识Python.md index fecb2c8..4e09bf4 100644 --- a/Day01-15/Day01/初识Python.md +++ b/Day01-15/01.初识Python.md @@ -1,16 +1,16 @@ -## Day01 - 初识Python +## 初识Python ### Python简介 #### Python的历史 1. 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。 -2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,同时提供了“列表”和“字典”等核心数据类型,同时支持以模块为基础的拓展系统。 +2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,同时提供了“列表”和“字典”等核心数据类型,同时支持以模块为基础来构造应用程序。 3. 1994年1月:Python 1.0正式发布。 4. 2000年10月16日:Python 2.0发布,增加了实现完整的[垃圾回收](https://zh.wikipedia.org/wiki/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)),提供了对[Unicode](https://zh.wikipedia.org/wiki/Unicode)的支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。 5. 2008年12月3日:Python 3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python 2.x版本,所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。 -目前我们使用的Python 3.7.x的版本是在2018年发布的,Python的版本号分为三段,形如A.B.C。其中A表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(如修复了某个Bug),只要有修改就增加C。如果对Python的历史感兴趣,可以查看一篇名为[《Python简史》](http://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html)的博文。 +目前我们使用的Python 3.7.x的版本是在2018年发布的,Python的版本号分为三段,形如A.B.C。其中A表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(例如:修复了某个Bug),只要有修改就增加C。如果对Python的历史感兴趣,可以阅读名为[《Python简史》](http://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html)的博文。 #### Python的优缺点 @@ -27,18 +27,20 @@ Python的优点很多,简单的可以总结为以下几点。 Python的缺点主要集中在以下几点。 1. 执行效率稍低,因此计算密集型任务可以由C/C++编写。 -2. 代码无法加密,但是现在的公司很多都不是卖软件而是卖服务,这个问题会被淡化。 +2. 代码无法加密,但是现在很多公司都不销售卖软件而是销售服务,这个问题会被淡化。 3. 在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。 #### Python的应用领域 -目前Python在云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。 +目前Python在Web应用开发、云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。 ### 搭建编程环境 #### Windows环境 -可以在[Python官方网站](https://www.python.org)下载到Python的Windows安装程序(exe文件),需要注意的是如果在Windows 7环境下安装需要先安装Service Pack 1补丁包(可以通过一些工具软件自动安装系统补丁的功能来安装),安装过程建议勾选“Add Python 3.6 to PATH”(将Python 3.6添加到PATH环境变量)并选择自定义安装,在设置“Optional Features”界面最好将“pip”、“tcl/tk”、“Python test suite”等项全部勾选上。强烈建议使用自定义的安装路径并保证路径中没有中文。安装完成会看到“Setup was successful”的提示,但是在启动Python环境时可能会因为缺失一些动态链接库文件而导致Python解释器无法运行,常见的问题主要是api-ms-win-crt\*.dll缺失以及更新DirectX之后导致某些动态链接库文件缺失,前者可以参照[《api-ms-win-crt\*.dll缺失原因分析和解决方法》]()一文讲解的方法进行处理或者直接在[微软官网](https://www.microsoft.com/zh-cn/download/details.aspx?id=48145)下载Visual C++ Redistributable for Visual Studio 2015文件进行修复,后者可以下载一个DirectX修复工具进行修复。 +可以在[Python官方网站](https://www.python.org)下载到Python的Windows安装程序(exe文件),需要注意的是如果在Windows 7环境下安装Python 3.x,需要先安装Service Pack 1补丁包(可以通过一些工具软件自动安装系统补丁的功能来安装),安装过程建议勾选“Add Python 3.x to PATH”(将Python 3.x添加到PATH环境变量)并选择自定义安装,在设置“Optional Features”界面最好将“pip”、“tcl/tk”、“Python test suite”等项全部勾选上。强烈建议选择自定义的安装路径并保证路径中没有中文。安装完成会看到“Setup was successful”的提示。如果稍后运行Python程序时,出现因为缺失一些动态链接库文件而导致Python解释器无法工作的问题,可以按照下面的方法加以解决。 + +如果系统显示api-ms-win-crt\*.dll文件缺失,可以参照[《api-ms-win-crt\*.dll缺失原因分析和解决方法》]()一文讲解的方法进行处理或者直接在[微软官网](https://www.microsoft.com/zh-cn/download/details.aspx?id=48145)下载Visual C++ Redistributable for Visual Studio 2015文件进行修复;如果是因为更新Windows的DirectX之后导致某些动态链接库文件缺失问题,可以下载一个[DirectX修复工具]()进行修复。 #### Linux环境 @@ -81,24 +83,32 @@ export PATH=$PATH:/usr/local/python37/bin # ... 此处省略下面的代码 ... ``` +激活环境变量。 + ```Shell source .bash_profile ``` -#### MacOS环境 +#### macOS环境 -MacOS也是自带了Python 2.x版本的,可以通过[Python的官方网站](https://www.python.org)提供的安装文件(pkg文件)安装3.x的版本。默认安装完成后,可以通过在终端执行python命令来启动2.x版本的Python解释器,可以通过执行python3命令来启动3.x版本的Python解释器。 +macOS也自带了Python 2.x版本,可以通过[Python的官方网站](https://www.python.org)提供的安装文件(pkg文件)安装Python 3.x的版本。默认安装完成后,可以通过在终端执行python命令来启动2.x版本的Python解释器,可以通过执行python3命令来启动3.x版本的Python解释器。 ### 从终端运行Python程序 #### 确认Python的版本 -在终端或命令行提示符中键入下面的命令。 +可以Windows的命令行提示符中键入下面的命令。 ```Shell python --version ``` -当然也可以先输入python进入交互式环境,再执行以下的代码检查Python的版本。 +或者是在Linux或macOS系统的终端中键入下面的命令。 + +```Shell +python3 --version +``` + +当然也可以先输入python或python3进入交互式环境,再执行以下的代码检查Python的版本。 ```Python import sys @@ -109,7 +119,7 @@ print(sys.version) #### 编写Python源代码 -可以用文本编辑工具(推荐使用Sublime、Atom、TextMate、VSCode等高级文本编辑工具)编写Python源代码并将其命名为hello.py保存起来,代码内容如下所示。 +可以用文本编辑工具(推荐使用[Sublime]()、[Atom]()、[Visual Studio Code]()等高级文本编辑工具)编写Python源代码并用py作为后缀名保存该文件,代码内容如下所示。 ```Python print('hello, world!') @@ -123,6 +133,12 @@ print('hello, world!') python hello.py ``` +或 + +```Shell +python3 hello.py +``` + ### 代码中的注释 注释是编程语言的一个重要组成部分,用于在源代码中解释代码的作用从而增强程序的可读性和可维护性,当然也可以将源代码中不需要参与运行的代码段通过注释来去掉,这一点在调试程序的时候经常用到。注释在随源代码进入预处理器或编译时会被移除,不会在目标代码中保留也不会影响程序的执行结果。 @@ -156,34 +172,45 @@ IDLE是安装Python环境时自带的集成开发工具,如下图所示。但 #### IPython - 更好的交互式编程工具 -IPython是一种基于Python的交互式解释器。相较于原生的Python Shell,IPython提供了更为强大的编辑和交互功能。可以通过Python的包管理工具pip安装IPython和Jupyter,具体的操作如下所示。 +IPython是一种基于Python的交互式解释器。相较于原生的Python交互式环境,IPython提供了更为强大的编辑和交互功能。可以通过Python的包管理工具pip安装IPython和Jupyter,具体的操作如下所示。 ```Shell -pip install ipython jupyter +pip install ipython ``` -或者 +或 ```Shell -python -m pip install ipython jupyter +pip3 install ipython ``` 安装成功后,可以通过下面的ipython命令启动IPython,如下图所示。 ![](./res/python-ipython.png) -当然我们也可以通过Jupyter运行名为notebook的项目在浏览器窗口中进行交互式操作。 +当然,我们也可以通过安装Jupyter工具并运行名为notebook的程序在浏览器窗口中进行交互式代码编写操作。 + +```Shell +pip install jupyter +``` + +或 + +```Shell +pip3 intall jupyter +``` + +然后执行下面的命令: ```Shell jupyter notebook ``` + + ![](./res/python-jupyter-2.png) -#### Anaconda - 一站式的数据科学神器 -Anaconda是专注于数据科学的Python发行版本,其包含了conda、Python等190多个科学包及其依赖项。因为包含的内容较多,Anaconda的下载文件比较大,如果只需要其中一部分的包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。对于学习数据科学的人来说,Anaconda是绝对的神器,有兴趣的读者可以阅读[《致Python初学者们 - Anaconda入门使用指南》](https://www.jianshu.com/p/169403f7e40c)一文进行了解。 - -#### Sublime - 文本编辑神器 +#### Sublime / Visual Studio Code - 高级文本编辑器 ![](./res/python-sublime.png) @@ -215,48 +242,29 @@ Anaconda是专注于数据科学的Python发行版本,其包含了conda、Pyth - Python PEP8 Autoformat - PEP8规范自动格式化插件。 - ConvertToUTF8 - 将本地编码转换为UTF-8。 +> 说明:事实上Visual Studio Code可能是更好的选择,它不用花钱并提供了更为完整和强大的功能,有兴趣的读者可以自行研究。 + #### PyCharm - Python开发神器 -PyCharm的安装、配置和使用我们在后面会进行介绍。 +PyCharm的安装、配置和使用在[《玩转PyCharm》](../玩转PyCharm.md)进行了介绍,有兴趣的读者可以选择阅读。 ![](./res/python-pycharm.png) -#### Gitpod - 一键式在线开发工具 - -只需单击即可在GitHub上打开任何Python项目。 - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/jackfrued/Python-100-Days) - ### 练习 -1. 在Python交互环境中查看下面的代码结果,并将内容翻译成中文。 +1. 在Python交互环境中查看下面的代码结果,并试着将这些内容翻译成中文。 ```Python import this - - Beautiful is better than ugly. - Explicit is better than implicit. - Simple is better than complex. - Complex is better than complicated. - Flat is better than nested. - Sparse is better than dense. - Readability counts. - Special cases aren't special enough to break the rules. - Although practicality beats purity. - Errors should never pass silently. - Unless explicitly silenced. - In the face of ambiguity, refuse the temptation to guess. - There should be one-- and preferably only one --obvious way to do it. - Although that way may not be obvious at first unless you're Dutch. - Now is better than never. - Although never is often better than *right* now. - If the implementation is hard to explain, it's a bad idea. - If the implementation is easy to explain, it may be a good idea. - Namespaces are one honking great idea -- let's do more of those! ``` + > 说明:当前键入上面的命令后会在交互式环境中看到如下所示的输出,这段内容被称为“Python之禅”,里面讲述的道理不仅仅适用于Python,也适用于其他编程语言。 + > + 2. 学习使用turtle在屏幕上绘制图形。 + > 说明:turtle是Python内置的一个非常有趣的模块,特别适用于让小朋友体会什么是编程,它最早是Logo语言的一部分,Logo语言是Wally Feurzig和Seymour Papert在1966发明的编程语言. + ```Python import turtle diff --git a/Day01-15/Day02/语言元素.md b/Day01-15/02.语言元素.md similarity index 76% rename from Day01-15/Day02/语言元素.md rename to Day01-15/02.语言元素.md index a4e6476..d5d7c0d 100644 --- a/Day01-15/Day02/语言元素.md +++ b/Day01-15/02.语言元素.md @@ -1,8 +1,10 @@ -## Day02 - 语言元素 +## 语言元素 #### 指令和程序 -计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说的中央处理器,它的功能是执行各种运算和控制指令以及处理计算机软件中的数据。我们通常所说的程序实际上就是指令的集合,我们程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情。今天我们使用的计算机虽然器件做工越来越精密,处理能力越来越强大,但究其本质来说仍然属于[“冯·诺依曼结构”](https://zh.wikipedia.org/wiki/%E5%86%AF%C2%B7%E8%AF%BA%E4%BC%8A%E6%9B%BC%E7%BB%93%E6%9E%84)的计算机。“冯·诺依曼结构”有两个关键点,一是指出要将存储设备与中央处理器分开,二是提出了将数据以二进制方式编码。二进制是一种“逢二进一”的计数法,跟我们人类使用的“逢十进一”的计数法没有实质性的区别,人类因为有十根手指所以使用了十进制(因为在数数时十根手指用完之后就只能进位了,当然凡事都有例外,玛雅人可能是因为长年光着脚的原因把脚趾头也算上了,于是他们使用了二十进制的计数法,在这种计数法的指导下玛雅人的历法就与我们平常使用的历法不一样,而按照玛雅人的历法,2012年是上一个所谓的“太阳纪”的最后一年,而2013年则是新的“太阳纪”的开始,后来这件事情被以讹传讹的方式误传为”2012年是玛雅人预言的世界末日“这种荒诞的说法,今天我们可以大胆的猜测,玛雅文明之所以发展缓慢估计也与使用了二十进制有关)。对于计算机来说,二进制在物理器件上来说是最容易实现的(高电压表示1,低电压表示0),于是在“冯·诺依曼结构”的计算机都使用了二进制。虽然我们并不需要每个程序员都能够使用二进制的思维方式来工作,但是了解二进制以及它与我们生活中的十进制之间的转换关系,以及二进制与八进制和十六进制的转换关系还是有必要的。如果你对这一点不熟悉,可以自行使用[维基百科](https://zh.wikipedia.org/wiki/%E4%BA%8C%E8%BF%9B%E5%88%B6)或者[百度百科](https://baike.baidu.com)科普一下。 +计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说的中央处理器,它的功能是执行各种运算和控制指令以及处理计算机软件中的数据。我们通常所说的程序实际上就是指令的集合,我们程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情。今天我们大多数时候使用的计算机,虽然它们的元器件做工越来越精密,处理能力越来越强大,但究其本质来说仍然属于[“冯·诺依曼结构”](https://zh.wikipedia.org/wiki/%E5%86%AF%C2%B7%E8%AF%BA%E4%BC%8A%E6%9B%BC%E7%BB%93%E6%9E%84)的计算机。“冯·诺依曼结构”有两个关键点,一是指出要将存储设备与中央处理器分开,二是提出了将数据以二进制方式编码。二进制是一种“逢二进一”的计数法,跟我们人类使用的“逢十进一”的计数法没有实质性的区别,人类因为有十根手指所以使用了十进制(因为在数数时十根手指用完之后就只能进位了,当然凡事都有例外,玛雅人可能是因为长年光着脚的原因把脚趾头也算上了,于是他们使用了二十进制的计数法,在这种计数法的指导下玛雅人的历法就与我们平常使用的历法不一样,而按照玛雅人的历法,2012年是上一个所谓的“太阳纪”的最后一年,而2013年则是新的“太阳纪”的开始,后来这件事情被以讹传讹的方式误传为”2012年是玛雅人预言的世界末日“这种荒诞的说法,今天我们可以大胆的猜测,玛雅文明之所以发展缓慢估计也与使用了二十进制有关)。对于计算机来说,二进制在物理器件上来说是最容易实现的(高电压表示1,低电压表示0),于是在“冯·诺依曼结构”的计算机都使用了二进制。虽然我们并不需要每个程序员都能够使用二进制的思维方式来工作,但是了解二进制以及它与我们生活中的十进制之间的转换关系,以及二进制与八进制和十六进制的转换关系还是有必要的。如果你对这一点不熟悉,可以自行使用[维基百科](https://zh.wikipedia.org/wiki/%E4%BA%8C%E8%BF%9B%E5%88%B6)或者[百度百科](https://baike.baidu.com)科普一下。 + +> 提示:近期关于**量子计算机**的研究已经被推倒了风口浪尖,量子计算机基于量子力学进行运算,使用量子瞬移的方式来传递信息。2018年6月,Intel宣布开发出新款量子芯片并通过了在接近绝对零度环境下的测试;2019年1月,IBM向全世界发布了首款商业化量子计算机。 ### 变量和类型 @@ -50,12 +52,11 @@ print(a / b) print(a // b) print(a % b) print(a ** b) - ``` ```Python """ -使用input函数输入 +使用input()函数获取键盘输入 使用int()进行类型转换 用占位符格式化输出的字符串 @@ -72,7 +73,6 @@ print('%d / %d = %f' % (a, b, a / b)) print('%d // %d = %d' % (a, b, a // b)) print('%d %% %d = %d' % (a, b, a % b)) print('%d ** %d = %d' % (a, b, a ** b)) - ``` ```Python @@ -94,7 +94,6 @@ print(type(b)) print(type(c)) print(type(d)) print(type(e)) - ``` 在对变量类型进行转换时可以使用Python的内置函数(准确的说下面列出的并不是真正意义上的函数,而是后面我们要讲到的创建对象的构造方法)。 @@ -124,9 +123,9 @@ Python支持多种运算符,下表大致按照优先级从高到低的顺序 | `is` `is not` | 身份运算符 | | `in` `not in` | 成员运算符 | | `not` `or` `and` | 逻辑运算符 | -| `=` `+=` `-=` `*=` `/=` `%=` `//=` `**=` `&=` `\|=` `^=` `>>=` `<<=` | (复合)赋值运算符 | +| `=` `+=` `-=` `*=` `/=` `%=` `//=` `**=` `&=` `|=` `^=` `>>=` `<<=` | (复合)赋值运算符 | ->**说明:** 在实际开发中,如果搞不清楚优先级可以使用括号来确保运算的执行顺序。 +>**说明:** 在实际开发中,如果搞不清楚运算符的优先级,可以使用括号来确保运算的执行顺序。 下面的例子演示了运算符的使用。 @@ -161,7 +160,6 @@ print("flag4 = ", flag4) print("flag5 = ", flag5) print(flag1 is True) print(flag2 is not False) - ``` ### 练习 @@ -180,7 +178,6 @@ Author: 骆昊 f = float(input('请输入华氏温度: ')) c = (f - 32) / 1.8 print('%.1f华氏度 = %.1f摄氏度' % (f, c)) - ``` #### 练习2:输入圆的半径计算计算周长和面积。 @@ -200,7 +197,6 @@ perimeter = 2 * math.pi * radius area = math.pi * radius * radius print('周长: %.2f' % perimeter) print('面积: %.2f' % area) - ``` #### 练习3:输入年份判断是不是闰年。 diff --git a/Day01-15/Day03/分支结构.md b/Day01-15/03.分支结构.md similarity index 83% rename from Day01-15/Day03/分支结构.md rename to Day01-15/03.分支结构.md index aa3ef7d..08f2307 100644 --- a/Day01-15/Day03/分支结构.md +++ b/Day01-15/03.分支结构.md @@ -1,12 +1,12 @@ -## Day03 - 分支结构 +## 分支结构 -### 分支结构的应用场景 +### 应用场景 -迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种结构的代码我们称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后我们要根据玩家得到分数来决定究竟是进入第二关还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行,这就是程序中分支结构。类似的场景还有很多,给大家一分钟的时间,你应该可以想到至少5个以上这样的例子,赶紧试一试。 +迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后,我们要根据玩家得到分数来决定究竟是进入第二关,还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行。类似的场景还有很多,我们将这种结构称之为“分支结构”或“选择结构”。给大家一分钟的时间,你应该可以想到至少5个以上这样的例子,赶紧试一试。 ### if语句的使用 -在Python中,要构造分支结构可以使用`if`、`elif`和`else`关键字。所谓关键字就是有特殊含义的单词,像`if`和`else`就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。下面的例子中演示了如何构造一个分支结构。 +在Python中,要构造分支结构可以使用`if`、`elif`和`else`关键字。所谓**关键字**就是有特殊含义的单词,像`if`和`else`就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。下面的例子中演示了如何构造一个分支结构。 ```Python """ @@ -79,7 +79,7 @@ else: print('f(%.2f) = %.2f' % (x, y)) ``` -> **说明:** 大家可以自己感受一下这两种写法到底是哪一种更好。在之前我们提到的Python之禅中有这么一句话“Flat is better than nested.”,之所以提出这个观点是因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,如果可以使用扁平化的结构就不要去用嵌套,因此之前的写法是更好的做法。 +> **说明:** 大家可以自己感受一下这两种写法到底是哪一种更好。在之前我们提到的Python之禅中有这么一句话“Flat is better than nested.”,之所以提倡代码“扁平化”是因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,所以能使用扁平化的结构时就不要使用嵌套。 ### 练习 diff --git a/Day01-15/Day04/循环结构.md b/Day01-15/04.循环结构.md similarity index 88% rename from Day01-15/Day04/循环结构.md rename to Day01-15/04.循环结构.md index ff0fd26..0354abd 100644 --- a/Day01-15/Day04/循环结构.md +++ b/Day01-15/04.循环结构.md @@ -1,12 +1,14 @@ -## Day04 - 循环结构 +## 循环结构 -### 循环结构的应用场景 +### 应用场景 -如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令。当然你可能已经注意到了,刚才的描述中其实不仅仅有需要重复的动作,还有我们上一个章节讲到的分支结构。再举一个简单的例子,比如在我们的程序中要实现每隔1秒中在屏幕上打印一个"hello, world"这样的字符串并持续一个小时,我们肯定不能够将`print('hello, world')`这句代码写上3600遍,如果真的需要这样做那么编程的工作就太无聊了。因此,我们需要了解一下循环结构,有了循环结构我们就可以轻松的控制某件事或者某些事重复、重复、再重复的发生。在Python中构造循环结构有两种做法,一种是`for-in`循环,一种是`while`循环。 +如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令。当然你可能已经注意到了,刚才的描述中其实不仅仅有需要重复的动作,还有我们上一个章节讲到的分支结构。再举一个简单的例子,比如在我们的程序中要实现每隔1秒中在屏幕上打印一个"hello, world"这样的字符串并持续一个小时,我们肯定不能够将`print('hello, world')`这句代码写上3600遍,如果真的需要这样做,那么编程的工作就太无聊了。因此,我们还需要了解一下循环结构,有了循环结构我们就可以轻松的控制某件事或者某些事重复、重复、再重复的去执行。 + +在Python中构造循环结构有两种做法,一种是`for-in`循环,一种是`while`循环。 ### for-in循环 -如果明确的知道循环执行的次数或者是要对一个容器进行迭代(后面会讲到),那么我们推荐使用`for-in`循环,例如下面代码中计算![$\sum_{n=1}^{100}n$](./res/formula_1.png)。 +如果明确的知道循环执行的次数或者要对一个容器进行迭代(后面会讲到),那么我们推荐使用`for-in`循环,例如下面代码中计算1~100求和的结果($\displaystyle \sum \limits_{n=1}^{100}n$)。 ```Python """ @@ -63,7 +65,7 @@ print(sum) ### while循环 -如果要构造不知道具体循环次数的循环结构,我们推荐使用`while`循环,`while`循环通过一个能够产生或转换出`bool`值的表达式来控制循环,表达式的值为`True`循环继续,表达式的值为`False`循环结束。下面我们通过一个“猜数字”的小游戏(计算机出一个1~100之间的随机数,人输入自己猜的数字,计算机给出对应的提示信息,直到人猜出计算机出的数字)来看看如何使用`while`循环。 +如果要构造不知道具体循环次数的循环结构,我们推荐使用`while`循环。`while`循环通过一个能够产生或转换出`bool`值的表达式来控制循环,表达式的值为`True`循环继续,表达式的值为`False`循环结束。下面我们通过一个“猜数字”的小游戏(计算机出一个1~100之间的随机数,人输入自己猜的数字,计算机给出对应的提示信息,直到人猜出计算机出的数字)来看看如何使用`while`循环。 ```Python """ diff --git a/Day01-15/05.构造程序逻辑.md b/Day01-15/05.构造程序逻辑.md new file mode 100644 index 0000000..6471d38 --- /dev/null +++ b/Day01-15/05.构造程序逻辑.md @@ -0,0 +1,13 @@ +## 构造程序逻辑 + +分支和循环结构会帮助我们将程序中逻辑建立起来,将来我们的程序无论简单复杂,都是由顺序结构、分支结构、循环结构构成的。对于编程语言的初学者来说,首先要锻炼的是将人类自然语言描述的解决问题的步骤和方法翻译成代码的能力,其次就是熟练的运用之前学过的运算符、表达式以及最近的两个章节讲解的分支结构和循环结构的知识。有了这些基本的能力才能够通过计算机程序去解决各种各样的现实问题。所以,开始做练习吧! + +### 练习清单 + +1. 寻找[“水仙花数”](https://baike.baidu.com/item/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0)。 +2. 寻找[“完美数”](https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E6%95%B0/370913)。 +3. [“百钱百鸡”](https://baike.baidu.com/item/%E7%99%BE%E9%B8%A1%E7%99%BE%E9%92%B1/5857320)问题。 +4. 生成[“斐波拉切数列”](https://baike.baidu.com/item/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97/99145)。 +5. Craps赌博游戏。 + +> **提示**:练习的参考答案在code/Day05目录下。 \ No newline at end of file diff --git a/Day01-15/Day06/函数和模块的使用.md b/Day01-15/06.函数和模块的使用.md similarity index 96% rename from Day01-15/Day06/函数和模块的使用.md rename to Day01-15/06.函数和模块的使用.md index 217b800..85017c8 100644 --- a/Day01-15/Day06/函数和模块的使用.md +++ b/Day01-15/06.函数和模块的使用.md @@ -2,11 +2,11 @@ 在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。 -![$$x_1 + x_2 + x_3 + x_4 = 8$$](./res/formula_1.png) +![$$x_1 + x_2 + x_3 + x_4 = 8$$](./res/formula_3.png) 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。 -![$$C_M^N =\frac{M!}{N!(M-N)!}, \text{(M=7, N=3)} $$](./res/formula_2.png) +![$$C_M^N =\frac{M!}{N!(M-N)!}, \text{(M=7, N=3)} $$](./res/formula_4.png) 可以用Python的程序来计算出这个值,代码如下所示。 @@ -31,7 +31,7 @@ print(fm // fn // fmn) ### 函数的作用 -不知道大家是否注意到,在上面的代码中,我们做了3次求阶乘,这样的代码实际上就是重复代码。编程大师Martin Fowler先生曾经说过:“代码有很多种坏味道,重复是最坏的一种!”,要写出高质量的代码首先要解决的就是重复代码的问题。对于上面的代码来说,我们可以将计算阶乘的功能封装到一个称之为“函数”的功能模块中,在需要计算阶乘的地方,我们只需要“调用”这个“函数”就可以了。 +不知道大家是否注意到,在上面的代码中,我们做了3次求阶乘,这样的代码实际上就是重复代码。编程大师*Martin Fowler*先生曾经说过:“**代码有很多种坏味道,重复是最坏的一种!**”,要写出高质量的代码首先要解决的就是重复代码的问题。对于上面的代码来说,我们可以将计算阶乘的功能封装到一个称之为“函数”的功能模块中,在需要计算阶乘的地方,我们只需要“调用”这个“函数”就可以了。 ### 定义函数 diff --git a/Day01-15/Day07/字符串和常用数据结构.md b/Day01-15/07.字符串和常用数据结构.md similarity index 94% rename from Day01-15/Day07/字符串和常用数据结构.md rename to Day01-15/07.字符串和常用数据结构.md index 2272310..934e7ec 100644 --- a/Day01-15/Day07/字符串和常用数据结构.md +++ b/Day01-15/07.字符串和常用数据结构.md @@ -2,7 +2,9 @@ ### 使用字符串 -第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台电子计算机ENIAC每秒钟能够完成约5000次浮点运算。随着时间的推移,虽然对数值运算仍然是计算机日常工作中最为重要的事情之一,但是今天的计算机处理得更多的数据都是以文本信息的方式存在的,而Python表示文本信息的方式我们在很早以前就说过了,那就是字符串类型。所谓**字符串**,就是由零个或多个字符组成的有限序列,一般记为![$${\displaystyle s=a_{1}a_{2}\dots a_{n}(0\leq n \leq \infty)}$$](./res/formula_1.png)。 +第二次世界大战促使了现代电子计算机的诞生,最初的目的用计算机来快速的完成导弹弹道的计算,因此在计算机刚刚诞生的那个年代,计算机处理的信息基本上都是数值型的信息,而世界上的第一台电子计算机ENIAC每秒钟能够完成约5000次浮点运算。随着时间的推移,虽然数值运算仍然是计算机日常工作中最为重要的事情之一,但是今天的计算机更多的时间需要处理的数据可能都是以文本的方式存在的,如果我们希望通过Python程序操作本这些文本信息,就必须要先了解字符串类型以及与它相关的知识。 + +所谓**字符串**,就是由零个或多个字符组成的有限序列,一般记为![$${\displaystyle s=a_{1}a_{2}\dots a_{n}(0\leq n \leq \infty)}$$](./res/formula_5.png)。 我们可以通过下面的代码来了解字符串的使用。 @@ -104,8 +106,8 @@ if __name__ == '__main__': ```Python def main(): fruits = ['grape', 'apple', 'strawberry', 'waxberry'] - fruits += ['pitaya', 'pear', 'mango'] - # 循环遍历列表元素 + fruits += ['pitaya', 'pear', 'mango'] + # 循环遍历列表元素 for fruit in fruits: print(fruit.title(), end=' ') print() @@ -183,11 +185,11 @@ if __name__ == '__main__': 除了上面提到的生成器语法,Python中还有另外一种定义生成器的方式,就是通过`yield`关键字将一个普通函数改造成生成器函数。下面的代码演示了如何实现一个生成[斐波拉切数列](https://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97)的生成器。所谓斐波拉切数列可以通过下面[递归](https://zh.wikipedia.org/wiki/%E9%80%92%E5%BD%92)的方法来进行定义: -![$${\displaystyle F_{0}=0}$$](./res/formula_2.png) +![$${\displaystyle F_{0}=0}$$](./res/formula_6.png) -![$${\displaystyle F_{1}=1}$$](./res/formula_3.png) +![$${\displaystyle F_{1}=1}$$](./res/formula_7.png) -![$${\displaystyle F_{n}=F_{n-1}+F_{n-2}}({n}\geq{2})$$](./res/formula_4.png) +![$${\displaystyle F_{n}=F_{n-1}+F_{n-2}}({n}\geq{2})$$](./res/formula_8.png) ![](./res/fibonacci-blocks.png) diff --git a/Day01-15/Day08/面向对象编程基础.md b/Day01-15/08.面向对象编程基础.md similarity index 94% rename from Day01-15/Day08/面向对象编程基础.md rename to Day01-15/08.面向对象编程基础.md index dbbedeb..d84d376 100644 --- a/Day01-15/Day08/面向对象编程基础.md +++ b/Day01-15/08.面向对象编程基础.md @@ -2,7 +2,7 @@ 活在当下的程序员应该都听过“面向对象编程”一词,也经常有人问能不能用一句话解释下什么是“面向对象编程”,我们先来看看比较正式的说法。 -> 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。 +“把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。” 这样一说是不是更不明白了。所以我们还是看看更通俗易懂的说法,下面这段内容来自于[知乎](https://www.zhihu.com/)。 @@ -39,12 +39,12 @@ class Student(object): print('%s正在学习%s.' % (self.name, course_name)) # PEP 8要求标识符的名字用全小写多个单词用下划线连接 - # 但是很多程序员和公司更倾向于使用驼峰命名法(驼峰标识) - def watch_av(self): + # 但是部分程序员和公司更倾向于使用驼峰命名法(驼峰标识) + def watch_movie(self): if self.age < 18: print('%s只能观看《熊出没》.' % self.name) else: - print('%s正在观看岛国爱情动作片.' % self.name) + print('%s正在观看岛国爱情大电影.' % self.name) ``` > **说明:** 写在类中的函数,我们通常称之为(对象的)方法,这些方法就是对象可以接收的消息。 @@ -60,10 +60,10 @@ def main(): # 给对象发study消息 stu1.study('Python程序设计') # 给对象发watch_av消息 - stu1.watch_av() + stu1.watch_movie() stu2 = Student('王大锤', 15) stu2.study('思想品德') - stu2.watch_av() + stu2.watch_movie() if __name__ == '__main__': @@ -131,6 +131,9 @@ if __name__ == "__main__": #### 练习1:定义一个类描述数字时钟 ```Python +from time import sleep + + class Clock(object): """数字时钟""" diff --git a/Day01-15/Day09/面向对象进阶.md b/Day01-15/09.面向对象进阶.md similarity index 99% rename from Day01-15/Day09/面向对象进阶.md rename to Day01-15/09.面向对象进阶.md index 956d910..4e8cf6a 100644 --- a/Day01-15/Day09/面向对象进阶.md +++ b/Day01-15/09.面向对象进阶.md @@ -276,7 +276,7 @@ def main(): stu = Student('王大锤', 15, '初三') stu.study('数学') stu.watch_av() - t = Teacher('骆昊', 38, '老叫兽') + t = Teacher('骆昊', 38, '砖家') t.teach('Python程序设计') t.watch_av() diff --git a/Day01-15/Day10/图形用户界面和游戏开发.md b/Day01-15/10.图形用户界面和游戏开发.md similarity index 100% rename from Day01-15/Day10/图形用户界面和游戏开发.md rename to Day01-15/10.图形用户界面和游戏开发.md diff --git a/Day01-15/Day11/文件和异常.md b/Day01-15/11.文件和异常.md similarity index 95% rename from Day01-15/Day11/文件和异常.md rename to Day01-15/11.文件和异常.md index 3fca86d..6e47437 100644 --- a/Day01-15/Day11/文件和异常.md +++ b/Day01-15/11.文件和异常.md @@ -1,6 +1,6 @@ ## 文件和异常 -在实际开发中,常常需要对程序中的数据进行[持久化](https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96)操作,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于[文件系统](https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F)的知识,对于这个概念,维基百科上给出了很好的诠释,这里不再浪费笔墨。 +实际开发中常常会遇到对数据进行[持久化](https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96)操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于[文件系统](https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F)的知识,但是这里我们并不浪费笔墨介绍这个概念,请大家自行通过维基百科进行了解。 在Python中实现文件的读写操作其实非常简单,通过Python内置的`open`函数,我们可以指定文件名、操作模式、编码信息等来获得操作文件的对象,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件还是二进制文件)以及做什么样的操作(读、写还是追加),具体的如下表所示。 diff --git a/Day01-15/Day12/字符串和正则表达式.md b/Day01-15/12.字符串和正则表达式.md similarity index 100% rename from Day01-15/Day12/字符串和正则表达式.md rename to Day01-15/12.字符串和正则表达式.md diff --git a/Day01-15/Day13/进程和线程.md b/Day01-15/13.进程和线程.md similarity index 99% rename from Day01-15/Day13/进程和线程.md rename to Day01-15/13.进程和线程.md index befdc4c..b24b5b3 100644 --- a/Day01-15/Day13/进程和线程.md +++ b/Day01-15/13.进程和线程.md @@ -485,5 +485,5 @@ if __name__ == '__main__': main() ``` -比较两段代码的执行结果(在我目前使用的MacBook上,上面的代码需要大概6秒左右的时间,而下面的代码只需要不到1秒的时间,再强调一次我们只是比较了运算的时间,不考虑列表创建及切片操作花费的时间),使用多进程后由于获得了更多的CPU执行时间以及更好的利用了CPU的多核特性,明显的减少了程序的执行时间,而且计算量越大效果越明显。当然,如果愿意还可以将多个进程部署在不同的计算机上,做成分布式进程,具体的做法就是通过multiprocessing.managers模块中提供的管理器将`Queue`对象通过网络共享出来(注册到网络上让其他计算机可以访问),这部分内容也留到爬虫的专题再进行讲解。 +比较两段代码的执行结果(在我目前使用的MacBook上,上面的代码需要大概6秒左右的时间,而下面的代码只需要不到1秒的时间,再强调一次我们只是比较了运算的时间,不考虑列表创建及切片操作花费的时间),使用多进程后由于获得了更多的CPU执行时间以及更好的利用了CPU的多核特性,明显的减少了程序的执行时间,而且计算量越大效果越明显。当然,如果愿意还可以将多个进程部署在不同的计算机上,做成分布式进程,具体的做法就是通过`multiprocessing.managers`模块中提供的管理器将`Queue`对象通过网络共享出来(注册到网络上让其他计算机可以访问),这部分内容也留到爬虫的专题再进行讲解。 diff --git a/Day01-15/Day14-A/网络编程入门.md b/Day01-15/14.网络编程入门和网络应用开发.md similarity index 77% rename from Day01-15/Day14-A/网络编程入门.md rename to Day01-15/14.网络编程入门和网络应用开发.md index 234ca2d..02f2b4a 100644 --- a/Day01-15/Day14-A/网络编程入门.md +++ b/Day01-15/14.网络编程入门和网络应用开发.md @@ -38,8 +38,6 @@ TCP全称传输控制协议,它是基于IP提供的寻址和路由服务而建 2. 流量控制(通过滑动窗口匹配数据发送者和接收者之间的传输速度)。 3. 拥塞控制(通过RTT时间以及对滑动窗口的控制缓解网络拥堵)。 - - #### 网络应用模式 1. C/S模式和B/S模式。这里的C指的是Client(客户端),通常是一个需要安装到某个宿主操作系统上的应用程序;而B指的是Browser(浏览器),它几乎是所有图形化操作系统都默认安装了的一个应用软件;通过C或B都可以实现对S(服务器)的访问。关于二者的比较和讨论在网络上有一大堆的文章,在此我们就不再浪费笔墨了。 @@ -297,3 +295,123 @@ if __name__ == '__main__': 传输层除了有可靠的传输协议TCP之外,还有一种非常轻便的传输协议叫做用户数据报协议,简称UDP。TCP和UDP都是提供端到端传输服务的协议,二者的差别就如同打电话和发短信的区别,后者不对传输的可靠性和可达性做出任何承诺从而避免了TCP中握手和重传的开销,所以在强调性能和而不是数据完整性的场景中(例如传输网络音视频数据),UDP可能是更好的选择。可能大家会注意到一个现象,就是在观看网络视频时,有时会出现卡顿,有时会出现花屏,这无非就是部分数据传丢或传错造成的。在Python中也可以使用UDP套接字来创建网络应用,对此我们不进行赘述,有兴趣的读者可以自行研究。 +### 网络应用开发 + +#### 发送电子邮件 + +在即时通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知、网站向用户发送一个激活账号的链接、银行向客户推广它们的理财产品等几乎都是通过电子邮件来完成的,而这些任务应该都是由程序自动完成的。 + +就像我们可以用HTTP(超文本传输协议)来访问一个网站一样,发送邮件要使用SMTP(简单邮件传输协议),SMTP也是一个建立在TCP(传输控制协议)提供的可靠数据传输服务的基础上的应用级协议,它规定了邮件的发送者如何跟发送邮件的服务器进行通信的细节,而Python中的smtplib模块将这些操作简化成了几个简单的函数。 + +下面的代码演示了如何在Python发送邮件。 + +```Python +from smtplib import SMTP +from email.header import Header +from email.mime.text import MIMEText + + +def main(): + # 请自行修改下面的邮件发送者和接收者 + sender = 'abcdefg@126.com' + receivers = ['uvwxyz@qq.com', 'uvwxyz@126.com'] + message = MIMEText('用Python发送邮件的示例代码.', 'plain', 'utf-8') + message['From'] = Header('王大锤', 'utf-8') + message['To'] = Header('骆昊', 'utf-8') + message['Subject'] = Header('示例代码实验邮件', 'utf-8') + smtper = SMTP('smtp.126.com') + # 请自行修改下面的登录口令 + smtper.login(sender, 'secretpass') + smtper.sendmail(sender, receivers, message.as_string()) + print('邮件发送完成!') + + +if __name__ == '__main__': + main() +``` + +如果要发送带有附件的邮件,那么可以按照下面的方式进行操作。 + +```Python +from smtplib import SMTP +from email.header import Header +from email.mime.text import MIMEText +from email.mime.image import MIMEImage +from email.mime.multipart import MIMEMultipart + +import urllib + + +def main(): + # 创建一个带附件的邮件消息对象 + message = MIMEMultipart() + + # 创建文本内容 + text_content = MIMEText('附件中有本月数据请查收', 'plain', 'utf-8') + message['Subject'] = Header('本月数据', 'utf-8') + # 将文本内容添加到邮件消息对象中 + message.attach(text_content) + + # 读取文件并将文件作为附件添加到邮件消息对象中 + with open('/Users/Hao/Desktop/hello.txt', 'rb') as f: + txt = MIMEText(f.read(), 'base64', 'utf-8') + txt['Content-Type'] = 'text/plain' + txt['Content-Disposition'] = 'attachment; filename=hello.txt' + message.attach(txt) + # 读取文件并将文件作为附件添加到邮件消息对象中 + with open('/Users/Hao/Desktop/汇总数据.xlsx', 'rb') as f: + xls = MIMEText(f.read(), 'base64', 'utf-8') + xls['Content-Type'] = 'application/vnd.ms-excel' + xls['Content-Disposition'] = 'attachment; filename=month-data.xlsx' + message.attach(xls) + + # 创建SMTP对象 + smtper = SMTP('smtp.126.com') + # 开启安全连接 + # smtper.starttls() + sender = 'abcdefg@126.com' + receivers = ['uvwxyz@qq.com'] + # 登录到SMTP服务器 + # 请注意此处不是使用密码而是邮件客户端授权码进行登录 + # 对此有疑问的读者可以联系自己使用的邮件服务器客服 + smtper.login(sender, 'secretpass') + # 发送邮件 + smtper.sendmail(sender, receivers, message.as_string()) + # 与邮件服务器断开连接 + smtper.quit() + print('发送完成!') + + +if __name__ == '__main__': + main() +``` + +#### 发送短信 + +发送短信也是项目中常见的功能,网站的注册码、验证码、营销信息基本上都是通过短信来发送给用户的。在下面的代码中我们使用了[互亿无线](http://www.ihuyi.com/)短信平台(该平台为注册用户提供了50条免费短信以及常用开发语言发送短信的demo,可以登录该网站并在用户自服务页面中对短信进行配置)提供的API接口实现了发送短信的服务,当然国内的短信平台很多,读者可以根据自己的需要进行选择(通常会考虑费用预算、短信达到率、使用的难易程度等指标),如果需要在商业项目中使用短信服务建议购买短信平台提供的套餐服务。 + +```Python +import urllib.parse +import http.client +import json + + +def main(): + host = "106.ihuyi.com" + sms_send_uri = "/webservice/sms.php?method=Submit" + # 下面的参数需要填入自己注册的账号和对应的密码 + params = urllib.parse.urlencode({'account': '你自己的账号', 'password' : '你自己的密码', 'content': '您的验证码是:147258。请不要把验证码泄露给其他人。', 'mobile': '接收者的手机号', 'format':'json' }) + print(params) + headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'} + conn = http.client.HTTPConnection(host, port=80, timeout=30) + conn.request('POST', sms_send_uri, params, headers) + response = conn.getresponse() + response_str = response.read() + jsonstr = response_str.decode('utf-8') + print(json.loads(jsonstr)) + conn.close() + + +if __name__ == '__main__': + main() +``` \ No newline at end of file diff --git a/Day01-15/Day15/图像和办公文档处理.md b/Day01-15/15.图像和办公文档处理.md similarity index 100% rename from Day01-15/Day15/图像和办公文档处理.md rename to Day01-15/15.图像和办公文档处理.md diff --git a/Day01-15/Day05/总结和练习.md b/Day01-15/Day05/总结和练习.md deleted file mode 100644 index 86baa19..0000000 --- a/Day01-15/Day05/总结和练习.md +++ /dev/null @@ -1,9 +0,0 @@ -## 练习 - -### 练习清单 - -1. 寻找[“水仙花数”](https://baike.baidu.com/item/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0)。 -2. 寻找[“完美数”](https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E6%95%B0/370913)。 -3. [“百钱百鸡”](https://baike.baidu.com/item/%E7%99%BE%E9%B8%A1%E7%99%BE%E9%92%B1/5857320)问题。 -4. 生成[“斐波拉切数列”](https://baike.baidu.com/item/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97/99145)。 -5. Craps赌博游戏。 \ No newline at end of file diff --git a/Day01-15/Day09/res/uml-example.gliffy b/Day01-15/Day09/res/uml-example.gliffy deleted file mode 100644 index 015163a..0000000 --- a/Day01-15/Day09/res/uml-example.gliffy +++ /dev/null @@ -1 +0,0 @@ -{"contentType":"application/gliffy+json","version":"1.1","metadata":{"title":"untitled","revision":0,"exportBorder":false},"embeddedResources":{"index":0,"resources":[]},"stage":{"objects":[{"x":211,"y":179.5,"rotation":0,"id":79,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":60,"height":28,"lockAspectRatio":false,"lockShape":false,"order":71,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"

继承关系

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null,"linkMap":[]},{"x":702,"y":249,"rotation":0,"id":78,"uid":"com.gliffy.shape.uml.uml_v1.default.generalization","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":70,"graphic":{"type":"Line","Line":{"strokeWidth":1,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":4,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[82,-4],[50,-4],[50,-69.32485578727801],[18,-69.32485578727801]],"lockSegments":{}}},"children":null,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":70,"px":0,"py":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":32,"px":0.9999999999999998,"py":0.7071067811865475}}},"linkMap":[]},{"x":615,"y":70,"rotation":0,"id":77,"uid":"com.gliffy.shape.uml.uml_v1.default.generalization","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":69,"graphic":{"type":"Line","Line":{"strokeWidth":1,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":4,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[169,6.75],[137,6.75],[137,70.32485578727798],[105,70.32485578727798]],"lockSegments":{}}},"children":null,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":63,"px":0,"py":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":32,"px":1,"py":0.29289321881345237}}},"linkMap":[]},{"x":228,"y":356,"rotation":0,"id":55,"uid":"com.gliffy.shape.uml.uml_v1.default.association","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":0,"graphic":{"type":"Line","Line":{"strokeWidth":1,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[202,-46],[202,-22.666666666666686],[202,0.6666666666666856],[202,24]],"lockSegments":{}}},"children":null,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":24,"px":0.5,"py":1}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":48,"px":0.5,"py":0}}},"linkMap":[]},{"x":667,"y":225,"rotation":0,"id":47,"uid":"com.gliffy.shape.uml.uml_v1.default.aggregation","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":40,"graphic":{"type":"Line","Line":{"strokeWidth":1,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":5,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[-17,-17.5],[-17,8.333333333333343],[-17,34.166666666666686],[-17,60]],"lockSegments":{}}},"children":null,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":32,"px":0.5,"py":1}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":56,"px":0.5,"py":0}}},"linkMap":[]},{"x":403,"y":390,"rotation":0,"id":39,"uid":"com.gliffy.shape.uml.uml_v1.default.dependency","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":39,"graphic":{"type":"Line","Line":{"strokeWidth":1,"strokeColor":"#000000","fillColor":"none","dashStyle":"8.0,2.0","startArrow":0,"endArrow":6,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[97,-125],[137,-125],[137,-230],[177,-230]],"lockSegments":{}}},"children":null,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":24,"px":1,"py":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":32,"px":0,"py":0.5}}},"linkMap":[]},{"x":289,"y":219,"rotation":0,"id":31,"uid":"com.gliffy.shape.uml.uml_v1.default.generalization","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":31,"graphic":{"type":"Line","Line":{"strokeWidth":1,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":4,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[141,1],[141,-124],[51,-124]],"lockSegments":{}}},"children":null,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":24,"px":0.5,"py":0}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":0,"px":1,"py":0.5}}},"linkMap":[]},{"x":325,"y":185,"rotation":0,"id":22,"uid":"com.gliffy.shape.uml.uml_v1.default.generalization","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":23,"graphic":{"type":"Line","Line":{"strokeWidth":1,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":4,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[-55,35],[-55,11.666666666666657],[-55,-11.666666666666657],[-55,-35]],"lockSegments":{}}},"children":null,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":14,"px":0.5,"py":0}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":0,"px":0.5,"py":1}}},"linkMap":[]},{"x":98,"y":173,"rotation":0,"id":21,"uid":"com.gliffy.shape.uml.uml_v1.default.generalization","width":100,"height":100,"lockAspectRatio":false,"lockShape":false,"order":22,"graphic":{"type":"Line","Line":{"strokeWidth":1,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":4,"startArrowRotation":"auto","endArrowRotation":"auto","ortho":true,"interpolationType":"linear","cornerRadius":null,"controlPath":[[12,47],[12,-78],[102,-78]],"lockSegments":{}}},"children":null,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":7,"px":0.5,"py":0}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":0,"px":0,"py":0.5}}},"linkMap":[]},{"x":200,"y":220,"rotation":0,"id":14,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":75,"lockAspectRatio":false,"lockShape":false,"order":15,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":15,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":16,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Teacher

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":16,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":17,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":18,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

title

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":15,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":18,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":36,"rotation":0,"id":19,"uid":null,"width":140,"height":39,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":20,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

teach

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":14,"magnitude":1},{"id":15,"magnitude":-1},{"id":17,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":17,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":15,"magnitude":1},{"id":17,"magnitude":1},{"id":20,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":40,"y":220,"rotation":0,"id":7,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":75,"lockAspectRatio":false,"lockShape":false,"order":8,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":8,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":9,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Student

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":9,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":10,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":11,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

grade

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":8,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":11,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":36,"rotation":0,"id":12,"uid":null,"width":140,"height":39,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":13,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

study

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":7,"magnitude":1},{"id":8,"magnitude":-1},{"id":10,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":10,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":8,"magnitude":1},{"id":10,"magnitude":1},{"id":13,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":200,"y":40,"rotation":0,"id":0,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":110,"lockAspectRatio":false,"lockShape":false,"order":1,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":1,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":2,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Person

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":2,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":3,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":4,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

name\n

age

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":1,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":4,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":50,"rotation":0,"id":5,"uid":null,"width":140,"height":60,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":6,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

eat\n

play

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":0,"magnitude":1},{"id":1,"magnitude":-1},{"id":3,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":3,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":1,"magnitude":1},{"id":3,"magnitude":1},{"id":6,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":360,"y":220,"rotation":0,"id":24,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":90,"lockAspectRatio":false,"lockShape":false,"order":24,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":25,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":26,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Driver

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":26,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":27,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":28,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

work_experience\n

license

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":25,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":28,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":50,"rotation":0,"id":29,"uid":null,"width":140,"height":40,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":30,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

drive

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":24,"magnitude":1},{"id":25,"magnitude":-1},{"id":27,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":27,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":25,"magnitude":1},{"id":27,"magnitude":1},{"id":30,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":580,"y":112.5,"rotation":0,"id":32,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":95,"lockAspectRatio":false,"lockShape":false,"order":32,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":33,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":34,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Vehicle

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":34,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":35,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":36,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

brand\n

engine

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":33,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":36,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":50,"rotation":0,"id":37,"uid":null,"width":140,"height":45,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":38,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

accelerate\n

slow_down

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":32,"magnitude":1},{"id":33,"magnitude":-1},{"id":35,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":35,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":33,"magnitude":1},{"id":35,"magnitude":1},{"id":38,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":360,"y":380,"rotation":0,"id":48,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":75,"lockAspectRatio":false,"lockShape":false,"order":41,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":49,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":50,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

License

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":50,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":51,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":52,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Attribute

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":49,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":52,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":36,"rotation":0,"id":53,"uid":null,"width":140,"height":39,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":54,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Method

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":48,"magnitude":1},{"id":49,"magnitude":-1},{"id":51,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":51,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":49,"magnitude":1},{"id":51,"magnitude":1},{"id":54,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":580,"y":285,"rotation":0,"id":56,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":75,"lockAspectRatio":false,"lockShape":false,"order":48,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":57,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":58,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Engine

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":58,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":59,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":60,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

number

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":57,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":60,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":36,"rotation":0,"id":61,"uid":null,"width":140,"height":39,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":62,"uid":null,"width":140,"height":4,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":56,"magnitude":1},{"id":57,"magnitude":-1},{"id":59,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":59,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":57,"magnitude":1},{"id":59,"magnitude":1},{"id":62,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":784,"y":41,"rotation":0,"id":63,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":71.5,"lockAspectRatio":false,"lockShape":false,"order":55,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":64,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":65,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Car

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":65,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":66,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":67,"uid":null,"width":140,"height":32,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

seats\n

displacement

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":64,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":67,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":50,"rotation":0,"id":68,"uid":null,"width":140,"height":21.5,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":69,"uid":null,"width":140,"height":4,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":63,"magnitude":1},{"id":64,"magnitude":-1},{"id":66,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":66,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":64,"magnitude":1},{"id":66,"magnitude":1},{"id":69,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":784,"y":207.5,"rotation":0,"id":70,"uid":"com.gliffy.shape.uml.uml_v1.default.class","width":140,"height":75,"lockAspectRatio":false,"lockShape":false,"order":62,"graphic":null,"children":[{"x":0,"y":0,"rotation":0,"id":71,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":72,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

Truck

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":72,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":18,"rotation":0,"id":73,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":74,"uid":null,"width":140,"height":18,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

capacity

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":71,"px":0,"py":1}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":74,"magnitude":1}],"growParent":true,"padding":0}}]}},{"x":0,"y":36,"rotation":0,"id":75,"uid":null,"width":140,"height":39,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2,"strokeColor":"#000000","fillColor":"#FFFFFF","gradient":false,"dropShadow":true,"state":0,"shadowX":4,"shadowY":4,"opacity":1}},"children":[{"x":0,"y":0,"rotation":0,"id":76,"uid":null,"width":140,"height":4,"lockAspectRatio":false,"lockShape":false,"order":"auto","graphic":{"type":"Text","Text":{"tid":null,"valign":"top","overflow":"none","vposition":"none","hposition":"none","html":"

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":70,"magnitude":1},{"id":71,"magnitude":-1},{"id":73,"magnitude":-1}],"growParent":false,"padding":0}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":73,"px":0,"py":1}}]}}],"constraints":{"constraints":[{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":71,"magnitude":1},{"id":73,"magnitude":1},{"id":76,"magnitude":1}],"growParent":false,"padding":0}}]},"linkMap":[]},{"x":371,"y":346,"rotation":0,"id":81,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":60,"height":14,"lockAspectRatio":false,"lockShape":false,"order":72,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"

关联关系

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null,"linkMap":[]},{"x":490,"y":186.5,"rotation":0,"id":82,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":60,"height":14,"lockAspectRatio":false,"lockShape":false,"order":73,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"

依赖关系

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null,"linkMap":[]},{"x":591,"y":238,"rotation":0,"id":83,"uid":"com.gliffy.shape.basic.basic_v1.default.text","width":60,"height":14,"lockAspectRatio":false,"lockShape":false,"order":74,"graphic":{"type":"Text","Text":{"tid":null,"valign":"middle","overflow":"none","vposition":"none","hposition":"none","html":"

聚合关系

","paddingLeft":2,"paddingRight":2,"paddingBottom":2,"paddingTop":2}},"children":null,"linkMap":[]}],"background":"#FFFFFF","width":926,"height":455,"maxWidth":5000,"maxHeight":5000,"nodeIndex":84,"autoFit":true,"exportBorder":false,"gridOn":true,"snapToGrid":true,"drawingGuidesOn":true,"pageBreaksOn":false,"printGridOn":false,"printPaper":"LETTER","printShrinkToFit":false,"printPortrait":true,"shapeStyles":{},"lineStyles":{},"textStyles":{},"themeData":null}} \ No newline at end of file diff --git a/Day01-15/Day14-B/网络应用开发.md b/Day01-15/Day14-B/网络应用开发.md deleted file mode 100644 index 09edf81..0000000 --- a/Day01-15/Day14-B/网络应用开发.md +++ /dev/null @@ -1,121 +0,0 @@ -## 网络应用开发 - -### 发送电子邮件 - -在即时通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知、网站向用户发送一个激活账号的链接、银行向客户推广它们的理财产品等几乎都是通过电子邮件来完成的,而这些任务应该都是由程序自动完成的。 - -就像我们可以用HTTP(超文本传输协议)来访问一个网站一样,发送邮件要使用SMTP(简单邮件传输协议),SMTP也是一个建立在TCP(传输控制协议)提供的可靠数据传输服务的基础上的应用级协议,它规定了邮件的发送者如何跟发送邮件的服务器进行通信的细节,而Python中的smtplib模块将这些操作简化成了几个简单的函数。 - -下面的代码演示了如何在Python发送邮件。 - -```Python -from smtplib import SMTP -from email.header import Header -from email.mime.text import MIMEText - - -def main(): - # 请自行修改下面的邮件发送者和接收者 - sender = 'abcdefg@126.com' - receivers = ['uvwxyz@qq.com', 'uvwxyz@126.com'] - message = MIMEText('用Python发送邮件的示例代码.', 'plain', 'utf-8') - message['From'] = Header('王大锤', 'utf-8') - message['To'] = Header('骆昊', 'utf-8') - message['Subject'] = Header('示例代码实验邮件', 'utf-8') - smtper = SMTP('smtp.126.com') - # 请自行修改下面的登录口令 - smtper.login(sender, 'secretpass') - smtper.sendmail(sender, receivers, message.as_string()) - print('邮件发送完成!') - - -if __name__ == '__main__': - main() -``` - -如果要发送带有附件的邮件,那么可以按照下面的方式进行操作。 - -```Python -from smtplib import SMTP -from email.header import Header -from email.mime.text import MIMEText -from email.mime.image import MIMEImage -from email.mime.multipart import MIMEMultipart - -import urllib - - -def main(): - # 创建一个带附件的邮件消息对象 - message = MIMEMultipart() - - # 创建文本内容 - text_content = MIMEText('附件中有本月数据请查收', 'plain', 'utf-8') - message['Subject'] = Header('本月数据', 'utf-8') - # 将文本内容添加到邮件消息对象中 - message.attach(text_content) - - # 读取文件并将文件作为附件添加到邮件消息对象中 - with open('/Users/Hao/Desktop/hello.txt', 'rb') as f: - txt = MIMEText(f.read(), 'base64', 'utf-8') - txt['Content-Type'] = 'text/plain' - txt['Content-Disposition'] = 'attachment; filename=hello.txt' - message.attach(txt) - # 读取文件并将文件作为附件添加到邮件消息对象中 - with open('/Users/Hao/Desktop/汇总数据.xlsx', 'rb') as f: - xls = MIMEText(f.read(), 'base64', 'utf-8') - xls['Content-Type'] = 'application/vnd.ms-excel' - xls['Content-Disposition'] = 'attachment; filename=month-data.xlsx' - message.attach(xls) - - # 创建SMTP对象 - smtper = SMTP('smtp.126.com') - # 开启安全连接 - # smtper.starttls() - sender = 'abcdefg@126.com' - receivers = ['uvwxyz@qq.com'] - # 登录到SMTP服务器 - # 请注意此处不是使用密码而是邮件客户端授权码进行登录 - # 对此有疑问的读者可以联系自己使用的邮件服务器客服 - smtper.login(sender, 'secretpass') - # 发送邮件 - smtper.sendmail(sender, receivers, message.as_string()) - # 与邮件服务器断开连接 - smtper.quit() - print('发送完成!') - - -if __name__ == '__main__': - main() -``` - -### 发送短信 - -发送短信也是项目中常见的功能,网站的注册码、验证码、营销信息基本上都是通过短信来发送给用户的。在下面的代码中我们使用了[互亿无线](http://www.ihuyi.com/)短信平台(该平台为注册用户提供了50条免费短信以及常用开发语言发送短信的demo,可以登录该网站并在用户自服务页面中对短信进行配置)提供的API接口实现了发送短信的服务,当然国内的短信平台很多,读者可以根据自己的需要进行选择(通常会考虑费用预算、短信达到率、使用的难易程度等指标),如果需要在商业项目中使用短信服务建议购买短信平台提供的套餐服务。 - -```Python -import urllib.parse -import http.client -import json - - -def main(): - host = "106.ihuyi.com" - sms_send_uri = "/webservice/sms.php?method=Submit" - # 下面的参数需要填入自己注册的账号和对应的密码 - params = urllib.parse.urlencode({'account': '你自己的账号', 'password' : '你自己的密码', 'content': '您的验证码是:147258。请不要把验证码泄露给其他人。', 'mobile': '接收者的手机号', 'format':'json' }) - print(params) - headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'} - conn = http.client.HTTPConnection(host, port=80, timeout=30) - conn.request('POST', sms_send_uri, params, headers) - response = conn.getresponse() - response_str = response.read() - jsonstr = response_str.decode('utf-8') - print(json.loads(jsonstr)) - conn.close() - - -if __name__ == '__main__': - main() -``` - diff --git a/Day01-15/ans/Day01/translation_for_zen_of_python.jpg b/Day01-15/ans/Day01/translation_for_zen_of_python.jpg new file mode 100644 index 0000000..10460d3 Binary files /dev/null and b/Day01-15/ans/Day01/translation_for_zen_of_python.jpg differ diff --git a/Day01-15/Day01/code/hello.py b/Day01-15/code/Day01/hello.py similarity index 56% rename from Day01-15/Day01/code/hello.py rename to Day01-15/code/Day01/hello.py index 5468788..0ff7747 100644 --- a/Day01-15/Day01/code/hello.py +++ b/Day01-15/code/Day01/hello.py @@ -6,8 +6,13 @@ Version: 0.1 Author: 骆昊 Date: 2018-02-26 -请将该文件命名为hello.py并在终端中通过下面的命令运行它 +请将该文件命名为hello.py + +使用Windows的小伙伴可以在命令行提示下通过下面的命令运行该程序 python hello.py + +对于使用Linux或macOS的小伙伴可以打开终端并键入下面的命令来运行程序 +python3 hello.py """ print('hello, world!') diff --git a/Day01-15/Day01/code/peppa_pig.py b/Day01-15/code/Day01/peppa_pig.py similarity index 100% rename from Day01-15/Day01/code/peppa_pig.py rename to Day01-15/code/Day01/peppa_pig.py diff --git a/Day01-15/Day02/code/centigrade.py b/Day01-15/code/Day02/centigrade.py similarity index 100% rename from Day01-15/Day02/code/centigrade.py rename to Day01-15/code/Day02/centigrade.py diff --git a/Day01-15/Day02/code/circle.py b/Day01-15/code/Day02/circle.py similarity index 99% rename from Day01-15/Day02/code/circle.py rename to Day01-15/code/Day02/circle.py index 5581920..314f0bb 100644 --- a/Day01-15/Day02/code/circle.py +++ b/Day01-15/code/Day02/circle.py @@ -5,7 +5,6 @@ Version: 0.1 Author: 骆昊 Date: 2018-02-27 """ - import math radius = float(input('请输入圆的半径: ')) diff --git a/Day01-15/Day02/code/leap.py b/Day01-15/code/Day02/leap.py similarity index 100% rename from Day01-15/Day02/code/leap.py rename to Day01-15/code/Day02/leap.py diff --git a/Day01-15/Day02/code/operator.py b/Day01-15/code/Day02/operator.py similarity index 100% rename from Day01-15/Day02/code/operator.py rename to Day01-15/code/Day02/operator.py diff --git a/Day01-15/Day02/code/strings.py b/Day01-15/code/Day02/strings.py similarity index 100% rename from Day01-15/Day02/code/strings.py rename to Day01-15/code/Day02/strings.py diff --git a/Day01-15/Day02/code/variable1.py b/Day01-15/code/Day02/variable1.py similarity index 100% rename from Day01-15/Day02/code/variable1.py rename to Day01-15/code/Day02/variable1.py diff --git a/Day01-15/Day02/code/variable2.py b/Day01-15/code/Day02/variable2.py similarity index 100% rename from Day01-15/Day02/code/variable2.py rename to Day01-15/code/Day02/variable2.py diff --git a/Day01-15/Day02/code/variable3.py b/Day01-15/code/Day02/variable3.py similarity index 100% rename from Day01-15/Day02/code/variable3.py rename to Day01-15/code/Day02/variable3.py diff --git a/Day01-15/Day02/code/variable4.py b/Day01-15/code/Day02/variable4.py similarity index 100% rename from Day01-15/Day02/code/variable4.py rename to Day01-15/code/Day02/variable4.py diff --git a/Day01-15/Day02/code/variable5.py b/Day01-15/code/Day02/variable5.py similarity index 100% rename from Day01-15/Day02/code/variable5.py rename to Day01-15/code/Day02/variable5.py diff --git a/Day01-15/Day03/code/convert.py b/Day01-15/code/Day03/conversion.py similarity index 100% rename from Day01-15/Day03/code/convert.py rename to Day01-15/code/Day03/conversion.py diff --git a/Day01-15/Day03/code/grade.py b/Day01-15/code/Day03/grade.py similarity index 74% rename from Day01-15/Day03/code/grade.py rename to Day01-15/code/Day03/grade.py index edf2801..f78a468 100644 --- a/Day01-15/Day03/code/grade.py +++ b/Day01-15/code/Day03/grade.py @@ -1,10 +1,10 @@ """ 百分制成绩转等级制成绩 -90分以上 --> A -80分~89分 --> B -70分~79分 --> C -60分~69分 --> D -60分以下 --> E +90分以上,输出A +80分~89分,输出B +70分~79分,输出C +60分~69分,输出D +60分以下,输出E Version: 0.1 Author: 骆昊 diff --git a/Day01-15/Day03/code/piecewise.py b/Day01-15/code/Day03/piecewise.py similarity index 100% rename from Day01-15/Day03/code/piecewise.py rename to Day01-15/code/Day03/piecewise.py diff --git a/Day01-15/Day03/code/rolldice.py b/Day01-15/code/Day03/rolldice.py similarity index 99% rename from Day01-15/Day03/code/rolldice.py rename to Day01-15/code/Day03/rolldice.py index 42c0942..3a232a7 100644 --- a/Day01-15/Day03/code/rolldice.py +++ b/Day01-15/code/Day03/rolldice.py @@ -5,7 +5,6 @@ Version: 0.1 Author: 骆昊 Date: 2018-02-28 """ - from random import randint face = randint(1, 6) diff --git a/Day01-15/Day03/code/tax.py b/Day01-15/code/Day03/tax.py similarity index 100% rename from Day01-15/Day03/code/tax.py rename to Day01-15/code/Day03/tax.py diff --git a/Day01-15/Day03/code/triangle.py b/Day01-15/code/Day03/triangle.py similarity index 99% rename from Day01-15/Day03/code/triangle.py rename to Day01-15/code/Day03/triangle.py index 539917c..890e082 100644 --- a/Day01-15/Day03/code/triangle.py +++ b/Day01-15/code/Day03/triangle.py @@ -6,7 +6,6 @@ Version: 0.1 Author: 骆昊 Date: 2018-02-28 """ - import math a = float(input('a = ')) diff --git a/Day01-15/Day03/code/verify.py b/Day01-15/code/Day03/verify.py similarity index 99% rename from Day01-15/Day03/code/verify.py rename to Day01-15/code/Day03/verify.py index 3821dbb..d0d162c 100644 --- a/Day01-15/Day03/code/verify.py +++ b/Day01-15/code/Day03/verify.py @@ -5,7 +5,6 @@ Version: 0.1 Author: 骆昊 Date: 2018-02-28 """ - # import getpass # from getpass import getpass # from getpass import * diff --git a/Day01-15/Day04/code/for1.py b/Day01-15/code/Day04/for1.py similarity index 100% rename from Day01-15/Day04/code/for1.py rename to Day01-15/code/Day04/for1.py diff --git a/Day01-15/Day04/code/for2.py b/Day01-15/code/Day04/for2.py similarity index 100% rename from Day01-15/Day04/code/for2.py rename to Day01-15/code/Day04/for2.py diff --git a/Day01-15/Day04/code/for3.py b/Day01-15/code/Day04/for3.py similarity index 100% rename from Day01-15/Day04/code/for3.py rename to Day01-15/code/Day04/for3.py diff --git a/Day01-15/Day04/code/for4.py b/Day01-15/code/Day04/for4.py similarity index 99% rename from Day01-15/Day04/code/for4.py rename to Day01-15/code/Day04/for4.py index 79bc47e..7ae5d25 100644 --- a/Day01-15/Day04/code/for4.py +++ b/Day01-15/code/Day04/for4.py @@ -5,7 +5,6 @@ Version: 0.1 Author: 骆昊 Date: 2018-03-01 """ - from math import sqrt num = int(input('请输入一个正整数: ')) diff --git a/Day01-15/Day04/code/for5.py b/Day01-15/code/Day04/for5.py similarity index 100% rename from Day01-15/Day04/code/for5.py rename to Day01-15/code/Day04/for5.py diff --git a/Day01-15/Day04/code/for6.py b/Day01-15/code/Day04/for6.py similarity index 100% rename from Day01-15/Day04/code/for6.py rename to Day01-15/code/Day04/for6.py diff --git a/Day01-15/Day04/code/while1.py b/Day01-15/code/Day04/while1.py similarity index 100% rename from Day01-15/Day04/code/while1.py rename to Day01-15/code/Day04/while1.py diff --git a/Day01-15/Day04/code/while2.py b/Day01-15/code/Day04/while2.py similarity index 90% rename from Day01-15/Day04/code/while2.py rename to Day01-15/code/Day04/while2.py index ff4a7b3..63a9559 100644 --- a/Day01-15/Day04/code/while2.py +++ b/Day01-15/code/Day04/while2.py @@ -6,8 +6,7 @@ Author: 骆昊 Date: 2018-03-01 """ -sum = 0 -num = 2 +sum, num = 0, 2 while num <= 100: sum += num num += 2 diff --git a/Day01-15/Day05/code/chicken.py b/Day01-15/code/Day05/chicken.py similarity index 89% rename from Day01-15/Day05/code/chicken.py rename to Day01-15/code/Day05/chicken.py index c9e06e3..441b2c2 100644 --- a/Day01-15/Day05/code/chicken.py +++ b/Day01-15/code/Day05/chicken.py @@ -13,5 +13,3 @@ for x in range(0, 20): z = 100 - x - y if 5 * x + 3 * y + z / 3 == 100: print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (x, y, z)) - -# 要理解程序背后的算法 - 穷举法 diff --git a/Day01-15/Day05/code/craps.py b/Day01-15/code/Day05/craps.py similarity index 97% rename from Day01-15/Day05/code/craps.py rename to Day01-15/code/Day05/craps.py index 27cca1b..f50cbcc 100644 --- a/Day01-15/Day05/code/craps.py +++ b/Day01-15/code/Day05/craps.py @@ -11,7 +11,6 @@ Version: 0.1 Author: 骆昊 Date: 2018-03-02 """ - from random import randint money = 1000 @@ -20,7 +19,7 @@ while money > 0: needs_go_on = False while True: debt = int(input('请下注: ')) - if debt > 0 and debt <= money: + if 0 < debt <= money: break first = randint(1, 6) + randint(1, 6) print('玩家摇出了%d点' % first) diff --git a/Day01-15/Day05/code/fibonacci.py b/Day01-15/code/Day05/fibonacci.py similarity index 87% rename from Day01-15/Day05/code/fibonacci.py rename to Day01-15/code/Day05/fibonacci.py index ca7f345..fdcacbf 100644 --- a/Day01-15/Day05/code/fibonacci.py +++ b/Day01-15/code/Day05/fibonacci.py @@ -10,5 +10,5 @@ Date: 2018-03-02 a = 0 b = 1 for _ in range(20): - (a, b) = (b, a + b) + a, b = b, a + b print(a, end=' ') diff --git a/Day01-15/Day05/code/guess.py b/Day01-15/code/Day05/guess.py similarity index 99% rename from Day01-15/Day05/code/guess.py rename to Day01-15/code/Day05/guess.py index 14794e0..aef847b 100644 --- a/Day01-15/Day05/code/guess.py +++ b/Day01-15/code/Day05/guess.py @@ -7,7 +7,6 @@ Version: 0.1 Author: 骆昊 Date: 2018-03-02 """ - import random answer = random.randint(1, 100) diff --git a/Day01-15/Day05/code/lily.py b/Day01-15/code/Day05/lily.py similarity index 100% rename from Day01-15/Day05/code/lily.py rename to Day01-15/code/Day05/lily.py diff --git a/Day01-15/Day05/code/palindrome.py b/Day01-15/code/Day05/palindrome.py similarity index 100% rename from Day01-15/Day05/code/palindrome.py rename to Day01-15/code/Day05/palindrome.py diff --git a/Day01-15/Day05/code/perfect.py b/Day01-15/code/Day05/perfect.py similarity index 51% rename from Day01-15/Day05/code/perfect.py rename to Day01-15/code/Day05/perfect.py index e798fde..5dce5b2 100644 --- a/Day01-15/Day05/code/perfect.py +++ b/Day01-15/code/Day05/perfect.py @@ -7,20 +7,14 @@ Version: 0.1 Author: 骆昊 Date: 2018-03-02 """ -import time import math -start = time.clock() for num in range(1, 10000): - sum = 0 + result = 0 for factor in range(1, int(math.sqrt(num)) + 1): if num % factor == 0: - sum += factor - if factor > 1 and num / factor != factor: - sum += num / factor - if sum == num: + result += factor + if factor > 1 and num // factor != factor: + result += num // factor + if result == num: print(num) -end = time.clock() -print("执行时间:", (end - start), "秒") - -# 通过比较上面两种不同的解决方案的执行时间 意识到优化程序的重要性 diff --git a/Day01-15/Day05/code/prime.py b/Day01-15/code/Day05/prime.py similarity index 100% rename from Day01-15/Day05/code/prime.py rename to Day01-15/code/Day05/prime.py diff --git a/Day01-15/Day05/code/table.py b/Day01-15/code/Day05/table.py similarity index 100% rename from Day01-15/Day05/code/table.py rename to Day01-15/code/Day05/table.py diff --git a/Day01-15/Day06/code/function1.py b/Day01-15/code/Day06/function1.py similarity index 100% rename from Day01-15/Day06/code/function1.py rename to Day01-15/code/Day06/function1.py diff --git a/Day01-15/Day06/code/function2.py b/Day01-15/code/Day06/function2.py similarity index 100% rename from Day01-15/Day06/code/function2.py rename to Day01-15/code/Day06/function2.py diff --git a/Day01-15/Day06/code/function3.py b/Day01-15/code/Day06/function3.py similarity index 100% rename from Day01-15/Day06/code/function3.py rename to Day01-15/code/Day06/function3.py diff --git a/Day01-15/Day06/code/function4.py b/Day01-15/code/Day06/function4.py similarity index 100% rename from Day01-15/Day06/code/function4.py rename to Day01-15/code/Day06/function4.py diff --git a/Day01-15/Day06/code/function5.py b/Day01-15/code/Day06/function5.py similarity index 100% rename from Day01-15/Day06/code/function5.py rename to Day01-15/code/Day06/function5.py diff --git a/Day01-15/Day06/code/function6.py b/Day01-15/code/Day06/function6.py similarity index 100% rename from Day01-15/Day06/code/function6.py rename to Day01-15/code/Day06/function6.py diff --git a/Day01-15/Day07/code/avgscore.py b/Day01-15/code/Day07/avgscore.py similarity index 100% rename from Day01-15/Day07/code/avgscore.py rename to Day01-15/code/Day07/avgscore.py diff --git a/Day01-15/Day07/code/dict1.py b/Day01-15/code/Day07/dict1.py similarity index 100% rename from Day01-15/Day07/code/dict1.py rename to Day01-15/code/Day07/dict1.py diff --git a/Day01-15/Day07/code/dict2.py b/Day01-15/code/Day07/dict2.py similarity index 100% rename from Day01-15/Day07/code/dict2.py rename to Day01-15/code/Day07/dict2.py diff --git a/Day01-15/Day07/code/fibonacci.py b/Day01-15/code/Day07/fibonacci.py similarity index 100% rename from Day01-15/Day07/code/fibonacci.py rename to Day01-15/code/Day07/fibonacci.py diff --git a/Day01-15/Day07/code/findmax.py b/Day01-15/code/Day07/findmax.py similarity index 100% rename from Day01-15/Day07/code/findmax.py rename to Day01-15/code/Day07/findmax.py diff --git a/Day01-15/Day07/code/list1.py b/Day01-15/code/Day07/list1.py similarity index 100% rename from Day01-15/Day07/code/list1.py rename to Day01-15/code/Day07/list1.py diff --git a/Day01-15/Day07/code/list2.py b/Day01-15/code/Day07/list2.py similarity index 100% rename from Day01-15/Day07/code/list2.py rename to Day01-15/code/Day07/list2.py diff --git a/Day01-15/Day07/code/list3.py b/Day01-15/code/Day07/list3.py similarity index 100% rename from Day01-15/Day07/code/list3.py rename to Day01-15/code/Day07/list3.py diff --git a/Day01-15/Day07/code/lottery.py b/Day01-15/code/Day07/lottery.py similarity index 100% rename from Day01-15/Day07/code/lottery.py rename to Day01-15/code/Day07/lottery.py diff --git a/Day01-15/Day07/code/marquee.py b/Day01-15/code/Day07/marquee.py similarity index 100% rename from Day01-15/Day07/code/marquee.py rename to Day01-15/code/Day07/marquee.py diff --git a/Day01-15/Day07/code/scoretable.py b/Day01-15/code/Day07/scoretable.py similarity index 100% rename from Day01-15/Day07/code/scoretable.py rename to Day01-15/code/Day07/scoretable.py diff --git a/Day01-15/Day07/code/set1.py b/Day01-15/code/Day07/set1.py similarity index 100% rename from Day01-15/Day07/code/set1.py rename to Day01-15/code/Day07/set1.py diff --git a/Day01-15/Day07/code/set2.py b/Day01-15/code/Day07/set2.py similarity index 100% rename from Day01-15/Day07/code/set2.py rename to Day01-15/code/Day07/set2.py diff --git a/Day01-15/Day07/code/tic-tac-toe.py b/Day01-15/code/Day07/tic-tac-toe.py similarity index 100% rename from Day01-15/Day07/code/tic-tac-toe.py rename to Day01-15/code/Day07/tic-tac-toe.py diff --git a/Day01-15/Day07/code/tuple.py b/Day01-15/code/Day07/tuple.py similarity index 100% rename from Day01-15/Day07/code/tuple.py rename to Day01-15/code/Day07/tuple.py diff --git a/Day01-15/Day07/code/yanghui.py b/Day01-15/code/Day07/yanghui.py similarity index 100% rename from Day01-15/Day07/code/yanghui.py rename to Day01-15/code/Day07/yanghui.py diff --git a/Day01-15/Day08/code/access.py b/Day01-15/code/Day08/access.py similarity index 100% rename from Day01-15/Day08/code/access.py rename to Day01-15/code/Day08/access.py diff --git a/Day01-15/Day08/code/circle.py b/Day01-15/code/Day08/circle.py similarity index 100% rename from Day01-15/Day08/code/circle.py rename to Day01-15/code/Day08/circle.py diff --git a/Day01-15/Day08/code/clock.py b/Day01-15/code/Day08/clock.py similarity index 100% rename from Day01-15/Day08/code/clock.py rename to Day01-15/code/Day08/clock.py diff --git a/Day01-15/Day08/code/guess.py b/Day01-15/code/Day08/guess.py similarity index 100% rename from Day01-15/Day08/code/guess.py rename to Day01-15/code/Day08/guess.py diff --git a/Day01-15/Day08/code/hack.py b/Day01-15/code/Day08/hack.py similarity index 100% rename from Day01-15/Day08/code/hack.py rename to Day01-15/code/Day08/hack.py diff --git a/Day01-15/Day08/code/rect.py b/Day01-15/code/Day08/rect.py similarity index 100% rename from Day01-15/Day08/code/rect.py rename to Day01-15/code/Day08/rect.py diff --git a/Day01-15/Day08/code/student.py b/Day01-15/code/Day08/student.py similarity index 93% rename from Day01-15/Day08/code/student.py rename to Day01-15/code/Day08/student.py index 9a8d71e..845492d 100644 --- a/Day01-15/Day08/code/student.py +++ b/Day01-15/code/Day08/student.py @@ -28,7 +28,7 @@ class Student(object): if self.age < 18: print('%s只能观看《熊出没》.' % self.name) else: - print('%s正在观看岛国爱情动作片.' % self.name) + print('%s正在观看岛国大电影.' % self.name) def main(): diff --git a/Day01-15/Day09/code/association.py b/Day01-15/code/Day09/association.py similarity index 100% rename from Day01-15/Day09/code/association.py rename to Day01-15/code/Day09/association.py diff --git a/Day01-15/Day09/code/car1.py b/Day01-15/code/Day09/car1.py similarity index 100% rename from Day01-15/Day09/code/car1.py rename to Day01-15/code/Day09/car1.py diff --git a/Day01-15/Day09/code/car2.py b/Day01-15/code/Day09/car2.py similarity index 100% rename from Day01-15/Day09/code/car2.py rename to Day01-15/code/Day09/car2.py diff --git a/Day01-15/Day09/code/clock.py b/Day01-15/code/Day09/clock.py similarity index 100% rename from Day01-15/Day09/code/clock.py rename to Day01-15/code/Day09/clock.py diff --git a/Day01-15/Day09/code/dependency.py b/Day01-15/code/Day09/dependency.py similarity index 100% rename from Day01-15/Day09/code/dependency.py rename to Day01-15/code/Day09/dependency.py diff --git a/Day01-15/Day09/code/diamond.py b/Day01-15/code/Day09/diamond.py similarity index 100% rename from Day01-15/Day09/code/diamond.py rename to Day01-15/code/Day09/diamond.py diff --git a/Day01-15/Day09/code/employee.py b/Day01-15/code/Day09/employee.py similarity index 100% rename from Day01-15/Day09/code/employee.py rename to Day01-15/code/Day09/employee.py diff --git a/Day01-15/Day09/code/multi.py b/Day01-15/code/Day09/multi.py similarity index 100% rename from Day01-15/Day09/code/multi.py rename to Day01-15/code/Day09/multi.py diff --git a/Day01-15/Day09/code/pet.py b/Day01-15/code/Day09/pet.py similarity index 100% rename from Day01-15/Day09/code/pet.py rename to Day01-15/code/Day09/pet.py diff --git a/Day01-15/Day09/code/rational.py b/Day01-15/code/Day09/rational.py similarity index 100% rename from Day01-15/Day09/code/rational.py rename to Day01-15/code/Day09/rational.py diff --git a/Day01-15/Day09/code/shape.py b/Day01-15/code/Day09/shape.py similarity index 100% rename from Day01-15/Day09/code/shape.py rename to Day01-15/code/Day09/shape.py diff --git a/Day01-15/Day09/code/triangle.py b/Day01-15/code/Day09/triangle.py similarity index 100% rename from Day01-15/Day09/code/triangle.py rename to Day01-15/code/Day09/triangle.py diff --git a/Day01-15/Day10/code/ball.py b/Day01-15/code/Day10/ball.py similarity index 100% rename from Day01-15/Day10/code/ball.py rename to Day01-15/code/Day10/ball.py diff --git a/Day01-15/Day10/code/gui1.py b/Day01-15/code/Day10/gui1.py similarity index 100% rename from Day01-15/Day10/code/gui1.py rename to Day01-15/code/Day10/gui1.py diff --git a/Day01-15/Day10/code/gui2.py b/Day01-15/code/Day10/gui2.py similarity index 100% rename from Day01-15/Day10/code/gui2.py rename to Day01-15/code/Day10/gui2.py diff --git a/Day01-15/Day10/code/gui3.py b/Day01-15/code/Day10/gui3.py similarity index 100% rename from Day01-15/Day10/code/gui3.py rename to Day01-15/code/Day10/gui3.py diff --git a/Day01-15/Day10/code/renju.py b/Day01-15/code/Day10/renju.py similarity index 97% rename from Day01-15/Day10/code/renju.py rename to Day01-15/code/Day10/renju.py index 89cea1e..5f8cd88 100644 --- a/Day01-15/Day10/code/renju.py +++ b/Day01-15/code/Day10/renju.py @@ -1,78 +1,78 @@ -import pygame - -EMPTY = 0 -BLACK = 1 -WHITE = 2 - -black_color = [0, 0, 0] -white_color = [255, 255, 255] - - -class RenjuBoard(object): - - def __init__(self): - self._board = [[]] * 15 - self.reset() - - def reset(self): - for row in range(len(self._board)): - self._board[row] = [EMPTY] * 15 - - def move(self, row, col, is_black): - if self._board[row][col] == EMPTY: - self._board[row][col] = BLACK if is_black else WHITE - return True - return False - - def draw(self, screen): - for index in range(1, 16): - pygame.draw.line(screen, black_color, - [40, 40 * index], [600, 40 * index], 1) - pygame.draw.line(screen, black_color, - [40 * index, 40], [40 * index, 600], 1) - pygame.draw.rect(screen, black_color, [36, 36, 568, 568], 4) - pygame.draw.circle(screen, black_color, [320, 320], 5, 0) - pygame.draw.circle(screen, black_color, [160, 160], 5, 0) - pygame.draw.circle(screen, black_color, [480, 480], 5, 0) - pygame.draw.circle(screen, black_color, [480, 160], 5, 0) - pygame.draw.circle(screen, black_color, [160, 480], 5, 0) - for row in range(len(self._board)): - for col in range(len(self._board[row])): - if self._board[row][col] != EMPTY: - ccolor = black_color \ - if self._board[row][col] == BLACK else white_color - pos = [40 * (col + 1), 40 * (row + 1)] - pygame.draw.circle(screen, ccolor, pos, 20, 0) - - -def main(): - board = RenjuBoard() - is_black = True - pygame.init() - pygame.display.set_caption('五子棋') - screen = pygame.display.set_mode([640, 640]) - screen.fill([255, 255, 0]) - board.draw(screen) - pygame.display.flip() - running = True - while running: - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.KEYUP: - pass - elif event.type == pygame.MOUSEBUTTONDOWN\ - and event.button == 1: - x, y = event.pos - row = round((y - 40) / 40) - col = round((x - 40) / 40) - if board.move(row, col, is_black): - is_black = not is_black - screen.fill([255, 255, 0]) - board.draw(screen) - pygame.display.flip() - pygame.quit() - - -if __name__ == '__main__': - main() +import pygame + +EMPTY = 0 +BLACK = 1 +WHITE = 2 + +black_color = [0, 0, 0] +white_color = [255, 255, 255] + + +class RenjuBoard(object): + + def __init__(self): + self._board = [[]] * 15 + self.reset() + + def reset(self): + for row in range(len(self._board)): + self._board[row] = [EMPTY] * 15 + + def move(self, row, col, is_black): + if self._board[row][col] == EMPTY: + self._board[row][col] = BLACK if is_black else WHITE + return True + return False + + def draw(self, screen): + for index in range(1, 16): + pygame.draw.line(screen, black_color, + [40, 40 * index], [600, 40 * index], 1) + pygame.draw.line(screen, black_color, + [40 * index, 40], [40 * index, 600], 1) + pygame.draw.rect(screen, black_color, [36, 36, 568, 568], 4) + pygame.draw.circle(screen, black_color, [320, 320], 5, 0) + pygame.draw.circle(screen, black_color, [160, 160], 5, 0) + pygame.draw.circle(screen, black_color, [480, 480], 5, 0) + pygame.draw.circle(screen, black_color, [480, 160], 5, 0) + pygame.draw.circle(screen, black_color, [160, 480], 5, 0) + for row in range(len(self._board)): + for col in range(len(self._board[row])): + if self._board[row][col] != EMPTY: + ccolor = black_color \ + if self._board[row][col] == BLACK else white_color + pos = [40 * (col + 1), 40 * (row + 1)] + pygame.draw.circle(screen, ccolor, pos, 20, 0) + + +def main(): + board = RenjuBoard() + is_black = True + pygame.init() + pygame.display.set_caption('五子棋') + screen = pygame.display.set_mode([640, 640]) + screen.fill([255, 255, 0]) + board.draw(screen) + pygame.display.flip() + running = True + while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + elif event.type == pygame.KEYUP: + pass + elif event.type == pygame.MOUSEBUTTONDOWN\ + and event.button == 1: + x, y = event.pos + row = round((y - 40) / 40) + col = round((x - 40) / 40) + if board.move(row, col, is_black): + is_black = not is_black + screen.fill([255, 255, 0]) + board.draw(screen) + pygame.display.flip() + pygame.quit() + + +if __name__ == '__main__': + main() diff --git a/Day01-15/Day10/code/snake.py b/Day01-15/code/Day10/snake.py similarity index 96% rename from Day01-15/Day10/code/snake.py rename to Day01-15/code/Day10/snake.py index 71d7148..5147930 100644 --- a/Day01-15/Day10/code/snake.py +++ b/Day01-15/code/Day10/snake.py @@ -1,334 +1,334 @@ -from abc import ABCMeta, abstractmethod -from enum import Enum, unique -from random import randrange -from threading import Thread - -import pygame - - -class Color(object): - """颜色""" - - GRAY = (242, 242, 242) - BLACK = (0, 0, 0) - GREEN = (0, 255, 0) - PINK = (255, 20, 147) - - -@unique -class Direction(Enum): - """方向""" - - UP = 0 - RIGHT = 1 - DOWN = 2 - LEFT = 3 - - -class GameObject(object, metaclass=ABCMeta): - """游戏中的对象""" - - def __init__(self, x=0, y=0, color=Color.BLACK): - """ - 初始化方法 - - :param x: 横坐标 - :param y: 纵坐标 - :param color: 颜色 - """ - self._x = x - self._y = y - self._color = color - - @property - def x(self): - return self._x - - @property - def y(self): - return self._y - - @abstractmethod - def draw(self, screen): - """ - 绘制 - - :param screen: 屏幕 - """ - pass - - -class Wall(GameObject): - """围墙""" - - def __init__(self, x, y, width, height, color=Color.BLACK): - """ - 初始化方法 - - :param x: 横坐标 - :param y: 纵坐标 - :param width: 宽度 - :param height: 高度 - :param color: 颜色 - """ - super().__init__(x, y, color) - self._width = width - self._height = height - - @property - def width(self): - return self._width - - @property - def height(self): - return self._height - - def draw(self, screen): - pygame.draw.rect(screen, self._color, - (self._x, self._y, self._width, self._height), 4) - - -class Food(GameObject): - """食物""" - - def __init__(self, x, y, size, color=Color.PINK): - """ - 初始化方法 - - :param x: 横坐标 - :param y: 纵坐标 - :param size: 大小 - :param color: 颜色 - """ - super().__init__(x, y, color) - self._size = size - self._hidden = False - - def draw(self, screen): - if not self._hidden: - pygame.draw.circle(screen, self._color, - (self._x + self._size // 2, self._y + self._size // 2), - self._size // 2, 0) - self._hidden = not self._hidden - - -class SnakeNode(GameObject): - """蛇身上的节点""" - - def __init__(self, x, y, size, color=Color.GREEN): - """ - 初始化方法 - - :param x: 横坐标 - :param y: 纵坐标 - :param size: 大小 - :param color: 颜色 - """ - super().__init__(x, y, color) - self._size = size - - @property - def size(self): - return self._size - - def draw(self, screen): - pygame.draw.rect(screen, self._color, - (self._x, self._y, self._size, self._size), 0) - pygame.draw.rect(screen, Color.BLACK, - (self._x, self._y, self._size, self._size), 1) - - -class Snake(GameObject): - """蛇""" - - def __init__(self, x, y, size=20, length=5): - """ - 初始化方法 - - :param x: 横坐标 - :param y: 纵坐标 - :param size: 大小 - :param length: 初始长度 - """ - super().__init__() - self._dir = Direction.LEFT - self._nodes = [] - self._alive = True - self._new_dir = None - for index in range(length): - node = SnakeNode(x + index * size, y, size) - self._nodes.append(node) - - @property - def dir(self): - return self._dir - - @property - def alive(self): - return self._alive - - @property - def head(self): - return self._nodes[0] - - def change_dir(self, new_dir): - """ - 改变方向 - - :param new_dir: 新方向 - """ - if new_dir != self._dir and \ - (self._dir.value + new_dir.value) % 2 != 0: - self._new_dir = new_dir - - def move(self): - """移动""" - if self._new_dir: - self._dir, self._new_dir = self._new_dir, None - snake_dir = self._dir - x, y, size = self.head.x, self.head.y, self.head.size - if snake_dir == Direction.UP: - y -= size - elif snake_dir == Direction.RIGHT: - x += size - elif snake_dir == Direction.DOWN: - y += size - else: - x -= size - new_head = SnakeNode(x, y, size) - self._nodes.insert(0, new_head) - self._nodes.pop() - - def collide(self, wall): - """ - 撞墙 - - :param wall: 围墙 - """ - head = self.head - if head.x < wall.x or head.x + head.size > wall.x + wall.width \ - or head.y < wall.y or head.y + head.size > wall.y + wall.height: - self._alive = False - - def eat_food(self, food): - """ - 吃食物 - - :param food: 食物 - - :return: 吃到食物返回True否则返回False - """ - if self.head.x == food.x and self.head.y == food.y: - tail = self._nodes[-1] - self._nodes.append(tail) - return True - return False - - def eat_self(self): - """咬自己""" - for index in range(4, len(self._nodes)): - node = self._nodes[index] - if node.x == self.head.x and node.y == self.head.y: - self._alive = False - - def draw(self, screen): - for node in self._nodes: - node.draw(screen) - - -def main(): - - def refresh(): - """刷新游戏窗口""" - screen.fill(Color.GRAY) - wall.draw(screen) - food.draw(screen) - snake.draw(screen) - pygame.display.flip() - - def handle_key_event(key_event): - """处理按键事件""" - key = key_event.key - if key == pygame.K_F2: - reset_game() - elif key in (pygame.K_a, pygame.K_w, pygame.K_d, pygame.K_s): - if snake.alive: - if key == pygame.K_w: - new_dir = Direction.UP - elif key == pygame.K_d: - new_dir = Direction.RIGHT - elif key == pygame.K_s: - new_dir = Direction.DOWN - else: - new_dir = Direction.LEFT - snake.change_dir(new_dir) - - def create_food(): - """创建食物""" - unit_size = snake.head.size - max_row = wall.height // unit_size - max_col = wall.width // unit_size - row = randrange(0, max_row) - col = randrange(0, max_col) - return Food(wall.x + unit_size * col, wall.y + unit_size * row, unit_size) - - def reset_game(): - """重置游戏""" - nonlocal food, snake - food = create_food() - snake = Snake(250, 290) - - def background_task(): - nonlocal running, food - while running: - if snake.alive: - refresh() - clock.tick(10) - if snake.alive: - snake.move() - snake.collide(wall) - if snake.eat_food(food): - food = create_food() - snake.eat_self() - - """ - class BackgroundTask(Thread): - - def run(self): - nonlocal running, food - while running: - if snake.alive: - refresh() - clock.tick(10) - if snake.alive: - snake.move() - snake.collide(wall) - if snake.eat_food(food): - food = create_food() - snake.eat_self() - """ - - wall = Wall(10, 10, 600, 600) - snake = Snake(250, 290) - food = create_food() - pygame.init() - screen = pygame.display.set_mode((620, 620)) - pygame.display.set_caption('贪吃蛇') - # 创建控制游戏每秒帧数的时钟 - clock = pygame.time.Clock() - running = True - # 启动后台线程负责刷新窗口和让蛇移动 - # BackgroundTask().start() - Thread(target=background_task).start() - # 处理事件的消息循环 - while running: - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.KEYDOWN: - handle_key_event(event) - pygame.quit() - - -if __name__ == '__main__': - main() +from abc import ABCMeta, abstractmethod +from enum import Enum, unique +from random import randrange +from threading import Thread + +import pygame + + +class Color(object): + """颜色""" + + GRAY = (242, 242, 242) + BLACK = (0, 0, 0) + GREEN = (0, 255, 0) + PINK = (255, 20, 147) + + +@unique +class Direction(Enum): + """方向""" + + UP = 0 + RIGHT = 1 + DOWN = 2 + LEFT = 3 + + +class GameObject(object, metaclass=ABCMeta): + """游戏中的对象""" + + def __init__(self, x=0, y=0, color=Color.BLACK): + """ + 初始化方法 + + :param x: 横坐标 + :param y: 纵坐标 + :param color: 颜色 + """ + self._x = x + self._y = y + self._color = color + + @property + def x(self): + return self._x + + @property + def y(self): + return self._y + + @abstractmethod + def draw(self, screen): + """ + 绘制 + + :param screen: 屏幕 + """ + pass + + +class Wall(GameObject): + """围墙""" + + def __init__(self, x, y, width, height, color=Color.BLACK): + """ + 初始化方法 + + :param x: 横坐标 + :param y: 纵坐标 + :param width: 宽度 + :param height: 高度 + :param color: 颜色 + """ + super().__init__(x, y, color) + self._width = width + self._height = height + + @property + def width(self): + return self._width + + @property + def height(self): + return self._height + + def draw(self, screen): + pygame.draw.rect(screen, self._color, + (self._x, self._y, self._width, self._height), 4) + + +class Food(GameObject): + """食物""" + + def __init__(self, x, y, size, color=Color.PINK): + """ + 初始化方法 + + :param x: 横坐标 + :param y: 纵坐标 + :param size: 大小 + :param color: 颜色 + """ + super().__init__(x, y, color) + self._size = size + self._hidden = False + + def draw(self, screen): + if not self._hidden: + pygame.draw.circle(screen, self._color, + (self._x + self._size // 2, self._y + self._size // 2), + self._size // 2, 0) + self._hidden = not self._hidden + + +class SnakeNode(GameObject): + """蛇身上的节点""" + + def __init__(self, x, y, size, color=Color.GREEN): + """ + 初始化方法 + + :param x: 横坐标 + :param y: 纵坐标 + :param size: 大小 + :param color: 颜色 + """ + super().__init__(x, y, color) + self._size = size + + @property + def size(self): + return self._size + + def draw(self, screen): + pygame.draw.rect(screen, self._color, + (self._x, self._y, self._size, self._size), 0) + pygame.draw.rect(screen, Color.BLACK, + (self._x, self._y, self._size, self._size), 1) + + +class Snake(GameObject): + """蛇""" + + def __init__(self, x, y, size=20, length=5): + """ + 初始化方法 + + :param x: 横坐标 + :param y: 纵坐标 + :param size: 大小 + :param length: 初始长度 + """ + super().__init__() + self._dir = Direction.LEFT + self._nodes = [] + self._alive = True + self._new_dir = None + for index in range(length): + node = SnakeNode(x + index * size, y, size) + self._nodes.append(node) + + @property + def dir(self): + return self._dir + + @property + def alive(self): + return self._alive + + @property + def head(self): + return self._nodes[0] + + def change_dir(self, new_dir): + """ + 改变方向 + + :param new_dir: 新方向 + """ + if new_dir != self._dir and \ + (self._dir.value + new_dir.value) % 2 != 0: + self._new_dir = new_dir + + def move(self): + """移动""" + if self._new_dir: + self._dir, self._new_dir = self._new_dir, None + snake_dir = self._dir + x, y, size = self.head.x, self.head.y, self.head.size + if snake_dir == Direction.UP: + y -= size + elif snake_dir == Direction.RIGHT: + x += size + elif snake_dir == Direction.DOWN: + y += size + else: + x -= size + new_head = SnakeNode(x, y, size) + self._nodes.insert(0, new_head) + self._nodes.pop() + + def collide(self, wall): + """ + 撞墙 + + :param wall: 围墙 + """ + head = self.head + if head.x < wall.x or head.x + head.size > wall.x + wall.width \ + or head.y < wall.y or head.y + head.size > wall.y + wall.height: + self._alive = False + + def eat_food(self, food): + """ + 吃食物 + + :param food: 食物 + + :return: 吃到食物返回True否则返回False + """ + if self.head.x == food.x and self.head.y == food.y: + tail = self._nodes[-1] + self._nodes.append(tail) + return True + return False + + def eat_self(self): + """咬自己""" + for index in range(4, len(self._nodes)): + node = self._nodes[index] + if node.x == self.head.x and node.y == self.head.y: + self._alive = False + + def draw(self, screen): + for node in self._nodes: + node.draw(screen) + + +def main(): + + def refresh(): + """刷新游戏窗口""" + screen.fill(Color.GRAY) + wall.draw(screen) + food.draw(screen) + snake.draw(screen) + pygame.display.flip() + + def handle_key_event(key_event): + """处理按键事件""" + key = key_event.key + if key == pygame.K_F2: + reset_game() + elif key in (pygame.K_a, pygame.K_w, pygame.K_d, pygame.K_s): + if snake.alive: + if key == pygame.K_w: + new_dir = Direction.UP + elif key == pygame.K_d: + new_dir = Direction.RIGHT + elif key == pygame.K_s: + new_dir = Direction.DOWN + else: + new_dir = Direction.LEFT + snake.change_dir(new_dir) + + def create_food(): + """创建食物""" + unit_size = snake.head.size + max_row = wall.height // unit_size + max_col = wall.width // unit_size + row = randrange(0, max_row) + col = randrange(0, max_col) + return Food(wall.x + unit_size * col, wall.y + unit_size * row, unit_size) + + def reset_game(): + """重置游戏""" + nonlocal food, snake + food = create_food() + snake = Snake(250, 290) + + def background_task(): + nonlocal running, food + while running: + if snake.alive: + refresh() + clock.tick(10) + if snake.alive: + snake.move() + snake.collide(wall) + if snake.eat_food(food): + food = create_food() + snake.eat_self() + + """ + class BackgroundTask(Thread): + + def run(self): + nonlocal running, food + while running: + if snake.alive: + refresh() + clock.tick(10) + if snake.alive: + snake.move() + snake.collide(wall) + if snake.eat_food(food): + food = create_food() + snake.eat_self() + """ + + wall = Wall(10, 10, 600, 600) + snake = Snake(250, 290) + food = create_food() + pygame.init() + screen = pygame.display.set_mode((620, 620)) + pygame.display.set_caption('贪吃蛇') + # 创建控制游戏每秒帧数的时钟 + clock = pygame.time.Clock() + running = True + # 启动后台线程负责刷新窗口和让蛇移动 + # BackgroundTask().start() + Thread(target=background_task).start() + # 处理事件的消息循环 + while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + elif event.type == pygame.KEYDOWN: + handle_key_event(event) + pygame.quit() + + +if __name__ == '__main__': + main() diff --git a/Day01-15/Day10/code/turtle1.py b/Day01-15/code/Day10/turtle1.py similarity index 100% rename from Day01-15/Day10/code/turtle1.py rename to Day01-15/code/Day10/turtle1.py diff --git a/Day01-15/Day11/code/csv1.py b/Day01-15/code/Day11/csv1.py similarity index 100% rename from Day01-15/Day11/code/csv1.py rename to Day01-15/code/Day11/csv1.py diff --git a/Day01-15/Day11/code/csv2.py b/Day01-15/code/Day11/csv2.py similarity index 100% rename from Day01-15/Day11/code/csv2.py rename to Day01-15/code/Day11/csv2.py diff --git a/Day01-15/Day11/code/ex1.py b/Day01-15/code/Day11/ex1.py similarity index 100% rename from Day01-15/Day11/code/ex1.py rename to Day01-15/code/Day11/ex1.py diff --git a/Day01-15/Day11/code/ex2.py b/Day01-15/code/Day11/ex2.py similarity index 100% rename from Day01-15/Day11/code/ex2.py rename to Day01-15/code/Day11/ex2.py diff --git a/Day01-15/Day11/code/ex3.py b/Day01-15/code/Day11/ex3.py similarity index 100% rename from Day01-15/Day11/code/ex3.py rename to Day01-15/code/Day11/ex3.py diff --git a/Day01-15/Day11/code/ex4.py b/Day01-15/code/Day11/ex4.py similarity index 100% rename from Day01-15/Day11/code/ex4.py rename to Day01-15/code/Day11/ex4.py diff --git a/Day01-15/Day11/code/example.csv b/Day01-15/code/Day11/example.csv similarity index 100% rename from Day01-15/Day11/code/example.csv rename to Day01-15/code/Day11/example.csv diff --git a/Day01-15/Day11/code/file1.py b/Day01-15/code/Day11/file1.py similarity index 100% rename from Day01-15/Day11/code/file1.py rename to Day01-15/code/Day11/file1.py diff --git a/Day01-15/Day11/code/file2.py b/Day01-15/code/Day11/file2.py similarity index 100% rename from Day01-15/Day11/code/file2.py rename to Day01-15/code/Day11/file2.py diff --git a/Day01-15/Day11/code/file3.py b/Day01-15/code/Day11/file3.py similarity index 100% rename from Day01-15/Day11/code/file3.py rename to Day01-15/code/Day11/file3.py diff --git a/Day01-15/Day11/code/file4.py b/Day01-15/code/Day11/file4.py similarity index 100% rename from Day01-15/Day11/code/file4.py rename to Day01-15/code/Day11/file4.py diff --git a/Day01-15/Day11/code/json1.py b/Day01-15/code/Day11/json1.py similarity index 100% rename from Day01-15/Day11/code/json1.py rename to Day01-15/code/Day11/json1.py diff --git a/Day01-15/Day11/code/json2.py b/Day01-15/code/Day11/json2.py similarity index 100% rename from Day01-15/Day11/code/json2.py rename to Day01-15/code/Day11/json2.py diff --git a/Day01-15/Day11/code/mm.jpg b/Day01-15/code/Day11/mm.jpg similarity index 100% rename from Day01-15/Day11/code/mm.jpg rename to Day01-15/code/Day11/mm.jpg diff --git a/Day01-15/Day11/code/pi_million_digits.txt b/Day01-15/code/Day11/pi_million_digits.txt similarity index 100% rename from Day01-15/Day11/code/pi_million_digits.txt rename to Day01-15/code/Day11/pi_million_digits.txt diff --git a/Day01-15/Day11/code/teacher.csv b/Day01-15/code/Day11/teacher.csv similarity index 100% rename from Day01-15/Day11/code/teacher.csv rename to Day01-15/code/Day11/teacher.csv diff --git a/Day01-15/Day11/code/致橡树.txt b/Day01-15/code/Day11/致橡树.txt similarity index 100% rename from Day01-15/Day11/code/致橡树.txt rename to Day01-15/code/Day11/致橡树.txt diff --git a/Day01-15/Day12/code/str1.py b/Day01-15/code/Day12/str1.py similarity index 100% rename from Day01-15/Day12/code/str1.py rename to Day01-15/code/Day12/str1.py diff --git a/Day01-15/Day12/code/str2.py b/Day01-15/code/Day12/str2.py similarity index 100% rename from Day01-15/Day12/code/str2.py rename to Day01-15/code/Day12/str2.py diff --git a/Day01-15/Day12/code/test3.py b/Day01-15/code/Day12/test3.py similarity index 100% rename from Day01-15/Day12/code/test3.py rename to Day01-15/code/Day12/test3.py diff --git a/Day01-15/Day12/code/test4.py b/Day01-15/code/Day12/test4.py similarity index 100% rename from Day01-15/Day12/code/test4.py rename to Day01-15/code/Day12/test4.py diff --git a/Day01-15/Day12/code/test5.py b/Day01-15/code/Day12/test5.py similarity index 100% rename from Day01-15/Day12/code/test5.py rename to Day01-15/code/Day12/test5.py diff --git a/Day01-15/Day13/code/asyncio1.py b/Day01-15/code/Day13/asyncio1.py similarity index 100% rename from Day01-15/Day13/code/asyncio1.py rename to Day01-15/code/Day13/asyncio1.py diff --git a/Day01-15/Day13/code/asyncio2.py b/Day01-15/code/Day13/asyncio2.py similarity index 100% rename from Day01-15/Day13/code/asyncio2.py rename to Day01-15/code/Day13/asyncio2.py diff --git a/Day01-15/Day13/code/asyncio3.py b/Day01-15/code/Day13/asyncio3.py similarity index 100% rename from Day01-15/Day13/code/asyncio3.py rename to Day01-15/code/Day13/asyncio3.py diff --git a/Day01-15/Day13/code/coroutine1.py b/Day01-15/code/Day13/coroutine1.py similarity index 100% rename from Day01-15/Day13/code/coroutine1.py rename to Day01-15/code/Day13/coroutine1.py diff --git a/Day01-15/Day13/code/coroutine2.py b/Day01-15/code/Day13/coroutine2.py similarity index 100% rename from Day01-15/Day13/code/coroutine2.py rename to Day01-15/code/Day13/coroutine2.py diff --git a/Day01-15/Day13/code/generator1.py b/Day01-15/code/Day13/generator1.py similarity index 100% rename from Day01-15/Day13/code/generator1.py rename to Day01-15/code/Day13/generator1.py diff --git a/Day01-15/Day13/code/generator2.py b/Day01-15/code/Day13/generator2.py similarity index 100% rename from Day01-15/Day13/code/generator2.py rename to Day01-15/code/Day13/generator2.py diff --git a/Day01-15/Day13/code/multiprocess1.py b/Day01-15/code/Day13/multiprocess1.py similarity index 100% rename from Day01-15/Day13/code/multiprocess1.py rename to Day01-15/code/Day13/multiprocess1.py diff --git a/Day01-15/Day13/code/multiprocess2.py b/Day01-15/code/Day13/multiprocess2.py similarity index 100% rename from Day01-15/Day13/code/multiprocess2.py rename to Day01-15/code/Day13/multiprocess2.py diff --git a/Day01-15/Day13/code/multiprocess3.py b/Day01-15/code/Day13/multiprocess3.py similarity index 100% rename from Day01-15/Day13/code/multiprocess3.py rename to Day01-15/code/Day13/multiprocess3.py diff --git a/Day01-15/Day13/code/multiprocess4.py b/Day01-15/code/Day13/multiprocess4.py similarity index 100% rename from Day01-15/Day13/code/multiprocess4.py rename to Day01-15/code/Day13/multiprocess4.py diff --git a/Day01-15/Day13/code/multithread1.py b/Day01-15/code/Day13/multithread1.py similarity index 100% rename from Day01-15/Day13/code/multithread1.py rename to Day01-15/code/Day13/multithread1.py diff --git a/Day01-15/Day13/code/multithread2.py b/Day01-15/code/Day13/multithread2.py similarity index 100% rename from Day01-15/Day13/code/multithread2.py rename to Day01-15/code/Day13/multithread2.py diff --git a/Day01-15/Day13/code/multithread3.py b/Day01-15/code/Day13/multithread3.py similarity index 100% rename from Day01-15/Day13/code/multithread3.py rename to Day01-15/code/Day13/multithread3.py diff --git a/Day01-15/Day13/code/multithread4.py b/Day01-15/code/Day13/multithread4.py similarity index 100% rename from Day01-15/Day13/code/multithread4.py rename to Day01-15/code/Day13/multithread4.py diff --git a/Day01-15/Day13/code/multithread5.py b/Day01-15/code/Day13/multithread5.py similarity index 100% rename from Day01-15/Day13/code/multithread5.py rename to Day01-15/code/Day13/multithread5.py diff --git a/Day01-15/Day13/code/multithread6.py b/Day01-15/code/Day13/multithread6.py similarity index 100% rename from Day01-15/Day13/code/multithread6.py rename to Day01-15/code/Day13/multithread6.py diff --git a/Day01-15/Day13/code/singlethread1.py b/Day01-15/code/Day13/singlethread1.py similarity index 100% rename from Day01-15/Day13/code/singlethread1.py rename to Day01-15/code/Day13/singlethread1.py diff --git a/Day01-15/Day13/code/singlethread2.py b/Day01-15/code/Day13/singlethread2.py similarity index 100% rename from Day01-15/Day13/code/singlethread2.py rename to Day01-15/code/Day13/singlethread2.py diff --git a/Day01-15/Day13/code/test2.py b/Day01-15/code/Day13/test2.py similarity index 100% rename from Day01-15/Day13/code/test2.py rename to Day01-15/code/Day13/test2.py diff --git a/Day01-15/Day13/code/test3.py b/Day01-15/code/Day13/test3.py similarity index 100% rename from Day01-15/Day13/code/test3.py rename to Day01-15/code/Day13/test3.py diff --git a/Day01-15/Day14-A/code/chatclient.py b/Day01-15/code/Day14/chatclient.py similarity index 100% rename from Day01-15/Day14-A/code/chatclient.py rename to Day01-15/code/Day14/chatclient.py diff --git a/Day01-15/Day14-A/code/chatserver.py b/Day01-15/code/Day14/chatserver.py similarity index 100% rename from Day01-15/Day14-A/code/chatserver.py rename to Day01-15/code/Day14/chatserver.py diff --git a/Day01-15/Day14-A/code/fileclient.py b/Day01-15/code/Day14/fileclient.py similarity index 100% rename from Day01-15/Day14-A/code/fileclient.py rename to Day01-15/code/Day14/fileclient.py diff --git a/Day01-15/Day14-A/code/fileserver.py b/Day01-15/code/Day14/fileserver.py similarity index 100% rename from Day01-15/Day14-A/code/fileserver.py rename to Day01-15/code/Day14/fileserver.py diff --git a/Day01-15/Day14-A/code/guido.jpg b/Day01-15/code/Day14/guido.jpg similarity index 100% rename from Day01-15/Day14-A/code/guido.jpg rename to Day01-15/code/Day14/guido.jpg diff --git a/Day01-15/Day14-A/code/mmdownloader.py b/Day01-15/code/Day14/mmdownloader.py similarity index 100% rename from Day01-15/Day14-A/code/mmdownloader.py rename to Day01-15/code/Day14/mmdownloader.py diff --git a/Day01-15/Day14-A/code/socket1.py b/Day01-15/code/Day14/socket1.py similarity index 100% rename from Day01-15/Day14-A/code/socket1.py rename to Day01-15/code/Day14/socket1.py diff --git a/Day01-15/Day14-A/code/socket2.py b/Day01-15/code/Day14/socket2.py similarity index 100% rename from Day01-15/Day14-A/code/socket2.py rename to Day01-15/code/Day14/socket2.py diff --git a/Day01-15/Day14-A/code/socket3.py b/Day01-15/code/Day14/socket3.py similarity index 100% rename from Day01-15/Day14-A/code/socket3.py rename to Day01-15/code/Day14/socket3.py diff --git a/Day01-15/Day14-A/code/socket4.py b/Day01-15/code/Day14/socket4.py similarity index 100% rename from Day01-15/Day14-A/code/socket4.py rename to Day01-15/code/Day14/socket4.py diff --git a/Day01-15/Day14-A/code/socket5.py b/Day01-15/code/Day14/socket5.py similarity index 100% rename from Day01-15/Day14-A/code/socket5.py rename to Day01-15/code/Day14/socket5.py diff --git a/Day01-15/Day14-A/code/timeclient.py b/Day01-15/code/Day14/timeclient.py similarity index 100% rename from Day01-15/Day14-A/code/timeclient.py rename to Day01-15/code/Day14/timeclient.py diff --git a/Day01-15/Day14-A/code/timeserver.py b/Day01-15/code/Day14/timeserver.py similarity index 100% rename from Day01-15/Day14-A/code/timeserver.py rename to Day01-15/code/Day14/timeserver.py diff --git a/Day01-15/Day15/code/excel1.py b/Day01-15/code/Day15/excel1.py similarity index 100% rename from Day01-15/Day15/code/excel1.py rename to Day01-15/code/Day15/excel1.py diff --git a/Day01-15/Day15/code/excel2.py b/Day01-15/code/Day15/excel2.py similarity index 100% rename from Day01-15/Day15/code/excel2.py rename to Day01-15/code/Day15/excel2.py diff --git a/Day01-15/Day15/code/pdf1.py b/Day01-15/code/Day15/pdf1.py similarity index 100% rename from Day01-15/Day15/code/pdf1.py rename to Day01-15/code/Day15/pdf1.py diff --git a/Day01-15/Day15/code/pdf2.py b/Day01-15/code/Day15/pdf2.py similarity index 100% rename from Day01-15/Day15/code/pdf2.py rename to Day01-15/code/Day15/pdf2.py diff --git a/Day01-15/Day15/code/pillow1.py b/Day01-15/code/Day15/pillow1.py similarity index 100% rename from Day01-15/Day15/code/pillow1.py rename to Day01-15/code/Day15/pillow1.py diff --git a/Day01-15/Day15/code/res/Docker入门教程.pdf b/Day01-15/code/Day15/res/Docker入门教程.pdf similarity index 100% rename from Day01-15/Day15/code/res/Docker入门教程.pdf rename to Day01-15/code/Day15/res/Docker入门教程.pdf diff --git a/Day01-15/Day15/code/res/guido.jpg b/Day01-15/code/Day15/res/guido.jpg similarity index 100% rename from Day01-15/Day15/code/res/guido.jpg rename to Day01-15/code/Day15/res/guido.jpg diff --git a/Day01-15/Day15/code/res/luohao.png b/Day01-15/code/Day15/res/luohao.png similarity index 100% rename from Day01-15/Day15/code/res/luohao.png rename to Day01-15/code/Day15/res/luohao.png diff --git a/Day01-15/Day15/code/res/学生明细表.xlsx b/Day01-15/code/Day15/res/学生明细表.xlsx similarity index 100% rename from Day01-15/Day15/code/res/学生明细表.xlsx rename to Day01-15/code/Day15/res/学生明细表.xlsx diff --git a/Day01-15/Day15/code/res/用函数还是用复杂的表达式.docx b/Day01-15/code/Day15/res/用函数还是用复杂的表达式.docx similarity index 100% rename from Day01-15/Day15/code/res/用函数还是用复杂的表达式.docx rename to Day01-15/code/Day15/res/用函数还是用复杂的表达式.docx diff --git a/Day01-15/Day15/code/word1.py b/Day01-15/code/Day15/word1.py similarity index 100% rename from Day01-15/Day15/code/word1.py rename to Day01-15/code/Day15/word1.py diff --git a/Day01-15/Day15/code/word2.py b/Day01-15/code/Day15/word2.py similarity index 100% rename from Day01-15/Day15/code/word2.py rename to Day01-15/code/Day15/word2.py diff --git a/Day01-15/Day14-A/res/TCP-IP-model.png b/Day01-15/res/TCP-IP-model.png similarity index 100% rename from Day01-15/Day14-A/res/TCP-IP-model.png rename to Day01-15/res/TCP-IP-model.png diff --git a/Day01-15/Day14-A/res/after-browser.jpg b/Day01-15/res/after-browser.jpg similarity index 100% rename from Day01-15/Day14-A/res/after-browser.jpg rename to Day01-15/res/after-browser.jpg diff --git a/Day01-15/Day14-A/res/arpanet.png b/Day01-15/res/arpanet.png similarity index 100% rename from Day01-15/Day14-A/res/arpanet.png rename to Day01-15/res/arpanet.png diff --git a/Day01-15/Day10/res/ball-game.png b/Day01-15/res/ball-game.png similarity index 100% rename from Day01-15/Day10/res/ball-game.png rename to Day01-15/res/ball-game.png diff --git a/Day01-15/Day10/res/ball.png b/Day01-15/res/ball.png similarity index 100% rename from Day01-15/Day10/res/ball.png rename to Day01-15/res/ball.png diff --git a/Day01-15/Day14-A/res/before-browser.jpg b/Day01-15/res/before-browser.jpg similarity index 100% rename from Day01-15/Day14-A/res/before-browser.jpg rename to Day01-15/res/before-browser.jpg diff --git a/Day01-15/Day14-A/res/browers.jpg b/Day01-15/res/browers.jpg similarity index 100% rename from Day01-15/Day14-A/res/browers.jpg rename to Day01-15/res/browers.jpg diff --git a/Day01-15/Day14-A/res/browser-market-place.jpeg b/Day01-15/res/browser-market-place.jpeg similarity index 100% rename from Day01-15/Day14-A/res/browser-market-place.jpeg rename to Day01-15/res/browser-market-place.jpeg diff --git a/Day01-15/Day07/res/fibonacci-blocks.png b/Day01-15/res/fibonacci-blocks.png similarity index 100% rename from Day01-15/Day07/res/fibonacci-blocks.png rename to Day01-15/res/fibonacci-blocks.png diff --git a/Day01-15/Day11/res/file-open-mode.png b/Day01-15/res/file-open-mode.png similarity index 100% rename from Day01-15/Day11/res/file-open-mode.png rename to Day01-15/res/file-open-mode.png diff --git a/Day01-15/Day03/res/formula_1.png b/Day01-15/res/formula_1.png similarity index 100% rename from Day01-15/Day03/res/formula_1.png rename to Day01-15/res/formula_1.png diff --git a/Day01-15/Day04/res/formula_1.png b/Day01-15/res/formula_2.png similarity index 100% rename from Day01-15/Day04/res/formula_1.png rename to Day01-15/res/formula_2.png diff --git a/Day01-15/Day06/res/formula_1.png b/Day01-15/res/formula_3.png similarity index 100% rename from Day01-15/Day06/res/formula_1.png rename to Day01-15/res/formula_3.png diff --git a/Day01-15/Day06/res/formula_2.png b/Day01-15/res/formula_4.png similarity index 100% rename from Day01-15/Day06/res/formula_2.png rename to Day01-15/res/formula_4.png diff --git a/Day01-15/Day07/res/formula_1.png b/Day01-15/res/formula_5.png similarity index 100% rename from Day01-15/Day07/res/formula_1.png rename to Day01-15/res/formula_5.png diff --git a/Day01-15/Day07/res/formula_2.png b/Day01-15/res/formula_6.png similarity index 100% rename from Day01-15/Day07/res/formula_2.png rename to Day01-15/res/formula_6.png diff --git a/Day01-15/Day07/res/formula_3.png b/Day01-15/res/formula_7.png similarity index 100% rename from Day01-15/Day07/res/formula_3.png rename to Day01-15/res/formula_7.png diff --git a/Day01-15/Day07/res/formula_4.png b/Day01-15/res/formula_8.png similarity index 100% rename from Day01-15/Day07/res/formula_4.png rename to Day01-15/res/formula_8.png diff --git a/Day01-15/Day14-A/res/how-data-is-processed.jpg b/Day01-15/res/how-data-is-processed.jpg similarity index 100% rename from Day01-15/Day14-A/res/how-data-is-processed.jpg rename to Day01-15/res/how-data-is-processed.jpg diff --git a/Day01-15/Day15/res/image-crop.png b/Day01-15/res/image-crop.png similarity index 100% rename from Day01-15/Day15/res/image-crop.png rename to Day01-15/res/image-crop.png diff --git a/Day01-15/Day15/res/image-filter.png b/Day01-15/res/image-filter.png similarity index 100% rename from Day01-15/Day15/res/image-filter.png rename to Day01-15/res/image-filter.png diff --git a/Day01-15/Day15/res/image-paste.png b/Day01-15/res/image-paste.png similarity index 100% rename from Day01-15/Day15/res/image-paste.png rename to Day01-15/res/image-paste.png diff --git a/Day01-15/Day15/res/image-putpixel.png b/Day01-15/res/image-putpixel.png similarity index 100% rename from Day01-15/Day15/res/image-putpixel.png rename to Day01-15/res/image-putpixel.png diff --git a/Day01-15/Day15/res/image-rotate.png b/Day01-15/res/image-rotate.png similarity index 100% rename from Day01-15/Day15/res/image-rotate.png rename to Day01-15/res/image-rotate.png diff --git a/Day01-15/Day15/res/image-show.png b/Day01-15/res/image-show.png similarity index 100% rename from Day01-15/Day15/res/image-show.png rename to Day01-15/res/image-show.png diff --git a/Day01-15/Day15/res/image-thumbnail.png b/Day01-15/res/image-thumbnail.png similarity index 100% rename from Day01-15/Day15/res/image-thumbnail.png rename to Day01-15/res/image-thumbnail.png diff --git a/Day01-15/Day15/res/image-transpose.png b/Day01-15/res/image-transpose.png similarity index 100% rename from Day01-15/Day15/res/image-transpose.png rename to Day01-15/res/image-transpose.png diff --git a/Day01-15/Day07/res/ipython-timeit.png b/Day01-15/res/ipython-timeit.png similarity index 100% rename from Day01-15/Day07/res/ipython-timeit.png rename to Day01-15/res/ipython-timeit.png diff --git a/Day01-15/Day13/res/macos-monitor.png b/Day01-15/res/macos-monitor.png similarity index 100% rename from Day01-15/Day13/res/macos-monitor.png rename to Day01-15/res/macos-monitor.png diff --git a/Day01-15/Day08/res/object-feature.png b/Day01-15/res/object-feature.png similarity index 100% rename from Day01-15/Day08/res/object-feature.png rename to Day01-15/res/object-feature.png diff --git a/Day01-15/Day08/res/oop-zhihu.png b/Day01-15/res/oop-zhihu.png similarity index 100% rename from Day01-15/Day08/res/oop-zhihu.png rename to Day01-15/res/oop-zhihu.png diff --git a/Day01-15/Day14-A/res/osi_rm.gif b/Day01-15/res/osi_rm.gif similarity index 100% rename from Day01-15/Day14-A/res/osi_rm.gif rename to Day01-15/res/osi_rm.gif diff --git a/Day01-15/Day14-A/res/osimodel.png b/Day01-15/res/osimodel.png similarity index 100% rename from Day01-15/Day14-A/res/osimodel.png rename to Day01-15/res/osimodel.png diff --git a/Day01-15/Day01/res/python-idle.png b/Day01-15/res/python-idle.png similarity index 100% rename from Day01-15/Day01/res/python-idle.png rename to Day01-15/res/python-idle.png diff --git a/Day01-15/Day01/res/python-ipython.png b/Day01-15/res/python-ipython.png similarity index 100% rename from Day01-15/Day01/res/python-ipython.png rename to Day01-15/res/python-ipython.png diff --git a/Day01-15/Day01/res/python-jupyter-1.png b/Day01-15/res/python-jupyter-1.png similarity index 100% rename from Day01-15/Day01/res/python-jupyter-1.png rename to Day01-15/res/python-jupyter-1.png diff --git a/Day01-15/Day01/res/python-jupyter-2.png b/Day01-15/res/python-jupyter-2.png similarity index 100% rename from Day01-15/Day01/res/python-jupyter-2.png rename to Day01-15/res/python-jupyter-2.png diff --git a/Day01-15/Day01/res/python-pycharm.png b/Day01-15/res/python-pycharm.png similarity index 100% rename from Day01-15/Day01/res/python-pycharm.png rename to Day01-15/res/python-pycharm.png diff --git a/Day01-15/Day07/res/python-set.png b/Day01-15/res/python-set.png similarity index 100% rename from Day01-15/Day07/res/python-set.png rename to Day01-15/res/python-set.png diff --git a/Day01-15/Day01/res/python-sublime.png b/Day01-15/res/python-sublime.png similarity index 100% rename from Day01-15/Day01/res/python-sublime.png rename to Day01-15/res/python-sublime.png diff --git a/Day01-15/Day14-A/res/tcpipprotocols.png b/Day01-15/res/tcpipprotocols.png similarity index 100% rename from Day01-15/Day14-A/res/tcpipprotocols.png rename to Day01-15/res/tcpipprotocols.png diff --git a/Day01-15/Day12/res/tel-start-number.png b/Day01-15/res/tel-start-number.png similarity index 100% rename from Day01-15/Day12/res/tel-start-number.png rename to Day01-15/res/tel-start-number.png diff --git a/Day01-15/Day14-A/res/telnet.png b/Day01-15/res/telnet.png similarity index 100% rename from Day01-15/Day14-A/res/telnet.png rename to Day01-15/res/telnet.png diff --git a/Day01-15/Day09/res/uml-components.png b/Day01-15/res/uml-components.png similarity index 100% rename from Day01-15/Day09/res/uml-components.png rename to Day01-15/res/uml-components.png diff --git a/Day01-15/Day09/res/uml-example.png b/Day01-15/res/uml-example.png similarity index 100% rename from Day01-15/Day09/res/uml-example.png rename to Day01-15/res/uml-example.png diff --git a/Day16-20/Python语言进阶.md b/Day16-20/16-20.Python语言进阶.md similarity index 99% rename from Day16-20/Python语言进阶.md rename to Day16-20/16-20.Python语言进阶.md index b304f6e..eabc351 100644 --- a/Day16-20/Python语言进阶.md +++ b/Day16-20/16-20.Python语言进阶.md @@ -70,7 +70,7 @@ def merge(items1, items2, comp): """合并(将两个有序的列表合并成一个有序的列表)""" items = [] - index, index2 = 0, 0 + index1, index2 = 0, 0 while index1 < len(items1) and index2 < len(items2): if comp(items1[index1], items2[index2]): items.append(items1[index1]) diff --git a/Day16-20/code/example14.py b/Day16-20/code/example14.py index 6749376..216aafd 100644 --- a/Day16-20/code/example14.py +++ b/Day16-20/code/example14.py @@ -11,10 +11,7 @@ import random @unique class Suite(Enum): """花色(枚举)""" - SPADE = 0 - HEART = 1 - CLUB = 2 - DIAMOND = 3 + SPADE, HEART, CLUB, DIAMOND = range(4) def __lt__(self, other): return self.value < other.value diff --git a/Day16-20/code/homework01.py b/Day16-20/code/homework01.py deleted file mode 100644 index c036909..0000000 --- a/Day16-20/code/homework01.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -装饰器的应用 -""" -from functools import wraps -from random import randint -from time import sleep - - -class Retry(): - """让函数可以重试执行的装饰器""" - - def __init__(self, times=3, max_wait=0, errors=(Exception, )): - self.times = times - self.max_wait = max_wait - self.errors = errors - - def __call__(self, func): - - @wraps(func) - def wrapper(*args, **kwargs): - for _ in range(self.times): - try: - return func(*args, **kwargs) - except self.errors: - sleep(randint(self.max_wait)) - - return wrapper - - -def retry(*, times=3, max_wait=0, errors=(Exception, )): - """让函数重试执行的装饰器函数""" - - def decorate(func): - - @wraps(func) - def wrapper(*args, **kwargs): - for _ in range(times): - try: - return func(*args, **kwargs) - except errors: - sleep(randint(max_wait)) - return wrapper - - return decorate - - -# @Retry(max_wait=5) -@retry(max_wait=5) -def get_data_from_url(url): - pass - diff --git a/Day16-20/code/homework02.py b/Day16-20/code/homework02.py deleted file mode 100644 index d59f9fd..0000000 --- a/Day16-20/code/homework02.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -模拟面试编程题 -""" - - -def second_max(items: list, gt=lambda x, y: x > y): - """从列表中找出第二大元素""" - assert len(items) >= 2 - max1, max2 = (items[0], items[1]) \ - if gt(items[0], items[1]) else (items[1], items[0]) - for i in range(2, len(items)): - if gt(max1, items[i]) and gt(items[i], max2): - max2 = items[i] - elif gt(items[i], max1): - max1, max2 = items[i], max1 - return max2 - - -def list_depth(items: list) -> int: - """计算嵌套列表的嵌套深度""" - if isinstance(items, list): - max_depth = 1 - for item in items: - max_depth = max(list_depth(item) + 1, max_depth) - return max_depth - return 0 - - -def main(): - """主函数""" - one_set = {1} - pos, off = 1, 1 - while pos <= 100000000: - pos += off - one_set.add(pos) - off += 1 - num, *poses = map(int, input().split()) - for pos in poses: - print(1 if pos in one_set else 0, end=' ') - # items1 = [38, 95, 27, 95, 88, 73, 61, 50] - # print(second_max(items1)) - # items2 = [[1], [[[2]]],[[3]], 4, [[[[[5, [6]]]]]]] - # print(list_depth(items1)) - # print(list_depth(items2)) - - -if __name__ == '__main__': - main() diff --git a/Day16-20/code/root@39.100.102.28 b/Day16-20/code/root@39.100.102.28 deleted file mode 100644 index 315679e..0000000 --- a/Day16-20/code/root@39.100.102.28 +++ /dev/null @@ -1,50 +0,0 @@ -""" -多进程和进程池的使用 -多线程因为GIL的存在不能够发挥CPU的多核特性 -对于计算密集型任务应该考虑使用多进程 -time python3 example22.py -real 0m11.512s -user 0m39.319s -sys 0m0.169s -""" -import concurrent.futures -import math - -PRIMES = [ - 1116281, - 1297337, - 104395303, - 472882027, - 533000389, - 817504243, - 982451653, - 112272535095293, - 112582705942171, - 112272535095293, - 115280095190773, - 115797848077099, - 1099726899285419 -] * 5 - - -def is_prime(n): - """判断素数""" - if n % 2 == 0: - return False - - sqrt_n = int(math.floor(math.sqrt(n))) - for i in range(3, sqrt_n + 1, 2): - if n % i == 0: - return False - return True - - -def main(): - """主函数""" - with concurrent.futures.ProcessPoolExecutor() as executor: - for number, prime in zip(PRIMES, executor.map(is_prime, PRIMES)): - print('%d is prime: %s' % (number, prime)) - - -if __name__ == '__main__': - main() diff --git a/Day21-30/Web前端概述.md b/Day21-30/21-30.Web前端概述.md similarity index 95% rename from Day21-30/Web前端概述.md rename to Day21-30/21-30.Web前端概述.md index 5cf6389..928da6a 100644 --- a/Day21-30/Web前端概述.md +++ b/Day21-30/21-30.Web前端概述.md @@ -27,21 +27,22 @@ #### 结构 -- head - - title - - meta -- body +- html + - head + - title + - meta + - body #### 文本 -- 标题和段落 +- 标题(heading)和段落(paragraph) - h1 ~ h6 - p -- 上标和下标 +- 上标(superscript)和下标(subscript) - sup - sub - 空白(白色空间折叠) -- 折行和水平标尺 +- 折行(break)和水平标尺(horizontal ruler) - br - hr - 语义化标签 @@ -83,19 +84,19 @@ #### 表格(table) -- 基本的表格结构 - table / tr / td +- 基本的表格结构 - table / tr / td / th - 表格的标题 - caption - 跨行和跨列 - rowspan属性 / colspan属性 - 长表格 - thead / tbody / tfoot #### 表单(form) -- 重要属性 - action / method +- 重要属性 - action / method / enctype - 表单控件(input)- type属性 - 文本框 - text / 密码框 - password / 数字框 - number - 邮箱 - email / 电话 - tel / 日期 - date / 滑条 - range / URL - url / 搜索 - search - 单选按钮 - radio / 复选按钮 - checkbox - - 文件上传 - file / 隐藏域(埋点)- hidden + - 文件上传 - file / 隐藏域 - hidden - 提交按钮 - submit / 图像按钮 - image / 重置按钮 - reset - 下拉列表 - select / option - 文本域(多行文本)- textarea @@ -109,20 +110,44 @@ - video标签和属性 - autoplay / controls / loop / muted / preload / src - audio标签和属性 - autoplay / controls / loop / muted / preload / src / width / height / poster +#### 窗口(frame) + +- 框架集(过时,不建议使用) - frameset / frame + +- 内嵌窗口 - iframe + #### 其他 - 文档类型 + ```HTML + + ``` + + ```HTML + + ``` + + ```HTML + + ``` + - 注释 + ```HTML + + ``` + - 属性 - - id - - class + - id:唯一标识 + - class:元素所属的类,用于区分不同的元素 + - title:元素的额外信息(鼠标悬浮时会显示工具提示文本) + - tabindex:Tab键切换顺序 + - contenteditable:元素是否可编辑 + - draggable:元素是否可拖拽 - 块级元素 / 行级元素 -- 内联框架(internal frame) - - 字符实体(实体替换符) ![](./res/字符实体.png) diff --git a/Day21-30/code/list_by_javascript.html b/Day21-30/code/list_by_javascript.html new file mode 100644 index 0000000..ade42f1 --- /dev/null +++ b/Day21-30/code/list_by_javascript.html @@ -0,0 +1,119 @@ + + + + + 动态列表 + + + +
+
    +
  • 苹果×
  • +
  • 香蕉×
  • +
  • 榴莲×
  • +
  • 火龙果×
  • +
+
+ + +
+
+ + + \ No newline at end of file diff --git a/Day21-30/code/list_by_jquery.html b/Day21-30/code/list_by_jquery.html new file mode 100644 index 0000000..d6fbc1f --- /dev/null +++ b/Day21-30/code/list_by_jquery.html @@ -0,0 +1,114 @@ + + + + + 动态列表 + + + +
+
    +
  • 苹果×
  • +
  • 香蕉×
  • +
  • 榴莲×
  • +
  • 火龙果×
  • +
+
+ + +
+
+ + + + \ No newline at end of file diff --git a/Day21-30/code/list_by_vue.html b/Day21-30/code/list_by_vue.html new file mode 100644 index 0000000..9aaf795 --- /dev/null +++ b/Day21-30/code/list_by_vue.html @@ -0,0 +1,100 @@ + + + + + 动态列表 + + + +
+
    +
  • + {{ fruit }} + × +
  • +
+
+ + +
+
+ + + + \ No newline at end of file diff --git a/Day21-30/code/垃圾分类查询/harmful-waste.png b/Day21-30/code/垃圾分类查询/harmful-waste.png new file mode 100644 index 0000000..edaff8b Binary files /dev/null and b/Day21-30/code/垃圾分类查询/harmful-waste.png differ diff --git a/Day21-30/code/垃圾分类查询/kitchen-waste.png b/Day21-30/code/垃圾分类查询/kitchen-waste.png new file mode 100644 index 0000000..cd52f47 Binary files /dev/null and b/Day21-30/code/垃圾分类查询/kitchen-waste.png differ diff --git a/Day21-30/code/垃圾分类查询/other-waste.png b/Day21-30/code/垃圾分类查询/other-waste.png new file mode 100644 index 0000000..ef2222b Binary files /dev/null and b/Day21-30/code/垃圾分类查询/other-waste.png differ diff --git a/Day21-30/code/垃圾分类查询/recyclable.png b/Day21-30/code/垃圾分类查询/recyclable.png new file mode 100644 index 0000000..a82922f Binary files /dev/null and b/Day21-30/code/垃圾分类查询/recyclable.png differ diff --git a/Day21-30/code/垃圾分类查询/垃圾分类.html b/Day21-30/code/垃圾分类查询/垃圾分类.html new file mode 100644 index 0000000..5191864 --- /dev/null +++ b/Day21-30/code/垃圾分类查询/垃圾分类.html @@ -0,0 +1,120 @@ + + + + + + 垃圾分类查询助手 + + + + + + +
+ +
+ +

没有对应的查询结果

+
+

+ + +    + + {{ result.name }} +    + (预测结果) +

+

说明:{{ result.explain }}

+
+
+
+ + + + + \ No newline at end of file diff --git a/Day21-30/docs/Bulma- Free, open source, & modern CSS framework based on Flexbox.pdf b/Day21-30/docs/Bulma- Free, open source, & modern CSS framework based on Flexbox.pdf deleted file mode 100644 index 6f43df5..0000000 Binary files a/Day21-30/docs/Bulma- Free, open source, & modern CSS framework based on Flexbox.pdf and /dev/null differ diff --git a/Day21-30/docs/Why Vue.mp4 b/Day21-30/docs/Why Vue.mp4 deleted file mode 100644 index 76b7f48..0000000 Binary files a/Day21-30/docs/Why Vue.mp4 and /dev/null differ diff --git a/Day21-30/docs/Why you should use Bulma.mp4 b/Day21-30/docs/Why you should use Bulma.mp4 deleted file mode 100644 index 1112d02..0000000 Binary files a/Day21-30/docs/Why you should use Bulma.mp4 and /dev/null differ diff --git a/Day31-35/玩转Linux操作系统.md b/Day31-35/31-35.玩转Linux操作系统.md similarity index 83% rename from Day31-35/玩转Linux操作系统.md rename to Day31-35/31-35.玩转Linux操作系统.md index d3f457c..c519043 100644 --- a/Day31-35/玩转Linux操作系统.md +++ b/Day31-35/31-35.玩转Linux操作系统.md @@ -26,20 +26,12 @@ 3. 1969年:MULTICS项目失败,Ken Tompson赋闲在家,为了玩“Space Travel”游戏用汇编语言在当时已经被淘汰的PDP-7上开发了Unics。 - ![](./res/ken_young.jpg) - - ![](./res/pdp-7.png) - > 注:很难想象,Unix这么伟大的系统,居然是一个赋闲在家的程序员(关键是老婆回娘家还带上了孩子)在一台被淘汰的设备上为了玩游戏开发出来的。 4. 1970年~1971年:Ken Tompson和Dennis Ritchie用B语言在PDP-11上重写了Unics,并在Brian Kernighan的建议下将其更名为Unix。 - ![](./res/dmr.png) - ![](./res/ken-and-dennis-pdp-11.png) - ![](./res/pdp-11.jpg) - 5. 1972年~1973年:Dennis Ritchie发明了C语言来取代可移植性较差的B语言,并开启了用C语言重写Unix的工作。 6. 1974年:Unix推出了里程碑意义的第5版,几乎完全用C语言来实现。 @@ -92,19 +84,19 @@ Linux系统的命令通常都是如下所示的格式: 1. 获取登录信息 - **w** / **who** / **last**/ **lastb**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# w + [root ~]# w 23:31:16 up 12:16, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 182.139.66.250 23:03 4.00s 0.02s 0.00s w jackfrue pts/1 182.139.66.250 23:26 3:56 0.00s 0.00s -bash - [root@izwz97tbgo9lkabnat2lo8z ~]# who + [root ~]# who root pts/0 2018-04-12 23:03 (182.139.66.250) jackfrued pts/1 2018-04-12 23:26 (182.139.66.250) - [root@izwz97tbgo9lkabnat2lo8z ~]# who am i + [root ~]# who am i root pts/0 2018-04-12 23:03 (182.139.66.250) - [root@izwz97tbgo9lkabnat2lo8z ~]# who mom likes + [root ~]# who mom likes root pts/0 2018-04-12 23:03 (182.139.66.250) - [root@izwz97tbgo9lkabnat2lo8z ~]# last + [root ~]# last root pts/0 117.136.63.184 Sun May 26 18:57 still logged in reboot system boot 3.10.0-957.10.1. Mon May 27 02:52 - 19:10 (-7:-42) root pts/4 117.136.63.184 Sun May 26 18:51 - crash (08:01) @@ -128,17 +120,17 @@ Linux系统的命令通常都是如下所示的格式: 3. 查看命令的说明和位置 - **whatis** / **which** / **whereis**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# whatis ps + [root ~]# whatis ps ps (1) - report a snapshot of the current processes. - [root@izwz97tbgo9lkabnat2lo8z ~]# whatis python + [root ~]# whatis python python (1) - an interpreted, interactive, object-oriented programming language - [root@izwz97tbgo9lkabnat2lo8z ~]# whereis ps + [root ~]# whereis ps ps: /usr/bin/ps /usr/share/man/man1/ps.1.gz - [root@izwz97tbgo9lkabnat2lo8z ~]# whereis python + [root ~]# whereis python python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz - [root@izwz97tbgo9lkabnat2lo8z ~]# which ps + [root ~]# which ps /usr/bin/ps - [root@izwz97tbgo9lkabnat2lo8z ~]# which python + [root ~]# which python /usr/bin/python ``` @@ -202,22 +194,22 @@ Linux系统的命令通常都是如下所示的格式: 8. 重启和关机 - **reboot** / **shutdown**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# shutdown -h +5 + [root ~]# shutdown -h +5 Shutdown scheduled for Sun 2019-05-26 19:34:27 CST, use 'shutdown -c' to cancel. - [root@izwz97tbgo9lkabnat2lo8z ~]# - Broadcast message from root@izwz97tbgo9lkabnat2lo8z (Sun 2019-05-26 19:29:27 CST): + [root ~]# + Broadcast message from root (Sun 2019-05-26 19:29:27 CST): The system is going down for power-off at Sun 2019-05-26 19:34:27 CST! - [root@izwz97tbgo9lkabnat2lo8z ~]# shutdown -c + [root ~]# shutdown -c - Broadcast message from root@izwz97tbgo9lkabnat2lo8z (Sun 2019-05-26 19:30:22 CST): + Broadcast message from root (Sun 2019-05-26 19:30:22 CST): The system shutdown has been cancelled at Sun 2019-05-26 19:31:22 CST! - [root@izwz97tbgo9lkabnat2lo8z ~]# shutdown -r 23:58 + [root ~]# shutdown -r 23:58 Shutdown scheduled for Sun 2019-05-26 23:58:00 CST, use 'shutdown -c' to cancel. - [root@izwz97tbgo9lkabnat2lo8z ~]# shutdown -c + [root ~]# shutdown -c - Broadcast message from root@izwz97tbgo9lkabnat2lo8z (Sun 2019-05-26 19:31:06 CST): + Broadcast message from root (Sun 2019-05-26 19:31:06 CST): The system shutdown has been cancelled at Sun 2019-05-26 19:32:06 CST! ``` @@ -247,19 +239,19 @@ Linux系统的命令通常都是如下所示的格式: 1. 创建/删除空目录 - **mkdir** / **rmdir**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# mkdir abc - [root@iZwz97tbgo9lkabnat2lo8Z ~]# mkdir -p xyz/abc - [root@iZwz97tbgo9lkabnat2lo8Z ~]# rmdir abc + [root ~]# mkdir abc + [root ~]# mkdir -p xyz/abc + [root ~]# rmdir abc ``` 2. 创建/删除文件 - **touch** / **rm**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# touch readme.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# touch error.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# rm error.txt + [root ~]# touch readme.txt + [root ~]# touch error.txt + [root ~]# rm error.txt rm: remove regular empty file ‘error.txt’? y - [root@iZwz97tbgo9lkabnat2lo8Z ~]# rm -rf xyz + [root ~]# rm -rf xyz ``` - `touch`命令用于创建空白文件或修改文件时间。在Linux系统中一个文件有三种时间: @@ -286,7 +278,7 @@ Linux系统的命令通常都是如下所示的格式: 5. 查看文件内容 - **cat** / **tac** / **head** / **tail** / **more** / **less** / **rev** / **od**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wget http://www.sohu.com/ -O sohu.html + [root ~]# wget http://www.sohu.com/ -O sohu.html --2018-06-20 18:42:34-- http://www.sohu.com/ Resolving www.sohu.com (www.sohu.com)... 14.18.240.6 Connecting to www.sohu.com (www.sohu.com)|14.18.240.6|:80... connected. @@ -295,9 +287,9 @@ Linux系统的命令通常都是如下所示的格式: Saving to: ‘sohu.html’ 100%[==================================================>] 212,527 --.-K/s in 0.03s 2018-06-20 18:42:34 (7.48 MB/s) - ‘sohu.html’ saved [212527/212527] - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat sohu.html + [root ~]# cat sohu.html ... - [root@iZwz97tbgo9lkabnat2lo8Z ~]# head -10 sohu.html + [root ~]# head -10 sohu.html @@ -307,12 +299,12 @@ Linux系统的命令通常都是如下所示的格式: - [root@iZwz97tbgo9lkabnat2lo8Z ~]# tail -2 sohu.html + [root ~]# tail -2 sohu.html - [root@iZwz97tbgo9lkabnat2lo8Z ~]# less sohu.html + [root ~]# less sohu.html ... - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat -n sohu.html | more + [root ~]# cat -n sohu.html | more ... ``` @@ -321,13 +313,13 @@ Linux系统的命令通常都是如下所示的格式: 6. 拷贝/移动文件 - **cp** / **mv**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# mkdir backup - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cp sohu.html backup/ - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cd backup - [root@iZwz97tbgo9lkabnat2lo8Z backup]# ls + [root ~]# mkdir backup + [root ~]# cp sohu.html backup/ + [root ~]# cd backup + [root backup]# ls sohu.html - [root@iZwz97tbgo9lkabnat2lo8Z backup]# mv sohu.html sohu_index.html - [root@iZwz97tbgo9lkabnat2lo8Z backup]# ls + [root backup]# mv sohu.html sohu_index.html + [root backup]# ls sohu_index.html ``` @@ -453,41 +445,41 @@ Linux系统的命令通常都是如下所示的格式: - **iconv** - 编码转换 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat foo.txt + [root ~]# cat foo.txt grape apple pitaya - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat bar.txt + [root ~]# cat bar.txt 100 200 300 400 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# paste foo.txt bar.txt + [root ~]# paste foo.txt bar.txt grape 100 apple 200 pitaya 300 400 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# paste foo.txt bar.txt > hello.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cut -b 4-8 hello.txt + [root ~]# paste foo.txt bar.txt > hello.txt + [root ~]# cut -b 4-8 hello.txt pe 10 le 20 aya 3 0 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat hello.txt | tr '\t' ',' + [root ~]# cat hello.txt | tr '\t' ',' grape,100 apple,200 pitaya,300 ,400 - [root@izwz97tbgo9lkabnat2lo8z ~]# split -l 100 sohu.html hello - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wget https://www.baidu.com/img/bd_logo1.png - [root@iZwz97tbgo9lkabnat2lo8Z ~]# file bd_logo1.png + [root ~]# split -l 100 sohu.html hello + [root ~]# wget https://www.baidu.com/img/bd_logo1.png + [root ~]# file bd_logo1.png bd_logo1.png: PNG image data, 540 x 258, 8-bit colormap, non-interlaced - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wc sohu.html + [root ~]# wc sohu.html 2979 6355 212527 sohu.html - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wc -l sohu.html + [root ~]# wc -l sohu.html 2979 sohu.html - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wget http://www.qq.com -O qq.html - [root@iZwz97tbgo9lkabnat2lo8Z ~]# iconv -f gb2312 -t utf-8 qq.html + [root ~]# wget http://www.qq.com -O qq.html + [root ~]# iconv -f gb2312 -t utf-8 qq.html ``` #### 管道和重定向 @@ -497,14 +489,14 @@ Linux系统的命令通常都是如下所示的格式: 例子:查找当前目录下文件个数。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# find ./ | wc -l + [root ~]# find ./ | wc -l 6152 ``` 例子:列出当前路径下的文件和文件夹,给每一项加一个编号。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls | cat -n + [root ~]# ls | cat -n 1 dump.rdb 2 mongodb-3.6.5 3 Python-3.6.5 @@ -515,13 +507,13 @@ Linux系统的命令通常都是如下所示的格式: 例子:查找record.log中包含AAA,但不包含BBB的记录的总数 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat record.log | grep AAA | grep -v BBB | wc -l + [root ~]# cat record.log | grep AAA | grep -v BBB | wc -l ``` 2. 输出重定向和错误重定向 - **\>** / **>>** / **2\>**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat readme.txt + [root ~]# cat readme.txt banana apple grape @@ -530,8 +522,8 @@ Linux系统的命令通常都是如下所示的格式: watermelon pear pitaya - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat readme.txt | sort | uniq > result.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat result.txt + [root ~]# cat readme.txt | sort | uniq > result.txt + [root ~]# cat result.txt apple banana grape @@ -543,15 +535,15 @@ Linux系统的命令通常都是如下所示的格式: 3. 输入重定向 - **\<**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# echo 'hello, world!' > hello.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wall < hello.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# - Broadcast message from root@iZwz97tbgo9lkabnat2lo8Z (Wed Jun 20 19:43:05 2018): + [root ~]# echo 'hello, world!' > hello.txt + [root ~]# wall < hello.txt + [root ~]# + Broadcast message from root (Wed Jun 20 19:43:05 2018): hello, world! - [root@iZwz97tbgo9lkabnat2lo8Z ~]# echo 'I will show you some code.' >> hello.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wall < hello.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# - Broadcast message from root@iZwz97tbgo9lkabnat2lo8Z (Wed Jun 20 19:43:55 2018): + [root ~]# echo 'I will show you some code.' >> hello.txt + [root ~]# wall < hello.txt + [root ~]# + Broadcast message from root (Wed Jun 20 19:43:55 2018): hello, world! I will show you some code. ``` @@ -561,7 +553,7 @@ Linux系统的命令通常都是如下所示的格式: 下面的命令除了在终端显示命令`ls`的结果之外,还会追加输出到`ls.txt`文件中。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls | tee -a ls.txt + [root ~]# ls | tee -a ls.txt ``` #### 别名 @@ -569,20 +561,20 @@ Linux系统的命令通常都是如下所示的格式: 1. **alias** ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# alias ll='ls -l' - [root@iZwz97tbgo9lkabnat2lo8Z ~]# alias frm='rm -rf' - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ll + [root ~]# alias ll='ls -l' + [root ~]# alias frm='rm -rf' + [root ~]# ll ... drwxr-xr-x 2 root root 4096 Jun 20 12:52 abc ... - [root@iZwz97tbgo9lkabnat2lo8Z ~]# frm abc + [root ~]# frm abc ``` 2. **unalias** ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# unalias frm - [root@iZwz97tbgo9lkabnat2lo8Z ~]# frm sohu.html + [root ~]# unalias frm + [root ~]# frm sohu.html -bash: frm: command not found ``` @@ -593,7 +585,7 @@ Linux系统的命令通常都是如下所示的格式: sed是操作、过滤和转换文本内容的工具。假设有一个名为fruit.txt的文件,内容如下所示。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# cat -n fruit.txt + [root ~]# cat -n fruit.txt 1 banana 2 grape 3 apple @@ -604,7 +596,7 @@ Linux系统的命令通常都是如下所示的格式: 接下来,我们在第2行后面添加一个pitaya。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# sed '2a pitaya' fruit.txt + [root ~]# sed '2a pitaya' fruit.txt banana grape pitaya @@ -618,7 +610,7 @@ Linux系统的命令通常都是如下所示的格式: 在第2行前面插入一个waxberry。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# sed '2i waxberry' fruit.txt + [root ~]# sed '2i waxberry' fruit.txt banana waxberry grape @@ -630,7 +622,7 @@ Linux系统的命令通常都是如下所示的格式: 删除第3行。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# sed '3d' fruit.txt + [root ~]# sed '3d' fruit.txt banana grape watermelon @@ -640,7 +632,7 @@ Linux系统的命令通常都是如下所示的格式: 删除第2行到第4行。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# sed '2,4d' fruit.txt + [root ~]# sed '2,4d' fruit.txt banana orange ``` @@ -648,7 +640,7 @@ Linux系统的命令通常都是如下所示的格式: 将文本中的字符a替换为@。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# sed 's#a#@#' fruit.txt + [root ~]# sed 's#a#@#' fruit.txt b@nana gr@pe @pple @@ -659,7 +651,7 @@ Linux系统的命令通常都是如下所示的格式: 将文本中的字符a替换为@,使用全局模式。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# sed 's#a#@#g' fruit.txt + [root ~]# sed 's#a#@#g' fruit.txt b@n@n@ gr@pe @pple @@ -674,7 +666,7 @@ Linux系统的命令通常都是如下所示的格式: 假设有一个名为fruit2.txt的文件,内容如下所示。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# cat fruit2.txt + [root ~]# cat fruit2.txt 1 banana 120 2 grape 500 3 apple 1230 @@ -685,14 +677,14 @@ Linux系统的命令通常都是如下所示的格式: 显示文件的第3行。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# awk 'NR==3' fruit2.txt + [root ~]# awk 'NR==3' fruit2.txt 3 apple 1230 ``` 显示文件的第2列。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# awk '{print $2}' fruit2.txt + [root ~]# awk '{print $2}' fruit2.txt banana grape apple @@ -703,7 +695,7 @@ Linux系统的命令通常都是如下所示的格式: 显示文件的最后一列。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# awk '{print $NF}' fruit2.txt + [root ~]# awk '{print $NF}' fruit2.txt 120 500 1230 @@ -714,7 +706,7 @@ Linux系统的命令通常都是如下所示的格式: 输出末尾数字大于等于300的行。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# awk '{if($3 >= 300) {print $0}}' fruit2.txt + [root ~]# awk '{if($3 >= 300) {print $0}}' fruit2.txt 2 grape 500 3 apple 1230 5 orange 400 @@ -727,8 +719,8 @@ Linux系统的命令通常都是如下所示的格式: 1. 创建和删除用户 - **useradd** / **userdel**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z home]# useradd hellokitty - [root@izwz97tbgo9lkabnat2lo8z home]# userdel hellokitty + [root home]# useradd hellokitty + [root home]# userdel hellokitty ``` - `-d` - 创建用户时为用户指定用户主目录 @@ -741,7 +733,7 @@ Linux系统的命令通常都是如下所示的格式: 3. 修改密码 - **passwd**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# passwd hellokitty + [root ~]# passwd hellokitty New password: Retype new password: passwd: all authentication tokens updated successfully. @@ -765,16 +757,16 @@ Linux系统的命令通常都是如下所示的格式: 5. 切换用户 - **su**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# su hellokitty - [hellokitty@izwz97tbgo9lkabnat2lo8z root]$ + [root ~]# su hellokitty + [hellokitty root]$ ``` 6. 以管理员身份执行命令 - **sudo**。 ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ ls /root + [hellokitty ~]$ ls /root ls: cannot open directory /root: Permission denied - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ sudo ls /root + [hellokitty ~]$ sudo ls /root [sudo] password for hellokitty: ``` @@ -812,7 +804,7 @@ Linux系统的命令通常都是如下所示的格式: 发送方: ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# write hellokitty + [root ~]# write hellokitty Dinner is on me. Call me at 6pm. ``` @@ -820,8 +812,8 @@ Linux系统的命令通常都是如下所示的格式: 接收方: ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ - Message from root@izwz97tbgo9lkabnat2lo8z on pts/0 at 17:41 ... + [hellokitty ~]$ + Message from root on pts/0 at 17:41 ... Dinner is on me. Call me at 6pm. EOF @@ -829,13 +821,13 @@ Linux系统的命令通常都是如下所示的格式: 10. 查看/设置是否接收其他用户发送的消息 - **mesg**。 - ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ mesg - is y - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ mesg n - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ mesg - is n - ``` + ```Shell + [hellokitty ~]$ mesg + is y + [hellokitty ~]$ mesg n + [hellokitty ~]$ mesg + is n + ``` ### 文件系统 @@ -872,17 +864,17 @@ Linux系统的命令通常都是如下所示的格式: 1. **chmod** - 改变文件模式比特。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l + [root ~]# ls -l ... -rw-r--r-- 1 root root 211878 Jun 19 16:06 sohu.html ... - [root@iZwz97tbgo9lkabnat2lo8Z ~]# chmod g+w,o+w sohu.html - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l + [root ~]# chmod g+w,o+w sohu.html + [root ~]# ls -l ... -rw-rw-rw- 1 root root 211878 Jun 19 16:06 sohu.html ... - [root@iZwz97tbgo9lkabnat2lo8Z ~]# chmod 644 sohu.html - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l + [root ~]# chmod 644 sohu.html + [root ~]# ls -l ... -rw-r--r-- 1 root root 211878 Jun 19 16:06 sohu.html ... @@ -896,12 +888,12 @@ Linux系统的命令通常都是如下所示的格式: 2. **chown** - 改变文件所有者。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l + [root ~]# ls -l ... -rw-r--r-- 1 root root 54 Jun 20 10:06 readme.txt ... - [root@iZwz97tbgo9lkabnat2lo8Z ~]# chown hellokitty readme.txt - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l + [root ~]# chown hellokitty readme.txt + [root ~]# ls -l ... -rw-r--r-- 1 hellokitty root 54 Jun 20 10:06 readme.txt ... @@ -914,7 +906,7 @@ Linux系统的命令通常都是如下所示的格式: 1. 列出文件系统的磁盘使用状况 - **df**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# df -h + [root ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 5.0G 33G 14% / devtmpfs 486M 0 486M 0% /dev @@ -927,7 +919,7 @@ Linux系统的命令通常都是如下所示的格式: 2. 磁盘分区表操作 - **fdisk**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# fdisk -l + [root ~]# fdisk -l Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes @@ -947,7 +939,7 @@ Linux系统的命令通常都是如下所示的格式: 4. 格式化文件系统 - **mkfs**。 ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ mkfs -t ext4 -v /dev/sdb + [root ~]# mkfs -t ext4 -v /dev/sdb ``` - `-t` - 指定文件系统的类型。 @@ -969,7 +961,7 @@ Linux系统的命令通常都是如下所示的格式: 1. 启动vim。可以通过`vi`或`vim`命令来启动vim,启动时可以指定文件名来打开一个文件,如果没有指定文件名,也可以在保存的时候指定文件名。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# vim guess.py + [root ~]# vim guess.py ``` 2. 命令模式、编辑模式和末行模式:启动vim进入的是命令模式(也称为Normal模式),在命令模式下输入英文字母`i`会进入编辑模式(Insert模式),屏幕下方出现`-- INSERT --`提示;在编辑模式下按下`Esc`会回到命令模式,此时如果输入英文`:`会进入末行模式,在末行模式下输入`q!`可以在不保存当前工作的情况下强行退出vim;在命令模式下输入`v`会进入可视模式(Visual模式),可以用光标选择一个区域再完成对应的操作。 @@ -1017,14 +1009,14 @@ Linux系统的命令通常都是如下所示的格式: - 比较多个文件。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# vim -d foo.txt bar.txt + [root ~]# vim -d foo.txt bar.txt ``` ![](./res/vim-diff.png) - 打开多个文件。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# vim foo.txt bar.txt hello.txt + [root ~]# vim foo.txt bar.txt hello.txt ``` 启动vim后只有一个窗口显示的是foo.txt,可以在末行模式中输入`ls`查看到打开的三个文件,也可以在末行模式中输入`b `来显示另一个文件,例如可以用`:b 2`将bar.txt显示出来,可以用`:b 3`将hello.txt显示出来。 @@ -1080,7 +1072,7 @@ Linux系统的命令通常都是如下所示的格式: 下面以Nginx为例,演示如何使用yum安装软件。 ```Shell -[root@iZwz97tbgo9lkabnat2lo8Z ~]# yum -y install nginx +[root ~]# yum -y install nginx ... Installed: nginx.x86_64 1:1.12.2-2.el7 @@ -1093,7 +1085,7 @@ Dependency Installed: nginx-mod-mail.x86_64 1:1.12.2-2.el7 nginx-mod-stream.x86_64 1:1.12.2-2.el7 Complete! -[root@iZwz97tbgo9lkabnat2lo8Z ~]# yum info nginx +[root ~]# yum info nginx Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Installed Packages @@ -1111,33 +1103,33 @@ License : BSD Description : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and : IMAP protocols, with a strong focus on high concurrency, performance and low : memory usage. -[root@iZwz97tbgo9lkabnat2lo8Z ~]# nginx -v +[root ~]# nginx -v nginx version: nginx/1.12.2 ``` 移除Nginx。 ```Shell -[root@iZwz97tbgo9lkabnat2lo8Z ~]# yum -y remove nginx +[root ~]# yum -y remove nginx ``` 下面以MySQL为例,演示如何使用rpm安装软件。要安装MySQL需要先到[MySQL官方网站](https://www.mysql.com/)下载对应的[RPM文件](https://dev.mysql.com/downloads/mysql/),当然要选择和你使用的Linux系统对应的版本。MySQL现在是Oracle公司旗下的产品,在MySQL被收购后,MySQL的作者重新制作了一个MySQL的分支MariaDB,可以通过yum进行安装。 ```Shell -[root@iZwz97tbgo9lkabnat2lo8Z mysql]# ls +[root mysql]# ls mysql-community-client-5.7.22-1.el7.x86_64.rpm mysql-community-common-5.7.22-1.el7.x86_64.rpm mysql-community-libs-5.7.22-1.el7.x86_64.rpm mysql-community-server-5.7.22-1.el7.x86_64.rpm -[root@iZwz97tbgo9lkabnat2lo8Z mysql]# yum -y remove mariadb-libs -[root@iZwz97tbgo9lkabnat2lo8Z mysql]# yum -y install libaio -[root@iZwz97tbgo9lkabnat2lo8Z mysql]#rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm +[root mysql]# yum -y remove mariadb-libs +[root mysql]# yum -y install libaio +[root mysql]#rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm ... -[root@iZwz97tbgo9lkabnat2lo8Z mysql]#rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm +[root mysql]#rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm ... -[root@iZwz97tbgo9lkabnat2lo8Z mysql]#rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm +[root mysql]#rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm ... -[root@iZwz97tbgo9lkabnat2lo8Z mysql]#rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm +[root mysql]#rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm ... ``` @@ -1146,7 +1138,7 @@ mysql-community-server-5.7.22-1.el7.x86_64.rpm 移除安装的MySQL。 ```Shell -[root@iZwz97tbgo9lkabnat2lo8Z ~]# rpm -qa | grep mysql | xargs rpm -e +[root ~]# rpm -qa | grep mysql | xargs rpm -e ``` #### 下载解压配置环境变量 @@ -1154,7 +1146,7 @@ mysql-community-server-5.7.22-1.el7.x86_64.rpm 下面以安装MongoDB为例,演示这类软件应该如何安装。 ```Shell -[root@iZwz97tbgo9lkabnat2lo8Z ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.5.tgz +[root ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.5.tgz --2018-06-21 18:32:53-- https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.5.tgz Resolving fastdl.mongodb.org (fastdl.mongodb.org)... 52.85.83.16, 52.85.83.228, 52.85.83.186, ... Connecting to fastdl.mongodb.org (fastdl.mongodb.org)|52.85.83.16|:443... connected. @@ -1163,8 +1155,8 @@ Length: 100564462 (96M) [application/x-gzip] Saving to: ‘mongodb-linux-x86_64-rhel70-3.6.5.tgz’ 100%[==================================================>] 100,564,462 630KB/s in 2m 9s 2018-06-21 18:35:04 (760 KB/s) - ‘mongodb-linux-x86_64-rhel70-3.6.5.tgz’ saved [100564462/100564462] -[root@iZwz97tbgo9lkabnat2lo8Z ~]# gunzip mongodb-linux-x86_64-rhel70-3.6.5.tgz -[root@iZwz97tbgo9lkabnat2lo8Z ~]# tar -xvf mongodb-linux-x86_64-rhel70-3.6.5.tar +[root ~]# gunzip mongodb-linux-x86_64-rhel70-3.6.5.tgz +[root ~]# tar -xvf mongodb-linux-x86_64-rhel70-3.6.5.tar mongodb-linux-x86_64-rhel70-3.6.5/README mongodb-linux-x86_64-rhel70-3.6.5/THIRD-PARTY-NOTICES mongodb-linux-x86_64-rhel70-3.6.5/MPL-2 @@ -1183,13 +1175,13 @@ mongodb-linux-x86_64-rhel70-3.6.5/bin/mongod mongodb-linux-x86_64-rhel70-3.6.5/bin/mongos mongodb-linux-x86_64-rhel70-3.6.5/bin/mongo mongodb-linux-x86_64-rhel70-3.6.5/bin/install_compass -[root@iZwz97tbgo9lkabnat2lo8Z ~]# vim .bash_profile +[root ~]# vim .bash_profile ... PATH=$PATH:$HOME/bin:$HOME/mongodb-linux-x86_64-rhel70-3.6.5/bin export PATH ... -[root@iZwz97tbgo9lkabnat2lo8Z ~]# source .bash_profile -[root@iZwz97tbgo9lkabnat2lo8Z ~]# mongod --version +[root ~]# source .bash_profile +[root ~]# mongod --version db version v3.6.5 git version: a20ecd3e3a174162052ff99913bc2ca9a839d618 OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 @@ -1199,7 +1191,7 @@ build environment: distmod: rhel70 distarch: x86_64 target_arch: x86_64 -[root@iZwz97tbgo9lkabnat2lo8Z ~]# mongo --version +[root ~]# mongo --version MongoDB shell version v3.6.5 git version: a20ecd3e3a174162052ff99913bc2ca9a839d618 OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 @@ -1218,20 +1210,20 @@ build environment: 1. 安装Python 3.6。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# yum install gcc - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz - [root@iZwz97tbgo9lkabnat2lo8Z ~]# gunzip Python-3.6.5.tgz - [root@iZwz97tbgo9lkabnat2lo8Z ~]# tar -xvf Python-3.6.5.tar - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cd Python-3.6.5 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ./configure --prefix=/usr/local/python36 --enable-optimizations - [root@iZwz97tbgo9lkabnat2lo8Z ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel - [root@iZwz97tbgo9lkabnat2lo8Z ~]# make && make install + [root ~]# yum install gcc + [root ~]# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz + [root ~]# gunzip Python-3.6.5.tgz + [root ~]# tar -xvf Python-3.6.5.tar + [root ~]# cd Python-3.6.5 + [root ~]# ./configure --prefix=/usr/local/python36 --enable-optimizations + [root ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel + [root ~]# make && make install ... - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ln -s /usr/local/python36/bin/python3.6 /usr/bin/python3 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# python3 --version + [root ~]# ln -s /usr/local/python36/bin/python3.6 /usr/bin/python3 + [root ~]# python3 --version Python 3.6.5 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# python3 -m pip install -U pip - [root@iZwz97tbgo9lkabnat2lo8Z ~]# pip3 --version + [root ~]# python3 -m pip install -U pip + [root ~]# pip3 --version ``` > 说明:上面在安装好Python之后还需要注册PATH环境变量,将Python安装路径下bin文件夹的绝对路径注册到PATH环境变量中。注册环境变量可以修改用户主目录下的.bash_profile或者/etc目录下的profile文件,二者的区别在于前者相当于是用户环境变量,而后者相当于是系统环境变量。 @@ -1239,14 +1231,14 @@ build environment: 2. 安装Redis-3.2.12。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz - [root@iZwz97tbgo9lkabnat2lo8Z ~]# gunzip redis-3.2.12.tar.gz - [root@iZwz97tbgo9lkabnat2lo8Z ~]# tar -xvf redis-3.2.12.tar - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cd redis-3.2.12 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# make && make install - [root@iZwz97tbgo9lkabnat2lo8Z ~]# redis-server --version + [root ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz + [root ~]# gunzip redis-3.2.12.tar.gz + [root ~]# tar -xvf redis-3.2.12.tar + [root ~]# cd redis-3.2.12 + [root ~]# make && make install + [root ~]# redis-server --version Redis server v=3.2.12 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=5bc5cd3c03d6ceb6 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# redis-cli --version + [root ~]# redis-cli --version redis-cli 3.2.12 ``` @@ -1257,34 +1249,34 @@ build environment: 1. 启动防火墙服务。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# systemctl start firewalld + [root ~]# systemctl start firewalld ``` 2. 终止防火墙服务。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# systemctl stop firewalld + [root ~]# systemctl stop firewalld ``` 3. 重启防火墙服务。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# systemctl restart firewalld + [root ~]# systemctl restart firewalld ``` 4. 查看防火墙服务状态。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# systemctl status firewalld + [root ~]# systemctl status firewalld ``` 5. 设置/禁用防火墙服务开机自启。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# systemctl enable firewalld + [root ~]# systemctl enable firewalld Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service. Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service. - [root@iZwz97tbgo9lkabnat2lo8Z ~]# systemctl disable firewalld + [root ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. ``` @@ -1300,7 +1292,7 @@ build environment: 指定3天以后下午5点要执行的任务。 ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ at 5pm+3days + [root ~]# at 5pm+3days at> rm -f /root/*.html at> job 9 at Wed Jun 5 17:00:00 2019 @@ -1309,30 +1301,30 @@ build environment: 查看待执行的任务队列。 ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ atq - 9 Wed Jun 5 17:00:00 2019 a hellokitty + [root ~]# atq + 9 Wed Jun 5 17:00:00 2019 a root ``` 从队列中删除指定的任务。 ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ atrm 9 + [root ~]$ atrm 9 ``` 2. 计划任务表 - **crontab**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# crontab -e + [root ~]# crontab -e * * * * * echo "hello, world!" >> /root/hello.txt 59 23 * * * rm -f /root/*.log ``` - > 说明:输入`crontab -e`命令会打开vim来编辑Cron表达式并指定触发的任务,上面我们定制了两个计划任务,一个是每分钟向/root目录下的hello.txt中追加输出`hello, world!`;另一个是每天23时59分执行删除/root目录下以log为后缀名的文件。如果不知道Cron表达式如何书写,可以参照/etc/crontab文件中的提示(下面会讲到)或者用谷歌搜索一下,也可以使用Cron表达式在线生成器来生成Cron表达式。 + > 说明:输入`crontab -e`命令会打开vim来编辑Cron表达式并指定触发的任务,上面我们定制了两个计划任务,一个是每分钟向/root目录下的hello.txt中追加输出`hello, world!`;另一个是每天23时59分执行删除/root目录下以log为后缀名的文件。如果不知道Cron表达式如何书写,可以参照/etc/crontab文件中的提示(下面会讲到)或者用搜索引擎找一下“Cron表达式在线生成器”来生成Cron表达式。 和crontab相关的文件在`/etc`目录下,通过修改`/etc`目录下的crontab文件也能够定制计划任务。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# cd /etc - [root@iZwz97tbgo9lkabnat2lo8Z etc]# ls -l | grep cron + [root ~]# cd /etc + [root etc]# ls -l | grep cron -rw-------. 1 root root 541 Aug 3 2017 anacrontab drwxr-xr-x. 2 root root 4096 Mar 27 11:56 cron.d drwxr-xr-x. 2 root root 4096 Mar 27 11:51 cron.daily @@ -1341,7 +1333,7 @@ build environment: drwxr-xr-x. 2 root root 4096 Jun 10 2014 cron.monthly -rw-r--r-- 1 root root 493 Jun 23 15:09 crontab drwxr-xr-x. 2 root root 4096 Jun 10 2014 cron.weekly - [root@iZwz97tbgo9lkabnat2lo8Z etc]# vim crontab + [root etc]# vim crontab 1 SHELL=/bin/bash 2 PATH=/sbin:/bin:/usr/sbin:/usr/bin 3 MAILTO=root @@ -1364,13 +1356,13 @@ build environment: 1. 安全远程连接 - **ssh**。 ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ ssh root@120.77.222.217 - The authenticity of host '120.77.222.217 (120.77.222.217)' can't be established. - ECDSA key fingerprint is SHA256:BhUhykv+FvnIL03I9cLRpWpaCxI91m9n7zBWrcXRa8w. - ECDSA key fingerprint is MD5:cc:85:e9:f0:d7:07:1a:26:41:92:77:6b:7f:a0:92:65. - Are you sure you want to continue connecting (yes/no)? yes - Warning: Permanently added '120.77.222.217' (ECDSA) to the list of known hosts. - root@120.77.222.217's password: + [root ~]$ ssh root@120.77.222.217 + The authenticity of host '120.77.222.217 (120.77.222.217)' can't be established. + ECDSA key fingerprint is SHA256:BhUhykv+FvnIL03I9cLRpWpaCxI91m9n7zBWrcXRa8w. + ECDSA key fingerprint is MD5:cc:85:e9:f0:d7:07:1a:26:41:92:77:6b:7f:a0:92:65. + Are you sure you want to continue connecting (yes/no)? yes + Warning: Permanently added '120.77.222.217' (ECDSA) to the list of known hosts. + root@120.77.222.217's password: ``` 2. 通过网络获取资源 - **wget**。 @@ -1384,7 +1376,7 @@ build environment: 4. 网络配置工具(旧) - **ifconfig**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ifconfig eth0 + [root ~]# ifconfig eth0 eth0: flags=4163 mtu 1500 inet 172.18.61.250 netmask 255.255.240.0 broadcast 172.18.63.255 ether 00:16:3e:02:b6:46 txqueuelen 1000 (Ethernet) @@ -1397,7 +1389,7 @@ build environment: 5. 网络配置工具(新) - **ip**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ip address + [root ~]# ip address 1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo @@ -1411,7 +1403,7 @@ build environment: 6. 网络可达性检查 - **ping**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ping www.baidu.com -c 3 + [root ~]# ping www.baidu.com -c 3 PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data. 64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=1 ttl=51 time=36.3 ms 64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=2 ttl=51 time=36.4 ms @@ -1426,16 +1418,16 @@ build environment: 8. 查看网络服务和端口 - **netstat** / **ss**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# netstat -nap | grep nginx + [root ~]# netstat -nap | grep nginx ``` 9. 网络监听抓包 - **tcpdump**。 10. 安全文件拷贝 - **scp**。 - ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# scp root@1.2.3.4:/root/guido.jpg hellokitty@4.3.2.1:/home/hellokitty/pic.jpg - ``` + ```Shell + [root ~]# scp root@1.2.3.4:/root/guido.jpg hellokitty@4.3.2.1:/home/hellokitty/pic.jpg + ``` 11. 文件同步工具 - **rsync**。 @@ -1444,9 +1436,9 @@ build environment: 12. 安全文件传输 - **sftp**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# sftp root@120.77.222.217 - root@120.77.222.217's password: - Connected to 120.77.222.217. + [root ~]# sftp root@1.2.3.4 + root@1.2.3.4's password: + Connected to 1.2.3.4. sftp> ``` @@ -1473,12 +1465,12 @@ build environment: 1. 查看进程 - **ps**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ps -ef + [root ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Jun23 ? 00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 root 2 0 0 Jun23 ? 00:00:00 [kthreadd] ... - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ps -ef | grep mysqld + [root ~]# ps -ef | grep mysqld root 4943 4581 0 22:45 pts/0 00:00:00 grep --color=auto mysqld mysql 25257 1 0 Jun25 ? 00:00:39 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid ``` @@ -1486,7 +1478,7 @@ build environment: 2. 显示进程状态树 - **pstree**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# pstree + [root ~]# pstree systemd─┬─AliYunDun───18*[{AliYunDun}] ├─AliYunDunUpdate───3*[{AliYunDunUpdate}] ├─2*[agetty] @@ -1512,14 +1504,14 @@ build environment: 3. 查找与指定条件匹配的进程 - **pgrep**。 ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ pgrep mysqld + [root ~]$ pgrep mysqld 3584 ``` 4. 通过进程号终止进程 - **kill**。 ```Shell - [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ kill -l + [root ~]$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM @@ -1533,8 +1525,8 @@ build environment: 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX - [root@iZwz97tbgo9lkabnat2lo8Z ~]# kill 1234 - [root@iZwz97tbgo9lkabnat2lo8Z ~]# kill -9 1234 + [root ~]# kill 1234 + [root ~]# kill -9 1234 ``` 例子:用一条命令强制终止正在运行的Redis进程。 @@ -1548,13 +1540,13 @@ build environment: 结束名为mysqld的进程。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# pkill mysqld + [root ~]# pkill mysqld ``` 结束hellokitty用户的所有进程。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# pkill -u hellokitty + [root ~]# pkill -u hellokitty ``` > 说明:这样的操作会让hellokitty用户和服务器断开连接。 @@ -1565,8 +1557,8 @@ build environment: - `&` - 将进程置于后台运行。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# mongod & - [root@iZwz97tbgo9lkabnat2lo8Z ~]# redis-server + [root ~]# mongod & + [root ~]# redis-server ... ^Z [4]+ Stopped redis-server @@ -1575,7 +1567,7 @@ build environment: 7. 查询后台进程 - **jobs**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# jobs + [root ~]# jobs [2] Running mongod & [3]- Stopped cat [4]+ Stopped redis-server @@ -1584,9 +1576,9 @@ build environment: 8. 让进程在后台继续运行 - **bg**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# bg %4 + [root ~]# bg %4 [4]+ redis-server & - [root@iZwz97tbgo9lkabnat2lo8Z ~]# jobs + [root ~]# jobs [2] Running mongod & [3]+ Stopped cat [4]- Running redis-server & @@ -1595,7 +1587,7 @@ build environment: 9. 将后台进程置于前台 - **fg**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# fg %4 + [root ~]# fg %4 redis-server ``` @@ -1606,15 +1598,15 @@ build environment: 11. 用户登出后进程继续工作 - **nohup**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# nohup ping www.baidu.com > result.txt & + [root ~]# nohup ping www.baidu.com > result.txt & ``` 12. 跟踪进程系统调用情况 - **strace**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# pgrep mysqld + [root ~]# pgrep mysqld 8803 - [root@izwz97tbgo9lkabnat2lo8z ~]# strace -c -p 8803 + [root ~]# strace -c -p 8803 strace: Process 8803 attached ^Cstrace: Process 8803 detached % time seconds usecs/call calls errors syscall @@ -1633,14 +1625,14 @@ build environment: 13. 查看当前运行级别 - **runlevel**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# runlevel + [root ~]# runlevel N 3 ``` 14. 实时监控进程占用资源状况 - **top**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# top + [root ~]# top top - 23:04:23 up 3 days, 14:10, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st @@ -1661,7 +1653,7 @@ build environment: 2. 查看系统活动信息 - **sar**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# sar -u -r 5 10 + [root ~]# sar -u -r 5 10 Linux 3.10.0-957.10.1.el7.x86_64 (izwz97tbgo9lkabnat2lo8z) 06/02/2019 _x86_64_ (2 CPU) 06:48:30 PM CPU %user %nice %system %iowait %steal %idle @@ -1680,7 +1672,7 @@ build environment: 3. 查看内存使用情况 - **free**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# free + [root ~]# free total used free shared buff/cache available Mem: 1016168 323924 190452 356 501792 531800 Swap: 0 0 0 @@ -1689,7 +1681,7 @@ build environment: 4. 虚拟内存统计 - **vmstat**。 ```Shell - [root@iZ8vba0s66jjlfmo601w4xZ ~]# vmstat + [root ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 204020 79036 667532 0 0 5 18 101 58 1 0 99 0 0 @@ -1698,7 +1690,7 @@ build environment: 5. CPU信息统计 - **mpstat**。 ```Shell - [root@iZ8vba0s66jjlfmo601w4xZ ~]# mpstat + [root ~]# mpstat Linux 3.10.0-957.5.1.el7.x86_64 (iZ8vba0s66jjlfmo601w4xZ) 05/30/2019 _x86_64_ (1 CPU) 01:51:54 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle @@ -1708,11 +1700,11 @@ build environment: 6. 查看进程使用内存状况 - **pmap**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# ps + [root ~]# ps PID TTY TIME CMD 4581 pts/0 00:00:00 bash 5664 pts/0 00:00:00 ps - [root@iZwz97tbgo9lkabnat2lo8Z ~]# pmap 4581 + [root ~]# pmap 4581 4581: -bash 0000000000400000 884K r-x-- bash 00000000006dc000 4K r---- bash @@ -1727,7 +1719,7 @@ build environment: 7. 报告设备CPU和I/O统计信息 - **iostat**。 ```Shell - [root@iZwz97tbgo9lkabnat2lo8Z ~]# iostat + [root ~]# iostat Linux 3.10.0-693.11.1.el7.x86_64 (iZwz97tbgo9lkabnat2lo8Z) 06/26/2018 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.79 0.00 0.20 0.04 0.00 98.97 @@ -1739,7 +1731,7 @@ build environment: 8. 显示所有PCI设备 - **lspci**。 ```Shell - [root@izwz97tbgo9lkabnat2lo8z ~]# lspci + [root ~]# lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] @@ -1756,7 +1748,7 @@ build environment: 9. 显示进程间通信设施的状态 - **ipcs**。 ```Shell - [root@iZ8vba0s66jjlfmo601w4xZ ~]# ipcs + [root ~]# ipcs ------ Message Queues -------- key msqid owner perms used-bytes messages @@ -1768,6 +1760,93 @@ build environment: key semid owner perms nsems ``` +### Shell编程 + +之前我们提到过,Shell是一个连接用户和操作系统的应用程序,它提供了人机交互的界面(接口),用户通过这个界面访问操作系统内核的服务。Shell脚本是一种为Shell编写的脚本程序,我们可以通过Shell脚本来进行系统管理,同时也可以通过它进行文件操作。总之,编写Shell脚本对于使用Linux系统的人来说,应该是一项标配技能。 + +互联网上有大量关于Shell脚本的相关知识,我不打算再此对Shell脚本做一个全面系统的讲解,我们通过下面的代码来感性的认识下Shell脚本就行了。 + +例子1:输入两个整数m和n,计算从m到n的整数求和的结果。 + +```Shell +#!/usr/bin/bash +printf 'm = ' +read m +printf 'n = ' +read n +a=$m +sum=0 +while [ $a -le $n ] +do + sum=$[ sum + a ] + a=$[ a + 1 ] +done +echo '结果: '$sum +``` + +例子2:自动创建文件夹和指定数量的文件。 + +```Shell +#!/usr/bin/bash +printf '输入文件名: ' +read file +printf '输入文件数量(<1000): ' +read num +if [ $num -ge 1000 ] +then + echo '文件数量不能超过1000' +else + if [ -e $dir -a -d $dir ] + then + rm -rf $dir + else + if [ -e $dir -a -f $dir ] + then + rm -f $dir + fi + fi + mkdir -p $dir + index=1 + while [ $index -le $num ] + do + if [ $index -lt 10 ] + then + pre='00' + elif [ $index -lt 100 ] + then + pre='0' + else + pre='' + fi + touch $dir'/'$file'_'$pre$index + index=$[ index + 1 ] + done +fi +``` + +例子3:自动安装指定版本的Redis。 + +```Shell +#!/usr/bin/bash +install_redis() { + if ! which redis-server > /dev/null + then + cd /root + wget $1$2'.tar.gz' >> install.log + gunzip /root/$2'.tar.gz' + tar -xf /root/$2'.tar' + cd /root/$2 + make >> install.log + make install >> install.log + echo '安装完成' + else + echo '已经安装过Redis' + fi +} + +install_redis 'http://download.redis.io/releases/' $1 +``` + ### 相关资源 1. Linux命令行常用快捷键 diff --git a/Day31-35/res/rk05.jpg b/Day31-35/res/rk05.jpg deleted file mode 100644 index a10eaec..0000000 Binary files a/Day31-35/res/rk05.jpg and /dev/null differ diff --git a/Day36-40/36-38.关系型数据库MySQL.md b/Day36-40/36-38.关系型数据库MySQL.md new file mode 100644 index 0000000..a9761c7 --- /dev/null +++ b/Day36-40/36-38.关系型数据库MySQL.md @@ -0,0 +1,1343 @@ +## 关系数据库入门 + +### 关系数据库概述 + +1. 数据持久化 - 将数据保存到能够长久保存数据的存储介质中,在掉电的情况下数据也不会丢失。 + +2. 数据库发展史 - 网状数据库、层次数据库、关系数据库、NoSQL数据库。 + + > 1970年,IBM的研究员E.F.Codd在*Communication of the ACM*上发表了名为*A Relational Model of Data for Large Shared Data Banks*的论文,提出了关系模型的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。 + +3. 关系数据库特点。 + + - 理论基础:集合论和关系代数。 + + - 具体表象:用二维表(有行和列)组织数据。 + + - 编程语言:结构化查询语言(SQL)。 + +4. ER模型(实体关系模型)和概念模型图。 + + **ER模型**,全称为**实体关系模型**(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出,是概念数据模型的高层描述方式,如下图所示。 + + ![](./res/er_diagram.png) + + - 实体 - 矩形框 + - 属性 - 椭圆框 + - 关系 - 菱形框 + - 重数 - 1:1(一对一) / 1:N(一对多) / M:N(多对多) + + 实际项目开发中,我们可以利用数据库建模工具(如:PowerDesigner)来绘制概念数据模型(其本质就是ER模型),然后再设置好目标数据库系统,将概念模型转换成物理模型,最终生成创建二维表的SQL(很多工具都可以根据我们设计的物理模型图以及设定的目标数据库来导出SQL或直接生成数据表)。 + + ![](./res/conceptual_model.png) + +5. 关系数据库产品。 + - [Oracle](https://www.oracle.com/index.html) - 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在Oracle最新的12c版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库云。 + - [DB2](https://www.ibm.com/analytics/us/en/db2/) - IBM公司开发的、主要运行于Unix(包括IBM自家的[AIX](https://zh.wikipedia.org/wiki/AIX))、Linux、以及Windows服务器版等系统的关系数据库产品。DB2历史悠久且被认为是最早使用SQL的数据库产品,它拥有较为强大的商业智能功能。 + - [SQL Server](https://www.microsoft.com/en-us/sql-server/) - 由Microsoft开发和推广的关系型数据库产品,最初适用于中小企业的数据管理,但是近年来它的应用范围有所扩展,部分大企业甚至是跨国公司也开始基于它来构建自己的数据管理系统。 + - [MySQL](https://www.mysql.com/) - MySQL是开放源代码的,任何人都可以在GPL(General Public License)的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。 + - [PostgreSQL]() - 在BSD许可证下发行的开放源代码的关系数据库产品。 + +### MySQL简介 + +MySQL最早是由瑞典的MySQL AB公司开发的一个开放源码的关系数据库管理系统,该公司于2008年被昇阳微系统公司(Sun Microsystems)收购。在2009年,甲骨文公司(Oracle)收购昇阳微系统公司,因此在这之后MySQL成为了Oracle旗下产品。 + +MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用于中小型网站开发。随着MySQL的不断成熟,它也逐渐被应用于更多大规模网站和应用,比如维基百科、谷歌(Google)、脸书(Facebook)、淘宝网等网站都使用了MySQL来提供数据持久化服务。 + +甲骨文公司收购后昇阳微系统公司,大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目[OpenSolaris](https://zh.wikipedia.org/wiki/OpenSolaris)的发展,因此导致自由软件社区对于Oracle是否还会持续支持MySQL社区版(MySQL的各个发行版本中唯一免费的版本)有所担忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划[MariaDB](https://zh.wikipedia.org/wiki/MariaDB)(以他女儿的名字命名的数据库)。有许多原来使用MySQL数据库的公司(例如:维基百科)已经陆续完成了从MySQL数据库到MariaDB数据库的迁移。 + +1. 安装和配置 + + > **说明**:下面的安装和配置都是以CentOS Linux环境为例,如果需要在其他系统下安装MySQL,读者可以自行在网络上查找对应的安装教程)。 + + - 刚才说过,MySQL有一个分支版本名叫MariaDB,该数据库旨在继续保持MySQL数据库在[GNU GPL](https://zh.wikipedia.org/wiki/GNU%E9%80%9A%E7%94%A8%E5%85%AC%E5%85%B1%E8%AE%B8%E5%8F%AF%E8%AF%81)下开源。如果要使用MariaDB作为MySQL的替代品,可以使用下面的命令进行安装。 + + ```Shell + yum install mariadb mariadb-server + ``` + + - 如果要安装官方版本的MySQL,可以在[MySQL官方网站]()下载安装文件。首先在下载页面中选择平台和版本,然后找到对应的下载链接。下面以MySQL 5.7.26版本和Red Hat Enterprise Linux为例,直接下载包含所有安装文件的归档文件,解归档之后通过包管理工具进行安装。 + + ```Shell + wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar + tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar + ``` + + 如果系统上有MariaDB相关的文件,需要先移除MariaDB相关的文件。 + + ```Shell + yum list installed | grep mariadb | awk '{print $1}' | xargs yum erase -y + ``` + + 接下来可以按照如下所示的顺序用RPM(Redhat Package Manager)工具安装MySQL。 + + ```Shell + rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm + rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm + rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm + rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm + ``` + + 可以使用下面的命令查看已经安装的MySQL相关的包。 + + ```Shell + rpm -qa | grep mysql + ``` + + - 配置MySQL。 + + MySQL的配置文件在`/etc`目录下,名为`my.cnf`,默认的配置文件内容如下所示。如果对这个文件不理解并没有关系,什么时候用到这个配置文件什么时候再了解它就行了。 + + ```Shell + cat /etc/my.cnf + ``` + + ```INI + # For advice on how to change settings please see + # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html + + [mysqld] + # + # Remove leading # and set to the amount of RAM for the most important data + # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. + # innodb_buffer_pool_size = 128M + # + # Remove leading # to turn on a very important data integrity option: logging + # changes to the binary log between backups. + # log_bin + # + # Remove leading # to set options mainly useful for reporting servers. + # The server defaults are faster for transactions and fast SELECTs. + # Adjust sizes as needed, experiment to find the optimal values. + # join_buffer_size = 128M + # sort_buffer_size = 2M + # read_rnd_buffer_size = 2M + datadir=/var/lib/mysql + socket=/var/lib/mysql/mysql.sock + + # Disabling symbolic-links is recommended to prevent assorted security risks + symbolic-links=0 + + log-error=/var/log/mysqld.log + pid-file=/var/run/mysqld/mysqld.pid + ``` + + - 启动MySQL服务。 + + 可以使用下面的命令来启动MySQL。 + + ```Shell + service mysqld start + ``` + + 在CentOS 7中,更推荐使用下面的命令来启动MySQL。 + + ```Shell + systemctl start mysqld + ``` + + 启动MySQL成功后,可以通过下面的命令来检查网络端口使用情况,MySQL默认使用3306端口。 + + ```Shell + netstat -ntlp | grep mysql + ``` + + 也可以使用下面的命令查找是否有名为mysqld的进程。 + + ```Shell + pgrep mysqld + ``` + + - 使用MySQL客户端工具连接服务器。 + + 命令行工具: + + ```Shell + mysql -u root -p + ``` + + > 说明:启动客户端时,`-u`参数用来指定用户名,MySQL默认的超级管理账号为`root`;`-p`表示要输入密码(用户口令);如果连接的是其他主机而非本机,可以用`-h`来指定连接主机的主机名或IP地址。 + + 如果是首次安装MySQL,可以使用下面的命令来找到默认的初始密码。 + + ```Shell + cat /var/log/mysqld.log | grep password + ``` + + 上面的命令会查看MySQL的日志带有password的行,在显示的结果中`root@localhost:`后面的部分就是默认设置的初始密码。 + + 修改超级管理员(root)的访问口令为`123456`。 + + ```SQL + set global validate_password_policy=0; + set global validate_password_length=6; + alter user 'root'@'localhost' identified by '123456'; + ``` + + > 说明:MySQL较新的版本默认不允许使用弱口令作为用户口令,所以我们通过上面的前两条命令修改了验证用户口令的策略和口令的长度。事实上我们不应该使用弱口令,因为存在用户口令被暴力破解的风险。近年来,攻击数据库窃取数据和劫持数据库勒索比特币的事件屡见不鲜,要避免这些潜在的风险,最为重要的一点是不要让数据库服务器暴露在公网上(最好的做法是将数据库置于内网,至少要做到不向公网开放数据库服务器的访问端口),另外要保管好`root`账号的口令,应用系统需要访问数据库时,通常不使用`root`账号进行访问,而是创建其他拥有适当权限的账号来访问。 + + 再次使用客户端工具连接MySQL服务器时,就可以使用新设置的口令了。在实际开发中,为了方便用户操作,可以选择图形化的客户端工具来连接MySQL服务器,包括: + + - MySQL Workbench(官方提供的工具) + - Navicat for MySQL(界面简单优雅,功能直观强大) + - SQLyog for MySQL(强大的MySQL数据库管理员工具) + +2. 常用命令。 + + - 查看服务器版本。 + + ```SQL + select version(); + ``` + + - 查看所有数据库。 + + ```SQL + show databases; + ``` + + - 切换到指定数据库。 + + ```SQL + use mysql; + ``` + + - 查看数据库下所有表。 + + ```Shell + show tables; + ``` + + - 获取帮助。 + + ```SQL + ? contents; + ? functions; + ? numeric functions; + ? round; + + ? data types; + ? longblob; + ``` + +### SQL详解 + +#### 基本操作 + +我们通常可以将SQL分为三类:DDL(数据定义语言)、DML(数据操作语言)和DCL(数据控制语言)。DDL主要用于创建(create)、删除(drop)、修改(alter)数据库中的对象,比如创建、删除和修改二维表;DML主要负责插入数据(insert)、删除数据(delete)、更新数据(update)和查询(select);DCL通常用于授予权限(grant)和召回权限(revoke)。 + +> 说明:SQL是不区分大小写的语言,为了书写方便,下面的SQL都使用了小写字母来书写。 + +1. DDL(数据定义语言) + + ```SQL + -- 如果存在名为school的数据库就删除它 + drop database if exists school; + + -- 创建名为school的数据库并设置默认的字符集和排序方式 + create database school default charset utf8 collate utf8_bin; + + -- 切换到school数据库上下文环境 + use school; + + -- 创建学院表 + create table tb_college + ( + collid int auto_increment comment '编号', + collname varchar(50) not null comment '名称', + collmaster varchar(20) not null comment '院长', + primary key (collid) + ); + + -- 创建学生表 + create table tb_student + ( + stuid int not null comment '学号', + stuname varchar(20) not null comment '姓名', + stusex boolean default 1 comment '性别', + stubirth date not null comment '出生日期', + stuaddr varchar(255) default '' comment '籍贯', + collid int not null comment '所属学院', + primary key (stuid), + foreign key (collid) references tb_college (collid) + ); + + -- 创建教师表 + create table tb_teacher + ( + teaid int not null comment '工号', + teaname varchar(20) not null comment '姓名', + teatitle varchar(10) default '助教' comment '职称', + collid int not null comment '所属学院', + primary key (teaid), + foreign key (collid) references tb_college (collid) + ); + + -- 创建课程表 + create table tb_course + ( + couid int not null comment '编号', + couname varchar(50) not null comment '名称', + coucredit int not null comment '学分', + teaid int not null comment '授课老师', + primary key (couid), + foreign key (teaid) references tb_teacher (teaid) + ); + + -- 创建选课记录表 + create table tb_record + ( + recid int auto_increment comment '选课记录编号', + sid int not null comment '选课学生', + cid int not null comment '所选课程', + seldate datetime default now() comment '选课时间日期', + score decimal(4,1) comment '考试成绩', + primary key (recid), + foreign key (sid) references tb_student (stuid), + foreign key (cid) references tb_course (couid), + unique (sid, cid) + ); + ``` + + 上面的DDL有几个地方需要强调一下: + + - 创建数据库时,我们通过`default charset utf8`指定了数据库默认使用的字符集,我们推荐使用该字符集,因为utf8能够支持国际化编码。如果将来数据库中用到的字符可能包括类似于Emoji这样的图片字符,也可以将默认字符集设定为utf8mb4(最大4字节的utf-8编码)。查看MySQL支持的字符集可以执行下面的语句。 + + ```SQL + show character set; + ``` + + ``` + +----------+---------------------------------+---------------------+--------+ + | Charset | Description | Default collation | Maxlen | + +----------+---------------------------------+---------------------+--------+ + | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | + | dec8 | DEC West European | dec8_swedish_ci | 1 | + | cp850 | DOS West European | cp850_general_ci | 1 | + | hp8 | HP West European | hp8_english_ci | 1 | + | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | + | latin1 | cp1252 West European | latin1_swedish_ci | 1 | + | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | + | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | + | ascii | US ASCII | ascii_general_ci | 1 | + | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | + | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | + | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | + | tis620 | TIS620 Thai | tis620_thai_ci | 1 | + | euckr | EUC-KR Korean | euckr_korean_ci | 2 | + | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | + | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | + | greek | ISO 8859-7 Greek | greek_general_ci | 1 | + | cp1250 | Windows Central European | cp1250_general_ci | 1 | + | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | + | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | + | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | + | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | + | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | + | cp866 | DOS Russian | cp866_general_ci | 1 | + | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | + | macce | Mac Central European | macce_general_ci | 1 | + | macroman | Mac West European | macroman_general_ci | 1 | + | cp852 | DOS Central European | cp852_general_ci | 1 | + | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | + | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | + | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | + | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | + | utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 | + | cp1256 | Windows Arabic | cp1256_general_ci | 1 | + | cp1257 | Windows Baltic | cp1257_general_ci | 1 | + | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | + | binary | Binary pseudo charset | binary | 1 | + | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | + | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | + | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | + | gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | + +----------+---------------------------------+---------------------+--------+ + 41 rows in set (0.00 sec) + ``` + + 如果要设置MySQL服务启动时默认使用的字符集,可以修改MySQL的配置并添加以下内容 + + ```INI + [mysqld] + character-set-server=utf8 + ``` + + - 在创建表的时候,我们可以在右圆括号的后面通过`engine=XXX`来指定表的存储引擎,MySQL支持多种存储引擎,可以通过`show engines`命令进行查看。MySQL 5.5以后的版本默认使用的存储引擎是InnoDB,它正好也就是我们推荐大家使用的存储引擎(因为InnoDB更适合互联网应用对高并发、性能以及事务支持等方面的需求)。 + + ```SQL + show engines\G + ``` + + ``` + *************************** 1. row *************************** + Engine: InnoDB + Support: DEFAULT + Comment: Supports transactions, row-level locking, and foreign keys + Transactions: YES + XA: YES + Savepoints: YES + *************************** 2. row *************************** + Engine: MRG_MYISAM + Support: YES + Comment: Collection of identical MyISAM tables + Transactions: NO + XA: NO + Savepoints: NO + *************************** 3. row *************************** + Engine: MEMORY + Support: YES + Comment: Hash based, stored in memory, useful for temporary tables + Transactions: NO + XA: NO + Savepoints: NO + *************************** 4. row *************************** + Engine: BLACKHOLE + Support: YES + Comment: /dev/null storage engine (anything you write to it disappears) + Transactions: NO + XA: NO + Savepoints: NO + *************************** 5. row *************************** + Engine: MyISAM + Support: YES + Comment: MyISAM storage engine + Transactions: NO + XA: NO + Savepoints: NO + *************************** 6. row *************************** + Engine: CSV + Support: YES + Comment: CSV storage engine + Transactions: NO + XA: NO + Savepoints: NO + *************************** 7. row *************************** + Engine: ARCHIVE + Support: YES + Comment: Archive storage engine + Transactions: NO + XA: NO + Savepoints: NO + *************************** 8. row *************************** + Engine: PERFORMANCE_SCHEMA + Support: YES + Comment: Performance Schema + Transactions: NO + XA: NO + Savepoints: NO + *************************** 9. row *************************** + Engine: FEDERATED + Support: NO + Comment: Federated MySQL storage engine + Transactions: NULL + XA: NULL + Savepoints: NULL + 9 rows in set (0.00 sec) + ``` + + 下面的表格对MySQL几种常用的数据引擎进行了简单的对比。 + + | 特性 | InnoDB | MRG_MYISAM | MEMORY | MyISAM | + | ------------ | ------------ | ---------- | ------ | ------ | + | 存储限制 | 有 | 没有 | 有 | 有 | + | 事务 | 支持 | | | | + | 锁机制 | 行锁 | 表锁 | 表锁 | 表锁 | + | B树索引 | 支持 | 支持 | 支持 | 支持 | + | 哈希索引 | | | 支持 | | + | 全文检索 | 支持(5.6+) | | | 支持 | + | 集群索引 | 支持 | | | | + | 数据缓存 | 支持 | | 支持 | | + | 索引缓存 | 支持 | 支持 | 支持 | 支持 | + | 数据可压缩 | | | | 支持 | + | 内存使用 | 高 | 低 | 中 | 低 | + | 存储空间使用 | 高 | 低 | | 低 | + | 批量插入性能 | 低 | 高 | 高 | 高 | + | 是否支持外键 | 支持 | | | | + + 通过上面的比较我们可以了解到,InnoDB是唯一能够支持外键、事务以及行锁的存储引擎,所以我们之前说它更适合互联网应用,而且它也是较新的MySQL版本中默认使用的存储引擎。 + + - 在定义表结构为每个字段选择数据类型时,如果不清楚哪个数据类型更合适,可以通过MySQL的帮助系统来了解每种数据类型的特性、数据的长度和精度等相关信息。 + + ```SQL + ? data types + ``` + + ``` + You asked for help about help category: "Data Types" + For more information, type 'help ', where is one of the following + topics: + AUTO_INCREMENT + BIGINT + BINARY + BIT + BLOB + BLOB DATA TYPE + BOOLEAN + CHAR + CHAR BYTE + DATE + DATETIME + DEC + DECIMAL + DOUBLE + DOUBLE PRECISION + ENUM + FLOAT + INT + INTEGER + LONGBLOB + LONGTEXT + MEDIUMBLOB + MEDIUMINT + MEDIUMTEXT + SET DATA TYPE + SMALLINT + TEXT + TIME + TIMESTAMP + TINYBLOB + TINYINT + TINYTEXT + VARBINARY + VARCHAR + YEAR DATA TYPE + ``` + + ```SQL + ? varchar + ``` + + ``` + Name: 'VARCHAR' + Description: + [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE + collation_name] + + A variable-length string. M represents the maximum column length in + characters. The range of M is 0 to 65,535. The effective maximum length + of a VARCHAR is subject to the maximum row size (65,535 bytes, which is + shared among all columns) and the character set used. For example, utf8 + characters can require up to three bytes per character, so a VARCHAR + column that uses the utf8 character set can be declared to be a maximum + of 21,844 characters. See + http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html. + + MySQL stores VARCHAR values as a 1-byte or 2-byte length prefix plus + data. The length prefix indicates the number of bytes in the value. A + VARCHAR column uses one length byte if values require no more than 255 + bytes, two length bytes if values may require more than 255 bytes. + + *Note*: + + MySQL follows the standard SQL specification, and does not remove + trailing spaces from VARCHAR values. + + VARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the + standard SQL way to define that a VARCHAR column should use some + predefined character set. MySQL uses utf8 as this predefined character + set. http://dev.mysql.com/doc/refman/5.7/en/charset-national.html. + NVARCHAR is shorthand for NATIONAL VARCHAR. + + URL: http://dev.mysql.com/doc/refman/5.7/en/string-type-overview.html + ``` + + 在数据类型的选择上,保存字符串数据通常都使用VARCHAR和CHAR两种类型,前者通常称为变长字符串,而后者通常称为定长字符串;对于InnoDB存储引擎,行存储格式没有区分固定长度和可变长度列,因此VARCHAR类型好CHAR类型没有本质区别,后者不一定比前者性能更好。如果要保存的很大字符串,可以使用TEXT类型;如果要保存很大的字节串,可以使用BLOB(二进制大对象)类型。在MySQL中,TEXT和BLOB又分别包括TEXT、MEDIUMTEXT、LONGTEXT和BLOB、MEDIUMBLOB、LONGBLOB三种不同的类型,它们主要的区别在于存储数据的最大大小不同。保存浮点数可以用FLOAT或DOUBLE类型,而保存定点数应该使用DECIMAL类型。如果要保存时间日期,DATETIME类型优于TIMESTAMP类型,因为前者能表示的时间日期范围更大。 + +2. DML + + ```SQL + -- 插入学院数据 + insert into tb_college (collname, collmaster) values + ('计算机学院', '左冷禅'), + ('外国语学院', '岳不群'), + ('经济管理学院', '风清扬'); + + -- 插入学生数据 + insert into tb_student (stuid, stuname, stusex, stubirth, stuaddr, collid) values + (1001, '杨逍', 1, '1990-3-4', '四川成都', 1), + (1002, '任我行', 1, '1992-2-2', '湖南长沙', 1), + (1033, '王语嫣', 0, '1989-12-3', '四川成都', 1), + (1572, '岳不群', 1, '1993-7-19', '陕西咸阳', 1), + (1378, '纪嫣然', 0, '1995-8-12', '四川绵阳', 1), + (1954, '林平之', 1, '1994-9-20', '福建莆田', 1), + (2035, '东方不败', 1, '1988-6-30', null, 2), + (3011, '林震南', 1, '1985-12-12', '福建莆田', 3), + (3755, '项少龙', 1, '1993-1-25', null, 3), + (3923, '杨不悔', 0, '1985-4-17', '四川成都', 3), + (4040, '隔壁老王', 1, '1989-1-1', '四川成都', 2); + + -- 删除学生数据 + delete from tb_student where stuid=4040; + + -- 更新学生数据 + update tb_student set stuname='杨过', stuaddr='湖南长沙' where stuid=1001; + + -- 插入老师数据 + insert into tb_teacher (teaid, teaname, teatitle, collid) values + (1122, '张三丰', '教授', 1), + (1133, '宋远桥', '副教授', 1), + (1144, '杨逍', '副教授', 1), + (2255, '范遥', '副教授', 2), + (3366, '韦一笑', '讲师', 3); + + -- 插入课程数据 + insert into tb_course (couid, couname, coucredit, teaid) values + (1111, 'Python程序设计', 3, 1122), + (2222, 'Web前端开发', 2, 1122), + (3333, '操作系统', 4, 1122), + (4444, '计算机网络', 2, 1133), + (5555, '编译原理', 4, 1144), + (6666, '算法和数据结构', 3, 1144), + (7777, '经贸法语', 3, 2255), + (8888, '成本会计', 2, 3366), + (9999, '审计学', 3, 3366); + + -- 插入选课数据 + insert into tb_record (sid, cid, seldate, score) values + (1001, 1111, '2017-09-01', 95), + (1001, 2222, '2017-09-01', 87.5), + (1001, 3333, '2017-09-01', 100), + (1001, 4444, '2018-09-03', null), + (1001, 6666, '2017-09-02', 100), + (1002, 1111, '2017-09-03', 65), + (1002, 5555, '2017-09-01', 42), + (1033, 1111, '2017-09-03', 92.5), + (1033, 4444, '2017-09-01', 78), + (1033, 5555, '2017-09-01', 82.5), + (1572, 1111, '2017-09-02', 78), + (1378, 1111, '2017-09-05', 82), + (1378, 7777, '2017-09-02', 65.5), + (2035, 7777, '2018-09-03', 88), + (2035, 9999, default, null), + (3755, 1111, default, null), + (3755, 8888, default, null), + (3755, 9999, '2017-09-01', 92); + ``` + + ```SQL + -- 查询所有学生信息 + select * from tb_student; + + -- 查询所有课程名称及学分(投影和别名) + select couname, coucredit from tb_course; + select couname as 课程名称, coucredit as 学分 from tb_course; + + -- 查询所有学生的姓名和性别(条件运算) + select stuname as 姓名, case stusex when 1 then '男' else '女' end as 性别 from tb_student; + select stuname as 姓名, if(stusex, '男', '女') as 性别 from tb_student; + + -- 查询所有女学生的姓名和出生日期(筛选) + select stuname, stubirth from tb_student where stusex=0; + + -- 查询所有80后学生的姓名、性别和出生日期(筛选) + select stuname, stusex, stubirth from tb_student where stubirth>='1980-1-1' and stubirth<='1989-12-31'; + select stuname, stusex, stubirth from tb_student where stubirth between '1980-1-1' and '1989-12-31'; + + -- 查询姓"杨"的学生姓名和性别(模糊) + select stuname, stusex from tb_student where stuname like '杨%'; + + -- 查询姓"杨"名字两个字的学生姓名和性别(模糊) + select stuname, stusex from tb_student where stuname like '杨_'; + + -- 查询姓"杨"名字三个字的学生姓名和性别(模糊) + select stuname, stusex from tb_student where stuname like '杨__'; + + -- 查询名字中有"不"字或"嫣"字的学生的姓名(模糊) + select stuname, stusex from tb_student where stuname like '%不%' or stuname like '%嫣%'; + + -- 查询没有录入家庭住址的学生姓名(空值) + select stuname from tb_student where stuaddr is null; + + -- 查询录入了家庭住址的学生姓名(空值) + select stuname from tb_student where stuaddr is not null; + + -- 查询学生选课的所有日期(去重) + select distinct seldate from tb_record; + + -- 查询学生的家庭住址(去重) + select distinct stuaddr from tb_student where stuaddr is not null; + + -- 查询男学生的姓名和生日按年龄从大到小排列(排序) + select stuname as 姓名, datediff(curdate(), stubirth) div 365 as 年龄 from tb_student where stusex=1 order by 年龄 desc; + + -- 查询年龄最大的学生的出生日期(聚合函数) + select min(stubirth) from tb_student; + + -- 查询年龄最小的学生的出生日期(聚合函数) + select max(stubirth) from tb_student; + + -- 查询男女学生的人数(分组和聚合函数) + select stusex, count(*) from tb_student group by stusex; + + -- 查询课程编号为1111的课程的平均成绩(筛选和聚合函数) + select avg(score) from tb_record where cid=1111; + + -- 查询学号为1001的学生所有课程的平均分(筛选和聚合函数) + select avg(score) from tb_record where sid=1001; + + -- 查询每个学生的学号和平均成绩(分组和聚合函数) + select sid as 学号, avg(score) as 平均分 from tb_record group by sid; + + -- 查询平均成绩大于等于90分的学生的学号和平均成绩 + -- 分组以前的筛选使用where子句 / 分组以后的筛选使用having子句 + select sid as 学号, avg(score) as 平均分 from tb_record group by sid having 平均分>=90; + + -- 查询年龄最大的学生的姓名(子查询/嵌套的查询) + select stuname from tb_student where stubirth=( select min(stubirth) from tb_student ); + + -- 查询年龄最大的学生姓名和年龄(子查询+运算) + select stuname as 姓名, datediff(curdate(), stubirth) div 365 as 年龄 from tb_student where stubirth=( select min(stubirth) from tb_student ); + + -- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) + select stuname from tb_student where stuid in ( select stuid from tb_record group by stuid having count(stuid)>2 ); + + -- 查询学生姓名、课程名称以及成绩(连接查询) + select stuname, couname, score from tb_student t1, tb_course t2, tb_record t3 where stuid=sid and couid=cid and score is not null; + + -- 查询学生姓名、课程名称以及成绩按成绩从高到低查询第11-15条记录(内连接+分页) + select stuname, couname, score from tb_student inner join tb_record on stuid=sid inner join tb_course on couid=cid where score is not null order by score desc limit 5 offset 10; + + select stuname, couname, score from tb_student inner join tb_record on stuid=sid inner join tb_course on couid=cid where score is not null order by score desc limit 10, 5; + + -- 查询选课学生的姓名和平均成绩(子查询和连接查询) + select stuname, avgmark from tb_student, ( select sid, avg(score) as avgmark from tb_record group by sid ) temp where stuid=sid; + + select stuname, avgmark from tb_student inner join ( select sid, avg(score) as avgmark from tb_record group by sid ) temp on stuid=sid; + + -- 查询每个学生的姓名和选课数量(左外连接和子查询) + select stuname, ifnull(total, 0) from tb_student left outer join ( select sid, count(sid) as total from tb_record group by sid ) temp on stuid=sid; + ``` + + 上面的DML有几个地方需要加以说明: + + 1. MySQL中支持多种类型的运算符,包括:算术运算符(+、-、*、/、%)、比较运算符(=、<>、<=>、<、<=、>、>=、BETWEEN...AND...、IN、IS NULL、IS NOT NULL、LIKE、RLIKE、REGEXP)、逻辑运算符(NOT、AND、OR、XOR)和位运算符(&、|、^、~、>>、<<),我们可以在DML中使用这些运算符处理数据。 + + 2. 在查询数据时,可以在SELECT语句及其子句(如WHERE子句、ORDER BY子句、HAVING子句等)中使用函数,这些函数包括字符串函数、数值函数、时间日期函数、流程函数等,如下面的表格所示。 + + 常用字符串函数。 + + | 函数 | 功能 | + | ----------------------- | ----------------------------------------------------- | + | CONCAT | 将多个字符串连接成一个字符串 | + | FORMAT | 将数值格式化成字符串并指定保留几位小数 | + | FROM_BASE64 / TO_BASE64 | BASE64解码/编码 | + | BIN / OCT / HEX | 将数值转换成二进制/八进制/十六进制字符串 | + | LOCATE | 在字符串中查找一个子串的位置 | + | LEFT / RIGHT | 返回一个字符串左边/右边指定长度的字符 | + | LENGTH / CHAR_LENGTH | 返回字符串的长度以字节/字符为单位 | + | LOWER / UPPER | 返回字符串的小写/大写形式 | + | LPAD / RPAD | 如果字符串的长度不足,在字符串左边/右边填充指定的字符 | + | LTRIM / RTRIM | 去掉字符串前面/后面的空格 | + | ORD / CHAR | 返回字符对应的编码/返回编码对应的字符 | + | STRCMP | 比较字符串,返回-1、0、1分别表示小于、等于、大于 | + | SUBSTRING | 返回字符串指定范围的子串 | + + 常用数值函数。 + + | 函数 | 功能 | + | ------------------------------------------ | ---------------------------------- | + | ABS | 返回一个数的绝度值 | + | CEILING / FLOOR | 返回一个数上取整/下取整的结果 | + | CONV | 将一个数从一种进制转换成另一种进制 | + | CRC32 | 计算循环冗余校验码 | + | EXP / LOG / LOG2 / LOG10 | 计算指数/对数 | + | POW | 求幂 | + | RAND | 返回[0,1)范围的随机数 | + | ROUND | 返回一个数四舍五入后的结果 | + | SQRT | 返回一个数的平方根 | + | TRUNCATE | 截断一个数到指定的精度 | + | SIN / COS / TAN / COT / ASIN / ACOS / ATAN | 三角函数 | + + 常用时间日期函数。 + + | 函数 | 功能 | + | ----------------------- | ------------------------------------- | + | CURDATE / CURTIME / NOW | 获取当前日期/时间/日期和时间 | + | ADDDATE / SUBDATE | 将两个日期表达式相加/相减并返回结果 | + | DATE / TIME | 从字符串中获取日期/时间 | + | YEAR / MONTH / DAY | 从日期中获取年/月/日 | + | HOUR / MINUTE / SECOND | 从时间中获取时/分/秒 | + | DATEDIFF / TIMEDIFF | 返回两个时间日期表达式相差多少天/小时 | + | MAKEDATE / MAKETIME | 制造一个日期/时间 | + + 常用流程函数。 + + | 函数 | 功能 | + | ------ | ------------------------------------------------ | + | IF | 根据条件是否成立返回不同的值 | + | IFNULL | 如果为NULL则返回指定的值否则就返回本身 | + | NULLIF | 两个表达式相等就返回NULL否则返回第一个表达式的值 | + + 其他常用函数。 + + | 函数 | 功能 | + | ---------------------- | ----------------------------- | + | MD5 / SHA1 / SHA2 | 返回字符串对应的哈希摘要 | + | CHARSET / COLLATION | 返回字符集/校对规则 | + | USER / CURRENT_USER | 返回当前用户 | + | DATABASE | 返回当前数据库名 | + | VERSION | 返回当前数据库版本 | + | FOUND_ROWS / ROW_COUNT | 返回查询到的行数/受影响的行数 | + | LAST_INSERT_ID | 返回最后一个自增主键的值 | + | UUID / UUID_SHORT | 返回全局唯一标识符 | + +3. DCL + + ```SQL + -- 创建可以远程登录的root账号并为其指定口令 + create user 'root'@'%' identified by '123456'; + + -- 为远程登录的root账号授权操作所有数据库所有对象的所有权限并允许其将权限再次赋予其他用户 + grant all privileges on *.* to 'root'@'%' with grant option; + + -- 创建名为hellokitty的用户并为其指定口令 + create user 'hellokitty'@'%' identified by '123123'; + + -- 将对school数据库所有对象的所有操作权限授予hellokitty + grant all privileges on school.* to 'hellokitty'@'%'; + + -- 召回hellokitty对school数据库所有对象的insert/delete/update权限 + revoke insert, delete, update on school.* from 'hellokitty'@'%'; + ``` + + > 说明:创建一个可以允许任意主机登录并且具有超级管理员权限的用户在现实中并不是一个明智的决定,因为一旦该账号的口令泄露或者被破解,数据库将会面临灾难级的风险。 + +#### 索引 + +索引是关系型数据库中用来提升查询性能最为重要的手段。关系型数据库中的索引就像一本书的目录,我们可以想象一下,如果要从一本书中找出某个知识点,但是这本书没有目录,这将是意见多么可怕的事情(我们估计得一篇一篇的翻下去,才能确定这个知识点到底在什么位置)。创建索引虽然会带来存储空间上的开销,就像一本书的目录会占用一部分的篇幅一样,但是在牺牲空间后换来的查询时间的减少也是非常显著的。 + +MySQL中,所有数据类型的列都可以被索引,常用的存储引擎InnoDB和MyISAM能支持每个表创建16个索引。InnoDB和MyISAM使用的索引其底层算法是B-tree(B树),B-tree是一种自平衡的树,类似于平衡二叉排序树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的操作都在对数时间内完成。 + +接下来我们通过一个简单的例子来说明索引的意义,比如我们要根据学生的姓名来查找学生,这个场景在实际开发中应该经常遇到,就跟通过商品名称查找商品道理是一样的。我们可以使用MySQL的`explain`关键字来查看SQL的执行计划。 + +```SQL +explain select * from tb_student where stuname='林震南'\G +``` + +``` +*************************** 1. row *************************** + id: 1 + select_type: SIMPLE + table: tb_student + partitions: NULL + type: ALL +possible_keys: NULL + key: NULL + key_len: NULL + ref: NULL + rows: 11 + filtered: 10.00 + Extra: Using where +1 row in set, 1 warning (0.00 sec) +``` + +在上面的SQL执行计划中,有几项值得我们关注: + +1. type:MySQL在表中找到满足条件的行的方式,也称为访问类型,包括:ALL(全表扫描)、index(索引全扫描)、range(索引范围扫描)、ref(非唯一索引扫描)、eq_ref(唯一索引扫描)、const/system、NULL。在所有的访问类型中,很显然ALL是性能最差的,它代表了全表扫描是指要扫描表中的每一行才能找到匹配的行。 +2. possible_keys:MySQL可以选择的索引,但是**有可能不会使用**。 +3. key:MySQL真正使用的索引。 +4. rows:执行查询需要扫描的行数,这是一个**预估值**。 + +从上面的执行计划可以看出,当我们通过学生名字查询学生时实际上是进行了全表扫描,不言而喻这个查询性能肯定是非常糟糕的,尤其是在表中的行很多的时候。如果我们需要经常通过学生姓名来查询学生,那么就应该在学生姓名对应的列上创建索引,通过索引来加速查询。 + +```SQL +create index idx_student_name on tb_student(stuname); +``` + +再次查看刚才的SQL对应的执行计划。 + +```SQL +explain select * from tb_student where stuname='林震南'\G +``` + +``` +*************************** 1. row *************************** + id: 1 + select_type: SIMPLE + table: tb_student + partitions: NULL + type: ref +possible_keys: idx_student_name + key: idx_student_name + key_len: 62 + ref: const + rows: 1 + filtered: 100.00 + Extra: NULL +1 row in set, 1 warning (0.00 sec) +``` + +可以注意到,在对学生姓名创建索引后,刚才的查询已经不是全表扫描而是基于索引的查询,而且扫描的行只有唯一的一行,这显然大大的提升了查询的性能。MySQL中还允许创建前缀索引,即对索引字段的前N个字符创建索引,这样的话可以减少索引占用的空间(但节省了空间很有可能会浪费时间,**时间和空间是不可调和的矛盾**),如下所示。 + +```SQL +create index idx_student_name_1 on tb_student(stuname(1)); +``` + +上面的索引相当于是根据学生姓名的第一个字来创建的索引,我们再看看SQL执行计划。 + +```SQL +explain select * from tb_student where stuname='林震南'\G +``` + +``` +*************************** 1. row *************************** + id: 1 + select_type: SIMPLE + table: tb_student + partitions: NULL + type: ref +possible_keys: idx_student_name + key: idx_student_name + key_len: 5 + ref: const + rows: 2 + filtered: 100.00 + Extra: Using where +1 row in set, 1 warning (0.00 sec) +``` + +不知道大家是否注意到,这一次扫描的行变成了2行,因为学生表中有两个姓“林”的学生,我们只用姓名的第一个字作为索引的话,在查询时通过索引就会找到这两行。 + +如果要删除索引,可以使用下面的SQL。 + +```SQL +alter table tb_student drop index idx_student_name; +``` + +或者 + +```SQL +drop index idx_student_name on tb_student; +``` + +我们简单的为大家总结一下索引的设计原则: + +1. **最适合**索引的列是出现在**WHERE子句**和连接子句中的列。 +2. 索引列的基数越大(取值多重复值少),索引的效果就越好。 +3. 使用**前缀索引**可以减少索引占用的空间,内存中可以缓存更多的索引。 +4. **索引不是越多越好**,虽然索引加速了读操作(查询),但是写操作(增、删、改)都会变得更慢,因为数据的变化会导致索引的更新,就如同书籍章节的增删需要更新目录一样。 +5. 使用InnoDB存储引擎时,表的普通索引都会保存主键的值,所以**主键要尽可能选择较短的数据类型**,这样可以有效的减少索引占用的空间,利用提升索引的缓存效果。 + +最后,还有一点需要说明,InnoDB使用的B-tree索引,数值类型的列除了等值判断时索引会生效之外,使用>、<、>=、<=、BETWEEN...AND... 、<>时,索引仍然生效;对于字符串类型的列,如果使用不以通配符开头的模糊查询,索引也是起作用的,但是其他的情况会导致索引失效,这就意味着很有可能会做全表查询。 + + +#### 视图 + +视图是关系型数据库中将一组查询指令构成的结果集组合成可查询的数据表的对象。简单的说,视图就是虚拟的表,但与数据表不同的是,数据表是一种实体结构,而视图是一种虚拟结构,你也可以将视图理解为保存在数据库中被赋予名字的SQL语句。 + +使用视图可以获得以下好处: + +1. 可以将实体数据表隐藏起来,让外部程序无法得知实际的数据结构,让访问者可以使用表的组成部分而不是整个表,降低数据库被攻击的风险。 +2. 在大多数的情况下视图是只读的(更新视图的操作通常都有诸多的限制),外部程序无法直接透过视图修改数据。 +3. 重用SQL语句,将高度复杂的查询包装在视图表中,直接访问该视图即可取出需要的数据;也可以将视图视为数据表进行连接查询。 +4. 视图可以返回与实体数据表不同格式的数据, + +创建视图。 + +```SQL +create view vw_score +as + select sid, round(avg(score), 1) as avgscore from tb_record group by sid; + +create view vw_student_score +as + select stuname, avgscore + from tb_student, vw_score + where stuid=sid; +``` + +> **提示**:因为视图不包含数据,所以每次使用视图时,都必须执行查询以获得数据,如果你使用了连接查询、嵌套查询创建了较为复杂的视图,你可能会发现查询性能下降得很厉害。因此,在使用复杂的视图前,应该进行测试以确保其性能能够满足应用的需求。 + +使用视图。 + +```SQL +select stuname, avgscore from vw_student_score order by avgscore desc; +``` + +``` ++--------------+----------+ +| stuname | avgscore | ++--------------+----------+ +| 杨过 | 95.6 | +| 任我行 | 53.5 | +| 王语嫣 | 84.3 | +| 纪嫣然 | 73.8 | +| 岳不群 | 78.0 | +| 东方不败 | 88.0 | +| 项少龙 | 92.0 | ++--------------+----------+ +``` + +既然视图是一张虚拟的表,那么视图的中的数据可以更新吗?视图的可更新性要视具体情况而定,以下类型的视图是不能更新的: + +1. 使用了聚合函数(SUM、MIN、MAX、AVG、COUNT等)、DISTINCT、GROUP BY、HAVING、UNION或者UNION ALL的视图。 +2. SELECT中包含了子查询的视图。 +3. FROM子句中包含了一个不能更新的视图的视图。 +4. WHERE子句的子查询引用了FROM子句中的表的视图。 + +删除视图。 + +```SQL +drop view vw_student_score; +``` + +> **说明**:如果希望更新视图,可以先用上面的命令删除视图,也可以通过`create or replace view`来更新视图。 + +视图的规则和限制。 + +1. 视图可以嵌套,可以利用从其他视图中检索的数据来构造一个新的视图。视图也可以和表一起使用。 +2. 创建视图时可以使用`order by`子句,但如果从视图中检索数据时也使用了`order by`,那么该视图中原先的`order by`会被覆盖。 +3. 视图无法使用索引,也不会激发触发器(实际开发中因为性能等各方面的考虑,通常不建议使用触发器,所以我们也不对这个概念进行介绍)的执行。 + +#### 存储过程 + +存储过程是事先编译好存储在数据库中的一组SQL的集合,调用存储过程可以简化应用程序开发人员的工作,减少与数据库服务器之间的通信,对于提升数据操作的性能也是有帮助的。其实迄今为止,我们使用的SQL语句都是针对一个或多个表的单条语句,但在实际开发中经常会遇到某个操作需要多条SQL语句才能完成的情况。例如,电商网站在受理用户订单时,需要做以下一系列的处理。 + +1. 通过查询来核对库存中是否有对应的物品以及库存是否充足。 +2. 如果库存有物品,需要锁定库存以确保这些物品不再卖给别人, 并且要减少可用的物品数量以反映正确的库存量。 +3. 如果库存不足,可能需要进一步与供应商进行交互或者至少产生一条系统提示消息。 +4. 不管受理订单是否成功,都需要产生流水记录,而且需要给对应的用户产生一条通知信息。 + +我们可以通过存储过程将复杂的操作封装起来,这样不仅有助于保证数据的一致性,而且将来如果业务发生了变动,只需要调整和修改存储过程即可。对于调用存储过程的用户来说,存储过程并没有暴露数据表的细节,而且执行存储过程比一条条的执行一组SQL要快得多。 + +下面的存储过程实现了查询某门课程的最高分、最低分和平均分。 + +```SQL +delimiter $$ + +create procedure sp_get_score(courseId int, + out maxScore decimal(4,1), + out minScore decimal(4,1), + out avgScore decimal(4,1)) +begin + select max(score) into maxScore from tb_record where cid=courseId; + select min(score) into minScore from tb_record where cid=courseId; + select avg(score) into avgScore from tb_record where cid=courseId; +end $$ + +delimiter ; +``` + +> 说明:在定义存储过程时,因为可能需要书写多条SQL,而分隔这些SQL需要使用分号作为分隔符,如果这个时候,仍然用分号表示整段代码结束,那么定义存储过程的SQL就会出现错误,所以上面我们用`delimiter $$`将整段代码结束的标记定义为`$$`,那么代码中的分号将不再表示整段代码的结束,需要马上执行,整段代码在遇到`end $$`时才输入完成并执行。在定义完存储过程后,通过`delimiter ;`将结束符重新改回成分号。 + +上面定义的存储过程有四个参数,其中第一个参数是输入参数,代表课程的编号,后面的参数都是输出参数,因为存储过程不能定义返回值,只能通过输出参数将执行结果带出,定义输出参数的关键字是`out`,默认情况下参数都是输入参数。 + +调用存储过程。 + +```SQL +call sp_get_score(1111, @a, @b, @c); +``` + +获取输出参数的值。 + +```SQL +select @a as 最高分, @b as 最低分, @c as 平均分; +``` + +删除存储过程。 + +```SQL +drop procedure sp_get_score; +``` + +在存储过程中,我们可以定义变量、条件,可以使用分支和循环语句,可以通过游标操作查询结果,还可以使用事件调度器,这些内容我们暂时不在此处进行介绍。虽然我们说了很多存储过程的好处,但是在实际开发中,如果过度的使用存储过程,将大量复杂的运算放到存储过程中,也会导致占用数据库服务器的CPU资源,造成数据库服务器承受巨大的压力。为此,我们一般会将复杂的运算和处理交给应用服务器,因为很容易部署多台应用服务器来分摊这些压力。 + +### 几个重要的概念 + +#### 范式理论 - 设计二维表的指导思想 + +1. 第一范式:数据表的每个列的值域都是由原子值组成的,不能够再分割。 +2. 第二范式:数据表里的所有数据都要和该数据表的键(主键与候选键)有完全依赖关系。 +3. 第三范式:所有非键属性都只和候选键有相关性,也就是说非键属性之间应该是独立无关的。 + +#### 数据完整性 + +1. 实体完整性 - 每个实体都是独一无二的 + + - 主键(primary key) / 唯一约束 / 唯一索引(unique) +2. 引用完整性(参照完整性)- 关系中不允许引用不存在的实体 + + - 外键(foreign key) +3. 域完整性 - 数据是有效的 + - 数据类型及长度 + + - 非空约束(not null) + + - 默认值约束(default) + + - 检查约束(check) + + > 说明:在MySQL数据库中,检查约束并不起作用。 + +#### 数据一致性 + +1. 事务:一系列对数据库进行读/写的操作,这些操作要么全都成功,要么全都失败。 + +2. 事务的ACID特性 + - 原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行 + - 一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态 + - 隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行 + - 持久性:已被提交的事务对数据库的修改应该永久保存在数据库中 + +3. MySQL中的事务操作 + + - 开启事务环境 + + ```SQL + start transaction + ``` + + 或 + + ```SQL + begin + ``` + + - 提交事务 + + ```SQL + commit + ``` + + - 回滚事务 + + ```SQL + rollback + ``` + +### 其他内容 + +大家应该能够想到,关于MySQL的知识肯定远远不止上面列出的这些,比如MySQL的性能优化、管理和维护MySQL的相关工具、MySQL数据的备份和恢复、监控MySQL、部署高可用架构等问题我们在这里都没有进行讨论。当然,这些内容也都是跟项目开发密切相关的,我们就留到后续的章节中再续点进行讲解。 + +### Python数据库编程 + +我们用如下所示的数据库来演示在Python中如何访问MySQL数据库。 + +```SQL +drop database if exists hrs; +create database hrs default charset utf8; + +use hrs; + +drop table if exists tb_emp; +drop table if exists tb_dept; + +create table tb_dept +( +dno int not null comment '编号', +dname varchar(10) not null comment '名称', +dloc varchar(20) not null comment '所在地', +primary key (dno) +); + +insert into tb_dept values + (10, '会计部', '北京'), + (20, '研发部', '成都'), + (30, '销售部', '重庆'), + (40, '运维部', '深圳'); + +create table tb_emp +( +eno int not null comment '员工编号', +ename varchar(20) not null comment '员工姓名', +job varchar(20) not null comment '员工职位', +mgr int comment '主管编号', +sal int not null comment '员工月薪', +comm int comment '每月补贴', +dno int comment '所在部门编号', +primary key (eno) +); + +alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno); + +insert into tb_emp values + (7800, '张三丰', '总裁', null, 9000, 1200, 20), + (2056, '乔峰', '分析师', 7800, 5000, 1500, 20), + (3088, '李莫愁', '设计师', 2056, 3500, 800, 20), + (3211, '张无忌', '程序员', 2056, 3200, null, 20), + (3233, '丘处机', '程序员', 2056, 3400, null, 20), + (3251, '张翠山', '程序员', 2056, 4000, null, 20), + (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10), + (5234, '郭靖', '出纳', 5566, 2000, null, 10), + (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30), + (1359, '胡一刀', '销售员', 3344, 1800, 200, 30), + (4466, '苗人凤', '销售员', 3344, 2500, null, 30), + (3244, '欧阳锋', '程序员', 3088, 3200, null, 20), + (3577, '杨过', '会计', 5566, 2200, null, 10), + (3588, '朱九真', '会计', 5566, 2500, null, 10); +``` + +在Python 3中,我们通常使用纯Python的三方库PyMySQL来访问MySQL数据库,它应该是目前Python操作MySQL数据库最好的选择。 + +1. 安装PyMySQL。 + + ```Shell + pip install pymysql + ``` + +2. 添加一个部门。 + + ```Python + import pymysql + + + def main(): + no = int(input('编号: ')) + name = input('名字: ') + loc = input('所在地: ') + # 1. 创建数据库连接对象 + con = pymysql.connect(host='localhost', port=3306, + database='hrs', charset='utf8', + user='root', password='123456') + try: + # 2. 通过连接对象获取游标 + with con.cursor() as cursor: + # 3. 通过游标执行SQL并获得执行结果 + result = cursor.execute( + 'insert into tb_dept values (%s, %s, %s)', + (no, name, loc) + ) + if result == 1: + print('添加成功!') + # 4. 操作成功提交事务 + con.commit() + finally: + # 5. 关闭连接释放资源 + con.close() + + + if __name__ == '__main__': + main() + ``` + +3. 删除一个部门。 + + ```Python + import pymysql + + + def main(): + no = int(input('编号: ')) + con = pymysql.connect(host='localhost', port=3306, + database='hrs', charset='utf8', + user='root', password='123456', + autocommit=True) + try: + with con.cursor() as cursor: + result = cursor.execute( + 'delete from tb_dept where dno=%s', + (no, ) + ) + if result == 1: + print('删除成功!') + finally: + con.close() + + + if __name__ == '__main__': + main() + ``` + + > 说明:如果不希望每次SQL操作之后手动提交或回滚事务,可以像上面的代码那样,在创建连接的时候多加一个名为`autocommit`的参数并将它的值设置为`True`,表示每次执行SQL之后自动提交。如果程序中不需要使用事务环境也不希望手动的提交或回滚就可以这么做。 + +4. 更新一个部门。 + + ```Python + import pymysql + + + def main(): + no = int(input('编号: ')) + name = input('名字: ') + loc = input('所在地: ') + con = pymysql.connect(host='localhost', port=3306, + database='hrs', charset='utf8', + user='root', password='123456', + autocommit=True) + try: + with con.cursor() as cursor: + result = cursor.execute( + 'update tb_dept set dname=%s, dloc=%s where dno=%s', + (name, loc, no) + ) + if result == 1: + print('更新成功!') + finally: + con.close() + + + if __name__ == '__main__': + main() + ``` + +5. 查询所有部门。 + + ```Python + import pymysql + from pymysql.cursors import DictCursor + + + def main(): + con = pymysql.connect(host='localhost', port=3306, + database='hrs', charset='utf8', + user='root', password='123456') + try: + with con.cursor(cursor=DictCursor) as cursor: + cursor.execute('select dno as no, dname as name, dloc as loc from tb_dept') + results = cursor.fetchall() + print(results) + print('编号\t名称\t\t所在地') + for dept in results: + print(dept['no'], end='\t') + print(dept['name'], end='\t') + print(dept['loc']) + finally: + con.close() + + + if __name__ == '__main__': + main() + ``` + +6. 分页查询员工信息。 + + ```Python + import pymysql + from pymysql.cursors import DictCursor + + + class Emp(object): + + def __init__(self, no, name, job, sal): + self.no = no + self.name = name + self.job = job + self.sal = sal + + def __str__(self): + return f'\n编号:{self.no}\n姓名:{self.name}\n职位:{self.job}\n月薪:{self.sal}\n' + + + def main(): + page = int(input('页码: ')) + size = int(input('大小: ')) + con = pymysql.connect(host='localhost', port=3306, + database='hrs', charset='utf8', + user='root', password='123456') + try: + with con.cursor() as cursor: + cursor.execute( + 'select eno as no, ename as name, job, sal from tb_emp limit %s,%s', + ((page - 1) * size, size) + ) + for emp_tuple in cursor.fetchall(): + emp = Emp(*emp_tuple) + print(emp) + finally: + con.close() + + + if __name__ == '__main__': + main() + ``` diff --git a/Day36-40/NoSQL入门.md b/Day36-40/39-40.NoSQL入门.md similarity index 98% rename from Day36-40/NoSQL入门.md rename to Day36-40/39-40.NoSQL入门.md index 3a42f07..c5fbe4c 100644 --- a/Day36-40/NoSQL入门.md +++ b/Day36-40/39-40.NoSQL入门.md @@ -345,8 +345,6 @@ mongo --host 172.18.61.250 MongoDB shell version v3.6.5 connecting to: mongodb://172.18.61.250:27017/ -... -> ``` 1. 查看、创建和删除数据库。 @@ -500,7 +498,7 @@ python3 ```Python >>> from pymongo import MongoClient ->>> client = MongoClient('mongodb://120.77.222.217:27017') +>>> client = MongoClient('mongodb://127.0.0.1:27017') >>> db = client.school >>> for student in db.students.find(): ... print('学号:', student['stuid']) @@ -544,4 +542,4 @@ python3 >>> ``` -关于PyMongo更多的知识可以通过它的[官方文档](https://api.mongodb.com/python/current/tutorial.html)进行了解。 \ No newline at end of file +关于PyMongo更多的知识可以通过它的[官方文档](https://api.mongodb.com/python/current/tutorial.html)进行了解,也可以使用[MongoEngine]()这样的库来简化Python程序对MongoDB的操作,除此之外,还有以异步I/O方式访问MongoDB的三方库[motor]()都是不错的选择。 \ No newline at end of file diff --git a/Day36-40/code/HRS_create_and_init.sql b/Day36-40/code/HRS_create_and_init.sql index 0e52190..b8bc864 100644 --- a/Day36-40/code/HRS_create_and_init.sql +++ b/Day36-40/code/HRS_create_and_init.sql @@ -51,15 +51,15 @@ insert into tb_emp values (3588, '朱九真', '会计', 5566, 2500, null, 10); --- 查询薪资最高的员工姓名和工资 +-- 查询月薪最高的员工姓名和工资 --- 查询员工的姓名和年薪((月薪+补贴)*12) +-- 查询员工的姓名和年薪((月薪+补贴)*13) -- 查询有员工的部门的编号和人数 -- 查询所有部门的名称和人数 --- 查询薪资最高的员工(Boss除外)的姓名和工资 +-- 查询月薪最高的员工(Boss除外)的姓名和工资 -- 查询薪水超过平均薪水的员工的姓名和工资 @@ -69,24 +69,4 @@ insert into tb_emp values -- 查询主管的姓名和职位 --- 查询薪资排名4~6名的员工姓名和工资 - --- use hrs; - --- drop procedure if exists sp_avg_sal_by_dept; - - --- create procedure sp_avg_sal_by_dept(dno integer, out avg_sal float) --- begin --- select avg(sal) into avg_sal from tb_emp where dno=dno; --- end; - - - - --- call sp_avg_sal_by_dept(10, @avgSal); - --- select @avgSal; - - - +-- 查询月薪排名4~6名的员工姓名和工资 diff --git a/Day36-40/code/bank_create_and_init.sql b/Day36-40/code/bank_create_and_init.sql deleted file mode 100644 index 1495a35..0000000 --- a/Day36-40/code/bank_create_and_init.sql +++ /dev/null @@ -1,15 +0,0 @@ -drop database if exists bank; - -create database bank default charset utf8; - -use bank; - -create table tb_account -( -accid char(8) primary key, -accowner varchar(20) not null, -accbalance float not null default 0 -); - -insert into tb_account values (11223344, '王大锤', 1000); -insert into tb_account values (22334455, '李小龙', 1000); \ No newline at end of file diff --git a/Day36-40/code/booksys_create_and_init.sql b/Day36-40/code/booksys_create_and_init.sql deleted file mode 100644 index 8a99a58..0000000 --- a/Day36-40/code/booksys_create_and_init.sql +++ /dev/null @@ -1,46 +0,0 @@ -drop database if exists booksys; - -create database booksys default charset utf8; - -use booksys; - -create table tb_book -( -bookid integer not null, -isbn char(13) not null, -bname varchar(100) not null, -price decimal(8,2) not null, -author varchar(100) not null, -publisher varchar(50) not null, -pubdate date, -intro varchar(500), -lended bit default 0, -counter integer default 0, -primary key (bookid) -); - -create table tb_reader -( -readerid integer not null, -rname varchar(20) not null, -gender bit not null, -tel char(11) not null, -birth date, -regdate date not null, -available bit default 1, -primary key (readerid) -); - -create table tb_record -( -recordid integer not null auto_increment, -bid integer not null, -rid integer not null, -lenddate datetime not null, -backdate datetime, -pulishment decimal(6,2), -primary key (recordid) -); - -alter table tb_record add constraint fk_record_bid foreign key (bid) references tb_book (bookid) on update cascade; -alter table tb_record add constraint fk_record_rid foreign key (rid) references tb_reader (readerid) on update cascade; \ No newline at end of file diff --git a/Day36-40/code/demo_create_and_init.sql b/Day36-40/code/demo_create_and_init.sql deleted file mode 100644 index 9de58e6..0000000 --- a/Day36-40/code/demo_create_and_init.sql +++ /dev/null @@ -1,27 +0,0 @@ -drop database if exists demo; -create database demo default charset utf8 collate utf8_general_ci; - -use demo; - -create table tb_teacher -( -teacherid int not null auto_increment, -tname varchar(20) not null, -tjob varchar(20) not null, -tintro varchar(1023) default '', -tmotto varchar(255) default '', -primary key (teacherid) -); - -insert into tb_teacher (tname, tjob, tintro, tmotto) values -('骆昊', 'Python教学主管', '10年以上软硬件产品和系统设计、研发、架构和管理经验,2003年毕业于四川大学,四川大学Java技术俱乐部创始人,四川省优秀大学毕业生,在四川省网络通信技术重点实验室工作期间,参与了2项国家自然科学基金项目、1项中国科学院中长期研究项目和多项四川省科技攻关项目,在国际会议和国内顶级期刊上发表多篇论文(1篇被SCI收录,3篇被EI收录),大规模网络性能测量系统DMC-TS的设计者和开发者,perf-TTCN语言的发明者。国内最大程序员社区CSDN的博客专家,在Github上参与和维护了多个高质量开源项目,精通C/C++、Java、Python、R、Swift、JavaScript等编程语言,擅长OOAD、系统架构、算法设计、协议分析和网络测量,主持和参与过电子政务系统、KPI考核系统、P2P借贷平台等产品的研发,一直践行“用知识创造快乐”的教学理念,善于总结,乐于分享。', '教育是让受教育者体会用知识创造快乐的过程'), -('肖世荣', 'Python高级讲师', '10年以上互联网和移动互联网产品设计、研发、技术架构和项目管理经验,曾在中国移动、symbio、ajinga.com、万达信息等公司担任架构师、项目经理、技术总监等职务,长期为苹果、保时捷、耐克、沃尔玛等国际客户以及国内的政府机构提供信息化服务,主导的项目曾获得“世界科技先锋”称号,个人作品“许愿吧”曾在腾讯应用市场生活类App排名前3,拥有百万级用户群体,运营的公众号“卵石坊”是国内知名的智能穿戴设备平台。精通Python、C++、Java、Ruby、JavaScript等开发语言,主导和参与了20多个企业级项目(含国家级重大项目和互联网创新项目),涉及的领域包括政务、社交、电信、卫生和金融,有极为丰富的项目实战经验。授课深入浅出、条理清晰,善于调动学员的学习热情并帮助学员理清思路和方法。', '世上没有绝望的处境,只有对处境绝望的人'), -('余婷', 'Python高级讲师', '5年以上移动互联网项目开发经验和教学经验,曾担任上市游戏公司高级软件研发工程师和移动端(iOS)技术负责人,参了多个企业级应用和游戏类应用的移动端开发和后台服务器开发,拥有丰富的开发经验和项目管理经验,以个人开发者和协作开发者的身份在苹果的AppStore上发布过多款App。精通Python、C、Objective-C、Swift等开发语言,熟悉iOS原生App开发、RESTful接口设计以及基于Cocos2d-x的游戏开发。授课条理清晰、细致入微,性格活泼开朗、有较强的亲和力,教学过程注重理论和实践的结合,在学员中有良好的口碑。', '每天叫醒你的不是闹钟而是梦想'), -('王海飞', 'Python高级讲师', '5年以上Python开发经验,先后参与了O2O商城、CRM系统、CMS平台、ERP系统等项目的设计与研发,曾在全国最大最专业的汽车领域相关服务网站担任Python高级研发工程师、项目经理等职务,擅长基于Python、Java、PHP等开发语言的企业级应用开发,全程参与了多个企业级应用从需求到上线所涉及的各种工作,精通Django、Flask等框架,熟悉基于微服务的企业级项目开发,拥有丰富的项目实战经验。善于用浅显易懂的方式在课堂上传授知识点,在授课过程中经常穿插企业开发的实际案例并分析其中的重点和难点,通过这种互动性极强的教学模式帮助学员找到解决问题的办法并提升学员的综合素质。', '不要给我说什么底层原理、框架内核!老夫敲代码就是一把梭!复制!黏贴!拿起键盘就是干!'), -('何翰宇', 'JavaEE高级讲师', '5年以上JavaEE项目开发和教学经验,参与过人力资源管理系统、电子教育产品在线商城、平安好医生App、平安好车主App等项目的设计与研发。擅长Java语言、面向对象编程、JavaEE框架、Web前端开发、数据库编程和Android应用开发,对新技术有着浓厚的兴趣和钻研精神,对微服务架构、虚拟化技术、区块链、边缘计算等领域都有自己独到的认识和见解,有丰富的项目经验和教学经验。授课时注重学习方法的引导,提倡以项目为导向的实战型教学,同时也注重基础知识的掌握和底层原理的理解,课堂氛围轻松幽默,能够把枯燥乏味的知识变成生动有趣的案例,帮助学员更快更好的掌握技术的要领,从事JavaEE教学工作以来,获得了学生潮水般的好评。', '每天撸代码,生活乐无边!'), -('吴明富', 'HTML5教学主管', '毕业于西南交通大学,高级软件研发工程师,10年以上的开发和培训经验。曾就职于华为赛门铁克科技有限公司,负责公司内部ERP系统的研发,参与和主导过多个大型门户网站、电子商务网站、电子政务系统以及多个企业级Web项目的设计和开发,同时负责过多门企业内训课程的研发与讲授,有着非常丰富的JavaEE项目开发经验和Web前端开发经验,精通C/C++、Java、PHP、JavaScript等开发语言,能够使用多种技术进行全栈开发。授课经验丰富、思路清晰、富有激情,对知识点的讲解由浅入深、深入浅出,能够通过实际开发的场景引导学员思考业务并理解相关技术,善于将多年的项目实战经验和企业内训经验融入课堂,通过理论联系实际的方式帮助学员迅速提升就业能力。', '人生的道路在态度的岔口一分为二'); - - - - - diff --git a/Day36-40/code/fangtx_create.sql b/Day36-40/code/fangtx_create.sql deleted file mode 100644 index 28cf714..0000000 --- a/Day36-40/code/fangtx_create.sql +++ /dev/null @@ -1,253 +0,0 @@ -drop database if exists fangtx; - -create database fangtx default charset utf8 collate utf8_bin; - -use fangtx; - -/* 创建用户表 */ -create table `tb_user` -( - `userid` int auto_increment comment '编号', - `username` varchar(20) not null comment '用户名', - `password` char(32) not null comment '用户口令', - `realname` varchar(20) not null comment '真实姓名', - `sex` bool default 1 comment '性别', - `tel` varchar(20) not null comment '手机号', - `email` varchar(255) default '' comment '邮箱', - `regdate` datetime default now() comment '注册日期', - `point` int default 0 comment '积分', - `lastvisit` datetime default now() comment '最后访问时间', - `is_authenticated` bit default 0 comment '是否认证', - primary key (`userid`) -); - -/* 创建地区表 */ -create table `tb_district` -( - `distid` int not null comment '编号', - `pid` int comment '父级行政单位', - `name` varchar(255) not null comment '名称', - `ishot` bool default 0 comment '是否为热门城市', - `intro` varchar(255) default '' comment '介绍', - primary key (distid) -); - -/* 创建经理人表 */ -create table `tb_agent` -( - `agentid` int not null auto_increment comment '编号', - `name` varchar(255) not null comment '姓名', - `tel` varchar(20) not null comment '电话', - `servstar` int not null default 0 comment '满意度星级', - `realstar` int not null default 0 comment '真实度星级', - `profstar` int not null default 0 comment '专业度星级', - `certificated` bool not null default 0 comment '是否持有专业认证', - primary key (`agentid`) -); - -/* 创建用户登录日志表 */ -create table `tb_login_log` -( - `logid` bigint auto_increment comment '编号', - `userid` int not null comment '用户', - `ipaddr` varchar(255) not null comment 'IP地址', - `logdate` datetime default now() comment '登录时间日期', - `devcode` varchar(255) default '' comment '设备代码', - primary key (`logid`) -); - -/* 创建楼盘表 */ -create table `tb_estate` -( - `estateid` int not null auto_increment comment '编号', - `distid` int not null comment '所在三级行政区域', - `name` varchar(255) not null comment '名称', - `hot` int default 0 comment '热度', - `intro` varchar(511) default '' comment '介绍', - primary key (`estateid`) -); - -/* 创建经理人楼盘中间表 */ -create table `tb_agent_estate` -( - `agent_estate_id` int not null auto_increment comment '编号', - `agentid` int not null comment '经理人', - `estateid` int not null comment '楼盘', - primary key (`agent_estate_id`) -); - -/* 创建户型表 */ -create table `tb_house_type` -( - `typeid` int comment '编号', - `name` varchar(255) not null comment '名称', - primary key (`typeid`) -); - -/* 创建房源信息表 */ -create table `tb_house_info` -( - `houseid` int not null auto_increment comment '编号', - `title` varchar(50) not null comment '标题', - `area` int not null comment '面积', - `floor` int not null comment '楼层', - `totalfloor` int not null comment '总楼层', - `direction` varchar(10) not null comment '朝向', - `price` int not null comment '价格', - `priceunit` varchar(10) not null comment '价格单位', - `detail` varchar(511) default '' comment '详情', - `mainphoto` varchar(255) not null comment '主图', - `pubdate` date not null comment '发布日期', - `street` varchar(255) not null comment '街道', - `hassubway` bool default 0 comment '是否有地铁', - `isshared` bool default 0 comment '是否支持合租', - `hasagentfees` bool default 0 comment '是否有中介费', - `typeid` int not null comment '户型', - `userid` int not null comment '发布用户', - `distid2` int not null comment '所在二级行政区域', - `distid3` int not null comment '所在三级行政区域', - `estateid` int comment '楼盘', - `agentid` int comment '经理人', - primary key (`houseid`) -); - -/* 创建房源照片表 */ -create table `tb_house_photo` -( - `photoid` int not null auto_increment comment '编号', - `houseid` int not null comment '房源', - `path` varchar(255) not null comment '资源路径', - primary key (`photoid`) -); - -/* 创建标签表 */ -create table `tb_tag` -( - `tagid` int auto_increment comment '编号', - `content` varchar(20) not null comment '内容', - primary key (`tagid`) -); - -/* 创建房源标签中间表 */ -create table `tb_house_tag` -( - `house_tag_id` int auto_increment comment '编号', - `houseid` int not null comment '房源', - `tagid` int not null comment '标签', - primary key (`house_tag_id`) -); - - -/* 创建用户浏览历史记录表 */ -create table `tb_record` -( - `recordid` bigint auto_increment comment '编号', - `userid` int not null comment '用户', - `houseid` int not null comment '房源', - `recorddate` datetime not null comment '浏览时间日期', - primary key (`recordid`) -); - -/* 创建用户令牌表 */ -create table `tb_user_token` -( - `tokenid` int auto_increment comment '编号', - `token` char(32) not null comment '令牌', - `userid` int not null comment '用户', - primary key (`tokenid`) -); - -/* 创建角色表 */ -create table `tb_role` -( - `roleid` int auto_increment comment '编号', - `rolename` varchar(255) not null comment '角色名', - primary key (`roleid`) -); - -/* 创建权限表 */ -create table `tb_privilege` -( - `privid` int auto_increment comment '编号', - `method` varchar(15) not null comment '请求方法', - `url` varchar(1024) not null comment '资源的URL', - PRIMARY KEY (`privid`) -); - -/* 创建用户角色中间表 */ -create table `tb_user_role` -( - `urid` int auto_increment comment '编号', - `userid` int not null comment '用户', - `roleid` int not null comment '角色', - primary key (`urid`) -); - -/* 创建角色权限中间表 */ -create table `tb_role_privilege` -( - `rpid` int auto_increment comment '编号', - `roleid` int not null comment '角色', - `privid` int not null comment '权限', - primary key (`rpid`) -); - -create unique index `uni_idx_agent_estate` on `tb_agent_estate` (`agentid`, `estateid`); - -create unique index `uni_idx_record` on `tb_record` (`userid`, `houseid`); - -create unique index `uni_idx_userid` on `tb_user_token` (`userid`); - -create unique index `uni_idx_username` on `tb_user` (`username`); - -create unique index `uni_idx_tel` on `tb_user` (`tel`); - -create unique index `uni_idx_email` on `tb_user` (`email`); - -create unique index `uni_idx_house_tag` on `tb_house_tag` (`houseid`, `tagid`); - -alter table `tb_agent_estate` add constraint `fk_agent_estate_agentid` foreign key (`agentid`) references `tb_agent` (`agentid`); - -alter table `tb_agent_estate` add constraint `fk_agent_estate_estateid` foreign key (`estateid`) references `tb_estate` (`estateid`); - -alter table `tb_district` add constraint `fk_district_pid` foreign key (`pid`) references `tb_district` (`distid`); - -alter table `tb_estate` add constraint `fk_estate_distid` foreign key (`distid`) references `tb_district` (`distid`); - -alter table `tb_house_info` add constraint `fk_house_info_agentid` foreign key (`agentid`) references tb_agent (`agentid`); - -alter table `tb_house_info` add constraint `fk_house_info_distid2` foreign key (`distid2`) references tb_district (`distid`); - -alter table `tb_house_info` add constraint `fk_house_info_distid3` foreign key (`distid3`) references tb_district (`distid`); - -alter table `tb_house_info` add constraint `fk_house_info_estateid` foreign key (`estateid`) references tb_estate (`estateid`); - -alter table `tb_house_info` add constraint `fk_house_info_typeid` foreign key (`typeid`) references tb_house_type (`typeid`); - -alter table `tb_house_info` add constraint `fk_house_info_userid` foreign key (`userid`) references tb_user (`userid`); - -alter table `tb_house_photo` add constraint `fk_house_photo_houseid` foreign key (`houseid`) references `tb_house_info` (`houseid`); - -alter table `tb_house_tag` add constraint `fk_house_tag_houseid` foreign key (`houseid`) references `tb_house_info` (`houseid`); - -alter table `tb_house_tag` add constraint `fk_house_tag_tagid` foreign key (`tagid`) references `tb_tag` (`tagid`); - -alter table `tb_login_log` add constraint `fk_login_log_userid` foreign key (`userid`) references `tb_user` (`userid`); - -alter table `tb_record` add constraint `fk_record_houseid` foreign key (`houseid`) references `tb_house_info` (`houseid`); - -alter table `tb_record` add constraint `fk_record_userid` foreign key (`userid`) references `tb_user` (`userid`); - -alter table `tb_user_token` add constraint `fk_token_userid` foreign key (`userid`) references `tb_user` (`userid`); - -alter table `tb_user_role` add constraint `uni_user_role` unique (`userid`, `roleid`); - -alter table `tb_role_privilege` add constraint `uni_role_priv` unique (`roleid`, `privid`); - -alter table `tb_role_privilege` add constraint `fk_role_privilege_privid` foreign key (`privid`) references `tb_privilege` (`privid`); - -alter table `tb_role_privilege` add constraint `fk_role_privilege_roleid` foreign key (`roleid`) references `tb_role` (`roleid`); - -alter table `tb_user_role` add constraint `fk_user_role_roleid` foreign key (`roleid`) references `tb_role` (`roleid`); - -alter table `tb_user_role` add constraint `fk_user_role_userid` foreign key (`userid`) references `tb_user` (`userid`); diff --git a/Day36-40/code/fangtx_init.sql b/Day36-40/code/fangtx_init.sql deleted file mode 100644 index b597f2d..0000000 --- a/Day36-40/code/fangtx_init.sql +++ /dev/null @@ -1,3358 +0,0 @@ -use fangtx; - --- 插入地区数据 -insert into `tb_district` (`distid`, `name`, `pid`) values -('110000', '北京市', null), -('110100', '北京市', '110000'), -('110101', '东城区', '110100'), -('110102', '西城区', '110100'), -('110105', '朝阳区', '110100'), -('110106', '丰台区', '110100'), -('110107', '石景山区', '110100'), -('110108', '海淀区', '110100'), -('110109', '门头沟区', '110100'), -('110111', '房山区', '110100'), -('110112', '通州区', '110100'), -('110113', '顺义区', '110100'), -('110114', '昌平区', '110100'), -('110115', '大兴区', '110100'), -('110116', '怀柔区', '110100'), -('110117', '平谷区', '110100'), -('110118', '密云区', '110100'), -('110119', '延庆区', '110100'), -('120000', '天津市', null), -('120100', '天津市', '120000'), -('120101', '和平区', '120100'), -('120102', '河东区', '120100'), -('120103', '河西区', '120100'), -('120104', '南开区', '120100'), -('120105', '河北区', '120100'), -('120106', '红桥区', '120100'), -('120110', '东丽区', '120100'), -('120111', '西青区', '120100'), -('120112', '津南区', '120100'), -('120113', '北辰区', '120100'), -('120114', '武清区', '120100'), -('120115', '宝坻区', '120100'), -('120116', '滨海新区', '120100'), -('120117', '宁河区', '120100'), -('120118', '静海区', '120100'), -('120119', '蓟州区', '120100'), -('130000', '河北省', null), -('130100', '石家庄市', '130000'), -('130102', '长安区', '130100'), -('130104', '桥西区', '130100'), -('130105', '新华区', '130100'), -('130107', '井陉矿区', '130100'), -('130108', '裕华区', '130100'), -('130109', '藁城区', '130100'), -('130110', '鹿泉区', '130100'), -('130111', '栾城区', '130100'), -('130121', '井陉县', '130100'), -('130123', '正定县', '130100'), -('130125', '行唐县', '130100'), -('130126', '灵寿县', '130100'), -('130127', '高邑县', '130100'), -('130128', '深泽县', '130100'), -('130129', '赞皇县', '130100'), -('130130', '无极县', '130100'), -('130131', '平山县', '130100'), -('130132', '元氏县', '130100'), -('130133', '赵县', '130100'), -('130183', '晋州市', '130100'), -('130184', '新乐市', '130100'), -('130200', '唐山市', '130000'), -('130202', '路南区', '130200'), -('130203', '路北区', '130200'), -('130204', '古冶区', '130200'), -('130205', '开平区', '130200'), -('130207', '丰南区', '130200'), -('130208', '丰润区', '130200'), -('130209', '曹妃甸区', '130200'), -('130223', '滦县', '130200'), -('130224', '滦南县', '130200'), -('130225', '乐亭县', '130200'), -('130227', '迁西县', '130200'), -('130229', '玉田县', '130200'), -('130281', '遵化市', '130200'), -('130283', '迁安市', '130200'), -('130300', '秦皇岛市', '130000'), -('130302', '海港区', '130300'), -('130303', '山海关区', '130300'), -('130304', '北戴河区', '130300'), -('130306', '抚宁区', '130300'), -('130321', '青龙满族自治县', '130300'), -('130322', '昌黎县', '130300'), -('130324', '卢龙县', '130300'), -('130400', '邯郸市', '130000'), -('130402', '邯山区', '130400'), -('130403', '丛台区', '130400'), -('130404', '复兴区', '130400'), -('130406', '峰峰矿区', '130400'), -('130421', '邯郸县', '130400'), -('130423', '临漳县', '130400'), -('130424', '成安县', '130400'), -('130425', '大名县', '130400'), -('130426', '涉县', '130400'), -('130427', '磁县', '130400'), -('130428', '肥乡县', '130400'), -('130429', '永年县', '130400'), -('130430', '邱县', '130400'), -('130431', '鸡泽县', '130400'), -('130432', '广平县', '130400'), -('130433', '馆陶县', '130400'), -('130434', '魏县', '130400'), -('130435', '曲周县', '130400'), -('130481', '武安市', '130400'), -('130500', '邢台市', '130000'), -('130502', '桥东区', '130500'), -('130503', '桥西区', '130500'), -('130521', '邢台县', '130500'), -('130522', '临城县', '130500'), -('130523', '内丘县', '130500'), -('130524', '柏乡县', '130500'), -('130525', '隆尧县', '130500'), -('130526', '任县', '130500'), -('130527', '南和县', '130500'), -('130528', '宁晋县', '130500'), -('130529', '巨鹿县', '130500'), -('130530', '新河县', '130500'), -('130531', '广宗县', '130500'), -('130532', '平乡县', '130500'), -('130533', '威县', '130500'), -('130534', '清河县', '130500'), -('130535', '临西县', '130500'), -('130581', '南宫市', '130500'), -('130582', '沙河市', '130500'), -('130600', '保定市', '130000'), -('130602', '竞秀区', '130600'), -('130606', '莲池区', '130600'), -('130607', '满城区', '130600'), -('130608', '清苑区', '130600'), -('130609', '徐水区', '130600'), -('130623', '涞水县', '130600'), -('130624', '阜平县', '130600'), -('130626', '定兴县', '130600'), -('130627', '唐县', '130600'), -('130628', '高阳县', '130600'), -('130629', '容城县', '130600'), -('130630', '涞源县', '130600'), -('130631', '望都县', '130600'), -('130632', '安新县', '130600'), -('130633', '易县', '130600'), -('130634', '曲阳县', '130600'), -('130635', '蠡县', '130600'), -('130636', '顺平县', '130600'), -('130637', '博野县', '130600'), -('130638', '雄县', '130600'), -('130681', '涿州市', '130600'), -('130683', '安国市', '130600'), -('130684', '高碑店市', '130600'), -('130700', '张家口市', '130000'), -('130702', '桥东区', '130700'), -('130703', '桥西区', '130700'), -('130705', '宣化区', '130700'), -('130706', '下花园区', '130700'), -('130708', '万全区', '130700'), -('130709', '崇礼区', '130700'), -('130722', '张北县', '130700'), -('130723', '康保县', '130700'), -('130724', '沽源县', '130700'), -('130725', '尚义县', '130700'), -('130726', '蔚县', '130700'), -('130727', '阳原县', '130700'), -('130728', '怀安县', '130700'), -('130730', '怀来县', '130700'), -('130731', '涿鹿县', '130700'), -('130732', '赤城县', '130700'), -('130800', '承德市', '130000'), -('130802', '双桥区', '130800'), -('130803', '双滦区', '130800'), -('130804', '鹰手营子矿区', '130800'), -('130821', '承德县', '130800'), -('130822', '兴隆县', '130800'), -('130823', '平泉县', '130800'), -('130824', '滦平县', '130800'), -('130825', '隆化县', '130800'), -('130826', '丰宁满族自治县', '130800'), -('130827', '宽城满族自治县', '130800'), -('130828', '围场满族蒙古族自治县', '130800'), -('130900', '沧州市', '130000'), -('130902', '新华区', '130900'), -('130903', '运河区', '130900'), -('130921', '沧县', '130900'), -('130922', '青县', '130900'), -('130923', '东光县', '130900'), -('130924', '海兴县', '130900'), -('130925', '盐山县', '130900'), -('130926', '肃宁县', '130900'), -('130927', '南皮县', '130900'), -('130928', '吴桥县', '130900'), -('130929', '献县', '130900'), -('130930', '孟村回族自治县', '130900'), -('130981', '泊头市', '130900'), -('130982', '任丘市', '130900'), -('130983', '黄骅市', '130900'), -('130984', '河间市', '130900'), -('131000', '廊坊市', '130000'), -('131002', '安次区', '131000'), -('131003', '广阳区', '131000'), -('131022', '固安县', '131000'), -('131023', '永清县', '131000'), -('131024', '香河县', '131000'), -('131025', '大城县', '131000'), -('131026', '文安县', '131000'), -('131028', '大厂回族自治县', '131000'), -('131081', '霸州市', '131000'), -('131082', '三河市', '131000'), -('131100', '衡水市', '130000'), -('131102', '桃城区', '131100'), -('131103', '冀州区', '131100'), -('131121', '枣强县', '131100'), -('131122', '武邑县', '131100'), -('131123', '武强县', '131100'), -('131124', '饶阳县', '131100'), -('131125', '安平县', '131100'), -('131126', '故城县', '131100'), -('131127', '景县', '131100'), -('131128', '阜城县', '131100'), -('131182', '深州市', '131100'), -('139000', '省直辖县级行政区划', '130000'), -('139001', '定州市', '139000'), -('139002', '辛集市', '139000'), -('140000', '山西省', null), -('140100', '太原市', '140000'), -('140105', '小店区', '140100'), -('140106', '迎泽区', '140100'), -('140107', '杏花岭区', '140100'), -('140108', '尖草坪区', '140100'), -('140109', '万柏林区', '140100'), -('140110', '晋源区', '140100'), -('140121', '清徐县', '140100'), -('140122', '阳曲县', '140100'), -('140123', '娄烦县', '140100'), -('140181', '古交市', '140100'), -('140200', '大同市', '140000'), -('140202', '城区', '140200'), -('140203', '矿区', '140200'), -('140211', '南郊区', '140200'), -('140212', '新荣区', '140200'), -('140221', '阳高县', '140200'), -('140222', '天镇县', '140200'), -('140223', '广灵县', '140200'), -('140224', '灵丘县', '140200'), -('140225', '浑源县', '140200'), -('140226', '左云县', '140200'), -('140227', '大同县', '140200'), -('140300', '阳泉市', '140000'), -('140302', '城区', '140300'), -('140303', '矿区', '140300'), -('140311', '郊区', '140300'), -('140321', '平定县', '140300'), -('140322', '盂县', '140300'), -('140400', '长治市', '140000'), -('140402', '城区', '140400'), -('140411', '郊区', '140400'), -('140421', '长治县', '140400'), -('140423', '襄垣县', '140400'), -('140424', '屯留县', '140400'), -('140425', '平顺县', '140400'), -('140426', '黎城县', '140400'), -('140427', '壶关县', '140400'), -('140428', '长子县', '140400'), -('140429', '武乡县', '140400'), -('140430', '沁县', '140400'), -('140431', '沁源县', '140400'), -('140481', '潞城市', '140400'), -('140500', '晋城市', '140000'), -('140502', '城区', '140500'), -('140521', '沁水县', '140500'), -('140522', '阳城县', '140500'), -('140524', '陵川县', '140500'), -('140525', '泽州县', '140500'), -('140581', '高平市', '140500'), -('140600', '朔州市', '140000'), -('140602', '朔城区', '140600'), -('140603', '平鲁区', '140600'), -('140621', '山阴县', '140600'), -('140622', '应县', '140600'), -('140623', '右玉县', '140600'), -('140624', '怀仁县', '140600'), -('140700', '晋中市', '140000'), -('140702', '榆次区', '140700'), -('140721', '榆社县', '140700'), -('140722', '左权县', '140700'), -('140723', '和顺县', '140700'), -('140724', '昔阳县', '140700'), -('140725', '寿阳县', '140700'), -('140726', '太谷县', '140700'), -('140727', '祁县', '140700'), -('140728', '平遥县', '140700'), -('140729', '灵石县', '140700'), -('140781', '介休市', '140700'), -('140800', '运城市', '140000'), -('140802', '盐湖区', '140800'), -('140821', '临猗县', '140800'), -('140822', '万荣县', '140800'), -('140823', '闻喜县', '140800'), -('140824', '稷山县', '140800'), -('140825', '新绛县', '140800'), -('140826', '绛县', '140800'), -('140827', '垣曲县', '140800'), -('140828', '夏县', '140800'), -('140829', '平陆县', '140800'), -('140830', '芮城县', '140800'), -('140881', '永济市', '140800'), -('140882', '河津市', '140800'), -('140900', '忻州市', '140000'), -('140902', '忻府区', '140900'), -('140921', '定襄县', '140900'), -('140922', '五台县', '140900'), -('140923', '代县', '140900'), -('140924', '繁峙县', '140900'), -('140925', '宁武县', '140900'), -('140926', '静乐县', '140900'), -('140927', '神池县', '140900'), -('140928', '五寨县', '140900'), -('140929', '岢岚县', '140900'), -('140930', '河曲县', '140900'), -('140931', '保德县', '140900'), -('140932', '偏关县', '140900'), -('140981', '原平市', '140900'), -('141000', '临汾市', '140000'), -('141002', '尧都区', '141000'), -('141021', '曲沃县', '141000'), -('141022', '翼城县', '141000'), -('141023', '襄汾县', '141000'), -('141024', '洪洞县', '141000'), -('141025', '古县', '141000'), -('141026', '安泽县', '141000'), -('141027', '浮山县', '141000'), -('141028', '吉县', '141000'), -('141029', '乡宁县', '141000'), -('141030', '大宁县', '141000'), -('141031', '隰县', '141000'), -('141032', '永和县', '141000'), -('141033', '蒲县', '141000'), -('141034', '汾西县', '141000'), -('141081', '侯马市', '141000'), -('141082', '霍州市', '141000'), -('141100', '吕梁市', '140000'), -('141102', '离石区', '141100'), -('141121', '文水县', '141100'), -('141122', '交城县', '141100'), -('141123', '兴县', '141100'), -('141124', '临县', '141100'), -('141125', '柳林县', '141100'), -('141126', '石楼县', '141100'), -('141127', '岚县', '141100'), -('141128', '方山县', '141100'), -('141129', '中阳县', '141100'), -('141130', '交口县', '141100'), -('141181', '孝义市', '141100'), -('141182', '汾阳市', '141100'), -('150000', '内蒙古自治区', null), -('150100', '呼和浩特市', '150000'), -('150102', '新城区', '150100'), -('150103', '回民区', '150100'), -('150104', '玉泉区', '150100'), -('150105', '赛罕区', '150100'), -('150121', '土默特左旗', '150100'), -('150122', '托克托县', '150100'), -('150123', '和林格尔县', '150100'), -('150124', '清水河县', '150100'), -('150125', '武川县', '150100'), -('150200', '包头市', '150000'), -('150202', '东河区', '150200'), -('150203', '昆都仑区', '150200'), -('150204', '青山区', '150200'), -('150205', '石拐区', '150200'), -('150206', '白云鄂博矿区', '150200'), -('150207', '九原区', '150200'), -('150221', '土默特右旗', '150200'), -('150222', '固阳县', '150200'), -('150223', '达尔罕茂明安联合旗', '150200'), -('150300', '乌海市', '150000'), -('150302', '海勃湾区', '150300'), -('150303', '海南区', '150300'), -('150304', '乌达区', '150300'), -('150400', '赤峰市', '150000'), -('150402', '红山区', '150400'), -('150403', '元宝山区', '150400'), -('150404', '松山区', '150400'), -('150421', '阿鲁科尔沁旗', '150400'), -('150422', '巴林左旗', '150400'), -('150423', '巴林右旗', '150400'), -('150424', '林西县', '150400'), -('150425', '克什克腾旗', '150400'), -('150426', '翁牛特旗', '150400'), -('150428', '喀喇沁旗', '150400'), -('150429', '宁城县', '150400'), -('150430', '敖汉旗', '150400'), -('150500', '通辽市', '150000'), -('150502', '科尔沁区', '150500'), -('150521', '科尔沁左翼中旗', '150500'), -('150522', '科尔沁左翼后旗', '150500'), -('150523', '开鲁县', '150500'), -('150524', '库伦旗', '150500'), -('150525', '奈曼旗', '150500'), -('150526', '扎鲁特旗', '150500'), -('150581', '霍林郭勒市', '150500'), -('150600', '鄂尔多斯市', '150000'), -('150602', '东胜区', '150600'), -('150603', '康巴什区', '150600'), -('150621', '达拉特旗', '150600'), -('150622', '准格尔旗', '150600'), -('150623', '鄂托克前旗', '150600'), -('150624', '鄂托克旗', '150600'), -('150625', '杭锦旗', '150600'), -('150626', '乌审旗', '150600'), -('150627', '伊金霍洛旗', '150600'), -('150700', '呼伦贝尔市', '150000'), -('150702', '海拉尔区', '150700'), -('150703', '扎赉诺尔区', '150700'), -('150721', '阿荣旗', '150700'), -('150722', '莫力达瓦达斡尔族自治旗', '150700'), -('150723', '鄂伦春自治旗', '150700'), -('150724', '鄂温克族自治旗', '150700'), -('150725', '陈巴尔虎旗', '150700'), -('150726', '新巴尔虎左旗', '150700'), -('150727', '新巴尔虎右旗', '150700'), -('150781', '满洲里市', '150700'), -('150782', '牙克石市', '150700'), -('150783', '扎兰屯市', '150700'), -('150784', '额尔古纳市', '150700'), -('150785', '根河市', '150700'), -('150800', '巴彦淖尔市', '150000'), -('150802', '临河区', '150800'), -('150821', '五原县', '150800'), -('150822', '磴口县', '150800'), -('150823', '乌拉特前旗', '150800'), -('150824', '乌拉特中旗', '150800'), -('150825', '乌拉特后旗', '150800'), -('150826', '杭锦后旗', '150800'), -('150900', '乌兰察布市', '150000'), -('150902', '集宁区', '150900'), -('150921', '卓资县', '150900'), -('150922', '化德县', '150900'), -('150923', '商都县', '150900'), -('150924', '兴和县', '150900'), -('150925', '凉城县', '150900'), -('150926', '察哈尔右翼前旗', '150900'), -('150927', '察哈尔右翼中旗', '150900'), -('150928', '察哈尔右翼后旗', '150900'), -('150929', '四子王旗', '150900'), -('150981', '丰镇市', '150900'), -('152200', '兴安盟', '150000'), -('152201', '乌兰浩特市', '152200'), -('152202', '阿尔山市', '152200'), -('152221', '科尔沁右翼前旗', '152200'), -('152222', '科尔沁右翼中旗', '152200'), -('152223', '扎赉特旗', '152200'), -('152224', '突泉县', '152200'), -('152500', '锡林郭勒盟', '150000'), -('152501', '二连浩特市', '152500'), -('152502', '锡林浩特市', '152500'), -('152522', '阿巴嘎旗', '152500'), -('152523', '苏尼特左旗', '152500'), -('152524', '苏尼特右旗', '152500'), -('152525', '东乌珠穆沁旗', '152500'), -('152526', '西乌珠穆沁旗', '152500'), -('152527', '太仆寺旗', '152500'), -('152528', '镶黄旗', '152500'), -('152529', '正镶白旗', '152500'), -('152530', '正蓝旗', '152500'), -('152531', '多伦县', '152500'), -('152900', '阿拉善盟', '150000'), -('152921', '阿拉善左旗', '152900'), -('152922', '阿拉善右旗', '152900'), -('152923', '额济纳旗', '152900'), -('210000', '辽宁省', null), -('210100', '沈阳市', '210000'), -('210102', '和平区', '210100'), -('210103', '沈河区', '210100'), -('210104', '大东区', '210100'), -('210105', '皇姑区', '210100'), -('210106', '铁西区', '210100'), -('210111', '苏家屯区', '210100'), -('210112', '浑南区', '210100'), -('210113', '沈北新区', '210100'), -('210114', '于洪区', '210100'), -('210115', '辽中区', '210100'), -('210123', '康平县', '210100'), -('210124', '法库县', '210100'), -('210181', '新民市', '210100'), -('210200', '大连市', '210000'), -('210202', '中山区', '210200'), -('210203', '西岗区', '210200'), -('210204', '沙河口区', '210200'), -('210211', '甘井子区', '210200'), -('210212', '旅顺口区', '210200'), -('210213', '金州区', '210200'), -('210214', '普兰店区', '210200'), -('210224', '长海县', '210200'), -('210281', '瓦房店市', '210200'), -('210283', '庄河市', '210200'), -('210300', '鞍山市', '210000'), -('210302', '铁东区', '210300'), -('210303', '铁西区', '210300'), -('210304', '立山区', '210300'), -('210311', '千山区', '210300'), -('210321', '台安县', '210300'), -('210323', '岫岩满族自治县', '210300'), -('210381', '海城市', '210300'), -('210400', '抚顺市', '210000'), -('210402', '新抚区', '210400'), -('210403', '东洲区', '210400'), -('210404', '望花区', '210400'), -('210411', '顺城区', '210400'), -('210421', '抚顺县', '210400'), -('210422', '新宾满族自治县', '210400'), -('210423', '清原满族自治县', '210400'), -('210500', '本溪市', '210000'), -('210502', '平山区', '210500'), -('210503', '溪湖区', '210500'), -('210504', '明山区', '210500'), -('210505', '南芬区', '210500'), -('210521', '本溪满族自治县', '210500'), -('210522', '桓仁满族自治县', '210500'), -('210600', '丹东市', '210000'), -('210602', '元宝区', '210600'), -('210603', '振兴区', '210600'), -('210604', '振安区', '210600'), -('210624', '宽甸满族自治县', '210600'), -('210681', '东港市', '210600'), -('210682', '凤城市', '210600'), -('210700', '锦州市', '210000'), -('210702', '古塔区', '210700'), -('210703', '凌河区', '210700'), -('210711', '太和区', '210700'), -('210726', '黑山县', '210700'), -('210727', '义县', '210700'), -('210781', '凌海市', '210700'), -('210782', '北镇市', '210700'), -('210800', '营口市', '210000'), -('210802', '站前区', '210800'), -('210803', '西市区', '210800'), -('210804', '鲅鱼圈区', '210800'), -('210811', '老边区', '210800'), -('210881', '盖州市', '210800'), -('210882', '大石桥市', '210800'), -('210900', '阜新市', '210000'), -('210902', '海州区', '210900'), -('210903', '新邱区', '210900'), -('210904', '太平区', '210900'), -('210905', '清河门区', '210900'), -('210911', '细河区', '210900'), -('210921', '阜新蒙古族自治县', '210900'), -('210922', '彰武县', '210900'), -('211000', '辽阳市', '210000'), -('211002', '白塔区', '211000'), -('211003', '文圣区', '211000'), -('211004', '宏伟区', '211000'), -('211005', '弓长岭区', '211000'), -('211011', '太子河区', '211000'), -('211021', '辽阳县', '211000'), -('211081', '灯塔市', '211000'), -('211100', '盘锦市', '210000'), -('211102', '双台子区', '211100'), -('211103', '兴隆台区', '211100'), -('211104', '大洼区', '211100'), -('211122', '盘山县', '211100'), -('211200', '铁岭市', '210000'), -('211202', '银州区', '211200'), -('211204', '清河区', '211200'), -('211221', '铁岭县', '211200'), -('211223', '西丰县', '211200'), -('211224', '昌图县', '211200'), -('211281', '调兵山市', '211200'), -('211282', '开原市', '211200'), -('211300', '朝阳市', '210000'), -('211302', '双塔区', '211300'), -('211303', '龙城区', '211300'), -('211321', '朝阳县', '211300'), -('211322', '建平县', '211300'), -('211324', '喀喇沁左翼蒙古族自治县', '211300'), -('211381', '北票市', '211300'), -('211382', '凌源市', '211300'), -('211400', '葫芦岛市', '210000'), -('211402', '连山区', '211400'), -('211403', '龙港区', '211400'), -('211404', '南票区', '211400'), -('211421', '绥中县', '211400'), -('211422', '建昌县', '211400'), -('211481', '兴城市', '211400'), -('220000', '吉林省', null), -('220100', '长春市', '220000'), -('220102', '南关区', '220100'), -('220103', '宽城区', '220100'), -('220104', '朝阳区', '220100'), -('220105', '二道区', '220100'), -('220106', '绿园区', '220100'), -('220112', '双阳区', '220100'), -('220113', '九台区', '220100'), -('220122', '农安县', '220100'), -('220182', '榆树市', '220100'), -('220183', '德惠市', '220100'), -('220200', '吉林市', '220000'), -('220202', '昌邑区', '220200'), -('220203', '龙潭区', '220200'), -('220204', '船营区', '220200'), -('220211', '丰满区', '220200'), -('220221', '永吉县', '220200'), -('220281', '蛟河市', '220200'), -('220282', '桦甸市', '220200'), -('220283', '舒兰市', '220200'), -('220284', '磐石市', '220200'), -('220300', '四平市', '220000'), -('220302', '铁西区', '220300'), -('220303', '铁东区', '220300'), -('220322', '梨树县', '220300'), -('220323', '伊通满族自治县', '220300'), -('220381', '公主岭市', '220300'), -('220382', '双辽市', '220300'), -('220400', '辽源市', '220000'), -('220402', '龙山区', '220400'), -('220403', '西安区', '220400'), -('220421', '东丰县', '220400'), -('220422', '东辽县', '220400'), -('220500', '通化市', '220000'), -('220502', '东昌区', '220500'), -('220503', '二道江区', '220500'), -('220521', '通化县', '220500'), -('220523', '辉南县', '220500'), -('220524', '柳河县', '220500'), -('220581', '梅河口市', '220500'), -('220582', '集安市', '220500'), -('220600', '白山市', '220000'), -('220602', '浑江区', '220600'), -('220605', '江源区', '220600'), -('220621', '抚松县', '220600'), -('220622', '靖宇县', '220600'), -('220623', '长白朝鲜族自治县', '220600'), -('220681', '临江市', '220600'), -('220700', '松原市', '220000'), -('220702', '宁江区', '220700'), -('220721', '前郭尔罗斯蒙古族自治县', '220700'), -('220722', '长岭县', '220700'), -('220723', '乾安县', '220700'), -('220781', '扶余市', '220700'), -('220800', '白城市', '220000'), -('220802', '洮北区', '220800'), -('220821', '镇赉县', '220800'), -('220822', '通榆县', '220800'), -('220881', '洮南市', '220800'), -('220882', '大安市', '220800'), -('222400', '延边朝鲜族自治州', '220000'), -('222401', '延吉市', '222400'), -('222402', '图们市', '222400'), -('222403', '敦化市', '222400'), -('222404', '珲春市', '222400'), -('222405', '龙井市', '222400'), -('222406', '和龙市', '222400'), -('222424', '汪清县', '222400'), -('222426', '安图县', '222400'), -('230000', '黑龙江省', null), -('230100', '哈尔滨市', '230000'), -('230102', '道里区', '230100'), -('230103', '南岗区', '230100'), -('230104', '道外区', '230100'), -('230108', '平房区', '230100'), -('230109', '松北区', '230100'), -('230110', '香坊区', '230100'), -('230111', '呼兰区', '230100'), -('230112', '阿城区', '230100'), -('230113', '双城区', '230100'), -('230123', '依兰县', '230100'), -('230124', '方正县', '230100'), -('230125', '宾县', '230100'), -('230126', '巴彦县', '230100'), -('230127', '木兰县', '230100'), -('230128', '通河县', '230100'), -('230129', '延寿县', '230100'), -('230183', '尚志市', '230100'), -('230184', '五常市', '230100'), -('230200', '齐齐哈尔市', '230000'), -('230202', '龙沙区', '230200'), -('230203', '建华区', '230200'), -('230204', '铁锋区', '230200'), -('230205', '昂昂溪区', '230200'), -('230206', '富拉尔基区', '230200'), -('230207', '碾子山区', '230200'), -('230208', '梅里斯达斡尔族区', '230200'), -('230221', '龙江县', '230200'), -('230223', '依安县', '230200'), -('230224', '泰来县', '230200'), -('230225', '甘南县', '230200'), -('230227', '富裕县', '230200'), -('230229', '克山县', '230200'), -('230230', '克东县', '230200'), -('230231', '拜泉县', '230200'), -('230281', '讷河市', '230200'), -('230300', '鸡西市', '230000'), -('230302', '鸡冠区', '230300'), -('230303', '恒山区', '230300'), -('230304', '滴道区', '230300'), -('230305', '梨树区', '230300'), -('230306', '城子河区', '230300'), -('230307', '麻山区', '230300'), -('230321', '鸡东县', '230300'), -('230381', '虎林市', '230300'), -('230382', '密山市', '230300'), -('230400', '鹤岗市', '230000'), -('230402', '向阳区', '230400'), -('230403', '工农区', '230400'), -('230404', '南山区', '230400'), -('230405', '兴安区', '230400'), -('230406', '东山区', '230400'), -('230407', '兴山区', '230400'), -('230421', '萝北县', '230400'), -('230422', '绥滨县', '230400'), -('230500', '双鸭山市', '230000'), -('230502', '尖山区', '230500'), -('230503', '岭东区', '230500'), -('230505', '四方台区', '230500'), -('230506', '宝山区', '230500'), -('230521', '集贤县', '230500'), -('230522', '友谊县', '230500'), -('230523', '宝清县', '230500'), -('230524', '饶河县', '230500'), -('230600', '大庆市', '230000'), -('230602', '萨尔图区', '230600'), -('230603', '龙凤区', '230600'), -('230604', '让胡路区', '230600'), -('230605', '红岗区', '230600'), -('230606', '大同区', '230600'), -('230621', '肇州县', '230600'), -('230622', '肇源县', '230600'), -('230623', '林甸县', '230600'), -('230624', '杜尔伯特蒙古族自治县', '230600'), -('230700', '伊春市', '230000'), -('230702', '伊春区', '230700'), -('230703', '南岔区', '230700'), -('230704', '友好区', '230700'), -('230705', '西林区', '230700'), -('230706', '翠峦区', '230700'), -('230707', '新青区', '230700'), -('230708', '美溪区', '230700'), -('230709', '金山屯区', '230700'), -('230710', '五营区', '230700'), -('230711', '乌马河区', '230700'), -('230712', '汤旺河区', '230700'), -('230713', '带岭区', '230700'), -('230714', '乌伊岭区', '230700'), -('230715', '红星区', '230700'), -('230716', '上甘岭区', '230700'), -('230722', '嘉荫县', '230700'), -('230781', '铁力市', '230700'), -('230800', '佳木斯市', '230000'), -('230803', '向阳区', '230800'), -('230804', '前进区', '230800'), -('230805', '东风区', '230800'), -('230811', '郊区', '230800'), -('230822', '桦南县', '230800'), -('230826', '桦川县', '230800'), -('230828', '汤原县', '230800'), -('230881', '同江市', '230800'), -('230882', '富锦市', '230800'), -('230883', '抚远市', '230800'), -('230900', '七台河市', '230000'), -('230902', '新兴区', '230900'), -('230903', '桃山区', '230900'), -('230904', '茄子河区', '230900'), -('230921', '勃利县', '230900'), -('231000', '牡丹江市', '230000'), -('231002', '东安区', '231000'), -('231003', '阳明区', '231000'), -('231004', '爱民区', '231000'), -('231005', '西安区', '231000'), -('231025', '林口县', '231000'), -('231081', '绥芬河市', '231000'), -('231083', '海林市', '231000'), -('231084', '宁安市', '231000'), -('231085', '穆棱市', '231000'), -('231086', '东宁市', '231000'), -('231100', '黑河市', '230000'), -('231102', '爱辉区', '231100'), -('231121', '嫩江县', '231100'), -('231123', '逊克县', '231100'), -('231124', '孙吴县', '231100'), -('231181', '北安市', '231100'), -('231182', '五大连池市', '231100'), -('231200', '绥化市', '230000'), -('231202', '北林区', '231200'), -('231221', '望奎县', '231200'), -('231222', '兰西县', '231200'), -('231223', '青冈县', '231200'), -('231224', '庆安县', '231200'), -('231225', '明水县', '231200'), -('231226', '绥棱县', '231200'), -('231281', '安达市', '231200'), -('231282', '肇东市', '231200'), -('231283', '海伦市', '231200'), -('232700', '大兴安岭地区', '230000'), -('232721', '呼玛县', '232700'), -('232722', '塔河县', '232700'), -('232723', '漠河县', '232700'), -('310000', '上海市', null), -('310100', '上海市', '310000'), -('310101', '黄浦区', '310100'), -('310104', '徐汇区', '310100'), -('310105', '长宁区', '310100'), -('310106', '静安区', '310100'), -('310107', '普陀区', '310100'), -('310109', '虹口区', '310100'), -('310110', '杨浦区', '310100'), -('310112', '闵行区', '310100'), -('310113', '宝山区', '310100'), -('310114', '嘉定区', '310100'), -('310115', '浦东新区', '310100'), -('310116', '金山区', '310100'), -('310117', '松江区', '310100'), -('310118', '青浦区', '310100'), -('310120', '奉贤区', '310100'), -('310151', '崇明区', '310100'), -('320000', '江苏省', null), -('320100', '南京市', '320000'), -('320102', '玄武区', '320100'), -('320104', '秦淮区', '320100'), -('320105', '建邺区', '320100'), -('320106', '鼓楼区', '320100'), -('320111', '浦口区', '320100'), -('320113', '栖霞区', '320100'), -('320114', '雨花台区', '320100'), -('320115', '江宁区', '320100'), -('320116', '六合区', '320100'), -('320117', '溧水区', '320100'), -('320118', '高淳区', '320100'), -('320200', '无锡市', '320000'), -('320205', '锡山区', '320200'), -('320206', '惠山区', '320200'), -('320211', '滨湖区', '320200'), -('320213', '梁溪区', '320200'), -('320214', '新吴区', '320200'), -('320281', '江阴市', '320200'), -('320282', '宜兴市', '320200'), -('320300', '徐州市', '320000'), -('320302', '鼓楼区', '320300'), -('320303', '云龙区', '320300'), -('320305', '贾汪区', '320300'), -('320311', '泉山区', '320300'), -('320312', '铜山区', '320300'), -('320321', '丰县', '320300'), -('320322', '沛县', '320300'), -('320324', '睢宁县', '320300'), -('320381', '新沂市', '320300'), -('320382', '邳州市', '320300'), -('320400', '常州市', '320000'), -('320402', '天宁区', '320400'), -('320404', '钟楼区', '320400'), -('320411', '新北区', '320400'), -('320412', '武进区', '320400'), -('320413', '金坛区', '320400'), -('320481', '溧阳市', '320400'), -('320500', '苏州市', '320000'), -('320505', '虎丘区', '320500'), -('320506', '吴中区', '320500'), -('320507', '相城区', '320500'), -('320508', '姑苏区', '320500'), -('320509', '吴江区', '320500'), -('320581', '常熟市', '320500'), -('320582', '张家港市', '320500'), -('320583', '昆山市', '320500'), -('320585', '太仓市', '320500'), -('320600', '南通市', '320000'), -('320602', '崇川区', '320600'), -('320611', '港闸区', '320600'), -('320612', '通州区', '320600'), -('320621', '海安县', '320600'), -('320623', '如东县', '320600'), -('320681', '启东市', '320600'), -('320682', '如皋市', '320600'), -('320684', '海门市', '320600'), -('320700', '连云港市', '320000'), -('320703', '连云区', '320700'), -('320706', '海州区', '320700'), -('320707', '赣榆区', '320700'), -('320722', '东海县', '320700'), -('320723', '灌云县', '320700'), -('320724', '灌南县', '320700'), -('320800', '淮安市', '320000'), -('320803', '淮安区', '320800'), -('320804', '淮阴区', '320800'), -('320812', '清江浦区', '320800'), -('320813', '洪泽区', '320800'), -('320826', '涟水县', '320800'), -('320830', '盱眙县', '320800'), -('320831', '金湖县', '320800'), -('320900', '盐城市', '320000'), -('320902', '亭湖区', '320900'), -('320903', '盐都区', '320900'), -('320904', '大丰区', '320900'), -('320921', '响水县', '320900'), -('320922', '滨海县', '320900'), -('320923', '阜宁县', '320900'), -('320924', '射阳县', '320900'), -('320925', '建湖县', '320900'), -('320981', '东台市', '320900'), -('321000', '扬州市', '320000'), -('321002', '广陵区', '321000'), -('321003', '邗江区', '321000'), -('321012', '江都区', '321000'), -('321023', '宝应县', '321000'), -('321081', '仪征市', '321000'), -('321084', '高邮市', '321000'), -('321100', '镇江市', '320000'), -('321102', '京口区', '321100'), -('321111', '润州区', '321100'), -('321112', '丹徒区', '321100'), -('321181', '丹阳市', '321100'), -('321182', '扬中市', '321100'), -('321183', '句容市', '321100'), -('321200', '泰州市', '320000'), -('321202', '海陵区', '321200'), -('321203', '高港区', '321200'), -('321204', '姜堰区', '321200'), -('321281', '兴化市', '321200'), -('321282', '靖江市', '321200'), -('321283', '泰兴市', '321200'), -('321300', '宿迁市', '320000'), -('321302', '宿城区', '321300'), -('321311', '宿豫区', '321300'), -('321322', '沭阳县', '321300'), -('321323', '泗阳县', '321300'), -('321324', '泗洪县', '321300'), -('330000', '浙江省', null), -('330100', '杭州市', '330000'), -('330102', '上城区', '330100'), -('330103', '下城区', '330100'), -('330104', '江干区', '330100'), -('330105', '拱墅区', '330100'), -('330106', '西湖区', '330100'), -('330108', '滨江区', '330100'), -('330109', '萧山区', '330100'), -('330110', '余杭区', '330100'), -('330111', '富阳区', '330100'), -('330122', '桐庐县', '330100'), -('330127', '淳安县', '330100'), -('330182', '建德市', '330100'), -('330185', '临安市', '330100'), -('330200', '宁波市', '330000'), -('330203', '海曙区', '330200'), -('330204', '江东区', '330200'), -('330205', '江北区', '330200'), -('330206', '北仑区', '330200'), -('330211', '镇海区', '330200'), -('330212', '鄞州区', '330200'), -('330225', '象山县', '330200'), -('330226', '宁海县', '330200'), -('330281', '余姚市', '330200'), -('330282', '慈溪市', '330200'), -('330283', '奉化市', '330200'), -('330300', '温州市', '330000'), -('330302', '鹿城区', '330300'), -('330303', '龙湾区', '330300'), -('330304', '瓯海区', '330300'), -('330305', '洞头区', '330300'), -('330324', '永嘉县', '330300'), -('330326', '平阳县', '330300'), -('330327', '苍南县', '330300'), -('330328', '文成县', '330300'), -('330329', '泰顺县', '330300'), -('330381', '瑞安市', '330300'), -('330382', '乐清市', '330300'), -('330400', '嘉兴市', '330000'), -('330402', '南湖区', '330400'), -('330411', '秀洲区', '330400'), -('330421', '嘉善县', '330400'), -('330424', '海盐县', '330400'), -('330481', '海宁市', '330400'), -('330482', '平湖市', '330400'), -('330483', '桐乡市', '330400'), -('330500', '湖州市', '330000'), -('330502', '吴兴区', '330500'), -('330503', '南浔区', '330500'), -('330521', '德清县', '330500'), -('330522', '长兴县', '330500'), -('330523', '安吉县', '330500'), -('330600', '绍兴市', '330000'), -('330602', '越城区', '330600'), -('330603', '柯桥区', '330600'), -('330604', '上虞区', '330600'), -('330624', '新昌县', '330600'), -('330681', '诸暨市', '330600'), -('330683', '嵊州市', '330600'), -('330700', '金华市', '330000'), -('330702', '婺城区', '330700'), -('330703', '金东区', '330700'), -('330723', '武义县', '330700'), -('330726', '浦江县', '330700'), -('330727', '磐安县', '330700'), -('330781', '兰溪市', '330700'), -('330782', '义乌市', '330700'), -('330783', '东阳市', '330700'), -('330784', '永康市', '330700'), -('330800', '衢州市', '330000'), -('330802', '柯城区', '330800'), -('330803', '衢江区', '330800'), -('330822', '常山县', '330800'), -('330824', '开化县', '330800'), -('330825', '龙游县', '330800'), -('330881', '江山市', '330800'), -('330900', '舟山市', '330000'), -('330902', '定海区', '330900'), -('330903', '普陀区', '330900'), -('330921', '岱山县', '330900'), -('330922', '嵊泗县', '330900'), -('331000', '台州市', '330000'), -('331002', '椒江区', '331000'), -('331003', '黄岩区', '331000'), -('331004', '路桥区', '331000'), -('331021', '玉环县', '331000'), -('331022', '三门县', '331000'), -('331023', '天台县', '331000'), -('331024', '仙居县', '331000'), -('331081', '温岭市', '331000'), -('331082', '临海市', '331000'), -('331100', '丽水市', '330000'), -('331102', '莲都区', '331100'), -('331121', '青田县', '331100'), -('331122', '缙云县', '331100'), -('331123', '遂昌县', '331100'), -('331124', '松阳县', '331100'), -('331125', '云和县', '331100'), -('331126', '庆元县', '331100'), -('331127', '景宁畲族自治县', '331100'), -('331181', '龙泉市', '331100'), -('340000', '安徽省', null), -('340100', '合肥市', '340000'), -('340102', '瑶海区', '340100'), -('340103', '庐阳区', '340100'), -('340104', '蜀山区', '340100'), -('340111', '包河区', '340100'), -('340121', '长丰县', '340100'), -('340122', '肥东县', '340100'), -('340123', '肥西县', '340100'), -('340124', '庐江县', '340100'), -('340181', '巢湖市', '340100'), -('340200', '芜湖市', '340000'), -('340202', '镜湖区', '340200'), -('340203', '弋江区', '340200'), -('340207', '鸠江区', '340200'), -('340208', '三山区', '340200'), -('340221', '芜湖县', '340200'), -('340222', '繁昌县', '340200'), -('340223', '南陵县', '340200'), -('340225', '无为县', '340200'), -('340300', '蚌埠市', '340000'), -('340302', '龙子湖区', '340300'), -('340303', '蚌山区', '340300'), -('340304', '禹会区', '340300'), -('340311', '淮上区', '340300'), -('340321', '怀远县', '340300'), -('340322', '五河县', '340300'), -('340323', '固镇县', '340300'), -('340400', '淮南市', '340000'), -('340402', '大通区', '340400'), -('340403', '田家庵区', '340400'), -('340404', '谢家集区', '340400'), -('340405', '八公山区', '340400'), -('340406', '潘集区', '340400'), -('340421', '凤台县', '340400'), -('340422', '寿县', '340400'), -('340500', '马鞍山市', '340000'), -('340503', '花山区', '340500'), -('340504', '雨山区', '340500'), -('340506', '博望区', '340500'), -('340521', '当涂县', '340500'), -('340522', '含山县', '340500'), -('340523', '和县', '340500'), -('340600', '淮北市', '340000'), -('340602', '杜集区', '340600'), -('340603', '相山区', '340600'), -('340604', '烈山区', '340600'), -('340621', '濉溪县', '340600'), -('340700', '铜陵市', '340000'), -('340705', '铜官区', '340700'), -('340706', '义安区', '340700'), -('340711', '郊区', '340700'), -('340722', '枞阳县', '340700'), -('340800', '安庆市', '340000'), -('340802', '迎江区', '340800'), -('340803', '大观区', '340800'), -('340811', '宜秀区', '340800'), -('340822', '怀宁县', '340800'), -('340824', '潜山县', '340800'), -('340825', '太湖县', '340800'), -('340826', '宿松县', '340800'), -('340827', '望江县', '340800'), -('340828', '岳西县', '340800'), -('340881', '桐城市', '340800'), -('341000', '黄山市', '340000'), -('341002', '屯溪区', '341000'), -('341003', '黄山区', '341000'), -('341004', '徽州区', '341000'), -('341021', '歙县', '341000'), -('341022', '休宁县', '341000'), -('341023', '黟县', '341000'), -('341024', '祁门县', '341000'), -('341100', '滁州市', '340000'), -('341102', '琅琊区', '341100'), -('341103', '南谯区', '341100'), -('341122', '来安县', '341100'), -('341124', '全椒县', '341100'), -('341125', '定远县', '341100'), -('341126', '凤阳县', '341100'), -('341181', '天长市', '341100'), -('341182', '明光市', '341100'), -('341200', '阜阳市', '340000'), -('341202', '颍州区', '341200'), -('341203', '颍东区', '341200'), -('341204', '颍泉区', '341200'), -('341221', '临泉县', '341200'), -('341222', '太和县', '341200'), -('341225', '阜南县', '341200'), -('341226', '颍上县', '341200'), -('341282', '界首市', '341200'), -('341300', '宿州市', '340000'), -('341302', '埇桥区', '341300'), -('341321', '砀山县', '341300'), -('341322', '萧县', '341300'), -('341323', '灵璧县', '341300'), -('341324', '泗县', '341300'), -('341500', '六安市', '340000'), -('341502', '金安区', '341500'), -('341503', '裕安区', '341500'), -('341504', '叶集区', '341500'), -('341522', '霍邱县', '341500'), -('341523', '舒城县', '341500'), -('341524', '金寨县', '341500'), -('341525', '霍山县', '341500'), -('341600', '亳州市', '340000'), -('341602', '谯城区', '341600'), -('341621', '涡阳县', '341600'), -('341622', '蒙城县', '341600'), -('341623', '利辛县', '341600'), -('341700', '池州市', '340000'), -('341702', '贵池区', '341700'), -('341721', '东至县', '341700'), -('341722', '石台县', '341700'), -('341723', '青阳县', '341700'), -('341800', '宣城市', '340000'), -('341802', '宣州区', '341800'), -('341821', '郎溪县', '341800'), -('341822', '广德县', '341800'), -('341823', '泾县', '341800'), -('341824', '绩溪县', '341800'), -('341825', '旌德县', '341800'), -('341881', '宁国市', '341800'), -('350000', '福建省', null), -('350100', '福州市', '350000'), -('350102', '鼓楼区', '350100'), -('350103', '台江区', '350100'), -('350104', '仓山区', '350100'), -('350105', '马尾区', '350100'), -('350111', '晋安区', '350100'), -('350121', '闽侯县', '350100'), -('350122', '连江县', '350100'), -('350123', '罗源县', '350100'), -('350124', '闽清县', '350100'), -('350125', '永泰县', '350100'), -('350128', '平潭县', '350100'), -('350181', '福清市', '350100'), -('350182', '长乐市', '350100'), -('350200', '厦门市', '350000'), -('350203', '思明区', '350200'), -('350205', '海沧区', '350200'), -('350206', '湖里区', '350200'), -('350211', '集美区', '350200'), -('350212', '同安区', '350200'), -('350213', '翔安区', '350200'), -('350300', '莆田市', '350000'), -('350302', '城厢区', '350300'), -('350303', '涵江区', '350300'), -('350304', '荔城区', '350300'), -('350305', '秀屿区', '350300'), -('350322', '仙游县', '350300'), -('350400', '三明市', '350000'), -('350402', '梅列区', '350400'), -('350403', '三元区', '350400'), -('350421', '明溪县', '350400'), -('350423', '清流县', '350400'), -('350424', '宁化县', '350400'), -('350425', '大田县', '350400'), -('350426', '尤溪县', '350400'), -('350427', '沙县', '350400'), -('350428', '将乐县', '350400'), -('350429', '泰宁县', '350400'), -('350430', '建宁县', '350400'), -('350481', '永安市', '350400'), -('350500', '泉州市', '350000'), -('350502', '鲤城区', '350500'), -('350503', '丰泽区', '350500'), -('350504', '洛江区', '350500'), -('350505', '泉港区', '350500'), -('350521', '惠安县', '350500'), -('350524', '安溪县', '350500'), -('350525', '永春县', '350500'), -('350526', '德化县', '350500'), -('350527', '金门县', '350500'), -('350581', '石狮市', '350500'), -('350582', '晋江市', '350500'), -('350583', '南安市', '350500'), -('350600', '漳州市', '350000'), -('350602', '芗城区', '350600'), -('350603', '龙文区', '350600'), -('350622', '云霄县', '350600'), -('350623', '漳浦县', '350600'), -('350624', '诏安县', '350600'), -('350625', '长泰县', '350600'), -('350626', '东山县', '350600'), -('350627', '南靖县', '350600'), -('350628', '平和县', '350600'), -('350629', '华安县', '350600'), -('350681', '龙海市', '350600'), -('350700', '南平市', '350000'), -('350702', '延平区', '350700'), -('350703', '建阳区', '350700'), -('350721', '顺昌县', '350700'), -('350722', '浦城县', '350700'), -('350723', '光泽县', '350700'), -('350724', '松溪县', '350700'), -('350725', '政和县', '350700'), -('350781', '邵武市', '350700'), -('350782', '武夷山市', '350700'), -('350783', '建瓯市', '350700'), -('350800', '龙岩市', '350000'), -('350802', '新罗区', '350800'), -('350803', '永定区', '350800'), -('350821', '长汀县', '350800'), -('350823', '上杭县', '350800'), -('350824', '武平县', '350800'), -('350825', '连城县', '350800'), -('350881', '漳平市', '350800'), -('350900', '宁德市', '350000'), -('350902', '蕉城区', '350900'), -('350921', '霞浦县', '350900'), -('350922', '古田县', '350900'), -('350923', '屏南县', '350900'), -('350924', '寿宁县', '350900'), -('350925', '周宁县', '350900'), -('350926', '柘荣县', '350900'), -('350981', '福安市', '350900'), -('350982', '福鼎市', '350900'), -('360000', '江西省', null), -('360100', '南昌市', '360000'), -('360102', '东湖区', '360100'), -('360103', '西湖区', '360100'), -('360104', '青云谱区', '360100'), -('360105', '湾里区', '360100'), -('360111', '青山湖区', '360100'), -('360112', '新建区', '360100'), -('360121', '南昌县', '360100'), -('360123', '安义县', '360100'), -('360124', '进贤县', '360100'), -('360200', '景德镇市', '360000'), -('360202', '昌江区', '360200'), -('360203', '珠山区', '360200'), -('360222', '浮梁县', '360200'), -('360281', '乐平市', '360200'), -('360300', '萍乡市', '360000'), -('360302', '安源区', '360300'), -('360313', '湘东区', '360300'), -('360321', '莲花县', '360300'), -('360322', '上栗县', '360300'), -('360323', '芦溪县', '360300'), -('360400', '九江市', '360000'), -('360402', '濂溪区', '360400'), -('360403', '浔阳区', '360400'), -('360421', '九江县', '360400'), -('360423', '武宁县', '360400'), -('360424', '修水县', '360400'), -('360425', '永修县', '360400'), -('360426', '德安县', '360400'), -('360428', '都昌县', '360400'), -('360429', '湖口县', '360400'), -('360430', '彭泽县', '360400'), -('360481', '瑞昌市', '360400'), -('360482', '共青城市', '360400'), -('360483', '庐山市', '360400'), -('360500', '新余市', '360000'), -('360502', '渝水区', '360500'), -('360521', '分宜县', '360500'), -('360600', '鹰潭市', '360000'), -('360602', '月湖区', '360600'), -('360622', '余江县', '360600'), -('360681', '贵溪市', '360600'), -('360700', '赣州市', '360000'), -('360702', '章贡区', '360700'), -('360703', '南康区', '360700'), -('360721', '赣县', '360700'), -('360722', '信丰县', '360700'), -('360723', '大余县', '360700'), -('360724', '上犹县', '360700'), -('360725', '崇义县', '360700'), -('360726', '安远县', '360700'), -('360727', '龙南县', '360700'), -('360728', '定南县', '360700'), -('360729', '全南县', '360700'), -('360730', '宁都县', '360700'), -('360731', '于都县', '360700'), -('360732', '兴国县', '360700'), -('360733', '会昌县', '360700'), -('360734', '寻乌县', '360700'), -('360735', '石城县', '360700'), -('360781', '瑞金市', '360700'), -('360800', '吉安市', '360000'), -('360802', '吉州区', '360800'), -('360803', '青原区', '360800'), -('360821', '吉安县', '360800'), -('360822', '吉水县', '360800'), -('360823', '峡江县', '360800'), -('360824', '新干县', '360800'), -('360825', '永丰县', '360800'), -('360826', '泰和县', '360800'), -('360827', '遂川县', '360800'), -('360828', '万安县', '360800'), -('360829', '安福县', '360800'), -('360830', '永新县', '360800'), -('360881', '井冈山市', '360800'), -('360900', '宜春市', '360000'), -('360902', '袁州区', '360900'), -('360921', '奉新县', '360900'), -('360922', '万载县', '360900'), -('360923', '上高县', '360900'), -('360924', '宜丰县', '360900'), -('360925', '靖安县', '360900'), -('360926', '铜鼓县', '360900'), -('360981', '丰城市', '360900'), -('360982', '樟树市', '360900'), -('360983', '高安市', '360900'), -('361000', '抚州市', '360000'), -('361002', '临川区', '361000'), -('361021', '南城县', '361000'), -('361022', '黎川县', '361000'), -('361023', '南丰县', '361000'), -('361024', '崇仁县', '361000'), -('361025', '乐安县', '361000'), -('361026', '宜黄县', '361000'), -('361027', '金溪县', '361000'), -('361028', '资溪县', '361000'), -('361029', '东乡县', '361000'), -('361030', '广昌县', '361000'), -('361100', '上饶市', '360000'), -('361102', '信州区', '361100'), -('361103', '广丰区', '361100'), -('361121', '上饶县', '361100'), -('361123', '玉山县', '361100'), -('361124', '铅山县', '361100'), -('361125', '横峰县', '361100'), -('361126', '弋阳县', '361100'), -('361127', '余干县', '361100'), -('361128', '鄱阳县', '361100'), -('361129', '万年县', '361100'), -('361130', '婺源县', '361100'), -('361181', '德兴市', '361100'), -('370000', '山东省', null), -('370100', '济南市', '370000'), -('370102', '历下区', '370100'), -('370103', '市中区', '370100'), -('370104', '槐荫区', '370100'), -('370105', '天桥区', '370100'), -('370112', '历城区', '370100'), -('370113', '长清区', '370100'), -('370124', '平阴县', '370100'), -('370125', '济阳县', '370100'), -('370126', '商河县', '370100'), -('370181', '章丘市', '370100'), -('370200', '青岛市', '370000'), -('370202', '市南区', '370200'), -('370203', '市北区', '370200'), -('370211', '黄岛区', '370200'), -('370212', '崂山区', '370200'), -('370213', '李沧区', '370200'), -('370214', '城阳区', '370200'), -('370281', '胶州市', '370200'), -('370282', '即墨市', '370200'), -('370283', '平度市', '370200'), -('370285', '莱西市', '370200'), -('370300', '淄博市', '370000'), -('370302', '淄川区', '370300'), -('370303', '张店区', '370300'), -('370304', '博山区', '370300'), -('370305', '临淄区', '370300'), -('370306', '周村区', '370300'), -('370321', '桓台县', '370300'), -('370322', '高青县', '370300'), -('370323', '沂源县', '370300'), -('370400', '枣庄市', '370000'), -('370402', '市中区', '370400'), -('370403', '薛城区', '370400'), -('370404', '峄城区', '370400'), -('370405', '台儿庄区', '370400'), -('370406', '山亭区', '370400'), -('370481', '滕州市', '370400'), -('370500', '东营市', '370000'), -('370502', '东营区', '370500'), -('370503', '河口区', '370500'), -('370505', '垦利区', '370500'), -('370522', '利津县', '370500'), -('370523', '广饶县', '370500'), -('370600', '烟台市', '370000'), -('370602', '芝罘区', '370600'), -('370611', '福山区', '370600'), -('370612', '牟平区', '370600'), -('370613', '莱山区', '370600'), -('370634', '长岛县', '370600'), -('370681', '龙口市', '370600'), -('370682', '莱阳市', '370600'), -('370683', '莱州市', '370600'), -('370684', '蓬莱市', '370600'), -('370685', '招远市', '370600'), -('370686', '栖霞市', '370600'), -('370687', '海阳市', '370600'), -('370700', '潍坊市', '370000'), -('370702', '潍城区', '370700'), -('370703', '寒亭区', '370700'), -('370704', '坊子区', '370700'), -('370705', '奎文区', '370700'), -('370724', '临朐县', '370700'), -('370725', '昌乐县', '370700'), -('370781', '青州市', '370700'), -('370782', '诸城市', '370700'), -('370783', '寿光市', '370700'), -('370784', '安丘市', '370700'), -('370785', '高密市', '370700'), -('370786', '昌邑市', '370700'), -('370800', '济宁市', '370000'), -('370811', '任城区', '370800'), -('370812', '兖州区', '370800'), -('370826', '微山县', '370800'), -('370827', '鱼台县', '370800'), -('370828', '金乡县', '370800'), -('370829', '嘉祥县', '370800'), -('370830', '汶上县', '370800'), -('370831', '泗水县', '370800'), -('370832', '梁山县', '370800'), -('370881', '曲阜市', '370800'), -('370883', '邹城市', '370800'), -('370900', '泰安市', '370000'), -('370902', '泰山区', '370900'), -('370911', '岱岳区', '370900'), -('370921', '宁阳县', '370900'), -('370923', '东平县', '370900'), -('370982', '新泰市', '370900'), -('370983', '肥城市', '370900'), -('371000', '威海市', '370000'), -('371002', '环翠区', '371000'), -('371003', '文登区', '371000'), -('371082', '荣成市', '371000'), -('371083', '乳山市', '371000'), -('371100', '日照市', '370000'), -('371102', '东港区', '371100'), -('371103', '岚山区', '371100'), -('371121', '五莲县', '371100'), -('371122', '莒县', '371100'), -('371200', '莱芜市', '370000'), -('371202', '莱城区', '371200'), -('371203', '钢城区', '371200'), -('371300', '临沂市', '370000'), -('371302', '兰山区', '371300'), -('371311', '罗庄区', '371300'), -('371312', '河东区', '371300'), -('371321', '沂南县', '371300'), -('371322', '郯城县', '371300'), -('371323', '沂水县', '371300'), -('371324', '兰陵县', '371300'), -('371325', '费县', '371300'), -('371326', '平邑县', '371300'), -('371327', '莒南县', '371300'), -('371328', '蒙阴县', '371300'), -('371329', '临沭县', '371300'), -('371400', '德州市', '370000'), -('371402', '德城区', '371400'), -('371403', '陵城区', '371400'), -('371422', '宁津县', '371400'), -('371423', '庆云县', '371400'), -('371424', '临邑县', '371400'), -('371425', '齐河县', '371400'), -('371426', '平原县', '371400'), -('371427', '夏津县', '371400'), -('371428', '武城县', '371400'), -('371481', '乐陵市', '371400'), -('371482', '禹城市', '371400'), -('371500', '聊城市', '370000'), -('371502', '东昌府区', '371500'), -('371521', '阳谷县', '371500'), -('371522', '莘县', '371500'), -('371523', '茌平县', '371500'), -('371524', '东阿县', '371500'), -('371525', '冠县', '371500'), -('371526', '高唐县', '371500'), -('371581', '临清市', '371500'), -('371600', '滨州市', '370000'), -('371602', '滨城区', '371600'), -('371603', '沾化区', '371600'), -('371621', '惠民县', '371600'), -('371622', '阳信县', '371600'), -('371623', '无棣县', '371600'), -('371625', '博兴县', '371600'), -('371626', '邹平县', '371600'), -('371700', '菏泽市', '370000'), -('371702', '牡丹区', '371700'), -('371703', '定陶区', '371700'), -('371721', '曹县', '371700'), -('371722', '单县', '371700'), -('371723', '成武县', '371700'), -('371724', '巨野县', '371700'), -('371725', '郓城县', '371700'), -('371726', '鄄城县', '371700'), -('371728', '东明县', '371700'), -('410000', '河南省', null), -('410100', '郑州市', '410000'), -('410102', '中原区', '410100'), -('410103', '二七区', '410100'), -('410104', '管城回族区', '410100'), -('410105', '金水区', '410100'), -('410106', '上街区', '410100'), -('410108', '惠济区', '410100'), -('410122', '中牟县', '410100'), -('410181', '巩义市', '410100'), -('410182', '荥阳市', '410100'), -('410183', '新密市', '410100'), -('410184', '新郑市', '410100'), -('410185', '登封市', '410100'), -('410200', '开封市', '410000'), -('410202', '龙亭区', '410200'), -('410203', '顺河回族区', '410200'), -('410204', '鼓楼区', '410200'), -('410205', '禹王台区', '410200'), -('410211', '金明区', '410200'), -('410212', '祥符区', '410200'), -('410221', '杞县', '410200'), -('410222', '通许县', '410200'), -('410223', '尉氏县', '410200'), -('410225', '兰考县', '410200'), -('410300', '洛阳市', '410000'), -('410302', '老城区', '410300'), -('410303', '西工区', '410300'), -('410304', '瀍河回族区', '410300'), -('410305', '涧西区', '410300'), -('410306', '吉利区', '410300'), -('410311', '洛龙区', '410300'), -('410322', '孟津县', '410300'), -('410323', '新安县', '410300'), -('410324', '栾川县', '410300'), -('410325', '嵩县', '410300'), -('410326', '汝阳县', '410300'), -('410327', '宜阳县', '410300'), -('410328', '洛宁县', '410300'), -('410329', '伊川县', '410300'), -('410381', '偃师市', '410300'), -('410400', '平顶山市', '410000'), -('410402', '新华区', '410400'), -('410403', '卫东区', '410400'), -('410404', '石龙区', '410400'), -('410411', '湛河区', '410400'), -('410421', '宝丰县', '410400'), -('410422', '叶县', '410400'), -('410423', '鲁山县', '410400'), -('410425', '郏县', '410400'), -('410481', '舞钢市', '410400'), -('410482', '汝州市', '410400'), -('410500', '安阳市', '410000'), -('410502', '文峰区', '410500'), -('410503', '北关区', '410500'), -('410505', '殷都区', '410500'), -('410506', '龙安区', '410500'), -('410522', '安阳县', '410500'), -('410523', '汤阴县', '410500'), -('410526', '滑县', '410500'), -('410527', '内黄县', '410500'), -('410581', '林州市', '410500'), -('410600', '鹤壁市', '410000'), -('410602', '鹤山区', '410600'), -('410603', '山城区', '410600'), -('410611', '淇滨区', '410600'), -('410621', '浚县', '410600'), -('410622', '淇县', '410600'), -('410700', '新乡市', '410000'), -('410702', '红旗区', '410700'), -('410703', '卫滨区', '410700'), -('410704', '凤泉区', '410700'), -('410711', '牧野区', '410700'), -('410721', '新乡县', '410700'), -('410724', '获嘉县', '410700'), -('410725', '原阳县', '410700'), -('410726', '延津县', '410700'), -('410727', '封丘县', '410700'), -('410728', '长垣县', '410700'), -('410781', '卫辉市', '410700'), -('410782', '辉县市', '410700'), -('410800', '焦作市', '410000'), -('410802', '解放区', '410800'), -('410803', '中站区', '410800'), -('410804', '马村区', '410800'), -('410811', '山阳区', '410800'), -('410821', '修武县', '410800'), -('410822', '博爱县', '410800'), -('410823', '武陟县', '410800'), -('410825', '温县', '410800'), -('410882', '沁阳市', '410800'), -('410883', '孟州市', '410800'), -('410900', '濮阳市', '410000'), -('410902', '华龙区', '410900'), -('410922', '清丰县', '410900'), -('410923', '南乐县', '410900'), -('410926', '范县', '410900'), -('410927', '台前县', '410900'), -('410928', '濮阳县', '410900'), -('411000', '许昌市', '410000'), -('411002', '魏都区', '411000'), -('411023', '许昌县', '411000'), -('411024', '鄢陵县', '411000'), -('411025', '襄城县', '411000'), -('411081', '禹州市', '411000'), -('411082', '长葛市', '411000'), -('411100', '漯河市', '410000'), -('411102', '源汇区', '411100'), -('411103', '郾城区', '411100'), -('411104', '召陵区', '411100'), -('411121', '舞阳县', '411100'), -('411122', '临颍县', '411100'), -('411200', '三门峡市', '410000'), -('411202', '湖滨区', '411200'), -('411203', '陕州区', '411200'), -('411221', '渑池县', '411200'), -('411224', '卢氏县', '411200'), -('411281', '义马市', '411200'), -('411282', '灵宝市', '411200'), -('411300', '南阳市', '410000'), -('411302', '宛城区', '411300'), -('411303', '卧龙区', '411300'), -('411321', '南召县', '411300'), -('411322', '方城县', '411300'), -('411323', '西峡县', '411300'), -('411324', '镇平县', '411300'), -('411325', '内乡县', '411300'), -('411326', '淅川县', '411300'), -('411327', '社旗县', '411300'), -('411328', '唐河县', '411300'), -('411329', '新野县', '411300'), -('411330', '桐柏县', '411300'), -('411381', '邓州市', '411300'), -('411400', '商丘市', '410000'), -('411402', '梁园区', '411400'), -('411403', '睢阳区', '411400'), -('411421', '民权县', '411400'), -('411422', '睢县', '411400'), -('411423', '宁陵县', '411400'), -('411424', '柘城县', '411400'), -('411425', '虞城县', '411400'), -('411426', '夏邑县', '411400'), -('411481', '永城市', '411400'), -('411500', '信阳市', '410000'), -('411502', '浉河区', '411500'), -('411503', '平桥区', '411500'), -('411521', '罗山县', '411500'), -('411522', '光山县', '411500'), -('411523', '新县', '411500'), -('411524', '商城县', '411500'), -('411525', '固始县', '411500'), -('411526', '潢川县', '411500'), -('411527', '淮滨县', '411500'), -('411528', '息县', '411500'), -('411600', '周口市', '410000'), -('411602', '川汇区', '411600'), -('411621', '扶沟县', '411600'), -('411622', '西华县', '411600'), -('411623', '商水县', '411600'), -('411624', '沈丘县', '411600'), -('411625', '郸城县', '411600'), -('411626', '淮阳县', '411600'), -('411627', '太康县', '411600'), -('411628', '鹿邑县', '411600'), -('411681', '项城市', '411600'), -('411700', '驻马店市', '410000'), -('411702', '驿城区', '411700'), -('411721', '西平县', '411700'), -('411722', '上蔡县', '411700'), -('411723', '平舆县', '411700'), -('411724', '正阳县', '411700'), -('411725', '确山县', '411700'), -('411726', '泌阳县', '411700'), -('411727', '汝南县', '411700'), -('411728', '遂平县', '411700'), -('411729', '新蔡县', '411700'), -('419000', '省直辖县级行政区划', '410000'), -('419001', '济源市', '419000'), -('420000', '湖北省', null), -('420100', '武汉市', '420000'), -('420102', '江岸区', '420100'), -('420103', '江汉区', '420100'), -('420104', '硚口区', '420100'), -('420105', '汉阳区', '420100'), -('420106', '武昌区', '420100'), -('420107', '青山区', '420100'), -('420111', '洪山区', '420100'), -('420112', '东西湖区', '420100'), -('420113', '汉南区', '420100'), -('420114', '蔡甸区', '420100'), -('420115', '江夏区', '420100'), -('420116', '黄陂区', '420100'), -('420117', '新洲区', '420100'), -('420200', '黄石市', '420000'), -('420202', '黄石港区', '420200'), -('420203', '西塞山区', '420200'), -('420204', '下陆区', '420200'), -('420205', '铁山区', '420200'), -('420222', '阳新县', '420200'), -('420281', '大冶市', '420200'), -('420300', '十堰市', '420000'), -('420302', '茅箭区', '420300'), -('420303', '张湾区', '420300'), -('420304', '郧阳区', '420300'), -('420322', '郧西县', '420300'), -('420323', '竹山县', '420300'), -('420324', '竹溪县', '420300'), -('420325', '房县', '420300'), -('420381', '丹江口市', '420300'), -('420500', '宜昌市', '420000'), -('420502', '西陵区', '420500'), -('420503', '伍家岗区', '420500'), -('420504', '点军区', '420500'), -('420505', '猇亭区', '420500'), -('420506', '夷陵区', '420500'), -('420525', '远安县', '420500'), -('420526', '兴山县', '420500'), -('420527', '秭归县', '420500'), -('420528', '长阳土家族自治县', '420500'), -('420529', '五峰土家族自治县', '420500'), -('420581', '宜都市', '420500'), -('420582', '当阳市', '420500'), -('420583', '枝江市', '420500'), -('420600', '襄阳市', '420000'), -('420602', '襄城区', '420600'), -('420606', '樊城区', '420600'), -('420607', '襄州区', '420600'), -('420624', '南漳县', '420600'), -('420625', '谷城县', '420600'), -('420626', '保康县', '420600'), -('420682', '老河口市', '420600'), -('420683', '枣阳市', '420600'), -('420684', '宜城市', '420600'), -('420700', '鄂州市', '420000'), -('420702', '梁子湖区', '420700'), -('420703', '华容区', '420700'), -('420704', '鄂城区', '420700'), -('420800', '荆门市', '420000'), -('420802', '东宝区', '420800'), -('420804', '掇刀区', '420800'), -('420821', '京山县', '420800'), -('420822', '沙洋县', '420800'), -('420881', '钟祥市', '420800'), -('420900', '孝感市', '420000'), -('420902', '孝南区', '420900'), -('420921', '孝昌县', '420900'), -('420922', '大悟县', '420900'), -('420923', '云梦县', '420900'), -('420981', '应城市', '420900'), -('420982', '安陆市', '420900'), -('420984', '汉川市', '420900'), -('421000', '荆州市', '420000'), -('421002', '沙市区', '421000'), -('421003', '荆州区', '421000'), -('421022', '公安县', '421000'), -('421023', '监利县', '421000'), -('421024', '江陵县', '421000'), -('421081', '石首市', '421000'), -('421083', '洪湖市', '421000'), -('421087', '松滋市', '421000'), -('421100', '黄冈市', '420000'), -('421102', '黄州区', '421100'), -('421121', '团风县', '421100'), -('421122', '红安县', '421100'), -('421123', '罗田县', '421100'), -('421124', '英山县', '421100'), -('421125', '浠水县', '421100'), -('421126', '蕲春县', '421100'), -('421127', '黄梅县', '421100'), -('421181', '麻城市', '421100'), -('421182', '武穴市', '421100'), -('421200', '咸宁市', '420000'), -('421202', '咸安区', '421200'), -('421221', '嘉鱼县', '421200'), -('421222', '通城县', '421200'), -('421223', '崇阳县', '421200'), -('421224', '通山县', '421200'), -('421281', '赤壁市', '421200'), -('421300', '随州市', '420000'), -('421303', '曾都区', '421300'), -('421321', '随县', '421300'), -('421381', '广水市', '421300'), -('422800', '恩施土家族苗族自治州', '420000'), -('422801', '恩施市', '422800'), -('422802', '利川市', '422800'), -('422822', '建始县', '422800'), -('422823', '巴东县', '422800'), -('422825', '宣恩县', '422800'), -('422826', '咸丰县', '422800'), -('422827', '来凤县', '422800'), -('422828', '鹤峰县', '422800'), -('429000', '省直辖县级行政区划', '420000'), -('429004', '仙桃市', '429000'), -('429005', '潜江市', '429000'), -('429006', '天门市', '429000'), -('429021', '神农架林区', '429000'), -('430000', '湖南省', null), -('430100', '长沙市', '430000'), -('430102', '芙蓉区', '430100'), -('430103', '天心区', '430100'), -('430104', '岳麓区', '430100'), -('430105', '开福区', '430100'), -('430111', '雨花区', '430100'), -('430112', '望城区', '430100'), -('430121', '长沙县', '430100'), -('430124', '宁乡县', '430100'), -('430181', '浏阳市', '430100'), -('430200', '株洲市', '430000'), -('430202', '荷塘区', '430200'), -('430203', '芦淞区', '430200'), -('430204', '石峰区', '430200'), -('430211', '天元区', '430200'), -('430221', '株洲县', '430200'), -('430223', '攸县', '430200'), -('430224', '茶陵县', '430200'), -('430225', '炎陵县', '430200'), -('430281', '醴陵市', '430200'), -('430300', '湘潭市', '430000'), -('430302', '雨湖区', '430300'), -('430304', '岳塘区', '430300'), -('430321', '湘潭县', '430300'), -('430381', '湘乡市', '430300'), -('430382', '韶山市', '430300'), -('430400', '衡阳市', '430000'), -('430405', '珠晖区', '430400'), -('430406', '雁峰区', '430400'), -('430407', '石鼓区', '430400'), -('430408', '蒸湘区', '430400'), -('430412', '南岳区', '430400'), -('430421', '衡阳县', '430400'), -('430422', '衡南县', '430400'), -('430423', '衡山县', '430400'), -('430424', '衡东县', '430400'), -('430426', '祁东县', '430400'), -('430481', '耒阳市', '430400'), -('430482', '常宁市', '430400'), -('430500', '邵阳市', '430000'), -('430502', '双清区', '430500'), -('430503', '大祥区', '430500'), -('430511', '北塔区', '430500'), -('430521', '邵东县', '430500'), -('430522', '新邵县', '430500'), -('430523', '邵阳县', '430500'), -('430524', '隆回县', '430500'), -('430525', '洞口县', '430500'), -('430527', '绥宁县', '430500'), -('430528', '新宁县', '430500'), -('430529', '城步苗族自治县', '430500'), -('430581', '武冈市', '430500'), -('430600', '岳阳市', '430000'), -('430602', '岳阳楼区', '430600'), -('430603', '云溪区', '430600'), -('430611', '君山区', '430600'), -('430621', '岳阳县', '430600'), -('430623', '华容县', '430600'), -('430624', '湘阴县', '430600'), -('430626', '平江县', '430600'), -('430681', '汨罗市', '430600'), -('430682', '临湘市', '430600'), -('430700', '常德市', '430000'), -('430702', '武陵区', '430700'), -('430703', '鼎城区', '430700'), -('430721', '安乡县', '430700'), -('430722', '汉寿县', '430700'), -('430723', '澧县', '430700'), -('430724', '临澧县', '430700'), -('430725', '桃源县', '430700'), -('430726', '石门县', '430700'), -('430781', '津市市', '430700'), -('430800', '张家界市', '430000'), -('430802', '永定区', '430800'), -('430811', '武陵源区', '430800'), -('430821', '慈利县', '430800'), -('430822', '桑植县', '430800'), -('430900', '益阳市', '430000'), -('430902', '资阳区', '430900'), -('430903', '赫山区', '430900'), -('430921', '南县', '430900'), -('430922', '桃江县', '430900'), -('430923', '安化县', '430900'), -('430981', '沅江市', '430900'), -('431000', '郴州市', '430000'), -('431002', '北湖区', '431000'), -('431003', '苏仙区', '431000'), -('431021', '桂阳县', '431000'), -('431022', '宜章县', '431000'), -('431023', '永兴县', '431000'), -('431024', '嘉禾县', '431000'), -('431025', '临武县', '431000'), -('431026', '汝城县', '431000'), -('431027', '桂东县', '431000'), -('431028', '安仁县', '431000'), -('431081', '资兴市', '431000'), -('431100', '永州市', '430000'), -('431102', '零陵区', '431100'), -('431103', '冷水滩区', '431100'), -('431121', '祁阳县', '431100'), -('431122', '东安县', '431100'), -('431123', '双牌县', '431100'), -('431124', '道县', '431100'), -('431125', '江永县', '431100'), -('431126', '宁远县', '431100'), -('431127', '蓝山县', '431100'), -('431128', '新田县', '431100'), -('431129', '江华瑶族自治县', '431100'), -('431200', '怀化市', '430000'), -('431202', '鹤城区', '431200'), -('431221', '中方县', '431200'), -('431222', '沅陵县', '431200'), -('431223', '辰溪县', '431200'), -('431224', '溆浦县', '431200'), -('431225', '会同县', '431200'), -('431226', '麻阳苗族自治县', '431200'), -('431227', '新晃侗族自治县', '431200'), -('431228', '芷江侗族自治县', '431200'), -('431229', '靖州苗族侗族自治县', '431200'), -('431230', '通道侗族自治县', '431200'), -('431281', '洪江市', '431200'), -('431300', '娄底市', '430000'), -('431302', '娄星区', '431300'), -('431321', '双峰县', '431300'), -('431322', '新化县', '431300'), -('431381', '冷水江市', '431300'), -('431382', '涟源市', '431300'), -('433100', '湘西土家族苗族自治州', '430000'), -('433101', '吉首市', '433100'), -('433122', '泸溪县', '433100'), -('433123', '凤凰县', '433100'), -('433124', '花垣县', '433100'), -('433125', '保靖县', '433100'), -('433126', '古丈县', '433100'), -('433127', '永顺县', '433100'), -('433130', '龙山县', '433100'), -('440000', '广东省', null), -('440100', '广州市', '440000'), -('440103', '荔湾区', '440100'), -('440104', '越秀区', '440100'), -('440105', '海珠区', '440100'), -('440106', '天河区', '440100'), -('440111', '白云区', '440100'), -('440112', '黄埔区', '440100'), -('440113', '番禺区', '440100'), -('440114', '花都区', '440100'), -('440115', '南沙区', '440100'), -('440117', '从化区', '440100'), -('440118', '增城区', '440100'), -('440200', '韶关市', '440000'), -('440203', '武江区', '440200'), -('440204', '浈江区', '440200'), -('440205', '曲江区', '440200'), -('440222', '始兴县', '440200'), -('440224', '仁化县', '440200'), -('440229', '翁源县', '440200'), -('440232', '乳源瑶族自治县', '440200'), -('440233', '新丰县', '440200'), -('440281', '乐昌市', '440200'), -('440282', '南雄市', '440200'), -('440300', '深圳市', '440000'), -('440303', '罗湖区', '440300'), -('440304', '福田区', '440300'), -('440305', '南山区', '440300'), -('440306', '宝安区', '440300'), -('440307', '龙岗区', '440300'), -('440308', '盐田区', '440300'), -('440400', '珠海市', '440000'), -('440402', '香洲区', '440400'), -('440403', '斗门区', '440400'), -('440404', '金湾区', '440400'), -('440500', '汕头市', '440000'), -('440507', '龙湖区', '440500'), -('440511', '金平区', '440500'), -('440512', '濠江区', '440500'), -('440513', '潮阳区', '440500'), -('440514', '潮南区', '440500'), -('440515', '澄海区', '440500'), -('440523', '南澳县', '440500'), -('440600', '佛山市', '440000'), -('440604', '禅城区', '440600'), -('440605', '南海区', '440600'), -('440606', '顺德区', '440600'), -('440607', '三水区', '440600'), -('440608', '高明区', '440600'), -('440700', '江门市', '440000'), -('440703', '蓬江区', '440700'), -('440704', '江海区', '440700'), -('440705', '新会区', '440700'), -('440781', '台山市', '440700'), -('440783', '开平市', '440700'), -('440784', '鹤山市', '440700'), -('440785', '恩平市', '440700'), -('440800', '湛江市', '440000'), -('440802', '赤坎区', '440800'), -('440803', '霞山区', '440800'), -('440804', '坡头区', '440800'), -('440811', '麻章区', '440800'), -('440823', '遂溪县', '440800'), -('440825', '徐闻县', '440800'), -('440881', '廉江市', '440800'), -('440882', '雷州市', '440800'), -('440883', '吴川市', '440800'), -('440900', '茂名市', '440000'), -('440902', '茂南区', '440900'), -('440904', '电白区', '440900'), -('440981', '高州市', '440900'), -('440982', '化州市', '440900'), -('440983', '信宜市', '440900'), -('441200', '肇庆市', '440000'), -('441202', '端州区', '441200'), -('441203', '鼎湖区', '441200'), -('441204', '高要区', '441200'), -('441223', '广宁县', '441200'), -('441224', '怀集县', '441200'), -('441225', '封开县', '441200'), -('441226', '德庆县', '441200'), -('441284', '四会市', '441200'), -('441300', '惠州市', '440000'), -('441302', '惠城区', '441300'), -('441303', '惠阳区', '441300'), -('441322', '博罗县', '441300'), -('441323', '惠东县', '441300'), -('441324', '龙门县', '441300'), -('441400', '梅州市', '440000'), -('441402', '梅江区', '441400'), -('441403', '梅县区', '441400'), -('441422', '大埔县', '441400'), -('441423', '丰顺县', '441400'), -('441424', '五华县', '441400'), -('441426', '平远县', '441400'), -('441427', '蕉岭县', '441400'), -('441481', '兴宁市', '441400'), -('441500', '汕尾市', '440000'), -('441502', '城区', '441500'), -('441521', '海丰县', '441500'), -('441523', '陆河县', '441500'), -('441581', '陆丰市', '441500'), -('441600', '河源市', '440000'), -('441602', '源城区', '441600'), -('441621', '紫金县', '441600'), -('441622', '龙川县', '441600'), -('441623', '连平县', '441600'), -('441624', '和平县', '441600'), -('441625', '东源县', '441600'), -('441700', '阳江市', '440000'), -('441702', '江城区', '441700'), -('441704', '阳东区', '441700'), -('441721', '阳西县', '441700'), -('441781', '阳春市', '441700'), -('441800', '清远市', '440000'), -('441802', '清城区', '441800'), -('441803', '清新区', '441800'), -('441821', '佛冈县', '441800'), -('441823', '阳山县', '441800'), -('441825', '连山壮族瑶族自治县', '441800'), -('441826', '连南瑶族自治县', '441800'), -('441881', '英德市', '441800'), -('441882', '连州市', '441800'), -('441900', '东莞市', '440000'), -('442000', '中山市', '440000'), -('445100', '潮州市', '440000'), -('445102', '湘桥区', '445100'), -('445103', '潮安区', '445100'), -('445122', '饶平县', '445100'), -('445200', '揭阳市', '440000'), -('445202', '榕城区', '445200'), -('445203', '揭东区', '445200'), -('445222', '揭西县', '445200'), -('445224', '惠来县', '445200'), -('445281', '普宁市', '445200'), -('445300', '云浮市', '440000'), -('445302', '云城区', '445300'), -('445303', '云安区', '445300'), -('445321', '新兴县', '445300'), -('445322', '郁南县', '445300'), -('445381', '罗定市', '445300'), -('450000', '广西壮族自治区', null), -('450100', '南宁市', '450000'), -('450102', '兴宁区', '450100'), -('450103', '青秀区', '450100'), -('450105', '江南区', '450100'), -('450107', '西乡塘区', '450100'), -('450108', '良庆区', '450100'), -('450109', '邕宁区', '450100'), -('450110', '武鸣区', '450100'), -('450123', '隆安县', '450100'), -('450124', '马山县', '450100'), -('450125', '上林县', '450100'), -('450126', '宾阳县', '450100'), -('450127', '横县', '450100'), -('450200', '柳州市', '450000'), -('450202', '城中区', '450200'), -('450203', '鱼峰区', '450200'), -('450204', '柳南区', '450200'), -('450205', '柳北区', '450200'), -('450206', '柳江区', '450200'), -('450222', '柳城县', '450200'), -('450223', '鹿寨县', '450200'), -('450224', '融安县', '450200'), -('450225', '融水苗族自治县', '450200'), -('450226', '三江侗族自治县', '450200'), -('450300', '桂林市', '450000'), -('450302', '秀峰区', '450300'), -('450303', '叠彩区', '450300'), -('450304', '象山区', '450300'), -('450305', '七星区', '450300'), -('450311', '雁山区', '450300'), -('450312', '临桂区', '450300'), -('450321', '阳朔县', '450300'), -('450323', '灵川县', '450300'), -('450324', '全州县', '450300'), -('450325', '兴安县', '450300'), -('450326', '永福县', '450300'), -('450327', '灌阳县', '450300'), -('450328', '龙胜各族自治县', '450300'), -('450329', '资源县', '450300'), -('450330', '平乐县', '450300'), -('450331', '荔浦县', '450300'), -('450332', '恭城瑶族自治县', '450300'), -('450400', '梧州市', '450000'), -('450403', '万秀区', '450400'), -('450405', '长洲区', '450400'), -('450406', '龙圩区', '450400'), -('450421', '苍梧县', '450400'), -('450422', '藤县', '450400'), -('450423', '蒙山县', '450400'), -('450481', '岑溪市', '450400'), -('450500', '北海市', '450000'), -('450502', '海城区', '450500'), -('450503', '银海区', '450500'), -('450512', '铁山港区', '450500'), -('450521', '合浦县', '450500'), -('450600', '防城港市', '450000'), -('450602', '港口区', '450600'), -('450603', '防城区', '450600'), -('450621', '上思县', '450600'), -('450681', '东兴市', '450600'), -('450700', '钦州市', '450000'), -('450702', '钦南区', '450700'), -('450703', '钦北区', '450700'), -('450721', '灵山县', '450700'), -('450722', '浦北县', '450700'), -('450800', '贵港市', '450000'), -('450802', '港北区', '450800'), -('450803', '港南区', '450800'), -('450804', '覃塘区', '450800'), -('450821', '平南县', '450800'), -('450881', '桂平市', '450800'), -('450900', '玉林市', '450000'), -('450902', '玉州区', '450900'), -('450903', '福绵区', '450900'), -('450921', '容县', '450900'), -('450922', '陆川县', '450900'), -('450923', '博白县', '450900'), -('450924', '兴业县', '450900'), -('450981', '北流市', '450900'), -('451000', '百色市', '450000'), -('451002', '右江区', '451000'), -('451021', '田阳县', '451000'), -('451022', '田东县', '451000'), -('451023', '平果县', '451000'), -('451024', '德保县', '451000'), -('451026', '那坡县', '451000'), -('451027', '凌云县', '451000'), -('451028', '乐业县', '451000'), -('451029', '田林县', '451000'), -('451030', '西林县', '451000'), -('451031', '隆林各族自治县', '451000'), -('451081', '靖西市', '451000'), -('451100', '贺州市', '450000'), -('451102', '八步区', '451100'), -('451103', '平桂区', '451100'), -('451121', '昭平县', '451100'), -('451122', '钟山县', '451100'), -('451123', '富川瑶族自治县', '451100'), -('451200', '河池市', '450000'), -('451202', '金城江区', '451200'), -('451221', '南丹县', '451200'), -('451222', '天峨县', '451200'), -('451223', '凤山县', '451200'), -('451224', '东兰县', '451200'), -('451225', '罗城仫佬族自治县', '451200'), -('451226', '环江毛南族自治县', '451200'), -('451227', '巴马瑶族自治县', '451200'), -('451228', '都安瑶族自治县', '451200'), -('451229', '大化瑶族自治县', '451200'), -('451281', '宜州市', '451200'), -('451300', '来宾市', '450000'), -('451302', '兴宾区', '451300'), -('451321', '忻城县', '451300'), -('451322', '象州县', '451300'), -('451323', '武宣县', '451300'), -('451324', '金秀瑶族自治县', '451300'), -('451381', '合山市', '451300'), -('451400', '崇左市', '450000'), -('451402', '江州区', '451400'), -('451421', '扶绥县', '451400'), -('451422', '宁明县', '451400'), -('451423', '龙州县', '451400'), -('451424', '大新县', '451400'), -('451425', '天等县', '451400'), -('451481', '凭祥市', '451400'), -('460000', '海南省', null), -('460100', '海口市', '460000'), -('460105', '秀英区', '460100'), -('460106', '龙华区', '460100'), -('460107', '琼山区', '460100'), -('460108', '美兰区', '460100'), -('460200', '三亚市', '460000'), -('460202', '海棠区', '460200'), -('460203', '吉阳区', '460200'), -('460204', '天涯区', '460200'), -('460205', '崖州区', '460200'), -('460300', '三沙市', '460000'), -('460400', '儋州市', '460000'), -('469000', '省直辖县级行政区划', '460000'), -('469001', '五指山市', '469000'), -('469002', '琼海市', '469000'), -('469005', '文昌市', '469000'), -('469006', '万宁市', '469000'), -('469007', '东方市', '469000'), -('469021', '定安县', '469000'), -('469022', '屯昌县', '469000'), -('469023', '澄迈县', '469000'), -('469024', '临高县', '469000'), -('469025', '白沙黎族自治县', '469000'), -('469026', '昌江黎族自治县', '469000'), -('469027', '乐东黎族自治县', '469000'), -('469028', '陵水黎族自治县', '469000'), -('469029', '保亭黎族苗族自治县', '469000'), -('469030', '琼中黎族苗族自治县', '469000'), -('500000', '重庆市', null), -('500100', '重庆市', '500000'), -('500101', '万州区', '500100'), -('500102', '涪陵区', '500100'), -('500103', '渝中区', '500100'), -('500104', '大渡口区', '500100'), -('500105', '江北区', '500100'), -('500106', '沙坪坝区', '500100'), -('500107', '九龙坡区', '500100'), -('500108', '南岸区', '500100'), -('500109', '北碚区', '500100'), -('500110', '綦江区', '500100'), -('500111', '大足区', '500100'), -('500112', '渝北区', '500100'), -('500113', '巴南区', '500100'), -('500114', '黔江区', '500100'), -('500115', '长寿区', '500100'), -('500116', '江津区', '500100'), -('500117', '合川区', '500100'), -('500118', '永川区', '500100'), -('500119', '南川区', '500100'), -('500120', '璧山区', '500100'), -('500151', '铜梁区', '500100'), -('500152', '潼南区', '500100'), -('500153', '荣昌区', '500100'), -('500154', '开州区', '500100'), -('500200', '县', '500000'), -('500228', '梁平县', '500200'), -('500229', '城口县', '500200'), -('500230', '丰都县', '500200'), -('500231', '垫江县', '500200'), -('500232', '武隆县', '500200'), -('500233', '忠县', '500200'), -('500235', '云阳县', '500200'), -('500236', '奉节县', '500200'), -('500237', '巫山县', '500200'), -('500238', '巫溪县', '500200'), -('500240', '石柱土家族自治县', '500200'), -('500241', '秀山土家族苗族自治县', '500200'), -('500242', '酉阳土家族苗族自治县', '500200'), -('500243', '彭水苗族土家族自治县', '500200'), -('510000', '四川省', null), -('510100', '成都市', '510000'), -('510104', '锦江区', '510100'), -('510105', '青羊区', '510100'), -('510106', '金牛区', '510100'), -('510107', '武侯区', '510100'), -('510108', '成华区', '510100'), -('510112', '龙泉驿区', '510100'), -('510113', '青白江区', '510100'), -('510114', '新都区', '510100'), -('510115', '温江区', '510100'), -('510116', '双流区', '510100'), -('510121', '金堂县', '510100'), -('510124', '郫县', '510100'), -('510129', '大邑县', '510100'), -('510131', '蒲江县', '510100'), -('510132', '新津县', '510100'), -('510181', '都江堰市', '510100'), -('510182', '彭州市', '510100'), -('510183', '邛崃市', '510100'), -('510184', '崇州市', '510100'), -('510185', '简阳市', '510100'), -('510300', '自贡市', '510000'), -('510302', '自流井区', '510300'), -('510303', '贡井区', '510300'), -('510304', '大安区', '510300'), -('510311', '沿滩区', '510300'), -('510321', '荣县', '510300'), -('510322', '富顺县', '510300'), -('510400', '攀枝花市', '510000'), -('510402', '东区', '510400'), -('510403', '西区', '510400'), -('510411', '仁和区', '510400'), -('510421', '米易县', '510400'), -('510422', '盐边县', '510400'), -('510500', '泸州市', '510000'), -('510502', '江阳区', '510500'), -('510503', '纳溪区', '510500'), -('510504', '龙马潭区', '510500'), -('510521', '泸县', '510500'), -('510522', '合江县', '510500'), -('510524', '叙永县', '510500'), -('510525', '古蔺县', '510500'), -('510600', '德阳市', '510000'), -('510603', '旌阳区', '510600'), -('510623', '中江县', '510600'), -('510626', '罗江县', '510600'), -('510681', '广汉市', '510600'), -('510682', '什邡市', '510600'), -('510683', '绵竹市', '510600'), -('510700', '绵阳市', '510000'), -('510703', '涪城区', '510700'), -('510704', '游仙区', '510700'), -('510705', '安州区', '510700'), -('510722', '三台县', '510700'), -('510723', '盐亭县', '510700'), -('510725', '梓潼县', '510700'), -('510726', '北川羌族自治县', '510700'), -('510727', '平武县', '510700'), -('510781', '江油市', '510700'), -('510800', '广元市', '510000'), -('510802', '利州区', '510800'), -('510811', '昭化区', '510800'), -('510812', '朝天区', '510800'), -('510821', '旺苍县', '510800'), -('510822', '青川县', '510800'), -('510823', '剑阁县', '510800'), -('510824', '苍溪县', '510800'), -('510900', '遂宁市', '510000'), -('510903', '船山区', '510900'), -('510904', '安居区', '510900'), -('510921', '蓬溪县', '510900'), -('510922', '射洪县', '510900'), -('510923', '大英县', '510900'), -('511000', '内江市', '510000'), -('511002', '市中区', '511000'), -('511011', '东兴区', '511000'), -('511024', '威远县', '511000'), -('511025', '资中县', '511000'), -('511028', '隆昌县', '511000'), -('511100', '乐山市', '510000'), -('511102', '市中区', '511100'), -('511111', '沙湾区', '511100'), -('511112', '五通桥区', '511100'), -('511113', '金口河区', '511100'), -('511123', '犍为县', '511100'), -('511124', '井研县', '511100'), -('511126', '夹江县', '511100'), -('511129', '沐川县', '511100'), -('511132', '峨边彝族自治县', '511100'), -('511133', '马边彝族自治县', '511100'), -('511181', '峨眉山市', '511100'), -('511300', '南充市', '510000'), -('511302', '顺庆区', '511300'), -('511303', '高坪区', '511300'), -('511304', '嘉陵区', '511300'), -('511321', '南部县', '511300'), -('511322', '营山县', '511300'), -('511323', '蓬安县', '511300'), -('511324', '仪陇县', '511300'), -('511325', '西充县', '511300'), -('511381', '阆中市', '511300'), -('511400', '眉山市', '510000'), -('511402', '东坡区', '511400'), -('511403', '彭山区', '511400'), -('511421', '仁寿县', '511400'), -('511423', '洪雅县', '511400'), -('511424', '丹棱县', '511400'), -('511425', '青神县', '511400'), -('511500', '宜宾市', '510000'), -('511502', '翠屏区', '511500'), -('511503', '南溪区', '511500'), -('511521', '宜宾县', '511500'), -('511523', '江安县', '511500'), -('511524', '长宁县', '511500'), -('511525', '高县', '511500'), -('511526', '珙县', '511500'), -('511527', '筠连县', '511500'), -('511528', '兴文县', '511500'), -('511529', '屏山县', '511500'), -('511600', '广安市', '510000'), -('511602', '广安区', '511600'), -('511603', '前锋区', '511600'), -('511621', '岳池县', '511600'), -('511622', '武胜县', '511600'), -('511623', '邻水县', '511600'), -('511681', '华蓥市', '511600'), -('511700', '达州市', '510000'), -('511702', '通川区', '511700'), -('511703', '达川区', '511700'), -('511722', '宣汉县', '511700'), -('511723', '开江县', '511700'), -('511724', '大竹县', '511700'), -('511725', '渠县', '511700'), -('511781', '万源市', '511700'), -('511800', '雅安市', '510000'), -('511802', '雨城区', '511800'), -('511803', '名山区', '511800'), -('511822', '荥经县', '511800'), -('511823', '汉源县', '511800'), -('511824', '石棉县', '511800'), -('511825', '天全县', '511800'), -('511826', '芦山县', '511800'), -('511827', '宝兴县', '511800'), -('511900', '巴中市', '510000'), -('511902', '巴州区', '511900'), -('511903', '恩阳区', '511900'), -('511921', '通江县', '511900'), -('511922', '南江县', '511900'), -('511923', '平昌县', '511900'), -('512000', '资阳市', '510000'), -('512002', '雁江区', '512000'), -('512021', '安岳县', '512000'), -('512022', '乐至县', '512000'), -('513200', '阿坝藏族羌族自治州', '510000'), -('513201', '马尔康市', '513200'), -('513221', '汶川县', '513200'), -('513222', '理县', '513200'), -('513223', '茂县', '513200'), -('513224', '松潘县', '513200'), -('513225', '九寨沟县', '513200'), -('513226', '金川县', '513200'), -('513227', '小金县', '513200'), -('513228', '黑水县', '513200'), -('513230', '壤塘县', '513200'), -('513231', '阿坝县', '513200'), -('513232', '若尔盖县', '513200'), -('513233', '红原县', '513200'), -('513300', '甘孜藏族自治州', '510000'), -('513301', '康定市', '513300'), -('513322', '泸定县', '513300'), -('513323', '丹巴县', '513300'), -('513324', '九龙县', '513300'), -('513325', '雅江县', '513300'), -('513326', '道孚县', '513300'), -('513327', '炉霍县', '513300'), -('513328', '甘孜县', '513300'), -('513329', '新龙县', '513300'), -('513330', '德格县', '513300'), -('513331', '白玉县', '513300'), -('513332', '石渠县', '513300'), -('513333', '色达县', '513300'), -('513334', '理塘县', '513300'), -('513335', '巴塘县', '513300'), -('513336', '乡城县', '513300'), -('513337', '稻城县', '513300'), -('513338', '得荣县', '513300'), -('513400', '凉山彝族自治州', '510000'), -('513401', '西昌市', '513400'), -('513422', '木里藏族自治县', '513400'), -('513423', '盐源县', '513400'), -('513424', '德昌县', '513400'), -('513425', '会理县', '513400'), -('513426', '会东县', '513400'), -('513427', '宁南县', '513400'), -('513428', '普格县', '513400'), -('513429', '布拖县', '513400'), -('513430', '金阳县', '513400'), -('513431', '昭觉县', '513400'), -('513432', '喜德县', '513400'), -('513433', '冕宁县', '513400'), -('513434', '越西县', '513400'), -('513435', '甘洛县', '513400'), -('513436', '美姑县', '513400'), -('513437', '雷波县', '513400'), -('520000', '贵州省', null), -('520100', '贵阳市', '520000'), -('520102', '南明区', '520100'), -('520103', '云岩区', '520100'), -('520111', '花溪区', '520100'), -('520112', '乌当区', '520100'), -('520113', '白云区', '520100'), -('520115', '观山湖区', '520100'), -('520121', '开阳县', '520100'), -('520122', '息烽县', '520100'), -('520123', '修文县', '520100'), -('520181', '清镇市', '520100'), -('520200', '六盘水市', '520000'), -('520201', '钟山区', '520200'), -('520203', '六枝特区', '520200'), -('520221', '水城县', '520200'), -('520222', '盘县', '520200'), -('520300', '遵义市', '520000'), -('520302', '红花岗区', '520300'), -('520303', '汇川区', '520300'), -('520304', '播州区', '520300'), -('520322', '桐梓县', '520300'), -('520323', '绥阳县', '520300'), -('520324', '正安县', '520300'), -('520325', '道真仡佬族苗族自治县', '520300'), -('520326', '务川仡佬族苗族自治县', '520300'), -('520327', '凤冈县', '520300'), -('520328', '湄潭县', '520300'), -('520329', '余庆县', '520300'), -('520330', '习水县', '520300'), -('520381', '赤水市', '520300'), -('520382', '仁怀市', '520300'), -('520400', '安顺市', '520000'), -('520402', '西秀区', '520400'), -('520403', '平坝区', '520400'), -('520422', '普定县', '520400'), -('520423', '镇宁布依族苗族自治县', '520400'), -('520424', '关岭布依族苗族自治县', '520400'), -('520425', '紫云苗族布依族自治县', '520400'), -('520500', '毕节市', '520000'), -('520502', '七星关区', '520500'), -('520521', '大方县', '520500'), -('520522', '黔西县', '520500'), -('520523', '金沙县', '520500'), -('520524', '织金县', '520500'), -('520525', '纳雍县', '520500'), -('520526', '威宁彝族回族苗族自治县', '520500'), -('520527', '赫章县', '520500'), -('520600', '铜仁市', '520000'), -('520602', '碧江区', '520600'), -('520603', '万山区', '520600'), -('520621', '江口县', '520600'), -('520622', '玉屏侗族自治县', '520600'), -('520623', '石阡县', '520600'), -('520624', '思南县', '520600'), -('520625', '印江土家族苗族自治县', '520600'), -('520626', '德江县', '520600'), -('520627', '沿河土家族自治县', '520600'), -('520628', '松桃苗族自治县', '520600'), -('522300', '黔西南布依族苗族自治州', '520000'), -('522301', '兴义市', '522300'), -('522322', '兴仁县', '522300'), -('522323', '普安县', '522300'), -('522324', '晴隆县', '522300'), -('522325', '贞丰县', '522300'), -('522326', '望谟县', '522300'), -('522327', '册亨县', '522300'), -('522328', '安龙县', '522300'), -('522600', '黔东南苗族侗族自治州', '520000'), -('522601', '凯里市', '522600'), -('522622', '黄平县', '522600'), -('522623', '施秉县', '522600'), -('522624', '三穗县', '522600'), -('522625', '镇远县', '522600'), -('522626', '岑巩县', '522600'), -('522627', '天柱县', '522600'), -('522628', '锦屏县', '522600'), -('522629', '剑河县', '522600'), -('522630', '台江县', '522600'), -('522631', '黎平县', '522600'), -('522632', '榕江县', '522600'), -('522633', '从江县', '522600'), -('522634', '雷山县', '522600'), -('522635', '麻江县', '522600'), -('522636', '丹寨县', '522600'), -('522700', '黔南布依族苗族自治州', '520000'), -('522701', '都匀市', '522700'), -('522702', '福泉市', '522700'), -('522722', '荔波县', '522700'), -('522723', '贵定县', '522700'), -('522725', '瓮安县', '522700'), -('522726', '独山县', '522700'), -('522727', '平塘县', '522700'), -('522728', '罗甸县', '522700'), -('522729', '长顺县', '522700'), -('522730', '龙里县', '522700'), -('522731', '惠水县', '522700'), -('522732', '三都水族自治县', '522700'), -('530000', '云南省', null), -('530100', '昆明市', '530000'), -('530102', '五华区', '530100'), -('530103', '盘龙区', '530100'), -('530111', '官渡区', '530100'), -('530112', '西山区', '530100'), -('530113', '东川区', '530100'), -('530114', '呈贡区', '530100'), -('530122', '晋宁县', '530100'), -('530124', '富民县', '530100'), -('530125', '宜良县', '530100'), -('530126', '石林彝族自治县', '530100'), -('530127', '嵩明县', '530100'), -('530128', '禄劝彝族苗族自治县', '530100'), -('530129', '寻甸回族彝族自治县', '530100'), -('530181', '安宁市', '530100'), -('530300', '曲靖市', '530000'), -('530302', '麒麟区', '530300'), -('530303', '沾益区', '530300'), -('530321', '马龙县', '530300'), -('530322', '陆良县', '530300'), -('530323', '师宗县', '530300'), -('530324', '罗平县', '530300'), -('530325', '富源县', '530300'), -('530326', '会泽县', '530300'), -('530381', '宣威市', '530300'), -('530400', '玉溪市', '530000'), -('530402', '红塔区', '530400'), -('530403', '江川区', '530400'), -('530422', '澄江县', '530400'), -('530423', '通海县', '530400'), -('530424', '华宁县', '530400'), -('530425', '易门县', '530400'), -('530426', '峨山彝族自治县', '530400'), -('530427', '新平彝族傣族自治县', '530400'), -('530428', '元江哈尼族彝族傣族自治县', '530400'), -('530500', '保山市', '530000'), -('530502', '隆阳区', '530500'), -('530521', '施甸县', '530500'), -('530523', '龙陵县', '530500'), -('530524', '昌宁县', '530500'), -('530581', '腾冲市', '530500'), -('530600', '昭通市', '530000'), -('530602', '昭阳区', '530600'), -('530621', '鲁甸县', '530600'), -('530622', '巧家县', '530600'), -('530623', '盐津县', '530600'), -('530624', '大关县', '530600'), -('530625', '永善县', '530600'), -('530626', '绥江县', '530600'), -('530627', '镇雄县', '530600'), -('530628', '彝良县', '530600'), -('530629', '威信县', '530600'), -('530630', '水富县', '530600'), -('530700', '丽江市', '530000'), -('530702', '古城区', '530700'), -('530721', '玉龙纳西族自治县', '530700'), -('530722', '永胜县', '530700'), -('530723', '华坪县', '530700'), -('530724', '宁蒗彝族自治县', '530700'), -('530800', '普洱市', '530000'), -('530802', '思茅区', '530800'), -('530821', '宁洱哈尼族彝族自治县', '530800'), -('530822', '墨江哈尼族自治县', '530800'), -('530823', '景东彝族自治县', '530800'), -('530824', '景谷傣族彝族自治县', '530800'), -('530825', '镇沅彝族哈尼族拉祜族自治县', '530800'), -('530826', '江城哈尼族彝族自治县', '530800'), -('530827', '孟连傣族拉祜族佤族自治县', '530800'), -('530828', '澜沧拉祜族自治县', '530800'), -('530829', '西盟佤族自治县', '530800'), -('530900', '临沧市', '530000'), -('530902', '临翔区', '530900'), -('530921', '凤庆县', '530900'), -('530922', '云县', '530900'), -('530923', '永德县', '530900'), -('530924', '镇康县', '530900'), -('530925', '双江拉祜族佤族布朗族傣族自治县', '530900'), -('530926', '耿马傣族佤族自治县', '530900'), -('530927', '沧源佤族自治县', '530900'), -('532300', '楚雄彝族自治州', '530000'), -('532301', '楚雄市', '532300'), -('532322', '双柏县', '532300'), -('532323', '牟定县', '532300'), -('532324', '南华县', '532300'), -('532325', '姚安县', '532300'), -('532326', '大姚县', '532300'), -('532327', '永仁县', '532300'), -('532328', '元谋县', '532300'), -('532329', '武定县', '532300'), -('532331', '禄丰县', '532300'), -('532500', '红河哈尼族彝族自治州', '530000'), -('532501', '个旧市', '532500'), -('532502', '开远市', '532500'), -('532503', '蒙自市', '532500'), -('532504', '弥勒市', '532500'), -('532523', '屏边苗族自治县', '532500'), -('532524', '建水县', '532500'), -('532525', '石屏县', '532500'), -('532527', '泸西县', '532500'), -('532528', '元阳县', '532500'), -('532529', '红河县', '532500'), -('532530', '金平苗族瑶族傣族自治县', '532500'), -('532531', '绿春县', '532500'), -('532532', '河口瑶族自治县', '532500'), -('532600', '文山壮族苗族自治州', '530000'), -('532601', '文山市', '532600'), -('532622', '砚山县', '532600'), -('532623', '西畴县', '532600'), -('532624', '麻栗坡县', '532600'), -('532625', '马关县', '532600'), -('532626', '丘北县', '532600'), -('532627', '广南县', '532600'), -('532628', '富宁县', '532600'), -('532800', '西双版纳傣族自治州', '530000'), -('532801', '景洪市', '532800'), -('532822', '勐海县', '532800'), -('532823', '勐腊县', '532800'), -('532900', '大理白族自治州', '530000'), -('532901', '大理市', '532900'), -('532922', '漾濞彝族自治县', '532900'), -('532923', '祥云县', '532900'), -('532924', '宾川县', '532900'), -('532925', '弥渡县', '532900'), -('532926', '南涧彝族自治县', '532900'), -('532927', '巍山彝族回族自治县', '532900'), -('532928', '永平县', '532900'), -('532929', '云龙县', '532900'), -('532930', '洱源县', '532900'), -('532931', '剑川县', '532900'), -('532932', '鹤庆县', '532900'), -('533100', '德宏傣族景颇族自治州', '530000'), -('533102', '瑞丽市', '533100'), -('533103', '芒市', '533100'), -('533122', '梁河县', '533100'), -('533123', '盈江县', '533100'), -('533124', '陇川县', '533100'), -('533300', '怒江傈僳族自治州', '530000'), -('533301', '泸水市', '533300'), -('533323', '福贡县', '533300'), -('533324', '贡山独龙族怒族自治县', '533300'), -('533325', '兰坪白族普米族自治县', '533300'), -('533400', '迪庆藏族自治州', '530000'), -('533401', '香格里拉市', '533400'), -('533422', '德钦县', '533400'), -('533423', '维西傈僳族自治县', '533400'), -('540000', '西藏自治区', null), -('540100', '拉萨市', '540000'), -('540102', '城关区', '540100'), -('540103', '堆龙德庆区', '540100'), -('540121', '林周县', '540100'), -('540122', '当雄县', '540100'), -('540123', '尼木县', '540100'), -('540124', '曲水县', '540100'), -('540126', '达孜县', '540100'), -('540127', '墨竹工卡县', '540100'), -('540200', '日喀则市', '540000'), -('540202', '桑珠孜区', '540200'), -('540221', '南木林县', '540200'), -('540222', '江孜县', '540200'), -('540223', '定日县', '540200'), -('540224', '萨迦县', '540200'), -('540225', '拉孜县', '540200'), -('540226', '昂仁县', '540200'), -('540227', '谢通门县', '540200'), -('540228', '白朗县', '540200'), -('540229', '仁布县', '540200'), -('540230', '康马县', '540200'), -('540231', '定结县', '540200'), -('540232', '仲巴县', '540200'), -('540233', '亚东县', '540200'), -('540234', '吉隆县', '540200'), -('540235', '聂拉木县', '540200'), -('540236', '萨嘎县', '540200'), -('540237', '岗巴县', '540200'), -('540300', '昌都市', '540000'), -('540302', '卡若区', '540300'), -('540321', '江达县', '540300'), -('540322', '贡觉县', '540300'), -('540323', '类乌齐县', '540300'), -('540324', '丁青县', '540300'), -('540325', '察雅县', '540300'), -('540326', '八宿县', '540300'), -('540327', '左贡县', '540300'), -('540328', '芒康县', '540300'), -('540329', '洛隆县', '540300'), -('540330', '边坝县', '540300'), -('540400', '林芝市', '540000'), -('540402', '巴宜区', '540400'), -('540421', '工布江达县', '540400'), -('540422', '米林县', '540400'), -('540423', '墨脱县', '540400'), -('540424', '波密县', '540400'), -('540425', '察隅县', '540400'), -('540426', '朗县', '540400'), -('540500', '山南市', '540000'), -('540502', '乃东区', '540500'), -('540521', '扎囊县', '540500'), -('540522', '贡嘎县', '540500'), -('540523', '桑日县', '540500'), -('540524', '琼结县', '540500'), -('540525', '曲松县', '540500'), -('540526', '措美县', '540500'), -('540527', '洛扎县', '540500'), -('540528', '加查县', '540500'), -('540529', '隆子县', '540500'), -('540530', '错那县', '540500'), -('540531', '浪卡子县', '540500'), -('542400', '那曲地区', '540000'), -('542421', '那曲县', '542400'), -('542422', '嘉黎县', '542400'), -('542423', '比如县', '542400'), -('542424', '聂荣县', '542400'), -('542425', '安多县', '542400'), -('542426', '申扎县', '542400'), -('542427', '索县', '542400'), -('542428', '班戈县', '542400'), -('542429', '巴青县', '542400'), -('542430', '尼玛县', '542400'), -('542431', '双湖县', '542400'), -('542500', '阿里地区', '540000'), -('542521', '普兰县', '542500'), -('542522', '札达县', '542500'), -('542523', '噶尔县', '542500'), -('542524', '日土县', '542500'), -('542525', '革吉县', '542500'), -('542526', '改则县', '542500'), -('542527', '措勤县', '542500'), -('610000', '陕西省', null), -('610100', '西安市', '610000'), -('610102', '新城区', '610100'), -('610103', '碑林区', '610100'), -('610104', '莲湖区', '610100'), -('610111', '灞桥区', '610100'), -('610112', '未央区', '610100'), -('610113', '雁塔区', '610100'), -('610114', '阎良区', '610100'), -('610115', '临潼区', '610100'), -('610116', '长安区', '610100'), -('610117', '高陵区', '610100'), -('610122', '蓝田县', '610100'), -('610124', '周至县', '610100'), -('610125', '户县', '610100'), -('610200', '铜川市', '610000'), -('610202', '王益区', '610200'), -('610203', '印台区', '610200'), -('610204', '耀州区', '610200'), -('610222', '宜君县', '610200'), -('610300', '宝鸡市', '610000'), -('610302', '渭滨区', '610300'), -('610303', '金台区', '610300'), -('610304', '陈仓区', '610300'), -('610322', '凤翔县', '610300'), -('610323', '岐山县', '610300'), -('610324', '扶风县', '610300'), -('610326', '眉县', '610300'), -('610327', '陇县', '610300'), -('610328', '千阳县', '610300'), -('610329', '麟游县', '610300'), -('610330', '凤县', '610300'), -('610331', '太白县', '610300'), -('610400', '咸阳市', '610000'), -('610402', '秦都区', '610400'), -('610403', '杨陵区', '610400'), -('610404', '渭城区', '610400'), -('610422', '三原县', '610400'), -('610423', '泾阳县', '610400'), -('610424', '乾县', '610400'), -('610425', '礼泉县', '610400'), -('610426', '永寿县', '610400'), -('610427', '彬县', '610400'), -('610428', '长武县', '610400'), -('610429', '旬邑县', '610400'), -('610430', '淳化县', '610400'), -('610431', '武功县', '610400'), -('610481', '兴平市', '610400'), -('610500', '渭南市', '610000'), -('610502', '临渭区', '610500'), -('610503', '华州区', '610500'), -('610522', '潼关县', '610500'), -('610523', '大荔县', '610500'), -('610524', '合阳县', '610500'), -('610525', '澄城县', '610500'), -('610526', '蒲城县', '610500'), -('610527', '白水县', '610500'), -('610528', '富平县', '610500'), -('610581', '韩城市', '610500'), -('610582', '华阴市', '610500'), -('610600', '延安市', '610000'), -('610602', '宝塔区', '610600'), -('610603', '安塞区', '610600'), -('610621', '延长县', '610600'), -('610622', '延川县', '610600'), -('610623', '子长县', '610600'), -('610625', '志丹县', '610600'), -('610626', '吴起县', '610600'), -('610627', '甘泉县', '610600'), -('610628', '富县', '610600'), -('610629', '洛川县', '610600'), -('610630', '宜川县', '610600'), -('610631', '黄龙县', '610600'), -('610632', '黄陵县', '610600'), -('610700', '汉中市', '610000'), -('610702', '汉台区', '610700'), -('610721', '南郑县', '610700'), -('610722', '城固县', '610700'), -('610723', '洋县', '610700'), -('610724', '西乡县', '610700'), -('610725', '勉县', '610700'), -('610726', '宁强县', '610700'), -('610727', '略阳县', '610700'), -('610728', '镇巴县', '610700'), -('610729', '留坝县', '610700'), -('610730', '佛坪县', '610700'), -('610800', '榆林市', '610000'), -('610802', '榆阳区', '610800'), -('610803', '横山区', '610800'), -('610821', '神木县', '610800'), -('610822', '府谷县', '610800'), -('610824', '靖边县', '610800'), -('610825', '定边县', '610800'), -('610826', '绥德县', '610800'), -('610827', '米脂县', '610800'), -('610828', '佳县', '610800'), -('610829', '吴堡县', '610800'), -('610830', '清涧县', '610800'), -('610831', '子洲县', '610800'), -('610900', '安康市', '610000'), -('610902', '汉滨区', '610900'), -('610921', '汉阴县', '610900'), -('610922', '石泉县', '610900'), -('610923', '宁陕县', '610900'), -('610924', '紫阳县', '610900'), -('610925', '岚皋县', '610900'), -('610926', '平利县', '610900'), -('610927', '镇坪县', '610900'), -('610928', '旬阳县', '610900'), -('610929', '白河县', '610900'), -('611000', '商洛市', '610000'), -('611002', '商州区', '611000'), -('611021', '洛南县', '611000'), -('611022', '丹凤县', '611000'), -('611023', '商南县', '611000'), -('611024', '山阳县', '611000'), -('611025', '镇安县', '611000'), -('611026', '柞水县', '611000'), -('620000', '甘肃省', null), -('620100', '兰州市', '620000'), -('620102', '城关区', '620100'), -('620103', '七里河区', '620100'), -('620104', '西固区', '620100'), -('620105', '安宁区', '620100'), -('620111', '红古区', '620100'), -('620121', '永登县', '620100'), -('620122', '皋兰县', '620100'), -('620123', '榆中县', '620100'), -('620200', '嘉峪关市', '620000'), -('620300', '金昌市', '620000'), -('620302', '金川区', '620300'), -('620321', '永昌县', '620300'), -('620400', '白银市', '620000'), -('620402', '白银区', '620400'), -('620403', '平川区', '620400'), -('620421', '靖远县', '620400'), -('620422', '会宁县', '620400'), -('620423', '景泰县', '620400'), -('620500', '天水市', '620000'), -('620502', '秦州区', '620500'), -('620503', '麦积区', '620500'), -('620521', '清水县', '620500'), -('620522', '秦安县', '620500'), -('620523', '甘谷县', '620500'), -('620524', '武山县', '620500'), -('620525', '张家川回族自治县', '620500'), -('620600', '武威市', '620000'), -('620602', '凉州区', '620600'), -('620621', '民勤县', '620600'), -('620622', '古浪县', '620600'), -('620623', '天祝藏族自治县', '620600'), -('620700', '张掖市', '620000'), -('620702', '甘州区', '620700'), -('620721', '肃南裕固族自治县', '620700'), -('620722', '民乐县', '620700'), -('620723', '临泽县', '620700'), -('620724', '高台县', '620700'), -('620725', '山丹县', '620700'), -('620800', '平凉市', '620000'), -('620802', '崆峒区', '620800'), -('620821', '泾川县', '620800'), -('620822', '灵台县', '620800'), -('620823', '崇信县', '620800'), -('620824', '华亭县', '620800'), -('620825', '庄浪县', '620800'), -('620826', '静宁县', '620800'), -('620900', '酒泉市', '620000'), -('620902', '肃州区', '620900'), -('620921', '金塔县', '620900'), -('620922', '瓜州县', '620900'), -('620923', '肃北蒙古族自治县', '620900'), -('620924', '阿克塞哈萨克族自治县', '620900'), -('620981', '玉门市', '620900'), -('620982', '敦煌市', '620900'), -('621000', '庆阳市', '620000'), -('621002', '西峰区', '621000'), -('621021', '庆城县', '621000'), -('621022', '环县', '621000'), -('621023', '华池县', '621000'), -('621024', '合水县', '621000'), -('621025', '正宁县', '621000'), -('621026', '宁县', '621000'), -('621027', '镇原县', '621000'), -('621100', '定西市', '620000'), -('621102', '安定区', '621100'), -('621121', '通渭县', '621100'), -('621122', '陇西县', '621100'), -('621123', '渭源县', '621100'), -('621124', '临洮县', '621100'), -('621125', '漳县', '621100'), -('621126', '岷县', '621100'), -('621200', '陇南市', '620000'), -('621202', '武都区', '621200'), -('621221', '成县', '621200'), -('621222', '文县', '621200'), -('621223', '宕昌县', '621200'), -('621224', '康县', '621200'), -('621225', '西和县', '621200'), -('621226', '礼县', '621200'), -('621227', '徽县', '621200'), -('621228', '两当县', '621200'), -('622900', '临夏回族自治州', '620000'), -('622901', '临夏市', '622900'), -('622921', '临夏县', '622900'), -('622922', '康乐县', '622900'), -('622923', '永靖县', '622900'), -('622924', '广河县', '622900'), -('622925', '和政县', '622900'), -('622926', '东乡族自治县', '622900'), -('622927', '积石山保安族东乡族撒拉族自治县', '622900'), -('623000', '甘南藏族自治州', '620000'), -('623001', '合作市', '623000'), -('623021', '临潭县', '623000'), -('623022', '卓尼县', '623000'), -('623023', '舟曲县', '623000'), -('623024', '迭部县', '623000'), -('623025', '玛曲县', '623000'), -('623026', '碌曲县', '623000'), -('623027', '夏河县', '623000'), -('630000', '青海省', null), -('630100', '西宁市', '630000'), -('630102', '城东区', '630100'), -('630103', '城中区', '630100'), -('630104', '城西区', '630100'), -('630105', '城北区', '630100'), -('630121', '大通回族土族自治县', '630100'), -('630122', '湟中县', '630100'), -('630123', '湟源县', '630100'), -('630200', '海东市', '630000'), -('630202', '乐都区', '630200'), -('630203', '平安区', '630200'), -('630222', '民和回族土族自治县', '630200'), -('630223', '互助土族自治县', '630200'), -('630224', '化隆回族自治县', '630200'), -('630225', '循化撒拉族自治县', '630200'), -('632200', '海北藏族自治州', '630000'), -('632221', '门源回族自治县', '632200'), -('632222', '祁连县', '632200'), -('632223', '海晏县', '632200'), -('632224', '刚察县', '632200'), -('632300', '黄南藏族自治州', '630000'), -('632321', '同仁县', '632300'), -('632322', '尖扎县', '632300'), -('632323', '泽库县', '632300'), -('632324', '河南蒙古族自治县', '632300'), -('632500', '海南藏族自治州', '630000'), -('632521', '共和县', '632500'), -('632522', '同德县', '632500'), -('632523', '贵德县', '632500'), -('632524', '兴海县', '632500'), -('632525', '贵南县', '632500'), -('632600', '果洛藏族自治州', '630000'), -('632621', '玛沁县', '632600'), -('632622', '班玛县', '632600'), -('632623', '甘德县', '632600'), -('632624', '达日县', '632600'), -('632625', '久治县', '632600'), -('632626', '玛多县', '632600'), -('632700', '玉树藏族自治州', '630000'), -('632701', '玉树市', '632700'), -('632722', '杂多县', '632700'), -('632723', '称多县', '632700'), -('632724', '治多县', '632700'), -('632725', '囊谦县', '632700'), -('632726', '曲麻莱县', '632700'), -('632800', '海西蒙古族藏族自治州', '630000'), -('632801', '格尔木市', '632800'), -('632802', '德令哈市', '632800'), -('632821', '乌兰县', '632800'), -('632822', '都兰县', '632800'), -('632823', '天峻县', '632800'), -('640000', '宁夏回族自治区', null), -('640100', '银川市', '640000'), -('640104', '兴庆区', '640100'), -('640105', '西夏区', '640100'), -('640106', '金凤区', '640100'), -('640121', '永宁县', '640100'), -('640122', '贺兰县', '640100'), -('640181', '灵武市', '640100'), -('640200', '石嘴山市', '640000'), -('640202', '大武口区', '640200'), -('640205', '惠农区', '640200'), -('640221', '平罗县', '640200'), -('640300', '吴忠市', '640000'), -('640302', '利通区', '640300'), -('640303', '红寺堡区', '640300'), -('640323', '盐池县', '640300'), -('640324', '同心县', '640300'), -('640381', '青铜峡市', '640300'), -('640400', '固原市', '640000'), -('640402', '原州区', '640400'), -('640422', '西吉县', '640400'), -('640423', '隆德县', '640400'), -('640424', '泾源县', '640400'), -('640425', '彭阳县', '640400'), -('640500', '中卫市', '640000'), -('640502', '沙坡头区', '640500'), -('640521', '中宁县', '640500'), -('640522', '海原县', '640500'), -('650000', '新疆维吾尔自治区', null), -('650100', '乌鲁木齐市', '650000'), -('650102', '天山区', '650100'), -('650103', '沙依巴克区', '650100'), -('650104', '新市区', '650100'), -('650105', '水磨沟区', '650100'), -('650106', '头屯河区', '650100'), -('650107', '达坂城区', '650100'), -('650109', '米东区', '650100'), -('650121', '乌鲁木齐县', '650100'), -('650200', '克拉玛依市', '650000'), -('650202', '独山子区', '650200'), -('650203', '克拉玛依区', '650200'), -('650204', '白碱滩区', '650200'), -('650205', '乌尔禾区', '650200'), -('650400', '吐鲁番市', '650000'), -('650402', '高昌区', '650400'), -('650421', '鄯善县', '650400'), -('650422', '托克逊县', '650400'), -('650500', '哈密市', '650000'), -('650502', '伊州区', '650500'), -('650521', '巴里坤哈萨克自治县', '650500'), -('650522', '伊吾县', '650500'), -('652300', '昌吉回族自治州', '650000'), -('652301', '昌吉市', '652300'), -('652302', '阜康市', '652300'), -('652323', '呼图壁县', '652300'), -('652324', '玛纳斯县', '652300'), -('652325', '奇台县', '652300'), -('652327', '吉木萨尔县', '652300'), -('652328', '木垒哈萨克自治县', '652300'), -('652700', '博尔塔拉蒙古自治州', '650000'), -('652701', '博乐市', '652700'), -('652702', '阿拉山口市', '652700'), -('652722', '精河县', '652700'), -('652723', '温泉县', '652700'), -('652800', '巴音郭楞蒙古自治州', '650000'), -('652801', '库尔勒市', '652800'), -('652822', '轮台县', '652800'), -('652823', '尉犁县', '652800'), -('652824', '若羌县', '652800'), -('652825', '且末县', '652800'), -('652826', '焉耆回族自治县', '652800'), -('652827', '和静县', '652800'), -('652828', '和硕县', '652800'), -('652829', '博湖县', '652800'), -('652900', '阿克苏地区', '650000'), -('652901', '阿克苏市', '652900'), -('652922', '温宿县', '652900'), -('652923', '库车县', '652900'), -('652924', '沙雅县', '652900'), -('652925', '新和县', '652900'), -('652926', '拜城县', '652900'), -('652927', '乌什县', '652900'), -('652928', '阿瓦提县', '652900'), -('652929', '柯坪县', '652900'), -('653000', '克孜勒苏柯尔克孜自治州', '650000'), -('653001', '阿图什市', '653000'), -('653022', '阿克陶县', '653000'), -('653023', '阿合奇县', '653000'), -('653024', '乌恰县', '653000'), -('653100', '喀什地区', '650000'), -('653101', '喀什市', '653100'), -('653121', '疏附县', '653100'), -('653122', '疏勒县', '653100'), -('653123', '英吉沙县', '653100'), -('653124', '泽普县', '653100'), -('653125', '莎车县', '653100'), -('653126', '叶城县', '653100'), -('653127', '麦盖提县', '653100'), -('653128', '岳普湖县', '653100'), -('653129', '伽师县', '653100'), -('653130', '巴楚县', '653100'), -('653131', '塔什库尔干塔吉克自治县', '653100'), -('653200', '和田地区', '650000'), -('653201', '和田市', '653200'), -('653221', '和田县', '653200'), -('653222', '墨玉县', '653200'), -('653223', '皮山县', '653200'), -('653224', '洛浦县', '653200'), -('653225', '策勒县', '653200'), -('653226', '于田县', '653200'), -('653227', '民丰县', '653200'), -('654000', '伊犁哈萨克自治州', '650000'), -('654002', '伊宁市', '654000'), -('654003', '奎屯市', '654000'), -('654004', '霍尔果斯市', '654000'), -('654021', '伊宁县', '654000'), -('654022', '察布查尔锡伯自治县', '654000'), -('654023', '霍城县', '654000'), -('654024', '巩留县', '654000'), -('654025', '新源县', '654000'), -('654026', '昭苏县', '654000'), -('654027', '特克斯县', '654000'), -('654028', '尼勒克县', '654000'), -('654200', '塔城地区', '650000'), -('654201', '塔城市', '654200'), -('654202', '乌苏市', '654200'), -('654221', '额敏县', '654200'), -('654223', '沙湾县', '654200'), -('654224', '托里县', '654200'), -('654225', '裕民县', '654200'), -('654226', '和布克赛尔蒙古自治县', '654200'), -('654300', '阿勒泰地区', '650000'), -('654301', '阿勒泰市', '654300'), -('654321', '布尔津县', '654300'), -('654322', '富蕴县', '654300'), -('654323', '福海县', '654300'), -('654324', '哈巴河县', '654300'), -('654325', '青河县', '654300'), -('654326', '吉木乃县', '654300'), -('659000', '自治区直辖县级行政区划', '650000'), -('659001', '石河子市', '659000'), -('659002', '阿拉尔市', '659000'), -('659003', '图木舒克市', '659000'), -('659004', '五家渠市', '659000'), -('659006', '铁门关市', '659000'), -('710000', '台湾省', null), -('810000', '香港特别行政区', null), -('820000', '澳门特别行政区', null); - --- 更新热门城市 -update `tb_district` set `ishot`=1 where `distid` in ('110100', '120100', '310100', '500100', '510100', '440300', '440100', '330100', '420100', '210200', '410100', '430100', '530100', '220100', '450100', '130100'); - --- 插入户型数据 -insert into `tb_house_type` (`typeid`, `name`) values -(1, '单间'), (2, '一室一厅'), (3, '两室一厅'), (4, '两室两厅'), (5, '三室一厅'), (6, '三室两厅'), (7, '四室两厅'), (8, '别墅'), (9, '其他'); - --- 插入用户数据 -insert into `tb_user` (`username`, `password`, `realname`, `sex`, `tel`, `email`, `regdate`, `point`, `is_authenticated`) values -('jackfrued', 'e10adc3949ba59abbe56e057f20f883e', '骆昊', 1, '13512345678', 'jackfrued@126.com', now(), 100, 0), -('wangdachui', '4297f44b13955235245b2497399d7a93', '王大锤', 1, '13811223344', 'wangdachui@qq.com', now(), 0, 0), -('hellokitty', '4297f44b13955235245b2497399d7a93', '白元芳', 1, '13800112233', 'baiyuanfang@163.com', now(), 50, 0), -('wuzetian', 'e10adc3949ba59abbe56e057f20f883e', '武则天', 0, '13190908080', '13190908080@163.com', now(), 0, 0); - --- 插入经济人数据 -insert into `tb_agent` (`agentid`, `name`, `tel`, `servstar`, `realstar`, `profstar`, `certificated`) values -(1, '袁晓孟', '158173555285', 5, 4, 4, 1), -(2, '杨伟', '13352939550', 3, 4, 2, 0), -(3, '谭笛', '13088898249', 5, 4, 5, 1), -(4, '郭志鹏', '13686810707', 4, 4, 4, 1), -(5, '宋伟英', '13713584047', 5, 5, 5, 1), -(6, '肖利丽', '13040813886', 4, 4, 4, 0), -(7, '赵嘉茵', '15889757173', 4, 4, 4, 1); - --- 插入楼盘数据 -insert into `tb_estate` (`estateid`, `distid`, `name`, `hot`) values -(1, 440303, '今日家园', 20), -(2, 440303, '翡翠园', 30), -(3, 440304, '万科城市花园', 22), -(4, 440306, '万象新天', 28), -(5, 440306, '汇庭居', 35), -(6, 440303, '幸福里', 300), -(7, 440303, '信兴广场', 77), -(8, 440303, '罗湖大厦', 50), -(9, 440303, '中海天钻 ', 68), -(10, 440306, '宏发前城一期', 15), -(11, 440306, '灵芝新村', 20), -(12, 440303, '名仕阁', 90), -(13, 440303, '太白居', 66), -(14, 440303, '都市名园', 15), -(15, 440303, '骏庭名园', 12), -(16, 440303, '金豪花园', 6); - - --- 插入经纪人楼盘数据 -insert into `tb_agent_estate` (`estateid`, `agentid`) values -(1, 1), (2, 1), (3, 1), (4, 2), (6, 2), (3, 3), (5, 3), (6, 4), (7, 4), (7, 5), (10, 5), (11, 6), (8, 7), (9, 7); - --- 插入标签数据 -insert into `tb_tag` (`tagid`, `content`) values -(1, '家电齐全'), (2, '拎包入住'), (3, '豪华装修'), (4, '配套齐全'), (5, '随时入住'), (6, '交通便利'), (7, '阳光充足'), (8, '地铁沿线'); - --- 插入房源信息数据 -insert into `tb_house_info` (`houseid`, `title`, `area`, `floor`, `totalfloor`, `direction`, `price`, `priceunit`, `detail`, `mainphoto`, `pubdate`, `street`, `hassubway`, `isshared`, `hasagentfees`, `typeid`, `userid`, `distid2`, `distid3`, `estateid`, `agentid`) values -(1, '113平米采光好,拎包随时就可以入住!', 113, 15, 32, '朝东南', 9800, '元/月', '拥有以上的绿化率,堪称天然氧吧,有客户称在此园能多活几十年。有专门到达公交车站,上班方便。这套房子是东南向向的2房,户型超好,大厅主卧朝向合理,每个房间都很大,客厅空间很大,敞亮,采光相当好,从太阳升起来到落下一直都有采光。', 'images/0af7d2a60ab711e9996760f81da8d840.jpg', '2018-12-28 23:04:13', '深南东道5002号', 0, 0, 1, 6, 1, 440300, 440303, 7, 5), -(2, '万象城旁,君悦酒店隔壁。幸福里精装三房,南北通透,拎包入住', 146, 10, 49, '朝东南', 22000, '元/月', '罗湖口岸紧挨万象城金光华国贸等大型购物商场前面是各种奢侈品舰店旁边是深圳六酒店(君悦酒店),周围还聚集了中国招商工商建设等银行.滨河高中等。是深圳的地段。幸福里户型方正互不遮挡带有花园式小区会所泳池健身房等设施。', 'images/1d1df6220ab711e9996760f81da8d840.jpg', '2018-12-28 22:58:33', '宝安南路1881号', 1, 0, 1, 5, 1, 440300, 440303, 6, 4), -(3, '中海天钻 精装3房2卫 租金13000起 近幸福里 万象城', 100, 10, 30, '朝南', 13000, '元/月', '本项目为深圳市鹿丹村旧改项目,罗湖区万象城,项目周边配套成熟完善,项目南侧为香港米铺保护区,自然景观资源优越。', 'images/04d9a6920ab711e9996760f81da8d840.jpg', '2018-12-28 23:22:02', '桂园街道滨河路与红岭路交汇处东南侧', 1, 0, 1, 4, 1, 440300, 440303, 9, 7), -(4, '地铁9号。靠罗湖口岸,周边出行方便', 40, 20, 35, '朝南', 5000, '元/月', '房子中层,南向,装修很好,家私家电全部配齐而且都是新的,只要带衣服入住就行了。', 'images/1090e95a0ab711e9996760f81da8d840.jpg', '2018-12-28 23:14:00', '罗湖东门建设路', 1, 0, 1, 3, 2, 440300, 440303, 8, 6), -(5, '幸福里精装三房,拎包入住!万象城旁,近口岸', 143, 15, 49, '朝南', 21000, '元/月', '罗湖口岸紧挨万象城金光华国贸等大型购物商场前面是各种奢侈品舰店旁边是深圳六酒店(君悦酒店),周围还聚集了中国招商工商建设等银行.滨河高中等。是深圳的地段。幸福里户型方正互不遮挡带有花园式小区会所泳池健身房等设施。', 'images/1587c1d60ab711e9996760f81da8d840.jpg', '2018-12-28 23:19:48', '宝安南路1881号', 1, 0, 1, 5, 1, 440300, 440303, 6, 6), -(6, '幸福里豪宅 精装修家私全齐两房 看房方便 万象城商圈', 95, 12, 35, '朝北', 17000, '元/月', '小区介绍幸福里位于万象城南侧,是华润中心的住宅部分,具备商务特征的城市资源高尚住宅。', 'images/f044f6aa0ab611e9996760f81da8d840.jpg', '2018-12-28 23:17:53', '宝安南路1881号', 1, 0, 1, 3, 2, 440300, 440303, 6, 4), -(7, '幸福里豪宅,豪华欧式全新三房,拎包入住', 143, 9, 49, '朝南', 24000, '元/月', '罗湖口岸紧挨万象城金光华国贸等大型购物商场前面是各种奢侈品舰店旁边是深圳六酒店(君悦酒店),周围还聚集了中国招商工商建设等银行.滨河高中等。是深圳的地段。幸福里户型方正互不遮挡带有花园式小区会所泳池健身房等设施。', 'images/f91d6cc60ab611e9996760f81da8d840.jpg', '2018-12-28 23:09:51', '宝安南路1881号', 1, 0, 1, 5, 1, 440300, 440303, 10, 3), -(8, '前城 豪华装修大三房 家私电器全齐 户型优雅', 89, 10, 30, '朝东南', 6200, '元/月', '宝安一号线好楼盘,全新出租住起来超舒服便利的楼盘,可随时入住,正规三房两卫,全新简欧装修,标准空房自己任性搭配。', 'images/235f8d0c0ab711e9996760f81da8d840.jpg', '2018-12-28 23:34:01', '深圳宝安大道与海城路交汇处', 1, 1, 1, 4, 2, 440300, 440306, 2, 2), -(9, '灵芝新村,精装三房,灵芝公园,5号环中线灵芝地铁站', 86, 10, 30, '朝南', 5300, '元/月', '大型小区,生活气氛浓厚。前进路旁边,前后双公园(灵芝公园,新安公园)近灵芝地铁口,交通便利。该物业位于宝安老城区位置,待拆迁物业。', 'images/6d89ad720ab711e9996760f81da8d840.jpg', '2018-12-28 23:36:16', '前进路和兴华二路交汇处', 1, 1, 1, 6, 2, 440300, 440306, 11, 3); - --- 插入房源标签数据 -insert into `tb_house_tag` (`tagid`,`houseid`) values -(1, 1), (3, 1), (4, 1), (1, 2), (2, 2), (6, 2), (2, 3), (3, 3), (5, 3), (6, 3), (7, 3), (2, 4), (4, 4), (6, 4), (3, 5), (5, 5), (7, 5), (4, 6), (5, 6), (4, 7), (7, 7); - --- 插入角色数据 -insert into `tb_role` (`roleid`, `rolename`) values -(1, '普通用户'), (2, '房东'), (3, '经纪人'), (4, '管理员'); - --- 插入用户角色数据 -insert into tb_user_role (userid, roleid) values -(1, 4), (2, 1), (3, 3), (4, 2); - --- 插入权限数据 -insert into tb_privilege (privid, url, method) values -(1, '/api/districts/', 'GET'), -(2, '/api/estates/', 'GET'), -(3, '/api/estates/', 'POST'), -(4, '/api/estates/', 'PUT'), -(5, '/api/estates/', 'DELETE'), -(6, '/api/housetypes/', 'GET'), -(7, '/api/housetypes/', 'POST'), -(8, '/api/housetypes/', 'PUT'), -(9, '/api/housetypes/', 'DELETE'), -(10, '/api/houseinfos/', 'GET'), -(11, '/api/houseinfos/', 'POST'), -(12, '/api/houseinfos/', 'PUT'), -(13, '/api/houseinfos/', 'DELETE'), -(14, '/api/tags/', 'GET'), -(15, '/api/tags/', 'POST'), -(16, '/api/tags/', 'PUT'), -(17, '/api/tags/', 'DELETE'), -(18, '/api/agents/', 'GET'), -(19, '/api/agents/', 'POST'), -(20, '/api/agents/', 'PUT'), -(21, '/api/agents/', 'DELETE'), -(22, '/api/users/', 'GET'), -(23, '/api/users/', 'POST'), -(24, '/api/users/', 'PUT'), -(25, '/api/users/', 'DELETE'), -(26, '/api/roles/', 'GET'), -(27, '/api/roles/', 'POST'), -(28, '/api/roles/', 'PUT'), -(29, '/api/roles/', 'DELETE'), -(30, '/api/privs/', 'GET'), -(31, '/api/privs/', 'POST'), -(32, '/api/privs/', 'PUT'), -(33, '/api/privs/', 'DELETE'), -(34, '/api/loginlogs/', 'GET'), -(35, '/api/loginlogs/', 'POST'), -(36, '/api/loginlogs/', 'PUT'), -(37, '/api/loginlogs/', 'DELETE'), -(38, '/api/emps/', 'GET'), -(39, '/api/emps/', 'POST'), -(40, '/api/emps/', 'PUT'), -(41, '/api/emps/', 'DELETE'), -(42, '/api/depts/', 'GET'), -(43, '/api/depts/', 'POST'), -(44, '/api/depts/', 'PUT'), -(45, '/api/depts/', 'DELETE'); - --- 插入角色权限数据 -insert into tb_role_privilege (roleid, privid) values -(1, 1), (1, 2), (1, 6), (1, 10), (1, 14), (1, 18), (2, 1), (2, 2), (2, 6), (2, 7), (2, 10), (2, 11), (2, 12), (2, 13), (2, 14), (2, 18), (3, 1), (3, 2), (3, 3), (3, 4), (3, 6), (3, 7), (3, 8), (3, 10), (3, 11), (3, 12), (3, 14), (3, 15),(3, 16), (3, 18), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (4, 10), (4, 13), (4, 14), (4, 15), (4, 16), (4, 17), (4, 18), (4, 19), (4, 20), (4, 21), (4, 22), (4, 23), (4, 24), (4, 25), (4, 26), (4, 27), (4, 28), (4, 29), (4, 30), (4, 31), (4, 32), (4, 33), (4, 34), (4, 35), (4, 36), (4, 37), (4, 38), (4, 39), (4, 40), (4, 41), (4, 42), (4, 43), (4, 44), (4, 45); diff --git a/Day36-40/code/message/内部短消息系统.txt b/Day36-40/code/message/内部短消息系统.txt new file mode 100644 index 0000000..6234216 --- /dev/null +++ b/Day36-40/code/message/内部短消息系统.txt @@ -0,0 +1,22 @@ +内部短消息系统(私信系统) + +1 登录 + 1.1 发送短消息 + 1.2 查看未读消息 + 1.2.1 读取消息 + 1.2.2 标记已读 + 1.2.3 返回上级 + 1.3 查看所有消息 + 1.3.1 读取消息 + 1.3.2 删除消息 + 1.3.3 返回上级 + 1.4 清除所有消息 + 1.5 注销 +2 注册 + 2.1 填写信息注册 + 2.2 返回上级 +3 退出 + +用户 (用户名, 口令, 最后登录时间) +短消息 (编号, 发送者, 接收者, 标题, 内容, 发送时间, 是否读取, 已删除) + diff --git a/Day36-40/code/人力资源管理.spf b/Day36-40/code/人力资源管理.spf deleted file mode 100644 index 9042725..0000000 --- a/Day36-40/code/人力资源管理.spf +++ /dev/null @@ -1,877 +0,0 @@ - - - - - ContentFilters - - auto_connect - - data - - connection - - database - hrs - host - 120.77.222.217 - kcid - 6157604644212181126 - name - MySQL@Aliyun - rdbms_type - mysql - sslCACertFileLocation - - sslCACertFileLocationEnabled - 0 - sslCertificateFileLocation - - sslCertificateFileLocationEnabled - 0 - sslKeyFileLocation - - sslKeyFileLocationEnabled - 0 - type - SPTCPIPConnection - useSSL - 0 - user - root - - session - - connectionEncoding - utf8 - contentPageNumber - 1 - contentSelection - - YnBsaXN0MDDUAQIDBAUGOTpYJHZlcnNpb25YJG9iamVjdHNZJGFy - Y2hpdmVyVCR0b3ASAAGGoK0HCBUWFxgZHSQoLDE2VSRudWxs0wkK - CwwQFFdOUy5rZXlzWk5TLm9iamVjdHNWJGNsYXNzow0OD4ACgAOA - BKMREhOABYAGgAiADFR0eXBlVHJvd3NUa2V5c18QJlNlbGVjdGlv - bkRldGFpbFR5cGVQcmltYXJ5S2V5ZWREZXRhaWxz0wkKCxobHKCg - gAfSHh8gIVokY2xhc3NuYW1lWCRjbGFzc2VzXxATTlNNdXRhYmxl - RGljdGlvbmFyeaMgIiNcTlNEaWN0aW9uYXJ5WE5TT2JqZWN00goL - JSehJoAJgAvSCykqK1lOUy5zdHJpbmeAClNlbm/SHh8tLl8QD05T - TXV0YWJsZVN0cmluZ6MtLzBYTlNTdHJpbmdYTlNPYmplY3TSHh8y - M15OU011dGFibGVBcnJheaMyNDVXTlNBcnJheVhOU09iamVjdNIe - HyI3oiI4WE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0Ts8VGRh - dGGAAQAIABEAGgAjAC0AMgA3AEUASwBSAFoAZQBsAHAAcgB0AHYA - egB8AH4AgACCAIcAjACRALoAwQDCAMMAxQDKANUA3gD0APgBBQEO - ARMBFQEXARkBHgEoASoBLgEzAUUBSQFSAVsBYAFvAXMBewGEAYkB - jAGVAacBqgGvAAAAAAAAAgEAAAAAAAAAPQAAAAAAAAAAAAAAAAAA - AbE= - - contentSortColIsAsc - - contentViewport - {{0, 0}, {694, 448}} - isToolbarVisible - - queries - -- 注意事项: --- 1. 给数据库和表命名的时候尽量使用全小写 --- 2. 作为筛选条件的字符串是否区分大小看设置的校对规则 -drop database if exists hrs; -create database hrs default charset utf8 collate utf8_general_ci; - -use hrs; - -drop table if exists tb_emp; -drop table if exists tb_dept; - --- 3. 数据库中的对象通常会用前缀加以区分 --- table / view / index / function / procedure / trigger -create table tb_dept -( -dno int not null comment '编号', -dname varchar(10) not null comment '名称', -dloc varchar(20) not null comment '所在地', -primary key (dno) -); - --- 批量插入操作 -insert into tb_dept values - (10, '会计部', '北京'), - (20, '研发部', '成都'), - (30, '销售部', '重庆'), - (40, '运维部', '深圳'); - -create table tb_emp -( -eno int not null comment '员工编号', -ename varchar(20) not null comment '员工姓名', -job varchar(20) not null comment '员工职位', -mgr int comment '主管编号', -sal int not null comment '员工月薪', -comm int comment '每月补贴', -dno int comment '所在部门编号', -primary key (eno) -); - --- 修改表添加一个列到mgr列的后面 --- alter table tb_emp add column hiredate date after mgr; - --- 修改表添加一个自参照的外键约束 --- alter table tb_emp add constraint fk_emp_mgr foreign key (mgr) references tb_emp (eno); - --- alter table tb_emp drop foreign key fk_emp_mgr; - --- alter table tb_emp drop foreign key fk_emp_dno; - --- restrict - 不允许操作 --- cascade - 级联操作 --- set null - 设置为null -alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno); --- on delete restrict on update cascade; - -insert into tb_emp values - (7800, '张三丰', '总裁', null, 9000, 1200, 20), - (2056, '乔峰', '分析师', 7800, 5000, 1500, 20), - (3088, '李莫愁', '设计师', 2056, 3500, 800, 20), - (3211, '张无忌', '程序员', 2056, 3200, null, 20), - (3233, '丘处机', '程序员', 2056, 3400, null, 20), - (3251, '张翠山', '程序员', 2056, 4000, null, 20), - (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10), - (5234, '郭靖', '出纳', 5566, 2000, null, 10), - (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30), - (1359, '胡一刀', '销售员', 3344, 1800, 200, 30), - (4466, '苗人凤', '销售员', 3344, 2500, null, 30), - (3244, '欧阳锋', '程序员', 3088, 3200, null, 20), - (3577, '杨过', '会计', 5566, 2200, null, 10), - (3588, '朱九真', '会计', 5566, 2500, null, 10); - --- 查询月薪最高的员工姓名和工资 - 子查询/嵌套查询+聚合函数 --- select ename, sal from tb_emp order by sal desc limit 1; -select ename, sal from tb_emp where sal=( - select max(sal) from tb_emp -); - --- 查询员工的姓名和年薪((月薪+补贴)*12) -select ename, (sal+ifnull(comm, 0))*12 as 年薪 from tb_emp order by 年薪 desc; - --- 查询有员工的部门的编号和人数 - 分组查询+聚合函数 -select dno, count(dno) from tb_emp group by dno with rollup; - --- 查询所有部门的名称和人数 - 子查询+连接查询(左外) -select dname as 部门名称, ifnull(total, 0) as 人数 from tb_dept t1 left join (select dno, count(dno) as total from tb_emp group by dno) t2 on t1.dno=t2.dno; - --- 查询月薪最高的员工(Boss除外)的姓名和工资 - 空值判断 -select ename, sal from tb_emp where sal=(select max(sal) from tb_emp where mgr is not null); - --- 查询月薪超过平均薪水的员工的姓名和工资 -select ename, sal from tb_emp where sal>(select avg(sal) as avgsal from tb_emp); - --- 查询月薪超过其所在部门平均薪水的员工的姓名、部门编号和工资 -select ename, t1.dno, sal, round(avgsal, 2) from tb_emp t1 inner join (select dno, avg(sal) as avgsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal>avgsal; - --- 查询部门中薪水最高的人姓名、工资和所在部门名称 -select ename, sal, dname from (select ename, sal, t1.dno from tb_emp t1 inner join (select dno, max(sal) as maxsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal=maxsal) t3 inner join tb_dept t4 on t3.dno=t4.dno; - --- 查询主管的姓名和职位 -select ename, job from tb_emp where eno in (select distinct mgr from tb_emp where mgr is not null); - --- 通常不推荐使用in或者not in集合运算和distinct去重操作 --- 可以考虑用exists或not exists替代掉集合运算和去重操作 -select ename, job from tb_emp t1 where exists (select 'x' from tb_emp t2 where t1.eno=t2.mgr); - --- 查询月薪排名4~6名的员工姓名和工资 -select ename, sal from tb_emp order by sal desc limit 3, 3; -select ename, sal from tb_emp order by sal desc limit 3 offset 3; - --- explain生成执行计划 -explain select eno, ename from tb_emp where eno=7800; -explain select eno, ename from tb_emp where eno<>7900; -explain select eno, ename from tb_emp where ename='张三丰'; -explain select eno, ename from tb_emp where ename like '张%'; -explain select eno, ename from tb_emp where ename like '%张'; -explain select eno, ename from tb_emp where ename<>'张三丰'; - --- 视图:查询的快照(简化查询操作) --- 通过视图可以将用户的访问权限限制到某些指定的列上 -create view vw_emp_dept as -select eno, ename, dname from tb_emp t1 inner join tb_dept t2 on t1.dno=t2.dno; - -select ename, dname from vw_emp_dept; - -drop view vw_emp_dept; - --- 索引(index) --- 索引可以加速查询所以应该在经常用于查询筛选条件的列上建立索引 --- 索引会使用额外的存储空间而且会让增删改变得更慢(因为要更新索引) --- 所以不能够滥用索引 -create index idx_emp_ename on tb_emp (ename); -drop index idx_emp_ename on tb_emp; - --- (存储)过程/函数:把一系列的SQL可以封装到一个过程中,而且可以加上分支和循环,将来通过过程的名字直接调用过程即可,因为创建过程时已经提前编译了SQL语句,所以比直接执行SQL语句性能更好 - --- 重新定义定界符为$$ -delimiter $$ - --- 创建存储过程 -create procedure sp_dept_avg_sal(deptno int, out avgsal float) -begin - select avg(sal) into avgsal from tb_emp where dno=deptno; -end$$ - --- 将定界符还原回; -delimiter ; - --- 调用存储过程 -call sp_dept_avg_sal(20, @a); - --- 通过输出参数取出部门平均工资 -select @a; - --- 删除存储过程 -drop procedure sp_dept_avg_sal; - --- 触发器:在执行增删改操作时可以触发其他的级联操作,但是有可能导致“锁表”现象,实际开发中应该尽量避免使用触发器 --- update tb_dept set dno=11 where dno=10; --- delete from tb_dept where dno=11; - -delimiter $$ - -create trigger tr_dept_update -after update on tb_dept for each row -begin - update tb_emp set dno=new.dno where dno=old.dno; -end$$ - -delimiter ; - -drop trigger tr_dept_update; - --- DCL:授予权限(grant to)和召回权限(revoke from) -create user 'hellokitty'@'%' identified by '123123'; - -grant all privileges on hrs.* to 'hellokitty'@'%'; - -revoke insert, delete, update on hrs.* from 'hellokitty'@'%'; - -drop user 'hellokitty'@'%'; - --- 事务(transaction)- 把多个增删改的操作做成不可分割的原子性操作 --- 要么全部都做,要么全都不做 - --- start transaction; -begin; - -delete from tb_emp; - - - - table - tb_emp - view - SP_VIEW_CUSTOMQUERY - windowVerticalDividerPosition - 163 - - - encrypted - - format - connection - queryFavorites - - queryHistory - - rollback - begin; -delete from tb_emp - -- 注意事项: --- 1. 给数据库和表命名的时候尽量使用全小写 --- 2. 作为筛选条件的字符串是否区分大小看设置的校对规则 -drop database if exists hrs; -create database hrs default charset utf8 collate utf8_general_ci; -use hrs; -drop table if exists tb_emp; -drop table if exists tb_dept; --- 3. 数据库中的对象通常会用前缀加以区分 --- table / view / index / function / procedure / trigger -create table tb_dept -( -dno int not null comment '编号', -dname varchar(10) not null comment '名称', -dloc varchar(20) not null comment '所在地', -primary key (dno) -); --- 批量插入操作 -insert into tb_dept values - (10, '会计部', '北京'), - (20, '研发部', '成都'), - (30, '销售部', '重庆'), - (40, '运维部', '深圳'); -create table tb_emp -( -eno int not null comment '员工编号', -ename varchar(20) not null comment '员工姓名', -job varchar(20) not null comment '员工职位', -mgr int comment '主管编号', -sal int not null comment '员工月薪', -comm int comment '每月补贴', -dno int comment '所在部门编号', -primary key (eno) -); --- 修改表添加一个列到mgr列的后面 --- alter table tb_emp add column hiredate date after mgr; - --- 修改表添加一个自参照的外键约束 --- alter table tb_emp add constraint fk_emp_mgr foreign key (mgr) references tb_emp (eno); - --- alter table tb_emp drop foreign key fk_emp_mgr; - --- alter table tb_emp drop foreign key fk_emp_dno; - --- restrict - 不允许操作 --- cascade - 级联操作 --- set null - 设置为null -alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno); --- on delete restrict on update cascade; - -insert into tb_emp values - (7800, '张三丰', '总裁', null, 9000, 1200, 20), - (2056, '乔峰', '分析师', 7800, 5000, 1500, 20), - (3088, '李莫愁', '设计师', 2056, 3500, 800, 20), - (3211, '张无忌', '程序员', 2056, 3200, null, 20), - (3233, '丘处机', '程序员', 2056, 3400, null, 20), - (3251, '张翠山', '程序员', 2056, 4000, null, 20), - (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10), - (5234, '郭靖', '出纳', 5566, 2000, null, 10), - (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30), - (1359, '胡一刀', '销售员', 3344, 1800, 200, 30), - (4466, '苗人凤', '销售员', 3344, 2500, null, 30), - (3244, '欧阳锋', '程序员', 3088, 3200, null, 20), - (3577, '杨过', '会计', 5566, 2200, null, 10), - (3588, '朱九真', '会计', 5566, 2500, null, 10); --- 查询月薪最高的员工姓名和工资 - 子查询/嵌套查询+聚合函数 --- select ename, sal from tb_emp order by sal desc limit 1; -select ename, sal from tb_emp where sal=( - select max(sal) from tb_emp -); --- 查询员工的姓名和年薪((月薪+补贴)*12) -select ename, (sal+ifnull(comm, 0))*12 as 年薪 from tb_emp order by 年薪 desc; --- 查询有员工的部门的编号和人数 - 分组查询+聚合函数 -select dno, count(dno) from tb_emp group by dno with rollup; --- 查询所有部门的名称和人数 - 子查询+连接查询(左外) -select dname as 部门名称, ifnull(total, 0) as 人数 from tb_dept t1 left join (select dno, count(dno) as total from tb_emp group by dno) t2 on t1.dno=t2.dno; --- 查询月薪最高的员工(Boss除外)的姓名和工资 - 空值判断 -select ename, sal from tb_emp where sal=(select max(sal) from tb_emp where mgr is not null); --- 查询月薪超过平均薪水的员工的姓名和工资 -select ename, sal from tb_emp where sal>(select avg(sal) as avgsal from tb_emp); --- 查询月薪超过其所在部门平均薪水的员工的姓名、部门编号和工资 -select ename, t1.dno, sal, round(avgsal, 2) from tb_emp t1 inner join (select dno, avg(sal) as avgsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal>avgsal; --- 查询部门中薪水最高的人姓名、工资和所在部门名称 -select ename, sal, dname from (select ename, sal, t1.dno from tb_emp t1 inner join (select dno, max(sal) as maxsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal=maxsal) t3 inner join tb_dept t4 on t3.dno=t4.dno; --- 查询主管的姓名和职位 -select ename, job from tb_emp where eno in (select distinct mgr from tb_emp where mgr is not null); --- 通常不推荐使用in或者not in集合运算和distinct去重操作 --- 可以考虑用exists或not exists替代掉集合运算和去重操作 -select ename, job from tb_emp t1 where exists (select 'x' from tb_emp t2 where t1.eno=t2.mgr); --- 查询月薪排名4~6名的员工姓名和工资 -select ename, sal from tb_emp order by sal desc limit 3, 3; -select ename, sal from tb_emp order by sal desc limit 3 offset 3; --- explain生成执行计划 -explain select eno, ename from tb_emp where eno=7800; -explain select eno, ename from tb_emp where eno<>7900; -explain select eno, ename from tb_emp where ename='张三丰'; -explain select eno, ename from tb_emp where ename like '张%'; -explain select eno, ename from tb_emp where ename like '%张'; -explain select eno, ename from tb_emp where ename<>'张三丰'; --- 视图:查询的快照(简化查询操作) --- 通过视图可以将用户的访问权限限制到某些指定的列上 -create view vw_emp_dept as -select eno, ename, dname from tb_emp t1 inner join tb_dept t2 on t1.dno=t2.dno; -select ename, dname from vw_emp_dept; -drop view vw_emp_dept; --- 索引(index) --- 索引可以加速查询所以应该在经常用于查询筛选条件的列上建立索引 --- 索引会使用额外的存储空间而且会让增删改变得更慢(因为要更新索引) --- 所以不能够滥用索引 -create index idx_emp_ename on tb_emp (ename); -drop index idx_emp_ename on tb_emp; --- 创建存储过程 -create procedure sp_dept_avg_sal(deptno int, out avgsal float) -begin - select avg(sal) into avgsal from tb_emp where dno=deptno; -end; --- 调用存储过程 -call sp_dept_avg_sal(20, @a); --- 通过输出参数取出部门平均工资 -select @a; --- 删除存储过程 -drop procedure sp_dept_avg_sal; -create trigger tr_dept_update -after update on tb_dept for each row -begin - update tb_emp set dno=new.dno where dno=old.dno; -end; -drop trigger tr_dept_update; --- DCL:授予权限(grant to)和召回权限(revoke from) -create user 'hellokitty'@'%' identified by '123123'; -grant all privileges on hrs.* to 'hellokitty'@'%'; -revoke insert, delete, update on hrs.* from 'hellokitty'@'%'; -drop user 'hellokitty'@'%'; --- 事务(transaction)- 把多个增删改的操作做成不可分割的原子性操作 --- 要么全部都做,要么全都不做 - --- start transaction; --- begin; - --- delete from tb_emp; - --- commit; --- rollback; - -- 事务(transaction)- 把多个增删改的操作做成不可分割的原子性操作 --- 要么全部都做,要么全都不做 - --- start transaction; --- begin; - --- delete from tb_emp; - --- commit; --- rollback; - delete from tb_emp - alter table tb_emp drop foreign key fk_emp_mgr - begin - -- 注意事项: --- 1. 给数据库和表命名的时候尽量使用全小写 --- 2. 作为筛选条件的字符串是否区分大小看设置的校对规则 -drop database if exists hrs; -create database hrs default charset utf8 collate utf8_general_ci; -use hrs; -drop table if exists tb_emp; -drop table if exists tb_dept; --- 3. 数据库中的对象通常会用前缀加以区分 --- table / view / index / function / procedure / trigger -create table tb_dept -( -dno int not null comment '编号', -dname varchar(10) not null comment '名称', -dloc varchar(20) not null comment '所在地', -primary key (dno) -); --- 批量插入操作 -insert into tb_dept values - (10, '会计部', '北京'), - (20, '研发部', '成都'), - (30, '销售部', '重庆'), - (40, '运维部', '深圳'); -create table tb_emp -( -eno int not null comment '员工编号', -ename varchar(20) not null comment '员工姓名', -job varchar(20) not null comment '员工职位', -mgr int comment '主管编号', -sal int not null comment '员工月薪', -comm int comment '每月补贴', -dno int comment '所在部门编号', -primary key (eno) -); --- 修改表添加一个列到mgr列的后面 --- alter table tb_emp add column hiredate date after mgr; - --- 修改表添加一个自参照的外键约束 -alter table tb_emp add constraint fk_emp_mgr foreign key (mgr) references tb_emp (eno); --- alter table tb_emp drop foreign key fk_emp_dno; - --- restrict - 不允许操作 --- cascade - 级联操作 --- set null - 设置为null -alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno); --- on delete restrict on update cascade; - -insert into tb_emp values - (7800, '张三丰', '总裁', null, 9000, 1200, 20), - (2056, '乔峰', '分析师', 7800, 5000, 1500, 20), - (3088, '李莫愁', '设计师', 2056, 3500, 800, 20), - (3211, '张无忌', '程序员', 2056, 3200, null, 20), - (3233, '丘处机', '程序员', 2056, 3400, null, 20), - (3251, '张翠山', '程序员', 2056, 4000, null, 20), - (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10), - (5234, '郭靖', '出纳', 5566, 2000, null, 10), - (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30), - (1359, '胡一刀', '销售员', 3344, 1800, 200, 30), - (4466, '苗人凤', '销售员', 3344, 2500, null, 30), - (3244, '欧阳锋', '程序员', 3088, 3200, null, 20), - (3577, '杨过', '会计', 5566, 2200, null, 10), - (3588, '朱九真', '会计', 5566, 2500, null, 10); --- 查询月薪最高的员工姓名和工资 - 子查询/嵌套查询+聚合函数 --- select ename, sal from tb_emp order by sal desc limit 1; -select ename, sal from tb_emp where sal=( - select max(sal) from tb_emp -); --- 查询员工的姓名和年薪((月薪+补贴)*12) -select ename, (sal+ifnull(comm, 0))*12 as 年薪 from tb_emp order by 年薪 desc; --- 查询有员工的部门的编号和人数 - 分组查询+聚合函数 -select dno, count(dno) from tb_emp group by dno with rollup; --- 查询所有部门的名称和人数 - 子查询+连接查询(左外) -select dname as 部门名称, ifnull(total, 0) as 人数 from tb_dept t1 left join (select dno, count(dno) as total from tb_emp group by dno) t2 on t1.dno=t2.dno; --- 查询月薪最高的员工(Boss除外)的姓名和工资 - 空值判断 -select ename, sal from tb_emp where sal=(select max(sal) from tb_emp where mgr is not null); --- 查询月薪超过平均薪水的员工的姓名和工资 -select ename, sal from tb_emp where sal>(select avg(sal) as avgsal from tb_emp); --- 查询月薪超过其所在部门平均薪水的员工的姓名、部门编号和工资 -select ename, t1.dno, sal, round(avgsal, 2) from tb_emp t1 inner join (select dno, avg(sal) as avgsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal>avgsal; --- 查询部门中薪水最高的人姓名、工资和所在部门名称 -select ename, sal, dname from (select ename, sal, t1.dno from tb_emp t1 inner join (select dno, max(sal) as maxsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal=maxsal) t3 inner join tb_dept t4 on t3.dno=t4.dno; --- 查询主管的姓名和职位 -select ename, job from tb_emp where eno in (select distinct mgr from tb_emp where mgr is not null); --- 通常不推荐使用in或者not in集合运算和distinct去重操作 --- 可以考虑用exists或not exists替代掉集合运算和去重操作 -select ename, job from tb_emp t1 where exists (select 'x' from tb_emp t2 where t1.eno=t2.mgr); --- 查询月薪排名4~6名的员工姓名和工资 -select ename, sal from tb_emp order by sal desc limit 3, 3; -select ename, sal from tb_emp order by sal desc limit 3 offset 3; --- explain生成执行计划 -explain select eno, ename from tb_emp where eno=7800; -explain select eno, ename from tb_emp where eno<>7900; -explain select eno, ename from tb_emp where ename='张三丰'; -explain select eno, ename from tb_emp where ename like '张%'; -explain select eno, ename from tb_emp where ename like '%张'; -explain select eno, ename from tb_emp where ename<>'张三丰'; --- 视图:查询的快照(简化查询操作) --- 通过视图可以将用户的访问权限限制到某些指定的列上 -create view vw_emp_dept as -select eno, ename, dname from tb_emp t1 inner join tb_dept t2 on t1.dno=t2.dno; -select ename, dname from vw_emp_dept; -drop view vw_emp_dept; --- 索引(index) --- 索引可以加速查询所以应该在经常用于查询筛选条件的列上建立索引 --- 索引会使用额外的存储空间而且会让增删改变得更慢(因为要更新索引) --- 所以不能够滥用索引 -create index idx_emp_ename on tb_emp (ename); -drop index idx_emp_ename on tb_emp; --- 创建存储过程 -create procedure sp_dept_avg_sal(deptno int, out avgsal float) -begin - select avg(sal) into avgsal from tb_emp where dno=deptno; -end; --- 调用存储过程 -call sp_dept_avg_sal(20, @a); --- 通过输出参数取出部门平均工资 -select @a; --- 删除存储过程 -drop procedure sp_dept_avg_sal; -create trigger tr_dept_update -after update on tb_dept for each row -begin - update tb_emp set dno=new.dno where dno=old.dno; -end; -drop trigger tr_dept_update; --- DCL:授予权限(grant to)和召回权限(revoke from) -create user 'hellokitty'@'%' identified by '123123'; -grant all privileges on hrs.* to 'hellokitty'@'%'; -revoke insert, delete, update on hrs.* from 'hellokitty'@'%'; -drop user 'hellokitty'@'%' - drop user 'hellokitty'@'%' - -- 注意事项: --- 1. 给数据库和表命名的时候尽量使用全小写 --- 2. 作为筛选条件的字符串是否区分大小看设置的校对规则 -drop database if exists hrs; -create database hrs default charset utf8 collate utf8_general_ci; -use hrs; -drop table if exists tb_emp; -drop table if exists tb_dept; --- 3. 数据库中的对象通常会用前缀加以区分 --- table / view / index / function / procedure / trigger -create table tb_dept -( -dno int not null comment '编号', -dname varchar(10) not null comment '名称', -dloc varchar(20) not null comment '所在地', -primary key (dno) -); --- 批量插入操作 -insert into tb_dept values - (10, '会计部', '北京'), - (20, '研发部', '成都'), - (30, '销售部', '重庆'), - (40, '运维部', '深圳'); -create table tb_emp -( -eno int not null comment '员工编号', -ename varchar(20) not null comment '员工姓名', -job varchar(20) not null comment '员工职位', -mgr int comment '主管编号', -sal int not null comment '员工月薪', -comm int comment '每月补贴', -dno int comment '所在部门编号', -primary key (eno) -); --- 修改表添加一个列到mgr列的后面 --- alter table tb_emp add column hiredate date after mgr; - --- 修改表添加一个自参照的外键约束 -alter table tb_emp add constraint fk_emp_mgr foreign key (mgr) references tb_emp (eno); --- alter table tb_emp drop foreign key fk_emp_dno; - --- restrict - 不允许操作 --- cascade - 级联操作 --- set null - 设置为null -alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno); --- on delete restrict on update cascade; - -insert into tb_emp values - (7800, '张三丰', '总裁', null, 9000, 1200, 20), - (2056, '乔峰', '分析师', 7800, 5000, 1500, 20), - (3088, '李莫愁', '设计师', 2056, 3500, 800, 20), - (3211, '张无忌', '程序员', 2056, 3200, null, 20), - (3233, '丘处机', '程序员', 2056, 3400, null, 20), - (3251, '张翠山', '程序员', 2056, 4000, null, 20), - (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10), - (5234, '郭靖', '出纳', 5566, 2000, null, 10), - (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30), - (1359, '胡一刀', '销售员', 3344, 1800, 200, 30), - (4466, '苗人凤', '销售员', 3344, 2500, null, 30), - (3244, '欧阳锋', '程序员', 3088, 3200, null, 20), - (3577, '杨过', '会计', 5566, 2200, null, 10), - (3588, '朱九真', '会计', 5566, 2500, null, 10); --- 查询月薪最高的员工姓名和工资 - 子查询/嵌套查询+聚合函数 --- select ename, sal from tb_emp order by sal desc limit 1; -select ename, sal from tb_emp where sal=( - select max(sal) from tb_emp -); --- 查询员工的姓名和年薪((月薪+补贴)*12) -select ename, (sal+ifnull(comm, 0))*12 as 年薪 from tb_emp order by 年薪 desc; --- 查询有员工的部门的编号和人数 - 分组查询+聚合函数 -select dno, count(dno) from tb_emp group by dno with rollup; --- 查询所有部门的名称和人数 - 子查询+连接查询(左外) -select dname as 部门名称, ifnull(total, 0) as 人数 from tb_dept t1 left join (select dno, count(dno) as total from tb_emp group by dno) t2 on t1.dno=t2.dno; --- 查询月薪最高的员工(Boss除外)的姓名和工资 - 空值判断 -select ename, sal from tb_emp where sal=(select max(sal) from tb_emp where mgr is not null); --- 查询月薪超过平均薪水的员工的姓名和工资 -select ename, sal from tb_emp where sal>(select avg(sal) as avgsal from tb_emp); --- 查询月薪超过其所在部门平均薪水的员工的姓名、部门编号和工资 -select ename, t1.dno, sal, round(avgsal, 2) from tb_emp t1 inner join (select dno, avg(sal) as avgsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal>avgsal; --- 查询部门中薪水最高的人姓名、工资和所在部门名称 -select ename, sal, dname from (select ename, sal, t1.dno from tb_emp t1 inner join (select dno, max(sal) as maxsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal=maxsal) t3 inner join tb_dept t4 on t3.dno=t4.dno; --- 查询主管的姓名和职位 -select ename, job from tb_emp where eno in (select distinct mgr from tb_emp where mgr is not null); --- 通常不推荐使用in或者not in集合运算和distinct去重操作 --- 可以考虑用exists或not exists替代掉集合运算和去重操作 -select ename, job from tb_emp t1 where exists (select 'x' from tb_emp t2 where t1.eno=t2.mgr); --- 查询月薪排名4~6名的员工姓名和工资 -select ename, sal from tb_emp order by sal desc limit 3, 3; -select ename, sal from tb_emp order by sal desc limit 3 offset 3; --- explain生成执行计划 -explain select eno, ename from tb_emp where eno=7800; -explain select eno, ename from tb_emp where eno<>7900; -explain select eno, ename from tb_emp where ename='张三丰'; -explain select eno, ename from tb_emp where ename like '张%'; -explain select eno, ename from tb_emp where ename like '%张'; -explain select eno, ename from tb_emp where ename<>'张三丰'; --- 视图:查询的快照(简化查询操作) --- 通过视图可以将用户的访问权限限制到某些指定的列上 -create view vw_emp_dept as -select eno, ename, dname from tb_emp t1 inner join tb_dept t2 on t1.dno=t2.dno; -select ename, dname from vw_emp_dept; -drop view vw_emp_dept; --- 索引(index) --- 索引可以加速查询所以应该在经常用于查询筛选条件的列上建立索引 --- 索引会使用额外的存储空间而且会让增删改变得更慢(因为要更新索引) --- 所以不能够滥用索引 -create index idx_emp_ename on tb_emp (ename); -drop index idx_emp_ename on tb_emp; --- 创建存储过程 -create procedure sp_dept_avg_sal(deptno int, out avgsal float) -begin - select avg(sal) into avgsal from tb_emp where dno=deptno; -end; --- 调用存储过程 -call sp_dept_avg_sal(20, @a); --- 通过输出参数取出部门平均工资 -select @a; --- 删除存储过程 -drop procedure sp_dept_avg_sal; -create trigger tr_dept_update -after update on tb_dept for each row -begin - update tb_emp set dno=new.dno where dno=old.dno; -end; -drop trigger tr_dept_update; --- DCL:授予权限(grant to)和召回权限(revoke from) -create user 'hellokitty'@'%' identified by '123123' - -- 注意事项: --- 1. 给数据库和表命名的时候尽量使用全小写 --- 2. 作为筛选条件的字符串是否区分大小看设置的校对规则 -drop database if exists hrs; -create database hrs default charset utf8 collate utf8_general_ci; -use hrs; -drop table if exists tb_emp; -drop table if exists tb_dept; --- 3. 数据库中的对象通常会用前缀加以区分 --- table / view / index / function / procedure / trigger -create table tb_dept -( -dno int not null comment '编号', -dname varchar(10) not null comment '名称', -dloc varchar(20) not null comment '所在地', -primary key (dno) -); --- 批量插入操作 -insert into tb_dept values - (10, '会计部', '北京'), - (20, '研发部', '成都'), - (30, '销售部', '重庆'), - (40, '运维部', '深圳'); -create table tb_emp -( -eno int not null comment '员工编号', -ename varchar(20) not null comment '员工姓名', -job varchar(20) not null comment '员工职位', -mgr int comment '主管编号', -sal int not null comment '员工月薪', -comm int comment '每月补贴', -dno int comment '所在部门编号', -primary key (eno) -); --- 修改表添加一个列到mgr列的后面 --- alter table tb_emp add column hiredate date after mgr; - --- 修改表添加一个自参照的外键约束 -alter table tb_emp add constraint fk_emp_mgr foreign key (mgr) references tb_emp (eno); --- alter table tb_emp drop foreign key fk_emp_dno; - --- restrict - 不允许操作 --- cascade - 级联操作 --- set null - 设置为null -alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno); --- on delete restrict on update cascade; - -insert into tb_emp values - (7800, '张三丰', '总裁', null, 9000, 1200, 20), - (2056, '乔峰', '分析师', 7800, 5000, 1500, 20), - (3088, '李莫愁', '设计师', 2056, 3500, 800, 20), - (3211, '张无忌', '程序员', 2056, 3200, null, 20), - (3233, '丘处机', '程序员', 2056, 3400, null, 20), - (3251, '张翠山', '程序员', 2056, 4000, null, 20), - (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10), - (5234, '郭靖', '出纳', 5566, 2000, null, 10), - (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30), - (1359, '胡一刀', '销售员', 3344, 1800, 200, 30), - (4466, '苗人凤', '销售员', 3344, 2500, null, 30), - (3244, '欧阳锋', '程序员', 3088, 3200, null, 20), - (3577, '杨过', '会计', 5566, 2200, null, 10), - (3588, '朱九真', '会计', 5566, 2500, null, 10); --- 查询月薪最高的员工姓名和工资 - 子查询/嵌套查询+聚合函数 --- select ename, sal from tb_emp order by sal desc limit 1; -select ename, sal from tb_emp where sal=( - select max(sal) from tb_emp -); --- 查询员工的姓名和年薪((月薪+补贴)*12) -select ename, (sal+ifnull(comm, 0))*12 as 年薪 from tb_emp order by 年薪 desc; --- 查询有员工的部门的编号和人数 - 分组查询+聚合函数 -select dno, count(dno) from tb_emp group by dno with rollup; --- 查询所有部门的名称和人数 - 子查询+连接查询(左外) -select dname as 部门名称, ifnull(total, 0) as 人数 from tb_dept t1 left join (select dno, count(dno) as total from tb_emp group by dno) t2 on t1.dno=t2.dno; --- 查询月薪最高的员工(Boss除外)的姓名和工资 - 空值判断 -select ename, sal from tb_emp where sal=(select max(sal) from tb_emp where mgr is not null); --- 查询月薪超过平均薪水的员工的姓名和工资 -select ename, sal from tb_emp where sal>(select avg(sal) as avgsal from tb_emp); --- 查询月薪超过其所在部门平均薪水的员工的姓名、部门编号和工资 -select ename, t1.dno, sal, round(avgsal, 2) from tb_emp t1 inner join (select dno, avg(sal) as avgsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal>avgsal; --- 查询部门中薪水最高的人姓名、工资和所在部门名称 -select ename, sal, dname from (select ename, sal, t1.dno from tb_emp t1 inner join (select dno, max(sal) as maxsal from tb_emp group by dno) t2 on t1.dno=t2.dno where sal=maxsal) t3 inner join tb_dept t4 on t3.dno=t4.dno; --- 查询主管的姓名和职位 -select ename, job from tb_emp where eno in (select distinct mgr from tb_emp where mgr is not null); --- 通常不推荐使用in或者not in集合运算和distinct去重操作 --- 可以考虑用exists或not exists替代掉集合运算和去重操作 -select ename, job from tb_emp t1 where exists (select 'x' from tb_emp t2 where t1.eno=t2.mgr); --- 查询月薪排名4~6名的员工姓名和工资 -select ename, sal from tb_emp order by sal desc limit 3, 3; -select ename, sal from tb_emp order by sal desc limit 3 offset 3; --- explain生成执行计划 -explain select eno, ename from tb_emp where eno=7800; -explain select eno, ename from tb_emp where eno<>7900; -explain select eno, ename from tb_emp where ename='张三丰'; -explain select eno, ename from tb_emp where ename like '张%'; -explain select eno, ename from tb_emp where ename like '%张'; -explain select eno, ename from tb_emp where ename<>'张三丰'; --- 视图:查询的快照(简化查询操作) --- 通过视图可以将用户的访问权限限制到某些指定的列上 -create view vw_emp_dept as -select eno, ename, dname from tb_emp t1 inner join tb_dept t2 on t1.dno=t2.dno; -select ename, dname from vw_emp_dept; -drop view vw_emp_dept; --- 索引(index) --- 索引可以加速查询所以应该在经常用于查询筛选条件的列上建立索引 --- 索引会使用额外的存储空间而且会让增删改变得更慢(因为要更新索引) --- 所以不能够滥用索引 -create index idx_emp_ename on tb_emp (ename); -drop index idx_emp_ename on tb_emp; --- 创建存储过程 -create procedure sp_dept_avg_sal(deptno int, out avgsal float) -begin - select avg(sal) into avgsal from tb_emp where dno=deptno; -end; --- 调用存储过程 -call sp_dept_avg_sal(20, @a); --- 通过输出参数取出部门平均工资 -select @a; --- 删除存储过程 -drop procedure sp_dept_avg_sal; --- 触发器:在执行增删改操作时可以触发其他的级联操作,但是有可能导致“锁表”现象,实际开发中应该尽量避免使用触发器 -update tb_dept set dno=11 where dno=10 - -- 注意事项: --- 1. 给数据库和表命名的时候尽量使用全小写 --- 2. 作为筛选条件的字符串是否区分大小看设置的校对规则 -drop database if exists hrs; -create database hrs default charset utf8 collate utf8_general_ci; -use hrs; -drop table if exists tb_emp; -drop table if exists tb_dept; --- 3. 数据库中的对象通常会用前缀加以区分 --- table / view / index / function / procedure / trigger -create table tb_dept -( -dno int not null comment '编号', -dname varchar(10) not null comment '名称', -dloc varchar(20) not null comment '所在地', -primary key (dno) -); --- 批量插入操作 -insert into tb_dept values - (10, '会计部', '北京'), - (20, '研发部', '成都'), - (30, '销售部', '重庆'), - (40, '运维部', '深圳'); -create table tb_emp -( -eno int not null comment '员工编号', -ename varchar(20) not null comment '员工姓名', -job varchar(20) not null comment '员工职位', -mgr int comment '主管编号', -sal int not null comment '员工月薪', -comm int comment '每月补贴', -dno int comment '所在部门编号', -primary key (eno) -); --- 修改表添加一个列到mgr列的后面 --- alter table tb_emp add column hiredate date after mgr; - --- 修改表添加一个自参照的外键约束 -alter table tb_emp add constraint fk_emp_mgr foreign key (mgr) references tb_emp (eno); -alter table tb_emp drop foreign key fk_emp_dno - revoke insert, delete, update on hrs.* from 'hellokitty'@'%' - grant all privileges on hrs.* to 'hellokitty'@'%' - -- DCL:授予权限(grant to)和召回权限(revoke from) -create user 'hellokitty'@'%' identified by '123123' - delete from tb_dept where dno=11 - update tb_dept set dno=11 where dno=10 - alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno) on delete cascade on update cascade - alter table tb_emp drop foreign key fk_emp_dno - delete from tb_dept where dno=10 - - rdbms_type - mysql - rdbms_version - 5.5.60-MariaDB - version - 1 - - diff --git a/Day36-40/code/学校选课系统.spf b/Day36-40/code/学校选课系统.spf deleted file mode 100644 index 1f60a4a..0000000 --- a/Day36-40/code/学校选课系统.spf +++ /dev/null @@ -1,480 +0,0 @@ - - - - - ContentFilters - - auto_connect - - data - - connection - - host - 120.77.222.217 - kcid - 6157604644212181126 - name - MySQL@Aliyun - rdbms_type - mysql - sslCACertFileLocation - - sslCACertFileLocationEnabled - 0 - sslCertificateFileLocation - - sslCertificateFileLocationEnabled - 0 - sslKeyFileLocation - - sslKeyFileLocationEnabled - 0 - type - SPTCPIPConnection - useSSL - 0 - user - root - - session - - connectionEncoding - utf8 - contentPageNumber - 1 - contentSelection - - YnBsaXN0MDDUAQIDBAUGJSZYJHZlcnNpb25YJG9iamVjdHNZJGFy - Y2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJX - TlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAF - gAdUdHlwZVRyb3dzXxAdU2VsZWN0aW9uRGV0YWlsVHlwZU5TSW5k - ZXhTZXTSFwsYGVxOU1JhbmdlQ291bnQQAIAG0hscHR5aJGNsYXNz - bmFtZVgkY2xhc3Nlc1pOU0luZGV4U2V0oh8gWk5TSW5kZXhTZXRY - TlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiRYTlNPYmplY3Rf - EA9OU0tleWVkQXJjaGl2ZXLRJyhUZGF0YYABAAgAEQAaACMALQAy - ADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwB8AIEAoQCmALMA - tQC3ALwAxwDQANsA3gDpAPIA9wEEAQcBEAEiASUBKgAAAAAAAAIB - AAAAAAAAACkAAAAAAAAAAAAAAAAAAAEs - - contentSortColIsAsc - - contentViewport - {{0, 0}, {694, 448}} - isToolbarVisible - - queries - -- 如果存在名为school的数据库就删除它 -drop database if exists school; - --- 创建名为school的数据库并设置默认的字符集和排序方式 -create database school default charset utf8 collate utf8_bin; - --- 切换到school数据库上下文环境 -use school; - --- 创建学院表 -create table tb_college -( -collid int not null auto_increment comment '编号', -collname varchar(50) not null comment '名称', -collmaster varchar(20) not null comment '院长', -collweb varchar(511) default '' comment '网站', -primary key (collid) -); - --- 创建学生表 -create table tb_student -( -stuid int not null comment '学号', -stuname varchar(20) not null comment '姓名', -stusex bit default 1 comment '性别', -stubirth date not null comment '出生日期', -stuaddr varchar(255) default '' comment '籍贯', -collid int not null comment '所属学院', -primary key (stuid), -foreign key (collid) references tb_college (collid) -); - --- alter table tb_student add constraint fk_student_collid foreign key (collid) references tb_college (collid); - --- 创建教师表 -create table tb_teacher -( -teaid int not null comment '工号', -teaname varchar(20) not null comment '姓名', -teatitle varchar(10) default '助教' comment '职称', -collid int not null comment '所属学院', -primary key (teaid), -foreign key (collid) references tb_college (collid) -); - --- 创建课程表 -create table tb_course -( -couid int not null comment '编号', -couname varchar(50) not null comment '名称', -coucredit int not null comment '学分', -teaid int not null comment '授课老师', -primary key (couid), -foreign key (teaid) references tb_teacher (teaid) -); - --- 创建选课记录表 -create table tb_score -( -scid int auto_increment comment '选课记录编号', -stuid int not null comment '选课学生', -couid int not null comment '所选课程', -scdate datetime comment '选课时间日期', -scmark decimal(4,1) comment '考试成绩', -primary key (scid), -foreign key (stuid) references tb_student (stuid), -foreign key (couid) references tb_course (couid) -); - --- 添加唯一性约束(一个学生选某个课程只能选一次) -alter table tb_score add constraint uni_score_stuid_couid unique (stuid, couid); - --- 插入学院数据 -insert into tb_college (collname, collmaster, collweb) values -('计算机学院', '左冷禅', 'http://www.abc.com'), -('外国语学院', '岳不群', 'http://www.xyz.com'), -('经济管理学院', '风清扬', 'http://www.foo.com'); - --- 插入学生数据 -insert into tb_student (stuid, stuname, stusex, stubirth, stuaddr, collid) values -(1001, '杨逍', 1, '1990-3-4', '四川成都', 1), -(1002, '任我行', 1, '1992-2-2', '湖南长沙', 1), -(1033, '王语嫣', 0, '1989-12-3', '四川成都', 1), -(1572, '岳不群', 1, '1993-7-19', '陕西咸阳', 1), -(1378, '纪嫣然', 0, '1995-8-12', '四川绵阳', 1), -(1954, '林平之', 1, '1994-9-20', '福建莆田', 1), -(2035, '东方不败', 1, '1988-6-30', null, 2), -(3011, '林震南', 1, '1985-12-12', '福建莆田', 3), -(3755, '项少龙', 1, '1993-1-25', null, 3), -(3923, '杨不悔', 0, '1985-4-17', '四川成都', 3); - --- 插入老师数据 -insert into tb_teacher (teaid, teaname, teatitle, collid) values -(1122, '张三丰', '教授', 1), -(1133, '宋远桥', '副教授', 1), -(1144, '杨逍', '副教授', 1), -(2255, '范遥', '副教授', 2), -(3366, '韦一笑', '讲师', 3); - --- 插入课程数据 -insert into tb_course (couid, couname, coucredit, teaid) values -(1111, 'Python程序设计', 3, 1122), -(2222, 'Web前端开发', 2, 1122), -(3333, '操作系统', 4, 1122), -(4444, '计算机网络', 2, 1133), -(5555, '编译原理', 4, 1144), -(6666, '算法和数据结构', 3, 1144), -(7777, '经贸法语', 3, 2255), -(8888, '成本会计', 2, 3366), -(9999, '审计学', 3, 3366); - --- 插入选课数据 -insert into tb_score (stuid, couid, scdate, scmark) values -(1001, 1111, '2017-09-01', 95), -(1001, 2222, '2017-09-01', 87.5), -(1001, 3333, '2017-09-01', 100), -(1001, 4444, '2018-09-03', null), -(1001, 6666, '2017-09-02', 100), -(1002, 1111, '2017-09-03', 65), -(1002, 5555, '2017-09-01', 42), -(1033, 1111, '2017-09-03', 92.5), -(1033, 4444, '2017-09-01', 78), -(1033, 5555, '2017-09-01', 82.5), -(1572, 1111, '2017-09-02', 78), -(1378, 1111, '2017-09-05', 82), -(1378, 7777, '2017-09-02', 65.5), -(2035, 7777, '2018-09-03', 88), -(2035, 9999, curdate(), null), -(3755, 1111, date(now()), null), -(3755, 8888, date(now()), null), -(3755, 9999, '2017-09-01', 92); - --- 查询所有学生信息 -select * from tb_student; - --- 查询所有课程名称及学分(投影和别名) -select couname, coucredit from tb_course; -select couname as 课程名称, coucredit as 学分 from tb_course; - -select stuname as 姓名, case stusex when 1 then '男' else '女' end as 性别 from tb_student; -select stuname as 姓名, if(stusex, '男', '女') as 性别 from tb_student; - --- 查询所有女学生的姓名和出生日期(筛选) -select stuname, stubirth from tb_student where stusex=0; - --- 查询所有80后学生的姓名、性别和出生日期(筛选) -select stuname, stusex, stubirth from tb_student where stubirth>='1980-1-1' and stubirth<='1989-12-31'; -select stuname, stusex, stubirth from tb_student where stubirth between '1980-1-1' and '1989-12-31'; - --- 查询姓"杨"的学生姓名和性别(模糊) -select stuname, stusex from tb_student where stuname like '杨%'; - --- 查询姓"杨"名字两个字的学生姓名和性别(模糊) -select stuname, stusex from tb_student where stuname like '杨_'; - --- 查询姓"杨"名字三个字的学生姓名和性别(模糊) -select stuname, stusex from tb_student where stuname like '杨__'; - --- 查询名字中有"不"字或"嫣"字的学生的姓名(模糊) -select stuname, stusex from tb_student where stuname like '%不%' or stuname like '%嫣%'; - --- 查询没有录入家庭住址的学生姓名(空值) -select stuname from tb_student where stuaddr is null; - --- 查询录入了家庭住址的学生姓名(空值) -select stuname from tb_student where stuaddr is not null; - --- 查询学生选课的所有日期(去重) -select distinct scdate from tb_score; - --- 查询学生的家庭住址(去重) -select distinct stuaddr from tb_student where stuaddr is not null; - --- 查询男学生的姓名和生日按年龄从大到小排列(排序) --- asc - ascending - 升序(从小到大) --- desc - descending - 降序(从大到小) -select stuname as 姓名, year(now())-year(stubirth) as 年龄 from tb_student where stusex=1 order by 年龄 desc; - --- 聚合函数:max / min / count / sum / avg --- 查询年龄最大的学生的出生日期(聚合函数) -select min(stubirth) from tb_student; - --- 查询年龄最小的学生的出生日期(聚合函数) -select max(stubirth) from tb_student; - --- 查询男女学生的人数(分组和聚合函数) -select count(stuid) from tb_student; -select stusex, count(*) from tb_student group by stusex; -select stusex, min(stubirth) from tb_student group by stusex; - --- 查询课程编号为1111的课程的平均成绩(筛选和聚合函数) -select avg(scmark) from tb_score where couid=1111; -select min(scmark) from tb_score where couid=1111; -select count(scid) from tb_score where couid=1111; -select count(scmark) from tb_score where couid=1111; - --- 查询学号为1001的学生所有课程的平均分(筛选和聚合函数) -select avg(scmark) from tb_score where stuid=1001; - --- 查询每个学生的学号和平均成绩(分组和聚合函数) -select stuid as 学号, avg(scmark) as 平均分 from tb_score group by stuid; - --- 查询平均成绩大于等于90分的学生的学号和平均成绩 --- 分组以前的筛选使用where子句 --- 分组以后的筛选使用having子句 -select stuid as 学号, avg(scmark) as 平均分 from tb_score group by stuid having 平均分>=90; - --- 查询年龄最大的学生的姓名(子查询/嵌套的查询) -select stuname from tb_student where stubirth=( - select min(stubirth) from tb_student -); - --- 查询年龄最大的学生姓名和年龄(子查询+运算) -select stuname as 姓名, year(now())-year(stubirth) as 年龄 from tb_student where stubirth=( - select min(stubirth) from tb_student -); - --- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) -explain select stuname from tb_student where stuid in ( - select stuid from tb_score group by stuid having count(stuid)>2 -) - --- 查询学生姓名、课程名称以及成绩(连接查询) -select stuname, couname, scmark from tb_student t1, tb_course t2, tb_score t3 where t1.stuid=t3.stuid and t2.couid=t3.couid and scmark is not null; - -select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 5 offset 10; - -select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 10, 5; - --- 单表:65535TB --- 单列:4G - LONGBLOB (Binary Large OBject) / LONGTEXT --- 查询选课学生的姓名和平均成绩(子查询和连接查询) -select stuname, avgmark from tb_student t1, (select stuid, avg(scmark) as avgmark from tb_score group by stuid) t2 where t1.stuid=t2.stuid; - -select stuname, avgmark from tb_student t1 inner join -(select stuid, avg(scmark) as avgmark from tb_score group by stuid) t2 on t1.stuid=t2.stuid; - --- 内连接(inner join):只有满足连接条件的记录才会被查出来 --- 外连接(outer join):左外连接 / 右外连接 / 全外连接 --- left outer join / right outer join / full outer join --- 查询每个学生的姓名和选课数量(左外连接和子查询) -select stuname, ifnull(total, 0) from tb_student t1 left outer join (select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid; - - view - SP_VIEW_CUSTOMQUERY - windowVerticalDividerPosition - 163 - - - encrypted - - format - connection - queryFavorites - - queryHistory - - -- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) -explain select stuname from tb_student where stuid=any( - select stuid from tb_score group by stuid having count(stuid)>2 -) - explain select stuname from tb_student where stuid in ( - select stuid from tb_score group by stuid having count(stuid)>2 -) - select stuname from tb_student where stuid in ( - select stuid from tb_score group by stuid having count(stuid)>2 -) - select stuname from tb_student where stuid=( - select stuid from tb_score group by stuid having count(stuid)>2 -) - -- 如果存在名为school的数据库就删除它 -drop database if exists school; --- 创建名为school的数据库并设置默认的字符集和排序方式 -create database school default charset utf8 collate utf8_bin; --- 切换到school数据库上下文环境 -use school; --- 创建学院表 -create table tb_college -( -collid int not null auto_increment comment '编号', -collname varchar(50) not null comment '名称', -collmaster varchar(20) not null comment '院长', -collweb varchar(511) default '' comment '网站', -primary key (collid) -); --- 创建学生表 -create table tb_student -( -stuid int not null comment '学号', -stuname varchar(20) not null comment '姓名', -stusex bit default 1 comment '性别', -stubirth date not null comment '出生日期', -stuaddr varchar(255) default '' comment '籍贯', -collid int not null comment '所属学院', -primary key (stuid), -foreign key (collid) references tb_college (collid) -); --- alter table tb_student add constraint fk_student_collid foreign key (collid) references tb_college (collid); - --- 创建教师表 -create table tb_teacher -( -teaid int not null comment '工号', -teaname varchar(20) not null comment '姓名', -teatitle varchar(10) default '助教' comment '职称', -collid int not null comment '所属学院', -primary key (teaid), -foreign key (collid) references tb_college (collid) -); --- 创建课程表 -create table tb_course -( -couid int not null comment '编号', -couname varchar(50) not null comment '名称', -coucredit int not null comment '学分', -teaid int not null comment '授课老师', -primary key (couid), -foreign key (teaid) references tb_teacher (teaid) -); --- 创建选课记录表 -create table tb_score -( -scid int auto_increment comment '选课记录编号', -stuid int not null comment '选课学生', -couid int not null comment '所选课程', -scdate datetime comment '选课时间日期', -scmark decimal(4,1) comment '考试成绩', -primary key (scid), -foreign key (stuid) references tb_student (stuid), -foreign key (couid) references tb_course (couid) -); --- 添加唯一性约束(一个学生选某个课程只能选一次) -alter table tb_score add constraint uni_score_stuid_couid unique (stuid, couid); --- 插入学院数据 -insert into tb_college (collname, collmaster, collweb) values -('计算机学院', '左冷禅', 'http://www.abc.com'), -('外国语学院', '岳不群', 'http://www.xyz.com'), -('经济管理学院', '风清扬', 'http://www.foo.com'); --- 插入学生数据 -insert into tb_student (stuid, stuname, stusex, stubirth, stuaddr, collid) values -(1001, '杨逍', 1, '1990-3-4', '四川成都', 1), -(1002, '任我行', 1, '1992-2-2', '湖南长沙', 1), -(1033, '王语嫣', 0, '1989-12-3', '四川成都', 1), -(1572, '岳不群', 1, '1993-7-19', '陕西咸阳', 1), -(1378, '纪嫣然', 0, '1995-8-12', '四川绵阳', 1), -(1954, '林平之', 1, '1994-9-20', '福建莆田', 1), -(2035, '东方不败', 1, '1988-6-30', null, 2), -(3011, '林震南', 1, '1985-12-12', '福建莆田', 3), -(3755, '项少龙', 1, '1993-1-25', null, 3), -(3923, '杨不悔', 0, '1985-4-17', '四川成都', 3); --- 插入老师数据 -insert into tb_teacher (teaid, teaname, teatitle, collid) values -(1122, '张三丰', '教授', 1), -(1133, '宋远桥', '副教授', 1), -(1144, '杨逍', '副教授', 1), -(2255, '范遥', '副教授', 2), -(3366, '韦一笑', '讲师', 3); --- 插入课程数据 -insert into tb_course (couid, couname, coucredit, teaid) values -(1111, 'Python程序设计', 3, 1122), -(2222, 'Web前端开发', 2, 1122), -(3333, '操作系统', 4, 1122), -(4444, '计算机网络', 2, 1133), -(5555, '编译原理', 4, 1144), -(6666, '算法和数据结构', 3, 1144), -(7777, '经贸法语', 3, 2255), -(8888, '成本会计', 2, 3366), -(9999, '审计学', 3, 3366); --- 插入选课数据 -insert into tb_score (stuid, couid, scdate, scmark) values -(1001, 1111, '2017-09-01', 95), -(1001, 2222, '2017-09-01', 87.5), -(1001, 3333, '2017-09-01', 100), -(1001, 4444, '2018-09-03', null), -(1001, 6666, '2017-09-02', 100), -(1002, 1111, '2017-09-03', 65), -(1002, 5555, '2017-09-01', 42), -(1033, 1111, '2017-09-03', 92.5), -(1033, 4444, '2017-09-01', 78), -(1033, 5555, '2017-09-01', 82.5), -(1572, 1111, '2017-09-02', 78), -(1378, 1111, '2017-09-05', 82), -(1378, 7777, '2017-09-02', 65.5), -(2035, 7777, '2018-09-03', 88), -(2035, 9999, curdate(), null), -(3755, 1111, date(now()), null), -(3755, 8888, date(now()), null), -(3755, 9999, '2017-09-01', 92) - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 5 offset 10 - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 10, 5 - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 5, 5 - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 50, 5 - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 5 offset 5 - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 5 - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null - select stuname, couname, scmark from tb_student t1, tb_course t2, tb_score t3 where t1.stuid=t3.stuid and t2.couid=t3.couid and scmark is not null - select stuname, couname, scmark from tb_student t1, tb_course t2, tb_score t3 where t1.stuid=t3.stuid and t2.couid=t3.couid where scmark is not null - -- 查询学生姓名、课程名称以及成绩(连接查询) -select stuname, couname, scmark from tb_student t1, tb_course t2, tb_score t3 where t1.stuid=t3.stuid and t2.couid=t3.couid where scmark is not null - select stuname, avgmark from tb_student t1 inner join -(select stuid, avg(scmark) as avgmark from tb_score group by stuid) t2 on t1.stuid=t2.stuid - select stuname, avgmark from tb_student t1, (select stuid, avg(scmark) as avgmark from tb_score group by stuid) t2 where t1.stuid=t2.stuid - select stuname, ifnull(total, 0) from tb_student t1 left outer join (select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid - select stuname, ifnull(total,0) from tb_student t1 left outer join (select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid - - rdbms_type - mysql - rdbms_version - 5.7.26 - version - 1 - - diff --git a/Day36-40/res/conceptual_model.png b/Day36-40/res/conceptual_model.png new file mode 100644 index 0000000..2b93a21 Binary files /dev/null and b/Day36-40/res/conceptual_model.png differ diff --git a/Day36-40/res/er_diagram.png b/Day36-40/res/er_diagram.png new file mode 100644 index 0000000..e851a30 Binary files /dev/null and b/Day36-40/res/er_diagram.png differ diff --git a/Day36-40/关系型数据库MySQL.md b/Day36-40/关系型数据库MySQL.md deleted file mode 100644 index af3f860..0000000 --- a/Day36-40/关系型数据库MySQL.md +++ /dev/null @@ -1,691 +0,0 @@ -## 关系数据库入门 - -### 关系数据库概述 - -1. 数据持久化 - 将数据保存到(在掉电情况下)能够长久保存数据的存储介质中。 - -2. 数据库发展史 - 网状数据库、层次数据库、关系数据库、NoSQL数据库。 - - > 1970年,IBM的研究员E.F.Codd在*Communication of the ACM*上发表了名为*A Relational Model of Data for Large Shared Data Banks*的论文,提出了关系模型的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。 - -3. 关系数据库特点。 - - - 理论基础:集合论和关系代数。 - - - 具体表象:用二维表(有行和列)组织数据。 - - - 编程语言:结构化查询语言(SQL)。 - -4. E-R图。 - - 实体 - 矩形框 - - 属性 - 椭圆框 - - 关系 - 菱形框 - - 重数 - 1:1 / 1:N / M:N - -5. 关系数据库产品。 - - [Oracle](https://www.oracle.com/index.html) - 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在Oracle最新的12c版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库云。 - - [DB2](https://www.ibm.com/analytics/us/en/db2/) - IBM公司开发的、主要运行于Unix(包括IBM自家的[AIX](https://zh.wikipedia.org/wiki/AIX))、Linux、以及Windows服务器版等系统的关系数据库产品。DB2历史悠久且被认为是最早使用SQL的数据库产品,它拥有较为强大的商业智能功能。 - - [SQL Server](https://www.microsoft.com/en-us/sql-server/) - 由Microsoft开发和推广的关系型数据库产品,最初适用于中小企业的数据管理,但是近年来它的应用范围有所扩展,部分大企业甚至是跨国公司也开始基于它来构建自己的数据管理系统。 - - [MySQL](https://www.mysql.com/) - MySQL是开放源代码的,任何人都可以在GPL(General Public License)的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。 - - [PostgreSQL]() - 在BSD许可证下发行的开放源代码的关系数据库产品。 - -### MySQL简介 - -1. 安装和配置(以CentOS Linux环境为例)。 - - - Linux下有一个MySQL的分支版本,名为MariaDB,它由MySQL的一些原始开发者开发,有商业支持,旨在继续保持MySQL数据库在[GNU GPL](https://zh.wikipedia.org/wiki/GNU%E9%80%9A%E7%94%A8%E5%85%AC%E5%85%B1%E8%AE%B8%E5%8F%AF%E8%AF%81)下开源(因为大家担心MySQL被甲骨文收购后会不再开源)。如果决定要直接使用MariaDB作为MySQL的替代品,可以使用下面的命令进行安装。 - - ```Shell - yum install mariadb mariadb-server - ``` - - - 如果要安装官方版本的MySQL,可以在[MySQL官方网站]()下载安装文件。首先在下载页面中选择平台和版本,然后找到对应的下载链接。下面以MySQL 5.7.26版本和Red Hat Enterprise Linux为例,直接下载包含所有安装文件的归档文件,解归档之后通过包管理工具进行安装。 - - ```Shell - wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar - tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar - ``` - - 如果系统上有MariaDB相关的文件,需要先移除MariaDB相关的文件。 - - ```Shell - yum list installed | grep mariadb | awk '{print $1}' | xargs yum erase -y - ``` - - 接下来可以按照如下所示的顺序用RPM(Redhat Package Manager)工具安装MySQL。 - - ```Shell - rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm - rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm - rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm - rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm - ``` - - 可以使用下面的命令查看已经安装的MySQL相关的包。 - - ```Shell - rpm -qa | grep mysql - ``` - - - 启动MySQL服务。 - - 可以使用下面的命令来启动MySQL。 - - ```Shell - service mysqld start - ``` - - 在CentOS 7中,更推荐使用下面的命令来启动MySQL。 - - ```Shell - systemctl start mysqld - ``` - - 启动MySQL成功后,可以通过下面的命令来检查网络端口使用情况,MySQL默认使用3306端口。 - - ```Shell - netstat -nap | grep mysql - ``` - - - 使用MySQL客户端工具连接服务器。 - - 命令行工具: - - ```Shell - mysql -u root -p - ``` - - > 说明:启动客户端时,`-u`参数用来指定用户名,MySQL默认的超级管理账号为`root`;`-p`表示要输入密码(用户口令);如果连接的是其他主机而非本机,可以用`-h`来指定连接主机的主机名或IP地址。 - - 如果是首次安装MySQL,可以使用下面的命令来找到默认的初始密码。 - - ```Shell - cat /var/log/mysqld.log | grep password - ``` - - 上面的命令会查看MySQL的日志带有password的行,在显示的结果中`root@localhost:`后面的部分就是默认设置的初始密码。 - - 修改超级管理员(root)的访问口令为`123456`。 - - ```SQL - set global validate_password_policy=0; - set global validate_password_length=6; - alter user 'root'@'localhost' identified by '123456'; - ``` - - > 说明:MySQL默认不允许使用弱口令作为用户口令,所以我们通过上面的前两条命令修改了验证用户口令的策略和口令的长度。事实上我们不应该使用弱口令,因为存在用户口令被暴力破解的风险。近年来,攻击数据库窃取数据和劫持数据库勒索比特币的事件屡见不鲜,要避免这些潜在的风险,最为重要的一点是不要让数据库服务器暴露在公网上(最好的做法是将数据库置于内网,至少要做到不向公网开放数据库服务器的访问端口),另外要保管好`root`账号的口令,应用系统需要访问数据库时,通常不使用`root`账号进行访问,而是创建其他拥有适当权限的账号来访问。 - - 再次使用客户端工具连接MySQL服务器时,就可以使用新设置的口令了。在实际开发中,为了方便用户操作,可以选择图形化的客户端工具来连接MySQL服务器,包括: - - - MySQL Workbench(官方提供的工具) - - Navicat for MySQL(界面简单优雅,功能直观强大) - - SQLyog for MySQL(强大的MySQL数据库管理员工具) - -2. 常用命令。 - - - 查看服务器版本。 - - ```SQL - select version(); - ``` - - - 查看所有数据库。 - - ```SQL - show databases; - ``` - - - 切换到指定数据库。 - - ```SQL - use mysql; - ``` - - - 查看数据库下所有表。 - - ```Shell - show tables; - ``` - - - 获取帮助。 - - ```SQL - ? contents; - ? functions; - ? numeric functions; - ? round; - - ? data types; - ? longblob; - ``` - - -### SQL详解 - -1. DDL - - ```SQL - -- 如果存在名为school的数据库就删除它 - drop database if exists school; - - -- 创建名为school的数据库并设置默认的字符集和排序方式 - create database school default charset utf8 collate utf8_bin; - - -- 切换到school数据库上下文环境 - use school; - - -- 创建学院表 - create table tb_college - ( - collid int not null auto_increment comment '编号', - collname varchar(50) not null comment '名称', - collmaster varchar(20) not null comment '院长', - collweb varchar(511) default '' comment '网站', - primary key (collid) - ); - - -- 创建学生表 - create table tb_student - ( - stuid int not null comment '学号', - stuname varchar(20) not null comment '姓名', - stusex bit default 1 comment '性别', - stubirth date not null comment '出生日期', - stuaddr varchar(255) default '' comment '籍贯', - collid int not null comment '所属学院', - primary key (stuid), - foreign key (collid) references tb_college (collid) - ); - - -- alter table tb_student add constraint fk_student_collid foreign key (collid) references tb_college (collid); - - -- 创建教师表 - create table tb_teacher - ( - teaid int not null comment '工号', - teaname varchar(20) not null comment '姓名', - teatitle varchar(10) default '助教' comment '职称', - collid int not null comment '所属学院', - primary key (teaid), - foreign key (collid) references tb_college (collid) - ); - - -- 创建课程表 - create table tb_course - ( - couid int not null comment '编号', - couname varchar(50) not null comment '名称', - coucredit int not null comment '学分', - teaid int not null comment '授课老师', - primary key (couid), - foreign key (teaid) references tb_teacher (teaid) - ); - - -- 创建选课记录表 - create table tb_score - ( - scid int auto_increment comment '选课记录编号', - stuid int not null comment '选课学生', - couid int not null comment '所选课程', - scdate datetime comment '选课时间日期', - scmark decimal(4,1) comment '考试成绩', - primary key (scid), - foreign key (stuid) references tb_student (stuid), - foreign key (couid) references tb_course (couid) - ); - - -- 添加唯一性约束(一个学生选某个课程只能选一次) - alter table tb_score add constraint uni_score_stuid_couid unique (stuid, couid); - ``` - -2. DML - - ```SQL - - -- 插入学院数据 - insert into tb_college (collname, collmaster, collweb) values - ('计算机学院', '左冷禅', 'http://www.abc.com'), - ('外国语学院', '岳不群', 'http://www.xyz.com'), - ('经济管理学院', '风清扬', 'http://www.foo.com'); - - -- 插入学生数据 - insert into tb_student (stuid, stuname, stusex, stubirth, stuaddr, collid) values - (1001, '杨逍', 1, '1990-3-4', '四川成都', 1), - (1002, '任我行', 1, '1992-2-2', '湖南长沙', 1), - (1033, '王语嫣', 0, '1989-12-3', '四川成都', 1), - (1572, '岳不群', 1, '1993-7-19', '陕西咸阳', 1), - (1378, '纪嫣然', 0, '1995-8-12', '四川绵阳', 1), - (1954, '林平之', 1, '1994-9-20', '福建莆田', 1), - (2035, '东方不败', 1, '1988-6-30', null, 2), - (3011, '林震南', 1, '1985-12-12', '福建莆田', 3), - (3755, '项少龙', 1, '1993-1-25', null, 3), - (3923, '杨不悔', 0, '1985-4-17', '四川成都', 3), - (4040, '隔壁老王', 1, '1989-1-1', '四川成都', 2); - - -- 删除学生数据 - delete from tb_student where stuid=4040; - - -- 更新学生数据 - update tb_student set stuname='杨过', stuaddr='湖南长沙' where stuid=1001; - - -- 插入老师数据 - insert into tb_teacher (teaid, teaname, teatitle, collid) values - (1122, '张三丰', '教授', 1), - (1133, '宋远桥', '副教授', 1), - (1144, '杨逍', '副教授', 1), - (2255, '范遥', '副教授', 2), - (3366, '韦一笑', '讲师', 3); - - -- 插入课程数据 - insert into tb_course (couid, couname, coucredit, teaid) values - (1111, 'Python程序设计', 3, 1122), - (2222, 'Web前端开发', 2, 1122), - (3333, '操作系统', 4, 1122), - (4444, '计算机网络', 2, 1133), - (5555, '编译原理', 4, 1144), - (6666, '算法和数据结构', 3, 1144), - (7777, '经贸法语', 3, 2255), - (8888, '成本会计', 2, 3366), - (9999, '审计学', 3, 3366); - - -- 插入选课数据 - insert into tb_score (stuid, couid, scdate, scmark) values - (1001, 1111, '2017-09-01', 95), - (1001, 2222, '2017-09-01', 87.5), - (1001, 3333, '2017-09-01', 100), - (1001, 4444, '2018-09-03', null), - (1001, 6666, '2017-09-02', 100), - (1002, 1111, '2017-09-03', 65), - (1002, 5555, '2017-09-01', 42), - (1033, 1111, '2017-09-03', 92.5), - (1033, 4444, '2017-09-01', 78), - (1033, 5555, '2017-09-01', 82.5), - (1572, 1111, '2017-09-02', 78), - (1378, 1111, '2017-09-05', 82), - (1378, 7777, '2017-09-02', 65.5), - (2035, 7777, '2018-09-03', 88), - (2035, 9999, curdate(), null), - (3755, 1111, date(now()), null), - (3755, 8888, date(now()), null), - (3755, 9999, '2017-09-01', 92); - ``` - -3. DQL - - ```SQL - -- 查询所有学生信息 - select * from tb_student; - - -- 查询所有课程名称及学分(投影和别名) - select couname, coucredit from tb_course; - select couname as 课程名称, coucredit as 学分 from tb_course; - - -- 查询所有学生的姓名和性别(条件运算) - select stuname as 姓名, case stusex when 1 then '男' else '女' end as 性别 from tb_student; - select stuname as 姓名, if(stusex, '男', '女') as 性别 from tb_student; - - -- 查询所有女学生的姓名和出生日期(筛选) - select stuname, stubirth from tb_student where stusex=0; - - -- 查询所有80后学生的姓名、性别和出生日期(筛选) - select stuname, stusex, stubirth from tb_student where stubirth>='1980-1-1' and stubirth<='1989-12-31'; - select stuname, stusex, stubirth from tb_student where stubirth between '1980-1-1' and '1989-12-31'; - - -- 查询姓"杨"的学生姓名和性别(模糊) - select stuname, stusex from tb_student where stuname like '杨%'; - - -- 查询姓"杨"名字两个字的学生姓名和性别(模糊) - select stuname, stusex from tb_student where stuname like '杨_'; - - -- 查询姓"杨"名字三个字的学生姓名和性别(模糊) - select stuname, stusex from tb_student where stuname like '杨__'; - - -- 查询名字中有"不"字或"嫣"字的学生的姓名(模糊) - select stuname, stusex from tb_student where stuname like '%不%' or stuname like '%嫣%'; - - -- 查询没有录入家庭住址的学生姓名(空值) - select stuname from tb_student where stuaddr is null; - - -- 查询录入了家庭住址的学生姓名(空值) - select stuname from tb_student where stuaddr is not null; - - -- 查询学生选课的所有日期(去重) - select distinct scdate from tb_score; - - -- 查询学生的家庭住址(去重) - select distinct stuaddr from tb_student where stuaddr is not null; - - -- 查询男学生的姓名和生日按年龄从大到小排列(排序) - -- asc (ascending) - 升序(从小到大)/ desc (descending) - 降序(从大到小) - select stuname as 姓名, year(now())-year(stubirth) as 年龄 from tb_student where stusex=1 order by 年龄 desc; - - -- 聚合函数:max / min / count / sum / avg - -- 查询年龄最大的学生的出生日期(聚合函数) - select min(stubirth) from tb_student; - - -- 查询年龄最小的学生的出生日期(聚合函数) - select max(stubirth) from tb_student; - - -- 查询男女学生的人数(分组和聚合函数) - select stusex, count(*) from tb_student group by stusex; - - -- 查询课程编号为1111的课程的平均成绩(筛选和聚合函数) - select avg(scmark) from tb_score where couid=1111; - - -- 查询学号为1001的学生所有课程的平均分(筛选和聚合函数) - select avg(scmark) from tb_score where stuid=1001; - - -- 查询每个学生的学号和平均成绩(分组和聚合函数) - select stuid as 学号, avg(scmark) as 平均分 from tb_score group by stuid; - - -- 查询平均成绩大于等于90分的学生的学号和平均成绩 - -- 分组以前的筛选使用where子句 / 分组以后的筛选使用having子句 - select stuid as 学号, avg(scmark) as 平均分 from tb_score group by stuid having 平均分>=90; - - -- 查询年龄最大的学生的姓名(子查询/嵌套的查询) - select stuname from tb_student where stubirth=( - select min(stubirth) from tb_student - ); - - -- 查询年龄最大的学生姓名和年龄(子查询+运算) - select stuname as 姓名, year(now())-year(stubirth) as 年龄 from tb_student where stubirth=( - select min(stubirth) from tb_student - ); - - -- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) - select stuname from tb_student where stuid in ( - select stuid from tb_score group by stuid having count(stuid)>2 - ) - - -- 查询学生姓名、课程名称以及成绩(连接查询) - select stuname, couname, scmark from tb_student t1, tb_course t2, tb_score t3 where t1.stuid=t3.stuid and t2.couid=t3.couid and scmark is not null; - - -- 查询学生姓名、课程名称以及成绩按成绩从高到低查询第11-15条记录(内连接+分页) - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 5 offset 10; - - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 10, 5; - - -- 查询选课学生的姓名和平均成绩(子查询和连接查询) - select stuname, avgmark from tb_student t1, (select stuid, avg(scmark) as avgmark from tb_score group by stuid) t2 where t1.stuid=t2.stuid; - - select stuname, avgmark from tb_student t1 inner join - (select stuid, avg(scmark) as avgmark from tb_score group by stuid) t2 on t1.stuid=t2.stuid; - - -- 内连接(inner join)- 只有满足连接条件的记录才会被查出来 - -- 外连接(outer join)- 左外连接(left outer join) / 右外连接(right outer join) / 全外连接 - -- 查询每个学生的姓名和选课数量(左外连接和子查询) - select stuname, ifnull(total, 0) from tb_student t1 left outer join (select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid; - ``` - -4. DCL - - ```SQL - -- 创建名为hellokitty的用户 - create user 'hellokitty'@'%' identified by '123123'; - - -- 将对school数据库所有对象的所有操作权限授予hellokitty - grant all privileges on school.* to 'hellokitty'@'%'; - - -- 召回hellokitty对school数据库所有对象的insert/delete/update权限 - revoke insert, delete, update on school.* from 'hellokitty'@'%'; - ``` - -### 相关知识 - -#### 范式理论 - 设计二维表的指导思想 - -1. 第一范式:数据表的每个列的值域都是由原子值组成的,不能够再分割。 -2. 第二范式:数据表里的所有数据都要和该数据表的键(主键与候选键)有完全依赖关系。 -3. 第三范式:所有非键属性都只和候选键有相关性,也就是说非键属性之间应该是独立无关的。 - -#### 数据完整性 - -1. 实体完整性 - 每个实体都是独一无二的 - - 主键(primary key) / 唯一约束 / 唯一索引(unique) -2. 引用完整性(参照完整性)- 关系中不允许引用不存在的实体 - - 外键(foreign key) -3. 域完整性 - 数据是有效的 - - 数据类型及长度 - - 非空约束(not null) - - 默认值约束(default) - - 检查约束(check) - -#### 数据一致性 - -1. 事务:一系列对数据库进行读/写的操作。 - -2. 事务的ACID特性 - - 原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行 - - 一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态 - - 隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行 - - 持久性:已被提交的事务对数据库的修改应该永久保存在数据库中 - -### Python数据库编程 - -我们用如下所示的数据库来演示在Python中如何访问MySQL数据库。 - -```SQL -drop database if exists hrs; -create database hrs default charset utf8; - -use hrs; - -drop table if exists tb_emp; -drop table if exists tb_dept; - -create table tb_dept -( -dno int not null comment '编号', -dname varchar(10) not null comment '名称', -dloc varchar(20) not null comment '所在地', -primary key (dno) -); - -insert into tb_dept values - (10, '会计部', '北京'), - (20, '研发部', '成都'), - (30, '销售部', '重庆'), - (40, '运维部', '深圳'); - -create table tb_emp -( -eno int not null comment '员工编号', -ename varchar(20) not null comment '员工姓名', -job varchar(20) not null comment '员工职位', -mgr int comment '主管编号', -sal int not null comment '员工月薪', -comm int comment '每月补贴', -dno int comment '所在部门编号', -primary key (eno) -); - -alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno); - -insert into tb_emp values - (7800, '张三丰', '总裁', null, 9000, 1200, 20), - (2056, '乔峰', '分析师', 7800, 5000, 1500, 20), - (3088, '李莫愁', '设计师', 2056, 3500, 800, 20), - (3211, '张无忌', '程序员', 2056, 3200, null, 20), - (3233, '丘处机', '程序员', 2056, 3400, null, 20), - (3251, '张翠山', '程序员', 2056, 4000, null, 20), - (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10), - (5234, '郭靖', '出纳', 5566, 2000, null, 10), - (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30), - (1359, '胡一刀', '销售员', 3344, 1800, 200, 30), - (4466, '苗人凤', '销售员', 3344, 2500, null, 30), - (3244, '欧阳锋', '程序员', 3088, 3200, null, 20), - (3577, '杨过', '会计', 5566, 2200, null, 10), - (3588, '朱九真', '会计', 5566, 2500, null, 10); -``` - -在Python 3中,我们通常使用纯Python的三方库PyMySQL来访问MySQL数据库,它应该是目前最好的选择。 - -1. 安装PyMySQL。 - - ```Shell - pip install pymysql - ``` - -2. 添加一个部门。 - - ```Python - import pymysql - - - def main(): - no = int(input('编号: ')) - name = input('名字: ') - loc = input('所在地: ') - # 1. 创建数据库连接对象 - con = pymysql.connect(host='localhost', port=3306, - database='hrs', charset='utf8', - user='root', password='123456') - try: - # 2. 通过连接对象获取游标 - with con.cursor() as cursor: - # 3. 通过游标执行SQL并获得执行结果 - result = cursor.execute( - 'insert into tb_dept values (%s, %s, %s)', - (no, name, loc) - ) - if result == 1: - print('添加成功!') - # 4. 操作成功提交事务 - con.commit() - finally: - # 5. 关闭连接释放资源 - con.close() - - - if __name__ == '__main__': - main() - ``` - -3. 删除一个部门。 - - ```Python - import pymysql - - - def main(): - no = int(input('编号: ')) - con = pymysql.connect(host='localhost', port=3306, - database='hrs', charset='utf8', - user='root', password='123456', - autocommit=True) - try: - with con.cursor() as cursor: - result = cursor.execute( - 'delete from tb_dept where dno=%s', - (no, ) - ) - if result == 1: - print('删除成功!') - finally: - con.close() - - - if __name__ == '__main__': - main() - ``` - -4. 更新一个部门。 - - ```Python - import pymysql - - - def main(): - no = int(input('编号: ')) - name = input('名字: ') - loc = input('所在地: ') - con = pymysql.connect(host='localhost', port=3306, - database='hrs', charset='utf8', - user='root', password='123456', - autocommit=True) - try: - with con.cursor() as cursor: - result = cursor.execute( - 'update tb_dept set dname=%s, dloc=%s where dno=%s', - (name, loc, no) - ) - if result == 1: - print('更新成功!') - finally: - con.close() - - - if __name__ == '__main__': - main() - ``` - -5. 查询所有部门。 - - ```Python - import pymysql - from pymysql.cursors import DictCursor - - - def main(): - con = pymysql.connect(host='localhost', port=3306, - database='hrs', charset='utf8', - user='root', password='123456') - try: - with con.cursor(cursor=DictCursor) as cursor: - cursor.execute('select dno as no, dname as name, dloc as loc from tb_dept') - results = cursor.fetchall() - print(results) - print('编号\t名称\t\t所在地') - for dept in results: - print(dept['no'], end='\t') - print(dept['name'], end='\t') - print(dept['loc']) - finally: - con.close() - - - if __name__ == '__main__': - main() - ``` - -6. 分页查询员工信息。 - - ```Python - import pymysql - from pymysql.cursors import DictCursor - - - class Emp(object): - - def __init__(self, no, name, job, sal): - self.no = no - self.name = name - self.job = job - self.sal = sal - - def __str__(self): - return f'\n编号:{self.no}\n姓名:{self.name}\n职位:{self.job}\n月薪:{self.sal}\n' - - - def main(): - page = int(input('页码: ')) - size = int(input('大小: ')) - con = pymysql.connect(host='localhost', port=3306, - database='hrs', charset='utf8', - user='root', password='123456') - try: - with con.cursor() as cursor: - cursor.execute( - 'select eno as no, ename as name, job, sal from tb_emp limit %s,%s', - ((page - 1) * size, size) - ) - for emp_tuple in cursor.fetchall(): - emp = Emp(*emp_tuple) - print(emp) - finally: - con.close() - - - if __name__ == '__main__': - main() - ``` diff --git a/Day41-55/03.静态资源和Ajax请求.md b/Day41-55/03.静态资源和Ajax请求.md deleted file mode 100644 index 8ee7fb3..0000000 --- a/Day41-55/03.静态资源和Ajax请求.md +++ /dev/null @@ -1,304 +0,0 @@ -## 静态资源和Ajax请求 - -基于前面两个章节讲解的知识,我们已经可以使用Django框架来实现Web应用的开发了。接下来我们就尝试实现一个投票应用,具体的需求是用户进入应用首先查看到“学科介绍”页面,该页面显示了一个学校所开设的所有学科;通过点击某个学科,可以进入“老师介绍”页面,该页面展示了该学科所有老师的详细情况,可以在该页面上给老师点击“好评”或“差评”,但是会先跳转到“登录页”要求用户登录,登录成功才能投票;对于未注册的用户,可以在“登录页”点击“新用户注册”进入“注册页”完成用户注册,注册成功后会跳转到“登录页”,注册失败会获得相应的提示信息。 - -### 准备工作 - -由于之前已经详细的讲解了如何创建Django项目以及项目的相关配置,因此我们略过这部分内容,唯一需要说明的是,从上面对投票应用需求的描述中我们可以分析出三个业务实体:学科、老师和用户。学科和老师之间通常是一对多关联关系(一个学科有多个老师,一个老师通常只属于一个学科),用户因为要给老师投票,所以跟老师之间是多对多关联关系(一个用户可以给多个老师投票,一个老师也可以收到多个用户的投票)。首先修改应用下的models.py文件来定义数据模型,先给出学科和老师的模型。 - -```Python -from django.db import models - - -class Subject(models.Model): - """学科""" - no = models.AutoField(primary_key=True, verbose_name='编号') - name = models.CharField(max_length=31, verbose_name='名称') - intro = models.CharField(max_length=511, verbose_name='介绍') - - def __str__(self): - return self.name - - class Meta: - db_table = 'tb_subject' - verbose_name_plural = '学科' - - -class Teacher(models.Model): - """老师""" - no = models.AutoField(primary_key=True, verbose_name='编号') - name = models.CharField(max_length=15, verbose_name='姓名') - gender = models.BooleanField(default=True, choices=((True, '男'), (False, '女')), verbose_name='性别') - birth = models.DateField(null=True, verbose_name='出生日期') - intro = models.CharField(max_length=511, default='', verbose_name='') - good_count = models.IntegerField(default=0, verbose_name='好评数') - bad_count = models.IntegerField(default=0, verbose_name='差评数') - photo = models.CharField(max_length=255, verbose_name='照片') - subject = models.ForeignKey(to=Subject, on_delete=models.PROTECT, db_column='sno', verbose_name='所属学科') - - def __str__(self): - return self.name - - class Meta: - db_table = 'tb_teacher' - verbose_name_plural = '老师' -``` - -模型定义完成后,可以通过“生成迁移”和“执行迁移”来完成关系型数据库中二维表的创建,当然这需要提前启动数据库服务器并创建好对应的数据库,同时我们在项目中已经安装了PyMySQL而且完成了相应的配置,这些内容此处不再赘述。 - -```Shell -(venv)$ python manage.py makemigrations vote -... -(venv)$ python manage.py migrate -... -``` - -> 注意:为了给vote应用生成迁移,需要先修改Django项目的配置文件settings.py,在INSTALLED_APPS中添加vote应用。 - -完成模型迁移之后,我们可以通过下面的SQL语句来添加学科和老师测试的数据。 - -```SQL -INSERT INTO `tb_subject` (`no`,`name`,`intro`) -VALUES -(1, 'Python全栈+人工智能', 'Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。'), -(2, 'JavaEE+分布式服务', 'Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。'), -(3, 'HTML5大前端', 'HTML5 将成为 HTML、XHTML 以及 HTML DOM 的新标准。'), -(4, '全栈软件测试', '在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程'), -(5, '全链路UI/UE', '全链路要求设计师关注整个业务链中的每一个环节,将设计的价值融入每一个和用户的接触点中,让整个业务的用户体验质量得到几何级数的增长。'); - -INSERT INTO `tb_teacher` (`no`,`name`,`gender`,`birth`,`intro`,`good_count`,`bad_count`,`photo`,`sno`) -VALUES -(1, '骆昊', 1, '1980-11-28', '10年以上软硬件产品设计、研发、架构和管理经验,2003年毕业于四川大学,四川大学Java技术俱乐部创始人,四川省优秀大学毕业生,在四川省网络通信技术重点实验室工作期间,参与了2项国家自然科学基金项目、1项中国科学院中长期研究项目和多项四川省科技攻关项目,在国际会议和国内顶级期刊上发表多篇论文(1篇被SCI收录,3篇被EI收录),大规模网络性能测量系统DMC-TS的设计者和开发者,perf-TTCN语言的发明者。国内最大程序员社区CSDN的博客专家,在Github上参与和维护了多个高质量开源项目,精通C/C++、Java、Python、R、Swift、JavaScript等编程语言,擅长OOAD、系统架构、算法设计、协议分析和网络测量,主持和参与过电子政务系统、KPI考核系统、P2P借贷平台等产品的研发,一直践行“用知识创造快乐”的教学理念,善于总结,乐于分享。', 0, 0, 'images/luohao.png', 1), -(2, '王海飞', 1, '1993-05-24', '5年以上Python开发经验,先后参与了O2O商城、CRM系统、CMS平台、ERP系统等项目的设计与研发,曾在全国最大最专业的汽车领域相关服务网站担任Python高级研发工程师、项目经理等职务,擅长基于Python、Java、PHP等开发语言的企业级应用开发,全程参与了多个企业级应用从需求到上线所涉及的各种工作,精通Django、Flask等框架,熟悉基于微服务的企业级项目开发,拥有丰富的项目实战经验。善于用浅显易懂的方式在课堂上传授知识点,在授课过程中经常穿插企业开发的实际案例并分析其中的重点和难点,通过这种互动性极强的教学模式帮助学员找到解决问题的办法并提升学员的综合素质。', 0, 0, 'images/wangdachui.png', 1), -(3, '余婷', 0, '1992-03-12', '5年以上移动互联网项目开发经验和教学经验,曾担任上市游戏公司高级软件研发工程师和移动端(iOS)技术负责人,参了多个企业级应用和游戏类应用的移动端开发和后台服务器开发,拥有丰富的开发经验和项目管理经验,以个人开发者和协作开发者的身份在苹果的AppStore上发布过多款App。精通Python、C、Objective-C、Swift等开发语言,熟悉iOS原生App开发、RESTful接口设计以及基于Cocos2d-x的游戏开发。授课条理清晰、细致入微,性格活泼开朗、有较强的亲和力,教学过程注重理论和实践的结合,在学员中有良好的口碑。', 0, 0, 'images/yuting.png', 1), -(4, '肖世荣', 1, '1977-07-02', '10年以上互联网和移动互联网产品设计、研发、技术架构和项目管理经验,曾在中国移动、symbio、ajinga.com、万达信息等公司担任架构师、项目经理、技术总监等职务,长期为苹果、保时捷、耐克、沃尔玛等国际客户以及国内的政府机构提供信息化服务,主导的项目曾获得“世界科技先锋”称号,个人作品“许愿吧”曾在腾讯应用市场生活类App排名前3,拥有百万级用户群体,运营的公众号“卵石坊”是国内知名的智能穿戴设备平台。精通Python、C++、Java、Ruby、JavaScript等开发语言,主导和参与了20多个企业级项目(含国家级重大项目和互联网创新项目),涉及的领域包括政务、社交、电信、卫生和金融,有极为丰富的项目实战经验。授课深入浅出、条理清晰,善于调动学员的学习热情并帮助学员理清思路和方法。', 0, 0, 'images/xiaoshirong.png', 1), -(5, '张无忌', 1, '1987-07-07', '出生起便在冰火岛过着原始生活,踏入中土后因中玄冥神掌命危而带病习医,忍受寒毒煎熬七年最后因福缘际会练成“九阳神功”更在之后又练成了“乾坤大挪移”等盖世武功,几乎无敌于天下。 生性随和,宅心仁厚,精通医术和药理。20岁时便凭着盖世神功当上明教教主,率领百万教众及武林群雄反抗蒙古政权元朝的高压统治,最后推翻了元朝。由于擅长乾坤大挪移神功,上课遇到问题就转移话题,属于拉不出屎怪地球没有引力的类型。', 0, 0, 'images/zhangwuji.png', 5), -(6, '韦一笑', 1, '1975-12-15', '外号“青翼蝠王”,为明教四大护教法王之一。 身披青条子白色长袍,轻功十分了得。由于在修炼至阴至寒的“寒冰绵掌”时出了差错,经脉中郁积了至寒阴毒,只要运上内力,寒毒就会发作,如果不吸人血解毒,全身血脉就会凝结成冰,后得张无忌相助,以其高明医术配以“九阳神功”,终将寒毒驱去,摆脱了吸吮人血这一命运。由于轻功绝顶,学生一问问题就跑了。', 0, 0, 'images/weiyixiao.png', 3); -``` - -当然也可以直接使用Django提供的后台管理应用来添加学科和老师信息,这需要先注册模型类和模型管理类。 - -```SQL -from django.contrib import admin -from django.contrib.admin import ModelAdmin - -from vote.models import Teacher, Subject - - -class SubjectModelAdmin(ModelAdmin): - """学科模型管理""" - list_display = ('no', 'name') - ordering = ('no', ) - - -class TeacherModelAdmin(ModelAdmin): - """老师模型管理""" - list_display = ('no', 'name', 'gender', 'birth', 'good_count', 'bad_count', 'subject') - ordering = ('no', ) - search_fields = ('name', ) - - -admin.site.register(Subject, SubjectModelAdmin) -admin.site.register(Teacher, TeacherModelAdmin) -``` - -接下来,我们就可以修改views.py文件,通过编写视图函数先实现“学科介绍”页面。 - -```Python -def show_subjects(request): - """查看所有学科""" - subjects = Subject.objects.all() - return render(request, 'subject.html', {'subjects': subjects}) -``` - -至此,我们还需要一个模板页,模板的配置以及模板页中模板语言的用法在之前已经进行过简要的介绍,如果不熟悉可以看看下面的代码,相信这并不是一件困难的事情。 - -```HTML - - - - - 学科信息 - - - -

千锋互联所有学科信息

-
-
- {% for subject in subjects %} -
-
- - {{ subject.name }} - -
-
{{ subject.intro }}
-
- {% endfor %} -
- - -``` - -在上面的模板中,我们为每个学科添加了一个超链接,点击超链接可以查看该学科的讲师信息,为此需要再编写一个视图函数来处理查看指定学科老师信息。 - -```Python -def show_teachers(request): - """查看指定学科的老师""" - try: - sno = int(request.GET['sno']) - subject = Subject.objects.get(no=sno) - teachers = Teacher.objects.filter(subject__no=sno) - context = {'subject': subject, 'teachers': teachers} - return render(request, 'teacher.html', context) - except (KeyError, ValueError, Subject.DoesNotExist): - return redirect('/') -``` - -显示老师信息的模板页。 - -```HTML - -{% load static %} - - - - 老师信息 - - - -

{{ subject.name }}学科老师信息

-
- {% if teachers %} -
- {% for teacher in teachers %} -
-
- -
-
-
- 姓名:{{ teacher.name }} - 性别:{{ teacher.gender | yesno:'男,女' }} - 出生日期:{{ teacher.birth }} -
-
{{ teacher.intro }}
- -
-
- {% endfor %} -
- {% else %} -

暂时没有该学科的老师信息

- {% endif %} - - - -``` - -### 加载静态资源 - -在上面的模板页面中,我们使用了``标签来加载老师的照片,其中使用了引用静态资源的模板指令`{% static %}`,要使用该指令,首先要使用`{% load static %}`指令来加载静态资源,我们将这段代码放在了页码开始的位置。在上面的项目中,我们将静态资源置于名为static的文件夹中,在该文件夹下又创建了三个文件夹:css、js和images,分别用来保存外部层叠样式表、外部JavaScript文件和图片资源。为了能够找到保存静态资源的文件夹,我们还需要修改Django项目的配置文件settings.py,如下所示: - -```Python -# 此处省略上面的代码 - -STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ] -STATIC_URL = '/static/' - -# 此处省略下面的代码 -``` - -接下来修改urls.py文件,配置用户请求的URL和视图函数的对应关系。 - -```Python -from django.contrib import admin -from django.urls import path - -from vote import views - -urlpatterns = [ - path('', views.show_subjects), - path('teachers/', views.show_teachers), - path('admin/', admin.site.urls), -] -``` - -启动服务器运行项目,进入首页查看学科信息。 - -![](./res/show-subjects.png) - -点击学科查看老师信息。 - -![](./res/show-teachers.png) - -### Ajax请求 - -接下来就可以实现“好评”和“差评”的功能了,很明显如果能够在不刷新页面的情况下实现这两个功能会带来更好的用户体验,因此我们考虑使用[Ajax](https://zh.wikipedia.org/wiki/AJAX)技术来实现“好评”和“差评”,Ajax技术我们在之前的章节中已经介绍过了,此处不再赘述。 - -首先修改项目的urls.py文件,为“好评”和“差评”功能映射对应的URL。 - -```Python -from django.contrib import admin -from django.urls import path - -from vote import views - -urlpatterns = [ - path('', views.show_subjects), - path('teachers/', views.show_teachers), - path('praise/', views.prise_or_criticize), - path('criticize/', views.prise_or_criticize), - path('admin/', admin.site.urls), -] -``` - -设计视图函数`praise_or_criticize`来支持“好评”和“差评”功能,该视图函数通过Django封装的JsonResponse类将字典序列化成JSON字符串作为返回给浏览器的响应内容。 - -```Python -def praise_or_criticize(request): - """好评""" - try: - tno = int(request.GET['tno']) - teacher = Teacher.objects.get(no=tno) - if request.path.startswith('/prise'): - teacher.good_count += 1 - else: - teacher.bad_count += 1 - teacher.save() - data = {'code': 200, 'hint': '操作成功'} - except (KeyError, ValueError, Teacher.DoseNotExist): - data = {'code': 404, 'hint': '操作失败'} - return JsonResponse(data) -``` - -修改显示老师信息的模板页,引入jQuery库来实现事件处理、Ajax请求和DOM操作。 - -```HTML - - -``` - -### 小结 - -到此为止,这个投票项目的核心功能已然完成,在下面的章节中我们会要求用户必须登录才能投票,没有账号的用户可以通过注册功能注册一个账号。 \ No newline at end of file diff --git a/Day41-55/07.日志和调试.md b/Day41-55/07.日志和调试.md deleted file mode 100644 index a9ad1fc..0000000 --- a/Day41-55/07.日志和调试.md +++ /dev/null @@ -1,4 +0,0 @@ -## 日志和调试 - - - diff --git a/Day41-55/09.文件下载和报表.md b/Day41-55/09.文件下载和报表.md deleted file mode 100644 index c57794e..0000000 --- a/Day41-55/09.文件下载和报表.md +++ /dev/null @@ -1,4 +0,0 @@ -## 文件下载和报表 - - - diff --git a/Day41-55/01.快速上手.md b/Day41-55/41.快速上手.md similarity index 81% rename from Day41-55/01.快速上手.md rename to Day41-55/41.快速上手.md index aff16dc..76a9af0 100644 --- a/Day41-55/01.快速上手.md +++ b/Day41-55/41.快速上手.md @@ -23,7 +23,7 @@ Web开发的早期阶段,开发者需要手动编写每个页面,例如一 #### HTTP协议 -这里我们稍微费一些笔墨来谈谈上面提到的HTTP。HTTP(超文本传输协议)是构建于TCP(传输控制协议)之上应用级协议,它利用了TCP提供的可靠的传输服务实现了Web应用中的数据交换。按照维基百科上的介绍,设计HTTP最初的目的是为了提供一种发布和接收[HTML](https://zh.wikipedia.org/wiki/HTML)页面的方法,也就是说这个协议是浏览器和Web服务器之间传输的数据的载体。关于这个协议的详细信息以及目前的发展状况,大家可以阅读阮一峰老师的[《HTTP 协议入门》](http://www.ruanyifeng.com/blog/2016/08/http.html)、[《互联网协议入门》](http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html)系列以及[《图解HTTPS协议》](http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html)进行了解。下图是我于2009年9月10日凌晨4点在四川省网络通信技术重点实验室用开源协议分析工具Ethereal(抓包工具WireShark的前身)截取的访问百度首页时的HTTP请求和响应的报文(协议数据),由于Ethereal截取的是经过网络适配器的数据,因此可以清晰的看到从物理链路层到应用层的协议数据。 +这里我们稍微费一些笔墨来谈谈上面提到的HTTP。HTTP(超文本传输协议)是构建于TCP(传输控制协议)之上应用级协议,它利用了TCP提供的可靠的传输服务实现了Web应用中的数据交换。按照维基百科上的介绍,设计HTTP最初的目的是为了提供一种发布和接收[HTML](https://zh.wikipedia.org/wiki/HTML)页面的方法,也就是说这个协议是浏览器和Web服务器之间传输的数据的载体。关于这个协议的详细信息以及目前的发展状况,大家可以阅读阮一峰老师的[《HTTP 协议入门》](http://www.ruanyifeng.com/blog/2016/08/http.html)、[《互联网协议入门》](http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html)系列以及[《图解HTTPS协议》](http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html)进行了解。下图是我在四川省网络通信技术重点实验室学习和工作期间使用开源协议分析工具Ethereal(抓包工具WireShark的前身)截取的访问百度首页时的HTTP请求和响应的报文(协议数据),由于Ethereal截取的是经过网络适配器的数据,因此可以清晰的看到从物理链路层到应用层的协议数据。 HTTP请求(请求行+请求头+空行+[消息体]): @@ -33,7 +33,7 @@ HTTP响应(响应行+响应头+空行+消息体): ![](./res/http-response.png) -> 说明:但愿这两张如同泛黄的照片般的截图能帮助你了解HTTP到底是什么样子的。 +> 说明:这两张图是在2009年9月10日截取的,但愿这两张如同泛黄的照片般的截图能帮助你了解HTTP到底是什么样子的。 ### Django概述 @@ -51,6 +51,8 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 1. 检查Python环境:Django 1.11需要Python 2.7或Python 3.4以上的版本;Django 2.0需要Python 3.4以上的版本;Django 2.1需要Python 3.5以上的版本。 + > 说明:我自己平时使用macOS做开发,macOS和Linux平台使用的命令跟Windows平台有较大的区别,这一点在之前也有过类似的说明,如果使用Windows平台做开发,替换一下对应的命令即可。 + ```Shell $ python3 --version ``` @@ -75,7 +77,7 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 $ python3 -m venv venv $ source venv/bin/activate ``` - > 说明:上面使用了Python自带的venv模块完成了虚拟环境的创建,当然也可以使用其他的工具,例如:virtualenv或pipenv等。要激活虚拟环境,在Windows系统下是通过"venv/Scripts/activate"`执行批处理文件来实现。 + > 说明:上面使用了Python自带的venv模块完成了虚拟环境的创建,当然也可以使用virtualenv或pipenv这样的工具。要激活虚拟环境,在Windows环境下可以通过"venv/Scripts/activate"执行批处理文件来实现。 4. 更新包管理工具pip。 @@ -99,7 +101,7 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 或指定版本号来安装对应的Django的版本。 ```Shell - (venv)$ pip install django==1.11 + (venv)$ pip install django==2.1.8 ``` 6. 检查Django的版本。 @@ -123,7 +125,7 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 (venv)$ pip list ``` - 下图展示了Django版本和Python版本的对应关系,如果在安装时没有指定版本号,将自动选择最新的版本(在写作这段内容时,最新的版本是2.0;目前最新的版本已经更新到2.2)。 + 下图展示了Django版本和Python版本的对应关系,如果在安装时没有指定版本号,将自动选择最新的版本(在写作这段内容时,Django最新的版本是2.2)。 | Django版本 | Python版本 | | ---------- | ----------------------- | @@ -143,11 +145,13 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 执行上面的命令后看看生成的文件和文件夹,它们的作用如下所示: - - `manage.py`: 一个让你用各种方式管理 Django 项目的命令行工具。 - - `oa/__init__.py`:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。 - - `oa/settings.py`:Django 项目的配置文件。 - - `oa/urls.py`:Django 项目的 URL 声明,就像你网站的“目录”。 - - `oa/wsgi.py`:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。 + - `manage.py`: 一个让你可以管理Django项目的工具程序。 + - `oa/__init__.py`:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。 + - `oa/settings.py`:Django项目的配置文件。 + - `oa/urls.py`:Django项目的URL声明(URL映射),就像是你的网站的“目录”。 + - `oa/wsgi.py`:项目运行在WSGI兼容Web服务器上的接口文件。 + + > 说明:WSGI全称是Web服务器网关接口,维基百科上给出的解释是“为Python语言定义的[Web服务器](https://zh.wikipedia.org/wiki/%E7%B6%B2%E9%A0%81%E4%BC%BA%E6%9C%8D%E5%99%A8)和[Web应用程序](https://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F)或框架之间的一种简单而通用的接口”。 8. 启动服务器运行项目。 @@ -164,7 +168,7 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 > 说明2:用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍Python代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器。 - > 说明3:可以通过`python manage.py help`命令查看可用命令列表;在启动服务器时,也可以通过`python manage.py runserver 1.2.3.4:5678`来指定绑定的IP地址和端口。 + > 说明3:可以通过`python manage.py help`命令查看可用命令列表;在启动服务器时,也可以通过`python manage.py runserver 1.2.3.4:5678`来指定将服务器运行于哪个IP地址和端口。 > 说明4:可以通过Ctrl+C来终止服务器的运行。 @@ -199,14 +203,14 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 执行上面的命令会在当前路径下创建hrs目录,其目录结构如下所示: - - `__init__.py`:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。 + - `__init__.py`:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。 - `admin.py`:可以用来注册模型,用于在Django的管理界面管理模型。 - - `apps.py`:当前应用的配置。 + - `apps.py`:当前应用的配置文件。 - `migrations`:存放与模型有关的数据库迁移信息。 - - `__init__.py`:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。 - - `models.py`:存放应用的数据模型,即实体类及其之间的关系(MVC/MVT中的M)。 + - `__init__.py`:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。 + - `models.py`:存放应用的数据模型,即实体类及其之间的关系(MVC/MTV中的M)。 - `tests.py`:包含测试应用各项功能的测试类和测试函数。 - - `views.py`:处理请求并返回响应的函数(MVC中的C,MVT中的V)。 + - `views.py`:处理请求并返回响应的函数(MVC中的C,MTV中的V)。 2. 修改应用目录下的视图文件views.py。 @@ -240,7 +244,7 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 ``` > 说明:上面使用的`path`函数是Django 2.x中新添加的函数,除此之外还可以使用支持正则表达式的URL映射函数`re_path`函数;Django 1.x中是用名为`url`函数来设定URL映射。 -4. 切换到项目目录,修改该目录下的urls.py文件,对应用中设定的URL进行合并。 +4. 修改项目目录下的urls.py文件,对应用中设定的URL进行合并。 ```Shell (venv) $ vim oa/urls.py @@ -256,6 +260,8 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 ] ``` + > 说明:上面的代码通过`include`函数将hrs应用中配置URL的文件包含到项目的URL配置中,并映射到`hrs/`路径下。 + 5. 重新运行项目,并打开浏览器中访问。 ```Shell @@ -316,9 +322,7 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目 上面通过拼接HTML代码的方式生成动态视图的做法在实际开发中是无能接受的,这一点大家一定能够想到。为了解决这个问题,我们可以提前准备一个模板页,所谓模板页就是一个带占位符的HTML页面,当我们将程序中获得的数据替换掉页面中的占位符时,一个动态页面就产生了。 -我们可以用Django框架中template模块的Template类创建模板对象,通过模板对象的render方法实现对模板的渲染。所谓的渲染就是用数据替换掉模板页中的占位符,当然这里的渲染称为后端渲染,即在服务器端完成页面的渲染再输出到浏览器中,这种做法的主要坏处是当并发访问量较大时,服务器会承受较大的负担,所以今天有很多的Web应用都使用了前端渲染,即服务器只为浏览器提供所需的数据(通常是JSON格式),在浏览器中通过JavaScript获取这些数据并渲染到页面上,这些内容在后面为大家呈现。 - -Django框架通过shortcuts模块的快捷函数`render`简化了渲染模板的操作,具体的用法如下所示。 +我们可以用Django框架中template模块的Template类创建模板对象,通过模板对象的render方法实现对模板的渲染,在Django框架中还有一个名为`render`的便捷函数可以来完成渲染模板的操作。所谓的渲染就是用数据替换掉模板页中的占位符,当然这里的渲染称为后端渲染,即在服务器端完成页面的渲染再输出到浏览器中,这种做法的主要坏处是当并发访问量较大时,服务器会承受较大的负担,所以今天有很多的Web应用都使用了前端渲染,即服务器只提供所需的数据(通常是JSON格式),在浏览器中通过JavaScript获取这些数据并渲染到页面上,这个我们在后面的内容中会讲到。 1. 先回到manage.py文件所在的目录创建名为templates文件夹。 @@ -359,7 +363,7 @@ Django框架通过shortcuts模块的快捷函数`render`简化了渲染模板的 ``` - 在上面的模板页中我们使用了`{{ greeting }}`这样的模板占位符语法,也使用了`{% for %}`这样的模板指令,这些都是Django模板语言(DTL)的一部分。如果对此不熟悉并不要紧,我们会在后续的内容中进一步的讲解,而且我们刚才也说到了,还有更好的选择就是使用前端渲染,当然这是后话。 + 在上面的模板页中我们使用了`{{ greeting }}`这样的模板占位符语法,也使用了`{% for %}`这样的模板指令,这些都是Django模板语言(DTL)的一部分。如果对此不熟悉并不要紧,我们会在后续的内容中进一步的讲解,而且我们刚才也说到了,渲染页面还有更好的选择就是使用前端渲染,当然这是后话。 3. 回到应用目录,修改views.py文件。 @@ -381,6 +385,8 @@ Django框架通过shortcuts模块的快捷函数`render`简化了渲染模板的 return render(request, 'index.html', {'depts_list': depts_list}) ``` + > 说明:Django框架通过shortcuts模块的便捷函数`render`简化了渲染模板的操作,有了这个函数,就不用先创建`Template`对象再去调用`render`方法。。 + 到此为止,我们还没有办法让views.py中的`render`函数找到模板文件index.html,为此我们需要修改settings.py文件,配置模板文件所在的路径。 4. 切换到项目目录修改settings.py文件。 @@ -420,6 +426,5 @@ Django框架通过shortcuts模块的快捷函数`render`简化了渲染模板的 ### 总结 -至此,我们已经利用Django框架完成了一个非常小的Web应用,虽然它并没有任何的实际价值,但是可以通过这个项目对Django框架有一个感性的认识。当然,实际开发中我们可以用PyCharm来创建项目,如果使用专业版的PyCharm,可以直接创建Django项目。使用PyCharm的好处在于编写代码时可以获得代码提示、错误修复、自动导入等功能,从而提升开发效率,但是专业版的PyCharm需要按年支付相应的费用,社区版的PyCharm中并未包含对Django框架直接的支持,但是我们仍然可以使用它来创建Django项目,只是在使用上没有专业版的方便。关于PyCharm的使用,可以参考[《玩转PyCharm》](../玩转PyCharm.md)一文。 +至此,我们已经利用Django框架完成了一个非常小的Web应用,虽然它并没有任何的实际价值,但是可以通过这个项目对Django框架有一个感性的认识。当然,实际开发中我们可以用PyCharm来创建项目,如果使用专业版的PyCharm,可以直接创建Django项目。使用PyCharm的好处在于编写代码时可以获得代码提示、错误修复、自动导入等功能,从而提升开发效率,但是专业版的PyCharm需要按年支付相应的费用,社区版的PyCharm中并未包含对Django框架直接的支持,但是我们仍然可以使用它来创建Django项目,只是在使用上没有专业版的方便。关于PyCharm的使用,可以参考[《玩转PyCharm》](../玩转PyCharm.md)一文。此外,Django最好的学习资料肯定是它的[官方文档](https://docs.djangoproject.com/zh-hans/2.0/),当然图灵社区出版的[《Django基础教程》](http://www.ituring.com.cn/book/2630)也是非常适合初学者的入门级读物。 -此外,学习Django最好的资料肯定是它的[官方文档](https://docs.djangoproject.com/zh-hans/2.0/),除此之外图灵社区出版的[《Django基础教程》](http://www.ituring.com.cn/book/2630)也是非常适合初学者的读物。 \ No newline at end of file diff --git a/Day41-55/02.深入模型.md b/Day41-55/42.深入模型.md similarity index 89% rename from Day41-55/02.深入模型.md rename to Day41-55/42.深入模型.md index 5772496..3ba9035 100644 --- a/Day41-55/02.深入模型.md +++ b/Day41-55/42.深入模型.md @@ -1,6 +1,6 @@ ## 深入模型 -在上一个章节中,我们提到了Django是基于MVC架构的Web框架,MVC架构追求的是“模型”和“视图”的解耦合。所谓“模型”说得更直白一些就是数据,所以通常也被称作“数据模型”。在实际的项目中,数据模型通常通过数据库实现持久化操作,而关系型数据库在很长一段时间都是持久化的首选方案,下面我们以MySQL为例来说明如何使用关系型数据库来实现持久化操作。 +在上一个章节中,我们提到了Django是基于MVC架构的Web框架,MVC架构追求的是“模型”和“视图”的解耦合。所谓“模型”说得更直白一些就是数据(的表示),所以通常也被称作“数据模型”。在实际的项目中,数据模型通常通过数据库实现持久化操作,而关系型数据库在过去和当下都是持久化的首选方案,下面我们以MySQL为例来说明如何使用关系型数据库来实现持久化操作。 ### 配置关系型数据库MySQL @@ -9,7 +9,7 @@ 1. 修改项目的settings.py文件,首先将我们之前创建的应用hrs添加已安装的项目中,然后配置MySQL作为持久化方案。 ```Shell - (venv)$ cd oa/settings.py + (venv)$ vim oa/settings.py ``` ```Python @@ -29,7 +29,7 @@ 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'oa', - 'HOST': 'localhost', + 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': '123456', @@ -50,13 +50,13 @@ NAME属性代表数据库的名称,如果使用SQLite它对应着一个文件,在这种情况下NAME的属性值应该是一个绝对路径;使用其他关系型数据库,则要配置对应的HOST(主机)、PORT(端口)、USER(用户名)、PASSWORD(口令)等属性。 -2. 安装MySQL客户端工具,Python 3中使用PyMySQL,Python 2中用MySQLdb。 +2. 安装Python操作MySQL的依赖库,Python 3中通常使用PyMySQL,Python 2中通常用MySQLdb。 ```Shell (venv)$ pip install pymysql ``` - 如果使用Python 3需要修改**项目**的`__init__.py`文件并加入如下所示的代码,这段代码的作用是将PyMySQL视为MySQLdb来使用,从而避免Django找不到连接MySQL的客户端工具而询问你:“Did you install mysqlclient? ”(你安装了mysqlclient吗?)。 + 如果使用Python 3需要修改**项目目录**下的`__init__.py`文件并加入如下所示的代码,这段代码的作用是将PyMySQL视为MySQLdb来使用,从而避免Django找不到连接MySQL的客户端工具而询问你:“Did you install mysqlclient? ”(你安装了mysqlclient吗?)。 ```Python import pymysql @@ -64,15 +64,15 @@ pymysql.install_as_MySQLdb() ``` -3. 运行manage.py并指定migrate参数实现数据库迁移,为应用程序创建对应的数据表,当然在此之前需要**先启动MySQL数据库服务器并创建名为oa的数据库**,在MySQL中创建数据库的语句如下所示。 +3. 如果之前没有为应用程序创建数据库,那么现在是时候创建名为oa的数据库了。在MySQL中创建数据库的SQL语句如下所示: ```SQL - drop database if exists oa; create database oa default charset utf8; ``` +4. Django框架本身有自带的数据模型,我们稍后会用到这些模型,为此我们先做一次迁移操作。所谓迁移,就是根据模型自动生成关系数据库中的二维表,命令如下所示: + ```Shell - (venv)$ cd .. (venv)$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions @@ -93,7 +93,7 @@ Applying sessions.0001_initial... OK ``` -4. 可以看到,Django帮助我们创建了10张表,这些都是使用Django框架需要的东西,稍后我们就会用到这些表。除此之外,我们还应该为我们自己的应用创建数据模型。如果要在hrs应用中实现对部门和员工的管理,我们可以创建如下所示的数据模型。 +5. 接下来,我们为自己的应用创建数据模型。如果要在hrs应用中实现对部门和员工的管理,我们可以先创建部门和员工数据模型,代码如下所示。 ```Shell (venv)$ vim hrs/models.py @@ -120,11 +120,11 @@ no = models.IntegerField(primary_key=True, db_column='eno', verbose_name='员工编号') name = models.CharField(max_length=20, db_column='ename', verbose_name='员工姓名') job = models.CharField(max_length=10, verbose_name='职位') - # 自参照完整性多对一外键关联 - mgr = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='主管编号') + # 多对一外键关联(自参照) + mgr = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='主管') sal = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='月薪') comm = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True, verbose_name='补贴') - # 多对一外键关联 + # 多对一外键关联(参照部门模型) dept = models.ForeignKey(Dept, db_column='dno', on_delete=models.PROTECT, verbose_name='所在部门') class Meta: @@ -132,7 +132,7 @@ ``` > 说明:上面定义模型时使用了字段类及其属性,其中IntegerField对应数据库中的integer类型,CharField对应数据库的varchar类型,DecimalField对应数据库的decimal类型,ForeignKey用来建立多对一外键关联。字段属性primary_key用于设置主键,max_length用来设置字段的最大长度,db_column用来设置数据库中与字段对应的列,verbose_name则设置了Django后台管理系统中该字段显示的名称。如果对这些东西感到很困惑也不要紧,文末提供了字段类、字段属性、元数据选项等设置的相关说明,不清楚的读者可以稍后查看对应的参考指南。 -5. 通过模型创建数据表。 +6. 再次执行迁移操作,先通过模型生成迁移文件,再执行迁移创建二维表。 ```Shell (venv)$ python manage.py makemigrations hrs @@ -151,7 +151,9 @@ ![](./res/er-graph.png) -### 在后台管理模型 +### 利用Django后台管理模型 + +Django框架有自带的后台管理系统来实现对模型的管理。虽然实际应用中,这个后台可能并不能满足我们的需求,但是在学习Django框架时,我们暂时可以利用Django自带的后台管理系统来管理我们的模型,同时也可以了解一个项目的后台管理系统到底需要哪些功能。 1. 创建超级管理员账号。 @@ -201,23 +203,23 @@ 4. 对模型进行CRUD操作。 - 可以在管理员平台对模型进行C(新增)R(查看)U(更新)D(删除)操作,如下图所示。 + 可以在管理员平台对模型进行C(新增)、R(查看)、U(更新)、D(删除)操作,如下图所示。 - 添加新的部门。 + - 添加新的部门。 ![](./res/admin-model-create.png) - 查看所有部门。 + - 查看所有部门。 ![](./res/admin-model-read.png) - 更新和删除部门。 + - 更新和删除部门。 ![](./res/admin-model-delete-and-update.png) 5. 注册模型管理类。 - 再次修改admin.py文件,通过注册模型管理类,可以在后台管理系统中更好的管理模型。 + 可能大家已经注意到了,刚才在后台查看部门信息的时候,显示的部门信息并不直观,为此我们再修改admin.py文件,通过注册模型管理类,可以在后台管理系统中更好的管理模型。 ```Python from django.contrib import admin @@ -265,19 +267,12 @@ class Emp(models.Model): """员工类""" - # 此处省略上面的代码 - - mgr = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='直接主管') - - # 此处省略下面的代码 - # 此处省略上面的代码 def __str__(self): return self.name # 此处省略下面的代码 - ``` 修改代码后刷新查看Emp模型的页面,效果如下图所示。 @@ -301,6 +296,7 @@ Type "help", "copyright", "credits" or "license" for more information. ```Shell >>> from hrs.models import Dept, Emp +>>> >>> dept = Dept(40, '研发2部', '深圳') >>> dept.save() ``` @@ -314,14 +310,14 @@ Type "help", "copyright", "credits" or "license" for more information. #### 查询 -查询所有对象。 +1. 查询所有对象。 ```Shell >>> Dept.objects.all() , , , ]> ``` -过滤数据。 +2. 过滤数据。 ```Shell >>> Dept.objects.filter(name='研发3部') # 查询部门名称为“研发3部”的部门 @@ -337,7 +333,7 @@ Type "help", "copyright", "credits" or "license" for more information. , , ]> ``` -查询单个对象。 +3. 查询单个对象。 ```Shell >>> Dept.objects.get(pk=10) @@ -353,7 +349,7 @@ Type "help", "copyright", "credits" or "license" for more information. ``` -排序数据。 +4. 排序数据。 ```Shell >>> Dept.objects.order_by('no') # 查询所有部门按部门编号升序排列 @@ -363,7 +359,7 @@ Type "help", "copyright", "credits" or "license" for more information. , , , ]> ``` -切片数据。 +5. 数据切片(分页查询)。 ```Shell >>> Dept.objects.order_by('no')[0:2] # 按部门编号排序查询1~2部门 @@ -373,7 +369,7 @@ Type "help", "copyright", "credits" or "license" for more information. , ]> ``` -高级查询。 +6. 高级查询。 ```Shell >>> Emp.objects.filter(dept__no=10) # 根据部门编号查询该部门的员工 diff --git a/Day41-55/43.静态资源和Ajax请求.md b/Day41-55/43.静态资源和Ajax请求.md new file mode 100644 index 0000000..18f5df1 --- /dev/null +++ b/Day41-55/43.静态资源和Ajax请求.md @@ -0,0 +1,312 @@ +## 静态资源和Ajax请求 + +基于前面两个章节讲解的知识,我们已经可以使用Django框架来完成Web应用的开发了。接下来我们就尝试实现一个投票应用,具体的需求是用户进入应用首先查看到“学科介绍”页面,该页面显示了一个学校所开设的所有学科;通过点击某个学科,可以进入“老师介绍”页面,该页面展示了该学科所有老师的详细情况,可以在该页面上给老师点击“好评”或“差评”;如果用户没有登录,在投票时会先跳转到“登录页”要求用户登录,登录成功才能投票;对于未注册的用户,可以在“登录页”点击“新用户注册”进入“注册页”完成用户注册操作,注册成功后会跳转到“登录页”,注册失败会获得相应的提示信息。 + +### 准备工作 + +由于之前已经详细的讲解了如何创建Django项目以及项目的相关配置,因此我们略过这部分内容,唯一需要说明的是,从上面对投票应用需求的描述中我们可以分析出三个业务实体:学科、老师和用户。学科和老师之间通常是一对多关联关系(一个学科有多个老师,一个老师通常只属于一个学科),用户因为要给老师投票,所以跟老师之间是多对多关联关系(一个用户可以给多个老师投票,一个老师也可以收到多个用户的投票)。首先修改应用下的models.py文件来定义数据模型,先给出学科和老师的模型。 + +```Python +from django.db import models + + +class Subject(models.Model): + """学科""" + no = models.IntegerField(primary_key=True, verbose_name='编号') + name = models.CharField(max_length=20, verbose_name='名称') + intro = models.CharField(max_length=511, default='', verbose_name='介绍') + create_date = models.DateField(null=True, verbose_name='成立日期') + is_hot = models.BooleanField(default=False, verbose_name='是否热门') + + def __str__(self): + return self.name + + class Meta: + db_table = 'tb_subject' + verbose_name = '学科' + verbose_name_plural = '学科' + + +class Teacher(models.Model): + """老师""" + no = models.AutoField(primary_key=True, verbose_name='编号') + name = models.CharField(max_length=20, verbose_name='姓名') + detail = models.CharField(max_length=1023, default='', blank=True, verbose_name='详情') + photo = models.CharField(max_length=1023, default='', verbose_name='照片') + good_count = models.IntegerField(default=0, verbose_name='好评数') + bad_count = models.IntegerField(default=0, verbose_name='差评数') + subject = models.ForeignKey(to=Subject, on_delete=models.PROTECT, db_column='sno', verbose_name='所属学科') + + class Meta: + db_table = 'tb_teacher' + verbose_name = '老师' + verbose_name_plural = '老师' +``` + +模型定义完成后,可以通过“生成迁移”和“执行迁移”来完成关系型数据库中二维表的创建,当然这需要提前启动数据库服务器并创建好对应的数据库,同时我们在项目中已经安装了PyMySQL而且完成了相应的配置,这些内容此处不再赘述。 + +```Shell +(venv)$ python manage.py makemigrations vote +... +(venv)$ python manage.py migrate +... +``` + +> 注意:为了给vote应用生成迁移文件,需要修改Django项目settings.py文件,在INSTALLED_APPS中添加vote应用。 + +完成模型迁移之后,我们可以直接使用Django提供的后台管理来添加学科和老师信息,这需要先注册模型类和模型管理类。 + +```SQL +from django.contrib import admin + +from poll2.forms import UserForm +from poll2.models import Subject, Teacher + + +class SubjectAdmin(admin.ModelAdmin): + list_display = ('no', 'name', 'create_date', 'is_hot') + ordering = ('no', ) + + +class TeacherAdmin(admin.ModelAdmin): + list_display = ('no', 'name', 'detail', 'good_count', 'bad_count', 'subject') + ordering = ('subject', 'no') + + +admin.site.register(Subject, SubjectAdmin) +admin.site.register(Teacher, TeacherAdmin) +``` + +接下来,我们就可以修改views.py文件,通过编写视图函数先实现“学科介绍”页面。 + +```Python +def show_subjects(request): + """查看所有学科""" + subjects = Subject.objects.all() + return render(request, 'subject.html', {'subjects': subjects}) +``` + +至此,我们还需要一个模板页,模板的配置以及模板页中模板语言的用法在之前已经进行过简要的介绍,如果不熟悉可以看看下面的代码,相信这并不是一件困难的事情。 + +```HTML + + + + + 所有学科信息 + + + +

所有学科

+
+ {% for subject in subjects %} +
+

+ {{ subject.name }} + {% if subject.is_hot %} + + {% endif %} +

+

{{ subject.intro }}

+
+ {% endfor %} + + +``` + +在上面的模板中,我们为每个学科添加了一个超链接,点击超链接可以查看该学科的讲师信息,为此需要再编写一个视图函数来处理查看指定学科老师信息。 + +```Python +def show_teachers(request): + """显示指定学科的老师""" + try: + sno = int(request.GET['sno']) + subject = Subject.objects.get(no=sno) + teachers = subject.teacher_set.all() + return render(request, 'teachers.html', {'subject': subject, 'teachers': teachers}) + except (KeyError, ValueError, Subject.DoesNotExist): + return redirect('/') +``` + +显示老师信息的模板页。 + +```HTML + +{% load static %} + + + + 老师 + + + +

{{ subject.name }}学科老师信息

+
+ {% if teachers %} + {% for teacher in teachers %} +
+
+ +
+
+

{{ teacher.name }}

+

{{ teacher.detail }}

+

+ 好评 + ({{ teacher.good_count }}) + 差评 + ({{ teacher.bad_count }}) +

+
+
+ {% endfor %} + {% else %} +

暂时没有该学科的老师信息

+ {% endif %} +

+ 返回首页 +

+ + +``` + +### 加载静态资源 + +在上面的模板页面中,我们使用了``标签来加载老师的照片,其中使用了引用静态资源的模板指令`{% static %}`,要使用该指令,首先要使用`{% load static %}`指令来加载静态资源,我们将这段代码放在了页码开始的位置。在上面的项目中,我们将静态资源置于名为static的文件夹中,在该文件夹下又创建了三个文件夹:css、js和images,分别用来保存外部层叠样式表、外部JavaScript文件和图片资源。为了能够找到保存静态资源的文件夹,我们还需要修改Django项目的配置文件settings.py,如下所示: + +```Python +# 此处省略上面的代码 + +STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ] +STATIC_URL = '/static/' + +# 此处省略下面的代码 +``` + +接下来修改urls.py文件,配置用户请求的URL和视图函数的对应关系。 + +```Python +from django.contrib import admin +from django.urls import path + +from vote import views + +urlpatterns = [ + path('', views.show_subjects), + path('teachers/', views.show_teachers), + path('admin/', admin.site.urls), +] +``` + +启动服务器运行项目,进入首页查看学科信息。 + +![](./res/show_subjects.png) + +点击学科查看老师信息。 + +![](./res/show_teachers.png) + +### Ajax请求 + +接下来就可以实现“好评”和“差评”的功能了,很明显如果能够在不刷新页面的情况下实现这两个功能会带来更好的用户体验,因此我们考虑使用[Ajax](https://zh.wikipedia.org/wiki/AJAX)技术来实现“好评”和“差评”,Ajax技术我们在Web前端部分已经介绍过了,此处不再赘述。 + +首先修改项目的urls.py文件,为“好评”和“差评”功能映射对应的URL。 + +```Python +from django.contrib import admin +from django.urls import path + +from vote import views + +urlpatterns = [ + path('', views.show_subjects), + path('teachers/', views.show_teachers), + path('praise/', views.prise_or_criticize), + path('criticize/', views.prise_or_criticize), + path('admin/', admin.site.urls), +] +``` + +设计视图函数`praise_or_criticize`来支持“好评”和“差评”功能,该视图函数通过Django封装的JsonResponse类将字典序列化成JSON字符串作为返回给浏览器的响应内容。 + +```Python +def praise_or_criticize(request): + """好评""" + try: + tno = int(request.GET['tno']) + teacher = Teacher.objects.get(no=tno) + if request.path.startswith('/praise'): + teacher.good_count += 1 + else: + teacher.bad_count += 1 + teacher.save() + data = {'code': 200, 'hint': '操作成功'} + except (KeyError, ValueError, Teacher.DoseNotExist): + data = {'code': 404, 'hint': '操作失败'} + return JsonResponse(data) +``` + +修改显示老师信息的模板页,引入jQuery库来实现事件处理、Ajax请求和DOM操作。 + +```HTML + +{% load static %} + + + + 老师 + + + +

{{ subject.name }}学科老师信息

+
+ {% if teachers %} + {% for teacher in teachers %} +
+
+ +
+
+

{{ teacher.name }}

+

{{ teacher.detail }}

+

+ 好评 + ({{ teacher.good_count }}) +    + 差评 + ({{ teacher.bad_count }}) +

+
+
+ {% endfor %} + {% else %} +

暂时没有该学科的老师信息

+ {% endif %} +

+ 返回首页 +

+ + + + +``` + +### 小结 + +到此为止,这个投票项目的核心功能已然完成,在下面的章节中我们会要求用户必须登录才能投票,没有账号的用户可以通过注册功能注册一个账号。 \ No newline at end of file diff --git a/Day41-55/04.表单的应用.md b/Day41-55/44.表单的应用.md similarity index 84% rename from Day41-55/04.表单的应用.md rename to Day41-55/44.表单的应用.md index 8a2f9e0..a9db6cc 100644 --- a/Day41-55/04.表单的应用.md +++ b/Day41-55/44.表单的应用.md @@ -20,8 +20,10 @@ class User(models.Model): 通过生成迁移和执行迁移操作,在数据库中创建对应的用户表。 ```Shell -python manage.py makemigrations 应用名 -python manage.py migrate +(venv)$ python manage.py makemigrations vote +... +(venv)$ python manage.py migrate +... ``` 定制一个非常简单的注册模板页面。 @@ -62,13 +64,13 @@ python manage.py migrate ``` -注意,在上面的表单中,我们使用了模板指令`{% csrf_token %}`为表单添加一个隐藏域(type属性值为hidden的input标签),它的作用是在表单中生成一个随机令牌(token)来防范[跨站请求伪造]()(通常简称为CSRF),这也是Django在提交表单时的硬性要求,除非我们专门设置了免除CSRF令牌。下图是一个关于CSRF简单生动的例子,它来自于[维基百科]()。 +注意,在上面的表单中,我们使用了模板指令`{% csrf_token %}`为表单添加一个隐藏域(type属性值为hidden的input标签),它的作用是在表单中生成一个随机令牌(token)来防范[跨站请求伪造]()(通常简称为CSRF),这也是Django在提交表单时的硬性要求,除非我们设置了免除CSRF令牌。下图是一个关于CSRF简单生动的例子,它来自于[维基百科]()。 ![](./res/CSRF.png) 用户在提交注册表单时,我们还需要对用户的输入进行验证,例如我们的网站要求用户名必须由字母、数字、下划线构成且长度在4-20个字符之间,密码的长度为8-20个字符,确认密码必须跟密码保持一致。这些验证操作首先可以通过浏览器中的JavaScript代码来完成,但是即便如此,在服务器端仍然要对用户输入再次进行验证来避免将无效的数据库交给数据库,因为用户可能会禁用浏览器的JavaScript功能,也有可能绕过浏览器的输入检查将注册数据提交给服务器,所以服务器端的用户输入检查仍然是必要的。 -我们可以利用Django框架封装的表单功能来对用户输入的有效性进行检查,虽然Django封装的表单还能帮助我们定制出页面上的表单元素,但是这显然是一种灵活性很差的设计,这样的功能在实际开发中基本不考虑,所以表单主要的作用就在于数据验证,具体的做法如下所示。 +我们可以利用Django框架封装的表单功能来对用户输入的有效性进行检查,虽然Django封装的表单还能帮助我们定制出页面上的表单元素,但这显然是一种灵活性很差的设计,这样的功能在实际开发中基本不考虑,所以表单主要的作用就在于数据验证,具体的做法如下所示。 ```Python USERNAME_PATTERN = re.compile(r'\w{4,20}') @@ -99,7 +101,7 @@ class RegisterForm(forms.ModelForm): exclude = ('no', 'regdate') ``` -上面,我们定义了一个与User模型绑定的表单(继承自ModelForm),我们排除了用户编号(no)和注册日期(regdate)这两个属性,并添加了一个repassword属性用来接收从用户表单传给服务器的确认密码。我们在定义User模型时已经对用户名的最大长度进行了限制,上面我们又对确认密码的最小和最大长度进行了限制,但是这些都不足以完成我们对用户输入的验证。上面以`clean_`打头的方法就是我们自定义的验证规则。很明显,`clean_username`是对用户名的检查,而`clean_password`是对密码的检查。由于数据库二维表中不应该保存密码的原文,所以对密码做了一个简单的MD5摘要处理,实际开发中这样处理还不太够,因为有被实施反向查表法(利用彩虹表反向查询)破解用户密码的风险。为字符串生成MD5摘要的代码如下所示。 +上面,我们定义了一个与User模型绑定的表单(继承自ModelForm),我们排除了用户编号(no)和注册日期(regdate)这两个属性,并添加了一个repassword属性用来接收从用户表单传给服务器的确认密码。我们在定义User模型时已经对用户名的最大长度进行了限制,上面我们又对确认密码的最小和最大长度进行了限制,但是这些都不足以完成我们对用户输入的验证。上面以`clean_`打头的方法就是我们自定义的验证规则。很明显,`clean_username`是对用户名的检查,而`clean_password`是对密码的检查。由于数据库二维表中不应该保存密码的原文,所以对密码做了一个简单的MD5摘要处理,实际开发中如果只做出这样的处理还不太够,因为即便使用了摘要,仍然有利用彩虹表反向查询破解用户密码的风险,如何做得更好我们会在后续的内容中讲到。为字符串生成MD5摘要的代码如下所示。 ```Python def to_md5_hex(message): @@ -131,18 +133,13 @@ from django.urls import path from vote import views urlpatterns = [ - path('', views.show_subjects), - path('captcha/', views.get_captcha), - path('teachers/', views.show_teachers), - path('prise/', views.praise_or_criticize), - path('criticize/', views.praise_or_criticize), - path('login/', views.login, name='login'), + # 此处省略上面的代码 path('register/', views.register, name='register'), - path('admin/', admin.site.urls), + # 此处省略下面的代码 ] ``` -> 说明:上面的代码中我们把待会要用到的登录和验证码的URL也顺便做了映射。`path`函数还可以通过name参数给URL绑定一个逆向解析的名字,也就是说,如果需要可以从后面给的名字逆向得到对应的URL。 +> 说明:`path`函数可以通过name参数给URL绑定一个逆向解析的名字,也就是说,如果需要可以从后面给的名字逆向解析出对应的URL。 我们再来定制一个非常简单的登录页。 @@ -159,7 +156,6 @@ urlpatterns = [

{{ hint }}

- {% csrf_token %}
@@ -184,9 +180,9 @@ urlpatterns = [ ``` -上面的登录页中,我们要求用户提供验证码,验证码全称是**全自动区分计算机和人类的公开图灵测试**,它是一种用来区分系统的使用者是计算机还是人类的程序。简单的说就是程序出一个只有人类能够回答的问题,由系统使用者来解答,由于计算机理论上无法解答程序提出的问题,所以回答出问题的用户就可以被认为是人类。大多数的网站都使用了不同类型的验证码技术来防范计算机自动注册用户或模拟用户登录(暴力破解用户密码),因为验证码具有一次消费性,而没有通过图灵测试的计算机是不能够注册或登录的。 +上面的登录页中,我们要求用户提供验证码,验证码全称是**全自动区分计算机和人类的公开图灵测试**,它是一种用来区分系统的使用者是计算机还是人类的程序。简单的说就是程序出一个只有人类能够回答的问题,由系统使用者来解答,由于计算机理论上无法解答程序提出的问题,所以回答出问题的用户就可以被认为是人类。大多数的网站都使用了不同类型的验证码技术来防范用程序自动注册用户或模拟用户登录(暴力破解用户密码),因为验证码具有一次消费性,而没有通过图灵测试的程序是不能够完成注册或登录的。 -在Python程序中生成验证码并不算特别复杂,但需要三方库pillow的支持(PIL的分支)。我们可以借鉴现有的方法用Python稍作封装即可。下面的代码已经实现了生成验证码图片并得到图片二进制数据的功能。 +在Python程序中生成验证码并不算特别复杂,但需要三方库Pillow的支持(PIL的分支),因为要对验证码图片进行旋转、扭曲、拉伸以及加入干扰信息来防范那些用OCR(光学文字识别)破解验证码的程序。下面的代码封装了生成验证码图片的功能,大家可以直接用这些代码来生成图片验证码,不要“重复发明轮子”。 ```Python """ @@ -234,15 +230,16 @@ class Captcha(object): self._image = None self._fonts = fonts if fonts else \ [os.path.join(os.path.dirname(__file__), 'fonts', font) - for font in ['Action.ttf', 'Silom.ttf', 'Verdana.ttf']] + for font in ['ArialRB.ttf', 'ArialNI.ttf', 'Georgia.ttf', 'Kongxin.ttf']] self._color = color if color else random_color(0, 200, random.randint(220, 255)) self._width, self._height = width, height @classmethod def instance(cls, width=200, height=75): - if not hasattr(Captcha, "_instance"): - cls._instance = cls(width, height) - return cls._instance + prop_name = f'_instance_{width}_{height}' + if not hasattr(cls, prop_name): + setattr(cls, prop_name, cls(width, height)) + return getattr(cls, prop_name) def background(self): """绘制背景""" @@ -266,7 +263,7 @@ class Captcha(object): for ps in zip(*path))) Draw(self._image).line(points, fill=color if color else self._color, width=width) - def noise(self, number=62, level=2, color=None): + def noise(self, number=50, level=2, color=None): """绘制扰码""" width, height = self._image.size dx, dy = width / 10, height / 10 @@ -351,7 +348,9 @@ class Captcha(object): self.background() self.text(captcha_text, self._fonts, drawings=['warp', 'rotate', 'offset']) - self.curve(), self.noise(), self.smooth() + self.curve() + self.noise() + self.smooth() image_bytes = BytesIO() self._image.save(image_bytes, format=fmt) return image_bytes.getvalue() @@ -445,4 +444,49 @@ def login(request): return render(request, 'login.html', {'hint': hint}) ``` -需要指出,上面我们设定用户登录成功时直接返回首页,而且在用户登录时并没有验证用户输入的验证码是否正确,这些我们留到下一个单元再为大家讲解。 \ No newline at end of file +映射URL。 + +```Python +from django.contrib import admin +from django.urls import path + +from vote import views + +urlpatterns = [ + # 此处省略上面的代码 + path('login/', views.login, name='login'), + # 此处省略下面的代码 +] +``` + +需要指出,上面我们设定用户登录成功时直接返回首页,而且在用户登录时并没有验证用户输入的验证码是否正确,这些我们留到下一个单元再为大家讲解。另外,如果要在Django自带的管理后台中进行表单验证,可以在admin.py的模型管理类中指定`form`属性为自定义的表单即可,例如: + +```Python +class UserForm(forms.ModelForm): + password = forms.CharField(min_length=8, max_length=20, + widget=forms.PasswordInput, label='密码') + + def clean_username(self): + username = self.cleaned_data['username'] + if not USERNAME_PATTERN.fullmatch(username): + raise ValidationError('用户名由字母、数字和下划线构成且长度为4-20个字符') + return username + + def clean_password(self): + password = self.cleaned_data['password'] + return to_md5_hex(self.cleaned_data['password']) + + class Meta: + model = User + exclude = ('no', ) + + +class UserAdmin(admin.ModelAdmin): + list_display = ('no', 'username', 'password', 'email', 'tel') + ordering = ('no', ) + form = UserForm + list_per_page = 10 + + +admin.site.register(User, UserAdmin) +``` \ No newline at end of file diff --git a/Day41-55/05.Cookie和Session.md b/Day41-55/45.Cookie和Session.md similarity index 88% rename from Day41-55/05.Cookie和Session.md rename to Day41-55/45.Cookie和Session.md index cf31b52..565d878 100644 --- a/Day41-55/05.Cookie和Session.md +++ b/Day41-55/45.Cookie和Session.md @@ -12,13 +12,13 @@ 2. 隐藏域(隐式表单域)。在提交表单的时候,可以通过在表单中设置隐藏域向服务器发送额外的数据。例如:``。 -3. Cookie。Cookie是保存在浏览器临时文件中的数据,每次请求时,请求头中会携带本站点的cookie到服务器,那么只要将sessionid写入cookie,下次请求时服务器只要读取请求头中的cookie就能够获得这个sessionid,如下图所示: +3. 本地存储。现在的浏览器都支持多种本地存储方案,包括:cookie、localStorage、sessionStorage、IndexedDB等。在这些方案中,cookie是历史最为悠久也是被诟病得最多的一种方案,也是我们接下来首先为大家讲解的一种方案。简单的说,cookie是一种以键值对方式保存在浏览器临时文件中的数据,每次请求时,请求头中会携带本站点的cookie到服务器,那么只要将sessionid写入cookie,下次请求时服务器只要读取请求头中的cookie就能够获得这个sessionid,如下图所示。 ![](./res/sessionid_from_cookie.png) -需要说明的是,在HTML5时代要想在浏览器中保存数据,除了使用cookie之外,还可以使用新的本地存储API,包括localStorage、sessionStorage、IndexedDB等,如下图所示。 + 在HTML5时代要,除了cookie,还可以使用新的本地存储API来保存数据,就是刚才提到的localStorage、sessionStorage、IndexedDB等技术,如下图所示。 -![](./res/cookie_xstorage_indexeddb.png) + ![](./res/cookie_xstorage_indexeddb.png) ### Django框架对session的支持 @@ -57,7 +57,7 @@ def login(request: HttpRequest): user = User.objects.filter(username=username, password=password).first() if user: # 登录成功后将用户编号和用户名保存在session中 - request.session['no'] = user.no + request.session['userid'] = user.no request.session['username'] = user.username return redirect('/') else: @@ -67,21 +67,21 @@ def login(request: HttpRequest): return render(request, 'login.html', {'hint': hint}) ``` -上面的代码中,我们设定了登录成功后会在session中保存用户的编号(`no`)和用户名(`username`),页面会重定向到首页。接下来我们可以稍微对首页的代码进行调整,在页面的右上角显示出登录用户的用户名。我们将这段代码单独写成了一个名为header.html的HTML文件,首页中可以通过在``标签中添加`{% include 'header.html' %}`来包含这个页面,代码如下所示。 +上面的代码中,我们设定了登录成功后会在session中保存用户的编号(`userid`)和用户名(`username`),页面会重定向到首页。接下来我们可以稍微对首页的代码进行调整,在页面的右上角显示出登录用户的用户名。我们将这段代码单独写成了一个名为header.html的HTML文件,首页中可以通过在``标签中添加`{% include 'header.html' %}`来包含这个页面,代码如下所示。 ```HTML
- {% if request.session.no %} + {% if request.session.userid %} {{ request.session.username }} - 注销 + 注销 {% else %} - 登录   + 登录   {% endif %} - 注册 + 注册
``` -如果用户没有登录,页面会显示登录和注册的超链接;而用户登录成功后,页面上会显示用户名和注销的链接,注销链接对应的视图函数如下所示。 +如果用户没有登录,页面会显示登录和注册的超链接;而用户登录成功后,页面上会显示用户名和注销的链接,注销链接对应的视图函数如下所示,URL的映射与之前讲过的类似,不再赘述。 ```Python def logout(request): diff --git a/Day41-55/46.报表和日志.md b/Day41-55/46.报表和日志.md new file mode 100644 index 0000000..dffdcfc --- /dev/null +++ b/Day41-55/46.报表和日志.md @@ -0,0 +1,351 @@ +## 报表和日志 + +### 导出Excel报表 + +报表就是用表格、图表等格式来动态显示数据,所以有人用这样的公式来描述报表: + +``` +报表 = 多样的格式 + 动态的数据 +``` + +有很多的三方库支持在Python程序中写Excel文件,包括[xlwt]()、[xlwings]()、[openpyxl]()、[xlswriter]()、[pandas]()等,其中的xlwt虽然只支持写xls格式的Excel文件,但在性能方面的表现还是不错的。下面我们就以xlwt为例,来演示如何在Django项目中导出Excel报表,例如导出一个包含所有老师信息的Excel表格。 + +```Python +def export_teachers_excel(request): + # 创建工作簿 + wb = xlwt.Workbook() + # 添加工作表 + sheet = wb.add_sheet('老师信息表') + # 查询所有老师的信息(注意:这个地方稍后需要优化) + queryset = Teacher.objects.all() + # 向Excel表单中写入表头 + colnames = ('姓名', '介绍', '好评数', '差评数', '学科') + for index, name in enumerate(colnames): + sheet.write(0, index, name) + # 向单元格中写入老师的数据 + props = ('name', 'detail', 'good_count', 'bad_count', 'subject') + for row, teacher in enumerate(queryset): + for col, prop in enumerate(props): + value = getattr(teacher, prop, '') + if isinstance(value, Subject): + value = value.name + sheet.write(row + 1, col, value) + # 保存Excel + buffer = BytesIO() + wb.save(buffer) + # 将二进制数据写入响应的消息体中并设置MIME类型 + resp = HttpResponse(buffer.getvalue(), content_type='application/vnd.ms-excel') + # 中文文件名需要处理成百分号编码 + filename = quote('老师.xls') + # 通过响应头告知浏览器下载该文件以及对应的文件名 + resp['content-disposition'] = f'attachment; filename="{filename}"' + return resp +``` + +映射URL。 + +```Python +urlpatterns = [ + # 此处省略上面的代码 + path('excel/', views.export_teachers_excel), + # 此处省略下面的代码 +] +``` + +### 生成前端统计图表 + +如果项目中需要生成前端统计图表,可以使用百度的[ECharts]()。具体的做法是后端通过提供数据接口返回统计图表所需的数据,前端使用ECharts来渲染出柱状图、折线图、饼图、散点图等图表。例如我们要生成一个统计所有老师好评数和差评数的报表,可以按照下面的方式来做。 + +```Python +def get_teachers_data(request): + # 查询所有老师的信息(注意:这个地方稍后也需要优化) + queryset = Teacher.objects.all() + # 用生成式将老师的名字放在一个列表中 + names = [teacher.name for teacher in queryset] + # 用生成式将老师的好评数放在一个列表中 + good = [teacher.good_count for teacher in queryset] + # 用生成式将老师的差评数放在一个列表中 + bad = [teacher.bad_count for teacher in queryset] + # 返回JSON格式的数据 + return JsonResponse({'names': names, 'good': good, 'bad': bad}) +``` + +映射URL。 + +```Python +urlpatterns = [ + # 此处省略上面的代码 + path('teachers_data/', views.export_teachers_excel), + # 此处省略下面的代码 +] +``` + +使用ECharts生成柱状图。 + +```HTML + + + + + 老师评价统计 + + +
+

+ 返回首页 +

+ + + + +``` + +运行效果如下图所示。 + +![](./res/echarts_bar_graph.png) + +### 配置日志 + +项目开发阶段,显示足够的调试信息以辅助开发人员调试代码还是非常必要的;项目上线以后,将系统运行时出现的警告、错误等信息记录下来以备相关人员了解系统运行状况并维护代码也是很有必要的。要做好这两件事件,我们需要为Django项目配置日志。 + +Django的日志配置基本可以参照官方文档再结合项目实际需求来进行,这些内容基本上可以从官方文档上复制下来,然后进行局部的调整即可,下面给出一些参考配置。 + +```Python +LOGGING = { + 'version': 1, + # 是否禁用已经存在的日志器 + 'disable_existing_loggers': False, + # 日志格式化器 + 'formatters': { + 'simple': { + 'format': '%(asctime)s %(module)s.%(funcName)s: %(message)s', + 'datefmt': '%Y-%m-%d %H:%M:%S', + }, + 'verbose': { + 'format': '%(asctime)s %(levelname)s [%(process)d-%(threadName)s] ' + '%(module)s.%(funcName)s line %(lineno)d: %(message)s', + 'datefmt': '%Y-%m-%d %H:%M:%S', + } + }, + # 日志过滤器 + 'filters': { + # 只有在Django配置文件中DEBUG值为True时才起作用 + 'require_debug_true': { + '()': 'django.utils.log.RequireDebugTrue', + }, + }, + # 日志处理器 + 'handlers': { + # 输出到控制台 + 'console': { + 'class': 'logging.StreamHandler', + 'level': 'DEBUG', + 'filters': ['require_debug_true'], + 'formatter': 'simple', + }, + # 输出到文件(每周切割一次) + 'file1': { + 'class': 'logging.handlers.TimedRotatingFileHandler', + 'filename': 'access.log', + 'when': 'W0', + 'backupCount': 12, + 'formatter': 'simple', + 'level': 'INFO', + }, + # 输出到文件(每天切割一次) + 'file2': { + 'class': 'logging.handlers.TimedRotatingFileHandler', + 'filename': 'error.log', + 'when': 'D', + 'backupCount': 31, + 'formatter': 'verbose', + 'level': 'WARNING', + }, + }, + # 日志器记录器 + 'loggers': { + 'django': { + # 需要使用的日志处理器 + 'handlers': ['console', 'file1', 'file2'], + # 是否向上传播日志信息 + 'propagate': True, + # 日志级别(不一定是最终的日志级别) + 'level': 'DEBUG', + }, + } +} +``` + +大家可能已经注意到了,上面日志配置中的formatters是**日志格式化器**,它代表了如何格式化输出日志,其中格式占位符分别表示: + +1. %(name)s - 记录器的名称 +2. %(levelno)s - 数字形式的日志记录级别 +3. %(levelname)s - 日志记录级别的文本名称 +4. %(filename)s - 执行日志记录调用的源文件的文件名称 +5. %(pathname)s - 执行日志记录调用的源文件的路径名称 +6. %(funcName)s - 执行日志记录调用的函数名称 +7. %(module)s - 执行日志记录调用的模块名称 +8. %(lineno)s - 执行日志记录调用的行号 +9. %(created)s - 执行日志记录的时间 +10. %(asctime)s - 日期和时间 +11. %(msecs)s - 毫秒部分 +12. %(thread)d - 线程ID(整数) +13. %(threadName)s - 线程名称 +14. %(process)d - 进程ID (整数) + +日志配置中的handlers用来指定**日志处理器**,简单的说就是指定将日志输出到控制台还是文件又或者是网络上的服务器,可用的处理器包括: + +1. logging.StreamHandler(stream=None) - 可以向类似与sys.stdout或者sys.stderr的任何文件对象输出信息 +2. logging.FileHandler(filename, mode='a', encoding=None, delay=False) - 将日志消息写入文件 +3. logging.handlers.DatagramHandler(host, port) - 使用UDP协议,将日志信息发送到指定主机和端口的网络主机上 +4. logging.handlers.HTTPHandler(host, url) - 使用HTTP的GET或POST方法将日志消息上传到一台HTTP 服务器 +5. logging.handlers.RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=False) - 将日志消息写入文件,如果文件的大小超出maxBytes指定的值,那么将重新生成一个文件来记录日志 +6. logging.handlers.SocketHandler(host, port) - 使用TCP协议,将日志信息发送到指定主机和端口的网络主机上 +7. logging.handlers.SMTPHandler(mailhost, fromaddr, toaddrs, subject, credentials=None, secure=None, timeout=1.0) - 将日志输出到指定的邮件地址 +8. logging.MemoryHandler(capacity, flushLevel=ERROR, target=None, flushOnClose=True) - 将日志输出到内存指定的缓冲区中 + +上面每个日志处理器都指定了一个名为“level”的属性,它代表了日志的级别,不同的日志级别反映出日志中记录信息的严重性。Python中定义了六个级别的日志,按照从低到高的顺序依次是:NOTSET、DEBUG、INFO、WARNING、ERROR、CRITICAL。 + +最后配置的**日志记录器**是用来真正输出日志的,Django框架提供了如下所示的内置记录器: + +1. django - 在Django层次结构中的所有消息记录器 +2. django.request - 与请求处理相关的日志消息。5xx响应被视为错误消息;4xx响应被视为为警告消息 +3. django.server - 与通过runserver调用的服务器所接收的请求相关的日志消息。5xx响应被视为错误消息;4xx响应被记录为警告消息;其他一切都被记录为INFO +4. django.template - 与模板渲染相关的日志消息 +5. django.db.backends - 有与数据库交互产生的日志消息,如果希望显示ORM框架执行的SQL语句,就可以使用该日志记录器。 + +日志记录器中配置的日志级别有可能不是最终的日志级别,因为还要参考日志处理器中配置的日志级别,取二者中级别较高者作为最终的日志级别。 + +### 配置Django-Debug-Toolbar + +Django-Debug-Toolbar是项目开发阶段辅助调试和优化的神器,只要配置了它,就可以很方便的查看到如下表所示的项目运行信息,这些信息对调试项目和优化Web应用性能都是至关重要的。 + +| 项目 | 说明 | +| ----------- | --------------------------------- | +| Versions | Django的版本 | +| Time | 显示视图耗费的时间 | +| Settings | 配置文件中设置的值 | +| Headers | HTTP请求头和响应头的信息 | +| Request | 和请求相关的各种变量及其信息 | +| StaticFiles | 静态文件加载情况 | +| Templates | 模板的相关信息 | +| Cache | 缓存的使用情况 | +| Signals | Django内置的信号信息 | +| Logging | 被记录的日志信息 | +| SQL | 向数据库发送的SQL语句及其执行时间 | + +1. 安装Django-Debug-Toolbar。 + + ```Shell + pip install django-debug-toolbar + ``` + +2. 配置 - 修改settings.py。 + + ```Python + INSTALLED_APPS = [ + 'debug_toolbar', + ] + + MIDDLEWARE = [ + 'debug_toolbar.middleware.DebugToolbarMiddleware', + ] + + DEBUG_TOOLBAR_CONFIG = { + # 引入jQuery库 + 'JQUERY_URL': 'https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js', + # 工具栏是否折叠 + 'SHOW_COLLAPSED': True, + # 是否显示工具栏 + 'SHOW_TOOLBAR_CALLBACK': lambda x: True, + } + ``` + +3. 配置 - 修改urls.py。 + + ```Python + if settings.DEBUG: + + import debug_toolbar + + urlpatterns.insert(0, path('__debug__/', include(debug_toolbar.urls))) + ``` + +4. 使用 - 如下图所示,在配置好Django-Debug-Toolbar之后,页面右侧会看到一个调试工具栏,上面包括了如前所述的各种调试信息,包括执行时间、项目设置、请求头、SQL、静态资源、模板、缓存、信号等,查看起来非常的方便。 + +### 优化ORM代码 + +在配置了日志或Django-Debug-Toolbar之后,我们可以查看一下之前将老师数据导出成Excel报表的视图函数执行情况,这里我们关注的是ORM框架生成的SQL查询到底是什么样子的,相信这里的结果会让你感到有一些意外。执行`Teacher.objects.all()`之后我们可以注意到,在控制台看到的或者通过Django-Debug-Toolbar输出的SQL是下面这样的: + +```SQL +SELECT `tb_teacher`.`no`, `tb_teacher`.`name`, `tb_teacher`.`detail`, `tb_teacher`.`photo`, `tb_teacher`.`good_count`, `tb_teacher`.`bad_count`, `tb_teacher`.`sno` FROM `tb_teacher`; args=() +SELECT `tb_subject`.`no`, `tb_subject`.`name`, `tb_subject`.`intro`, `tb_subject`.`create_date`, `tb_subject`.`is_hot` FROM `tb_subject` WHERE `tb_subject`.`no` = 101; args=(101,) +SELECT `tb_subject`.`no`, `tb_subject`.`name`, `tb_subject`.`intro`, `tb_subject`.`create_date`, `tb_subject`.`is_hot` FROM `tb_subject` WHERE `tb_subject`.`no` = 101; args=(101,) +SELECT `tb_subject`.`no`, `tb_subject`.`name`, `tb_subject`.`intro`, `tb_subject`.`create_date`, `tb_subject`.`is_hot` FROM `tb_subject` WHERE `tb_subject`.`no` = 101; args=(101,) +SELECT `tb_subject`.`no`, `tb_subject`.`name`, `tb_subject`.`intro`, `tb_subject`.`create_date`, `tb_subject`.`is_hot` FROM `tb_subject` WHERE `tb_subject`.`no` = 101; args=(101,) +SELECT `tb_subject`.`no`, `tb_subject`.`name`, `tb_subject`.`intro`, `tb_subject`.`create_date`, `tb_subject`.`is_hot` FROM `tb_subject` WHERE `tb_subject`.`no` = 103; args=(103,) +SELECT `tb_subject`.`no`, `tb_subject`.`name`, `tb_subject`.`intro`, `tb_subject`.`create_date`, `tb_subject`.`is_hot` FROM `tb_subject` WHERE `tb_subject`.`no` = 103; args=(103,) +``` + +这里的问题通常被称为“1+N查询”(或“N+1查询”),原本获取老师的数据只需要一条SQL,但是由于老师关联了学科,当我们查询到N条老师的数据时,Django的ORM框架又向数据库发出了N条SQL去查询老师所属学科的信息。每条SQL执行都会有较大的开销而且会给数据库服务器带来压力,如果能够在一条SQL中完成老师和学科的查询肯定是更好的做法,这一点也很容易做到,相信大家已经想到怎么做了。是的,我们可以使用连接查询,但是在使用Django的ORM框架时如何做到这一点呢?对于多对一关联(如投票应用中的老师和学科),我们可以使用`QuerySet`的用`select_related()`方法来加载关联对象;而对于多对多关联(如电商网站中的订单和商品),我们可以使用`prefetch_related()`方法来加载关联对象。 + +在导出老师Excel报表的视图函数中,我们可以按照下面的方式优化代码。 + +```Python +queryset = Teacher.objects.all().select_related('subject') +``` + +事实上,用ECharts生成前端报表的视图函数中,查询老师好评和差评数据的操作也能够优化,因为在这个例子中,我们只需要获取老师的姓名、好评数和差评数这三项数据,但是在默认的情况生成的SQL会查询老师表的所有字段。可以用`QuerySet`的`only()`方法来指定需要查询的属性,也可以用`QuerySet`的`defer()`方法来指定暂时不需要查询的属性,这样生成的SQL会通过投影操作来指定需要查询的列,从而改善查询性能,代码如下所示: + +```Python +queryset = Teacher.objects.all().only('name', 'good_count', 'bad_count') +``` + +当然,如果要统计出每个学科的老师好评和差评的平均数,利用Django的ORM框架也能够做到,代码如下所示: + +```Python +queryset = Teacher.objects.values('subject').annotate( + good=Avg('good_count'), bad=Avg('bad_count')) +``` + +这里获得的`QuerySet`中的元素是字典对象,每个字典中有三组键值对,分别是代表学科编号的`subject`、代表好评数的`good`和代表差评数的`bad`。如果想要获得学科的名称而不是编号,可以按照如下所示的方式调整代码: + +```Python +queryset = Teacher.objects.values('subject__name').annotate( + good=Avg('good_count'), bad=Avg('bad_count')) +``` + +可见,Django的ORM框架允许我们用面向对象的方式完成关系数据库中的分组和聚合查询。 \ No newline at end of file diff --git a/Day41-55/06.中间件的应用.md b/Day41-55/47.中间件的应用.md similarity index 61% rename from Day41-55/06.中间件的应用.md rename to Day41-55/47.中间件的应用.md index fb39beb..4eecd40 100644 --- a/Day41-55/06.中间件的应用.md +++ b/Day41-55/47.中间件的应用.md @@ -1,5 +1,7 @@ ## 中间件的应用 +### 实现登录验证 + 我们继续来完善投票应用。在上一个章节中,我们在用户登录成功后通过session保留了用户信息,接下来我们可以应用做一些调整,要求在为老师投票时必须要先登录,登录过的用户可以投票,否则就将用户引导到登录页面,为此我们可以这样修改视图函数。 ```Python @@ -9,7 +11,7 @@ def praise_or_criticize(request: HttpRequest): try: tno = int(request.GET.get('tno', '0')) teacher = Teacher.objects.get(no=tno) - if request.path.startswith('/vote/praise'): + if request.path.startswith('/praise'): teacher.good_count += 1 else: teacher.bad_count += 1 @@ -30,19 +32,14 @@ def praise_or_criticize(request: HttpRequest): $('.comment > a').on('click', (evt) => { evt.preventDefault() let a = $(evt.target) - $.ajax({ - url: a.attr('href'), - type: 'get', - dataType: 'json', - success: (json) => { - if (json.code == 200) { - let span = a.next() - span.text(parseInt(span.text()) + 1) - } else if (json.code == 401) { - location.href = '/vote/login/?backurl=' + location.href - } else { - alert(json.message) - } + $.getJSON(a.attr('href'), (json) => { + if (json.code == 200) { + let span = a.next() + span.text(parseInt(span.text()) + 1) + } else if (json.code == 401) { + location.href = '/login/?backurl=' + location.href + } else { + alert(json.message) } }) }) @@ -52,7 +49,7 @@ def praise_or_criticize(request: HttpRequest): > 注意:为了在登录成功之后能够回到刚才投票的页面,我们在跳转登录时设置了一个`backurl`参数,把当前浏览器中的URL作为返回的页面地址。 -这样我们已经实现了用户必须登录才能投票的限制,但是一个新的问题来了。如果我们的应用中有很多功能都需要用户先登录才能执行,那么我们是不是需要在每个视图函数中添加代码来检查session中是否包含了登录用户的信息呢?答案是否定的,如果这样做了,我们的视图函数中必然会充斥着大量的重复代码。编程大师*Martin Fowler*曾经说过:**代码有很多种坏味道,重复是最坏的一种**。我们可以把验证用户是否登录这样的代码放到Django的中间件中。 +这样我们已经实现了用户必须登录才能投票的限制,但是一个新的问题来了。如果我们的应用中有很多功能都需要用户先登录才能执行,例如将前面导出Excel报表和查看统计图表的功能都加以登录限制,那么我们是不是需要在每个视图函数中添加代码来检查session中是否包含了登录用户的信息呢?答案是否定的,如果这样做了,我们的视图函数中必然会充斥着大量的重复代码。编程大师*Martin Fowler*曾经说过:**代码有很多种坏味道,重复是最坏的一种**。在Django项目中,我们可以把验证用户是否登录这样的重复性代码放到中间件中。 ### Django中间件概述 @@ -93,26 +90,37 @@ MIDDLEWARE = [ ### 自定义中间件 -Django中的中间件有两种实现方式:基于类的实现方式和基于函数的实现方式,后者更接近于装饰器的写法。装饰器实际上是代理模式的应用,将横切关注功能(与正常业务逻辑没有必然联系的功能,例如:身份认证、日志记录、编码转换之类的功能)置于代理中,由代理对象来完成被代理对象的行为并添加额外的功能。中间件对用户请求和响应进行拦截过滤并增加额外的处理,在这一点上它跟装饰器是完全一致的,所以基于函数的写法来实现中间件就跟装饰器的写法几乎一模一样。下面我们用自定义的中间件来实现对用户进行登录验证的功能。 +Django中的中间件有两种实现方式:基于类的实现方式和基于函数的实现方式,后者更接近于装饰器的写法。装饰器实际上是代理模式的应用,将横切关注功能(与正常业务逻辑没有必然联系的功能,例如:身份认证、日志记录、编码转换之类的功能)置于代理中,由代理对象来完成被代理对象的行为并添加额外的功能。中间件对用户请求和响应进行拦截过滤并增加额外的处理,在这一点上它跟装饰器是完全一致的,所以基于函数的写法来实现中间件就跟装饰器的写法几乎一模一样。下面我们用自定义的中间件来实现用户登录验证的功能。 ```Python """ middlewares.py """ +from django.http import JsonResponse from django.shortcuts import redirect +# 需要登录才能访问的资源路径 +LOGIN_REQUIRED_URLS = { + '/praise/', '/criticize/', '/excel/', '/teachers_data/', +} -def check_login_middleware(func): + +def check_login_middleware(get_resp): def wrapper(request, *args, **kwargs): - # 获取请求的资源路径 - path = request.path - # 如果请求的资源路径在设定的元组中就表示需要登录验证 - if path in ('/vote/praise/', '/vote/criticize/'): - if 'username' not in request.session: - # session中没有username就重定向到登录页 - return redirect('login') - return func(request, *args, **kwargs) + # 请求的资源路径在上面的集合中 + if request.path in LOGIN_REQUIRED_URLS: + # 会话中包含userid则视为已经登录 + if 'userid' not in request.session: + # 判断是不是Ajax请求 + if request.is_ajax(): + # Ajax请求返回JSON数据提示用户登录 + return JsonResponse({'code': 10003, 'hint': '请先登录'}) + else: + backurl = request.get_full_path() + # 非Ajax请求直接重定向到登录页 + return redirect(f'/login/?backurl={backurl}') + return get_resp(request, *args, **kwargs) return wrapper ``` @@ -133,3 +141,10 @@ MIDDLEWARE = [ ] ``` +注意上面这个中间件列表中元素的顺序,当收到来自用户的请求时,中间件按照从上到下的顺序依次执行,这行完这些中间件以后,请求才会最终到达视图函数。当然,在这个过程中,用户的请求可以被拦截,就像上面我们自定义的中间件那样,如果用户在没有登录的情况下访问了受保护的资源,中间件会将请求直接重定向到登录页,后面的中间件和视图函数将不再执行。在响应用户请求的过程中,上面的中间件会按照从下到上的顺序依次执行,这样的话我们还可以对响应做进一步的处理。 + +中间件执行的顺序是非常重要的,对于有依赖关系的中间件必须保证被依赖的中间件要置于依赖它的中间件的前面,就好比我们刚才自定义的中间件要放到`SessionMiddleware`的后面,因为我们要依赖这个中间件为请求绑定的`session`对象才能判定用户是否登录。 + +### 小结 + +至此,除了对用户投票数量加以限制的功能外,这个投票应用就算基本完成了,整个项目的完整代码请参考,其中用户注册时使用的手机验证码功能请大家使用自己注册的短信平台替代它。如果需要投票应用完整的视频讲解,可以在首页扫码打赏后留言联系作者获取视频下载地址,谢谢大家的理解和支持。 \ No newline at end of file diff --git a/Day41-55/48.前后端分离开发入门.md b/Day41-55/48.前后端分离开发入门.md new file mode 100644 index 0000000..2e0879e --- /dev/null +++ b/Day41-55/48.前后端分离开发入门.md @@ -0,0 +1,164 @@ +## 前后端分离开发入门 + +在传统的Web应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端。所谓前后端分离的开发,就是前后端工程师约定好数据交互接口,并行的进行开发和测试,后端只提供数据,不负责将数据渲染到页面上,前端通过HTTP请求获取数据并负责将数据渲染到页面上,这个工作是交给浏览器中的JavaScript代码来完成。 + +使用前后端分离开发有诸多的好处,下面我们简要的说下这些好处: + +1. **提升开发效率**。前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定好应用所需接口以及接口参数,便可以开始并行开发,无需等待对方的开发工作结束。在这种情况下,前后端工程师都可以只专注于自己的开发工作,有助于打造出更好的团队。除此之外,在前后端分离的开发模式下,即使需求发生变更,只要接口与数据格式不变,后端开发人员就不需要修改代码,只要前端进行变动即可。 +2. **增强代码的可维护性**。前后端分离后,应用的代码不再是前后端混合,只有在运行期才会有调用依赖关系,这样的话维护代码的工作将变得轻松愉快很多,再不会牵一发而动全身。当你的代码变得简明且整洁时,代码的可读性和可维护性都会有质的提升。 +3. **支持多终端和服务化架构**。前后端分离后,同一套数据接口可以为不同的终端提供服务,更有助于打造多终端应用;此外,由于后端提供的接口之间可以通过HTTP(S)进行调用,有助于打造服务化架构(包括微服务)。 + +接下来我们就用前后端分离的方式来改写之前的投票应用。 + +### 返回JSON格式的数据 + +刚才说过,在前后端分离的开发模式下,后端需要为前端提供数据接口,这些接口通常返回JSON格式的数据。在Django项目中,我们可以先将对象处理成字典,然后就可以利用Django封装的`JsonResponse`向浏览器返回JSON格式的数据,具体的做法如下所示。 + +```Python +def show_subjects(request): + queryset = Subject.objects.all() + subjects = [] + for subject in queryset: + subjects.append({ + 'no': subject.no, + 'name': subject.name, + 'intro': subject.intro, + 'isHot': subject.is_hot + }) + return JsonResponse(subjects, safe=False) +``` + +上面的代码中,我们通过循环遍历查询学科得到的`QuerySet`对象,将每个学科的数据处理成一个字典,在将字典保存在名为`subjects`的列表容器中,最后利用`JsonResponse`完成对列表的序列化,向浏览器返回JSON格式的数据。由于`JsonResponse`序列化的是一个列表而不是字典,所以需要指定`safe`参数的值为`False`才能完成对`subjects`的序列化,否则会产生`TypeError`异常。 + +可能大家已经发现了,自己写代码将一个对象转成字典是比较麻烦的,如果对象的属性很多而且某些属性又关联到一个比较复杂的对象时,情况会变得更加糟糕。为此我们可以使用一个名为bpmappers的三方库来简化将对象转成字典的操作,这个三方库本身也提供了对Django框架的支持。 + +安装三方库bpmappers。 + +```Shell +pip install bpmappers +``` + +编写映射器(实现对象到字典转换)。 + +```Python +from bpmappers.djangomodel import ModelMapper + +from poll2.models import Subject + + +class SubjectMapper(ModelMapper): + + class Meta: + model = Subject +``` + +修改视图函数。 + +```Python +def show_subjects(request): + queryset = Subject.objects.all() + subjects = [] + for subject in queryset: + subjects.append(SubjectMapper(subject).as_dict()) + return JsonResponse(subjects, safe=False) +``` + +配置URL映射,然后访问该接口,可以得到如下所示的JSON格式数据。 + +```JSON +[ + { + "no": 101, + "name": "Python全栈+人工智能", + "intro": "Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。", + "create_date": "2017-08-01", + "is_hot": true + }, + // 此处省略下面的内容 +] +``` + +如果不希望在JSON数据中显示学科的成立时间,我们可以在映射器中排除`create_date`属性;如果希望将是否为热门学科对应的键取名为`isHot`(默认的名字是`is_hot`),也可以通过修改映射器来做到。具体的做法如下所示: + +```Python +from bpmappers import RawField +from bpmappers.djangomodel import ModelMapper + +from poll2.models import Subject + + +class SubjectMapper(ModelMapper): + isHot = RawField('is_hot') + + class Meta: + model = Subject + exclude = ('create_date', 'is_hot') +``` + +再次查看学科接口返回的JSON数据。 + +```JSON +[ + { + "no": 101, + "name": "Python全栈+人工智能", + "intro": "Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。", + "isHot": true + }, + // 此处省略下面的内容 +] +``` + +关于bpmappers详细的使用指南,请参考它的[官方文档](),这个官方文档是用日语书写的,可以使用浏览器的翻译功能将它翻译成你熟悉的语言即可。 + +### 使用Vue.js渲染页面 + +关于Vue.js的知识,我们在第21天到第30天的内容中已经介绍过了,这里我们不再进行赘述。如果希望全面的了解和学习Vue.js,建议阅读它的[官方教程]()或者在[YouTube]()上搜索Vue.js的新手教程(Crash Course)进行学习。 + +重新改写subjects.html页面,使用Vue.js来渲染页面。 + +```HTML + + + + + 学科 + + +

所有学科

+
+
+
+

+ {{ subject.name }} + +

+

{{ subject.intro }}

+
+
+ + + + +``` + +前后端分离的开发需要将前端页面作为静态资源进行部署,项目实际上线的时候,我们会对整个Web应用进行动静分离,静态资源通过Nginx或Apache服务器进行部署,生成动态内容的Python程序部署在uWSGI或者Gunicorn服务器上,对动态内容的请求由Nginx或Apache路由到uWSGI或Gunicorn服务器上。 + +在开发阶段,我们通常会使用Django自带的测试服务器,如果要尝试前后端分离,可以先将静态页面放在之前创建的放静态资源的目录下,具体的做法可以参考[项目完整代码]()。 \ No newline at end of file diff --git a/Day41-55/10.RESTful架构和DRF入门.md b/Day41-55/49.RESTful架构和DRF入门.md similarity index 100% rename from Day41-55/10.RESTful架构和DRF入门.md rename to Day41-55/49.RESTful架构和DRF入门.md diff --git a/Day41-55/11.RESTful架构和DRF进阶.md b/Day41-55/50.RESTful架构和DRF进阶.md similarity index 100% rename from Day41-55/11.RESTful架构和DRF进阶.md rename to Day41-55/50.RESTful架构和DRF进阶.md diff --git a/Day41-55/12.使用缓存.md b/Day41-55/51.使用缓存.md similarity index 100% rename from Day41-55/12.使用缓存.md rename to Day41-55/51.使用缓存.md diff --git a/Day41-55/08.文件上传和富文本编辑.md b/Day41-55/52.文件上传和富文本编辑.md similarity index 100% rename from Day41-55/08.文件上传和富文本编辑.md rename to Day41-55/52.文件上传和富文本编辑.md diff --git a/Day41-55/13.短信和邮件.md b/Day41-55/53.短信和邮件.md similarity index 100% rename from Day41-55/13.短信和邮件.md rename to Day41-55/53.短信和邮件.md diff --git a/Day41-55/14.异步任务和定时任务.md b/Day41-55/54.异步任务和定时任务.md similarity index 100% rename from Day41-55/14.异步任务和定时任务.md rename to Day41-55/54.异步任务和定时任务.md diff --git a/Day41-55/15.单元测试和项目上线.md b/Day41-55/55.单元测试和项目上线.md similarity index 100% rename from Day41-55/15.单元测试和项目上线.md rename to Day41-55/55.单元测试和项目上线.md diff --git a/Day41-55/code/car/car/__init__.py b/Day41-55/code/car/car/__init__.py deleted file mode 100644 index aa60bed..0000000 --- a/Day41-55/code/car/car/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -import pymysql - -pymysql.install_as_MySQLdb() \ No newline at end of file diff --git a/Day41-55/code/car/car/settings.py b/Day41-55/code/car/car/settings.py deleted file mode 100644 index 71837f8..0000000 --- a/Day41-55/code/car/car/settings.py +++ /dev/null @@ -1,127 +0,0 @@ -""" -Django settings for car project. - -Generated by 'django-admin startproject' using Django 2.0.5. - -For more information on this file, see -https://docs.djangoproject.com/en/2.0/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/2.0/ref/settings/ -""" - -import os - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'ol6dmf6im(w!l*z4w+_whm&)8@(c7%4&tlhd%uh6$lfx=pi*5e' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'search', -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'car.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')] - , - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'car.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/2.0/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'NAME': 'car', - 'HOST': 'localhost', - 'PORT': 3306, - 'USER': 'root', - 'PASSWORD': '123456', - } -} - - -# Password validation -# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/2.0/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/2.0/howto/static-files/ -STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] - -STATIC_URL = '/static/' diff --git a/Day41-55/code/car/car/urls.py b/Day41-55/code/car/car/urls.py deleted file mode 100644 index 11e97eb..0000000 --- a/Day41-55/code/car/car/urls.py +++ /dev/null @@ -1,26 +0,0 @@ -"""car URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/2.0/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.conf.urls import url - -from search import views - -urlpatterns = [ - url(r'^search$', views.search), - url(r'^search2$', views.ajax_search), - url(r'^add', views.add), - url(r'^admin/', admin.site.urls), -] diff --git a/Day41-55/code/car/car/wsgi.py b/Day41-55/code/car/car/wsgi.py deleted file mode 100644 index 150b999..0000000 --- a/Day41-55/code/car/car/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for car project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "car.settings") - -application = get_wsgi_application() diff --git a/Day41-55/code/car/manage.py b/Day41-55/code/car/manage.py deleted file mode 100644 index 5478c46..0000000 --- a/Day41-55/code/car/manage.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "car.settings") - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) diff --git a/Day41-55/code/car/search/__init__.py b/Day41-55/code/car/search/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Day41-55/code/car/search/admin.py b/Day41-55/code/car/search/admin.py deleted file mode 100644 index 1c98cb7..0000000 --- a/Day41-55/code/car/search/admin.py +++ /dev/null @@ -1,12 +0,0 @@ -from django.contrib import admin - -from search.models import CarRecord - - -class CarRecordAdmin(admin.ModelAdmin): - - list_display = ('carno', 'reason', 'date', 'punish', 'isdone') - search_fields = ('carno', ) - - -admin.site.register(CarRecord, CarRecordAdmin) diff --git a/Day41-55/code/car/search/apps.py b/Day41-55/code/car/search/apps.py deleted file mode 100644 index 5726231..0000000 --- a/Day41-55/code/car/search/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class SearchConfig(AppConfig): - name = 'search' diff --git a/Day41-55/code/car/search/migrations/0001_initial.py b/Day41-55/code/car/search/migrations/0001_initial.py deleted file mode 100644 index ceed885..0000000 --- a/Day41-55/code/car/search/migrations/0001_initial.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2018-05-24 01:16 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='CarRecord', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('carno', models.CharField(max_length=7)), - ('reason', models.CharField(max_length=50)), - ('date', models.DateTimeField(db_column='happen_date')), - ('punlish', models.CharField(max_length=50)), - ('isdone', models.BooleanField(default=False)), - ], - options={ - 'db_table': 'tb_car_record', - }, - ), - ] diff --git a/Day41-55/code/car/search/migrations/0002_auto_20180524_1420.py b/Day41-55/code/car/search/migrations/0002_auto_20180524_1420.py deleted file mode 100644 index bd2aa56..0000000 --- a/Day41-55/code/car/search/migrations/0002_auto_20180524_1420.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2018-05-24 06:20 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('search', '0001_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='carrecord', - options={'ordering': ('-date',)}, - ), - migrations.RenameField( - model_name='carrecord', - old_name='punlish', - new_name='punish', - ), - ] diff --git a/Day41-55/code/car/search/migrations/__init__.py b/Day41-55/code/car/search/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Day41-55/code/car/search/models.py b/Day41-55/code/car/search/models.py deleted file mode 100644 index eeaf4eb..0000000 --- a/Day41-55/code/car/search/models.py +++ /dev/null @@ -1,22 +0,0 @@ -from django.db import models - - -class CarRecord(models.Model): - carno = models.CharField(max_length=7) - reason = models.CharField(max_length=50) - date = models.DateTimeField(db_column='happen_date', auto_now_add=True) - punish = models.CharField(max_length=50) - isdone = models.BooleanField(default=False) - - @property - def happen_date(self): - return self.date.strftime('%Y-%m-%d %H:%M:%S') - """ - return '%d年%02d月%02d日 %02d:%02d:%02d' % \ - (self.date.year, self.date.month, self.date.day, - self.date.hour, self.date.minute, self.date.second) - """ - - class Meta: - db_table = 'tb_car_record' - ordering = ('-date', ) diff --git a/Day41-55/code/car/search/tests.py b/Day41-55/code/car/search/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/Day41-55/code/car/search/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/Day41-55/code/car/search/views.py b/Day41-55/code/car/search/views.py deleted file mode 100644 index c81f442..0000000 --- a/Day41-55/code/car/search/views.py +++ /dev/null @@ -1,104 +0,0 @@ -from datetime import datetime -from json import JSONEncoder - -from django import forms -from django.http import JsonResponse -from django.shortcuts import render, redirect - -from search.models import CarRecord - -# 序列化/串行化/腌咸菜 - 把对象按照某种方式处理成字节或者字符的序列 -# 反序列化/反串行化 - 把字符或者字节的序列重新还原成对象 -# Python实现序列化和反序列化的工具模块 - json / pickle / shelve -# return HttpResponse(json.dumps(obj), content_type='application/json') -# return JsonResponse(obj, encoder=, safe=False) -# from django.core.serializers import serialize -# return HttpResponse(serialize('json', obj), content_type='application/json; charset=utf-8') -MAX_AGE = 14 * 24 * 60 * 60 - - -class CarRecordEncoder(JSONEncoder): - - def default(self, o): - del o.__dict__['_state'] - o.__dict__['date'] = o.happen_date - return o.__dict__ - - -def ajax_search(request): - current_time = datetime.now().ctime() - # Cookie是保存在浏览器临时文件中的用户数据(通常是识别用户身份的ID/token或者是用户的偏好设置) - # 因为每次请求服务器时在HTTP请求的请求头中都会携带本网站的Cookie数据 - # 那么服务器就可以获取这些信息来识别用户身份或者了解用户的偏好 这就是所谓的用户跟踪 - # 因为HTTP本身是无状态的 所以需要使用Cookie/隐藏域/URL重写这样的技术来实现用户跟踪 - # 从请求中读取指定的cookie - 通过cookie的名字找到对应的值 - # 如果请求中没有指定名字的cookie可以通过get方法的第二个参数设置一个默认的返回值 - last_visit_time = request.COOKIES.get('last_visit_time') - if request.method == 'GET': - response = render(request, 'search2.html', - {'last': last_visit_time if last_visit_time - else '你是第一次访问我们的网站'}) - # 通过render渲染页面后先用set_cookie方法设置cookie后再返回HttpResponse对象 - # 第一个参数是cookie的名字 第二个参数是cookie的值 第三个参数是过期时间(秒) - response.set_cookie('last_visit_time', current_time, max_age=MAX_AGE) - return response - else: - carno = request.POST['carno'] - record_list = list(CarRecord.objects.filter(carno__icontains=carno)) - # 第一个参数是要转换成JSON格式(序列化)的对象 - # encoder参数要指定完成自定义对象序列化的编码器(JSONEncoder的子类型) - # safe参数的值如果为True那么传入的第一个参数只能是字典 - # return HttpResponse(json.dumps(record_list), content_type='application/json; charset=utf-8') - return JsonResponse(record_list, encoder=CarRecordEncoder, - safe=False) - - -def search(request): - # 请求行中的请求命令 - # print(request.method) - # 请求行中的路径 - # print(request.path) - # 请求头(以HTTP_打头的键是HTTP请求的请求头) - # print(request.META) - # 查询参数: http://host/path/resource?a=b&c=d - # print(request.GET) - # 表单参数 - # print(request.POST) - if request.method == 'GET': - ctx = {'show_result': False} - else: - carno = request.POST['carno'] - ctx = { - 'show_result': True, - 'record_list': list(CarRecord.objects.filter(carno__contains=carno))} - return render(request, 'search.html', ctx) - - -class CarRecordForm(forms.ModelForm): - carno = forms.CharField(min_length=7, max_length=7, label='车牌号', error_messages={'carno': '请输入有效的车牌号'}) - reason = forms.CharField(max_length=50, label='违章原因') - punish = forms.CharField(max_length=50, required=False, label='处罚方式') - - """ - # 执行额外的表单数据验证 - def clean_carno(self): - _carno = self.cleaned_data['carno'] - if not condition: - raise forms.ValidationError('...') - return _carno - """ - - class Meta: - model = CarRecord - fields = ('carno', 'reason', 'punish') - - -def add(request): - if request.method == 'GET': - f = CarRecordForm(initial={'reason': '打警察', 'punish': '牢底坐穿'}) - else: - f = CarRecordForm(request.POST) - if f.is_valid(): - f.save() - return redirect('/search2') - return render(request, 'add.html', {'f': f}) diff --git a/Day41-55/code/car/static/images/icon-no.svg b/Day41-55/code/car/static/images/icon-no.svg deleted file mode 100644 index 2e0d383..0000000 --- a/Day41-55/code/car/static/images/icon-no.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Day41-55/code/car/static/images/icon-yes.svg b/Day41-55/code/car/static/images/icon-yes.svg deleted file mode 100644 index 5883d87..0000000 --- a/Day41-55/code/car/static/images/icon-yes.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Day41-55/code/car/templates/add.html b/Day41-55/code/car/templates/add.html deleted file mode 100644 index 36db80d..0000000 --- a/Day41-55/code/car/templates/add.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - 添加 - - - -

添加违章记录

-
-

- {% for hint in hints %} -

{{ hint }}
- {% endfor %} -

- - {% for field in f.visible_fields %} -
- {{ field.label }} - {{ field }} - {% for error in field.errors %} - {{ error }} - {% endfor %} -
- {% endfor %} - {% csrf_token %} - - - - \ No newline at end of file diff --git a/Day41-55/code/car/templates/search.html b/Day41-55/code/car/templates/search.html deleted file mode 100644 index 6183d50..0000000 --- a/Day41-55/code/car/templates/search.html +++ /dev/null @@ -1,90 +0,0 @@ - -{% load staticfiles %} - - - - 车辆违章查询 - - - -
-
- - - - - {% csrf_token %} - - -
-
- {% if show_result %} - - - - - - - - - {% for record in record_list %} - - - - - - - - {% endfor %} -
车牌号违章原因违章时间处罚方式是否受理
{{ record.carno }}{{ record.reason }}{{ record.happen_date }}{{ record.punish }} - {% if record.isdone %} - - {% else %} - - {% endif %} -
- {% endif %} -
- - \ No newline at end of file diff --git a/Day41-55/code/car/templates/search2.html b/Day41-55/code/car/templates/search2.html deleted file mode 100644 index 8a50585..0000000 --- a/Day41-55/code/car/templates/search2.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - 车辆违章查询 - - - -
- -
- - - - - - - - - - - - - -
车牌号违章原因违章时间处罚方式是否受理
-

{{ last }}

-
- - - - \ No newline at end of file diff --git a/Day41-55/code/hellodjango/demo/__init__.py b/Day41-55/code/hellodjango/demo/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Day41-55/code/hellodjango/demo/admin.py b/Day41-55/code/hellodjango/demo/admin.py deleted file mode 100644 index 9284e00..0000000 --- a/Day41-55/code/hellodjango/demo/admin.py +++ /dev/null @@ -1,25 +0,0 @@ -from django.contrib import admin - -from demo.models import Teacher, Subject, User - - -class UserAdmin(admin.ModelAdmin): - list_display = ('no', 'username', 'email', 'counter') - ordering = ('no', ) - - -class SubjectAdmin(admin.ModelAdmin): - list_display = ('no', 'name', 'intro') - ordering = ('no', ) - - -class TeacherAdmin(admin.ModelAdmin): - list_display = ('no', 'name', 'intro', 'motto', 'subject', 'manager') - search_fields = ('name', 'intro') - ordering = ('no', ) - - -admin.site.register(Subject, SubjectAdmin) -admin.site.register(Teacher, TeacherAdmin) -admin.site.register(User, UserAdmin) - diff --git a/Day41-55/code/hellodjango/demo/apps.py b/Day41-55/code/hellodjango/demo/apps.py deleted file mode 100644 index 047ccb1..0000000 --- a/Day41-55/code/hellodjango/demo/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class DemoConfig(AppConfig): - name = '投票' diff --git a/Day41-55/code/hellodjango/demo/forms.py b/Day41-55/code/hellodjango/demo/forms.py deleted file mode 100644 index 024740b..0000000 --- a/Day41-55/code/hellodjango/demo/forms.py +++ /dev/null @@ -1,13 +0,0 @@ -from django import forms - -from demo.models import User - - -class UserForm(forms.ModelForm): - username = forms.CharField(widget=forms.TextInput, min_length=6, max_length=20) - password = forms.CharField(widget=forms.PasswordInput, min_length=8, max_length=20) - email = forms.CharField(widget=forms.EmailInput, max_length=255) - - class Meta(object): - model = User - fields = ('username', 'password', 'email') diff --git a/Day41-55/code/hellodjango/demo/hello.py b/Day41-55/code/hellodjango/demo/hello.py deleted file mode 100644 index 7a14943..0000000 --- a/Day41-55/code/hellodjango/demo/hello.py +++ /dev/null @@ -1,25 +0,0 @@ -# 序列化 - 把对象写入数据流 - 串行化 / 归档 / 腌咸菜 -# 反序列化 - 从数据流中恢复出对象 - 反串行化 / 解归档 -# Python有三个支持序列化的模块 -# json - JSON / pickle - 二进制 / shelve -import json -import pickle - - -class Student(object): - - def __init__(self, name, age): - self.name = name - self.age = age - - -if __name__ == '__main__': - list1 = [10, 'hello', 99.9, 'goodbye'] - print(json.dumps(list1)) - print(pickle.dumps(list1)) - dict1 = {'name': '骆昊', 'age': 38} - print(json.dumps(dict1)) - print(pickle.dumps(dict1)) - stu = Student('骆昊', 38) - print(pickle.dumps(stu)) - diff --git a/Day41-55/code/hellodjango/demo/migrations/0001_initial.py b/Day41-55/code/hellodjango/demo/migrations/0001_initial.py deleted file mode 100644 index bcf0e84..0000000 --- a/Day41-55/code/hellodjango/demo/migrations/0001_initial.py +++ /dev/null @@ -1,42 +0,0 @@ -# Generated by Django 2.0.6 on 2018-07-04 02:30 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Subject', - fields=[ - ('no', models.AutoField(db_column='sno', primary_key=True, serialize=False, verbose_name='编号')), - ('name', models.CharField(db_column='sname', max_length=50, verbose_name='学科名称')), - ('intro', models.CharField(db_column='sintro', max_length=511, verbose_name='学科介绍')), - ], - options={ - 'db_table': 'tb_subject', - }, - ), - migrations.CreateModel( - name='Teacher', - fields=[ - ('no', models.AutoField(db_column='tno', primary_key=True, serialize=False, verbose_name='编号')), - ('name', models.CharField(db_column='tname', max_length=20, verbose_name='姓名')), - ('intro', models.CharField(db_column='tintro', max_length=1023, verbose_name='简介')), - ('motto', models.CharField(db_column='tmotto', max_length=255, verbose_name='教学理念')), - ('photo', models.CharField(blank=True, db_column='tphoto', max_length=511, null=True)), - ('manager', models.BooleanField(db_column='tmanager', default=False, verbose_name='是否主管')), - ('subject', models.ForeignKey(db_column='sno', on_delete=django.db.models.deletion.PROTECT, to='demo.Subject', verbose_name='所属学科')), - ], - options={ - 'db_table': 'tb_teacher', - 'ordering': ('name',), - }, - ), - ] diff --git a/Day41-55/code/hellodjango/demo/migrations/0002_auto_20180704_1117.py b/Day41-55/code/hellodjango/demo/migrations/0002_auto_20180704_1117.py deleted file mode 100644 index 29f417f..0000000 --- a/Day41-55/code/hellodjango/demo/migrations/0002_auto_20180704_1117.py +++ /dev/null @@ -1,36 +0,0 @@ -# Generated by Django 2.0.6 on 2018-07-04 03:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('demo', '0001_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='subject', - options={'verbose_name': '学科', 'verbose_name_plural': '学科'}, - ), - migrations.AlterModelOptions( - name='teacher', - options={'ordering': ('name',), 'verbose_name': '讲师', 'verbose_name_plural': '讲师'}, - ), - migrations.AddField( - model_name='teacher', - name='bad_count', - field=models.IntegerField(db_column='sbcount', default=0, verbose_name='差评数'), - ), - migrations.AddField( - model_name='teacher', - name='good_count', - field=models.IntegerField(db_column='sgcount', default=0, verbose_name='好评数'), - ), - migrations.AlterField( - model_name='teacher', - name='photo', - field=models.CharField(blank=True, db_column='tphoto', max_length=511, null=True, verbose_name='照片'), - ), - ] diff --git a/Day41-55/code/hellodjango/demo/migrations/0003_auto_20180704_1118.py b/Day41-55/code/hellodjango/demo/migrations/0003_auto_20180704_1118.py deleted file mode 100644 index 02ed5c0..0000000 --- a/Day41-55/code/hellodjango/demo/migrations/0003_auto_20180704_1118.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.0.6 on 2018-07-04 03:18 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('demo', '0002_auto_20180704_1117'), - ] - - operations = [ - migrations.AlterField( - model_name='teacher', - name='bad_count', - field=models.IntegerField(db_column='tbcount', default=0, verbose_name='差评数'), - ), - migrations.AlterField( - model_name='teacher', - name='good_count', - field=models.IntegerField(db_column='tgcount', default=0, verbose_name='好评数'), - ), - ] diff --git a/Day41-55/code/hellodjango/demo/migrations/0004_auto_20180705_1017.py b/Day41-55/code/hellodjango/demo/migrations/0004_auto_20180705_1017.py deleted file mode 100644 index 20f902f..0000000 --- a/Day41-55/code/hellodjango/demo/migrations/0004_auto_20180705_1017.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 2.0.6 on 2018-07-05 02:17 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('demo', '0003_auto_20180704_1118'), - ] - - operations = [ - migrations.CreateModel( - name='User', - fields=[ - ('no', models.AutoField(db_column='uno', primary_key=True, serialize=False, verbose_name='编号')), - ('username', models.CharField(max_length=20, unique=True, verbose_name='用户名')), - ('password', models.CharField(max_length=40, verbose_name='口令')), - ('email', models.CharField(max_length=255, verbose_name='邮箱')), - ], - options={ - 'verbose_name': '用户', - 'verbose_name_plural': '用户', - 'db_table': 'tb_user', - }, - ), - migrations.AlterField( - model_name='teacher', - name='subject', - field=models.ForeignKey(db_column='sno', on_delete=django.db.models.deletion.PROTECT, related_name='+', to='demo.Subject', verbose_name='所属学科'), - ), - ] diff --git a/Day41-55/code/hellodjango/demo/migrations/0005_auto_20180706_1458.py b/Day41-55/code/hellodjango/demo/migrations/0005_auto_20180706_1458.py deleted file mode 100644 index 4626e6a..0000000 --- a/Day41-55/code/hellodjango/demo/migrations/0005_auto_20180706_1458.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 2.0.6 on 2018-07-06 06:58 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('demo', '0004_auto_20180705_1017'), - ] - - operations = [ - migrations.AlterModelOptions( - name='teacher', - options={'ordering': ('no',), 'verbose_name': '讲师', 'verbose_name_plural': '讲师'}, - ), - migrations.AddField( - model_name='user', - name='counter', - field=models.IntegerField(default=3, verbose_name='票数'), - ), - ] diff --git a/Day41-55/code/hellodjango/demo/migrations/__init__.py b/Day41-55/code/hellodjango/demo/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Day41-55/code/hellodjango/demo/models.py b/Day41-55/code/hellodjango/demo/models.py deleted file mode 100644 index d3471a9..0000000 --- a/Day41-55/code/hellodjango/demo/models.py +++ /dev/null @@ -1,67 +0,0 @@ -from hashlib import sha1 - -from django.db import models -from django.db.models import PROTECT - -proto = sha1() - - -class User(models.Model): - no = models.AutoField(primary_key=True, db_column='uno', verbose_name='编号') - username = models.CharField(max_length=20, unique=True, verbose_name='用户名') - password = models.CharField(max_length=40, verbose_name='口令') - email = models.CharField(max_length=255, verbose_name='邮箱') - counter = models.IntegerField(default=3, verbose_name='票数') - - def save(self, force_insert=False, force_update=False, using=None, update_fields=None): - hasher = proto.copy() - hasher.update(self.password.encode('utf-8')) - self.password = hasher.hexdigest() - super().save(force_insert, force_update, using, update_fields) - - class Meta(object): - db_table = 'tb_user' - verbose_name = '用户' - verbose_name_plural = '用户' - - -class Subject(models.Model): - no = models.AutoField(primary_key=True, db_column='sno', verbose_name='编号') - name = models.CharField(max_length=50, db_column='sname', verbose_name='学科名称') - intro = models.CharField(max_length=511, db_column='sintro', verbose_name='学科介绍') - - def __str__(self): - return self.name - - class Meta(object): - db_table = 'tb_subject' - verbose_name = '学科' - verbose_name_plural = '学科' - - -class Teacher(models.Model): - no = models.AutoField(primary_key=True, db_column='tno', verbose_name='编号') - name = models.CharField(max_length=20, db_column='tname', verbose_name='姓名') - intro = models.CharField(max_length=1023, db_column='tintro', verbose_name='简介') - motto = models.CharField(max_length=255, db_column='tmotto', verbose_name='教学理念') - photo = models.CharField(max_length=511, db_column='tphoto', verbose_name='照片', null=True, blank=True) - subject = models.ForeignKey(Subject, db_column='sno', on_delete=PROTECT, related_name='+', verbose_name='所属学科') - manager = models.BooleanField(default=False, db_column='tmanager', verbose_name='是否主管') - good_count = models.IntegerField(default=0, db_column='tgcount', verbose_name='好评数') - bad_count = models.IntegerField(default=0, db_column='tbcount', verbose_name='差评数') - - @property - def gcount(self): - return f'{self.good_count}' \ - if self.good_count <= 999 else '999+' - - @property - def bcount(self): - return f'{self.bad_count}' \ - if self.bad_count <= 999 else '999+' - - class Meta(object): - db_table = 'tb_teacher' - verbose_name = '讲师' - verbose_name_plural = '讲师' - ordering = ('no', ) diff --git a/Day41-55/code/hellodjango/demo/tests.py b/Day41-55/code/hellodjango/demo/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/Day41-55/code/hellodjango/demo/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/Day41-55/code/hellodjango/demo/views.py b/Day41-55/code/hellodjango/demo/views.py deleted file mode 100644 index ad627e2..0000000 --- a/Day41-55/code/hellodjango/demo/views.py +++ /dev/null @@ -1,107 +0,0 @@ -import json - -from django.http import HttpResponse -from django.shortcuts import render, redirect - -from demo.forms import UserForm -from demo.models import Subject, Teacher, User, proto - - -def login(request): - if request.method.lower() == 'get': - return render(request, 'demo/login.html', {}) - else: - username = request.POST['username'] - try: - user = User.objects.get(username__exact=username) - password = request.POST['password'] - hasher = proto.copy() - hasher.update(password.encode('utf-8')) - if hasher.hexdigest() == user.password: - request.session['user'] = user - return redirect('sub') - except User.DoesNotExist: - pass - return render(request, 'demo/login.html', - {'hint': '用户名或密码错误'}) - - -def register(request): - form = UserForm() - if request.method.lower() == 'get': - return render(request, 'demo/register.html', {'f': form}) - else: - ctx = {} - try: - form = UserForm(request.POST) - ctx['f'] = form - if form.is_valid(): - form.save(commit=True) - ctx['hint'] = '注册成功请登录!' - return render(request, 'demo/login.html', ctx) - except: - ctx['hint'] = '注册失败, 请重新尝试!' - return render(request, 'demo/register.html', ctx) - - -def check_username(request): - ctx = {} - if 'username' in request.GET: - username = request.GET['username'] - try: - User.objects.get(username__exact=username) - ctx['valid'] = False - except User.DoesNotExist: - ctx['valid'] = True - return HttpResponse(json.dumps(ctx), - content_type='application/json; charset=utf-8') - - -def show_subjects(request): - if 'user' in request.session and request.session['user']: - ctx = {'subjects_list': Subject.objects.all()} - return render(request, 'demo/subject.html', ctx) - else: - return render(request, 'demo/login.html', - {'hint': '请先登录!'}) - - -def show_teachers(request, no): - if 'user' in request.session and request.session['user']: - teachers = Teacher.objects.filter(subject__no=no)\ - .select_related('subject') - ctx = {'teachers_list': teachers} - return render(request, 'demo/teacher.html', ctx) - else: - return render(request, 'demo/login.html', - {'hint': '请先登录!'}) - - -def make_comment(request, no): - ctx = {'code': 200} - if 'user' in request.session and request.session['user']: - user = request.session['user'] - if user.counter > 0: - try: - teacher = Teacher.objects.get(pk=no) - if request.path.startswith('/good'): - teacher.good_count += 1 - ctx['result'] = f'好评({teacher.gcount})' - else: - teacher.bad_count += 1 - ctx['result'] = f'差评({teacher.bcount})' - teacher.save() - user.counter -= 1 - User.objects.filter(username__exact=user.username)\ - .update(counter=user.counter) - request.session['user'] = user - except Teacher.DoesNotExist: - ctx['code'] = 404 - else: - ctx['code'] = 403 - ctx['result'] = '票数不足' - else: - ctx['code'] = 302 - ctx['result'] = '请先登录' - return HttpResponse(json.dumps(ctx), - content_type='application/json; charset=utf-8') diff --git a/Day41-55/code/hellodjango/hellodjango/__init__.py b/Day41-55/code/hellodjango/hellodjango/__init__.py deleted file mode 100644 index 9c0f756..0000000 --- a/Day41-55/code/hellodjango/hellodjango/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -import pymysql - -pymysql.install_as_MySQLdb() diff --git a/Day41-55/code/hellodjango/hellodjango/settings.py b/Day41-55/code/hellodjango/hellodjango/settings.py deleted file mode 100644 index 4b118d8..0000000 --- a/Day41-55/code/hellodjango/hellodjango/settings.py +++ /dev/null @@ -1,145 +0,0 @@ -""" -Django settings for hellodjango project. - -Generated by 'django-admin startproject' using Django 2.0.6. - -For more information on this file, see -https://docs.djangoproject.com/en/2.0/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/2.0/ref/settings/ -""" - -import os - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'j*jr(3-it8$lrp&u@e^!f%8!ws*=jx)ga*ln%l6aqftu-uy1=1' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - -SESSION_EXPIRE_AT_BROWSER_CLOSE = False -SESSION_COOKIE_AGE = 1800 - -# Application definition -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'demo', -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'hellodjango.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates'),], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'hellodjango.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/2.0/ref/settings/#databases -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'NAME': 'demo', - 'HOST': 'localhost', - 'PORT': 3306, - 'USER': 'root', - 'PASSWORD': '123456', - } -} - - -# Password validation -# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/2.0/topics/i18n/ -LANGUAGE_CODE = 'zh-hans' - -TIME_ZONE = 'Asia/Chongqing' - -# internationalization -USE_I18N = True - -# localization -USE_L10N = True - -USE_TZ = True - -SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer' - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/2.0/howto/static-files/ -STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),] -STATIC_URL = '/static/' - -# APPEND_SLASH = False - -# DEBUG < INFO < WARNING < ERROR < CRITICAL -LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'handlers': { - 'console': { - 'class': 'logging.StreamHandler', - }, - }, - 'loggers': { - 'django': { - 'handlers': ['console'], - 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'), - }, - }, -} diff --git a/Day41-55/code/hellodjango/hellodjango/urls.py b/Day41-55/code/hellodjango/hellodjango/urls.py deleted file mode 100644 index 5c0e1fb..0000000 --- a/Day41-55/code/hellodjango/hellodjango/urls.py +++ /dev/null @@ -1,31 +0,0 @@ -"""hellodjango URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/2.0/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import path - -from demo import views - -urlpatterns = [ - path('', views.login), - path('login/', views.login), - path('register/', views.register), - path('check/', views.check_username), - path('subjects/', views.show_subjects, name='sub'), - path('subjects//', views.show_teachers), - path('good//', views.make_comment), - path('bad//', views.make_comment), - path('admin/', admin.site.urls), -] diff --git a/Day41-55/code/hellodjango/hellodjango/wsgi.py b/Day41-55/code/hellodjango/hellodjango/wsgi.py deleted file mode 100644 index 661e9b4..0000000 --- a/Day41-55/code/hellodjango/hellodjango/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for hellodjango project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings") - -application = get_wsgi_application() diff --git a/Day41-55/code/hellodjango/manage.py b/Day41-55/code/hellodjango/manage.py deleted file mode 100644 index f45676f..0000000 --- a/Day41-55/code/hellodjango/manage.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings") - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) diff --git a/Day41-55/code/hellodjango/static/images/andrew.png b/Day41-55/code/hellodjango/static/images/andrew.png deleted file mode 100644 index 195e6e7..0000000 Binary files a/Day41-55/code/hellodjango/static/images/andrew.png and /dev/null differ diff --git a/Day41-55/code/hellodjango/static/images/dennis.png b/Day41-55/code/hellodjango/static/images/dennis.png deleted file mode 100644 index 2453340..0000000 Binary files a/Day41-55/code/hellodjango/static/images/dennis.png and /dev/null differ diff --git a/Day41-55/code/hellodjango/static/images/icon-no.svg b/Day41-55/code/hellodjango/static/images/icon-no.svg deleted file mode 100644 index 2e0d383..0000000 --- a/Day41-55/code/hellodjango/static/images/icon-no.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Day41-55/code/hellodjango/static/images/icon-yes.svg b/Day41-55/code/hellodjango/static/images/icon-yes.svg deleted file mode 100644 index 5883d87..0000000 --- a/Day41-55/code/hellodjango/static/images/icon-yes.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Day41-55/code/hellodjango/static/images/ken.png b/Day41-55/code/hellodjango/static/images/ken.png deleted file mode 100644 index 5d322c4..0000000 Binary files a/Day41-55/code/hellodjango/static/images/ken.png and /dev/null differ diff --git a/Day41-55/code/hellodjango/static/images/linus.png b/Day41-55/code/hellodjango/static/images/linus.png deleted file mode 100644 index acbe3bf..0000000 Binary files a/Day41-55/code/hellodjango/static/images/linus.png and /dev/null differ diff --git a/Day41-55/code/hellodjango/static/js/jquery.min.js b/Day41-55/code/hellodjango/static/js/jquery.min.js deleted file mode 100644 index 4d9b3a2..0000000 --- a/Day41-55/code/hellodjango/static/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!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(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),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("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(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 fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){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[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.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},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.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},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(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?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,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(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===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]||oe.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]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(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(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!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!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.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:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.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&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(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=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.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,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.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 Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(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&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(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&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!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=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.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=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.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=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.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):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.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=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.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=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(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(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.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=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.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)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.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-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(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]}function Ut(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}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,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":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(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(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.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 w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" - - - \ No newline at end of file diff --git a/Day41-55/code/hellodjango/templates/demo/subject.html b/Day41-55/code/hellodjango/templates/demo/subject.html deleted file mode 100644 index b992ba6..0000000 --- a/Day41-55/code/hellodjango/templates/demo/subject.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - 学科信息 - - - -

学科信息

-
- {% for subject in subjects_list %} -
-
{{ subject.name }}
-
{{ subject.intro }}
-
- {% endfor %} - - \ No newline at end of file diff --git a/Day41-55/code/hellodjango/templates/demo/teacher.html b/Day41-55/code/hellodjango/templates/demo/teacher.html deleted file mode 100644 index 1572bfd..0000000 --- a/Day41-55/code/hellodjango/templates/demo/teacher.html +++ /dev/null @@ -1,82 +0,0 @@ - -{% load staticfiles %} - - - - 讲师信息 - - - - - {% for x in teachers_list %} -
-
-

{{ x.name }}老师 - {{ x.subject.name }}

-

讲师简介

-

{{ x.intro }}

-

教学理念

-

{{ x.motto }}

- 好评({{ x.gcount }}) - 差评({{ x.bcount }}) -
-
- {% if x.photo %} - - {% endif %} -
-
-
- {% endfor %} - - - - \ No newline at end of file diff --git a/Day41-55/code/oa/hrs/__init__.py b/Day41-55/code/oa/hrs/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Day41-55/code/oa/hrs/admin.py b/Day41-55/code/oa/hrs/admin.py deleted file mode 100644 index b2c3716..0000000 --- a/Day41-55/code/oa/hrs/admin.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.contrib import admin - -from hrs.models import Dept, Emp - - -class DeptAdmin(admin.ModelAdmin): - - list_display = ('no', 'name', 'location') - ordering = ('no', ) - - -class EmpAdmin(admin.ModelAdmin): - - list_display = ('no', 'name', 'job', 'sal', 'dept') - search_fields = ('name', 'job') - ordering = ('dept', ) - - -admin.site.register(Dept, DeptAdmin) -admin.site.register(Emp, EmpAdmin) diff --git a/Day41-55/code/oa/hrs/apps.py b/Day41-55/code/oa/hrs/apps.py deleted file mode 100644 index 31e4f12..0000000 --- a/Day41-55/code/oa/hrs/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class HrsConfig(AppConfig): - name = 'hrs' diff --git a/Day41-55/code/oa/hrs/index.html b/Day41-55/code/oa/hrs/index.html deleted file mode 100644 index 6bb1a3b..0000000 --- a/Day41-55/code/oa/hrs/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Document - - - -
- -
- - - \ No newline at end of file diff --git a/Day41-55/code/oa/hrs/migrations/0001_initial.py b/Day41-55/code/oa/hrs/migrations/0001_initial.py deleted file mode 100644 index b42df39..0000000 --- a/Day41-55/code/oa/hrs/migrations/0001_initial.py +++ /dev/null @@ -1,41 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-22 03:07 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Dept', - fields=[ - ('no', models.IntegerField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=20)), - ('location', models.CharField(max_length=10)), - ], - options={ - 'db_table': 'tb_dept', - }, - ), - migrations.CreateModel( - name='Emp', - fields=[ - ('no', models.IntegerField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=20)), - ('job', models.CharField(max_length=10)), - ('mgr', models.IntegerField(null=True)), - ('sal', models.DecimalField(decimal_places=2, max_digits=7)), - ('comm', models.DecimalField(decimal_places=2, max_digits=7, null=True)), - ('dept', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='hrs.Dept')), - ], - options={ - 'db_table': 'tb_emp', - }, - ), - ] diff --git a/Day41-55/code/oa/hrs/migrations/0002_auto_20180523_0923.py b/Day41-55/code/oa/hrs/migrations/0002_auto_20180523_0923.py deleted file mode 100644 index 8b9b835..0000000 --- a/Day41-55/code/oa/hrs/migrations/0002_auto_20180523_0923.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-23 01:23 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('hrs', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='dept', - name='excellent', - field=models.BooleanField(default=0, verbose_name='是否优秀'), - ), - migrations.AlterField( - model_name='dept', - name='location', - field=models.CharField(max_length=10, verbose_name='部门所在地'), - ), - migrations.AlterField( - model_name='dept', - name='name', - field=models.CharField(max_length=20, verbose_name='部门名称'), - ), - migrations.AlterField( - model_name='dept', - name='no', - field=models.IntegerField(primary_key=True, serialize=False, verbose_name='部门编号'), - ), - migrations.AlterField( - model_name='emp', - name='comm', - field=models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True), - ), - migrations.AlterField( - model_name='emp', - name='mgr', - field=models.IntegerField(blank=True, null=True), - ), - ] diff --git a/Day41-55/code/oa/hrs/migrations/0003_auto_20180524_1646.py b/Day41-55/code/oa/hrs/migrations/0003_auto_20180524_1646.py deleted file mode 100644 index c4054fc..0000000 --- a/Day41-55/code/oa/hrs/migrations/0003_auto_20180524_1646.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-24 08:46 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('hrs', '0002_auto_20180523_0923'), - ] - - operations = [ - migrations.AlterField( - model_name='emp', - name='mgr', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='hrs.Emp'), - ), - ] diff --git a/Day41-55/code/oa/hrs/migrations/0004_auto_20180815_1345.py b/Day41-55/code/oa/hrs/migrations/0004_auto_20180815_1345.py deleted file mode 100644 index 91f9da1..0000000 --- a/Day41-55/code/oa/hrs/migrations/0004_auto_20180815_1345.py +++ /dev/null @@ -1,66 +0,0 @@ -# Generated by Django 2.0.7 on 2018-08-15 05:45 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('hrs', '0003_auto_20180524_1646'), - ] - - operations = [ - migrations.RemoveField( - model_name='dept', - name='excellent', - ), - migrations.AlterField( - model_name='dept', - name='location', - field=models.CharField(db_column='dloc', max_length=10, verbose_name='部门所在地'), - ), - migrations.AlterField( - model_name='dept', - name='name', - field=models.CharField(db_column='dname', max_length=20, verbose_name='部门名称'), - ), - migrations.AlterField( - model_name='dept', - name='no', - field=models.IntegerField(db_column='deptno', primary_key=True, serialize=False, verbose_name='部门编号'), - ), - migrations.AlterField( - model_name='emp', - name='dept', - field=models.ForeignKey(db_column='dno', on_delete=django.db.models.deletion.PROTECT, to='hrs.Dept'), - ), - migrations.AlterField( - model_name='emp', - name='job', - field=models.CharField(db_column='job', max_length=10), - ), - migrations.AlterField( - model_name='emp', - name='mgr', - field=models.IntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='emp', - name='name', - field=models.CharField(db_column='ename', max_length=20), - ), - migrations.AlterField( - model_name='emp', - name='no', - field=models.IntegerField(db_column='empno', primary_key=True, serialize=False), - ), - migrations.AlterModelTable( - name='dept', - table='TbDept', - ), - migrations.AlterModelTable( - name='emp', - table='TbEmp', - ), - ] diff --git a/Day41-55/code/oa/hrs/migrations/__init__.py b/Day41-55/code/oa/hrs/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Day41-55/code/oa/hrs/models.py b/Day41-55/code/oa/hrs/models.py deleted file mode 100644 index deb953f..0000000 --- a/Day41-55/code/oa/hrs/models.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.db import models - -# ORM - 对象关系映射 -# 对象模型 <---> 关系模型 -# 实体类 <---> 二维表 -# 属性 <---> 列 -# 对象 <---> 记录 - - -class Dept(models.Model): - no = models.IntegerField(db_column='deptno', primary_key=True, verbose_name='部门编号') - name = models.CharField(db_column='dname', max_length=20, verbose_name='部门名称') - location = models.CharField(db_column='dloc', max_length=10, verbose_name='部门所在地') - # excellent = models.BooleanField(default=0, verbose_name='是否优秀') - - def __str__(self): - return self.name - - class Meta: - db_table = 'TbDept' - - -class Emp(models.Model): - no = models.IntegerField(db_column='empno', primary_key=True) - name = models.CharField(db_column='ename', max_length=20) - job = models.CharField(db_column='job', max_length=10) - # mgr = models.ForeignKey('self', null=True, blank=True, on_delete=models.SET_NULL) - mgr = models.IntegerField(null=True, blank=True) - sal = models.DecimalField(max_digits=7, decimal_places=2) - comm = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True) - dept = models.ForeignKey(Dept, db_column='dno', on_delete=models.PROTECT) - - class Meta: - db_table = 'TbEmp' - diff --git a/Day41-55/code/oa/hrs/tests.py b/Day41-55/code/oa/hrs/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/Day41-55/code/oa/hrs/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/Day41-55/code/oa/hrs/urls.py b/Day41-55/code/oa/hrs/urls.py deleted file mode 100644 index 91a2660..0000000 --- a/Day41-55/code/oa/hrs/urls.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.urls import path - -from hrs import views - -urlpatterns = [ - path('depts', views.depts, name='depts'), - # url('depts/emps/(?P[0-9]+)', views.emps, name='empsindept'), - path('depts/emps/', views.emps, name='empsindept'), - path('deldept/', views.del_dept, name='ddel') -] diff --git a/Day41-55/code/oa/hrs/views.py b/Day41-55/code/oa/hrs/views.py deleted file mode 100644 index 269c819..0000000 --- a/Day41-55/code/oa/hrs/views.py +++ /dev/null @@ -1,47 +0,0 @@ -from django.http import HttpResponse -from django.shortcuts import render, redirect -from django.db.models import ObjectDoesNotExist - -from json import dumps - -from hrs.models import Dept, Emp - - -def index(request): - ctx = { - 'greeting': '你好,世界!' - } - return render(request, 'index.html', context=ctx) - - -def del_dept(request, no='0'): - try: - Dept.objects.get(pk=no).delete() - ctx = {'code': 200} - except (ObjectDoesNotExist, ValueError): - ctx = {'code': 404} - return HttpResponse( - dumps(ctx), content_type='application/json; charset=utf-8') - # 重定向 - 给浏览器一个URL, 让浏览器重新请求指定的页面 - # return redirect(reverse('depts')) - # return depts(request) - - -def emps(request, no='0'): - # no = request.GET['no'] - # dept = Dept.objects.get(no=no) - # ForeignKey(Dept, on_delete=models.PROTECT, related_name='emps') - # dept.emps.all() - # emps_list = dept.emp_set.all() - # all() / filter() ==> QuerySet - # QuerySet使用了惰性查询 - 如果不是非得取到数据那么不会发出SQL语句 - # 这样做是为了节省服务器内存的开销 - 延迟加载 - 节省空间势必浪费时间 - emps_list = list(Emp.objects.filter(dept__no=no).select_related('dept')) - ctx = {'emp_list': emps_list, 'dept_name': emps_list[0].dept.name} \ - if len(emps_list) > 0 else {} - return render(request, 'emp.html', context=ctx) - - -def depts(request): - ctx = {'dept_list': Dept.objects.all()} - return render(request, 'dept.html', context=ctx) diff --git a/Day41-55/code/oa/manage.py b/Day41-55/code/oa/manage.py deleted file mode 100644 index 2deb2e4..0000000 --- a/Day41-55/code/oa/manage.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "oa.settings") - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) diff --git a/Day41-55/code/oa/oa/__init__.py b/Day41-55/code/oa/oa/__init__.py deleted file mode 100644 index 9c0f756..0000000 --- a/Day41-55/code/oa/oa/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -import pymysql - -pymysql.install_as_MySQLdb() diff --git a/Day41-55/code/oa/oa/settings.py b/Day41-55/code/oa/oa/settings.py deleted file mode 100644 index e352eb9..0000000 --- a/Day41-55/code/oa/oa/settings.py +++ /dev/null @@ -1,146 +0,0 @@ -""" -Django settings for oa project. - -Generated by 'django-admin startproject' using Django 2.0.5. - -For more information on this file, see -https://docs.djangoproject.com/en/2.0/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/2.0/ref/settings/ -""" - -import os - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'c^dt134g38w^r4+0f$dpoe)1d5)q1kn+2%g--#!*+xvvn&93=_' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'hrs', -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'oa.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')] - , - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'oa.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/2.0/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'NAME': 'HRS', - 'HOST': 'localhost', - 'PORT': 3306, - 'USER': 'root', - 'PASSWORD': '123456' - } -} - - -# Password validation -# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/2.0/topics/i18n/ - -LANGUAGE_CODE = 'zh-hans' - -TIME_ZONE = 'Asia/Chongqing' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/2.0/howto/static-files/ - -STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] - -STATIC_URL = '/static/' - -# 配置将日志输出到控制台 日志级别为DEBUG(最详细的日志) -# DEBUG < INFO < WARNING < ERROR < CRITICAL -LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'handlers': { - 'console': { - 'class': 'logging.StreamHandler', - }, - }, - 'loggers': { - 'django': { - 'handlers': ['console'], - 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'), - }, - }, -} diff --git a/Day41-55/code/oa/oa/urls.py b/Day41-55/code/oa/oa/urls.py deleted file mode 100644 index cc5869a..0000000 --- a/Day41-55/code/oa/oa/urls.py +++ /dev/null @@ -1,25 +0,0 @@ -"""oa URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/2.0/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import path, include - -from hrs import views - -urlpatterns = [ - path('', views.index), - path('admin/', admin.site.urls), - path('hrs/', include('hrs.urls')), -] diff --git a/Day41-55/code/oa/oa/wsgi.py b/Day41-55/code/oa/oa/wsgi.py deleted file mode 100644 index 52b5eee..0000000 --- a/Day41-55/code/oa/oa/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for oa project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "oa.settings") - -application = get_wsgi_application() diff --git a/Day41-55/code/oa/requirements.txt b/Day41-55/code/oa/requirements.txt deleted file mode 100644 index 76e1184..0000000 --- a/Day41-55/code/oa/requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ -asn1crypto==0.24.0 -cffi==1.11.5 -cryptography==2.3 -Django>=2.1.6 -idna==2.7 -pycparser==2.18 -PyMySQL==0.9.2 -pytz==2018.5 -six==1.11.0 diff --git a/Day41-55/code/oa/static/css/bootstrap.min.css b/Day41-55/code/oa/static/css/bootstrap.min.css deleted file mode 100644 index ed3905e..0000000 --- a/Day41-55/code/oa/static/css/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{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 #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-md-1,.col-md-10,.col-md-11,.col-md-12,.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-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.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:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.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-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/Day41-55/code/oa/static/images/mm.jpg b/Day41-55/code/oa/static/images/mm.jpg deleted file mode 100644 index bc86c7c..0000000 Binary files a/Day41-55/code/oa/static/images/mm.jpg and /dev/null differ diff --git a/Day41-55/code/oa/static/js/bootstrap.min.js b/Day41-55/code/oa/static/js/bootstrap.min.js deleted file mode 100644 index 9bcd2fc..0000000 --- a/Day41-55/code/oa/static/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under the MIT license - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/Day41-55/code/oa/static/js/jquery.min.js b/Day41-55/code/oa/static/js/jquery.min.js deleted file mode 100644 index 4d9b3a2..0000000 --- a/Day41-55/code/oa/static/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!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(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),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("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(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 fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){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[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.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},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.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},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(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?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,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(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===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]||oe.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]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(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(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!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!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.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:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.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&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(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=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.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,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.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 Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(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&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(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&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!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=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.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=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.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=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.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):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.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=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.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=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(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(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.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=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.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)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.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-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(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]}function Ut(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}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,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":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(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(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.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 w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" - - - - \ No newline at end of file diff --git a/Day41-55/code/oa/templates/emp.html b/Day41-55/code/oa/templates/emp.html deleted file mode 100644 index 8bf1997..0000000 --- a/Day41-55/code/oa/templates/emp.html +++ /dev/null @@ -1,60 +0,0 @@ - -{% load static %} - - - - 员工 - - - -
-
-
-

{{ dept_name }}员工信息

-
-
-
-
-
- {% if emp_list %} - - - - - - - - - - - - {% for emp in emp_list %} - - - - - - - - {% endfor %} - -
编号姓名职位月薪部门名称
{{ emp.no }}{{ emp.name }}{{ emp.job }}{{ emp.sal }}{{ dept_name }}
- {% else %} -

此部门暂时没有员工!

- {% endif %} -
-
-
-
- 返回部门列表 -
- - - - - \ No newline at end of file diff --git a/Day41-55/code/oa/templates/index.html b/Day41-55/code/oa/templates/index.html deleted file mode 100644 index 61bac29..0000000 --- a/Day41-55/code/oa/templates/index.html +++ /dev/null @@ -1,13 +0,0 @@ - -{% load staticfiles %} - - - - 首页 - - -

{{ greeting }}

-
- - - \ No newline at end of file diff --git a/Day41-55/res/echarts_bar_graph.png b/Day41-55/res/echarts_bar_graph.png new file mode 100644 index 0000000..a77571f Binary files /dev/null and b/Day41-55/res/echarts_bar_graph.png differ diff --git a/Day41-55/res/show-subjects.png b/Day41-55/res/show-subjects.png deleted file mode 100644 index 1a83ccb..0000000 Binary files a/Day41-55/res/show-subjects.png and /dev/null differ diff --git a/Day41-55/res/show-teachers.png b/Day41-55/res/show-teachers.png deleted file mode 100644 index fd46619..0000000 Binary files a/Day41-55/res/show-teachers.png and /dev/null differ diff --git a/Day41-55/res/show_subjects.png b/Day41-55/res/show_subjects.png new file mode 100644 index 0000000..9e7612d Binary files /dev/null and b/Day41-55/res/show_subjects.png differ diff --git a/Day41-55/res/show_teachers.png b/Day41-55/res/show_teachers.png new file mode 100644 index 0000000..031ac57 Binary files /dev/null and b/Day41-55/res/show_teachers.png differ diff --git a/Day56-60/01.Flask入门.md b/Day56-60/56.Flask入门.md similarity index 100% rename from Day56-60/01.Flask入门.md rename to Day56-60/56.Flask入门.md diff --git a/Day56-60/02.模板的使用.md b/Day56-60/57.模板的使用.md similarity index 100% rename from Day56-60/02.模板的使用.md rename to Day56-60/57.模板的使用.md diff --git a/Day56-60/03.表单的处理.md b/Day56-60/58.表单的处理.md similarity index 100% rename from Day56-60/03.表单的处理.md rename to Day56-60/58.表单的处理.md diff --git a/Day56-60/04.数据库操作.md b/Day56-60/59.数据库操作.md similarity index 100% rename from Day56-60/04.数据库操作.md rename to Day56-60/59.数据库操作.md diff --git a/Day56-60/05.项目实战.md b/Day56-60/60.项目实战.md similarity index 100% rename from Day56-60/05.项目实战.md rename to Day56-60/60.项目实战.md diff --git a/Day61-65/01.预备知识.md b/Day61-65/61.预备知识.md similarity index 100% rename from Day61-65/01.预备知识.md rename to Day61-65/61.预备知识.md diff --git a/Day61-65/02.Tornado入门.md b/Day61-65/62.Tornado入门.md similarity index 100% rename from Day61-65/02.Tornado入门.md rename to Day61-65/62.Tornado入门.md diff --git a/Day61-65/03.异步化.md b/Day61-65/63.异步化.md similarity index 100% rename from Day61-65/03.异步化.md rename to Day61-65/63.异步化.md diff --git a/Day61-65/04.WebSocket的应用.md b/Day61-65/64.WebSocket的应用.md similarity index 100% rename from Day61-65/04.WebSocket的应用.md rename to Day61-65/64.WebSocket的应用.md diff --git a/Day61-65/05.项目实战.md b/Day61-65/65.项目实战.md similarity index 100% rename from Day61-65/05.项目实战.md rename to Day61-65/65.项目实战.md diff --git a/Day66-75/02.数据采集和解析.md b/Day66-75/02.数据采集和解析.md deleted file mode 100644 index 50b532b..0000000 --- a/Day66-75/02.数据采集和解析.md +++ /dev/null @@ -1,170 +0,0 @@ -## 数据采集和解析 - -通过[《网络爬虫和相关工具》](./01.网络爬虫和相关工具.md)一文,我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,至此我们可以对爬虫开发需要做的工作以及相关的技术做一个简单的汇总,这其中可能会有一些我们之前没有使用过的第三方库,不过别担心,这些内容我们稍后都会一一讲到。 - -1. 下载数据 - urllib / requests / aiohttp。 -2. 解析数据 - re / lxml / beautifulsoup4(bs4)/ pyquery。 -3. 缓存和持久化 - pymysql / sqlalchemy / peewee/ redis / pymongo。 -4. 生成数字签名 - hashlib。 -5. 序列化和压缩 - pickle / json / zlib。 -6. 调度器 - 进程(multiprocessing) / 线程(threading) / 协程(coroutine)。 - -### HTML页面分析 - -```HTML - - - - - 首页 - - -

Hello, world!

-

这是一个神奇的网站!

-
-
-

这是一个例子程序

-

静夜思

-

床前明月光

-

疑似地上霜

-

举头望明月

- -
- 腾讯网 - 美女 - 凯蒂猫 - 美女 - - - - - - - - -
姓名上场时间得分篮板助攻
- - -``` - -如果你对上面的代码并不感到陌生,那么你一定知道HTML页面通常由三部分构成,分别是用来承载内容的Tag(标签)、负责渲染页面的CSS(层叠样式表)以及控制交互式行为的JavaScript。通常,我们可以在浏览器的右键菜单中通过“查看网页源代码”的方式获取网页的代码并了解页面的结构;当然,我们也可以通过浏览器提供的开发人员工具来了解网页更多的信息。 - -#### 使用requests获取页面 - -1. GET请求和POST请求。 - - ```Python - - - ``` - -2. URL参数和请求头。 - - ```Python - - - ``` - -3. 复杂的POST请求(文件上传)。 - - ```Python - - - ``` - -4. 操作Cookie。 - - ```Python - - - ``` - -5. 设置代理服务器。 - - ```Python - - - ``` - -> 说明:关于requests的详细用法可以参考它的[官方文档](http://docs.python-requests.org/zh_CN/latest/user/quickstart.html)。 - -### 四种采集方式 - -#### 四种采集方式的比较 - -| 抓取方法 | 速度 | 使用难度 | 备注 | -| ---------- | ------------------------- | -------- | ------------------------------------------ | -| 正则表达式 | 快 | 困难 | 常用正则表达式
在线正则表达式测试 | -| lxml | 快 | 一般 | 需要安装C语言依赖库
唯一支持XML的解析器 | -| Beautiful | 较快/较慢(取决于解析器) | 简单 | | -| PyQuery | 较快 | 简单 | Python版的jQuery | - -> 说明:Beautiful的解析器包括:Python标准库(html.parser)、lxml的HTML解析器、lxml的XML解析器和html5lib。 - -#### 使用正则表达式 - -如果你对正则表达式没有任何的概念,那么推荐先阅读[《正则表达式30分钟入门教程》](),然后再阅读我们之前讲解在Python中如何使用正则表达式一文。 - -#### 使用XPath和Lxml - - - -#### BeautifulSoup的使用 - -BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。 - -1. 遍历文档树 - - 获取标签 - - 获取标签属性 - - 获取标签内容 - - 获取子(孙)节点 - - 获取父节点/祖先节点 - - 获取兄弟节点 -2. 搜索树节点 - - find / find_all:字符串、正则表达式、列表、True、函数或Lambda。 - - select_one / select:CSS选择器 - -> 说明:更多内容可以参考BeautifulSoup的[官方文档](https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html)。 - -#### PyQuery的使用 - -pyquery相当于jQuery的Python实现,可以用于解析HTML网页。 - - - -### 实例 - 获取知乎发现上的问题链接 - -```Python -from urllib.parse import urljoin - -import re -import requests - -from bs4 import BeautifulSoup - - -def main(): - headers = {'user-agent': 'Baiduspider'} - proxies = { - 'http': 'http://122.114.31.177:808' - } - base_url = 'https://www.zhihu.com/' - seed_url = urljoin(base_url, 'explore') - resp = requests.get(seed_url, - headers=headers, - proxies=proxies) - soup = BeautifulSoup(resp.text, 'lxml') - href_regex = re.compile(r'^/question') - link_set = set() - for a_tag in soup.find_all('a', {'href': href_regex}): - if 'href' in a_tag.attrs: - href = a_tag.attrs['href'] - full_url = urljoin(base_url, href) - link_set.add(full_url) - print('Total %d question pages found.' % len(link_set)) - - -if __name__ == '__main__': - main() -``` - diff --git a/Day66-75/01.网络爬虫和相关工具.md b/Day66-75/66.网络爬虫和相关工具.md similarity index 93% rename from Day66-75/01.网络爬虫和相关工具.md rename to Day66-75/66.网络爬虫和相关工具.md index 371f21e..16aa85a 100644 --- a/Day66-75/01.网络爬虫和相关工具.md +++ b/Day66-75/66.网络爬虫和相关工具.md @@ -1,6 +1,6 @@ ## 网络爬虫和相关工具 -### 网络爬虫 +### 网络爬虫的概念 网络爬虫(web crawler),以前经常称之为网络蜘蛛(spider),是按照一定的规则自动浏览万维网并获取信息的机器人程序(或脚本),曾经被广泛的应用于互联网搜索引擎。使用过互联网和浏览器的人都知道,网页中除了供用户阅读的文字信息之外,还包含一些超链接。网络爬虫系统正是通过网页中的超链接信息不断获得网络上的其它页面。正因如此,网络数据采集的过程就像一个爬虫或者蜘蛛在网络上漫游,所以才被形象的称为网络爬虫或者网络蜘蛛。 @@ -100,7 +100,7 @@ HTTP响应(响应行+响应头+空行+消息体): ![](./res/http-response.png) -> 说明:但愿这两张如同泛黄的照片般的截图帮助你大概的了解到HTTP是一个怎样的协议。 +> 说明:但愿这两张如同泛黄照片般的截图帮助你大概的了解到HTTP是一个怎样的协议。 #### 相关工具 @@ -115,7 +115,11 @@ HTTP响应(响应行+响应头+空行+消息体): 3. HTTPie:命令行HTTP客户端。 ```Shell - $ http --header http://www.scu.edu.cn + pip3 install httpie + ``` + + ```Shell + http --header http://www.scu.edu.cn HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control: private, max-age=600 @@ -136,6 +140,10 @@ HTTP响应(响应行+响应头+空行+消息体): 4. BuiltWith:识别网站所用技术的工具。 + ```Shell + pip3 install builtwith + ``` + ```Python >>> import builtwith >>> builtwith.parse('http://www.bootcss.com/') @@ -149,6 +157,10 @@ HTTP响应(响应行+响应头+空行+消息体): 5. python-whois:查询网站所有者的工具。 + ```Shell + pip3 install python-whois + ``` + ```Python >>> import whois >>> whois.whois('baidu.com') @@ -158,13 +170,10 @@ HTTP响应(响应行+响应头+空行+消息体): 6. robotparser:解析robots.txt的工具。 ```Python - >>> from urllib import robotparser >>> parser = robotparser.RobotFileParser() >>> parser.set_url('https://www.taobao.com/robots.txt') >>> parser.read() - >>> parser.can_fetch('Hellokitty', 'http://www.taobao.com/article') - False >>> parser.can_fetch('Baiduspider', 'http://www.taobao.com/article') True >>> parser.can_fetch('Baiduspider', 'http://www.taobao.com/product') @@ -200,8 +209,8 @@ import ssl from pymysql import Error -# 通过指定的字符集对页面进行解码(不是每个网站都将字符集设置为utf-8) def decode_page(page_bytes, charsets=('utf-8',)): + """通过指定的字符集对页面进行解码(不是每个网站都将字符集设置为utf-8)""" page_html = None for charset in charsets: try: @@ -213,8 +222,8 @@ def decode_page(page_bytes, charsets=('utf-8',)): return page_html -# 获取页面的HTML代码(通过递归实现指定次数的重试操作) def get_page_html(seed_url, *, retry_times=3, charsets=('utf-8',)): + """获取页面的HTML代码(通过递归实现指定次数的重试操作)""" page_html = None try: page_html = decode_page(urlopen(seed_url).read(), charsets) @@ -226,14 +235,14 @@ def get_page_html(seed_url, *, retry_times=3, charsets=('utf-8',)): return page_html -# 从页面中提取需要的部分(通常是链接也可以通过正则表达式进行指定) def get_matched_parts(page_html, pattern_str, pattern_ignore_case=re.I): + """从页面中提取需要的部分(通常是链接也可以通过正则表达式进行指定)""" pattern_regex = re.compile(pattern_str, pattern_ignore_case) return pattern_regex.findall(page_html) if page_html else [] -# 开始执行爬虫程序并对指定的数据进行持久化操作 def start_crawl(seed_url, match_pattern, *, max_depth=-1): + """开始执行爬虫程序并对指定的数据进行持久化操作""" conn = pymysql.connect(host='localhost', port=3306, database='crawler', user='root', password='123456', charset='utf8') @@ -268,6 +277,7 @@ def start_crawl(seed_url, match_pattern, *, max_depth=-1): def main(): + """主函数""" ssl._create_default_https_context = ssl._create_unverified_context start_crawl('http://sports.sohu.com/nba_a.shtml', r']+test=a\s[^>]*href=["\'](.*?)["\']', @@ -276,10 +286,9 @@ def main(): if __name__ == '__main__': main() - ``` -由于使用了MySQL实现持久化操作,所以要先启动MySQL服务器再运行该程序。 +由于使用了MySQL实现持久化操作,所以要先启动MySQL服务器并创建名为`crawler`的数据库和名为`tb_result`的二维表才能运行该程序。 ### 爬虫注意事项 @@ -287,7 +296,7 @@ if __name__ == '__main__': 1. 处理相对链接。有的时候我们从页面中获取的链接不是一个完整的绝对链接而是一个相对链接,这种情况下需要将其与URL前缀进行拼接(`urllib.parse`中的`urljoin()`函数可以完成此项操作)。 -2. 设置代理服务。有些网站会限制访问的区域(例如美国的Netflix屏蔽了很多国家的访问),有些爬虫需要隐藏自己的身份,在这种情况下可以设置使用代理服务器,代理服务器有免费(如[西刺代理](http://www.xicidaili.com/)、[快代理](https://www.kuaidaili.com/free/))和付费两种(如[讯代理](http://www.xdaili.cn/)、[阿布云代理](https://www.abuyun.com/)),付费的一般稳定性和可用性都更好,可以通过`urllib.request`中的`ProxyHandler`来为请求设置代理。 +2. 设置代理服务。有些网站会限制访问的区域(例如美国的Netflix屏蔽了很多国家的访问),有些爬虫需要隐藏自己的身份,在这种情况下可以设置使用代理服务器,代理服务器有免费的服务器和付费的商业服务器,但后者稳定性和可用性都更好,强烈建议在商业项目中使用付费的代理服务器。可以通过修改`urllib.request`中的`ProxyHandler`来为请求设置代理服务器。 3. 限制下载速度。如果我们的爬虫获取网页的速度过快,可能就会面临被封禁或者产生“损害动产”的风险(这个可能会导致吃官司且败诉),可以在两次下载之间添加延时从而对爬虫进行限速。 @@ -305,7 +314,7 @@ if __name__ == '__main__': web_page = urllib.request.urlopen(request, context=context) ``` - - 设置全局的取消证书验证 + - 设置全局性取消证书验证 ```Python import ssl diff --git a/Day66-75/67.数据采集和解析.md b/Day66-75/67.数据采集和解析.md new file mode 100644 index 0000000..52227ae --- /dev/null +++ b/Day66-75/67.数据采集和解析.md @@ -0,0 +1,263 @@ +## 数据采集和解析 + +通过上一个章节的讲解,我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,下面我们给出一个爬虫开发相关技术的清单以及这些技术涉及到的标准库和第三方库,稍后我们会一一介绍这些内容。 + +1. 下载数据 - **urllib** / **requests** / **aiohttp**。 +2. 解析数据 - **re** / **lxml** / **beautifulsoup4** / **pyquery**。 +3. 缓存和持久化 - **pymysql** / **sqlalchemy** / **peewee**/ **redis** / **pymongo**。 +4. 生成数字签名 - **hashlib**。 +5. 序列化和压缩 - **pickle** / **json** / **zlib**。 +6. 调度器 - 多进程(**multiprocessing**) / 多线程(**threading**)。 + +### HTML页面 + +```HTML + + + + Home + + + +
+
+

Yoko's Kitchen

+ +
+
+
+
+ Bok Choi +
Bok Choi
+
+
+

Japanese Vegetarian

+

Five week course in London

+
+

A five week introduction to traditional Japanese vegetarian meals, teaching you a selection of rice and noodle dishes.

+
+
+
+ Teriyaki sauce +
Teriyaki Sauce
+
+
+

Sauces Masterclass

+

One day workshop

+
+

An intensive one-day course looking at how to create the most delicious sauces for use in a range of Japanese cookery.

+
+
+ +
+ © 2011 Yoko's Kitchen +
+
+ + + +``` + +如果你对上面的代码并不感到陌生,那么你一定知道HTML页面通常由三部分构成,分别是用来承载内容的Tag(标签)、负责渲染页面的CSS(层叠样式表)以及控制交互式行为的JavaScript。通常,我们可以在浏览器的右键菜单中通过“查看网页源代码”的方式获取网页的代码并了解页面的结构;当然,我们也可以通过浏览器提供的开发人员工具来了解更多的信息。 + +#### 使用requests获取页面 + +1. GET请求和POST请求。 + + ```Python + + ``` + +2. URL参数和请求头。 + + ```Python + + ``` + +3. 复杂的POST请求(文件上传)。 + + ```Python + + ``` + +4. 操作Cookie。 + + ```Python + + ``` + +5. 设置代理服务器。 + + ```Python + + ``` + +> 说明:关于requests的详细用法可以参考它的[官方文档](http://docs.python-requests.org/zh_CN/latest/user/quickstart.html)。 + +### 页面解析 + +#### 几种解析方式的比较 + +| 解析方式 | 对应的模块 | 速度 | 使用难度 | 备注 | +| -------------- | ------------- | ------ | -------- | ------------------------------------------- | +| 正则表达式解析 | re | 快 | 困难 | 常用正则表达式
在线正则表达式测试 | +| XPath解析 | lxml | 快 | 一般 | 需要安装C语言依赖库
唯一支持XML的解析器 | +| CSS选择器解析 | bs4 / pyquery | 不确定 | 简单 | | + +> 说明:BeautifulSoup可选的解析器包括:Python标准库(html.parser)、lxml的HTML解析器、lxml的XML解析器和html5lib。 + +#### 使用正则表达式解析页面 + +如果你对正则表达式没有任何的概念,那么推荐先阅读[《正则表达式30分钟入门教程》](),然后再阅读我们之前讲解在Python中如何使用正则表达式一文。 + + + +#### XPath解析和lxml + +XPath是在XML文档中查找信息的一种语法,它使用路径表达式来选取XML文档中的节点或者节点集。这里所说的XPath节点包括元素、属性、文本、命名空间、处理指令、注释、根节点等。 + +```XML + + + + Harry Potter + 29.99 + + + Learning XML + 39.95 + + +``` +对于上面的XML文件,我们可以用如下所示的XPath语法获取文档中的节点。 + +| 路径表达式 | 结果 | +| --------------- | ------------------------------------------------------------ | +| bookstore | 选取 bookstore 元素的所有子节点。 | +| /bookstore | 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! | +| bookstore/book | 选取属于 bookstore 的子元素的所有 book 元素。 | +| //book | 选取所有 book 子元素,而不管它们在文档中的位置。 | +| bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 | +| //@lang | 选取名为 lang 的所有属性。 | + +在使用XPath语法时,还可以使用XPath中的谓词。 + +| 路径表达式 | 结果 | +| ---------------------------------- | ------------------------------------------------------------ | +| /bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素。 | +| /bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素。 | +| /bookstore/book[last()-1] | 选取属于 bookstore 子元素的倒数第二个 book 元素。 | +| /bookstore/book[position()<3] | 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 | +| //title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素。 | +| //title[@lang='eng'] | 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 | +| /bookstore/book[price>35.00] | 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。 | +| /bookstore/book[price>35.00]/title | 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。 | + +XPath还支持通配符用法,如下所示。 + +| 路径表达式 | 结果 | +| ------------ | --------------------------------- | +| /bookstore/* | 选取 bookstore 元素的所有子元素。 | +| //* | 选取文档中的所有元素。 | +| //title[@*] | 选取所有带有属性的 title 元素。 | + +如果要选取多个节点,可以使用如下所示的方法。 + +| 路径表达式 | 结果 | +| -------------------------------- | ------------------------------------------------------------ | +| //book/title \| //book/price | 选取 book 元素的所有 title 和 price 元素。 | +| //title \| //price | 选取文档中的所有 title 和 price 元素。 | +| /bookstore/book/title \| //price | 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。 | + +> 说明:上面的例子来自于菜鸟教程网站上[XPath教程](),有兴趣的读者可以自行阅读原文。 + +当然,如果不理解或者不太熟悉XPath语法,可以在Chrome浏览器中按照如下所示的方法查看元素的XPath语法。 + +![](./res/douban-xpath.png) + + + +### BeautifulSoup的使用 + +BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。 + +1. 遍历文档树 + - 获取标签 + - 获取标签属性 + - 获取标签内容 + - 获取子(孙)节点 + - 获取父节点/祖先节点 + - 获取兄弟节点 +2. 搜索树节点 + - find / find_all + - select_one / select + +> 说明:更多内容可以参考BeautifulSoup的[官方文档](https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html)。 + +### PyQuery的使用 + +pyquery相当于jQuery的Python实现,可以用于解析HTML网页。 + +### 实例 - 获取知乎发现上的问题链接 + +```Python +from urllib.parse import urljoin + +import re +import requests + +from bs4 import BeautifulSoup + + +def main(): + headers = {'user-agent': 'Baiduspider'} + proxies = { + 'http': 'http://122.114.31.177:808' + } + base_url = 'https://www.zhihu.com/' + seed_url = urljoin(base_url, 'explore') + resp = requests.get(seed_url, + headers=headers, + proxies=proxies) + soup = BeautifulSoup(resp.text, 'lxml') + href_regex = re.compile(r'^/question') + link_set = set() + for a_tag in soup.find_all('a', {'href': href_regex}): + if 'href' in a_tag.attrs: + href = a_tag.attrs['href'] + full_url = urljoin(base_url, href) + link_set.add(full_url) + print('Total %d question pages found.' % len(link_set)) + + +if __name__ == '__main__': + main() +``` + diff --git a/Day66-75/03.存储数据.md b/Day66-75/68.存储数据.md similarity index 100% rename from Day66-75/03.存储数据.md rename to Day66-75/68.存储数据.md diff --git a/Day66-75/04.并发下载.md b/Day66-75/69.并发下载.md similarity index 100% rename from Day66-75/04.并发下载.md rename to Day66-75/69.并发下载.md diff --git a/Day66-75/05.解析动态内容.md b/Day66-75/70.解析动态内容.md similarity index 100% rename from Day66-75/05.解析动态内容.md rename to Day66-75/70.解析动态内容.md diff --git a/Day66-75/06.表单交互和验证码处理.md b/Day66-75/71.表单交互和验证码处理.md similarity index 98% rename from Day66-75/06.表单交互和验证码处理.md rename to Day66-75/71.表单交互和验证码处理.md index ff4fa75..e0e9c28 100644 --- a/Day66-75/06.表单交互和验证码处理.md +++ b/Day66-75/71.表单交互和验证码处理.md @@ -22,8 +22,6 @@ ![](./res/tesseract.gif) -#### 改善OCR - #### 处理更复杂的验证码 diff --git a/Day66-75/07.Scrapy入门.md b/Day66-75/72.Scrapy入门.md similarity index 75% rename from Day66-75/07.Scrapy入门.md rename to Day66-75/72.Scrapy入门.md index 56ab2d1..aaaab43 100644 --- a/Day66-75/07.Scrapy入门.md +++ b/Day66-75/72.Scrapy入门.md @@ -302,76 +302,3 @@ Scrapy的整个数据处理流程由Scrapy引擎进行控制,通常的运转 HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' ``` -### 补充说明 - -#### XPath语法 - -1. XPath路径表达式:XPath使用路径表达式来选取XML文档中的节点或者节点集。 - -2. XPath节点:元素、属性、文本、命名空间、处理指令、注释、根节点。 - -3. XPath语法。(注:下面的例子来自于[菜鸟教程](http://www.runoob.com/)网站的[XPath教程](http://www.runoob.com/xpath/xpath-syntax.html)。) - - XML文件。 - - ```XML - - - - - - Harry Potter - 29.99 - - - - Learning XML - 39.95 - - - - ``` - XPath语法。 - - | 路径表达式 | 结果 | - | --------------- | ------------------------------------------------------------ | - | bookstore | 选取 bookstore 元素的所有子节点。 | - | /bookstore | 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! | - | bookstore/book | 选取属于 bookstore 的子元素的所有 book 元素。 | - | //book | 选取所有 book 子元素,而不管它们在文档中的位置。 | - | bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 | - | //@lang | 选取名为 lang 的所有属性。 | - - XPath谓词。 - - | 路径表达式 | 结果 | - | ---------------------------------- | ------------------------------------------------------------ | - | /bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素。 | - | /bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素。 | - | /bookstore/book[last()-1] | 选取属于 bookstore 子元素的倒数第二个 book 元素。 | - | /bookstore/book[position()<3] | 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 | - | //title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素。 | - | //title[@lang='eng'] | 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 | - | /bookstore/book[price>35.00] | 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。 | - | /bookstore/book[price>35.00]/title | 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。 | - - 通配符用法。 - - | 路径表达式 | 结果 | - | ------------ | --------------------------------- | - | /bookstore/* | 选取 bookstore 元素的所有子元素。 | - | //* | 选取文档中的所有元素。 | - | //title[@*] | 选取所有带有属性的 title 元素。 | - - 选取多个路径。 - - | 路径表达式 | 结果 | - | -------------------------------- | ------------------------------------------------------------ | - | //book/title \| //book/price | 选取 book 元素的所有 title 和 price 元素。 | - | //title \| //price | 选取文档中的所有 title 和 price 元素。 | - | /bookstore/book/title \| //price | 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。 | - -#### 在Chrome浏览器中查看元素XPath语法 - -![](./res/douban-xpath.png) - diff --git a/Day66-75/08.Scrapy高级应用.md b/Day66-75/73.Scrapy高级应用.md similarity index 100% rename from Day66-75/08.Scrapy高级应用.md rename to Day66-75/73.Scrapy高级应用.md diff --git a/Day66-75/09.Scrapy分布式实现.md b/Day66-75/74.Scrapy分布式实现.md similarity index 100% rename from Day66-75/09.Scrapy分布式实现.md rename to Day66-75/74.Scrapy分布式实现.md diff --git a/Day66-75/10.爬虫项目实战.md b/Day66-75/75.爬虫项目实战.md similarity index 100% rename from Day66-75/10.爬虫项目实战.md rename to Day66-75/75.爬虫项目实战.md diff --git a/Day76-90/01.机器学习基础.md b/Day76-90/76.机器学习基础.md similarity index 100% rename from Day76-90/01.机器学习基础.md rename to Day76-90/76.机器学习基础.md diff --git a/Day76-90/02.Pandas的应用.md b/Day76-90/77.Pandas的应用.md similarity index 52% rename from Day76-90/02.Pandas的应用.md rename to Day76-90/77.Pandas的应用.md index 3115ad5..c7139de 100644 --- a/Day76-90/02.Pandas的应用.md +++ b/Day76-90/77.Pandas的应用.md @@ -1,24 +1,24 @@ ## Pandas的应用 -### 1、pandas入门 +### 1、Pandas入门 -### 2、pandas索引 +### 2、Pandas索引 -### 3、pandas数据清洗之空数据 +### 3、Pandas数据清洗之空数据 [数据挖掘之空数据处理(有史以来最全面)]: https://blog.csdn.net/Soft_Po/article/details/89302887 -### 4、pandas多层索引 +### 4、Pandas多层索引 -### 5、pandas多层索引计算 +### 5、Pandas多层索引计算 -### 6、pandas数据集成concat +### 6、Pandas数据集成concat -### 7、pandas数据集成merge +### 7、Pandas数据集成merge -### 8、pandas分组聚合操作 +### 8、Pandas分组聚合操作 -### 9、pandas数据集成实战 +### 9、Pandas数据集成实战 ### 10、美国大选项目 diff --git a/Day76-90/03.NumPy和SciPy的应用.md b/Day76-90/78.NumPy和SciPy的应用.md similarity index 100% rename from Day76-90/03.NumPy和SciPy的应用.md rename to Day76-90/78.NumPy和SciPy的应用.md diff --git a/Day76-90/04.Matplotlib和数据可视化.md b/Day76-90/79.Matplotlib和数据可视化.md similarity index 100% rename from Day76-90/04.Matplotlib和数据可视化.md rename to Day76-90/79.Matplotlib和数据可视化.md diff --git a/Day76-90/05.k最近邻分类.md b/Day76-90/80.k最近邻分类.md similarity index 100% rename from Day76-90/05.k最近邻分类.md rename to Day76-90/80.k最近邻分类.md diff --git a/Day76-90/06.决策树.md b/Day76-90/81.决策树.md similarity index 100% rename from Day76-90/06.决策树.md rename to Day76-90/81.决策树.md diff --git a/Day76-90/07.贝叶斯分类.md b/Day76-90/82.贝叶斯分类.md similarity index 100% rename from Day76-90/07.贝叶斯分类.md rename to Day76-90/82.贝叶斯分类.md diff --git a/Day76-90/08.支持向量机.md b/Day76-90/83.支持向量机.md similarity index 100% rename from Day76-90/08.支持向量机.md rename to Day76-90/83.支持向量机.md diff --git a/Day76-90/09.K-均值聚类.md b/Day76-90/84.K-均值聚类.md similarity index 100% rename from Day76-90/09.K-均值聚类.md rename to Day76-90/84.K-均值聚类.md diff --git a/Day76-90/10.回归分析.md b/Day76-90/85.回归分析.md similarity index 100% rename from Day76-90/10.回归分析.md rename to Day76-90/85.回归分析.md diff --git a/Day76-90/11.大数据分析入门.md b/Day76-90/86.大数据分析入门.md similarity index 100% rename from Day76-90/11.大数据分析入门.md rename to Day76-90/86.大数据分析入门.md diff --git a/Day76-90/12.大数据分析进阶.md b/Day76-90/87.大数据分析进阶.md similarity index 100% rename from Day76-90/12.大数据分析进阶.md rename to Day76-90/87.大数据分析进阶.md diff --git a/Day76-90/13.Tensorflow入门.md b/Day76-90/88.Tensorflow入门.md similarity index 100% rename from Day76-90/13.Tensorflow入门.md rename to Day76-90/88.Tensorflow入门.md diff --git a/Day76-90/14.Tensorflow实战.md b/Day76-90/89.Tensorflow实战.md similarity index 100% rename from Day76-90/14.Tensorflow实战.md rename to Day76-90/89.Tensorflow实战.md diff --git a/Day76-90/15.推荐系统实战.md b/Day76-90/90.推荐系统实战.md similarity index 100% rename from Day76-90/15.推荐系统实战.md rename to Day76-90/90.推荐系统实战.md diff --git a/Day91-100/英语面试.md b/Day91-100/100.英语面试.md similarity index 100% rename from Day91-100/英语面试.md rename to Day91-100/100.英语面试.md diff --git a/Day91-100/团队项目开发.md b/Day91-100/91.团队项目开发准备.md similarity index 98% rename from Day91-100/团队项目开发.md rename to Day91-100/91.团队项目开发准备.md index d86e03b..d9acf2e 100644 --- a/Day91-100/团队项目开发.md +++ b/Day91-100/91.团队项目开发准备.md @@ -1,4 +1,4 @@ -## 团队项目开发 +## 团队项目开发准备 我们经常听到个人开发和团队开发这两个词,所谓个人开发就是一个人把控产品的所有内容;而团队开发则是由多个人组成团队并完成产品的开发。要实施团队开发以下几点是必不可少的: @@ -72,7 +72,7 @@ #### Git简介 -![Logo of Git](http://upload-images.jianshu.io/upload_images/1279331-df4dada955ca9052.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) +![](./res/git-logo.png) Git是诞生于2005年的一个开源分布式版本控制系统,最初是Linus Torvalds(Linux之父) 为了帮助管理Linux内核开发而开发的一个版本控制软件。Git与常用的版本控制工具Subversion等不同,它采用了分布式版本控制的方式,在没有中央服务器支持的环境下也能够实施版本控制。 diff --git a/Day91-100/92.使用Docker部署服务.md b/Day91-100/92.使用Docker部署服务.md new file mode 100644 index 0000000..33481d8 --- /dev/null +++ b/Day91-100/92.使用Docker部署服务.md @@ -0,0 +1,799 @@ +## 使用Docker部署服务 + +### Docker简介 + +软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且在不同的环境下我们安装的软件需要依赖的软件包也是不一样的。 + +那么问题来了,我们安装软件的时候可不可以把软件运行的环境一并安装?我们是不是可以把原始环境一模一样地复制过来呢? + +虚拟机(virtual machine)就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,在macOS上运行Windows,而应用程序对此毫无感知。使用过虚拟机的人都知道,虚拟机用起来跟真实系统一模一样,而对于虚拟机的宿主系统来说,虚拟机就是一个普通文件,不需要了就删掉,对宿主系统或者其他的程序并没有影响。但是虚拟机通常会占用较多的系统资源,启动和关闭也非常的缓慢,总之用户体验并没有想象中的那么好。 + +Docker属于对Linux容器技术的一种封装(利用了Linux的namespace和cgroup技术),它提供了简单易用的容器使用接口,是目前最流行的 Linux 容器解决方案。Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。下图是虚拟机和容器的对比,左边是传统的虚拟机,右边是Docker。 + +![](./res/docker_vs_vm.png) + +目前,Docker主要用于几下几个方面: + +1. 提供一次性的环境。 +2. 提供弹性的云服务(利用Docker很容易实现扩容和收缩)。 +3. 实践微服务架构(隔离真实环境在容器中运行多个服务)。 + +### 安装Docker + +下面以CentOS为例讲解如何安装Docker,使用[Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/)、[macOS](https://docs.docker.com/docker-for-mac/install/)或[Windows](https://docs.docker.com/docker-for-windows/install/)的用户可以通过点击对应的链接了解这些平台下如何进行安装。 + +1. 确定操作系统内核版本(CentOS 7要求64位,内核版本3.10+;CentOS 6要求64位,内核版本2.6+),可以通过下面的命令确定Linux系统内核版本。 + +```Shell +uname -r +``` + +2. 在CentOS下使用yum安装Docker并启动。 + +```Shell +yum -y install docker +systemctl start docker +``` + +3. 查看Docker的信息和版本。 + +```Shell +docker version +docker info +``` + +接下来可以通过下载镜像和创建容器来看看Docker是否可以运转起来。可以使用下面的命令从Docker的镜像仓库下载名为hello-world的镜像文件。 + + ```Shell +docker pull hello-world + ``` + +查看所有镜像文件。 + +```Shell +docker images +``` + +``` +REPOSITORY TAG IMAGE ID CREATED SIZE +docker.io/hello-world latest fce289e99eb9 7 months ago 1.84 kB +``` + +通过镜像文件创建并运行容器。 + +```Shell +docker container run --name mycontainer hello-world +``` + +> 说明:其中`mycontainer`是我们给容器起的名字,跟在`--name`参数之后;`hello-world`就是我们刚才下载的镜像文件。 + +``` +Hello from Docker! +This message shows that your installation appears to be working correctly. + +To generate this message, Docker took the following steps: + 1. The Docker client contacted the Docker daemon. + 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. + (amd64) + 3. The Docker daemon created a new container from that image which runs the + executable that produces the output you are currently reading. + 4. The Docker daemon streamed that output to the Docker client, which sent it + to your terminal. + +To try something more ambitious, you can run an Ubuntu container with: + $ docker run -it ubuntu bash + +Share images, automate workflows, and more with a free Docker ID: + https://hub.docker.com/ + +For more examples and ideas, visit: + https://docs.docker.com/get-started/ +``` + +如果要删除这个容器,可以使用下面的命令。 + +```Shell +docker container rm mycontainer +``` + +在删除容器之后,我们还可以删除刚才下载的镜像文件。 + +```Shell +docker rmi hello-world +``` + +> 说明:如果要在Ubuntu(内核版本3.10+)下面安装和启动Docker,可以按照如下的步骤进行。 +> +> ```Shell +> apt update +> apt install docker-ce +> service docker start +> ``` +> +> 国内用户可以通过更换Ubuntu软件下载源来提升下载速度,具体请参照清华大学开源软件镜像站上的[《Ubuntu镜像使用帮助》]()。 + +安装Docker后,由于直接访问[dockerhub](https://hub.docker.com/)下载镜像会非常缓慢,建议将服务器更换为国内镜像,可以通过修改 `/etc/docker/daemon.js` 文件来做到。 + +```JavaScript +{ + "registry-mirrors": [ + "http://hub-mirror.c.163.com", + "https://registry.docker-cn.com" + ] +} +``` + +### 使用Docker + +#### 安装Nginx + +下面我们就基于Docker来创建一台HTTP服务器,我们选择用Nginx来搭建该服务,因为Nginx是高性能的Web服务器,同时也是做反向代理服务器的上佳选择。要做到这件事情,只需要使用下面的命令在Docker中创建一个容器即可。 + +```Shell +docker container run -d -p 80:80 --rm --name mynginx nginx +``` + +> 说明:上面的参数`-d`表示容器在后台运行(不产生输出到Shell)并显示容器的ID;`-p`是用来映射容器的端口到宿主机的端口,冒号前面是宿主机的端口,冒号后面是容器内部使用的端口;`--rm`表示容器停止后自动删除容器,例如执行命令`docker container stop mynginx`后,容器就不复存在了;`--name`后面的mynginx是自定义的容器名字;在创建容器的过程中,需要用到nginx的镜像文件,镜像文件的下载是自动完成的,如果没有指定版本号,默认是最新版本(latest)。 + +如果需要将自己的Web项目(页面)部署到Nginx上,可以使用容器拷贝命令将指定路径下所有的文件和文件夹拷贝到容器的指定目录中。 + +```Shell +docker container cp /root/web/index.html mynginx:/usr/share/nginx/html +``` + +如果不愿意拷贝文件也可以在创建容器时通过数据卷操作`--volume`将指定的文件夹映射到容器的某个目录中,例如将Web项目的文件夹直接映射到`/usr/share/nginx/html`目录。我们先通过下面的命令让刚才创建的容器停止运行。 + +```Shell +docker container stop mynginx +``` + +然后用下面的命令重新创建容器。 + +```Shell +docker container run -d -p 80:80 --rm --name mynginx --volume $PWD/html:/usr/share/nginx/html nginx +``` + +> 说明:上面创建容器和拷贝文件的命令中,`container`是可以省略的,也就是说`docker container run`和`docker run`是一样的,而`docker container cp`和`docker cp`是一样的。此外,命令中的`--volume`也可以缩写为`-v`,就如同`-d`是`--detach`的缩写,`-p`是`--publish`的缩写。`$PWD`代表宿主系统当前文件夹,这些对于使用过Unix或者Linux系统的人来说,应该是很容易理解的。 + +要查看运行中的容器,可以使用下面的命令。 + +```Shell +docker ps +``` + +``` +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +3c38d2476384 nginx "nginx -g 'daemon ..." 4 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp mynginx +``` + +要启动和停止容器,可以使用下面的命令。 + +```Shell +docker start mynginx +docker stop mynginx +``` + +由于在创建容器时使用了`--rm`选项,容器在停止时会被移除,当我们使用下面的命令查看所有容器时,应该已经看不到刚才的`mynginx`容器了。 + +```Shell +docker container ls -a +``` + +如果在创建容器时没有指定`--rm`选项,那么也可以使用下面的命令来删除容器。 + +```Shell +docker rm mynginx +``` + +要删除正在运行中的容器,需要使用`-f`选项。 + +```Shell +docker rm -f mynginx +``` + +#### 安装MySQL + +我们再来尝试用Docker安装一台MySQL服务器,首先可以先检查一下有没有MySQL的镜像文件。 + +```Shell +docker search mysql +``` + +``` +INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED +docker.io docker.io/mysql MySQL is a ... 8486 [OK] +... +``` + +> 说明:上面查询结果的列依次代表索引、镜像名、镜像描述、用户评价、是否官方镜像、自动构建。 + +下载MySQL镜像并指定镜像的版本号。 + +```Shell +docker pull mysql:5.7 +``` + +如果需要查看已经下载的镜像文件,可以使用下面的命令。 + +```Shell +docker images +``` + +``` +REPOSITORY TAG IMAGE ID CREATED SIZE +docker.io/nginx latest e445ab08b2be 2 weeks ago 126 MB +docker.io/mysql 5.7 f6509bac4980 3 weeks ago 373 MB +``` + +创建并运行MySQL容器。 + +```Shell +docker run -d -p 3306:3306 --name mysql57 -v $PWD/mysql/conf:/etc/mysql/mysql.cnf.d -v $PWD/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 +``` + +注意,上面创建容器时我们又一次使用了数据卷操作,那是因为通常容器是随时创建随时删除的,而数据库中的数据却是需要保留下来的,所以上面的两个数据卷操作一个是映射了MySQL配置文件所在的文件夹,一个是映射了MySQL数据所在的文件夹,这里的数据卷操作非常重要。我们可以将MySQL的配置文件放在`$PWD/mysql/conf`目录下,配置文件的具体内容如下所示: + +```INI +[mysqld] +pid-file=/var/run/mysqld/mysqld.pid +socket=/var/run/mysqld/mysqld.sock +datadir=/var/lib/mysql +log-error=/var/log/mysql/error.log +server-id=1 +log-bin=/var/log/mysql/mysql-bin.log +expire_logs_days=30 +max_binlog_size=256M +symbolic-links=0 +``` + +如果安装了MySQL 8.x版本(目前的最新版本),在使用客户端工具连接服务器时可能会遇到`error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded`的问题,这是因为MySQL 8.x默认使用了名为“caching_sha2_password”的机制对用户口令进行了更好的保护,但是如果客户端工具不支持新的认证方式,连接就会失败。解决这个问题有两种方式:一是升级客户端工具来支持MySQL 8.x的认证方式;二是进入容器,修改MySQL的用户口令认证方式。下面是具体的步骤,我们先用`docker exec`命令进入容器的交互式环境,假设运行MySQL 8.x的容器名字叫`mysql8x`。 + +```Shell +docker exec -it mysql8x /bin/bash +``` + +进入容器的交互式Shell之后,可以首先利用MySQL的客户端工具连接MySQL服务器。 + +```Shell +mysql -u root -p +Enter password: +Your MySQL connection id is 16 +Server version: 8.0.12 MySQL Community Server - GPL +Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. +mysql> +``` + +接下来通过SQL来修改用户口令就可以了。 + +```SQL +alter user 'root'@'%' identified with mysql_native_password by '123456' password expire never; +``` + +当然,如果愿意你也可以查看一下用户表检查是否修改成功。 + +```SQL +use mysql; +select user, host, plugin, authentication_string from user where user='root'; ++------+-----------+-----------------------+-------------------------------------------+ +| user | host | plugin | authentication_string | ++------+-----------+-----------------------+-------------------------------------------+ +| root | % | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +| root | localhost | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | ++------+-----------+-----------------------+-------------------------------------------+ +2 rows in set (0.00 sec) +``` + +在完成上面的步骤后,现在即便不更新客户端工具也可以连接MySQL 8.x了。 + +#### 安装Redis + +接下来我们试一试运行多个容器并让多个容器之间通过网络通信。我们创建4个Redis容器来实现一主三从的主从复制结构。 + +```Shell +docker run -d -p 6379:6379 --name redis-master redis redis-server +docker run -d -p 6380:6379 --name redis-slave-1 --link redis-master:redis-master redis redis-server --replicaof redis-master 6379 +docker run -d -p 6381:6379 --name redis-slave-2 --link redis-master:redis-master redis redis-server --replicaof redis-master 6379 +docker run -d -p 6382:6379 --name redis-slave-3 --link redis-master:redis-master redis redis-server --replicaof redis-master 6379 +``` + +上面的命令中,`--link`参数用于给容器创建网络别名,因为三台从机(slave)需要通过网络连接自己的主机(master)。虽然,我们可以通过`docker inspect --format '{{ .NetworkSettings.IPAddress }}' `命令来查看到容器的IP地址,但是由于容器的即装即用性,容器的IP地址有可能会发生变化,如果直接使用IP地址,在容器重启后就可能会因为IP地址的变化导致从机无法连接到主机。使用`--link`参数创建网络别名就是为了在启动Redis服务器时在`redis-server`后面的`--replicaof`参数后使用这个别名而不是IP地址。 + +接下来我们进入名为`redis-master`的容器,看看主从复制的配置是否成功。 + +```Shell +docker exec -it redis-master /bin/bash +``` + +通过`redis-cli`启动命令行工具。 + +```Shell +redis-cli +127.0.0.1:6379> info replication +# Replication +role:master +connected_slaves:3 +slave0:ip=172.17.0.4,port=6379,state=online,offset=1988,lag=0 +slave1:ip=172.17.0.5,port=6379,state=online,offset=1988,lag=1 +slave2:ip=172.17.0.6,port=6379,state=online,offset=1988,lag=1 +master_replid:94703cfa03c3ddc7decc74ca5b8dd13cb8b113ea +master_replid2:0000000000000000000000000000000000000000 +master_repl_offset:1988 +second_repl_offset:-1 +repl_backlog_active:1 +repl_backlog_size:1048576 +repl_backlog_first_byte_offset:1 +repl_backlog_histlen:1988 +``` + +### 构建镜像 + +Docker镜像是由文件系统叠加而成的,系统的最底层是bootfs,相当于就是Linux内核的引导文件系统;接下来第二层是rootfs,这一层可以是一种或多种操作系统(如Debian或Ubuntu文件系统),Docker中的rootfs是只读状态的;Docker利用联合挂载技术将各层文件系统叠加到一起,最终的文件系统会包含有底层的文件和目录,这样的文件系统就是一个镜像,如下图所示。 + +之前我们讲过了如何查找、列出镜像和拉取(下载)镜像,接下来看看构建镜像的两种方式: + +1. 使用`docker commit`命令。(不推荐) +2. 使用`docker build`命令和Dockerfile文件。 + +#### 使用commit命令构建镜像 + +为了演示如何构建镜像,我们先使用Ubuntu镜像来定制一个容器,命令如下所示。 + +```Shell +docker run --name myubuntu -it ubuntu /bin/bash +``` + +在容器中执行下面的命令来安装Apache服务器并退出容器。 + +```Shell +apt -y upgrade +apt -y install apache2 +exit +``` + +我们将这个容器作为一个定制的Web服务器保存起来,当需要这样一台Web服务器的时候,就没有必要重新创建容器并安装Apache了。 + +首先我们通过下面的命令查看容器的ID。 + +```Shell +docker container ls -a +``` + +``` +docker container ls -a +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +014bdb321612 ubuntu "/bin/bash" 5 minutes ago Exited (0) myubuntu +``` + +提交定制的容器。 + +```Shell +docker commit 014bdb321612 jackfrued/mywebserver +``` + +查看镜像文件。 + +```Shell +docker images +``` + +``` +REPOSITORY TAG IMAGE ID CREATED SIZE +jackfrued/mywebserver latest 795b294d265a 14 seconds ago 189 MB +``` + +生成镜像文件以后,后面就可以利用刚才创建的镜像文件来创建新的容器。 + +#### 使用Dockerfile构建镜像 + +Dockerfile使用DSL(Domain Specific Language)来构建一个Docker镜像,只要编辑好了Dockerfile文件,就可以使用`docker build`命令来构建一个新的镜像。 + +我们先创建一个新的文件夹并在文件夹下创建名为Dockerfile的文件。 + +```Shell +mkdir test +cd test +touch Dockerfile +``` + +编辑这个Dockerfile文件添加如下所示的内容。 + +```Shell +vim Dockerfile +``` + +```Dockerfile +# version: 0.0.1 +FROM ubuntu:14.04 +MAINTAINER jackfrued "jackfrued@126.com" +RUN apt-get update && apt-get install -y nginx +RUN echo 'hello, world!' > /usr/share/nginx/html/index.html +EXPOSE 80 +``` + +我们来解释一下上面的Dockerfile文件。Dockerfile文件通过特殊的指令来指定基础镜像(FROM指令)、创建容器后需要指定的命令(RUN指令)以及需要暴露的端口(EXPOSE)等信息。我们稍后会专门为大家介绍这些Dockfile中的指令。 + +接下来我们可以使用`docker build`命令来创建镜像,如下所示。 + +```Shell +docker build -t="jackfrued/webserver" . +``` + +通过下面的命令可以查看创建好的镜像。 + +```Shell +docker images +``` + +``` +REPOSITORY TAG IMAGE ID CREATED SIZE +jackfrued/webserver latest 87d6cb096be2 23 minutes ago 222 MB +``` + +如果想知道镜像文件是如何创建出来的,可以使用下面的命令。 + +```Shell +docker history jackfrued/webserver +``` + +``` +IMAGE CREATED CREATED BY SIZE +87d6cb096be2 25 minutes ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B +53d3bc3a123e 25 minutes ago /bin/sh -c service nginx start 3 B +10646b63275e 25 minutes ago /bin/sh -c echo 'hello, world!' > /usr/sha... 14 B +f3e3bf3e998e 25 minutes ago /bin/sh -c apt-get update && apt-get insta... 34.3 MB +c98e22cf5a64 26 minutes ago /bin/sh -c #(nop) MAINTAINER jackfrued "j... 0 B +2c5e00d77a67 3 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B + 3 months ago /bin/sh -c mkdir -p /run/systemd && echo '... 7 B + 3 months ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B + 3 months ago /bin/sh -c set -xe && echo '#!/bin/sh' >... 195 kB + 3 months ago /bin/sh -c #(nop) ADD file:1e01ab604c0cc30... 188 MB +``` + +使用该镜像来创建容器运行Web服务器。 + +```Shell +docker run -d -p 80:80 --name mywebserver jackfrued/webserver nginx -g "daemon off;" +``` + +如果希望将上面创建的镜像文件放到dockerhub仓库中,可以按照如下所示的步骤进行操作。 + +通过下面的命令登录到dockerhub。 + +```Shell +docker login +``` + +输入用户名和口令进行登录。 + +``` +Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. +Username: jackfrued +Password: +Login Succeeded +``` + +通过下面的命令将镜像推到仓库中。 + +```Shell +docker push jackfrued/webserver +``` + +![](./res/dockerhub-repo.png) + +#### Dockerfile指令 + +想了解Dockerfile的指令可以查看官方提供的[参考手册](),下面我们为大家介绍一些常用的指令。 + +1. **FROM**:设置基础镜像,必须是Dockerfile中的第一条指令。 + + ```Dockerfile + FROM <镜像名> [AS <别名>] + ``` + + 或 + + ```Dockerfile + FROM <镜像名>[:<标签>] [AS <别名>] + ``` + +2. **RUN**:指定构建镜像时要执行的命令。 + + ```Dockerfile + RUN <命令> [参数1], [参数2], ... + ``` + + 或 + + ```Dockerfile + RUN ["可执行文件", "参数1", "参数2", ...] + ``` + +3. **CMD**:指定构建镜像后要执行的命令。 + + ```Dockerfile + CMD <命令> [参数1], [参数2], ... + ``` + + 或 + + ```Dockerfile + CMD ["可执行文件", "参数1", "参数2", ...] + ``` + + > 说明:Docker不同于虚拟机,容器本身就是一个进程,容器中的应用应该位于前台运行。CMD命令相当于就是用来指定容器主进程(创建容器后要在前台执行的程序)的,如果主进程结束了,容器也就停止运行了。所以在容器中启动Nginx不能使用`service nginx start`或是`systemctl start nginx`而是要通过`CMD ["nginx", "-g", "daemon off;"]`让它在前台运行。 + +4. **ENTRYPOINT**:和CMD类似,也可以执行命令,但`docker run`命令行中指定的任何参数都会被当做参数再次传给ENTRYPOINT指令中的命令,这就使得我们可以构建一个镜像,它既可以运行一个默认的命令,也支持通过`docker run`命令行为该命令指定可覆盖的参数选项。 + + ```Dockerfile + ENTRYPOINT <命令> [参数1], [参数2], ... + ``` + + 或 + + ```Dockerfile + ENTRYPOINT ["可执行文件", "参数1", "参数2", ...] + ``` + +5. **WORKDIR**:在通过镜像创建新容器时,在容器内部创建一个工作目录,ENTRYPOINT和CMD指定的程序会在这个目录下执行。在使用`docker run`命令时可以通过`-w`参数来覆盖由WORKDIR指定的工作目录。例如: + + ```Dockerfile + WORKDIR /opt/webapp + ``` + + ```Shell + docker run -w /usr/share/webapp ... + ``` + +6. **ENV**:在创建镜像时设置环境变量。在使用`docker run`命令时,可以通过`-e`参数来修改环境变量的设置。例如: + + ```Dockerfile + ENV DEFAULT_PORT=8080 + ``` + + ```Shell + docker run -e "DEFAULT_PORT=8000" ... + ``` + +7. **USER**:指定镜像会以什么用户身份去运行。例如: + + ```Dockerfile + USER nginx + ``` + +8. **VOLUME**:在创建容器时添加一个数据卷的挂载点。通过数据卷操作可以实现容器间数据的共享和重用,对卷所作的修改可以马上生效而不需要重新启动容器,我们之前创建容器时使用`—volume`参数就是为了实现数据卷的映射操作。 + + ```Dockerfile + VOLUME ["/路径1", "/路径2/子路径2.1/", ...] + ``` + +9. **ADD**:将构建目录下的文件和文件夹复制到镜像中,如果是压缩文件和归档文件,ADD命令会对这些文件进行解压缩解归档的操作。 + + ```Dockerfile + ADD [--chown=<用户>:<用户组>] <源文件> <目标文件> + ``` + +10. **COPY**:非常类似于ADD,但不会主动对文件进行提取操作。 + +11. **LABEL**:为Docker镜像添加一些元数据,在使用`docker inspect`命令时会看到这些元数据。 + + ```Dockerfile + LABEL version="1.0.0" location="Chengdu" + ``` + +12. **ONBUILD**:为镜像添加触发器,当一个镜像被用作其他镜像的基础镜像,触发器将会被执行。例如: + + ```Dockerfile + ONBUILD ADD . /app/src + ONBUILD RUN cd /app/src && make + ``` + +### 容器编排 + +我们的项目可能会使用了多个容器,容器多了之后管理容器的工作就会变得麻烦。如果要对多个容器进行自动配置使得容器可以相互协作甚至实现复杂的调度,这就需要进行容器编排。Docker原生对容器编排的支持非常弱,但是可以通过社区提供的工具来实现容器编排。 + +#### Docker Compose + +可以通过安装Docker Compose工具来实现基于YAML文件的容器编排,YAML文件会定义一系列的容器以及容器运行时的属性,Docker Compose会根据这些配置来管理容器。 + +1. 安装Docker Compose。 + + ```Shell + curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose + ``` + + > 说明:如果没有curl工具,在CentOS下可以先通过包管理工具yum安装curl再执行上面的命令。 + + 当然我们也可以使用Python的包管理工具pip来安装Docker Compose,命令如下所示。 + + ```Shell + pip3 install -U docker-compose + ``` + +2. 使用Docker Compose。 + + 我们先创建一个名为`composeapp`的文件夹并在该文件夹下创建两个子文件夹`product-service`和`web-site`,如下所示。 + + ```Shell + mkdir composeapp + cd composeapp + mkdir product-service + mkdir web-site + ``` + + 我们先在`product-service`文件夹下编写提供数据的API接口程序。 + + ```Shell + vim product-service/api.py + ``` + + 我们用Flask来实现一个非常简单的数据接口服务程序。 + + ```Python + from pickle import dumps, loads + + from flask import Flask + from flask_restful import Resource, Api + from redis import Redis + from flask_cors import CORS + + app = Flask(__name__) + CORS(app, resources={r'/api/*': {'origins': '*'}}) + api = Api(app) + redis = Redis(host='redis-master', port=6379) + + + class Product(Resource): + + def get(self): + data = redis.get('products') + if not data: + products = ['Ice Cream', 'Chocolate', 'Coca Cola', 'Hamburger'] + redis.set('products', dumps(products)) + else: + products = loads(data) + return {'products': products} + + + api.add_resource(Product, '/api/products') + + if __name__ == '__main__': + app.run(host='0.0.0.0', port=8000, debug=True) + ``` + + 由于上面的项目需要依赖`flask`、 `flask-restful`等三方库,所以我们再添加一个指明依赖库的文件并将其命名为`requirements.txt`,其内容如下所示。 + + ```Shell + vim product-service/requirements.txt + ``` + + ``` + flask + flask-restful + flask-cors + redis + ``` + + 稍后我们会将上面的接口服务放在一个容器中运行,为此我们先编写一个Dockerfile文件以便创建对应的镜像,其内容如下所示。 + + ```Shell + vim product-service/Dockerfile + ``` + + ```Dockerfile + FROM python:3 + ADD . /root/product-service + WORKDIR /root/product-service + RUN pip install -r requirements.txt + CMD ["python", "api.py"] + ``` + + 我们再去到`web-site`目录下创建一个页面,稍后我们会通一个容器来提供Nginx服务并运行该页面,而这个页面会访问我们刚才部署的数据接口服务获取数据并通过Vue.js将数据渲染到页面上。 + + ```Shell + vim web-site/index.html + ``` + + ```HTML + + + + + 首页 + + +
+

产品列表

+
    +
  • {{ product }}
  • +
+
+ + + + + ``` + + 接下来,我们要通过一个YAML文件来创建三个容器并指明容器之间的依赖关系。 + + ```Shell + vim docker-compose.yml + ``` + + ```YAML + version: '3' + services: + + product-service: + build: ./product-service + ports: + - '8000:8000' + links: + - redis-master + + web-site: + image: nginx + ports: + - '80:80' + volumes: + - ./web-site:/usr/share/nginx/html + + redis-master: + image: redis + expose: + - '6379' + ``` + + 有了这个YAML文件,我们就可以使用`docker-compose`命令来创建和管理这三个容器,其命令如下所示。 + + ```Shell + docker-compose up + ``` + + ``` + Creating network "composeapp_default" with the default driver + Building product-service + Step 1/5 : FROM python:3 + ---> e497dabd8450 + Step 2/5 : ADD . /root/product-service + ---> fbe62813d595 + Removing intermediate container 6579e845565a + Step 3/5 : WORKDIR /root/product-service + ---> 3a722675e3b1 + Removing intermediate container 57fc490436ce + Step 4/5 : RUN pip install -r requirements.txt + ---> Running in cadc2d0c1b9b + ... ... + ---> fc747fc11f4a + Removing intermediate container cadc2d0c1b9b + Step 5/5 : CMD python api.py + ---> Running in ecbbd2a69906 + ---> 637e760f2e5b + Removing intermediate container ecbbd2a69906 + Successfully built 637e760f2e5b + WARNING: Image for service product-service was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. + Creating composeapp_redis-master_1 ... done + Creating composeapp_web-site_1 ... done + Creating composeapp_product-service_1 ... done + Attaching to composeapp_redis-master_1, composeapp_web-site_1, composeapp_product-service_1 + ... ... + ``` + + + diff --git a/Day91-100/MySQL相关知识.md b/Day91-100/93.MySQL性能优化.md similarity index 64% rename from Day91-100/MySQL相关知识.md rename to Day91-100/93.MySQL性能优化.md index 8f78647..de8beed 100644 --- a/Day91-100/MySQL相关知识.md +++ b/Day91-100/93.MySQL性能优化.md @@ -1,31 +1,17 @@ -## MySQL相关知识 +## MySQL性能优化 -### 存储引擎 +### 使用索引 -1. InnoDB -2. MyISAM - -### 数据类型 - -### 索引 - -#### 索引的类型 +在前面[《关系型数据库MySQL》](../Day36-40/36-38.关系型数据库MySQL.md)一文中,我们已经讲到过索引的相关知识,这里我们做一个简单的回顾。 1. B-Tree索引 2. HASH索引 3. R-Tree索引(空间索引) 4. Full-text索引(全文索引) -### 视图 +### 使用过程 -查询的快照,可以将访问权限控制到列上。 - -```SQL -create view ... as select ... -drop view ... -``` - -### 存储过程 +过程,通常也称之为存储过程。 ```SQL create procedure ... (params) @@ -40,19 +26,11 @@ call ... cursor.callproc('...') ``` -### 触发器 - -不能用,因为多个行锁可能直接升级为表锁,导致性能低下。 - -### 事务控制 - -### SQL注入攻击 - ### 数据分区 -### SQL优化 -#### 优化步骤 + +### SQL优化 1. 通过`show status`了解各种SQL的执行频率。 @@ -82,20 +60,20 @@ cursor.callproc('...') 4. 通过`show profiles`和`show profile for query`分析SQL。 -#### SQL优化 +5. 优化CRUD操作。 -1. 优化insert语句 -2. 优化order by语句 -3. 优化group by语句 -4. 优化嵌套查询 -5. 优化or条件 -6. 优化分页查询 -7. 使用SQL提示 - - USE INDEX - - IGNORE INDEX - - FORCE INDEX + - 优化insert语句 + - 优化order by语句 + - 优化group by语句 + - 优化嵌套查询 + - 优化or条件 + - 优化分页查询 + - 使用SQL提示 + - USE INDEX + - IGNORE INDEX + - FORCE INDEX -#### 配置优化 +### 配置优化 1. 调整max_connections 2. 调整back_log @@ -103,7 +81,7 @@ cursor.callproc('...') 4. 调整thread_cache_size 5. 调整innodb_lock_wait_timeout -#### 架构优化 +### 架构优化 1. 通过拆分提高表的访问效率 - 垂直拆分 @@ -115,21 +93,6 @@ cursor.callproc('...') - 3NF:所有的属性都直接依赖于主键(消除传递依赖) - BCNF:消除非平凡多值依赖 3. 使用中间表提高统计查询速度 - -### 数据备份 - -#### 导入和导出 - -1. select ... into outfile ... -2. load data infile ... into table ... -3. mysqldump -4. mysqlimport - -#### ibbackup工具 - -#### xtrabackup工具 - -### 主从复制 - -### 集群 +4. 主从复制和读写分离 +5. 配置MySQL集群 diff --git a/Day91-100/网络API接口设计.md b/Day91-100/94.网络API接口设计.md similarity index 100% rename from Day91-100/网络API接口设计.md rename to Day91-100/94.网络API接口设计.md diff --git a/Day91-100/Django知识点概述.md b/Day91-100/95.使用Django开发商业项目.md similarity index 99% rename from Day91-100/Django知识点概述.md rename to Day91-100/95.使用Django开发商业项目.md index e1a34e2..26bdf40 100644 --- a/Day91-100/Django知识点概述.md +++ b/Day91-100/95.使用Django开发商业项目.md @@ -1,4 +1,4 @@ -## Django知识点概述 +## 使用Django开发商业项目 > 说明:本文的部分插图来自于《Python项目开发实战》和《精通Django》,这两本书中都包含了对Django框架精彩的讲解,有兴趣的读者可以自行购买阅读。 @@ -6,7 +6,7 @@ 问题1:描述一个Web应用的工作流程。 -![s](./res/web-application.png) +![](./res/web-application.png) 问题2:描述项目的物理架构。(上图中补充负载均衡(反向代理)服务器、数据库服务器、文件服务器、邮件服务器、缓存服务器、防火墙等,而且每个节点都有可能是多节点构成的集群,如下图所示,架构并不是一开始就是这样,而是逐步演进的) diff --git a/Day91-100/关于测试和自动化测试.md b/Day91-100/96.软件测试和自动化测试.md similarity index 99% rename from Day91-100/关于测试和自动化测试.md rename to Day91-100/96.软件测试和自动化测试.md index a71864b..c461b66 100644 --- a/Day91-100/关于测试和自动化测试.md +++ b/Day91-100/96.软件测试和自动化测试.md @@ -1,4 +1,4 @@ -## 关于测试 +## 软件测试和自动化测试 ### 软件测试概述 diff --git a/Day91-100/电商网站技术要点剖析.md b/Day91-100/97.电商网站技术要点剖析.md similarity index 99% rename from Day91-100/电商网站技术要点剖析.md rename to Day91-100/97.电商网站技术要点剖析.md index 71b43d0..8af2050 100644 --- a/Day91-100/电商网站技术要点剖析.md +++ b/Day91-100/97.电商网站技术要点剖析.md @@ -812,7 +812,7 @@ HAYSTACK_CONNECTIONS = { # 引擎配置 'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', # 搜索引擎服务的URL - 'URL': 'http://1.2.3.4:9200', + 'URL': 'http://1.2.3.4:9200', # 索引库的名称 'INDEX_NAME': 'goods', }, diff --git a/Day91-100/项目部署上线指南.md b/Day91-100/98.项目部署上线和性能调优.md similarity index 100% rename from Day91-100/项目部署上线指南.md rename to Day91-100/98.项目部署上线和性能调优.md diff --git a/Day91-100/面试中的公共问题.md b/Day91-100/99.面试中的公共问题.md similarity index 89% rename from Day91-100/面试中的公共问题.md rename to Day91-100/99.面试中的公共问题.md index f05e9fa..ec5648d 100644 --- a/Day91-100/面试中的公共问题.md +++ b/Day91-100/99.面试中的公共问题.md @@ -23,6 +23,8 @@ 1. 开发中用过哪些标准库和三方库。 > 标准库:sys / os / re / math / random / logging / json / pickle / shelve / socket / datetime / hashlib / configparser / urllib / itertools / collections / functools / threading / multiprocess / timeit / atexit / abc / asyncio / base64 / concurrent.futures / copy / csv / operator / enum / heapq / http / profile / pstats / ssl / unitest / uuid + > + > 三方库:openpyxl / xlrd / xlwt / PyPDF2 / ReportLab / PyYAML / jieba / pillow / requests / urllib3 / responses / aiohttp / BeautifulSoup4 / lxml / pyquery / PyMySQL / psycopg2 / redis / PyMongo / Peewee / SQLAlchemy / alipay / PyJWT / itsdangerous / celery / flower / elasticsearch-dsl-py / PyCrypto / Paramiko / logbook / nose / pytest / coverage / Selenium / lineprofiler / memoryprofiler / matplotlib / pygal / OpenCV 2. 装饰器的作用、原理和实现。 diff --git a/Day91-100/Docker简易上手指南.md b/Day91-100/Docker简易上手指南.md deleted file mode 100644 index 4d4de42..0000000 --- a/Day91-100/Docker简易上手指南.md +++ /dev/null @@ -1,250 +0,0 @@ -## Docker简易上手指南 - -### Docker简介 - -软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且可能在不同的环境下我们的软件需要依赖的其他软件包也是不一样的。 - -那么问题来了,我们安装软件的时候可不可以把软件运行的环境一并安装?我们是不是可以把原始环境一模一样地复制过来呢? - -虚拟机(virtual machine)就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,在macOS上运行Windows,而应用程序对此毫无感知。使用过虚拟机的人都知道,虚拟机用起来跟真实系统一模一样,而对于虚拟机的宿主系统来说,虚拟机就是一个普通文件,不需要了就删掉,对宿主系统或者其他的程序并没有影响。但是虚拟机通常会占用较多的系统资源,启动和关闭也非常的缓慢,总之用户体验没有想象中的那么好。 - -Docker属于对Linux容器技术的一种封装(利用了Linux的namespace和cgroup技术),它提供了简单易用的容器使用接口,是目前最流行的 Linux 容器解决方案。Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker就再也不用担心环境问题了。 - -![](./res/docker_vs_vm.png) - -目前,Docker主要用于几下几个方面: - -1. 提供一次性的环境。 -2. 提供弹性的云服务(利用Docker很容易实现扩容和收缩)。 -3. 实践微服务架构(隔离真实环境在容器中运行多个服务)。 - -### 安装Docker - -下面的讲解以CentOS为例,使用[Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/)、[macOS](https://docs.docker.com/docker-for-mac/install/)或[Windows](https://docs.docker.com/docker-for-windows/install/)的用户可以通过点击链接了解这些平台下如何安装和使用Docker。 - -0. 确定操作系统内核版本(CentOS 7要求64位,内核版本3.10+;CentOS 6要求64位,内核版本2.6+)。 - -```Shell -uname -r -``` - -1. 在CentOS下使用yum安装Docker并启动。 - -```Shell -yum -y install docker-io -systemctl start docker -``` - -2. 检视Docker的信息和版本。 - -```Shell -docker version -docker info -``` - -3. 运行Hello-World项目来测试Docker。第一次运行时由于本地没有hello-world的镜像因此需要联网进行下载。 - -```Shell -docker run hello-world -``` - -也可以先用下面的命令下载镜像,然后再来运行。 - - ```Shell -docker pull - ``` - -4. 运行镜像文件。 - -```Shell -docker run -docker run -p : -``` - -6. 查看镜像文件。 - -```Shell -docker image ls -docker images -``` - -7. 删除镜像文件。 - -```Shell -docker rmi -``` - -8. 查看正在运行容器。 - -```Shell -docker ps -``` - -9. 停止运行的容器。 - -```Shell -docker stop -docker stop -``` - -对于那些不会自动终止的容器,就可以用下面的方式来停止。 - -```Shell -docker container kill -``` - -在Ubuntu(内核版本3.10+)下面安装和启动Docker,可以按照如下的步骤进行。 - -```Shell -apt update -apt install docker-ce -service docker start -``` - -在有必要的情况下,可以更换Ubuntu软件下载源来提升下载速度,具体的做法请参照。 - -安装Docker后,由于直接访问dockerhub下载镜像会非常缓慢,建议更换国内镜像,可以通过修改`/etc/docker/daemon.js`文件来做到。如果使用云服务器(如:阿里云),通常云服务器提供商会提供默认的镜像服务器,并不需要手动进行指定。 - -```JavaScript -{ - "registry-mirrors": [ - "http://hub-mirror.c.163.com", - "https://registry.docker-cn.com" - ] -} -``` - -### 使用Docker - -#### 安装Nginx - -下面我们就基于Docker来运行一台HTTP服务器,我们选择用Nginx来搭建该服务,因为Nginx是高性能的Web服务器,同时也是做反向代理服务器的上佳选择。要做到这件事情,只需要下面这条命令在Docker中创建一个容器即可。 - -```Shell -docker container run -d -p 80:80 --rm --name mynginx nginx -``` - -> 说明:上面的参数`-d`表示容器在后台运行(不产生输出到Shell)并显示容器的ID;`-p`是用来映射容器的端口到宿主机的端口;`--rm`表示容器停止后自动删除容器,例如通过`docker container stop mynginx`以后,容器就没有了;`—name`后面的mynginx就是自定义容器的名字。在创建容器的过程中,需要用到nginx的镜像文件,镜像文件的下载是自动完成的,如果没有指定版本号,默认是最新版本(latest)。 - -如果需要将自己的Web项目(页面)部署到Nginx上,可以使用容器拷贝命令将指定路径下所有的文件和文件夹拷贝到容器的指定目录中。 - -```Shell -docker container cp /root/web/index.html mynginx:/usr/share/nginx/html -``` - -如果不愿意拷贝文件也可以在创建容器时通过数据卷操作`--volume`将指定的文件夹映射到容器的某个目录中,例如将Web项目的文件夹直接映射到`/usr/share/nginx/html`目录。 - -```Shell -docker container run -d -p 80:80 --rm --name mynginx --volume $PWD/html:/usr/share/nginx/html nginx -``` - -> 说明:上面创建容器和拷贝文件的命令中,`container`是可以省略的,也就是说`docker container run`和`docker run`是一样的,而`docker container cp`和`docker cp`是一样的。此外,命令中的`--volume`也可以缩写为`-v`,就如同`-d`是`--detach`的缩写,`-p`是`--publish`的缩写。`$PWD`代表宿主系统当前文件夹,这个用过Linux系统的人相信很容易理解。 - -要查看运行中的容器,可以使用下面的命令。 - -```Shell -docker ps -``` - -要让刚才创建的容器停下来,可以使用下面的命令。 - -```Shell -docker stop mynginx -``` - -由于在创建容器时使用了`--rm`选项,容器在停止时会被移除,当我们使用下面的命令查看所有容器时,应该已经看不到刚才的`mynginx`容器了。 - -```Shell -docker container ls -a -``` - -如果在创建容器时没有指定`--rm`选项,那么也可以使用下面的命令来删除容器。 - -```Shell -docker rm mynginx -``` - -#### 安装MySQL - -我们可以先检查一下服务器上有没有MySQL的镜像文件。 - -```Shell -docker search mysql -``` - -下载MySQL镜像并指定镜像的版本号。 - -```Shell -docker pull mysql:5.7 -``` - -如果需要查看已经下载的镜像文件,可以使用下面的命令。 - -```Shell -docker images -``` - -创建并运行MySQL容器。 - -```Shell -docker run -d -p 3306:3306 --name mysql57 -v $PWD/mysql/conf:/etc/mysql/mysql.cnf.d -v $PWD/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 -``` - -注意,上面创建容器时我们又一次使用了数据卷操作,那是因为通常容器是随时创建随时删除的,而数据库中的数据却是需要保留下来的,所以上面的两个数据卷操作一个是映射了MySQL配置文件所在的文件夹,一个是映射了MySQL数据所在的文件夹,这里的数据卷操作非常重要。我们可以将MySQL的配置文件放在`$PWD/mysql/conf`目录下,配置文件的具体内容如下所示: - -```INI -[mysqld] -pid-file=/var/run/mysqld/mysqld.pid -socket=/var/run/mysqld/mysqld.sock -datadir=/var/lib/mysql -log-error=/var/log/mysql/error.log -server-id=1 -log-bin=/var/log/mysql/mysql-bin.log -expire_logs_days=30 -max_binlog_size=256M -symbolic-links=0 -``` - -如果安装了MySQL 8.x版本(目前的最新版本),在使用客户端工具连接服务器时可能会遇到“error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded”的问题,这是因为MySQL 8.x默认使用了名为“caching_sha2_password”的机制对用户口令进行了更好的保护,但是如果客户端工具不支持新的认证方式,连接就会失败。解决这个问题有两种方式:一是升级客户端工具来支持MySQL 8.x的认证方式;二是进入容器,修改MySQL的用户口令认证方式。下面是具体的步骤,我们先用`docker exec`命令进入容器的交互式环境,假设运行MySQL 8.x的容器名字叫`mysql8x`。 - -```Shell -docker exec -it mysql8x /bin/bash -``` - -进入容器的交互式Shell之后,可以首先利用MySQL的客户端工具连接MySQL服务器。 - -```Shell -mysql -u root -p -Enter password: -Your MySQL connection id is 16 -Server version: 8.0.12 MySQL Community Server - GPL -Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. -Oracle is a registered trademark of Oracle Corporation and/or its -affiliates. Other names may be trademarks of their respective -owners. -Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. -mysql> -``` - -接下来通过SQL来修改用户口令就可以了。 - -```SQL -alter user 'root'@'%' identified with mysql_native_password by '123456' password expire never; -``` - -当然,如果愿意你也可以查看一下用户表检查是否修改成功。 - -```SQL -use mysql; -select user, host, plugin, authentication_string from user where user='root'; -+------+-----------+-----------------------+-------------------------------------------+ -| user | host | plugin | authentication_string | -+------+-----------+-----------------------+-------------------------------------------+ -| root | % | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | -| root | localhost | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | -+------+-----------+-----------------------+-------------------------------------------+ -2 rows in set (0.00 sec) -``` - -在完成上面的步骤后,现在即便不更新客户端工具也可以连接MySQL 8.x了。 - diff --git a/Day91-100/res/dockerhub-repo.png b/Day91-100/res/dockerhub-repo.png new file mode 100644 index 0000000..f9e1ab8 Binary files /dev/null and b/Day91-100/res/dockerhub-repo.png differ diff --git a/Day91-100/res/git-logo.png b/Day91-100/res/git-logo.png new file mode 100644 index 0000000..efaec25 Binary files /dev/null and b/Day91-100/res/git-logo.png differ diff --git a/PEP 8风格指南.md b/PEP8风格指南.md similarity index 95% rename from PEP 8风格指南.md rename to PEP8风格指南.md index 10a6121..b381dbe 100644 --- a/PEP 8风格指南.md +++ b/PEP8风格指南.md @@ -32,5 +32,5 @@ PEP 8倡导用不同的命名风格来命名Python中不同的标识符,以便 3. 就算`if`分支、`for`循环、`except`异常捕获等中只有一行代码,也不要将代码和`if`、`for`、`except`等写在一起,分开写才会让代码更清晰。 4. `import`语句总是放在文件开头的地方。 5. 引入模块的时候,`from math import sqrt`比`import math`更好。 -6. 如果有多个`import`语句,应该将其分为三部分,从上到下分别是Python标准模块、第三方模块和自定义模块,每个部分内部应该按照模块名称的字母表顺序来排列。 +6. 如果有多个`import`语句,应该将其分为三部分,从上到下分别是Python**标准模块**、**第三方模块**和**自定义模块**,每个部分内部应该按照模块名称的**字母表顺序**来排列。 diff --git a/Python之禅.md b/Python之禅.md new file mode 100644 index 0000000..a5b968e --- /dev/null +++ b/Python之禅.md @@ -0,0 +1,21 @@ +## Zen of Python(Python之禅) + +Beautiful is better than ugly. (优美比丑陋好) +Explicit is better than implicit.(清晰比晦涩好) +Simple is better than complex.(简单比复杂好) +Complex is better than complicated.(复杂比错综复杂好) +Flat is better than nested.(扁平比嵌套好) +Sparse is better than dense.(稀疏比密集好) +Readability counts.(可读性很重要) +Special cases aren't special enough to break the rules.(特殊情况也不应该违反这些规则) +Although practicality beats purity.(但现实往往并不那么完美) +Errors should never pass silently.(异常不应该被静默处理) +Unless explicitly silenced.(除非你希望如此) +In the face of ambiguity, refuse the temptation to guess.(遇到模棱两可的地方,不要胡乱猜测) +There should be one-- and preferably only one --obvious way to do it.(肯定有一种通常也是唯一一种最佳的解决方案) +Although that way may not be obvious at first unless you're Dutch.(虽然这种方案并不是显而易见的,因为你不是那个荷兰人^这里指的是Python之父Guido^) +Now is better than never.(现在开始做比不做好) +Although never is often better than \*right\* now.(不做比盲目去做好^极限编程中的YAGNI原则^) +If the implementation is hard to explain, it's a bad idea.(如果一个实现方案难于理解,它就不是一个好的方案) +If the implementation is easy to explain, it may be a good idea.(如果一个实现方案易于理解,它很有可能是一个好的方案) +Namespaces are one honking great idea -- let's do more of those!(命名空间非常有用,我们应当多加利用) \ No newline at end of file diff --git a/README.md b/README.md index 4322658..a3a25c1 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ > 作者:骆昊 > -> 说明:最近有很多想学习Python的小伙伴申请单独加我微信和QQ,因为我自己平时也很忙,没办法一一解答大家的问题,我创建了**Python100天学习交流1群**和**Python100天学习交流2群**两个交流群,群号分别为**680701107**和**213132758**,二维码在下方。我的同事和朋友很多也在这个群里,他们都是优秀的Python开发者,有丰富的商业项目经验,我们在时间充足的时候会及时解答大家的问题,而且从Python语言入门到Web应用开发,从数据分析到机器学习,每个领域都有技术大咖为大家解惑答疑。以后我们争取每周做一次视频直播,以专题的形式分享Python开发的点点滴滴,同时还会不定期的举办线上和线下的技术交流和分享活动,小伙伴们可以加群进行交流。感谢**千锋教育Python教学部**对本群的支持。 +> 最近有很多想学习Python的小伙伴陆陆续续加入我们的交流群,目前我们的交流群人数已经超过一万人,光靠我自己已经无法及时处理小伙伴们的入群申请,更无法及时为大家解答问题。目前我的想法是分技术方向建立讨论群并安排专门的人来管理这些群,群管理者应该具备专业的知识并有相对充裕的时间,可以解答小伙伴们提出的问题。当然,我会向这些管理者支付报酬,如果有兴趣成为管理者的可以跟我私聊。但愿通过这种方式,我们的群能汇聚更多优秀的Python开发者,一方面打造一个优质的沟通和交流的平台,另一方面让新入行的开发者获得问道的途径并藉此迅速成长。我会继续努力做好线上公开课以及线下技术交流活动,也希望各位小伙伴一如既往的支持我们。创作不易,感谢大家的打赏支持,这些钱不会用于购买咖啡而是捐赠给支教组织([点击](./更新日志.md)了解捐赠情况)。感谢北京千锋互联科技有限公司对[公开课](https://ke.qq.com/course/406954)提供的支持。 -![](./res/python_100_days_qq_group.png) +![](./res/python_qq_group.png) + +> **温馨提示**:中间的**Python100天交流群之初入江湖**为付费群,会安排专门的群管理者为大家解答问题;右侧的**Python后端开发讨论群**和**Python爬虫开发讨论群**为免费群,从事Web后端开发和爬虫开发的小伙伴可以加群交流,**萌新勿入**。 ### Python应用领域和就业形势分析 @@ -51,15 +53,15 @@ ### Day01~15 - [Python语言基础](./Day01-15) -#### Day01 - [初识Python](./Day01-15/Day01/初识Python.md) +#### Day01 - [初识Python](./Day01-15/01.初识Python.md) - Python简介 - Python的历史 / Python的优缺点 / Python的应用领域 - 搭建编程环境 - Windows环境 / Linux环境 / MacOS环境 -- 从终端运行Python程序 - DOS命令 / Hello, world / print函数 / 运行程序 +- 从终端运行Python程序 - Hello, world / print函数 / 运行程序 - 使用IDLE - 交互式环境(REPL) / 编写多行代码 / 运行程序 / 退出IDLE - 注释 - 注释的作用 / 单行注释 / 多行注释 -#### Day02 - [语言元素](./Day01-15/Day02/语言元素.md) +#### Day02 - [语言元素](./Day01-15/02.语言元素.md) - 程序和进制 - 指令和程序 / 冯诺依曼机 / 二进制和十进制 / 八进制和十六进制 - 变量和类型 - 变量的命名 / 变量的使用 / input函数 / 检查变量类型 / 类型转换 @@ -67,25 +69,25 @@ - 运算符 - 数学运算符 / 赋值运算符 / 比较运算符 / 逻辑运算符 / 身份运算符 / 运算符的优先级 - 应用案例 - 华氏温度转换成摄氏温度 / 输入圆的半径计算周长和面积 / 输入年份判断是否是闰年 -#### Day03 - [分支结构](./Day01-15/Day03/分支结构.md) +#### Day03 - [分支结构](./Day01-15/03.分支结构.md) - 分支结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图 - if语句 - 简单的if / if-else结构 / if-elif-else结构 / 嵌套的if - 应用案例 - 用户身份验证 / 英制单位与公制单位互换 / 掷骰子决定做什么 / 百分制成绩转等级制 / 分段函数求值 / 输入三条边的长度如果能构成三角形就计算周长和面积 -#### Day04 - [循环结构](./Day01-15/Day04/循环结构.md) +#### Day04 - [循环结构](./Day01-15/04.循环结构.md) - 循环结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图 - while循环 - 基本结构 / break语句 / continue语句 - for循环 - 基本结构 / range类型 / 循环中的分支结构 / 嵌套的循环 / 提前结束程序 - 应用案例 - 1~100求和 / 判断素数 / 猜数字游戏 / 打印九九表 / 打印三角形图案 / 猴子吃桃 / 百钱百鸡 -#### Day05 - [总结和练习](./Day01-15/Day05/总结和练习.md) +#### Day05 - [构造程序逻辑](./Day01-15/05.构造程序逻辑.md) - 基础练习 - 水仙花数 / 完美数 / 五人分鱼 / Fibonacci数列 / 回文素数 - 综合练习 - Craps赌博游戏 -#### Day06 - [函数和模块的使用](./Day01-15/Day06/函数和模块的使用.md) +#### Day06 - [函数和模块的使用](./Day01-15/06.函数和模块的使用.md) - 函数的作用 - 代码的坏味道 / 用函数封装功能模块 - 定义函数 - def语句 / 函数名 / 参数列表 / return语句 / 调用自定义函数 @@ -95,7 +97,7 @@ - 作用域问题 - 局部作用域 / 嵌套作用域 / 全局作用域 / 内置作用域 / 和作用域相关的关键字 - 用模块管理函数 - 模块的概念 / 用自定义模块管理函数 / 命名冲突的时候会怎样(同一个模块和不同的模块) -#### Day07 - [字符串和常用数据结构](./Day01-15/Day07/字符串和常用数据结构.md) +#### Day07 - [字符串和常用数据结构](./Day01-15/07.字符串和常用数据结构.md) - 字符串的使用 - 计算长度 / 下标运算 / 切片 / 常用方法 - 列表基本用法 - 定义列表 / 用下表访问元素 / 下标越界 / 添加元素 / 删除元素 / 修改元素 / 切片 / 循环遍历 @@ -109,7 +111,7 @@ - 基础练习 - 跑马灯效果 / 列表找最大元素 / 统计考试成绩的平均分 / Fibonacci数列 / 杨辉三角 - 综合案例 - 双色球选号 / 井字棋 -#### Day08 - [面向对象编程基础](./Day01-15/Day08/面向对象编程基础.md) +#### Day08 - [面向对象编程基础](./Day01-15/08.面向对象编程基础.md) - 类和对象 - 什么是类 / 什么是对象 / 面向对象其他相关概念 - 定义类 - 基本结构 / 属性和方法 / 构造器 / 析构器 / \_\_str\_\_方法 @@ -117,7 +119,7 @@ - 面向对象的四大支柱 - 抽象 / 封装 / 继承 / 多态 - 基础练习 - 定义学生类 / 定义时钟类 / 定义图形类 / 定义汽车类 -#### Day09 - [面向对象进阶](./Day01-15/Day09/面向对象进阶.md) +#### Day09 - [面向对象进阶](./Day01-15/09.面向对象进阶.md) - 属性 - 类属性 / 实例属性 / 属性访问器 / 属性修改器 / 属性删除器 / 使用\_\_slots\_\_ - 类中的方法 - 实例方法 / 类方法 / 静态方法 @@ -126,54 +128,49 @@ - 继承和多态 - 什么是继承 / 继承的语法 / 调用父类方法 / 方法重写 / 类型判定 / 多重继承 / 菱形继承(钻石继承)和C3算法 - 综合案例 - 工资结算系统 / 图书自动折扣系统 / 自定义分数类 -#### Day10 - [图形用户界面和游戏开发](./Day01-15/Day10/图形用户界面和游戏开发.md) +#### Day10 - [图形用户界面和游戏开发](./Day01-15/10.图形用户界面和游戏开发.md) - 使用tkinter开发GUI - 使用pygame三方库开发游戏应用 - “大球吃小球”游戏 -#### Day11 - [文件和异常](./Day01-15/Day11/文件和异常.md) +#### Day11 - [文件和异常](./Day01-15/11.文件和异常.md) - 读文件 - 读取整个文件 / 逐行读取 / 文件路径 - 写文件 - 覆盖写入 / 追加写入 / 文本文件 / 二进制文件 - 异常处理 - 异常机制的重要性 / try-except代码块 / else代码块 / finally代码块 / 内置异常类型 / 异常栈 / raise语句 - 数据持久化 - CSV文件概述 / csv模块的应用 / JSON数据格式 / json模块的应用 -- 综合案例 - 歌词解析 -#### Day12 - [字符串和正则表达式](./Day01-15/Day12/字符串和正则表达式.md) +#### Day12 - [字符串和正则表达式](./Day01-15/12.字符串和正则表达式.md) -- 字符串高级操作 - 转义字符 \ 原始字符串 \ 多行字符串 \ in和 not in运算符 \ is开头的方法 \ join和split方法 \ strip相关方法 \ pyperclip模块 \ 不变字符串和可变字符串 \ StringIO的使用 -- 正则表达式入门 - 正则表达式的作用 \ 元字符 \ 转义 \ 量词 \ 分组 \ 零宽断言 \贪婪匹配与惰性匹配懒惰 \ 使用re模块实现正则表达式操作(匹配、搜索、替换、捕获) -- 使用正则表达式 - re模块 \ compile函数 \ group和groups方法 \ match方法 \ search方法 \ findall和finditer方法 \ sub和subn方法 \ split方法 +- 字符串高级操作 - 转义字符 / 原始字符串 / 多行字符串 / in和 not in运算符 / is开头的方法 / join和split方法 / strip相关方法 / pyperclip模块 / 不变字符串和可变字符串 / StringIO的使用 +- 正则表达式入门 - 正则表达式的作用 / 元字符 / 转义 / 量词 / 分组 / 零宽断言 /贪婪匹配与惰性匹配懒惰 / 使用re模块实现正则表达式操作(匹配、搜索、替换、捕获) +- 使用正则表达式 - re模块 / compile函数 / group和groups方法 / match方法 / search方法 / findall和finditer方法 / sub和subn方法 / split方法 - 应用案例 - 使用正则表达式验证输入的字符串 -#### Day13 - [进程和线程](./Day01-15/Day13/进程和线程.md) +#### Day13 - [进程和线程](./Day01-15/13.进程和线程.md) - 进程和线程的概念 - 什么是进程 / 什么是线程 / 多线程的应用场景 - 使用进程 - fork函数 / multiprocessing模块 / 进程池 / 进程间通信 - 使用线程 - thread模块 / threading模块 / Thread类 / Lock类 / Condition类 / 线程池 -#### Day14-A - [网络编程入门](./Day01-15/Day14-A/网络编程入门.md) +#### Day14 - [网络编程入门和网络应用开发](./Day01-15/14.网络编程入门和网络应用开发.md) - 计算机网络基础 - 计算机网络发展史 / “TCP-IP”模型 / IP地址 / 端口 / 协议 / 其他相关概念 -- 网络应用架构 - “客户端-服务器”架构 / “浏览器-服务器”架构 +- 网络应用模式 - “客户端-服务器”模式 / “浏览器-服务器”模式 +- 基于HTTP协议访问网络资源 - 网络API概述 / 访问URL / requests模块 / 解析JSON格式数据 - Python网络编程 - 套接字的概念 / socket模块 / socket函数 / 创建TCP服务器 / 创建TCP客户端 / 创建UDP服务器 / 创建UDP客户端 / SocketServer模块 - -#### Day14-B - [网络应用开发](./Day01-15/Day14-B/网络应用开发.md) - -- 访问网络API - 网络API概述 / 访问URL / requests模块 / 解析JSON格式数据 -- 文件传输 - FTP协议 / ftplib模块 / 交互式FTP应用 - 电子邮件 - SMTP协议 / POP3协议 / IMAP协议 / smtplib模块 / poplib模块 / imaplib模块 -- 短信服务 - twilio模块 / 国内的短信服务 +- 短信服务 - 调用短信服务网关 -#### Day15 - [图像和文档处理](./Day01-15/Day15/图像和办公文档处理.md) +#### Day15 - [图像和文档处理](./Day01-15/15.图像和办公文档处理.md) - 用Pillow处理图片 - 图片读写 / 图片合成 / 几何变换 / 色彩转换 / 滤镜效果 - 读写Word文档 - 文本内容的处理 / 段落 / 页眉和页脚 / 样式的处理 - 读写Excel文件 - xlrd模块 / xlwt模块 - 生成PDF文件 - pypdf2模块 / reportlab模块 -### Day16~Day20 - [Python语言进阶 ](./Day16-20/Python语言进阶.md) +### Day16~Day20 - [Python语言进阶 ](./Day16-20/16.Python语言进阶.md) - 常用数据结构 - 函数的高级用法 - “一等公民” / 高阶函数 / Lambda函数 / 作用域和闭包 / 装饰器 @@ -181,7 +178,7 @@ - 迭代器和生成器 - 相关魔术方法 / 创建生成器的两种方式 / - 并发和异步编程 - 多线程 / 多进程 / 异步IO / async和await -### Day21~30 - [Web前端入门](./Day21-30/Web前端概述.md) +### Day21~30 - [Web前端入门](./Day21-30/21.Web前端概述.md) - 用HTML标签承载页面内容 - 用CSS渲染页面 @@ -191,7 +188,7 @@ - Element的使用 - Bootstrap的使用 -### Day31~35 - [玩转Linux操作系统](./Day31-35/玩转Linux操作系统.md) +### Day31~35 - [玩转Linux操作系统](./Day31-35/31.玩转Linux操作系统.md) - 操作系统发展史和Linux概述 - Linux基础命令 @@ -205,7 +202,7 @@ ### Day36~40 - [数据库基础和进阶](./Day36-40) -- [关系型数据库MySQL](./Day36-40/关系型数据库MySQL.md) +- [关系型数据库MySQL](./Day36-40/36.关系型数据库MySQL.md) - 关系型数据库概述 - MySQL的安装和使用 - SQL的使用 @@ -217,21 +214,21 @@ - 数据完整性 - 数据一致性 - 在Python中操作MySQL -- [NoSQL入门](./Day36-40/NoSQL入门.md) +- [NoSQL入门](./Day36-40/39.NoSQL入门.md) - NoSQL概述 - Redis概述 - Mongo概述 ### Day41~55 - [实战Django](./Day41-55) -#### Day41 - [快速上手](./Day41-55/01.快速上手.md) +#### Day41 - [快速上手](./Day41-55/41.快速上手.md) - Web应用工作原理和HTTP协议 - Django框架概述 - 5分钟快速上手 - 使用视图模板 -#### Day42 - [深入模型](./Day41-55/02.深入模型.md) +#### Day42 - [深入模型](./Day41-55/42.深入模型.md) - 关系型数据库配置 - 管理后台的使用 @@ -239,56 +236,50 @@ - Django模型最佳实践 - 模型定义参考 -#### Day43 - [静态资源和Ajax请求](./Day41-55/03.静态资源和Ajax请求.md) +#### Day43 - [静态资源和Ajax请求](./Day41-55/43.静态资源和Ajax请求.md) - 加载静态资源 - 用Ajax请求获取数据 -#### Day44 - [表单的应用](./Day41-55/04.表单的应用.md) +#### Day44 - [表单的应用](./Day41-55/44.表单的应用.md) - 表单和表单控件 - 跨站请求伪造和CSRF令牌 - Form和ModelForm - 表单验证 -#### Day45 - [Cookie和Session](./Day41-55/05.Cookie和Session.md) +#### Day45 - [Cookie和Session](./Day41-55/45.Cookie和Session.md) - 实现用户跟踪 - cookie和session的关系 - Django框架对session的支持 - 视图函数中的cookie读写操作 -#### Day46 - [中间件的应用](./Day41-55/06.中间件的应用.md) - -- 什么是中间件 -- Django框架内置的中间件 -- 自定义中间件及其应用场景 - -#### Day47 - [日志和调试](./Day41-55/07.日志和调试.md) - -- 配置日志 -- 配置和使用Django-Debug-Toolbar - -#### Day48 - [文件上传和富文本编辑](./Day41-55/08.文件上传.md) - -- 文件上传表单控件和图片文件预览 -- 服务器端如何处理上传的文件 -- 富文本编辑器概述 -- wangEditor的使用 - -#### Day49 - [文件下载和报表](./Day41-55/09.文件下载和报表.md) +#### Day46 - [报表和日志](./Day41-55/46.报表和日志.md) - 通过HttpResponse修改响应头 - 使用StreamingHttpResponse处理大文件 - 使用xlwt生成Excel报表 - 使用reportlab生成PDF报表 - 使用ECharts生成前端图表 +- 配置日志和Django-Debug-Toolbar -#### Day50 - [RESTful架构和DRF入门](./Day41-55/10.RESTful架构和DRF入门.md) +#### Day47 - [中间件的应用](./Day41-55/47.中间件的应用.md) -#### Day51 - [RESTful架构和DRF进阶](./Day41-55/11.RESTful架构和DRF进阶.md) +- 什么是中间件 +- Django框架内置的中间件 +- 自定义中间件及其应用场景 -#### Day52 - [使用缓存](./Day41-55/12.使用缓存.md) +#### Day48 - [前后端分离开发入门](./Day41-55/48.前后端分离开发入门.md) + +- 返回JSON格式的数据 +- 用Vue.js渲染页面 + +#### Day49 - [RESTful架构和DRF入门](./Day41-55/49.RESTful架构和DRF入门.md) + +#### Day50 - [RESTful架构和DRF进阶](./Day41-55/50.RESTful架构和DRF进阶.md) + +#### Day51 - [使用缓存](./Day41-55/51.使用缓存.md) - 网站优化第一定律 @@ -297,20 +288,27 @@ - 使用装饰器实现页面缓存 - 为数据接口提供缓存服务 -#### Day53 - [短信和邮件](./Day41-55/13.短信和邮件.md) +#### Day52 - [文件上传和富文本编辑](./Day41-55/52.文件上传.md) + +- 文件上传表单控件和图片文件预览 +- 服务器端如何处理上传的文件 +- 富文本编辑器概述 +- wangEditor的使用 + +#### Day53 - [短信和邮件](./Day41-55/53.短信和邮件.md) - 常用短信网关平台介绍 - 使用螺丝帽发送短信 - Django框架对邮件服务的支持 -#### Day54 - [异步任务和定时任务](./Day41-55/14.异步任务和定时任务.md) +#### Day54 - [异步任务和定时任务](./Day41-55/54.异步任务和定时任务.md) - 网站优化第二定律 - 配置消息队列服务 - 在项目中使用celery实现任务异步化 - 在项目中使用celery实现定时任务 -#### Day55 - [单元测试和项目上线](./Day41-55/15.单元测试和项目上线.md) +#### Day55 - [单元测试和项目上线](./Day41-55/55.单元测试和项目上线.md) - Python中的单元测试 - Django框架对单元测试的支持 @@ -322,42 +320,42 @@ ### Day56~60 - [实战Flask](./Day56-65) -#### Day56 - [Flask入门](./Day56-60/01.Flask入门.md) +#### Day56 - [Flask入门](./Day56-60/56.Flask入门.md) -#### Day57 - [模板的使用](./Day56-60/02.模板的使用.md) +#### Day57 - [模板的使用](./Day56-60/57.模板的使用.md) -#### Day58 - [表单的处理](./Day56-60/03.表单的处理.md) +#### Day58 - [表单的处理](./Day56-60/58.表单的处理.md) -#### Day59 - [数据库操作](./Day56-60/04.数据库操作.md) +#### Day59 - [数据库操作](./Day56-60/59.数据库操作.md) -#### Day60 - [项目实战](./Day56-60/05.项目实战.md) +#### Day60 - [项目实战](./Day56-60/60.项目实战.md) ### Day61~65 - [实战Tornado](./Day61-65) -#### Day61 - [预备知识](./Day61-65/01.预备知识.md) +#### Day61 - [预备知识](./Day61-65/61.预备知识.md) - 并发编程 - I/O模式和事件驱动 -#### Day62 - [Tornado入门](./Day61-65/02.Tornado入门.md) +#### Day62 - [Tornado入门](./Day61-65/62.Tornado入门.md) - Tornado概述 - 5分钟上手Tornado - 路由解析 - 请求处理器 -#### Day63 - [异步化](./Day61-65/03.异步化.md) +#### Day63 - [异步化](./Day61-65/63.异步化.md) - aiomysql和aioredis的使用 -#### Day64 - [WebSocket的应用](./Day61-65/04.WebSocket的应用.md) +#### Day64 - [WebSocket的应用](./Day61-65/64.WebSocket的应用.md) - WebSocket简介 - WebSocket服务器端编程 - WebSocket客户端编程 - 项目:Web聊天室 -#### Day65 - [项目实战](./Day61-65/05.项目实战.md) +#### Day65 - [项目实战](./Day61-65/65.项目实战.md) - 前后端分离开发和接口文档的撰写 - 使用Vue.js实现前端渲染 @@ -366,61 +364,100 @@ ### Day66~75 - [爬虫开发](./Day66-75) -#### Day66 - [网络爬虫和相关工具](./Day66-75/01.网络爬虫和相关工具.md) +#### Day66 - [网络爬虫和相关工具](./Day66-75/66.网络爬虫和相关工具.md) -#### Day67 - [数据采集和解析](./Day66-75/02.数据采集和解析.md) +- 网络爬虫的概念及其应用领域 +- 网络爬虫的合法性探讨 +- 开发网络爬虫的相关工具 +- 一个爬虫程序的构成 -#### Day68 - [存储数据](./Day66-75/03.存储数据.md) +#### Day67 - [数据采集和解析](./Day66-75/67.数据采集和解析.md) -#### Day69 - [并发下载](./Day66-75/04.并发下载.md) +- 数据采集的标准和三方库 +- 页面解析的三种方式:正则表达式解析 / XPath解析 / CSS选择器解析 -#### Day70 - [解析动态内容](./Day66-75/05.解析动态内容.md) +#### Day68 - [存储数据](./Day66-75/68.存储数据.md) -#### Day71 - [表单交互和验证码处理](./Day66-75/06.表单交互和验证码处理.md) +- 如何存储海量数据 +- 实现数据的缓存 -#### Day72 - [Scrapy入门](./Day66-75/07.Scrapy入门.md) +#### Day69 - [并发下载](./Day66-75/69.并发下载.md) -#### Day73 - [Scrapy高级应用](./Day66-75/08.Scrapy高级应用.md) +- 多线程和多进程 +- 异步I/O和协程 +- async和await关键字的使用 +- 三方库aiohttp的应用 -#### Day74 - [Scrapy分布式实现](./Day66-75/09.Scrapy分布式实现.md) +#### Day70 - [解析动态内容](./Day66-75/70.解析动态内容.md) -#### Day75 - [爬虫项目实战](./Day66-75/10.爬虫项目实战.md) +- JavaScript逆向工程 +- 使用Selenium获取动态内容 + +#### Day71 - [表单交互和验证码处理](./Day66-75/71.表单交互和验证码处理.md) + +- 自动提交表单 +- Cookie池的应用 +- 验证码处理 + +#### Day72 - [Scrapy入门](./Day66-75/72.Scrapy入门.md) + +- Scrapy爬虫框架概述 +- 安装和使用Scrapy + +#### Day73 - [Scrapy高级应用](./Day66-75/73.Scrapy高级应用.md) + +- Spider的用法 +- 中间件的应用:下载中间件 / 蜘蛛中间件 +- Scrapy对接Selenium抓取动态内容 +- Scrapy部署到Docker + +#### Day74 - [Scrapy分布式实现](./Day66-75/74.Scrapy分布式实现.md) + +- 分布式爬虫的原理 +- Scrapy分布式实现 +- 使用Scrapyd实现分布式部署 + +#### Day75 - [爬虫项目实战](./Day66-75/75.爬虫项目实战.md) + +- 爬取招聘网站数据 +- 爬取房地产行业数据 +- 爬取二手车交易平台数据 ### Day76~90 - [数据处理和机器学习](./Day76-90) -#### Day76 - [机器学习基础](./Day76-90/01.机器学习基础.md) +#### Day76 - [机器学习基础](./Day76-90/76.机器学习基础.md) -#### Day77 - [Pandas的应用](./Day76-90/02.Pandas的应用.md) +#### Day77 - [Pandas的应用](./Day76-90/77.Pandas的应用.md) -#### Day78 - [NumPy和SciPy的应用](./Day76-90/03.NumPy和SciPy的应用) +#### Day78 - [NumPy和SciPy的应用](./Day76-90/78.NumPy和SciPy的应用) -#### Day79 - [Matplotlib和数据可视化](./Day76-90/04.Matplotlib和数据可视化) +#### Day79 - [Matplotlib和数据可视化](./Day76-90/79.Matplotlib和数据可视化) -#### Day80 - [k最近邻(KNN)分类](./Day76-90/05.k最近邻分类.md) +#### Day80 - [k最近邻(KNN)分类](./Day76-90/80.k最近邻分类.md) -#### Day81 - [决策树](./Day76-90/06.决策树.md) +#### Day81 - [决策树](./Day76-90/81.决策树.md) -#### Day82 - [贝叶斯分类](./Day76-90/07.贝叶斯分类.md) +#### Day82 - [贝叶斯分类](./Day76-90/82.贝叶斯分类.md) -#### Day83 - [支持向量机(SVM)](./Day76-90/08.支持向量机.md) +#### Day83 - [支持向量机(SVM)](./Day76-90/83.支持向量机.md) -#### Day84 - [K-均值聚类](./Day76-90/09.K-均值聚类.md) +#### Day84 - [K-均值聚类](./Day76-90/84.K-均值聚类.md) -#### Day85 - [回归分析](./Day76-90/10.回归分析.md) +#### Day85 - [回归分析](./Day76-90/85.回归分析.md) -#### Day86 - [大数据分析入门](./Day76-90/11.大数据分析入门.md) +#### Day86 - [大数据分析入门](./Day76-90/86.大数据分析入门.md) -#### Day87 - [大数据分析进阶](./Day76-90/12.大数据分析进阶.md) +#### Day87 - [大数据分析进阶](./Day76-90/87.大数据分析进阶.md) -#### Day88 - [Tensorflow入门](./Day76-90/13.Tensorflow入门.md) +#### Day88 - [Tensorflow入门](./Day76-90/88.Tensorflow入门.md) -#### Day89 - [Tensorflow实战](./Day76-90/14.Tensorflow实战.md) +#### Day89 - [Tensorflow实战](./Day76-90/89.Tensorflow实战.md) -#### Day90 - [推荐系统](./Day76-90/15.推荐系统.md) +#### Day90 - [推荐系统](./Day76-90/90.推荐系统.md) ### Day91~100 - [团队项目开发](./Day91-100) -#### 第91天:团队开发和项目选题 +#### 第91天:[团队项目开发准备](./Day91-100/91.团队项目开发准备.md) 1. 软件过程模型 - 经典过程模型(瀑布模型) @@ -509,36 +546,37 @@ | | 查看评论 | 白元芳 | 正在进行 | 20% | 4 | 2018/8/7 | | 2018/8/7 | | 需要进行代码审查 | | | 评论投票 | 白元芳 | 等待 | 0% | 4 | 2018/8/8 | | 2018/8/8 | | | -#### 第92天:数据库设计和OOAD +4. OOAD和数据库设计 -##### 概念模型和正向工程 + - UML(统一建模语言)的类图 -1. UML(统一建模语言)的类图 + ![uml](./res/uml-class-diagram.png) - ![uml](./res/uml-class-diagram.png) + - 通过模型创建表(正向工程) -2. 通过模型创建表(正向工程) + ```Shell + python manage.py makemigrations app + python manage.py migrate + ``` - ```Shell - python manage.py makemigrations app - python manage.py migrate - ``` + - 使用PowerDesigner绘制物理模型图。 -##### 物理模型和反向工程 + ![](./res/power-designer-pdm.png) -1. PowerDesigner + - 通过数据表创建模型(反向工程) - ![](./res/power-designer-pdm.png) + ```Shell + python manage.py inspectdb > app/models.py + ``` -2. 通过数据表创建模型(反向工程) - ```Shell - python manage.py inspectdb > app/models.py - ``` +#### 第92天:[Docker的使用](./Day91-100/92.Docker在项目中的应用.md) -#### 第93-98天:使用Django开发项目 +#### 第93天:[MySQL性能优化](./Day91-100/93.MySQL性能优化.md) -> 说明:具体内容请参考[《Django知识点概述》](Day91-100/Django知识点概述.md) +#### 第94天:[网络API接口设计](./Day91-100/94.网络API接口设计.md) + +#### 第95天:[使用Django开发商业项目](./Day91-100/95.使用Django开发商业项 目.md) ##### 项目开发中的公共问题 @@ -554,7 +592,7 @@ - [理解RESTful架构](http://www.ruanyifeng.com/blog/2011/09/restful.html) - [RESTful API设计指南](http://www.ruanyifeng.com/blog/2014/05/restful_api.html) - [RESTful API最佳实践](http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html) -2. API接口文档的撰写([《网络API接口设计》](Day91-100/网络API接口设计.md)) +2. API接口文档的撰写 - [RAP2](http://rap2.taobao.org/) - [YAPI](http://yapi.demo.qunar.com/) 3. [django-REST-framework](https://www.django-rest-framework.org/)的应用 @@ -564,7 +602,7 @@ 1. 使用缓存缓解数据库压力 - Redis 2. 使用消息队列做解耦合和削峰 - Celery + RabbitMQ -#### 第99-100天:测试和部署 +#### 第96天:[软件测试和自动化测试](Day91-100/96.软件测试和自动化测试.md) ##### 单元测试 @@ -574,8 +612,6 @@ ##### 项目部署 -> 说明:请参考[《项目部署上线指南》](Day91-100/项目部署上线指南.md)。 - 1. 部署前的准备工作 - 关键设置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 缓存 / 数据库) - HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE @@ -588,12 +624,10 @@ - uWSGI支持异构部署。 - 由于Nginx本身支持uWSGI,在线上一般都将Nginx和uWSGI捆绑在一起部署,而且uWSGI属于功能齐全且高度定制的WSGI中间件。 - 在性能上,Gunicorn和uWSGI其实表现相当。 -5. 虚拟化技术(Docker) +5. 使用虚拟化技术(Docker)部署测试环境和生产环境 ##### 性能测试 -> 说明:具体内容请参考[《Django知识点概述》](Day91-100/Django知识点概述.md)。 - 1. AB的使用 2. SQLslap的使用 3. sysbench的使用 @@ -607,33 +641,23 @@ - Selenium Remote Control 3. 测试工具Robot Framework介绍 -##### 项目性能调优 +#### 第97天:[电商网站技术要点剖析](./Day91-100/97.电商网站技术要点剖析.md) -1. 数据库性能调优 - 请参考[《MySQL相关知识》](Day91-100/MySQL相关知识.md) - - 软硬件优化 - - - SQL优化 - - - 架构优化 - - - 分表分库 - - - 主从复制,读写分离 - - 集群架构 +#### 第98天:[项目部署上线和性能调优](./Day91-100/98.项目部署上线和性能调优.md) +1. MySQL数据库调优 2. Web服务器性能优化 - - Nginx负载均衡配置 - - Keepalived实现高可用 - 3. 代码性能调优 - - 多线程 - 异步化 - 4. 静态资源访问优化 - - 云存储 - - CDN + - 云存储 + - CDN + +#### 第99天:[面试中的公共问题](./Day91-100/99.面试中的公共问题.md) + +#### 第100天:[英语面试](./Day91-100/100.英语面试.md) > 致谢:感谢的我的同事古晔、张旭、肖世荣、王海飞、荣佳伟、路丰坤等在技术上给予的指导和帮助。 \ No newline at end of file diff --git a/res/create-new-repo.png b/res/create-new-repo.png new file mode 100644 index 0000000..d2f070f Binary files /dev/null and b/res/create-new-repo.png differ diff --git a/res/dns-configuration.png b/res/dns-configuration.png new file mode 100644 index 0000000..eaa8ec3 Binary files /dev/null and b/res/dns-configuration.png differ diff --git a/res/donation.png b/res/donation.png new file mode 100644 index 0000000..9c76603 Binary files /dev/null and b/res/donation.png differ diff --git a/res/hexo-default-index.png b/res/hexo-default-index.png new file mode 100644 index 0000000..51c4ae8 Binary files /dev/null and b/res/hexo-default-index.png differ diff --git a/res/python_100_days_qq_group.png b/res/python_100_days_qq_group.png deleted file mode 100644 index b858c8e..0000000 Binary files a/res/python_100_days_qq_group.png and /dev/null differ diff --git a/res/python_qq_group.png b/res/python_qq_group.png new file mode 100644 index 0000000..b496ccb Binary files /dev/null and b/res/python_qq_group.png differ diff --git a/res/wanwang.png b/res/wanwang.png new file mode 100644 index 0000000..59d988d Binary files /dev/null and b/res/wanwang.png differ diff --git a/使用Hexo搭建自己的博客.md b/使用Hexo搭建自己的博客.md new file mode 100644 index 0000000..0527b47 --- /dev/null +++ b/使用Hexo搭建自己的博客.md @@ -0,0 +1,352 @@ +## 使用Hexo搭建自己的博客 + +对于一个程序员来说,搭建一个属于自己的博客平台是非常有意义的事情。首先,博客可以记录自己的成长历程,也是对自己一段时间学习和工作的总结和沉淀;其他,通过博客可以营销自己,增强自己在互联网或行业内的影响力,为将来更好的职业生涯打一个坚实的基础。前几年有一本名为《软技能 - 代码之外的生存指南》的畅销书,我记得书中有这么一段话:“流行乐队的音乐才华可能并不比夜店驻场乐队高多少,他们为什么就可以在全世界巡回演出,创造一个又一个白金记录?……你的营销做得越好,你的才华才能表现得淋漓尽致。” + +这里顺便啰嗦两句,在互联网如此发达的今天,我们应该如何营销自己呢?自我营销首先要从打造个人品牌做起,对于程序员来说,最容易去做好的一件事情还是搭建自己的博客。博客相当于是你在互联网上的一个基地,尤其是当你拥有了属于自己的独立博客后,你可以做很多自己想做的事情,既可以传达自己的思想,又可以提升自己的影响力,当然如果你的博客经营得非常好,你可以从中获利。当然,除了博客,直播、视频网站、投稿、写书、技术活动都是可选的自我营销方式。当然,做自我营销也需要持之以恒,三天打鱼两天晒网是很难有什么收获的。 + +### Hexo概述 + +Hexo是一个快速、简洁且高效的博客框架,它能够将[Markdown格式]()的文档渲染成漂亮的网页,这样我们就可以在很短的时间内迅速的创建出网站的静态内容,而Markdown格式对程序员来说相信并不陌生。要想使用Hexo来搭建自己的博客,我实在想不出有什么教程比[官方文档]()更好,强烈建议大家阅读官方文档来了解Hexo,下面我只做一个简要的使用说明。 + +> 说明:**Markdown**是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,同时也对图片、图表、数学公式提供了支持,可以用来书写电子书、软件文档等,同时也可以非常方便的转换为HTML页面或者是PDF文档。 + +要使用Hexo,首先得确保计算机上已经安装了[node.js]()环境和[git]()环境,前者是一个能够在服务器端运行JavaScript代码的环境,后者是版本控制工具。安装node.js主要是为了使用它的包管理工具npm,所以不需要先系统的学习node.js的知识;而安装git是为了利用版本控制系统克隆代码已经将博客项目托管到三方平台,如果想学习git,最好的资料是官方网站上的[*Git Pro*]()和[《Git权威指南》]()。安装完成后,我们可以通过下面的命令来确认node.js环境以及它的包管理工具是否安装成功。 + +```Shell +node --version +npm --version +``` + +可以通过下面的命令来检查是否安装了git环境。 + +```Shell +git --version +``` + +我们可以使用npm来安装Hexo,npm是node.js的包管理工具,跟Python的pip工具作用一样,可以用它来安装依赖库和三方工具。在第一次使用npm的时候,我们可以先将npm的下载源更换为国内的淘宝镜像,这样下载的速度会有非常显著的提升。 + +```Shell +npm config set registry https://registry.npm.taobao.org +``` + +接下来我们就通过npm来安装Hexo,命令如下所示。 + +```Shell +npm install -g hexo-cli +``` + +安装成功后,就可以使用Hexo来创建属于自己的博客啦。 + +### 搭建博客 + +> 说明:以下内容基本上来自于Hexo的官方文档,推荐大家阅读官方文档。 + +我们先通过下面的命令来创建一个专门保存博客项目的文件夹,该命令会从github上克隆博客项目和默认的主题。 + +```Shell +hexo init blog +``` + +接下来我们进入这个文件夹并查看目录结构。 + +```Shell +cd blog +ls -lR +``` + +``` +total 232 +-rw-r--r-- 1 Hao staff 1768 8 8 01:15 _config.yml +drwxr-xr-x 274 Hao staff 8768 8 8 01:19 node_modules +-rw-r--r-- 1 Hao staff 109972 8 8 01:19 package-lock.json +-rw-r--r-- 1 Hao staff 443 8 8 01:15 package.json +drwxr-xr-x 5 Hao staff 160 8 8 01:15 scaffolds +drwxr-xr-x 3 Hao staff 96 8 8 01:15 source +drwxr-xr-x 3 Hao staff 96 8 8 01:15 themes +``` + +> 说明:Windows环境命令行提示符中可以使用dir命令查看目录结构。需要说明的是:`_config.yml`是博客项目的配置文件;`package.json`是项目的依赖项文件;`scaffolds`保存了Markdown文件的模板,也就是向新添加的Markdown文件中默认填充的内容;`source`目录下有一个名为`_post`的目录,我们稍后可以将编写好的Markdown文件放到该目录,这样就可以利用Hexo将Markdown文件处理成博客的静态页面,生成的静态页面将置于`public`目录下;`themes`文件夹保存了博客使用的主题。 + +然后我们通过下面的命令来安装项目所需的依赖项(`package.json`文件指明了这些依赖项)。 + +```Shell +npm install +``` + +做完上述的操作以后,我们已经可以直接通过下面的命令来生成博客。 + +```Shell +hexo generate +``` + +该命令也可以缩写为: + +```Shell +hexo g +``` + +之前我们在安装依赖项的时候包括了一个名为`hexo-server`的依赖项,该依赖项可以帮助我们启动一个基于node.js的服务器来运行我们的博客项目,使用下面的命令即可启动服务器。 + +```Shell +hexo server +``` + +该命令也可以缩写为: + +```Shell +hexo s +``` + +``` +INFO Start processing +INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop. +``` + +从运行命令的提示信息可以看到,服务器已经运转起并使用了4000端口,可以通过`Ctrl+C`来终止服务器的运行。如果要修改服务器使用的端口,可以在启动服务器的时候加上`-p`参数;如果希望服务器启动后,自动打开默认的浏览器访问服务器,可以使用`-o`参数,如下所示。 + +```Shell +hexo s -p 8000 -o +``` + +至此,我们已经可以看到Hexo在没有配置也没有加入自己的Markdown文件下生成的首页,如下图所示。 + +![](./res/hexo-default-index.png) + +接下来我们修改博客的配置文件。 + +```Shell +vim _config.yml +``` + +```YAML +# Hexo Configuration +## Docs: https://hexo.io/docs/configuration.html +## Source: https://github.com/hexojs/hexo/ + +# Site +title: 骆昊的技术专栏 +subtitle: 传道、授业、解惑,分享知识带来的快乐 +description: +keywords: +author: 骆昊 +language: zh +timezone: + +# URL +## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' +url: http://jackfrued.top +root: / +permalink: :year/:month/:day/:title/ +permalink_defaults: + +# Directory +source_dir: source +public_dir: public +tag_dir: tags +archive_dir: archives +category_dir: categories +code_dir: downloads/code +i18n_dir: :lang +skip_render: + +# Writing +new_post_name: :title.md # File name of new posts +default_layout: post +titlecase: false # Transform title into titlecase +external_link: true # Open external links in new tab +filename_case: 0 +render_drafts: false +post_asset_folder: false +relative_link: false +future: true +highlight: + enable: true + line_number: true + auto_detect: false + tab_replace: + +# Home page setting +# path: Root path for your blogs index page. (default = '') +# per_page: Posts displayed per page. (0 = disable pagination) +# order_by: Posts order. (Order by date descending by default) +index_generator: + path: '' + per_page: 10 + order_by: -date + +# Category & Tag +default_category: uncategorized +category_map: +tag_map: + +# Date / Time format +## Hexo uses Moment.js to parse and display date +## You can customize the date format as defined in +## http://momentjs.com/docs/#/displaying/format/ +date_format: YYYY-MM-DD +time_format: HH:mm:ss + +# Pagination +## Set per_page to 0 to disable pagination +per_page: 10 +pagination_dir: page + +# Extensions +## Plugins: https://hexo.io/plugins/ +## Themes: https://hexo.io/themes/ +theme: landscape + +# Deployment +## Docs: https://hexo.io/docs/deployment.html +deploy: + type: +``` + +下面是YAML文件中相关选项的说明。 + +| 参数 | 描述 | +| ------------------ | ------------------------------------------------------------ | +| `title` | 网站的标题 | +| `subtitle` | 网站的副标题 | +| `description` | 网站的描述 | +| `keywords` | 网站的关键词,可以用逗号分隔多个关键词 | +| `author` | 自己的名字 | +| `language` | 网站使用的语言 | +| `timezone` | 网站使用时区,默认使用电脑上设置的时区 | +| `url` | 网址 | +| `root` | 网站根目录 | +| `source_dir` | 资源文件夹,这个文件夹用来存放内容,默认source目录 | +| `public_dir` | 公共文件夹,这个文件夹用于存放生成的站点文件,默认public目录 | +| `tag_dir` | 标签文件夹,默认tags目录 | +| `archive_dir` | 归档文件夹,默认archives目录 | +| `category_dir` | 分类文件夹,默认categories目录 | +| `auto_spacing` | 在中文和英文之间加入空格,默认false | +| `titlecase` | 把标题转换为首字母大写,默认false | +| `external_link` | 在新标签中打开链接,默认true | +| `relative_link` | 把链接改为与根目录的相对位址,默认false | +| `default_category` | 默认分类 | +| `date_format` | 日期格式,默认YYYY-MM-DD | +| `time_format` | 时间格式,默认HH:mm:ss | +| `per_page` | 每页显示的文章数量 ,默认值10,0表示不使用分页 | +| `pagination_dir` | 分页目录,默认为page目录 | +| `theme` | 当前主题名称 | +| `deploy` | 部署部分的设置 | + +我们将编写好的Markdown文件可以拷贝到`source/_posts`目录,我们可以在每个Markdown文件的上方添加Front-matter来对文件的布局、标题、分类、标签、发布日期等信息加以说明。所谓Front-matter,就是每个Markdown文件最上方以`---`分隔的区域,可以在Front-matter中设置以下内容。 + +| 参数 | 描述 | 默认值 | +| ------------ | -------------------- | ------------ | +| `layout` | 布局 | | +| `title` | 标题 | | +| `date` | 建立日期 | 文件建立日期 | +| `updated` | 更新日期 | 文件更新日期 | +| `comments` | 开启文章的评论功能 | true | +| `tags` | 标签(不适用于分页) | | +| `categories` | 分类(不适用于分页) | | +| `permalink` | 覆盖文章网址 | | + +例如: + +```Markdown +--- +title: Python编程惯例 +category: Python基础 +date: 2019-8-1 +--- +## Python惯例 + +“惯例”这个词指的是“习惯的做法,常规的办法,一贯的做法”,与这个词对应的英文单词叫“idiom”。由于Python跟其他很多编程语言在语法和使用上还是有比较显著的差别,因此作为一个Python开发者如果不能掌握这些惯例,就无法写出“Pythonic”的代码。下面我们总结了一些在Python开发中的惯用的代码。 + +1. 让代码既可以被导入又可以被执行。 + if __name__ == '__main__': + +2. 用下面的方式判断逻辑“真”或“假”。 + if x: + if not x: +``` + + +在完成上述工作后,我们可以通过下面的命令先清理之前生成的内容。 + +```Shell +hexo clean +``` + +接下来我们就可以用之前讲过的命令重新生成并运行博客项目。 + +```Shell +hexo generate +hexo server -p 8000 -o +``` + +### 将博客托管到GitHub + +我们可以利用GitHub网站提供的[Pages服务]()来托管我们的博客。在GitHub Pages的首页上就有一个教程指导我们如何托管自己的网站,当然第一步得在GitHub上注册一个属于自己的账号,登录成功之后才能进行后续的操作。 + +1. 根据自己的用户名创建一个仓库,仓库**一定**要取名为“用户名.github.io”。例如:我在GitHub上的用户名是jackfrued,那么我的托管博客项目的仓库一定要命名为jackfrued.github.io。 + + ![](./res/create-new-repo.png) + +2. 修改博客项目的配置文件`_config.yml`,配置使用GitHub来部署该博客项目。 + + ```Shell + vim _config.yml + ``` + + ```YAML + # 省略上面的内容 + # Deployment + ## Docs: https://hexo.io/docs/deployment.html + deploy: + type: git + repo: https://github.com/jackfrued/jackfrued.github.io.git + branch: master + ``` + + 上面的配置中,type指定了使用git进行项目部署,repo指定了部署项目的git仓库的URL,我们这里使用的是HTTPS的地址,如果之前配置过密钥对也可以使用SSH的地址,branch指定了将代码同步到仓库中的哪一个分支,通常master分支就是发布项目最终工作成果的分支,也称为项目的主分支。 + +3. 安装名为`hexo-deployer-git`的部署器插件,通过该插件就能实现一键部署。 + + ```Shell + npm install hexo-deployer-git --save + ``` + +4. 可以使用下面的命令来实现一键部署到GitHub。 + + ```Shell + hexo deploy -g + ``` + + 或者 + + ```Shell + hexo generate -d + ``` + +5. 接下来在浏览器中输入[jackfrued.github.io](https://jackfrued.github.io)就能够看到自己的博客,现在全世界的人都可以通过这个URL来访问你的博客。大家是否注意到,访问你博客的这个URL就是刚才我们给仓库起的名字,因为你在GitHub上注册的用户名是独一无二的,所以这个域名也是全世界独一无二的。 + +### 将博客绑定到自己的域名 + +虽然我们已经通过GitHub提供的域名访问到了自己的博客,但是如果我们不愿意“寄人篱下”,我们在利用GitHub Pages提供的托管服务同时,也可以将博客绑定到自己专属的域名。如果暂时还没有购买域名,我们可以在提供域名购买服务的网站(如:[万网]()、[GoDaddy]())上进行购买。 + +![](./res/wanwang.png) + +> 说明:目前国内对域名的管理日趋严格,在购买域名时需要填写一大堆的个人信息,进行实名认证后才能获得域名,这一点相信大家能够理解。 + +比如说,我现在已经购买了一个名为“jackfrued.top”的域名,如何让它跟“jackfrued.github.io”这个域名做一个绑定呢,我们可以利用[阿里云控制台]()或者[DNSPod]()来做一个域名解析服务。在域名解析平台登录成功后,可以添加或选择自己的域名来配置域名解析。点击“添加记录”按钮,创建一个类型为CNAME的域名解析,CNAME类型的解析代表将一个域名解析到另一个域名,如下图所示。 + +![](./res/dns-configuration.png) + +完成这一步后,还不能马上通过自己的域名访问到博客项目,最后需要在博客项目的`source`目录下添加一个名为CNAME的文件(请注意这个文件的名字是全大写字母的)。 + +```Shell +vim CNAME +``` + +编辑该文件的内容,如下所示。 + +``` +jackfrued.top +``` + +可以清理一下之前生成的内容,然后将项目重新生成并发布到GitHub就大功告成了!现在我们已经拥有了独立域名的博客,希望大家可以利用它做些有意义的事情(记录自己的成长历程、分享自己的工作经验、提升个人的影响力)。加油吧,程序员! \ No newline at end of file diff --git a/公开课/文档/第04次公开课-好玩的Python/code/example01.py b/公开课/文档/第04次公开课-好玩的Python/code/example01.py new file mode 100644 index 0000000..73a6585 --- /dev/null +++ b/公开课/文档/第04次公开课-好玩的Python/code/example01.py @@ -0,0 +1,11 @@ +from PIL import Image, ImageFilter + + +chiling = Image.open('resources/chiling.jpg') +width, height = chiling.size +chiling.show() +chiling.transpose(Image.FLIP_LEFT_RIGHT).show() +chiling.filter(ImageFilter.GaussianBlur(4)).show() +chiling.filter(ImageFilter.EMBOSS).show() +chiling.thumbnail((width // 4, height // 4)) +chiling.show() diff --git a/公开课/文档/第04次公开课-好玩的Python/code/resources/chiling.jpg b/公开课/文档/第04次公开课-好玩的Python/code/resources/chiling.jpg new file mode 100644 index 0000000..dafd1f4 Binary files /dev/null and b/公开课/文档/第04次公开课-好玩的Python/code/resources/chiling.jpg differ diff --git a/公开课/文档/第04次公开课-好玩的Python/code/resources/frame.jpg b/公开课/文档/第04次公开课-好玩的Python/code/resources/frame.jpg new file mode 100644 index 0000000..6a8a808 Binary files /dev/null and b/公开课/文档/第04次公开课-好玩的Python/code/resources/frame.jpg differ diff --git a/公开课/文档/第04次公开课-好玩的Python/res/requests.png b/公开课/文档/第04次公开课-好玩的Python/res/requests.png new file mode 100644 index 0000000..585f41e Binary files /dev/null and b/公开课/文档/第04次公开课-好玩的Python/res/requests.png differ diff --git a/公开课/文档/第04次公开课-好玩的Python/好玩的Python.md b/公开课/文档/第04次公开课-好玩的Python/好玩的Python.md new file mode 100644 index 0000000..1c73f9c --- /dev/null +++ b/公开课/文档/第04次公开课-好玩的Python/好玩的Python.md @@ -0,0 +1,229 @@ +## 好玩的Python + +因为下面的代码都非常简单,简单到直接使用Python的交互式环境就能完成。当然,官方Python自带的交互式环境比较难用,推荐大家使用ipython,可以使用下面的命令来安装ipython,安装成功后键入ipython命令就能进入交互式环境。 + +```Shell +pip install ipython +``` + +或 + +```Shell +pip3 install ipython +``` + +ipython最直观的优点: + +1. 可以用?或者??来获取帮助。 +2. 可以用!调用系统命令。 +3. 可以使用Tab键自动补全。 +4. 可以使用魔法指令,如:%timeit。 + +### 没有工具用代码也能P图 + +1. 安装pillow三方库。 + + PIL(Python Imaging Library)是Python平台事实上的图像处理标准库了。PIL功能非常强大,而API却非常简单易用。但是PIL仅支持到Python 2.7,而且很多年都没有人维护了,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫[Pillow](https://github.com/python-pillow/Pillow),除了支持Python 3.x还加入了很多有用且有趣的新特性。 + + ```Shell + pip install pillow + ``` + + 或 + + ```Shell + pip3 install pillow + ``` + +2. 加载图片。 + + ```Python + from PIL import Image + + chiling = Image.open('chiling.jpg') + chiling.show() + ``` + +3. 使用滤镜。 + + ```Shell + from PIL import ImageFilter + + chiling.filter(ImageFilter.EMBOSS).show() + chiling.filter(ImageFilter.CONTOUR).show() + ``` + +4. 图像剪裁和粘贴。 + + ```Python + rect = 220, 690, 265, 740 + watch = chiling.crop(rect) + watch.show() + blured_watch = watch.filter(ImageFilter.GaussianBlur(4)) + chiling.paste(blured_watch, (220, 690)) + chiling.show() + ``` + +5. 生成镜像。 + + ```Python + chiling2 = chiling.transpose(Image.FLIP_LEFT_RIGHT) + chiling2.show() + ``` + +6. 生成缩略图。 + + ```Python + width, height = chiling.size + width, height = int(width * 0.4), int(height * 0.4) + chiling.thumbnail((width, height)) + ``` + +7. 合成图片。 + + ```Python + frame = Image.open('frame.jpg') + frame.show() + frame.paste(chiling, (210, 150)) + frame.paste(chiling2, (522, 150)) + frame.show() + ``` + +上面的知识在[Python-100-Days](https://github.com/jackfrued/Python-100-Days)项目的[第15天]()中也有对应的内容。 + +### 向微信好友群发祝福视频 + +1. 安装itchat三方库。 + + [itchat]()是一个开源的微信个人号接口,使用Python调用微信从未如此简单。 + + ```Shell + pip install itchat + ``` + + 或 + + ```Shell + pip3 install itchat + ``` + +2. 登录微信。 + + ```Python + import itchat + + itchat.auto_login() + ``` + + > 说明:用自己的微信扫描屏幕上出现的二维码就完成了登录操作,登录之后才能获取自己的好友信息以及发送消息给自己的好友。 + +3. 查找自己的朋友。 + + ```Python + friends_list = itchat.get_friends(update=True) + print(len(friends_list)) + luohao = friends_list[0] + props = ['NickName', 'Signature', 'Sex'] + for prop in props: + print(luohao[prop]) + ``` + + > 说明:friends_list相当于是一个列表,列表中的第一个元素是自己。 + +4. 随机选出5个朋友,获得他们的用户名、昵称、签名。 + + ```Python + lucky_friends = random.sample(friends_list[1:], 5) + props = ['NickName', 'Signature', 'City'] + for friend in lucky_friends: + for prop in props: + print(friend[prop] or '没有此项信息') + print('-' * 80) + ``` + +5. 给朋友发送文字消息。 + + ```Python + itchat.send_msg('急需一个红包来拯救堕落的灵魂!!!', toUserName='@8e06606db03f0e28d0ff884083f727e6') + ``` + +6. 群发视频给幸运的朋友们。 + + ```Python + lucky_friends = random.sample(friends_list[1:], 5) + for friend in lucky_friends: + username = friend['UserName'] + itchat.send_video('/Users/Hao/Desktop/my_test_video.mp4', toUserName=username) + ``` + +利用itchat还能做很多事情,比如有好友给自己发了消息又撤回了,如果想查看这些被撤回的消息,itchat就可以做到(注册一个接收消息的钩子函数,请参考[CSDN上的一篇文章]());再比如,有时候我们想知道某个好友有没有把我们删除或者拉入黑名单,也可以利用itchat封装的群聊功能,非好友和黑名单用户不会被拉入群聊,通过创建群聊函数的返回值就可以判定你和指定的人之间的关系。 + +### 不用客户端查看热点新闻 + +1. 安装requests库。(点击常看[官方文档]()) + + ![](./res/requests.png) + + ```Shell + pip install requests + ``` + + 或 + + ```Shell + pip3 install requests + ``` + +2. 爬取新闻数据或者通过API接口获取新闻数据。 + + ```Python + import requests + + resp = requests.get('http://api.tianapi.com/allnews/?key=请使用自己申请的Key&col=7&num=50') + ``` + + > 说明:上面使用了天行数据提供的数据接口,需要的话可以自行去[天行数据]()的网站注册开通,调用接口的时候要填写注册成功后系统分配给你的key。 + +3. 使用反序列化将JSON字符串解析为字典并获取新闻列表。 + + ```Python + import json + + newslist = json.loads(resp.text)['newslist'] + ``` + +4. 对新闻列表进行循环遍历,找到感兴趣的新闻,例如:华为。 + + ```Python + for news in newslist: + title = news['title'] + url = news['url'] + if '华为' in title: + print(title) + print(url) + ``` + +5. 调用短信网关发送短信到手机上,告知关注的新闻标题并给出链接。 + + ```Python + import re + + pattern = re.compile(r'https*:\/\/[^\/]*\/(?P.*)') + matcher = pattern.match(url) + + if matcher: + url = matcher.group('url') + resp = requests.post( + url='http://sms-api.luosimao.com/v1/send.json', + auth=('api', 'key-请使用你自己申请的Key'), + data={ + 'mobile': '13548041193', + 'message': f'发现一条您可能感兴趣的新闻 - {title},详情点击https://news.china.com/{url} 查看。【Python小课】' + }, + timeout=10, + verify=False + ) + ``` + + > 说明:上面的代码使用了[螺丝帽]()提供的短信网关服务,利用短信网关发送短信是需要支付费用的,但是一般的平台都会提供若干条免费的测试短信。发送短信必须遵守平台的规则,违规的短信是无法发送的。上面发短信时使用的短信模板(“发现一条您可能感兴趣的新闻 - ###,详情点击https://news.china.com/### 查看。”)和短信签名(“【Python小课】”)需要登录螺丝帽管理平台进行配置,如果不清楚如何配置,可以联系平台的客服人员进行咨询。 + diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/Python_Tricks_encrypted.pdf b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/Python_Tricks_encrypted.pdf new file mode 100644 index 0000000..40a97fa --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/Python_Tricks_encrypted.pdf @@ -0,0 +1,19809 @@ +%PDF-1.3 +1 0 obj +<< +/Type /Pages +/Count 299 +/Kids [ 3 0 R 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R ] +>> +endobj +2 0 obj +<< +/Producer <027d09630fed> +>> +endobj +3 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /ImageC ] +/ExtGState 304 0 R +/XObject 306 0 R +>> +/Contents 312 0 R +/CropBox [ 0 0 432 648 ] +/ArtBox [ 0 0 432 648 ] +>> +endobj +4 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 313 0 R +/Font 314 0 R +>> +/Contents 322 0 R +>> +endobj +5 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 323 0 R +/Font 324 0 R +>> +/Annots [ 325 0 R 326 0 R 327 0 R 328 0 R ] +/Contents 329 0 R +>> +endobj +6 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 330 0 R +/Font 331 0 R +>> +/Contents 353 0 R +>> +endobj +7 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 354 0 R +/Font 355 0 R +>> +/Contents 356 0 R +>> +endobj +8 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 357 0 R +/Font 358 0 R +>> +/Contents 359 0 R +>> +endobj +9 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 360 0 R +/Font 361 0 R +>> +/Annots [ 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R ] +/Contents 389 0 R +>> +endobj +10 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 390 0 R +/Font 391 0 R +>> +/Annots [ 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R ] +/Contents 424 0 R +>> +endobj +11 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 425 0 R +/Font 426 0 R +>> +/Annots [ 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R ] +/Contents 434 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 435 0 R +/Font 436 0 R +>> +/Contents 437 0 R +>> +endobj +13 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 438 0 R +/Font 439 0 R +>> +/Annots [ 440 0 R ] +/Contents 441 0 R +>> +endobj +14 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 442 0 R +/Font 443 0 R +>> +/Contents 444 0 R +>> +endobj +15 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 445 0 R +/Font 446 0 R +>> +/Annots [ 447 0 R ] +/Contents 448 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 449 0 R +/Font 450 0 R +>> +/Contents 451 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 452 0 R +/Font 453 0 R +>> +/Contents 454 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 455 0 R +/Font 456 0 R +>> +/Contents 457 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 458 0 R +/Font 459 0 R +>> +/Contents 467 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 468 0 R +/Font 469 0 R +>> +/Contents 477 0 R +>> +endobj +21 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 478 0 R +/Font 479 0 R +>> +/Contents 480 0 R +>> +endobj +22 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 481 0 R +/Font 482 0 R +>> +/Annots [ 483 0 R 484 0 R ] +/Contents 485 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 486 0 R +/Font 487 0 R +>> +/Annots [ 488 0 R 489 0 R 490 0 R 491 0 R ] +/Contents 492 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 493 0 R +/Font 494 0 R +>> +/Contents 495 0 R +>> +endobj +25 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 496 0 R +/Font 497 0 R +>> +/Contents 498 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 499 0 R +/Font 500 0 R +>> +/Annots [ 501 0 R 502 0 R ] +/Contents 503 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 504 0 R +/Font 505 0 R +>> +/Contents 506 0 R +>> +endobj +28 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 507 0 R +/Font 508 0 R +>> +/Contents 509 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 510 0 R +/Font 511 0 R +>> +/Annots [ 512 0 R 513 0 R ] +/Contents 514 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 515 0 R +/Font 516 0 R +>> +/Contents 517 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 518 0 R +/Font 519 0 R +>> +/Contents 520 0 R +>> +endobj +32 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 521 0 R +/Font 522 0 R +>> +/Contents 523 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 524 0 R +/Font 525 0 R +>> +/Contents 526 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 527 0 R +/Font 528 0 R +>> +/Annots [ 529 0 R 530 0 R ] +/Contents 531 0 R +>> +endobj +35 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 532 0 R +/Font 533 0 R +>> +/Annots [ 534 0 R 535 0 R ] +/Contents 536 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 537 0 R +/Font 538 0 R +>> +/Annots [ 539 0 R 540 0 R ] +/Contents 541 0 R +>> +endobj +37 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 542 0 R +/Font 543 0 R +>> +/Contents 544 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 545 0 R +/Font 546 0 R +>> +/Contents 547 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 548 0 R +/Font 549 0 R +>> +/Annots [ 550 0 R 551 0 R ] +/Contents 552 0 R +>> +endobj +40 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 553 0 R +/Font 554 0 R +>> +/Contents 555 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 556 0 R +/Font 557 0 R +>> +/Annots [ 558 0 R 559 0 R 560 0 R 561 0 R ] +/Contents 562 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 563 0 R +/Font 564 0 R +>> +/Contents 565 0 R +>> +endobj +43 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 566 0 R +/Font 567 0 R +>> +/Contents 568 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 569 0 R +/Font 570 0 R +>> +/Contents 571 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 572 0 R +/Font 573 0 R +>> +/Contents 574 0 R +>> +endobj +46 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 575 0 R +/Font 576 0 R +>> +/Contents 577 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 578 0 R +/Font 579 0 R +>> +/Contents 580 0 R +>> +endobj +48 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 581 0 R +/Font 582 0 R +>> +/Contents 583 0 R +>> +endobj +49 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 584 0 R +/Font 585 0 R +>> +/Contents 586 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 587 0 R +/Font 588 0 R +>> +/Contents 589 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 590 0 R +/Font 591 0 R +>> +/Contents 592 0 R +>> +endobj +52 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 593 0 R +/Font 594 0 R +>> +/Annots [ 595 0 R 596 0 R ] +/Contents 597 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 598 0 R +/Font 599 0 R +>> +/Annots [ 600 0 R 601 0 R ] +/Contents 602 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 603 0 R +/Font 604 0 R +>> +/Annots [ 605 0 R 606 0 R ] +/Contents 607 0 R +>> +endobj +55 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 608 0 R +/Font 609 0 R +>> +/Annots [ 610 0 R 611 0 R ] +/Contents 612 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 613 0 R +/Font 614 0 R +>> +/Annots [ 615 0 R 616 0 R ] +/Contents 617 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 618 0 R +/Font 619 0 R +>> +/Contents 620 0 R +>> +endobj +58 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 621 0 R +/Font 622 0 R +>> +/Contents 623 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 624 0 R +/Font 625 0 R +>> +/Contents 626 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 627 0 R +/Font 628 0 R +>> +/Contents 629 0 R +>> +endobj +61 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 630 0 R +/Font 631 0 R +>> +/Contents 632 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 633 0 R +/Font 634 0 R +>> +/Annots [ 635 0 R 636 0 R ] +/Contents 637 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 638 0 R +/Font 639 0 R +>> +/Annots [ 640 0 R 641 0 R ] +/Contents 642 0 R +>> +endobj +64 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 643 0 R +/Font 644 0 R +>> +/Contents 645 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 646 0 R +/Font 647 0 R +>> +/Contents 648 0 R +>> +endobj +66 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 649 0 R +/Font 650 0 R +>> +/Contents 651 0 R +>> +endobj +67 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 652 0 R +/Font 653 0 R +>> +/Contents 654 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 655 0 R +/Font 656 0 R +>> +/Contents 657 0 R +>> +endobj +69 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 658 0 R +/Font 659 0 R +>> +/Contents 660 0 R +>> +endobj +70 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 661 0 R +/Font 662 0 R +>> +/Contents 663 0 R +>> +endobj +71 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 664 0 R +/Font 665 0 R +>> +/Contents 666 0 R +>> +endobj +72 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 667 0 R +/Font 668 0 R +>> +/Contents 669 0 R +>> +endobj +73 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 670 0 R +/Font 671 0 R +>> +/Contents 672 0 R +>> +endobj +74 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 673 0 R +/Font 674 0 R +>> +/Contents 675 0 R +>> +endobj +75 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 676 0 R +/Font 677 0 R +>> +/Contents 678 0 R +>> +endobj +76 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 679 0 R +/Font 680 0 R +>> +/Contents 681 0 R +>> +endobj +77 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 682 0 R +/Font 683 0 R +>> +/Annots [ 684 0 R ] +/Contents 685 0 R +>> +endobj +78 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 686 0 R +/Font 687 0 R +>> +/Contents 688 0 R +>> +endobj +79 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 689 0 R +/Font 690 0 R +>> +/Contents 691 0 R +>> +endobj +80 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 692 0 R +/Font 693 0 R +>> +/Contents 694 0 R +>> +endobj +81 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 695 0 R +/Font 696 0 R +>> +/Contents 697 0 R +>> +endobj +82 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 698 0 R +/Font 699 0 R +>> +/Contents 700 0 R +>> +endobj +83 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 701 0 R +/Font 702 0 R +>> +/Contents 703 0 R +>> +endobj +84 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 704 0 R +/Font 705 0 R +>> +/Annots [ 706 0 R 707 0 R ] +/Contents 708 0 R +>> +endobj +85 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 709 0 R +/Font 710 0 R +>> +/Contents 711 0 R +>> +endobj +86 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 712 0 R +/Font 713 0 R +>> +/Annots [ 714 0 R 715 0 R ] +/Contents 716 0 R +>> +endobj +87 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 717 0 R +/Font 718 0 R +>> +/Contents 719 0 R +>> +endobj +88 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 720 0 R +/Font 721 0 R +>> +/Contents 722 0 R +>> +endobj +89 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 723 0 R +/Font 724 0 R +>> +/Contents 725 0 R +>> +endobj +90 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 726 0 R +/Font 727 0 R +>> +/Annots [ 728 0 R 729 0 R ] +/Contents 730 0 R +>> +endobj +91 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 731 0 R +/Font 732 0 R +>> +/Contents 733 0 R +>> +endobj +92 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 734 0 R +/Font 735 0 R +>> +/Contents 736 0 R +>> +endobj +93 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 737 0 R +/Font 738 0 R +>> +/Contents 739 0 R +>> +endobj +94 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 740 0 R +/Font 741 0 R +>> +/Contents 742 0 R +>> +endobj +95 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 743 0 R +/Font 744 0 R +>> +/Contents 745 0 R +>> +endobj +96 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 746 0 R +/Font 747 0 R +>> +/Contents 748 0 R +>> +endobj +97 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 749 0 R +/Font 750 0 R +>> +/Contents 751 0 R +>> +endobj +98 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 752 0 R +/Font 753 0 R +>> +/Contents 754 0 R +>> +endobj +99 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 755 0 R +/Font 756 0 R +>> +/Contents 757 0 R +>> +endobj +100 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 758 0 R +/Font 759 0 R +>> +/Contents 760 0 R +>> +endobj +101 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 761 0 R +/Font 762 0 R +>> +/Contents 763 0 R +>> +endobj +102 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 764 0 R +/Font 765 0 R +>> +/Contents 766 0 R +>> +endobj +103 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 767 0 R +/Font 768 0 R +>> +/Contents 769 0 R +>> +endobj +104 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 770 0 R +/Font 771 0 R +>> +/Contents 772 0 R +>> +endobj +105 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 773 0 R +/Font 774 0 R +>> +/Annots [ 775 0 R 776 0 R ] +/Contents 777 0 R +>> +endobj +106 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 778 0 R +/Font 779 0 R +>> +/Contents 780 0 R +>> +endobj +107 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 781 0 R +/Font 782 0 R +>> +/Contents 783 0 R +>> +endobj +108 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 784 0 R +/Font 785 0 R +>> +/Contents 786 0 R +>> +endobj +109 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 787 0 R +/Font 788 0 R +>> +/Contents 789 0 R +>> +endobj +110 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 790 0 R +/Font 791 0 R +>> +/Contents 792 0 R +>> +endobj +111 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 793 0 R +/Font 794 0 R +>> +/Annots [ 795 0 R 796 0 R ] +/Contents 797 0 R +>> +endobj +112 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 798 0 R +/Font 799 0 R +>> +/Contents 800 0 R +>> +endobj +113 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 801 0 R +/Font 802 0 R +>> +/Contents 803 0 R +>> +endobj +114 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 804 0 R +/Font 805 0 R +>> +/Contents 806 0 R +>> +endobj +115 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 807 0 R +/Font 808 0 R +>> +/Contents 809 0 R +>> +endobj +116 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 810 0 R +/Font 811 0 R +>> +/Contents 812 0 R +>> +endobj +117 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 813 0 R +/Font 814 0 R +>> +/Contents 815 0 R +>> +endobj +118 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 816 0 R +/Font 817 0 R +>> +/Contents 818 0 R +>> +endobj +119 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 819 0 R +/Font 820 0 R +>> +/Contents 821 0 R +>> +endobj +120 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 822 0 R +/Font 823 0 R +>> +/Contents 824 0 R +>> +endobj +121 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 825 0 R +/Font 826 0 R +>> +/Contents 827 0 R +>> +endobj +122 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 828 0 R +/Font 829 0 R +>> +/Contents 830 0 R +>> +endobj +123 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 831 0 R +/Font 832 0 R +>> +/Contents 833 0 R +>> +endobj +124 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 834 0 R +/Font 835 0 R +>> +/Contents 836 0 R +>> +endobj +125 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 837 0 R +/Font 838 0 R +>> +/Contents 839 0 R +>> +endobj +126 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 840 0 R +/Font 841 0 R +>> +/Annots [ 842 0 R 843 0 R ] +/Contents 844 0 R +>> +endobj +127 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 845 0 R +/Font 846 0 R +>> +/Contents 847 0 R +>> +endobj +128 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 848 0 R +/Font 849 0 R +>> +/Contents 850 0 R +>> +endobj +129 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 851 0 R +/Font 852 0 R +>> +/Annots [ 853 0 R 854 0 R ] +/Contents 855 0 R +>> +endobj +130 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 856 0 R +/Font 857 0 R +>> +/Contents 858 0 R +>> +endobj +131 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 859 0 R +/Font 860 0 R +>> +/Contents 861 0 R +>> +endobj +132 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 862 0 R +/Font 863 0 R +>> +/Contents 864 0 R +>> +endobj +133 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 865 0 R +/Font 866 0 R +>> +/Contents 867 0 R +>> +endobj +134 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 868 0 R +/Font 869 0 R +>> +/Contents 870 0 R +>> +endobj +135 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 871 0 R +/Font 872 0 R +>> +/Contents 873 0 R +>> +endobj +136 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 874 0 R +/Font 875 0 R +>> +/Contents 876 0 R +>> +endobj +137 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 877 0 R +/Font 878 0 R +>> +/Contents 879 0 R +>> +endobj +138 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 880 0 R +/Font 881 0 R +>> +/Contents 882 0 R +>> +endobj +139 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 883 0 R +/Font 884 0 R +>> +/Contents 885 0 R +>> +endobj +140 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 886 0 R +/Font 887 0 R +>> +/Contents 888 0 R +>> +endobj +141 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 889 0 R +/Font 890 0 R +>> +/Contents 891 0 R +>> +endobj +142 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 892 0 R +/Font 893 0 R +>> +/Contents 894 0 R +>> +endobj +143 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 895 0 R +/Font 896 0 R +>> +/Contents 897 0 R +>> +endobj +144 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 898 0 R +/Font 899 0 R +>> +/Contents 900 0 R +>> +endobj +145 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 901 0 R +/Font 902 0 R +>> +/Contents 903 0 R +>> +endobj +146 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 904 0 R +/Font 905 0 R +>> +/Contents 906 0 R +>> +endobj +147 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 907 0 R +/Font 908 0 R +>> +/Annots [ 909 0 R 910 0 R 911 0 R 912 0 R ] +/Contents 913 0 R +>> +endobj +148 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 914 0 R +/Font 915 0 R +>> +/Contents 916 0 R +>> +endobj +149 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 917 0 R +/Font 918 0 R +>> +/Contents 919 0 R +>> +endobj +150 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 920 0 R +/Font 921 0 R +>> +/Contents 922 0 R +>> +endobj +151 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 923 0 R +/Font 924 0 R +>> +/Annots [ 925 0 R 926 0 R ] +/Contents 927 0 R +>> +endobj +152 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 928 0 R +/Font 929 0 R +>> +/Annots [ 930 0 R 931 0 R ] +/Contents 932 0 R +>> +endobj +153 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 933 0 R +/Font 934 0 R +>> +/Contents 935 0 R +>> +endobj +154 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 936 0 R +/Font 937 0 R +>> +/Contents 938 0 R +>> +endobj +155 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 939 0 R +/Font 940 0 R +>> +/Contents 941 0 R +>> +endobj +156 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 942 0 R +/Font 943 0 R +>> +/Contents 944 0 R +>> +endobj +157 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 945 0 R +/Font 946 0 R +>> +/Contents 947 0 R +>> +endobj +158 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 948 0 R +/Font 949 0 R +>> +/Contents 950 0 R +>> +endobj +159 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 951 0 R +/Font 952 0 R +>> +/Contents 953 0 R +>> +endobj +160 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 954 0 R +/Font 955 0 R +>> +/Annots [ 956 0 R 957 0 R 958 0 R 959 0 R ] +/Contents 960 0 R +>> +endobj +161 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 961 0 R +/Font 962 0 R +>> +/Annots [ 963 0 R 964 0 R 965 0 R 966 0 R ] +/Contents 967 0 R +>> +endobj +162 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 968 0 R +/Font 969 0 R +>> +/Annots [ 970 0 R 971 0 R ] +/Contents 972 0 R +>> +endobj +163 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 973 0 R +/Font 974 0 R +>> +/Annots [ 975 0 R 976 0 R 977 0 R 978 0 R ] +/Contents 979 0 R +>> +endobj +164 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 980 0 R +/Font 981 0 R +>> +/Contents 982 0 R +>> +endobj +165 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 983 0 R +/Font 984 0 R +>> +/Contents 985 0 R +>> +endobj +166 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 986 0 R +/Font 987 0 R +>> +/Contents 988 0 R +>> +endobj +167 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 989 0 R +/Font 990 0 R +>> +/Annots [ 991 0 R 992 0 R ] +/Contents 993 0 R +>> +endobj +168 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 994 0 R +/Font 995 0 R +>> +/Annots [ 996 0 R 997 0 R ] +/Contents 998 0 R +>> +endobj +169 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 999 0 R +/Font 1000 0 R +>> +/Annots [ 1001 0 R 1002 0 R ] +/Contents 1003 0 R +>> +endobj +170 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1004 0 R +/Font 1005 0 R +>> +/Annots [ 1006 0 R 1007 0 R ] +/Contents 1008 0 R +>> +endobj +171 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1009 0 R +/Font 1010 0 R +>> +/Contents 1011 0 R +>> +endobj +172 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1012 0 R +/Font 1013 0 R +>> +/Annots [ 1014 0 R 1015 0 R ] +/Contents 1016 0 R +>> +endobj +173 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1017 0 R +/Font 1018 0 R +>> +/Annots [ 1019 0 R 1020 0 R ] +/Contents 1021 0 R +>> +endobj +174 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1022 0 R +/Font 1023 0 R +>> +/Annots [ 1024 0 R 1025 0 R ] +/Contents 1026 0 R +>> +endobj +175 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1027 0 R +/Font 1028 0 R +>> +/Contents 1029 0 R +>> +endobj +176 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1030 0 R +/Font 1031 0 R +>> +/Annots [ 1032 0 R 1033 0 R ] +/Contents 1034 0 R +>> +endobj +177 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1035 0 R +/Font 1036 0 R +>> +/Contents 1037 0 R +>> +endobj +178 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1038 0 R +/Font 1039 0 R +>> +/Annots [ 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R ] +/Contents 1045 0 R +>> +endobj +179 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1046 0 R +/Font 1047 0 R +>> +/Contents 1048 0 R +>> +endobj +180 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1049 0 R +/Font 1050 0 R +>> +/Annots [ 1051 0 R 1052 0 R 1053 0 R 1054 0 R ] +/Contents 1055 0 R +>> +endobj +181 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1056 0 R +/Font 1057 0 R +>> +/Annots [ 1058 0 R 1059 0 R ] +/Contents 1060 0 R +>> +endobj +182 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1061 0 R +/Font 1062 0 R +>> +/Contents 1063 0 R +>> +endobj +183 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1064 0 R +/Font 1065 0 R +>> +/Annots [ 1066 0 R 1067 0 R 1068 0 R 1069 0 R ] +/Contents 1070 0 R +>> +endobj +184 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1071 0 R +/Font 1072 0 R +>> +/Annots [ 1073 0 R 1074 0 R ] +/Contents 1075 0 R +>> +endobj +185 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1076 0 R +/Font 1077 0 R +>> +/Annots [ 1078 0 R 1079 0 R ] +/Contents 1080 0 R +>> +endobj +186 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1081 0 R +/Font 1082 0 R +>> +/Contents 1083 0 R +>> +endobj +187 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1084 0 R +/Font 1085 0 R +>> +/Contents 1086 0 R +>> +endobj +188 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1087 0 R +/Font 1088 0 R +>> +/Annots [ 1089 0 R 1090 0 R ] +/Contents 1091 0 R +>> +endobj +189 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1092 0 R +/Font 1093 0 R +>> +/Annots [ 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R ] +/Contents 1100 0 R +>> +endobj +190 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1101 0 R +/Font 1102 0 R +>> +/Annots [ 1103 0 R 1104 0 R ] +/Contents 1105 0 R +>> +endobj +191 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1106 0 R +/Font 1107 0 R +>> +/Contents 1108 0 R +>> +endobj +192 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1109 0 R +/Font 1110 0 R +>> +/Contents 1111 0 R +>> +endobj +193 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1112 0 R +/Font 1113 0 R +>> +/Annots [ 1114 0 R 1115 0 R ] +/Contents 1116 0 R +>> +endobj +194 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1117 0 R +/Font 1118 0 R +>> +/Annots [ 1119 0 R 1120 0 R 1121 0 R 1122 0 R ] +/Contents 1123 0 R +>> +endobj +195 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1124 0 R +/Font 1125 0 R +>> +/Annots [ 1126 0 R 1127 0 R ] +/Contents 1128 0 R +>> +endobj +196 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1129 0 R +/Font 1130 0 R +>> +/Contents 1131 0 R +>> +endobj +197 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1132 0 R +/Font 1133 0 R +>> +/Contents 1134 0 R +>> +endobj +198 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1135 0 R +/Font 1136 0 R +>> +/Contents 1137 0 R +>> +endobj +199 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1138 0 R +/Font 1139 0 R +>> +/Annots [ 1140 0 R 1141 0 R ] +/Contents 1142 0 R +>> +endobj +200 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1143 0 R +/Font 1144 0 R +>> +/Annots [ 1145 0 R 1146 0 R 1147 0 R 1148 0 R ] +/Contents 1149 0 R +>> +endobj +201 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1150 0 R +/Font 1151 0 R +>> +/Annots [ 1152 0 R 1153 0 R ] +/Contents 1154 0 R +>> +endobj +202 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1155 0 R +/Font 1156 0 R +>> +/Annots [ 1157 0 R 1158 0 R ] +/Contents 1159 0 R +>> +endobj +203 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1160 0 R +/Font 1161 0 R +>> +/Contents 1162 0 R +>> +endobj +204 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1163 0 R +/Font 1164 0 R +>> +/Annots [ 1165 0 R 1166 0 R ] +/Contents 1167 0 R +>> +endobj +205 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1168 0 R +/Font 1169 0 R +>> +/Annots [ 1170 0 R 1171 0 R ] +/Contents 1172 0 R +>> +endobj +206 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1173 0 R +/Font 1174 0 R +>> +/Annots [ 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R ] +/Contents 1181 0 R +>> +endobj +207 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1182 0 R +/Font 1183 0 R +>> +/Contents 1184 0 R +>> +endobj +208 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1185 0 R +/Font 1186 0 R +>> +/Contents 1187 0 R +>> +endobj +209 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1188 0 R +/Font 1189 0 R +>> +/Contents 1190 0 R +>> +endobj +210 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1191 0 R +/Font 1192 0 R +>> +/Annots [ 1193 0 R ] +/Contents 1194 0 R +>> +endobj +211 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1195 0 R +/Font 1196 0 R +>> +/Contents 1197 0 R +>> +endobj +212 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1198 0 R +/Font 1199 0 R +>> +/Contents 1200 0 R +>> +endobj +213 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1201 0 R +/Font 1202 0 R +>> +/Contents 1203 0 R +>> +endobj +214 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1204 0 R +/Font 1205 0 R +>> +/Contents 1206 0 R +>> +endobj +215 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1207 0 R +/Font 1208 0 R +>> +/Contents 1209 0 R +>> +endobj +216 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1210 0 R +/Font 1211 0 R +>> +/Contents 1212 0 R +>> +endobj +217 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1213 0 R +/Font 1214 0 R +>> +/Contents 1215 0 R +>> +endobj +218 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1216 0 R +/Font 1217 0 R +>> +/Contents 1218 0 R +>> +endobj +219 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1219 0 R +/Font 1220 0 R +>> +/Contents 1221 0 R +>> +endobj +220 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1222 0 R +/Font 1223 0 R +>> +/Contents 1224 0 R +>> +endobj +221 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1225 0 R +/Font 1226 0 R +>> +/Contents 1227 0 R +>> +endobj +222 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1228 0 R +/Font 1229 0 R +>> +/Contents 1230 0 R +>> +endobj +223 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1231 0 R +/Font 1232 0 R +>> +/Contents 1233 0 R +>> +endobj +224 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1234 0 R +/Font 1235 0 R +>> +/Contents 1236 0 R +>> +endobj +225 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1237 0 R +/Font 1238 0 R +>> +/Contents 1239 0 R +>> +endobj +226 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1240 0 R +/Font 1241 0 R +>> +/Contents 1242 0 R +>> +endobj +227 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1243 0 R +/Font 1244 0 R +>> +/Contents 1245 0 R +>> +endobj +228 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1246 0 R +/Font 1247 0 R +>> +/Contents 1248 0 R +>> +endobj +229 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1249 0 R +/Font 1250 0 R +>> +/Contents 1251 0 R +>> +endobj +230 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1252 0 R +/Font 1253 0 R +>> +/Contents 1254 0 R +>> +endobj +231 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1255 0 R +/Font 1256 0 R +>> +/Contents 1257 0 R +>> +endobj +232 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1258 0 R +/Font 1259 0 R +>> +/Contents 1260 0 R +>> +endobj +233 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1261 0 R +/Font 1262 0 R +>> +/Contents 1263 0 R +>> +endobj +234 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1264 0 R +/Font 1265 0 R +>> +/Contents 1266 0 R +>> +endobj +235 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1267 0 R +/Font 1268 0 R +>> +/Contents 1269 0 R +>> +endobj +236 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1270 0 R +/Font 1271 0 R +>> +/Contents 1272 0 R +>> +endobj +237 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1273 0 R +/Font 1274 0 R +>> +/Contents 1275 0 R +>> +endobj +238 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1276 0 R +/Font 1277 0 R +>> +/Contents 1278 0 R +>> +endobj +239 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1279 0 R +/Font 1280 0 R +>> +/Contents 1281 0 R +>> +endobj +240 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1282 0 R +/Font 1283 0 R +>> +/Contents 1284 0 R +>> +endobj +241 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1285 0 R +/Font 1286 0 R +>> +/Contents 1287 0 R +>> +endobj +242 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1288 0 R +/Font 1289 0 R +>> +/Contents 1290 0 R +>> +endobj +243 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1291 0 R +/Font 1292 0 R +>> +/Contents 1293 0 R +>> +endobj +244 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1294 0 R +/Font 1295 0 R +>> +/Contents 1296 0 R +>> +endobj +245 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1297 0 R +/Font 1298 0 R +>> +/Contents 1299 0 R +>> +endobj +246 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1300 0 R +/Font 1301 0 R +>> +/Contents 1302 0 R +>> +endobj +247 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1303 0 R +/Font 1304 0 R +>> +/Contents 1305 0 R +>> +endobj +248 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1306 0 R +/Font 1307 0 R +>> +/Contents 1308 0 R +>> +endobj +249 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1309 0 R +/Font 1310 0 R +>> +/Contents 1311 0 R +>> +endobj +250 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1312 0 R +/Font 1313 0 R +>> +/Contents 1314 0 R +>> +endobj +251 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1315 0 R +/Font 1316 0 R +>> +/Contents 1317 0 R +>> +endobj +252 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1318 0 R +/Font 1319 0 R +>> +/Contents 1320 0 R +>> +endobj +253 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1321 0 R +/Font 1322 0 R +>> +/Contents 1323 0 R +>> +endobj +254 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1324 0 R +/Font 1325 0 R +>> +/Contents 1326 0 R +>> +endobj +255 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1327 0 R +/Font 1328 0 R +>> +/Contents 1329 0 R +>> +endobj +256 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1330 0 R +/Font 1331 0 R +>> +/Annots [ 1332 0 R 1333 0 R 1334 0 R 1335 0 R ] +/Contents 1336 0 R +>> +endobj +257 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1337 0 R +/Font 1338 0 R +>> +/Contents 1339 0 R +>> +endobj +258 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1340 0 R +/Font 1341 0 R +>> +/Contents 1342 0 R +>> +endobj +259 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1343 0 R +/Font 1344 0 R +>> +/Contents 1345 0 R +>> +endobj +260 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1346 0 R +/Font 1347 0 R +>> +/Contents 1348 0 R +>> +endobj +261 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1349 0 R +/Font 1350 0 R +>> +/Contents 1351 0 R +>> +endobj +262 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1352 0 R +/Font 1353 0 R +>> +/Contents 1354 0 R +>> +endobj +263 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1355 0 R +/Font 1356 0 R +>> +/Contents 1357 0 R +>> +endobj +264 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1358 0 R +/Font 1359 0 R +>> +/Contents 1360 0 R +>> +endobj +265 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1361 0 R +/Font 1362 0 R +>> +/Contents 1363 0 R +>> +endobj +266 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1364 0 R +/Font 1365 0 R +>> +/Contents 1366 0 R +>> +endobj +267 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1367 0 R +/Font 1368 0 R +>> +/Contents 1369 0 R +>> +endobj +268 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1370 0 R +/Font 1371 0 R +>> +/Annots [ 1372 0 R 1373 0 R ] +/Contents 1374 0 R +>> +endobj +269 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1375 0 R +/Font 1376 0 R +>> +/Contents 1377 0 R +>> +endobj +270 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1378 0 R +/Font 1379 0 R +>> +/Contents 1380 0 R +>> +endobj +271 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1381 0 R +/Font 1382 0 R +>> +/Contents 1383 0 R +>> +endobj +272 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1384 0 R +/Font 1385 0 R +>> +/Contents 1386 0 R +>> +endobj +273 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1387 0 R +/Font 1388 0 R +>> +/Contents 1389 0 R +>> +endobj +274 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1390 0 R +/Font 1391 0 R +>> +/Contents 1392 0 R +>> +endobj +275 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1393 0 R +/Font 1394 0 R +>> +/Contents 1395 0 R +>> +endobj +276 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1396 0 R +/Font 1397 0 R +>> +/Annots [ 1398 0 R 1399 0 R ] +/Contents 1400 0 R +>> +endobj +277 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1401 0 R +/Font 1402 0 R +>> +/Contents 1403 0 R +>> +endobj +278 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1404 0 R +/Font 1405 0 R +>> +/Contents 1406 0 R +>> +endobj +279 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1407 0 R +/Font 1408 0 R +>> +/Contents 1409 0 R +>> +endobj +280 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1410 0 R +/Font 1411 0 R +>> +/Contents 1412 0 R +>> +endobj +281 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1413 0 R +/Font 1414 0 R +>> +/Contents 1415 0 R +>> +endobj +282 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1416 0 R +/Font 1417 0 R +>> +/Contents 1418 0 R +>> +endobj +283 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1419 0 R +/Font 1420 0 R +>> +/Contents 1421 0 R +>> +endobj +284 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1422 0 R +/Font 1423 0 R +>> +/Contents 1424 0 R +>> +endobj +285 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1425 0 R +/Font 1426 0 R +>> +/Contents 1427 0 R +>> +endobj +286 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1428 0 R +/Font 1429 0 R +>> +/Contents 1430 0 R +>> +endobj +287 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1431 0 R +/Font 1432 0 R +>> +/Annots [ 1433 0 R ] +/Contents 1434 0 R +>> +endobj +288 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1435 0 R +/Font 1436 0 R +>> +/Contents 1437 0 R +>> +endobj +289 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1438 0 R +/Font 1439 0 R +>> +/Annots [ 1440 0 R 1441 0 R ] +/Contents 1442 0 R +>> +endobj +290 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1443 0 R +/Font 1444 0 R +>> +/Contents 1445 0 R +>> +endobj +291 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1446 0 R +/Font 1447 0 R +>> +/Contents 1448 0 R +>> +endobj +292 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1449 0 R +/Font 1450 0 R +>> +/Contents 1451 0 R +>> +endobj +293 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1452 0 R +/Font 1453 0 R +>> +/Contents 1454 0 R +>> +endobj +294 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1455 0 R +/Font 1456 0 R +>> +/Contents 1457 0 R +>> +endobj +295 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1458 0 R +/Font 1459 0 R +>> +/Contents 1460 0 R +>> +endobj +296 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1461 0 R +/Font 1462 0 R +>> +/Contents 1463 0 R +>> +endobj +297 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1464 0 R +/Font 1465 0 R +>> +/Annots [ 1466 0 R 1467 0 R 1468 0 R ] +/Contents 1469 0 R +>> +endobj +298 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1470 0 R +/Font 1471 0 R +>> +/Annots [ 1472 0 R ] +/Contents 1473 0 R +>> +endobj +299 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1474 0 R +/Font 1475 0 R +>> +/Contents 1476 0 R +>> +endobj +300 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /ImageC /Text ] +/ExtGState 1477 0 R +/XObject 1479 0 R +/Font 1482 0 R +>> +/Annots [ 1483 0 R ] +/Contents 1484 0 R +>> +endobj +301 0 obj +<< +/Type /Page +/MediaBox [ 0 0 432 648 ] +/Parent 1 0 R +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState 1485 0 R +/Font 1486 0 R +>> +/Annots [ 1487 0 R ] +/Contents 1488 0 R +>> +endobj +302 0 obj +<< +/Filter /Standard +/V 2 +/Length 128 +/R 3 +/O <19f4d745456aa55dc714ae7e656fea6661b91c5941498dc56f7260077640a747> +/U +/P -1 +>> +endobj +303 0 obj +<< +/Type /Catalog +/Pages 1 0 R +>> +endobj +304 0 obj +<< +/R7 305 0 R +>> +endobj +305 0 obj +<< +/Type /ExtGState +/BM /Normal +/OPM 1 +/TK true +>> +endobj +306 0 obj +<< +/R12 307 0 R +/R11 308 0 R +/R10 309 0 R +/R9 310 0 R +/R8 311 0 R +>> +endobj +307 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 1800 +/Height 2700 +/BitsPerComponent 8 +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 1800 +/Colors 3 +>> +/Length 25843 +>> +stream +N/'MPڳYJm^:JFI*b -oH{]TZvU'4(S1|[p+`|UqX'ajNޗ $&K-pmd!GZ.[8Nq{%QttŏҖtsecB 0}bGW{d*Xf +&p~g4;s)ҵ% /|R=JQfՇ ljϪ]9TS1:EDi@+-Dp|D6=wg +~%uMnxSSOE:LP['s{AazB'v.Rhy>$ ѽs?P5]ޞzh ϵ*#ā6L }SIvI8 p[ѱ0HLK 9O;i2@؈ |똁[F4;>a5#nR(Apo^3FT}&4>|.Yc-c~0_lN&yp*f (cj i vbWkC4~ļ`D)@z*9CǗIäjk,8E%ɟ*Ne?/\~,pܓs6OcY)rغ̗[opmGXb93,h%뢌\ZfS'hnB$),[ s{0\u9͸M{Yrt]79.gN1SKYxPW\˃viXO]ՕR?m8sGO@x3h`:c E;Urێ/X{MN m џ& yq ѽtVqP]E|<;VF8tGnc9 њsEm둿|9ﵧHiU?#c+?HHKtwlp zEޏLaVp­/կULkP:+&q*<]R1cna] o=\tQjOz *j&AUޖ"JOXW_C5Xӳ;収gϤO y\':IH$ P/peBtӒԩ~xO`—qggqn-F:e( +܄CM@QSM?.Y$M.9Dp>i6#Tp IL|J]o-E(!l)9'R%k>5~0o!˨3QN([fŽ_D?F N4i [Ѳ4\hu+!-]~^mM6BF!:SEX%`[i?k5x&y3D۳m] +ӫ*=6!n9Qv'd݃kG0:63sKM&kwmԾד:)y&OU30(%S?D?=0~i6s #˩6SDVģe=]oBs{J%ŨtcXCڒN0AƧk\{pvJQȆh埠ZZHbC'qn9d ΞQx0+/ +==@hҮ,hNEG<+|"d4x@F,3) ا7wZUiB,~( +:5 s} +]KY+x9e2۾" -A>Kj~6Rt}>}i 9A:i.qRU~k"b,a_}{*}5-@f*@pBӧcPZUP"z+gSJCvdJK}Uja󰞔Aʍi꼾n:wHC*SK}w-o9sV6'sUGsw$ ȏL1G:0-xг^iRgr@ӉߙdgwGU{zׂpZս +žj3iAd3Gt8!uNRfU 6;heA, E^@TxsG,'<}glW +ttp*&xA-Zz:IHf ?X05HwrHn|?F-!glR-Й{rG~"Z8ƫykƮ&b}W( cy/T P䥕|[ /ًN@dNw,[ÏzY4߶Lv$`DB |zp:UKb*)%K5|f)DB5@J& 4b3c\>8Cݾ`\*`JAX C97~շS@2>CH>\~f k7([ dkW6Nt~u!K- dPCE=Pa[!_ِ#mJ%v,ί`d5{-@nU0ŊCӤl[7*C+T$#gL*h@ީ+ y{=NyN{f\gg039t@z\#)ח3-j(]o&wZU\꯳(!\4tՃhln"$D kKf)Jd,gHJ 6n`J?}e)2h>Ai:hoy:j(S]=q۶ʣMWܤ6^*Wi5"D3.#ƩE!_'bn-l)r͎*M{d .ޫ^pӣ<2_R0VD0+H` .}i\dj+NV^\XB(DnY@5ϕ+k!k|V&yEՄK\?ԏ@ޓqu5bk  ͐y4U aQ0 }h%=+?X;} w)oy*;56Sqt~7 Bv hVJXy`]) ِ\tV'>*ȏ+B֕Ey@/JSN$~@ai (lx9~a5ϏArE>*"JʊBEtu7C: ^QT]IO9 )[Ղ_"h#>Ljd&;SrCZO.jfׇH$ķ{nU&8A;CҐnn, !#Cvq-g^|gnOxo;̳hXPut/8O&UL7ML)@o3Ώ\Jn3ژHЖi[ 0['Vx(50|+6uݢZb4^<Q+q({ idu `4=XDk-@t:aZS6ho6КЪ>h. Za2cBjM#L+ um(I+zfRuP#g!C`@{`1s32#}S._1ZCk 2 Hh6Cv9l2}c=Okp|QsFHk@*Uy&T\K"vT$Zn, %Ѣ\:<-}qcs%^_.i +J~N B5M6V#ySFe,cE"hu [I95Xq.b\Ia<4n}KܥE}%{i| +繣1"8> 6iI#W=]eUE}dhuy˵J^G^u0> A (C,Vu!Qת(LMp;ҍ/MT,W\m^l%zw$a\0Ja#˻K? +wRQ r΋UVCkT Ϲ *"U>C1y:v{wHTR DQ>Z+/ۄv‚Xcm5Z ?Γc8~/\6[Hɰ@iXCuA!jl6B) pe2ѐ-iHYΨSqHJܘ0OA?^bj +dX!\qZ3@O"/p~MB2mV콞= +m}qY< -ku3W&mKZos ΍kO{kWJXFb\lɵ+UhF-Φܞ, F0P>D)(Ĝ{w’ۮR@!'JԄ_ ZO+M-9GzWп(۪y`X*Sibxm9QiQ1!nj\1Hгg\mޱQsD/]?y&ք ~\zYNS +2n11= ޓ&}X WPnԉw󤂾I~.⬿ Cypr4B.PRgiͼNP;M=ec!lf*(hȤ +JJH2yX%-'.tAp z4J#II9cj4R` Vѩ^󧄨( @z3!޴6gxwdG Yv8B°L 0B{L"BOCeXzt:/3#S% + l] +U,jjs¯G΅QȊOGN|7+h]kŌ%\${\*$BБ^L,9Trk-ȡ998JVBrt`=l1F蟿qɼʉ0`;]h;O=4FHKN%]j*:<&܍cևBZ;U/7p_GNֹ_K‘NMkBdinge3.gJ.xK{LSN(@=F z/t2]M1X%JU,xWƌ +^.t9mtfK$%›g/AХ(W./Y;tuAN7 Ӄ0ϻ*o!<]&(Llhv[,GR ҬMXt%$5WI{4@|l1*]=ALibG<8~!PW[yNr3g-t +ZU.΀U(E|uFv,6j%`0$75  &* ӄaoaJΔ]@TdChqI30<><ˢo|Z|#852 U%rCoBVՀ712ۛTb# ѴO2{;[v<+c[$5Y465 G$~`ttz@~R U0aȹ;:0hT&3~4t Ո#F" +q*0zL&F68⸺b[w=Ֆ;?R R4.vI[!r۷:m;AZ*,^ZME[^{d,Rr6,=$F,bEůhosơepI'ױS2e.s})?r߬0vZUuHU,EW =>p|x;EaÈj72+*r(4bąu9qm(1+Q'lPCaHюĆo>qɜYAEi-թ0ɂ8W̫ӳ(м@_f)iߒ-b*?ۗ=C&Uҟr3+ťZP1\ɿGA4Eo`uT5L7}]9k'ȳ?hg"1~48"&B0kNlB72{+mĨ6.YInj<v4Zj4:p^L] 9@5o{<]lݺ[,vyD4;FG~K}vqt'"~]ª<*jaoDND9<"w56\fw" +ZY;e[x9053͈_7RgAWi*Nh*O6=ϊ Cוm{휔5UBfqcU@eVFxj3Py:Yn,J +uwo?NN%n +{j0 @Sm~fW]x_fdn*z@:bH}@5cHR5;ZnYCSWW"kj $iލ& +lΏ7ښkF!LqՑ~p]su ҋrd3fG#i7SV2 +urDQse-.4[S:9™"֗W]mV0f/_Sҩzj`~6.V3 +2<#O}Ax=*2 _gG! &WƩL|n!A!q*_P +E~^6't9S!HEzel+ӰV0Qaj:>PFLBGAfg[q¦#,L{sśh/4 zN'x 6DF)0ww [hܟ5䏵9ɇ%EwXiV[JҹG^}+\@40q5?>;PP h+;mU7oP>S0W R: Hcf05$rw G7Oo>_U gvϲFB=xq +.,~QfiFMk|l|0޴Sf!.uAP?w +_XIhu/*)6ۦ^N9 +*jMB-qDF}BK6kŠ6)ao`Td>cn +̞ZQ%E-Z"їpx +ԑ5̠}?X ')P(`T뀑eTעnQC5|8du +[rmX{=[4K|% C^̞MkW3_hZE2!"34/5F4%aG>:*VhLboiA~:Q.u Og 9U W@ATjF!rblyWCJco2v*9kaAM֝>| v8b#dCׯb֗/ZEX Wߨkl +X,VdAk#-`O*;jhLc ϧy5HS۔zdG#^ؕҾhw栻b҄1=xI=D5'6`=BOs#YU7F\:]=f_ lZ(23iƳRɔ`ߢLZa$1+_o+?cy̑6>ltW9"֯ ) N.<UMhb!i"!''v_S;/X +ܑW5_QW(~+!We?\xxv!&xaaH֗I-juw"k"r)x*/ +tzqs|+hRnoښt!2ã8| +J|዁e\}Nc$v pj}9sc`ld)K10<GJnYKѧd=t%:7EG)c4Դ@K~I)w1 YH[B^yS%Яp @fZQSRՏ,4RԆepC(fՔV>X T %+Xk<dv#ni һ(<g|fO%u>2wk@߮ޙ1vNlִ_zHJh5^DM$P; Ǿ CD"tTK[yݶ5? B + +S?TgЉ02݇Vu*& +<-VHR(/2k94]+c72g@W%1[K.m h`?ʮ"| t,)gW ;$f0,/7ci;wUXW_ E/s բݙfď,%{h%cvRűϮG*9p#f63)pbY4xrZ6!tPBQ +W;}jG "B0zV iL1iy<,%SPY}2m%ś@{G؀KdmZGXRswtxrd2E2deaL7\Т.zQXHR"Yb0lU|>ќ$dٸOfJEJa(;b\dim_PL&{˩rе)J4q4 7͟/p4 NQnaorQQ13C: Z_wo + m զ^xH7G,_ުR/IJԱba<H؉3?C<37 )5 /yh'rqDJ:*95^l 2/HIl>Z֙m51[AZ|a} m*v ֵU:StyہGçEҥ݅a=iyOآZ_!a 8 +36g9Tqg iW'l@42@C盭FE؏8a.A v/\ j2Ӣ晷Ro#.4_ڞBX0hZBTuH"!+Ob-IȆaIԵRu.9jq`=bT S"BOυ66^*VaeZqH5ǶMQ㱞]N_ +ص>m+>sCuKBC׎)j"l=F2+1_W|ZϟDi2itUND{1DT6J9gkiZnJ[)PtY޽–L^aʢzDג3T^ DM `%XEo'r=1QM TjaSj+B̲t?ZU2>-kz& +^Ҝf b4)6],v/qPTN}mpӢA!Hx}Ov+Hzm|K4⩦tkd'_g{٣%6 +Wl9`dz^1z0mߡE<;p""+YK\+_6ⓝv2zJSS#/e~'{_X/"[[| +R9F˂MȧqhM1U +C~MȦH'Fh 5FԈx03̨zf`odըz7| e!~O:ՓdlBOM4xM| s#"~Hg~q0i,d/־]aCR< "f zޕ<ل3PU.+7uEuxP|Y7p>zBD吶`ms}]F_fEqX4enW gL. \Ól=ή^|r9%&|> EsV,q%}#nݹ +heSk& YJĔ0zIZbNQ|x 2nUdVݩ^ktp 7R>XFD5̌eˊW"̆wfwmg}f޷,}H1s)n/+TAp[)ʏEaDU^5D!!qb GfD}ݠ6dTDV[W ):Vm6 1iyQ(f`72PrئG1Vq~@^=tqԈ |T06l<ʴƸk7mx+l)K%|ztD(eESO;YG3=_d.Z[]NM쥷˅NײddZʡGH? "dyRnOo{snQ %p_ؘM Sit4 Ϧ˒ߡskA`|JA{n푛wvecH;jOG>bQQa&`[d&ګXlTyvBKJφiQke߷uXs +b9z z @E +p&3Up2Z5*[,ب]MML yr'hULW˺M-N\q!3mk˞dK(Nwn9LDhYؘBR %@P3nPϭK5j~zuλ͗kJ2_0#{uwRv, +.f_9EƏ5t.M* RPhp͂u"k9.jEI{78@MLV;y>qs}m\8Pe,6hf|ϕVԫaQ'ൌb~WG#)bB(XX]#"||'5 i6%'C`DD~,MgCG{U~}{ ~wZqg9Igj(uβ2H8v3Y 9U 62@E28Wk=hX'] F~50`;^1^뛼9r(}۩ %5zH8vd0xuovc>Dj˪uF"?!PY3R6j0x G|3UHy!Q-@ VmLu1gA^6{A +&@8 +$MM +-$;z=a!fy:ƮpiQ8;ePť6e(c㼾dx^u6@R 'R:γ^rxp)%Iy^[j= +溛NTsS%ڬW}Hi`D$@`!#w?UY(5J5JU%$d*XjA}DJ6"+`j@h%buyL +%L)-1)R;%0,& +!=QGX NHLPbϚMi=**?"׭uB3_-8s)Dd];MS!Xzҥl ڛrOynMq!) qc*_U NϚP @l.T7)2*|p K$|k݃bV!rYk]fU#SO|T̏#6z-k݊O"trxbZ4Y}{pT%`x< +N\g'oD +ʁgH80\OYF~ƻ}d=q KFP +g=T@ѕ_Y0$]mS-gJxG3W+#y8 h޺fiהF5U5֎RB2Lꃂ@*l7`닺Y.r8d?\_FB_ksq X>4PJ3s<2ޔFBw@hj? FC (_L ejeeۡ~^*oyщu HYj7!E(|?hpj`oޏ[|E=^@\)XԶCe d'pB ٪v({MֵA%ԱǓXv9>/Xfu<=Gꠥe‡sz9KR@F$i'DVJ boC5f MF~y~LIX}n!9<78 `I7+Z+KBnvt5?a7bD%46`u(!3N&=ysg ãϼ +˲F6B792yT'm1@|%)/Vy&m']Zm”dp6"ūoŒtiN]AĄ_#`&jX @'43^Vs,1kd)Ymdt4,V^;MPGOZR.; 9;ļk_wYQ"C6z$T/xrA ]YXhqɮŭ=rs}KFAgȽZEMͻT>qѯ%f[u}]qݭ"t<VcD 'g󰤆ˁ4]84=bO-x-L-#7uZQDB]zp3:aC9eNxH*G_!X۱[ r4+:6Z)9-Wcr[@{%8AhVER\ͨrfc#͉G3^}I+LQi~ )-mOqOz_`zpށ]xag}w[SfhqS"SE0h7wF@^Y02G.,fNJ~\<~Z,p rAs?rc.ns߉i=Ё@o%Kqvjn!DV{T'n*wi2&?S|R񯰽( +JLOuTavjw @6̓&$DB%8(᳷ B,6dxDo=NM#)UR'/L+ICCWŽ & JE L*\{K ;g#<=&e0;]7kي-7al q^kKE#t^Dk>]^}ectaSk$7 `ql$B_Gܲd4BQu&=7^7t"xt8l9paUs+gX>N:%G{uRq0y O-bjBeLF*r% PHp*`dz׺ Gy8$ f͚y)MZ:6i9&,1 }qd[+S>X,ac bao? +֭т#U<`wwĺVI0f5Lhǽ; +7@{$bzV5e[-}CrԢ݇C689ImIXuk #)w~>]ۨ4ύiv~KOϞZΏ+saV|Rw66t.5c\ UhYmV ӄ/mC].D wIjqvހ?"&~ςKw?<(NLp>z>*a'@ΔE9$2Wݢr&|=V:x3i+R4 37zDd&`P* h$nX6|!HBZT: 8NN@hK+9#JIo9?$(3<S?LG6? ݦI侏ݻNJ)e* +0=G+hhRMU3f~wqi擕W@4g(!5F_eקXß)OВm)>-) |q&@b +?B%%q-h{TZ$KZw +~*QVu6h5,ڝz+Re"b8hcnQ^QI5 ?C6,LLQ)%^_y:Sh']`=D>EU`WBք*"ՠPGU[dj= ^w"QTX nDJ;ePhHj.I=U2\JdWC[5)$UmaSjԧ )`r&WCMshOUɬ}~tA;ڮ/7?YL{jH5k M|_%qgzW =kLXn/{E{g#˷m1~D"4eT҃tRd3#dHRj8%ʸ>m sa-oNd}NZ`tzxE3,KS>tV-)Ts hDyrI$^yKIvG9Ntx Rk[#i D^жVWUg'e)4ӴR=H=q(+IZ)Ȼ :{t-uxJg9=QlF:f9HF !Z?RK7rL1&K4q*FPڵ5j )9 &J_Tmu_Զn\LmVRm3)c%:knd~:B[7--?wIs)L0gz*>[Dy+1H?7,  KT_kT^ȡocĞt}R(>[+:gbB0Ӆ'9yDEhwĉOB3igK=B| ԋ8c!&z.vJ8B@.R̚3PzCR/8,jr"w"R]q3os pj agEcm39fϺ.ʟGB?LfMtcU!=ek8*4DjWb;We?ZYvdQjpo 6a{S}9߄¼.¥t +DtTOGmR?Pf#9<8qsƽCsm>VD&ǠMB>vwݟ9Я9%tz /;&W%%ؼ@>LVH`2Qاȯ)ݓN,G|{$%0' SnQt`$Av5;jiB!_zOG]5J98tRm H:?̐y@&k.g53>,+,SÜ/y ϮƚRT n&tBXP}+o UA޹\d2KKUf5++68gwZg(T ̫`^Ҙ@4{Xhm$ܢe]m#Ipy.J3Z5Sc>_ +YW; +R[".hmŅ)TTiX[vfyDž-&|يHCjejiO\N#Ww4 pY֭"2EVH԰zu T50%{S@C`t1Q{3]V"gK%P&K%o:M⻬@Pn V\g`:TeߝL@lKؿuRowEqmak)NuV 2YlBG[S؆Dzm@7XMt]Vi4X]g?|Rz qUg+<)~J¿%#> ,1lNcSbG%b]\ZuWaD3Jcö'jn +-yB ;e@f_~6tcL7~N9Iy[uQ:K."Rj 4;bMdK6\*Q^6 ,3#&ݓW=*+hz+pGL膌CUlGUyˑd1eǪN/ + +}jFmy~Edtѩ|BBw[/h׌1YIľz..NAB~sԻ%6?f$# ʾk=$8:X/(ǨicwӃI&)ϫe&.Ȇpg>1gtdTx45$s6>Nu/{ +pT<>QF^Z8S\RbYQ% %ѳQ9G(0/:ި]88RJ7qܾhVJkGg K+()^m;4oEkwDPC;p5HD]QcxK:T{μR$U.aS, [:1en1X67muH8{iBdNeA+Od$FϞ1nV9ʯG +1˾lGRM7t"@FQp2ļࢪF,Z s1%i<2WbLN[1inkQd[<(5{F"xsx3_ЗxsD6D/Ƭqy൩JY) zR9!㡘wq=ݻ SI$ +g!uDE~W &zLFp8_=V߂Rt`&Zi߀,υd+' 4E]6z)+vr\5dK"m][BL +Yv@)ۃ"Y\!J+7fni֩ݮl|2x90YDB]@lwN"XJz"6I[aN$IiC$@gJꊖaO.:RU7Gڮ_ޞT- +Wh%k1A lI^ϵNlV':,nB% =?\,.`INJ2rOѴ-vN/ ]%KbBF:j^WL¤0NB_V{{W q>CcO臀лN whH%U7TY0|+(_}.QD7kJ#{6Tu +aϗAd->JBlaRu=bDqmz򴢇f;W+u t/cP6}Bf/M/dhDeEKR7! +{W ơ(^~7@`C~1jc_iZ ‰-܍(%5Td`IV !ЈZ6#]2LELTl$:%CBZpk͏k+VU*,lR53Z|@ӽ橘zrA:TeXRs)ߠ3}ĵk^3^;e}tFE>\S _w?]_+1|PȌ7:ϵtFv/z/[T9mjhTJJ+3 LiwW r:i&i@ieuX{~1XY*9h|l҉7(+?_ c`A dڒ/p_s;TW<Óylk +f]);4=;_m' VQ)ڤ Cեdг)(z +endstream +endobj +308 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 1800 +/Height 2700 +/BitsPerComponent 8 +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 1800 +/Colors 3 +>> +/Length 19980 +>> +stream + ".o"A{RTrL|nft`tfޑ__"~캥f&o +߫`H5]^q"V%,̫x,w(7"C^$'dw/Ti祒 ߇mB +H*3fH%c1[l~`A +-^{04X": Πef. êj(_ֶkS9IAZfLs7.Yפ/3!Xs|<=kMͭ*Ԭ^Xp5^.Ie|--bpڣD,T88-OΔ 8!zkI2 K8Չ^%<_TKn?KbtGlU\B_7Z=ߌ +JBIl<3pn/75̦CPN 5DaǓ飈] @큻n8Xi!Xq}ސc ,JFN=` +|gt} /kXҦWNٳCnjw͹oك;gLOa04E: ^ͅ^VSurQxk|0Pf6i$+貽B=4@"b8*wE4:m'uy=D?Ї[%oJ^㿖L q_o ]jp&|T7Vɳ ?X %^#RcY$=LJUD nqmdۆFų՘A!$W5=EJ#FP}DFfpzXAec׿$xZc[%.O9Y5NgG5ޙ$~5#Oo8 B7Oj`vj_C'D? D oD[7ksDxK}^>hUN. 7L h !4P#4R?"Jz}~y|_q۫$m4`Bl8glok3Tg5\vf3fh藊-QE-{X_Uk่-$ Χ*h;Vv׹WXpo,H2 <ȞMN#9bi#)`HQ{BoTyk]%rn{iBwg.#^&`> ; Ggjm`gBu{&CFSijM0 +Յڧ2h" +X)ԥKPgLbv;~x:"1(SkWndDF *]\LjtΠwop%9k>~FnS$GZZpm?s- jup|k,.tw(zWYNhڜ$b% %іܪ/?lJطLj2&[PO5qUKя1U\*q˘"fM>ѦfyK5Owq\7~BeKWkR%M B7f+exϑN{zFY AYmH#܂rwdyzJ&ed^yߥT ~ٷJκd_CvDҘ#] +.g!2=)`XCa٩*G7KVz)@; |iZM4}ƅqe\Lw,sLl;ZyU}. "| g|2?t*Хd %۫bf#假}Dxhx݁1Ŋ8I֯={ ̜]W'{mfcNRĸQxvmC}?Q|Mw#I{aҞ>՚mu2qYc~Π_*^}_T&P [ZBNjzCTF[mM1k83v"3MO)՟o\i;T[\"ܑ dݓt)JZ2t;Lc\7r_J7 -fG_J͓ț븤{ RP-Bz,"U[s_/;R +ԟX𘉒ތާJdSv Vg@YH5R!.KgU"]dV8j7BQP.bݟij#| + +3J>ܵ8j;-\n᳤}^m갣)UyY +-Qռ0HWj ֣zHqGZ| #BE*N)#?蜯&]H\3)$j<[k$#CPl\> R0 ݲDǃDHǂxж6}#A}75@qǠR@HJz2-Cv ,.pB>7"ՙNWica"'ra{o4H UPýs䲿%yX]FzN5SCDxz$1TT@2z<ajBʉh{Ycm w% <Բ70)Əa6{у8Ġ-H_E+wh?NٯO}Lv +{1/+hf9 )x] mR [tx'YaFd_+:<ݳY}֘ąтdG =>X"²/0/ >cܬn.\Κ* ˌdaё1([9LIu;ʇSVXM7k|\12(ֶ|w<Z2@<{Ƌ_z qz x=e,U}`G*9ޓK=gԩ 6maC]m4q:wbI &OCϨ~Ћ{}KCQ{QH,ѯG.}И(ȃjg܂1n]!N.XArø<{rsf0My+ V`Ì?vk c+*>:f)3-vw~t$L# +S*B$lb!|ui.) ~T释\G%tXKh-;'D\)n#IF=? ;) hdڱyr(,=ٶOfR x) yd(ݔ/Ub x[KWNx'B`CzwB5Xi"ό>?u*'#aMO.a2Ymc>9^.|YQ櫯eﵡPtmQ*0!)ioNd[ zlܲr~>ɞA#<J@ir^r4J I KkSߞmqOږۛu>55e*PUߏ%J_q@/^%CYck3ZEs^A#%â0щٛYƼ+w20zYE{+m׼(2Lp:m,$Acl0uNc"rmX+RƓ5{:IbCS221;59yԒi1L*L4_𷁅[Rbw"`p*YDH ZyxMEÙ}TN׫s ^|rZiY 0nae˿nu޵Qi^/YZ ZSVgyatxCsMg{~%>EP B:h)綴4ʀwfL݉+k& \o(_@oϏ4~Բm.anq$-(sͼSgʷ#AZ4Ȼ$0\5 ρn(ڝbzuS悵w~J hQ$YtgK JC +q =ʮ7[Y >dg3/+.I`Z+yAÁoF̞QyZx::W]ܢ~df30[z"N4xW<.0o9PWfvƳ8Ğ$Ks q$7QBD2BC'ޢ<$6`Zz+AFs"ִ#awEPbxG1|sWO[c=JjG-̙dhOv(5٤LQq8>l-hUScD 14"k6rм"D?>(6*ZtYf#[=&hzOF)J0#ljWW0;Wxw%t \poPfɶ_EiɄK}袪2M 6I: \Os}l݇ռQ;G;q w[v_N ks +^© :g^뭗<- ڄSU<+U V-0'r 0A6ZKjctipjf 8${" OG" VA&d65;BLcp}Bri,KEȄTv: Wj-*:ŘNF@-]MO"=I[^M y\ ] +==VC ޗ_K<,g}UobI-z]>Ό qKs0SXtox Eߐ[h_(b2E~*Wƻm%uK渀6?d1.< HqM6־:T9ze-RZ [LB)Yu:sC ?S1UY=xu{z7/'Y|& YQCE&>A/f|jkOԗg!e~D}PA[0`@x+7Xa~<,I SvC<.aًnmT::ZD2Y4?tu7,=ǧMJִ4΍)YCgh%49x8g3t8 }kpO|jU }˸ >4B66s]-O0aY7lھy*hnVC< el5WK9_~b2C(+'\͋x֋ +C^KߢMj{R>=肸 O8p$AE<80u1# +Ƒs^f-9(tVEV f{ :.9<z;=FS6w| +NNm u RPks aʼn14Q D$@.eWu@r|_U:;4h\njN-_c6ioSB)Jj76E>2jZTR˽D jĀKp/fWK8 ĎTcp֒oԖil2a-N=/1Ɍ]1^F&A=ߵZ‚6[e'@<=nvi UGh g`/tXR~✲\r]ga1 u =0(zhfFYL#?VtqN& a  +#/~\l.v>& +5±Ү60J 3w[Ƣ%ԚU {&qV鼈YDž>vt7M~7paAVg>;tk\mD$<=/k .ڌ4־6Dz `d +(4}.>}Lx:Wc;jӲ]VuH(o7%XP+&sTQoc6M8 KXՉ^&13rD)\KI k +ۈbGIiыK/ H(\ < n"R +.Jns~îTsy۔j- ̊A;Ԕ7߼MkيI|3pTݝ +@N 9kj?_YVOpR{{Mt 'ړ< X{m + +q1tI`O~_v*_ĂY:L$ȩ#Jjϊ6=N|φGț%,܁F /\et8-{[Cm,y0S@vY=ܢDK8"6}eĴoyY;:/.)=I'wJHi~#uw +rTH8IaYk$tHi$  (TV}U\qӇ7"7t%ά2#$@#Ajђt.M'kPqj P C*hg{?i}Тg"ڹLex?V*3J[PY_нH'y53,kIgb=#{F~e$}ׄJ1OOrOo$+AtT(`޵l+54YY,u%\_K=@)Z+`<gZ![Rȵ:F u}Ěulͅ}cЁi`6oPxTl6&3+ l뷸#_>y)ZOS5 N). +!+"]WbVVSQLm s-$..biD"j^@b`I%Z[TAx͢$զx-g8%e;t'-g51˷T +D9D@J< 9,Q]/VDɄhXYB79HsX',}&P?+L$ 9ĩ)Ol>,sQe3ȩg D2Zyӝ13_W&.-)-U1tlcsek<;~o2+#yF7c!Eø,!6(hk۱F(Ф З-qڀ0٨@~& ,t{c=&/WKp4їQf'NDl>]Cqut^A%ﹴ 堟eV䳂oIr{/>+2 ۬Nj4ݏnPLˌ=5'SH!.҄ZTF5k8!<$EVY)& +-%[VUaQXuY7qoD +e@!Ô#hKitG_BePfHr^Tu$ؼG$\"]憫ˌ1uqv s yXnF]]Z$ i~t:J)GH.OYuzxauA +4TǗ9.>}|<\67Ī\48z6HA7emh"g}'BN^3BxCt &KXg sQTaA,FÍTF 6Cҗn֘+C-ͧNR7hvAE+pLqSqf+Eɾ?Б{\i!Zth%kSoEO֜P␠*6Rᳪ%!=^!iWX>1Hnbl~}D7|,za d&5$'#embs[CR0?u"v+Hl-u~]Xw)41{bu/7܍c=UAY(^mx 8" Nu2ES[jn&* r&(mL)١K#\Tɯ!+xrViAEnDt'}_,7]7R;q]U}y@XU`,݀g&}=aiQұRe1 r`JcZAz:N[dՔFB߃qs>u^wt(r2yP@ֵdCwF,=1ZLԒq[Hg$>ahuPWYݫh bϡUz[ $B)}R.骫uސDF/e"̖̀_C+XVt6|[n&Vd3, /\"wuF%cp׎Ǿ2{_,ّ.j T>B9O{GŌ]Il|CixF]C.މ;5CVt08fk a*em2A%r\gdl4C!e{JhJLC%gJ'<zlY6֢?ePApщ" U|&J;;saxpGBRv$,hJ״u@݅0h*`1q؞8ᇕm[Pn +aW`Hkeqzd +7ϊnqr"ci/|F<'!Mzi-w2)M2@˷Ģ ҒⷩP^+!N9_7yA@x`M$*DIKJԼ{G[liTt,VgFNf|۔a*TLjt>j8ehC!f=NvYx{ {{v.[d@Э[@)I^>e z2:a2Ccɀyڄ}"EоPјgwwLz):(IԽ .Q?hjATyj/ɓ$t:,#P;mE"LfM#i BttA%K)$zf?aVUr9S ;󨛹C[sB iQӥ'AkX-6 +1pֽfy෍}!X!J\1C Qvr8]<vRR,uq˶A/#mB8=Ԛ%oiD˚3e ߆b_Zd $ +vE@K5AaVSAR;.TR- 3 mH?j֊HEiY +/-ˀ,rbN9e2 pv}H' U0:k+AC-@uSoY" ;+wxoe>@)$3x]d:"ߤ$%:sn"4F}2\M2` xeL;Eß蚩3٬|;p@oe34Z-Y"%`>)uTDnT-5!9\R֖Na/K.*&#q¾% EEH4r{\sSj$Ŧy%C+ ,nn*,\ڟ:ȅ[P1y9|ҍj$)DWRN^ "<xS[dߏW"Yv"InvE\\XԜ`ũ{Í T ݾ6|ЛxӴ)p|%;A]=\'MBZ|O\=]^ `~:8N Ip+谂fҟ"9m{lVJԒƉ0, TuA`XsQWj ųCLjKA3oBj<9dE6 rh8##J`|{#0+]r +jq^v.(֢u={.VJ~ K v'$L.@r-R2Ao6v2grK@,%+YQ6'+80֧/Nk+JǕe.[sGay'x޻]6 'LL-Yb#FꐾupES ׉}K՘g$'xjݓJ@?~h/ 1 +>D)ڴ@}>2GcbޣfLMӇةtGo٪%QJ,𕇅Z*O[w/@;wY'~_Ti +|-%Ʉ>yAw3w Kg < kM*żj_|9ݑ~4r/H(5D 3,# +UzysڻX݊=!ܷ\+j1|_$~>Oo%3#)VULy;y iʰ.FZ1Ʃ"˕Vg50m?]aجȕ}D$"EYU5c +!IkB~xǸrU={*؂*} O +U&h;XW +/3Df|r\X F>b@ `NS$P>6g*֣X@{ =4r +D'PQG0pRVI(egn2z25Ur OJЛjڊm5e+&yY ?Ije'>.Ъ\,[{f0p-dA0Ap {b2əP7q9k2# ENK۟ꆝ]=Yj2&I_)R0~ piq~Rϙ9]pS,F)K>OJ76OQ>n֊ h27- IT͸f_ Rk6.[lg@`$ʀv'p]yl:ˆF)ŕU&Cdr<99HF .P1q!(w< +#myv wI.n@tJ|u>ًܔ?`Z bxly!3$ 0SM>n\W cp-?ORnCy,WS`*,G[zPa!"X e[?8's͆!>ԪY|@W[X (f&k>MlJY%Rh{6TL!IMQ>b;ZNJn[(si &W>Do0Jkϯ HF[l@|Ӿ1E~RoZcc'8D%!Cq{:koMUoY} )Ժ~dZhHI;\vFީ/`B&lBƩE4("~,*yZ,I"[`t H8uS._wd Q^2$MA{&%.8@i$Y˛A\N +벫I :%wSQ[[(GL];y/)!8|8W-c+Ǧ!h +{  qGߐ-hs5¯- gb9YbF,*[-imYJHw#`3jZjl&e*(mhE\sFHG(P&cv|ݧU/rD"f|k}hhb+9L+rC'- 2݈9' _ IrYLfpmv\uXf!?6:zhSgpzB`,/ 딃#- tda^"T֚([ޫzXIZC!l\hҗ/5e6(qU؎̤uK,7?1a*[n^?mICzP`4HgdVP|f,S`GlPJ$Y|W8,em߹,@ iϓMI]w;#'p]7bqOsM/#5y 6 +UJrsxΉw6/{3 QU˗zC+wCL0"EuV\>(^2%!F>B34!ezտ}avW="!IT> Ie橿4 [׷2g[ c{ H6[.R*o%* 6i[$݀>[_D'CGk +j%R]@ b0n-C&Q*U`慐3!ω&yr=! U<}sL0x*QLX/9?UPqFM2*NBtȱE8dU8Z@AC|iFv c~|$#|]fc?Ɋ?luǑZd(E DYB`n۰LW:3vU,&. +툙Eu}ac*2 4N{P%h:g c0u(n9ho n +zȬЛ…Cc.-$ş,X<2`_y9?,oNFyePZb6q}9?vO0Adֻl!tJHx7$@'r/Ol)AX+Oʝ Vo 1)%lhl=O!FxGm-ץu8eT%*LeQ缑_c{#7JZpz| +v +N9n^zV{]%ZgZURy,)EI#]\ʊуwףY$PJ(3u]'2XtA> *f,؎t?Z $TxbcC5&)'zX3|sxʳ*5{L"̌#5;HϪ/fV/gp~el3m x=U=W+vaR HI~a[.SAޜb`O^%{$cIKYۼhѬuN(+<mF"fWά ?\;-FeJʉk2o1`'X8+=[b#@evN"+;'M#yQsS31SվJLg]X̩YkZ Vb0[4pKNd]PqȞ!2q&,SbDg$p}]wXο;ZdcODnӺ^ط/KL:OJjÊ~@]ډ%+ԉw!J Mq +E ,~.c9@5a|T, +8DPRY9UUzټQ mٗQ#"#Sk>CH,r )^#'P:YDtms7O>* J,EJ@"|`P'Ke;_[̒Xr|7ZR*ύb5C<b'v's*N=6c^Ÿ8L `bC{&b"cQ VO?j@JIQm +\ +j)H'P~AU #IVvIRkˡUWgdz V t,)G +xq!V,]B@SA|?n]}QAJ>%nl&H vD&c_$JҩJeDj~( [ v.~9!Nz" ˯1]tܕ?,a֣^'zTH;n&FFTpdo')Ԝg F_y΅x.Kwϙ宥)(덿3;9K>$|J( $2dK8wԷ+T/5U'eNVC-Vx%ѨRЁßMvRk\`RؒG]^Gi(nLJmυ dc3v[<᳍8S_%x;ͯAd/MN7]dZf1̓y L?\=&_QN'wAzc^K͎Z¸$$$QoBhkӵF)ZB2yLNjK]I/Z>D!}lX;XJJr𬞭-=Qlwd~ӽr^jUFluRoRs[d +;5:OR Coö@wZ|emz4E=ܕjKj| m"'Ef7H)VMGۤ*$[p㞬[jܳy)w(y >Mk= EIdاKm(1¬t[$ -P.k5: +!S|K2T x)@Nq5[rrb_)>»xsA}G#l[|.e Ru&n#n:`ZGA-QI1s_T=ًyE\Fq#mK:L{PgΏp-zjV\sw8YsNɝwZ zgM3kQ@wW=. +᧭?KEF#r2,x)Q%[_5)J2[s_:9dIB ߭~`ZW:62L:$:fVtwtXi +endstream +endobj +309 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 1800 +/Height 2700 +/BitsPerComponent 8 +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 1800 +/Colors 3 +>> +/Length 21056 +>> +stream +* +{b+[ΏP@7F"]Rdȹ\x;@dz4׵d]@4$}Jq!h~M?Ļԭ5pq wM5۴[ +fp,#>bY'k`uЃ)GKx)% %;7tfסAO!cWݕO9iRR7t2bj9ʳ;2dWpۆ>{p\wWJ4ΞR ++BjUJC-YTQD&!ؗ;` u¼p)7<Ft>@ŻwKoga@dԬі`w%ñJ?r6M}ԟw~LT,_حpR@mQko9 rBJݢ)G;dG +A+%_v>H\!غ +69Pv_xģ٠Cr"Qb@K@dUNe VKЦ D:DyLbڽ?j!3@& !6+u>u9hv-!zv&IK;{1R%LX3A&_W=$ T)֨Vy2)&(cb3H- !Ax{~POa8vy.WyRP]6 +Lۣ`Pg&>GV`sި.@ML6_lE94ލN֦@Vu=ʺ({-*iie spWT_=@zbsK(9;:qp>7Rr|DdR/¡IkZO ~nNȆ74W?_ӥc A;sHQ!vһP{o^'zPAv.! 81_ +hI-.6 {a5ߣ<=n>-7m>hdg9v]GGHD(+b*J0*oDsᒀПmA\g#rrG"L@^ ^f!k,oPhiQm<*q(GĠ=z9{]="`y;i="㴨=l)*s,-̬u质(7JJh&ȟ&)dtsqO)8ȴ/LuF|~rBՑ,kl&uQt߲Wfn#6䴨JEH"w|mA鍯Q.MnA&yzOTGvWܚB"bcZJCA.|# BM^EȬ +2̢2)a}_]eވ5YM1GL?F]DvQU{WxfA{)ܵjy)d2/d{3.| A˽E:)}ba+t0hj2,Ha<{iy>z8Vcd "D$PլƶU[0'8csH%xeSE8I^_Ѣp!}K-:O SI$JDidxX,.[MI2G2g~̼+1)pٯ@WdST+?DmaGFܣbM?^64MmJOq` n|P%?45|K{=cqs˵SŮ/̞__ è!-oZlZх*@zꟑIm<}fTx+Daja/6Z +AY} S 'WkKRl4歼U[P*ڗ?닳 +sn-QUnm}_c/)́+z'MVZ['+26J}xFJR~~0/ щ,Z-mQ?dJ )vtqJsxXY AKSRud$5L7ni^sɩ}։0=Ry"xQEqZ=M}.bJPJ+}gqĽ6jfs=(纍~,m %t9NysMȩ[[kkh3D& צH"ڣwXb:#eX*wCv.35jXHFۮ%ɫ_p\vߜL5BB*AOPQ1`.SL_C6;;ʼn zf#|:`M&j +K:Bǧ4@5=%Hl`D^ιxUAF)OtͿ!J~P R8Hs賋DrƱ7H3XZD,r5HhHntJSݚ.SKM]Z؎v2"|}t|z? x,hw]/Sz{8SP}75뀢&at&sM]pH~ѭMi{0֔Z̋x +0T(JOJ.=SRdOe98H4z"AQ˜HZ ӱ9t#Q[^T~m'KHIyDdtg{F{Q9* +nPb¡>(*TB:^ݰ]-@>m sF>Vo#'{ 1sXUܿUuUzt>@2JĺΊԦ:Gm_Z%О#{)=6AC;x/AC%_D(j_l]NG;c-DͦXUto.<|N+uʜlYB:N%7°nXե=4Gat?y@ia8I *I5"_(NǺ7uLkdIy߯"u#>9۞ȦF]NY>SRs|<|q!d|y@YKej 6u@]Y/@Gqݧ,k:r8[yK,Tw4J?4_!{vkdi\y&6X +]&[=+fdy)Mxm ;WIlSg!&Z PLbYX8ĮC' +mZY Tp_d !Gb(MI'Q%=JC2̓(iSr93on."վK3ȅݨlW"\pl +k$BJ5EbMQ +K3G)ΠK=qB2b}SKdg&qxLEoGlx _m^VCpOgr oWEP/@9zW=@^dwW}"0fFkv4T*7*,c3zHbb$SxyFRRm7+mJV)^nT]3mA5a=IM>qw*ar)6[sw"'D E[jT1gȑP)/,;sA ZpUiZbtєZ.6ՔQ%x^CהRcwl=Z +lA9pw抹}m +w$FtǙI$.+'vHL% +!VN1bF.#`/9HZQ09GauZaYb}J 367i`, + `8EU,'սF>*e`6U~?qNPd幀x4}r! +xf/3{'%珶 `]PyQ|)0$L +ggBY10EȩI8@EZ +COQ-LJ]?AiNw=@eJ7[g!ԟ<ӐVȡf\>F/ q{#ֶ]Vŷ#8Wڈ9'nFjcMVfk5SCFNcUL"Zqmi}_`g- [w3 VDcsHNy;_r0SeJY50iT&\" " L;l1Wgnu)vgEQ7 ~1({]0j6e+P] r]-dMGǍ:y|,.ilGT`mM+uJ~D0xk$W$~Jù'nWÆ=&O(+4 r`c7kJ.;Saj#hs<ދЖcq7_bFˋRT,M u`"dPt] 9ErK#-y[LX0*L/'kKWeM +RBEFsQ.Fe1_kdsyCYBP@'XtdL9uZARUƅ'fk:ţ,rT3<d*R -֍Md'I-j'玼vȧw3ZtuP0?sMsԌȀjOxҌIhr|YUW)E`~.ei;4i0!Z#9߃2FE}{ē.XϕsW]jmLd;K |)nsNu6?z-VTR\O-%$nzC @KBgVKl:AI YϿb'24ϭV?z9X}bD j]C̢KrQpEI26@]F-f\FxGcjKP#{7]ph:')8{3P|lFLk1z.ndY46¼/8Co|\4wS,PWVce|g׮/M< /ƚ Ԕܺ*=- jb1 +oW2cޡ>•QZB(|}2β9vȥ@woXB!^ipoMsIyﰵ 1W.Eqx,tLW+UhZ:]rDMO0|g2 &SS 3ؑ cFBB LjavQ&/0pB0n)\BknKv}S9ޑzM=^OƵ# 7 >ȃl@wz +i$:H|*u.h6l-J=; ri#ssؐQEr$nsUQ(b"OA eBΊ F9:,|>NK&A7bD Odz X|9ڌa0}elQ3E 3^5dB.3 +iG>+6)Fm:5 pKx;tOU|~-ڟ/gD%%DeTK rNJ}o!)MI 7yțaBM0_["T8*sWShC> wVQl;b_s)(Q0J؎8y etxO3aW$<[rPm4LZv IXn#xpQR v_(3d`?>kjԟv[Ε1'YO^$!sJ 2)X ?Kϴ ` ꡤF"nt 88hDbrp59fxv/s.$HT5ҳazIiޛfK)[!7\,2&r)>1Cf=j㬴 ?f475E')^K>z'ri'ھ5wɜ2͓,ޡhJRzX^S}V3~nz%qA0[V: Fa/6g86oG+g/jQ-X٠ + sLD/h}&Gr; S+^Sz7ckyq^A\ɘ Y'Dg70sQ)z+Tb f6aN-=d4 +oR|JITwFk0?`y.)baۡ<̒^L3nrGLdިUg&X_qbg:V$!A#ߢW*rvV!(y bHbO^fZKDMD0x8 !p,HrM!uuCt*?M'@R-JlvF}Wl)) +% LH$mwxl9n吼sFtn@x7$+4zePOj +T[a ^dG5Cǧ7j:!@H UY|Tu0Oa!t#1`IKd3Q)xduۻI > z^KN0Ja +؏c,.Bg͟^'h%yiaEn @ؘV-wTn/ T഍yUy{2~;66EUwb_zjYULV ?K?!Fe}9U ?"~ E}֗ ќ :-0 (Xr7-8 d%X^ZnBl?==DX!O(YGoӳ ?R,M:IԐbNk:X/{Aڤ ` *t_'zmW\򋜴'XM o(±7?^1]uaeyqJ>L +UU[Dxw_}G,,cTm)% `֚c +_v@|ۨmot _'/mѥ|0]VDH>zf*x5z}lM}~6@1zŤdi}DO:kA5!55[C8'?j{EUOG"£FCvDcC +1yB7-}jHAOXhfcf2pUdϽ)JYu8D|]wBoeU5ִ>_ JU>g*&V/Foػv]k nʉP.X ^P,yr/>mQr~DžJxgƃ$ +FV͂)+J|<Vy񦵿_ +CҊLCXM8D}tu"r?<$-Z sA>̢ iu܄4R),fkIBw)`6?JƿK ޡb 6:ݜ']) j_%v@8  Yag %lrVcJ#5 + ,$[ҝhru5N^F L +gG1qd,v:6/h"^JbNw;5Y?)vT:/h"{dv/qo:$ Kc(h~*/أ[a^?4lXriH^nF)4WEΘXC@1oL'?#\n.x"io%$L3Kdr=t>$ssjNg^f!2 ~{m?&cAsM eD9)dqk^HX˼ +u t@']Rû1OC7+YYswm#EXcF<| +<k=-2nQ$cl3Kw]|P^&aȮ^v) +BRKMBQapeHrg !s1wCrD&i Ÿd:$N2)B\hp@2I)DjTj_hDʢrO7,e7d؀HA/u50" K[zWE˰)-G|p6u-f@ZP_C(l8>8 $vSRsߋ!)Im +@װ,RdgWl A~ +(! +9eJj5#]ND <>>〕҈N+8q&bBj-=wn7lX\rӷeC3NTC.i$46||˼[KW1إE Lq}N1kcV eFª>%<3R 4qd5b2tYTֵ0nd9:HE#n_6E)b;DX7]4H@9% vr #Onuy2Qhzٻ Z3U9;d~lӃ޸<xZ[m6:4>R9VNJ5 xULS+Bc1sT6f^aGcjoƛ |GpgMEZ{?Q9$~c-\-v8\flPk=OAS^BP{:H=mݓQ(pQ1PRB#kT=Y[mdg?8epXkePíDKVkT μ"7jGQ\^X6d4*W& +B|C[fњ,0VH'v<4ɝPW"NKof?g|}L^?}+#I kn>x($'\e1 ,_־]QКu7y"FCz]e0f1%]^_u/Fr}/ )v{R2. "tomr^0Q E\0e.nɖ&(Izv)c|Vn hUuN򘪫AdOFl:!M=99<)*{݄HE㌀J3. &gM6Ϳs34-G>8#pΪi nF_ط +ShvPH5 gm /6w٣S_ߍkw?IBNEVkpW)Hd*r0v“^JIVk0ζA!*)*Ьg,+}v2%fdoֳ +p.&XK46\~/PI1>%3 mzC11Z9ͻt,gOO~Ăa{jYZiaPSB+kʕ'4۞c2oTnVُu3&ip$r!iomT@~\x"YYI"o +7%zMujK78EdBmEu=,XÇO ODqʺŊVexS+B".E,iD`4.'W +ͤb%/FOx"~8X| +8K._!`#?SSG1 fG5Ӫ熫vt7b|/^SpEm e$`ƭN#eĤlcnsSeR˼E|Xz c̰K2-QAq _>V95)D +E(b8 jkz +v\ː]9ջ]J/ZIv\|n?&(WAZ6{-ng)B{v!U>THl>PYk]zÎ+0K=~xtGڶ,[T`mߧ JVpqEMNQ0@E EoY90zhB^yyhv)v1{>?e31VgN+Ur7W;sAqDx(YϰhS'f LgxХwǤ.R+'/syV%ੰJbEQǐI5WC-(8F5U_F0[b`D4Q͘ؤvj1CW;=ST&lCIS)t 9 +n_r\gw_giͩik" w8>`ՃBX/p#-E-[kuMPFUs>$$dН5ltw083*!BdBFд!ޛ ݮE=r;ErDJ=:=_-qUۙl a0:)2T8d /ӿxb~eځ&CB>ŬZm0X{Pxlw V"HYW͋j~8n`W<0kRϢYY!9].H7A $`T% YX0ljw`V=ca^5g cnJvx%ix4ƿlˑ/Z9fk;Vh4H9`1s 37?H=mgY##)>uUwdULC@5 %I# %ɸU<( k[8_W"[pIG-K s'-^-GL,:cAe s{>bgby4äd(ܭ˞Ϥ ˻:v&o@Iu G!jry C\qhU*6; +O#<1R~?.o) :[EM%] 8|  [.:{dWz0f es|]B~n< jisFƁJϷKMv ;--D +a:Z@p+@X^VǝC~\v'a;u^3O39MIK~~͏y0 Jò(ж\&'3n|0*u#q8\P,t`}u#)\KU9Y8ˣeD"(`;J$pJN겙5 +endstream +endobj +310 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 1800 +/Height 2700 +/BitsPerComponent 8 +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 1800 +/Colors 3 +>> +/Length 20036 +>> +stream +M< "DJ74E]eJt jޚʍc}!QC |0hM-`me*ɸb]Dq-+]%zL}=FrF땄 $ +a.J Bk΂I=ݮKw*zX1JJ90Y'*m|"ojC^9ް7N|'On09U s]]_!ǁ9Ъ`Yw4x? q~73&҇#2ʅ~9(}.yx%ݜm 3!7{[}S5Lͨwoً+TGHLҨk(q4.B[d;WuQ#,;HyN qrn.VNNNH:.0$qJc%է %&smZ%\0kv*nJ.TO) +2F}x +>_FO# (YSĹzGY=zjdW1dKFqxQC +u@`}ϝx歮FbW)$g굎 כW.REػc{_;9镴 1[M[v xzPb*^96U1f >Epζ54ҍi^t$0:60=h^, tI>'}r{o&V~p1\½_H&ٟ c/g' qL 8n=SNBMЃl7/DiR&+)O5\IXۄ}|4um5On!!KE]"/\)Rf5X XvB~w^:7DfF0=41gK\̻$ s+ %(u,uq϶m &#ZM'-`'z_O!dT̳*nQv3o(j6 T +wb #.FOmTKYv' EzyB^IIRs L)'n Jg8|}kZjmjY-\o+Wi3\4l<-+h(da~7Q&EȤZm>JhE&+I3 + +tnX; g6[gZ;x,|?e۲9aQPDm9 PV\KRř;XQ۾t)L=+3v꺟 +,}c]5r{Ɇrg +P x$ {>Ih=|GྑU|ZٸCK';;86M e_G$dR08Fy4rn cג7`9b fgW1NN1]Y@*DLB eH:'6LYuoʣr(*,Z̫E@5 ȁ l: |LNIӂMĤԨZeYe;PhCC\ zV +i5˳nnv 8>Lu&#\rMndy'Q#W`:Zxa #FSq+ \ X nss"H|{'(RbgH)@$cIƷ{J@X> |"gE/d4ԝ|0Q2rz\A+( "<Y +^F(SHp13(2"[&mTY{z&>dbbҚχ0[;܏_ٸf|QA!da9Q]'a!+ 8ٶ] p3흕NZX^8@@φ8 4ko~؛2t1^af'3AG/m/x&|}WqͶeA Ln0%{Y*:v=s|ϡMUxG|#E3##"=]N捆]QI=yC +N܊Js +Kn Ic#c#ctR7O_EVVL> KކDZb]$`{~ +~y, s.kFŁkh죳{4>*|>,ԯ2WEҩ+:1gcCx,'6T/5݆LQj,doXT#֕l1FZy <2ؿT^+!).7G%KdbԮu;`g*9.'mW;дWPKeiRB"X{kߥ!G2IoPu3`pΕ1RSnYlW8N=c-HRj ob$x^y2l[d⯠qO2z;q;X` qUZpi-pWG}K$ń~̣7"=eqp/l NAGR 3!Udؔ: ID61} "3Lv̉bc"Ps{sgGj.E?oM (ErxP60QqdKM vsS!{!e*D Tw!T9a}ub6#6 )\J4%.9 }2q.(>6JrqL!\ηF;D#ɟ&zEkAZo +4|,1},"?T!\_B>v}0"m, + (h"aeR^l^L" +N[v_1zQU]oaPͿDM _аRü*Xתj% VJ-݃ {irOWקgW?Ssta$qKb-.)^ְ)7SHAK`mgJ6l0e +p{zy a` d0riq܈^7 G\[hSC6 +@ȵnT<{CлA-~<D{{~ +Ksye"XGP$g@w)RSDj̜;%Uuy+pk;4mP7Twrl a09NLm$$̭<5ߙĚZo,&C,ځVs?rW,BhW?>'mwwqBL 6\bϨΛc>XOA22ؽHg?TA/4Heː':T/ח{ãZWbվ.S2ƅdG^V9ٗ*8EpQjFt<걍 !p-W9 L o 0xD_nqtι<ʀ&!<5݈ZgԿ5Ix|FQO< ~5n a}`#6NK'A!|ZNiۉ7G/0w~{A݄V/bJfze;qᔁH*\ 1Or9 hуY1Y9 u^Qp^kPK2Y/oM #ld\1_T_2!#Bw' F)2rz3tL[ތ u:: `@ 07ףWisRWUIt9ǖ?)US5#6ʌZq[ĕL L%-M}2bkpw'4+G~|xZ)ʁFH:hp/_2Wnc<±aaJw)gUOF=ſ`Z޺8|38 X/E䓄C Ƿ 21])vfxiY} 6AZ*&zƤxM27w.귚axRkzg}`}*;x`h>MfP\0k;!8FŲ~H: >v.)nG:' dfo=ֵ y*0{?Ҋ]$@yC.xR(ZPE^+ U`IJQ\$NAn6.XVJ8"/ro?_Oۀk5QV1WE@n +f$Q]\ +;FY#15Yr8I|1c-Zh[4g>27|yp;w9*u쌴XlTűJn'+!ף|t&1EG2Z[&P|O7qHX.."n6=o{}nѮXL+nmQ)*j^O4*tt"+(:B=tTt)nwf= ]^)kv9OW]d,qO[C/Z G4 X=xk`/l77=WS:xٴt`";m\kW0[{z\uiU**֞ +cyd˾LP¿e3 ģK`^@H.8( au53Iɨj_٠倻 e~$k`zrY)HG~#P&=nw00=2UCeSq=[z?}^$w"|Ҳ=P a^[i1FfreYfZ`Fwd/we;ƩU؎y=`@yar*Gd=.F fJUFq 1R : =Wo:_7d*D6kEoW8/j65cN&3e"8UIo׵M"#!XkqD4Qp-~MN>q4F ^v/m#2W%W|{DQhT8i$f̭}1d0:^>A~~ݡMron\I^(DAi).YV,Y؆fKs8XҠ4|#X'qeH2-لhӳok(6׺ \|MN%)WH-OU4L3ꇋCY(x5LJ4!/:3{*+3;F',v?^c8)}]C it)|xjS[s ߅qWA>Zc>SJlߦfJW`8%?QIoKpDzA.5v#}]abBW24αV*ubGCCe͙nQn6;.N$;Hۜ=Kx;Bx4p2%+' +TRfYD`y)甬-_2>oj?vP:~h-e`o^ yGG'p}jϔ<3o\d1(/>ntr uk@ 0z'%N߯\]7LeTFo)Yw>a+7D˞@Dõ&3ƪ˙3 +'4]>:ƙL7e0?niYx!a* aҐ0߯(bW.sKRn~duaZ[̰;V/UnppAn*NC0*a=]4Bsז߸b^X梛ĹF2PRلnB!u^hy&J.goxGE!pIoK8tIOޢVcFz>ӑgh$F; z OE.C$DgQ# 1ַ&'rrj8ҶfDNSw1:#A'`46LJ9L,aϢ(evS:{wBGz_9믑&[h'w%x(|1nЧ!cڙ`*ׂ1$ `5,H-{`dUֿ'ȰVLr*"X=*b_ɡfؑB%sd3|菁s92vգBY@I*jbA')n_~x샠pE6N{nk > +U 1 evܕKVpb⴫A NN nX1cGGIy37ƇP_Tlrf3;^&B$A9ݳuLDvӲqUPQtFQƻ5eMOJ>s7*{' 1X:Dq2Z/*S(WgwщZkNږQŐrv?QHliAm}2:I'3v" QP!±l` +sԈ4.">(<#0B*}r!ԄMR">GN7-a!Gؙy6;h&h]?J"*I 07>n BLL +ʤiķU={_Y| SA)Xۖ9e7f1fG-E@+<bbS/ɉCDž~-z5W;KCbQ2lK-fP#ȧ%n֯}'*gnaN^A;ԋk"<^$Woڅg T:٬Z;L&[0Еǩ*T9oBНG3ݏ׏ IZrP0@ͼY!-:`=[4v.yfS>In+<\͉WXHՇ0{ί4?{?2UPR5\{5a.@ )C93v—vpS]-Zsej)?5{Y-솆acۋI e+wxg#WԳɢI$goɭP [p}g_yCU:> +i{y;6~OA66kq1lFE"(/2x: hզ{W֪LL= h=+u9$"f +7|LCQ X1{@;rE7؉qIpU? 6:,{Ȑ b>z#+E^sn5=M'CW;˿ߖw`F.\D!T?`3Si+@U$=*u*OO=Ψg/9L/UeD #|*{6XEa*W6/ &笆1~1V>@{,rEn2ыXI +xYdD6*+" FO>̪-&&?%K-HL9=)RHnCf;xH<?"1ͨ VL2YwPr"8W{Oа†%@֬[%`\Ne1q+S +şI'bgQGEe5wK> )o"U$6FU#v=bH-^n&ظ(=k +֊5i $)(Uu1w{YFIIHӧ 9bQG҅?$CYS& ֱG7<>򴐸 %vµZ5^ln_w.ٌL]gMKg:6S lZ5m蠍, (dk;Koڳ5Q~}$@yi⃜{Htq 6k#.޿\I,}TbBIWz56o6܏} ?&iF&胐t<0BڿFX +&fVB}пF~K2CG:;j-ESAg9bꁠ8}BP)l`zw1o|,UE"3Uil=%deg DӫTY U!,Q6C%iԁ!>D]@5 D;/O/,Lp[[t%_n<\ZׇòR,·cf  qefcZv#Bg)BחZ[Hp$T¡ᬋ;7"fg@NrM5$ r|,rMws,5̪(YSt!H$ܥM[ȅ9^KY~ygn.f7j.6Ff9ү2^'_y#ǀWOX*Pߟߦէ&du{?ZM+-u=mD bLмr@cf{UY1D0ŕD7LOadw%=6Mf^,²$@T).O(v2*@tgH%.ibdT1ڸ-0Q ?7f|k!a|ťz ZA2~vNqx 4PX&ܞ `evy z`{ɵe1k6l4g kZEit̄Lrtfn|xP Qq\{K7ٵ-tUT'TܼWպ3}Ynʔ u301(A](ULڢ plboDKR+hdM`.2.Qq6TEE@^˵r8{/2d;xZTHT"fH +}Fΰ0a[K1Ԕ eM:9 }Cu ,1Csl p>$*єU1IG n 꿋ݡA=(u}x T(AXR13^RZ@)aJaHXaGD<ˆs62IuTD[5<*:~j ɯmmǝ8sӡU5+)ꈇM )CaДPx}'@4$Q lBt(6O𥲜5!P:[Ś\έXBCfP$ +Kޢ1![=%+s>Sy[K_S8*P,ʾiU9 + ֚}#P-ܢx#vsy RNb-Dena4 _'S +`a(G!\/ZF"oKcȚi +A3qYmY+bˊKnOfx]/جgOkKQK ++w zqj&уI,/i)Apwd{g;+pʣp(%`u9s(v,\v!5#$jPMK6 .2# &qaL0bhNTH`I9"q |"߉dYÄ0<ϳ4iDQuѿ۴8)}+ɍhVtnꘉhTa7/Z?[uxf8>K{ +0a%Qpje G*{o.pKޮd`[.J&ʵ..S5/< NtR dWu6A bBy vKl4Ͼ^eY{ Z` ?|jrE_Eڞ|=aC|7QбNry l +ߐ1hbycZ:0Rh4Ԏ8 ={=.$NAu5G0f_{ &sަ@Iڏ+#kxg~V3 o.-G4oR^n6U|LO"#'WS?M6c>~S8dkpNEiT[5ni"CBGܷpi%$܏S]"oWqV:i~'&Kno33jdʊ hw}Du[Ewn~8LS)*izV\Y@aaK$ӻM5r$2!I)1'5)BMI"Cv۩V,bJ@p)NMm;|@VǓtr=~w +3z'Ka6r3um@saQښdu7dt CC֨"G6b=Ox/b GgQ[{wo6dra|K-,^\6T-IJ~):d(e0uGϡ]-I"Iحhٴu#h("ne,$L#0e+IA2sƋ)y"ΰ2oB`&&GYYW)-P!=cl8_ +Mz;,-Yz`lfwft܀vL뗋A^}8^6y* >f.Al7/~<6ع+zlԝ,m!pў ac%*,ެ` TB[9UdKpVOTI* D[~LAT1o$ܯF1~{vDEV%^Wf VQ64 n|zc˜_Z׺ʚ!d?h|MBG=ć:&S2|d5DTZҴcg:8}oAo-cJU@TF@Ve0VI:>,uu-+mmP--GA+WXi]_>x].K}6o Y =4H6,ʯwsm~%gPQ@&M\䗍(H=5I*]Ap N6Z.Oґ;AT`DzPv&R\N=i(q9Ϊq}PrfvGJ +b]XĀJ}6jI=zƪ q0<- PV~ҥ]Mr]ANc%w=uFF{8̭_g_KƆte8&^^)~_biǏ ݟj + %ܴ5nwsMH~rp {Żs/ݟ=2ÞV*Oj},'y@|WMN3Ky5RUsFwN^2*ERq* OT$kN :dkeqUejsg̛~JБ9!tʫ4s!9F&9ufVKdя$:&V(UB@Hr-N o +C f%t(Hb+] ܶrPk1#@|%@gȿ<BG:R/KX"|FFQV!:en G w2dsigQ|m&g砓/I%4XP`ek?6|r͵κ?zmLrF+ht\rm:2 ]J +RNU&bӦ/CEn{y+rQY2Hc 2=oHIEEAaFߠں+M{Xx;({$_*v<ͶZ=ي vk٬˛n&k%ڋ6J ]۾M宝ڐ)UK.^KQ;0Z7/l{i܈.6̚qTxsfĜ%|V3*>V]}]I"A~C7u=ywM%uUb+/dE>/NV"FunT0Cb4faN[dopq^`Б;USM5M;5񂨴=1KTX"_\i3edczzOm$34wq r~KGz$͡BP +uńLYlqt -3@'Q]W}1ֿj4$&!9I&+p8xZN tP1_obL>aUUws3(SuXaOffs9n/'fD>+eR +CjjXHc圊mę +ܱm_ tϖq@ +endstream +endobj +311 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 1800 +/Height 2700 +/BitsPerComponent 8 +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 1800 +/Colors 3 +>> +/Length 155908 +>> +stream +6G/>EpLY(=aRj9L,23%:e>O1q +S $f3ݿ}BӚc);ێ쟾AR53j&)n';=i\b$ f..LEpmޓQ!tpRGyTJ;O+O00'٫wߔb4}nLnE_V㫎RԴ#f˙?y5pd͠]Z]}=5], +D8 Pe 1kQXsD%YrCEQV +Jњ/rCjS*kZRAQtѓ+DΖXgqW{jkt>;/K,~Ru9i}fź + v9,ab*0q*B>\ԺhKh5*I\QEiUSga)e[_gsvq#%^.P`ѪOdKiF#u&h~=V&}QsT4㺑P?OΆ6DBVV 5T!u@WmeߡzȥԪLdyD ;E56Ti2^<d/gVGHT* O90̈́ɉhMn\[(/5sv6Κ}~ōB(v'Of{w܇JHH]/-Q)> L/~K +WSzXm.ׯ-6*3o "] aa:CQ d.5DŽZlddŃO +ueCHw|watחւ{p.7aR8IsOM%y+X9 +OEj#O7;Ep`fE&C1UM9.ya-9Y0_{Ì| tr![DTa~ ;4T[}?ڈg6zJ]\s1< .B{K):@|2^6PgoEoDv%ڧ*܊e:>cݞ +Yvrjn"h"wXQ{_2gy[J?޲ošCQz F|l[C8O!iX bH G.,/aTQjV5bs"c v^]"w608JM>pbiOdZoFLR-蒋6X~`2qxW>+$(3ҕM߯7:XnCxvx bò[6蔢 +b:͏)=A]P DyD\J?=V`6EJҋgqZ$uCˆ + qy/էԅsRpR+w#DPML Is8)O Y7eJž($"m +3f :o}#z  w*{`w.߳ 1V 4[BɬZŦv IRC`w5㝑Y{^ҵu@7d3_xӡxպRc5Ln$Өɠ?KFĸXI2бyR/8{j;ar8(ލ^m$'dj8V(7v0)]rDb|vcTek$Ӽ2'!TSi@(6RXnexe / 0 + hV K ^g3!x;٤cF8>.KXn 4qv +Z\v&ǩȬpS>{Pi~B51pMh?m#3 +LƸ Gd,r6K('V,SV7'YRȎ2}gѬtj} /1Y57kNzAk|cc9CTHG4n۞۩PR Ύ`| 8ifr՗wkX|y(عHHTA~NK÷PZݰN(=\1v4ubWtiʫE4~S!L|WP+]}6n$s`.w:Ew%ٗ|Z"e_ +VeYܙ4#܍;9>slqj܋rdD][DZnko*1$ 1XP1$`,O'm +HurTe׫߄ CB@F20W +>pnWo6W1Q dCGK<3+%B~/2 +b=_I^OW#NW AtbR,Hrw@*k <m`gGtlMo6Sr7mmFMKLcRQffe=P_G/x ;ʖb;(1 WAY.tԷT{tX!gm^9JPl❵sap=lFh\i>[i0k/I:I9?$W+6;'`iÆUKZJ,<yʨYbAoCƷhx%=E_VH3:lpTDG~(^]?,pz1:/vqnf8%;͟g"- +SᲕX/HH+{zrג"u9kGL:4(},&bX.ݬA< `ol)L U{czR#NA7P|`]x^NiZu()86'"U>rb/..tGR]ֳL֒\9: Um̎!Yl^sqL>H7uʈOe4}eG]V$E%`K1vmP xl᜞4^ D58'~euO􎎕y?ܐΟa|XB%*u?%Q꠼K$h!ZBT#'P3|˟:c16Q;q~ +Fye'dO*Y#љ1{C=8󏺺~OC=-ޑGCvLz`+%OޡXC|9)hWG\,4]'63׍_ LǮ{8YV\r@5:Us;ajCAi,VGᢋ;HWQ:vܲ0q&xjN>~Baݝ޴n3\xCn%Пi\|ON +jstyU5ģPg! Fϣ{!<ɂ**$+ >-qZg[> i&!$:fzưX1ƌڿ(<^WHֶٖ#M%v4^ˊ3TǏr1T|V6`s9o_(ʣsL'@yZݟtny`\b$cҨB{c4?&PEO*gϪP\V@g$3 …s!y3O3S]16% +EITu8[K։idabZivC,sNKљSeXxbs:ŪRVQYҚC`^ѾuviE=Rw&Ck2@d$$XgiS SQ%+ofʖK"q57K7aTz%ʕ_6uZEܑcƟgu [) z+2,u;G6NA9b'XWʅ"6vZ<]M2+6Š7vLKb_KiЀhI)YC6M'#J$ǙeآDVP,hb%f[[SFiNσ48lE 3Ӥ~˱\s!AJUH*V/wo` u]S:hP}P%|O{RaIwm0)SlB9hHQPО-H:f9_/TAҚ *Lme0aT)L^I0KqdҖpAI6I +nF.,aLg\)*D]AFJ:8dJPM@tu4!ـMj7fpNJXDNï0#kEtLWӅV,WxPc9ٿ՜}\d9mb?cDD&x\5 \p*jF\ĸmؽnK&G#gP`-e pŦ^D[*jOۂ܈WmzE 2t8/UEy]8Eh.3qd#yOX%ϞKLLz yO9ν쮱eImtqo#Å={@7e1XdHCu6Lt +K>ѩz̽GUgZVԐx9r #Ş/;(UYiv^MR;S38Rq!ߧ V'jLh#?""]eK>Y9`n!p5Z\Ae'(ٹ3Ӑ\C}l%EJԍt9IF1/*<K:c#f7D+_Yu:vIe[͆aθJ1j^!jS1žZVDPt,2|%{ (-42.Êah$:Mԩ +I_""x^37I]?Pԩ *Гm}x!Fʚ'Vgr5aAk4U'V@9S?fv /eءOǘtVpnx<\9?[i/y] +1xIgSXuc/ӎMP_*f8ܗ[/sl,`~G%9aB=ڐD+o3t50T܆|~)wy:H(Q&ٷAN͇_jYgNijK©/#a{_˿7FSݍFȱ{mPG>N53فFOSo*61}|WZ]㈄\K,Hȱo]jӉh=~#.U@ 8Vugfjf*X;ut嵚h -Tg/@r+_7Ey\wmx"Jac|E~=e$E,@xR+Z@ѫjȃϥt *ᵴf+Kޞ}x/D>A-ԑ%+8 y+/\k2XF zE!WD4aH #qӷ"򽷞0WzIv[S +kGf@71IBDGZqhO tU|㣹T2UKuJs.v`ī▓"")7lKk10čyvh@Ւd+(1gCu* P)K6ϞK{͐E-,tzF(H7 F 0]U5_*3{Z:hl!)Z<=cyX$/fƮG|g]ss>M)pȌ?‚Vh n6g:ٮ,k  -ICc:xXnab=1_jޮ9v pe5xZ-4!BX, bBǒ=$/;+"sARPSx(K4AkQ1l=r qyٖ]YT +k?4wDF(enj-I"P-dn~+X'lN}_ѫ.7)tJ,LrrE\U+$d@LpzJg\'|Rj7a6/B󻽷e wɍ!Ae_d."3 MFDg"J`,Fx.āfbH|00Z2Y)SXϗ(ҵ 썶iHr,ۮלs9a?A=IMw5h#qEESp+ +a.Tr:;DZ%!~n: +l~MɁCl8PM!kEٵS_ JNLbh(^bv/ Y +H#cѡpFHQ3:2-d`k;%')k}Lx8?%9 uf_6nS}>6x3R*@ 5є3V l,Wf9T8yiJ=D[;~asY2D$7kʟʓ/ +"0Oy#7"yNF[>ZKձn`!fE'5ֳdѨy, e^b~dE*ɇBn񼇑{*SX u)?6v!{;X?% =|L8_ʉ:jE(E_41~W'4uԩ/YGw(YxxzqYJ(ܝTӖVwj|.\"%<5&=n׶ @(hC*MV?j0cVXfa02A4krnȘ9~G->!Py,F +_xpGGp8 D{m@aNW4BKVר)Lek" 'T+XF%XTy@ + W4ݯSG~b{BpΪ+.Jpa^l_`Bc4E1pǢp[_^ ;M&c†ɚuc*׵(t%Y޷ lй& +.o$|-+*)@v"ky\{ʠV2i"0=+~H63=="&CL~t] +}5b'm;uOc'e^`mKmВky9Gr<L{MVw<8xWm Xv9?21ۚTAVMy $ hegL: #U,i ~>g`cj OJ@U?lmu@QKZzox7}HVr۟K[lWeq>Ys,pWJ0v J(֡4&yoLx|HC;< bO'[<1dzp~xxL9gB8J]>j<*9ЛJ·ITȮG]NT9{j܊ެ?guSҵ+}M6jeэP\S⹑,S4H~ͺWW:^_S 6,ȋ{Žd-2j #s 6M9mDЅ7Pn c!8 Ln#P=]4,֜%AXHR]VgGNZǼ>։4+B # v='@74, Nk;Ugs*0srN0uS.׭BL%#VMCjsС-M4e=^GX1yAw[} 0LZptn5/Ӄ`GBLa1fR5w#{?uͺKl̖uR)FgU\;krAeYIuWl'7BUQVc/G0;'5FcKG9\WpT. $ +΍if>J~%لC 7~QZf[ ~H205g'3MKsJQ}N7gJ\Z#q,8DII#v?ְP c6DxՒӵcy}w[FS);Вn~W9Sc7淛o讍-Ǚw#ɍY;q ճ^Ua,k JK*WZYNdE8De$JqghLX58prDΈ? zfOd/oNo~$H'o;k탢ђ}ۛN@Cgչ1}/_ E&lk=a`,,2_ .tl; +*9t6cVL\?\6s\}e) _pzoLϱS >[oa&U(,IUd~x8ɗp$o^,>Txki|kc@~mЦՖӮl +Xj5E!I s:_-F2Yok^nW#'㢆tѕ@0˸ZVb!?1%w,HSъ!Tp*,TSQԧ&cmqJeW͹N$GpA|9}>!h9ݜ*6FݙלYXX~nş؂EX}|ފmwy nb>sz'Z1Wc}"ٌTb?[Ӑb $s0l-1#ş k8$pGoB <ǐiɔ1.`lFa) pL;i1Cvw67ewwzZ8kвn(W +^I)v=ۑWʝ)z`7@P00Z& ,l +K~x$7}C(H!?=b&b +(`62Čbop+m2M`N%s]d$ u5z*Ni =\Mr4%aۧ +:f_11d#.EҺ}0<=]lM".8콜OͿ&,#`M4DşvS[$N FN@ک1 AY*t +D% DIΓW`emWUetذQ뼊*ٴ 3*f[Y ^'9ѕ-ʓ#L̡eW7 +n;.r +Ьq@ugVAuħo~ +n}h +/oR\WQՋT\qsLZ}TQȎ9CRB~o&<ܕ,au\ӷz_%@t4)dm ա nDbZƐK:#y:W ;WӦ˭o1_*-f85cv6Zbt{(yƧJ?viͣ Y +Ief#P1RZGb[ `TXcZfSqp uO};VqcF +*!HA*/^%PGis0u>~-Ce*kLHm}0̯YyK"q7DH* Y+?`> E Z4e ydgx^yPھ@8?BzYjƒ`/@ + q6}P7?yDPsίbǺuL*kE_-#Rt%<\P#DZdZZiĬ0ʂ<]Da!pr<,6ꗋ"w<11ON/2ՊC*t8֛8)a]7" +(^??OZt6pazDOcLUrgV..7:@`'&Ԧ/2K*j\C IEs&CC5fw[TVwuW8Y$8 vZ f]CR9Ewt/7cێ`D9#djV>Z/aV?$%nU5Vig|3#hBÇxoOE}DؕmVe3/Eں!H0:+`Grg0S4\jF.Ղ2r'Y9ɭeӳk^ +WOJr ?PKGc! F؋Na[w5K'bK lB5lLt1Nzxre9Hr +ԪX*RKW%_tɐASŒh!Yd÷V~f2bxyM_́CUPO@,6뻨M:Cz߃73BK J6"WͼpARmh;100%#[ kdGa%|A,^S]#+j)Zz1RUTGPw!/)q啄 `.> ].7|j~KALEL\DH^ jv۔85>e;m!0lO0IeGĥ1 m9ԤW:ݣ]y^ܦٳ<,\-ϥA=ۣ< Ydo}0j| $lF{sԠ6D(s'헞t +e֥}͖"QLb)"3ne a=,, NlO཈qΒ$Sߨ'ߕpܪGC3ڮ k_9RhpMC;Χ")FHJ. q.<ݗh(2"j(UKj;T"ЩFQชiZ5w + FhkSM@VkC-R|}p_vq pHuEeub:ltpW.ZߪSX ֌Oa+=~Xs:"r8 +"J1 h2Y'a8mqtb݁~2ZW XrC첀\.U`<90~Um +buFl[N"[hm{<[!Z2vCxٓ-%=9RhPSkk]t  +^Yq 3 %VeLr[-nC>vA;aaT$З|NQ73AAI<`62cb|T7{sJ:o-E-܀AM¤,{?dW-؛}mtz/-BYoF ^Ol3PUv2Q`ň8T2L1#3ht`ꬤCxst$e"7d!t(e! {'~hB2C5蛅&XEҲ^/R*cD=m@FN,RX(tْw>?yyZ>; *n(6N"H\`AU/)utK,'C=Sr6SjI!OSv;5 <[;  FΌsc_N_ܘ`֘A=oTf2`*7?+Ϙ|*7snndL n&f_J +2Y_tZ=p6&8$ߟAgO;T6DxH]Wy]Qt)NC0Fx♝{←Zygp@_ΐ6,qw}{063q!IIW =Zj~C$ZeM87O ;Zɔ ^º:kח?ghuf=O^;MqoPn1de&>99T'uĈv?31&ϙF7رZ0[=:d~xDwF{ #җiC,Q-:(<3T~PNy SīM+Q~d`/A*1!FʢvTDZYEvz=ū{=TT՗1.]Ϣm=BK|z@S^>$|!w"YƆae2 dl-ݎnBb+xVwIǠHUX~q{l̇~KZ{#G\aV[ĈSq),S=bܮ74}eaPRio1ǕWҊ{o yl=Zk[ +uHDLR3=Oq _`F{jj5g\- \(ru̘t*7?%ȨVO̡io ވ?t]m5҃e +AmoS ޠGJbdk +!VS;d[HZVH]3P wYGb2Yuw,Xۚc剟hx:LR&cD0ysJT*2\GIS);PS D~3䟸=h_ p,]\=$ +4|k+UUvLهu}$j/<;_x9P;v +%f~C蒈Y|Oʼ=jW(d#!%09`r֑EhO r,z)8(]g޾Ro /!}@{OK}%͉2h0qr{l72t43Gt<0J ;j(V5c!p}S +H +fkFX|Hb$J=]iARNJ#w9[MlB] 1oxs5 9W慢i >@Pچ1}j*ܞ8fYj ZZdS۵.)Bq/=l9ɽ?[o9m'R1 xHQi&~ )soX@H9xhkyJs&5g\|KxF}3\X;H"7Y1rwzؠYA173Ǿb.)ȏ +[!7s`>*G(>Y; :ar{ +v=< N*{hgsVRɍ1pwg0#4GG,=uŲ[98љMjE)b8xwUxCEZ'ai[fyam/ܶ3n][Ann4gnט>z 0!nPbBbh,+$  HpL\t.xeAP񥍶 4>\DE:GiYD,>^'wZ : ٴWWEYPo2R!+(Mg +Ik n `֖!]kw[H<~C7g1pEh-V^db:dk~ lU#wZ>0μsG#>ApSa3^Z*O?'ܯ-gzH^;FxB5 vrѶ+_4ܳ6::'QBHSkVtSZvr7At9GUv(?"B>0yZ}{f6YW`,edP1*?ḡT>v DK6)NPN=_E{QCˇa^ZUfg._PEZ4 ۟Fxi?hjHaPܑNr4𽱝[~d InǏ/ҥ4kK`A5 +eN{ `Atcą 봦zSd1G-&~N]bK!6UD{6iWсY޻)_ܞLC|+֤GcX@F4 gY +@jjg ǍPD&*96DB!ިeIq=EE D$s[S3q?A% +(Nn>&¥;P-ȍ,EQR8C*4J(lٯE§(s_B?m rS<ڏ!8"EVe4q3_ܴ濬47MLZȵ59 m:Th["\3.~beY +X"<'?egcʭ9[X$@ ǘ ^7_csV\+OGm|όAlyu[ #@;@K1O CBǫZ]EP:'90-ZQ1'_f·uZԎG27#Š"~F7/7dypp)Cţy +&VMܐ>yGDSCb#~)K:IC)R/jI6I<(;ydqCD(k &|X@KuAỐ-C^?TTAznCޏD*ӷQom6'#)DUI 3~I#9 }Ǒ-S\r|{o5 VP)1S-rǔ¥b%3"4>9ȧU&ox}WRYSAl?O*w'[vA~+E!cDe.덐wI7kPI6i( +J!7OJ^"+#}-o.TZҚckߒc߂nw2 +O^L7\b:t5%hf)d4}CU,Wa%B0ke!R0m3΀}$_kXL+n-rupv\:Ty:zT'_e+ޏ&<)g?̟P^ FM@{DFj[R%#f1){kw?(/ H3v*~2@cQDF,(2qX:kcH +2.nW},)Lj(>Qm{t{0Fc@ BdS9sǂpq$ @!o.O,<2٥t nx.JKWéNuŽL6̩#19{fW?Cݸ%o+Źw"OW*$L|[^([5r/`sI$ydOHQyMzRE3:.*/8WY +C>g-IlBvYr( 5]Y5y.Yz0B@ Keqզ^) Kyi*+E:䐎+qz.&$1GZ͜?M <_\,rxUjeX ="m/Ye/6E*o#2N SüO\|>&F{[iIi?!m],sWe#1ioCuM6,Nh)d[XșG5xAD972!7a!.x͖&Peleḷoʠ3)sM!ky"H:x! 0%uZuO_C\Fn,m]K/$RE >qԇ5OY1o_`IL3e-7[ղNDz ?:kV{BJ;, }/;}@^e".V<ۨZ 4[F֭E]yTqf)JOLm7p!IbsJSTVt7c(y]lc,މ# \PhԖ4Xd=orpXlGEx*fR;MѺ7bAnc,7˟7lɿyR?x{墫7V{rGracާ{T͛ZAJ:hW/{@Fo9('[(J~Dسb'h ]sVϹlEJ\o%2/sLZϾ9dȀZ) IF,VR$f5R?w[Kì%(Z TY3#kf7ܥ2I<)v5qr%^/ bC3RuBT$NWtߵrdq;HG&zW2}<=|5IC%y^ْ6ءŀuV6\V += +8fC|3h)DU-n` +s){~- WD*u} 4ٽs5o L93sj%n)$Yʹ"qX9pg.Sv)ÒZDtXR-mW_;kan׿&Wĉ{%&hK{8Ƚjjyc yzMW}8KVGM!0q;+l2O~`jF1 +92MiAdں-}Sm_(K6M܊L90C* KսQk&Pwk]y +&O)=C}bC$_|^-"=@RC kb#hh +5*Fq* Cyn7lޚMwH!v3=q}/JI Գz[6?u +Emp LCX 9EIYa`[9pl2(#'d!=+Oo'two('oe2Mvه!H- ~0UV|l2SC?',x cMZ!Ϙ9ӯCgmNX-89 +;!qø_qG#QS $blfSv~[[dptdߠN:#}3+Xv}Eѓ8@[+7r-ݒr6qinsee= &ZĺWqܧ^ݒxJiqX7߫i@̦m8.:YT__BlOWbvPU1B\Ç[hlR=1|0Z NB_-JK<=!Ytak6cc֪qiC) +2!tID湵-j2Iwnqe<c#:j/0dÔ-h^Ln1ixxT._6>7vK/MkĢ܋%{h]Wl).kDCo mP@[Jjv@',T'6eT= !ܟS@ sI\HZ{%9\fmM+4P{"Ɛߴ{¡$j +7skHfᱳHp|. [`Fk+CZKHz`˽KQ&3'ىc{mj%t +ͱ^2T[,wUǨI\@`kS [qq H~R300 N*u +_xYG4wVe˒ ŏnܟoo:OlV(j'; +i7Ya(kֽ-|]EQM6WVdZ K)`B+G2+OgSNCV1JBxY#hGPSxgz ,.r|ؒjV e`B !_;|RB[#A,C8\vEm+14!4' t,D#ԪneR0u^t˜䇕H54MQFl@s9I= =R1eD.d7%vPit%Z}' +h>?eKuX+u ,<吟6۸1Xn^c(w&8ۑ) f<"%mDT NN*/ڦ8Ukgy*hNZCgy>nLrhP"bţ{Ep7I؋u[%fnk9OlcF5E8I=S}9i*w'#%nJ|fr|%O~fuޔxە?i 缨ʰ >Y:F]"MI:Ć!!dD~K'lz]NΑM'Ȃf ḋ%Xl8GIvFkSm +jɴ\> d&@-<(btVٲR82tyg$gp5&έoa٤4NsCLȌFobqbV"!S1RYD~8ƳU]-Qq a||yO2 }E;lNv^1՘d4nt}W0 m2z֛ ~"xN)֮ +O4o6rNYiB}5f^R L}JnHdc? >MWo6ۯJG jt@*=jpo~._|[&>H\X8`-K-FbGw0G݆t$~fިHm-;VdD<?Z2Po UBeJQ6R'2g F3@mxg!FcQDQ<4E';q҉2FHbxI4 *\̃0ڛlFRJ|7+;\wй)inL51E+|a>ڎ7o_qQ9}%/ԨX&< +_usW}*>\w26<]a *\ګ M k@&>μN #49ۊӥƇǛ>tm@Cĝ]c[#}H)j6D)jBKb5sB8r 1}I͸,Yx iQ﷜yگxks_{YD)8hEL`|wJsa5C cu*xSIOnJ&8L..3kb$$WdfT| ͇_.Us mz H/Q^R۾ʞRQ7e"^ GA\dE{^# DA*R!Y1Ϭ]YBv/*g(T`@a.1OLsZaڥש7{!VW=Wb.16%ΖeIYBӫKdO!qs|KMS:b`O56r͢E!;M $X?rG~C6o\y! a' +s B+1NgwF)4--;@R# A, +DxfUCԽ>.YW7* +,ޔĨahVQk+Y';+95cK?jG:r_ES} |[/ۙ^e^ &]2WsVh܃oևwSSU.ǐQ :e;ئiX `YkbYe*)6gtWq8M0KX sX÷Yrq u }fUm%R#iVj>%8GDB?)$=5?}|6#Ftb aRhQ6S@7NW p[.Z eMD(9ôRSnbYڥ"/ \4l_͈PĿ|u_(v]*x @zJ׋b/CaS?Ϗ;|.uLwOm%3otZ@IGfKUm^DCJ͠ +7g qgB6 EYCZKg 䫈$S3էw[41v[cX0kʔB)CpfbI}14pN5ue2H$~sQ_7Viؙt(`syH&\#:S,3VSxh0 TU8CK!&+|,NZrK!qH!M"R@aYVc}΋4hպ*=Oˍ &Y]aeLj_zY[f$ZA&&ʛs>k2>)bN;ОP{`OvUp0gWoo}!}z +Xf7%О20:KBf~)ӯqhyNN6!<\{6H@$A܊8aX b-4l,))pe$CpqYd'QN@/`޺~ b5gK +yѹ=M(noF LmZnQW3wP]~sw}~qhxIR" 6R g K0vҘIHK21)Љ:Uk@$°& n۩/"0VyGh*3m щԜ.+dȷ/ꊽv3>^pw48NDR|䌁@L J.mmDwwV8`N1:ב^8.]ط녧"AƐkc,(p)v;B?Шw/FqWZD<-ZJyTaF\de.!Eszq*˕;1jw`I{֓ + QFDxom'6 *t0p־"cpXQ7Ġ2GCnʅ-8i$@Fm{:!ydn򴎾O@e3'Հ=IfE%vuAM^O(pMIBm ˁȼMܶ~ +lZ_qSU ڸؚ`2&.L%o^Sߪ =P>!&#PgǏlUN^UB@W֟ +@r3!Hܴ4?"F`qʱF/n"^Ojr!F~z-:ZFԹ6[R C9I ⾓Q'מFh]psaO/SZ!=6ޙlug˴>w[^Ш: D[-i"Y&dI m&YX9#?G-4kSrVO:R-_es�]܉ + M5׫b#*QF+z/{+-mmwK.3S#SphtA[Kj[۳ܘޕ-)e2=.18ј8%NTR/ Ϲ8E0zb +n8f /ع)t00_0qnI]ue}ܸm#.D,7ߏ3*9FO0SVTgkGc@oSZŒv842l#W*dbW1ӧ/Z‰Oŀ7^"T)H㷰Z)K#vM,t4>':@FRaVt-p#B PŃV`jC;>b-^ghhs1D&<$܀#4/vTsS䣒y!=`*?#m 9L_*Ur鮋 g ,}H ,?&(ŹK8I9.Nmƾ.p>A%HrXfcǑ2~;6;&xbpȒ.2m/*\!(UBcrx Oi|* H*C$_fCjCNйd +s)c/{wxv'7(.P@XcfVVh@ 1"g£/{~[|zPYݳ1`rZk~ڧ^|pu)*"JL1ᶇ:&X_ ̾]6 0fh↋GLӑBi)\h4L{F&[ʮĶ.#܊(z.%?*ᄨJr/,eNiH;L]t@UM77ՕN(%'q`p*[3|HLF@D +r]9KxSpV +9yh#ODȸA6Z,2]ִM#d)iQۗd#@Yk+3?K\sךJZl#2"H J$rdx8᪲ہjL%;~AO{Aq}M14zX|NJ(-5k{2t''D4.e*sZφ@Ғf&鄡I=Ƅ +3܈V-U (޸"v-{W#՝âG>[?g-~J]{ -G$%e>W]sRfi >> 9ȝq/+\yjCbO-ե;&+]*sVtŔ_( N@p`/>( (BoH؀ 2<"=VC-:tѴ'Y9'J3rm@_uGw QѝpхT~ʦ>[\4EAt` ,F!H[ׇCw W9y!Zt6Nyuҿ iMr4i./}BdP:P(إߦT3תő;?ng mŧ^}\ቚ.ե ۸kΣ\NbMfur" mU$G;QG|x XrOt[u8W/+@kSB{Y)l< 5`;5wKYZb%KŻZ-11N kGd32ᝨoHt ڑLqfZF$f1-`,A"d4Rmi!Ғ1BwVEO`1.pZ+o׫:Ra%4ݟPcc*t1je,P-+iqsp'hE5D"Pp|'#c8v]Σ ~oe +1egB޳=fgBǘg>㊃ϯ2a7(":ZTfU 4>VʘD-M嚉1a[">,B-v!tGtgۜn~Q8U_UQ.kZܩ'zHE`bKq,Rv22QhBbQ+cP|Ӣ6=-̼FGH/r..DM+}~Tmd6Q3ǵҧX\>i[$(z:JL"5𛆶\02wǃg=`Tuf>DiT,a%y*kY*j/J"q +g+$o`qN+k@huJ1pow9)ehWZ0-BNL+jW޳&ぢ$oy K !;g` < 1Z:dI]>KL{b":v +\:㜎W 7-hV^^heɲB+wSX9XUQlG-Jh, x9$zLhYs.T^mKv`0$ OhC]Z") 9XRc-SCMO+lÍ0L) +ɢrɎ u뵇rQ+ߔ )yCۥ)Ty*]2 V-v!9|8 `Һ~؟AIr˰^w@6R' +{)ے>ӎirb<"bqf ,/?`_Rd5N_T0Sdbyi_fie.1"bR6M\pg +;UUVu%#׺ rK`UVU'u=֘_k$9%aiFkCKKQ4ߕCpJrR GCB?nQisڡĸBq'fO[8BΒppL!D(U+^P^vUA2Ԫ ^ +_OLgfk2f.iI >6HPJ*@#X\gZ'b8:؃D1 +*Q^l, +'U4"S`GWj*"C5蟜vަ;05R^4;#1XnP &yސ\7[ +>p)SD5's,H\dsxES|.c?'X> |IтF6l3ڀ@+|D8[.7߳7,4+vx2T?tikMGQX;ScsmMhAӰůÎ`@t,BXz+{jh%⫊mtvDkyY9ENQŨ&GUD]g0,` 2qgtζw1k&$2_#cP%¸KK%oi0$x{g'ᢇ !g7^=]D\.ē(@a/nv^z +Aپ&_ѬKfbgKϣtVllK\ 3Vp#'0n+ՂR-%kCA NW!ye±u "Li聊3ϙò +|ΐ{kfGŽyڶA>k$MK-? +tN>{&̆?,H^c ,v;t dn𴋃^]ё[3.mr^фBD9f$kaCX٪nG@9#-Ib묃`5G!s-WK`p#:~Z1VIB;uT)76.Mcu}Ot];tWw1O1|]wJ. T-[WDareߟ+Rh#4j*}ׇm+z|X ?Ny5VʲBLn!+`~Ҵh%"&~JWM۔>q_0c /|LԿX̑ 'tQu@db*F )J?Nfq7=' x'\bJ7qV JďD*EBA!^yM1Mit1ek?\%}7[FHgӓZFwk7N7U%QpuנۋƩQhrGPOSC+SU+2->XL8Zc1u;kz>49Ŏ 0A8^g0(!݄[:uHQ#]ݚ9h00eK痤- P!(֤fm GkErAlBU%tF=β{27dCYY{avmYnKY+}^zA"c-?qܰUE|@:MX\).J,7ƒ^3}ҾosIyl2&;IL!r4刦}epSt)XRBW C6!6@ngs4ʗ[ IP  m`jP^scʄkbj-Aj7=5- yUiɎVL/{\ myMuj|C8rE}s;9)9<>'JzI zLZnJShָI"K0j~$J-/tdi *{kwE-ކy[aIfY?+XA&b[W9AJUw)?p%|)| ޚ⃑ V3>:_nXO9"v\6Ex477S.=2j_jlqۘݟDƗ¨%QKLiaˊ̮]tiwk;f9]q^Uj\7&Xk uSdF#UB.Mp/zѳYK`&ˆ((#1>CROYNNNOh"Öac;Q FG1s0Ι_#kOfg9Vj9X=)P%JQMii + RB㬯X"jhn߸e%`'@2'/DTG3B +}8B=c+KDyS>N2Ӯ*]rㅙ]$k(cx7`{hI5s|hbO)؞ѐMc* nCsvoBtf~wGn FCտAĐ/1d"21}_zwI0)7l|-y'=J1T6k)z&g3>TSʬ#︖WQ(@ +<9ྫྷz }Љi@X AG\yAz*̆|s鶝lłG9Rolͨ- o1K|^d6Ҋ2NA駨<Ў⸰ݰ)e_ w|9c?+85'_: +I}c^iUXenJͥ"jx(lcņIMZ/JD9o>Jln&kvwKL~3ə%ԉv;v:jN{\,r 6"$Y +L zn3sjzb^Z+tbe"ph)=*jTJt}N7E#,HXKt)tbhdl)[hGOrn3۰,n8ّ%i4ܾ[ kǚulX6Ui(M)ќ h`2WЅPJ|KA7 <>L +*ʿD 'h=1j*~3C߀1Vm>nCGPEXCeEɅ/s8:VKkV+uY!WR ۔7.VJE^ܾh)9 ja^Xgvk t,Np.wQV9q%*H3 h`jAuw*}p̢8j\q_-/9 ꡣE)cD\`1> e[b%!)ѬN 6mF8wb7^4+Tv7zo ܻIm2D c,4gUpdIML~r(`&Ѫyh'V+P\ӻSOr2&?k Ypp}>٭L__$-dDsv6$ 9`fdvʖAyz٦OxBYFif_J}[F~ON_2Eۚ+YCSm%BO^o]Yv~ޤEe3p68`s34=NpnB"ww.ٱ)UTibS&m蓗 !~㕕zY5Y =vg9~ 2|F]6{v,e(q.xFBwA^13Wix/E'A!$XY*gÞ>E$1֒B3EYz2Z/>dA0 YƳC=!GAӍJUPa& +(rڍΘk U=XU,M:הU*xg]E܈@nmO/p!v6d됈:=<, 8ؑބ+i]1w!iZu*QfrWG3V?!JKWvxOu#ZWd(V.\Ǎl=.5yψu?Ewַ&2'iQBؿwd\{ҁRI7|AQYOG +IO!!jbckf*7ٲWVuYLŌe'>@ݭs}? +G'U'g7qlrM0RofbQ1Bn7gC"|OZwq02yy.^9 k)w`: ?N-b;+ӯ3sVÓ#  lL4}2,VqPIξV;E!bcdTFn>>W N~tNes?nAڋ"B +_4Lh<Rl+AB h>UiBx5^d2AgCpUXI~ + ˁ,Aqfд(/ӥJ$mҤ/>;nhG{52+Jf9~?%q aZjQ\6o(Ar򗸈iLE?S.CƢwұ+oqbݲzQg]ZSGwI m~9}'j T je%+ض~{}2A@gzd}#AB$Olph)ѦP!q319/>̭AO-h+FyaY<~OA?!MV[bmLS|<Ն@8kmMW#@}޺mCrâH`nQ#\H&,rtI!?zkzsE`<FB},5lw\SuW|I'I6R&!%2}yn,e>AcDXsg|Uʞ'0fKoօb"!.{{R[cp릔iZy~9r/z.hcqg[gNef̳[7./ܽ6|Ϻn")FYP;,w%P]*/rg^Ӟ0 ei +΃ߊ-NlƑ9s:Bz850[dDk]vlDi=M`,qY${$B!Ez p-7xFm P$:'V]w_HZ^75Lji@!Ps QNg{OO G( +β +T?.q9-7lbe "7mR-w]7'S|Ҭ3W̚EA_7Bj'EM5?vMp֗J 5'ET-={çL $z'p@(:MG!─h +i5^f.ZFϮFxQ~@FV]ک؛O?Mwfv 3$ETcq RnfFt,XeIڮ/ޜY'D1Zg ,z +y(j)yʰ +&x'?I>>SwOU<[y`ln^kꁨY#*3u^9@&qnbPjomzG +3uceÚ8XҦE@ui&.B{.s<]nМd*qzCm޿-/yH-Tn$vlфLb!q!;~!gAp8}Sj0/[N{ACiy`՛¹m]ƘgTe +.?u,=$ q~>K]hś`JMF6pa5.29TsY5xO:m*C4h\.gzM&q|NJ96!ϱ7`Q +M ˸\;1"T!f~t.&>/s)k-h/HnN.B# +obt(i~XR\歋:XT2 }7k{(N u؈qϽ6Wf;LQܨǃlEXj/t1RѸZ=SՌUDa`SRsMs5,$ X4NmڻVޑ[ңzB>k@ { :%,1d&%ty]x +рxNcdr!A_ѓ]C:`ٖX.7@Sgwi>yCJ 9@oO9La9=wNjcx*%phKKo` +\.b# aG+e^'Kwc[,N#i;:)+/¡ ɭu4(^@W\q8搙A I#<#LNϤ9 PRYXNi7܄ՠ)uTpS7[ ׋ ԩi++1$f7#ia劆>U}*$Cyɛnb-{f#)^dU&g GX$UCGD &ҟXh jzў* mxfdX[dk[߸L#cdn>a6<vwWIJSaΈ_Q#%кgK2"}_2RֆPU/7DYD߭BV?)ʩj$@uS +Cj5|U2JkiN Ht S,';i]N.SqtV)oW<ﳾXo?dIj\p7H=7r+?I <;.k:kV8 !ÐVچSG<~ܜAaȈz˭'p1C\د-q))*`a +B2}U…&Acri QK ^ּr]{oRNV !~-_uQ,Y[;X- )-'2:Ӗzp )~[v- +ES-DwgR@Ǥm%WhǚW60 E41\ +魧ѽ7Jtzi|9McVwG*?L6 45Rf%(3ћLK8!XձfN?{9WǦpWvNJJ|D|fFT=1[ x"v)gUX~ oo/W a.9{AKW gĀB!.Q%D0Ubȳ(\k4[1I/#. L-` +=ـzEvcuR1rNF9. )P JbR\DM<3Jtt b)3aUr῭6>7C6">VYH80 M-h6 xAۻ*mǹAXANi 8n2FOTm䐃ٛѕ"9N'wik𦸔@Z29 +ĹQVqI6UO} ~9TD'ƭAeQDL:͟!rc|"CCv޷:ZUBz߆Ai4Z;-eAK"18xT%![c ǀ5EـȲ;5PkHr1@6˃ Ɓa>q7hRXE9mfⷅRo_5\fkϷbۏN:V0[G18E尋!ZEVWom,O/涽W A&;v[(d%쀅UR @+#gqt4 P;:zM +;u$ whgޔ!躨HH{\euj=+7-g+b +{]%!y!R6 $04U^ Կמ`.E {r}f\cn&NF_*Q{$&È>q`C_=j>jO9;y V:rUt< y">u;5mgYWQ@ƌڔثYwL 6F^o+TR)E479hq}G䞂->BqJeU(99ĦsxhHsRb*7l +Swq\+cp8*0= T1}]cYVP|BloMC[ e⡜8SHPuҗA/`[g.<siXd3pZ+NրSfVWȋL< 3T&`={1<d1̛ z,9?>nV6Ѐ/vS{*);$ +|w.L t]G5`8x +򟃜BN;D(^QtM/V?`&bE>EV&o1U\@Ha&݃!hطM슞V݆zLă։P g\H._?<܊ b-;ˬ}=rH$X:P64N+4 +)<*פၥOHJ)IEt+fʳxz#B\5Z7J + d=}Y'bq:(xs#JW*EV}XZ}9_؋qZg ۗp88J7f޹اiov).YOA7w\מ@yECŗ"}AqCKJ +rAgnVCbO lWht` ڠ65a)hV=Ց v37.r or]. tϕɚg0"H,Yw".?8V^$QW +G[4h@$Ntx \hΏS'ƇrH)vO~ڗYisUB8T*S2`aNStpnWAS/"8tz8Nu_]@ˬ56D*t:pY3zh$R!? Pro\ [) e']+98c`;Ky}"ZQLšf*__l@KU%kT6vR5&G8c:뺸." !B38w'< XGͽW3+'"p;Q;K"2&2I̕GcZ18a.3Kj&v@Ŭ ыpuMN;{[ڤ<$Q 'V=ߒZuo?fdx)duAq o-Aq8ߧ9.V'$zLNe=hFJ0R}5twUI#?I=a~Xx$:J4F `*_@DFBI>i,zO?f'c!#>s:7Ogqsh)dJه9q +WGD8+L*85 wwߙJZ7SN(w 0GȹWf\BBb\W 9$&.ĬAܟwT.`&e `?Z.薑t?kPWlQ+:``"d|\%}֓Qy7tl"WdPxL42kMr:4"/GX-POJ=ذd,+F-n? #=ͼ4#v٠,vC}o2ۯH <q'VBΫao4*hoR9BPNZ:?QXj/\`53C + B!LNhWd!vDz1L",w?S7a\LyWZ3v)Cgv/ +`$ ̩@F 01LO<ܦThti^T NVbʹejv\Y<<Ѡ4((qDSf0+2o ++ӝ%}2\Gc^5:cՂ9fXSBS;1hؖuڅ󙯗52?5r׎O\ j7Sjx$ɯ%Z[/n! aP!n"\*D-#DZACZ mOWLn+ Z].=gV xxW஽vTb$\rw`^_?h"miQ֠YÒV'@c.X +ADbfok$İ||=}"cu:`UmdwCe(8~'_T)>c+ HM4bl܀xz"?z +fa!byId&cx&&EW95XoRՋG;b9X1y( /89 +Z;҃J&r7V +[/%xpfB ?iwnD̀q!<ʧ&q1f#э !kfD"SM5V9Yt-vc7(υN+yε4⚢DYJ7l$0?,Jj|eh7ۧˮյ74Gx$3"|9e8<0x,[gnr}8d>tekzQ#6>~I~/)A~6^yi1r`3z6CS/ 7[[{}Ul¤aI @a1ԆF V(.HC\-dp5@)ƽ{a9m/A!_.`򌉛Duψ9 &T b=[c*qh"74qIڅ(ʌ+W_ӚAS`HZϹ)85:wlvzPQX)PRJ@\+C}04*XU]J,"Kn%Vz@8'rE'T/(ڴn.ގa)ov*ITTϭ>'d~ bZ؉&@Ig5}IUEPٴ]MYCZ=8&/ )],xn@<j3~$Y󤅵.&Ʈè|b6(M'er:FuM~:ؖgdh_cw +ʵ6Y,}Ҧj)fRsr{w2LS^ ؊o`Jqr|؎L.qWR`+C7K73lOo]KNR WS%C߁`cfcrh&@=pȭ%9Vu +)L_Q9\JR/ 3,HCHkykr\0 +FW2dj^w![Z)QiIۻ8ZTf\?@O;naZ3X.X dNrJ$] ڣ Q!z4tioѿаG7D ߁V; +b6 +NFbi-23Fj#L϶`:`R`ǽ(34߁ݽ FԫwV%wAj4G]iG4c]X 8Z'Az2yGjgKRocD.b׭M um!w9wJy2Ӊ]R%ieEwR~gcRA&] Zd9?w;Iq;v: ][#ѫ@U+Z>\!4Wք߳vAdQvZQ *O;6o$mCP\7GPdZóQ&*J!a0kD}A! 0; +qݍ*;})v5e/+D*NXD./F0c6qO +JX^ô39i]dLʤ/`&vuqJ}QqUed49?2/R\DLR|~`L2&坡L.VHʣpx_s0Uw1O+oԺQɗC6 Ki8V`OiwɄń+plB]>2}6$c<)XZ`L>x Gu`!~0ݹT^i9,'?G@_.a|̿ueNΆ_ړ[<«2(ݚS_XOK%bBG)F@"!H kh&flMw-|"b5ƊP֤o%.K}的Bi%9*vVkSgLPSQeLdk,+9H|q8%Fx^z6pQ>w !϶J.AAƌ6jAij/^ǙN`-NP3= TuĊ\P(̱[L(D kf܃(Ys)AyaG>r7sJqa]5;,ܲ|2,t;!'|E^ {=^%M@J'"t赣2U"ʋ X>|׷Z{N|Au{%dה:Y3e]\vW@6RIym hjXğ4>SlHMٳK{0HEUG6UPfs=80+cE苨6L}H6gzss6Vr'RGkʴIWuOuC0LEQjԹ)[|OUq98(*6hX)%㰐jҚ.)>FI[ru #bgX`i*sWzrRc8cR*CPa^5 $ F0}2i7*ވx5)>M]QbQqJRKWxZ.eUHAolBcG[1Fv^" r@ɰ! !az vg$[2U1Wxla.)wrE¸/} dg壃M&CPIFYB b) ˭,= (8>sSsx/sАnco}uj@4=.@J;-<-~qr-c zmba G=\8j{p +LoeDIZX簽[ + Ix޷{|xBǝ/R(6lpWwz^X7,2@ ]ґU}6}xiL^u3]Y9SezU'j7M@i.Z휰2?UvGM$nJ@8d_)b +4_JՙW_HٹS]ꃁkXjyW +0vv6*%#|Ya|ӻx.ԯ |:k">f:RHCOјl";[%hB0:\G鄤Njc|ou.z-=y^޺7" ڪk"A3)U4XW\>ɻ{ᅥtӺ "N;_[ aAӓC'Y y5QITŶc^dobA,q&oI}b>,߿F-R%lr(q)dհ;a׹ɟH'x~[ާ欿w:Ig4JMu"Ḍkw׹!֗HuOJ_M}2.лwZ=rjnw += יVɄ I* JN&i;4c{4y&24dWG%V$ot{32Scғb+(}a(Zj:g2Z̽P|ޢ +0=8f%rSu}a9 +޽'jKO~_,6aigH} iу~]%_ , p:L%`!̾L>鿤B_}4#s^'R_# Hy/P4X?^JβMx@Jh[dBT3VqUN3ʤ_B1&aujcg8jiPhuL}09| vgT'ӠyPyTxS+2afR z^#)ydK܏*RT'ԍŬE)T5qqAK S6YX*6ie#8r\ 4YET^l~zdHi<"JB'F:r1; nJW ZuD,Eq2֦0(u`yYQ 7mCt;Bi),þ` O^8 O7P9!ECWj=,t>"6N DB89 8j%[Upۡ*}Q2Z/xMv'_ĬL1IٖNvqw4u֭p+S'*y&]K>vg? 2ܱgfQTS1=H MJ֯,ƶ37'CzZ_*j_#QAFq~a5_Ү W4oQVH.Vd*5yPZFg"H +Ran:P@bk\9jQXDD'Pq0?3%]-ʟ + ,ۚ>mJ81)#h>kcn +0[6^r^U3G$ LCh~xg-{mv9 C +d L)m6D˦)kwfu.|Eš.j !I/R,(*#7ESGr=|QO+ae$uXWf#IGz^ Gs`tGjzR~K7" ҵ`dw{.5(ND[X˞>*;zȄX {N]C +jR,.^γD^"v(0uv +hmy:54EЗ-@Ng"μяKXʔvO'7 VqJvˬlɇkMEv3jk|:J=JSw2IKI Ɵ{uig|#a*5ҿ3QtHbb]KT֔JTKkmg)*BbJkB$ʥNQȡCR;`vAP!<;019A B\U]%w} +s*dDH|6uzƉQ{Y ga͈h4/M%S>8P]g"3{w1뎰^0 X.sOUXx/˙H}oOoGҁT~/ڈsnLk;zeWEPHg w6dC4k"jY,{70zY7S:m7˃?ЇJ"}h!\]sݟN,vO5.@ނH_ޱl)cgoFY-;1tev9꿰F .(zQ[9>xnj,yZ.Jd0Yj OBիpɻn9_ySq(X!byB7f` xuӧвqSSv͜?>AR.pXd&sGt!];IN*hc 5i:[iB] +,-T7R߽vzͧU d*1 ԇ9i]^7и r4.SX!prK|-ś$Yd@ZV%'"v<-EkZ^)"Y:G@7X3^l|&ssl:1 ^26JOF qMmA~|Br7o=FjQX֪ c:bɾ_Ήºdn# BJ n4\TKN/n4qlAw\qYNgh(o +1i:Ko{V.!ںYiX1I$u*D/B./k-CsUapmrUi mےpXa)__dE[-xD35e+/X>]^%̧ȓicT3? [O%u>/< ^J%]kkl 0)/_SOHG"rht|e`T*?UlI ɵ)}rj6DWWS|~m]Hjt;/p3ׇg~eF%Hb(2 =}g:(G3Nq&ɒmབྷ/TLSw +I-'$y/;"o@81m\i$p%[` gEZ#`/ƢcL^wCމ`a0{D5^'hJCINMgGq}t"E ޚR`-YqRi%ftʯXuT$UPF:AS_U ́gH.OQ͑xX[$?lL,k,uZ#~hs Dlm%Vq.8aϩcOk17&Xsn00AnEQ2Uk +p'UrSo-Ff3P0nL7Lawgݲz9 GA2ht}b +f\p@> L)XՐiU>7beCo?UDF6RakRemA0斸Wj9ssԔQpaz)FۛS*$,זC]GSP-ⵅ&F BG^p  Y$ /n^%L'rvdZ`Hܗq]Ml[ٺyHʅ&*ʎwu…B|EV r3[& m!?Э7ʏeLϼ44r)t63WħyDRVoDZ^ѱYIwhT:LBt9\- Xzb6ߢ A7w{=ِ.(xB5'u2G-A#qanI8[Ǎ@~l]p_ɲw(-YԜ`j(츩>1)<)}fz"BS3BLF.`Pe"M_i$ܔ ՚tkM!vPl6$XFknƶIׇTzDID"KD] /S~@$4$V62:qkls=LsMAyAk|+m| +> X%vѤx|E ƅj@)N^񸮱)"Q^IS"`чY԰swOFWJcZ, HbXIbXХb + ˧@pHm0@G펏\Z='! ﺵX:lo9?hJ|trNLATi3e e=T3~VqV J ! zu7"$U$qULnvS$2RP_ nTϢvNY={E:'XE68ƣz\U&0I)VBݧ7XRm̮P4Ltb%5'$Xt~{O3gIU\lKRE !Xc&' بf8Ʈd]Z&g_Ԋ'2zݻ)\̥µ;Q.. RT,x8C[ت橡hu{&yhV%߬*9;n"}5o-X5IQof,--:@G +>2JlЗٙKȖ${k29(~&uNr! d>97%aۀOm {=s$,=̈́ XUz!zj@e)+C]/u +NAwv~ kjEϯB39m +k~l v D ZN@危K \Z,^蜅FJUz(1Ex8_̼+GGUl&h*s9;S@(c<(ʥm/=bSZ͡/B5`Z=u^ ]m`cXgZfrdQr, +{ۇGGs<26Lt_L^[Y^lFl}8(x¶AFS_CxZ€KTóJ;6l,SRy2;d`1<,:Юk|foց0~*ȶ౟.Z|)={vyH I5kS{啾+O?ӦL~ T尸?lz/͌dM60Q"sg /ћ%L11/֏Ѐ2v@WOR@!Xa7ݫm-Ll"!CrUNY$TJ8zٲwtP滞3(tz0$Hߨp's+82),O<:p=8os6Dh:TDñy:[5r0R~S=XýH7`U_"/ιWU!@C*?[jK|T?Bo nFcJçLK礪 CRcCTqwk\CݪD1GߙR|,}Oٵiix d7qM5.lJ tB~ +ϯ#8þ0@ XwMse^! I"^I,T*n(T/@7`GflH0a*O޼Ic ]*ÕߣR= 7ϔm`,(urO`] R7|3 A$P`|)hƼZKȨ~Pݖ\$gPj\_z5ţIY>V5nңMh]uuj&Iy)u—r % {[#} tnR:[ +ZIsRIAt32PtCƮ(iU`Tk!GRur!Wa"\4Y~=v›Dz ZM-&r|~y )P@&%~5 z͇A=T Hz@#YM st0X"c)W 2B"jR-tYaW%]bW[qCg=wXCH*T9SX@ށ[m3h)L}1Ь駫pђxBս!( Vq/+Y7\ǟhk ptKZ.Õoɿ-e[2B ي0Xsݫ Guz,f2BP!bxJu3ũ}1f6{c u&[2[K(n@TfkANwP)44E^j*E}B+o vX8Z܆9 +㉋v[J }}oqQi@}k*I,(4Z`Gk@Fr]Sz-xq&Ou<"NC^:2.ON8J/.gQl7gCad4+>5W#.]ilז :K`yZ͕]QmÒ:E(ǸW(xoæ9m+׽vV@}No]J\tiҬnj2z?{ +x-OW,iU0K7/H5K/Ź3{>a];0>S^܀,ևzzF5`pJ߱2+ dɼw~Q9i$ XZ v@YkdGPς絙FN̠޵E_@#P#sDј/ͧVhHo)uW,KyO~ kšH~ZBQ{1zV+VluyY4FwXW+xaW?;u߸=q#("XQz6dقZұ L׃gl3>ifw%'>6ȹ 0[H ksX"%vɷ%z+M9Q<#he&t@Y%굑|`E~o< ؠAf#K*+_m:S}a3dww thjM H-{ s \C@,c Zp8X|իj M6r*GB +XPdǏDsR$b|#M7(XGQyyV$ ѮkD"֫ЫXk!ZB՞_VNn8]\$6x+Ou{ +WI_'먹q·1TS\ʙZqƸޏ=jP>dۄI(1 {R P.nݡ@;qX3MqN͏'YZ&p>XhPŽ?$ˎ^ ` BbSwBK_7z;aM3TB6F._&(} v<\H3mlw{R#ɉFWnKǾ @ܘ9Jeo*ӦшfOA~pDxi"bzB1(U a)hYjDķD.})zo%?`DKAk~8=-qv WoH5vEp$CbhY֕o_ ?79!O~4<]?Yz$sHv@zzYg Bhͦa tO+_%mZFœX5b 0eMKl6"eM(EA'" 6*_.!=E'.]]YԼ&qjMĸDqr։4˲.$+`e$Vyg?+0H6&V%$ɀyBwGC6?;r~Ft4E]CmRv{4V5DJUېۇi=نu^yڻ'c?Un,N +2Xs ƕk1}4/ U8CxZDT{J7 #AR-u1'"Yh J'jU)Ї:-RͰ t !%Hg&)$1<&{ K:"oMX1 #UlV%dvB$ӫk"qi A,M8%,轭Ds 5`PE Wy:** NLpV *<2N&SSf9[\15}̃Yi"wgByE5%_VW$)gJGeEۨ>8R~L>o9 +hTDP{;$xtpE4,KۙuxZKYu;^;cK~@A$qw/#|(`L.䶹6-۝tAg&:D%:[=9~ P^l⥄CX>Ep{#'ޏqxAPGJeD5D訔]٢btpd6Vݙ۩lg@bW9.MF݋of|[NںY쵪3qba[CϠܚWT߶S3x'FZ\)JhFGUei293)ퟚ[v^DLD*/ۍSQ M<~vZxs C'Az+nupYo8O ,kf1շTB!^ V +O >~%֧Rf*mս9PJ}f*87*;'Q=,I ̀TqΪ1}$ +჆|a[Źu⚡ǹ4%0@V/ID0sp~w\Ҷԣx,M'aN[6% (.zuy M/0#3@,[P"Tq)I(J7(4-?Pk@m.'.R=G$#q.Wxp) zׂt~.` JnRט@QvWY$A+noGo8kʺ@ֶYoUO k +͋* fRV&pPٜ̋R <`WQco:?|Ūsz f " x GⵞuFh0誧H.)%-=hO%+t6yHdZBih슛mtO,ǝ3fp#*ҭZƔBV<H"ib2`A%aճOwV;YqAY*e +JZ eF}H No`_IJVD`UO1}Q@pݕ:"ACF`.63Y~;B'a,4$i+aU]+ĈБF~t|n]m4pmסκ<'WSN/(t}s5>SZP+]9 鮯p1FCBڧAjgY?Gk\GLz+}IDn6 CGus30'ީߴV@Mq"U] ";.8Yk1ldǵUOS&;&sjE=ѹ[wYK2-t {{] oejo)]փCY罗˟r2j0en#i$MS dZpC-k#i3' %waŎήu'fqr; ڞ(r29x+v U>{5Xo"M=-.[Aa3C _v%ܞ|Gv;M_X٭(cn\cLbO։⬫3 kZi!S /AQ5/:[^s|ȃedI(znnL\᛫Zo +ܕ{]uӕy FT71ynlT/Du9}՜u*̃3}DL~Vr-۳T+=< +(=?*vSBhJC`"~K;j<$Bj0R(㽾cGR?ßHO!Zel>vkDkWt#ŴRUWMӒwy"{W7!K u+=76Bv>EZRhAl,@k<%%/ꛡԓM܋DҞÄ/2&O?]4E{]*sA $^[ q,m;35//EgFq"6~0D~^_9y״{uI=:I>]emvrӱ򸠘ZsK^"뗧c>P6KB>,@_l\H +sSַaN4LQ.Khv8tE%_Y=m,0uʋec1q&fE:~^(7Zy2>MBH$tdFb< }b s{;: ޅFuG$bi x݀Qf^(仺uYpcuKmPѠi`SV;8bd^a5CNqh.XpkU/P8sƧ*bՀDϺ+Prఝ%e ^Rw;,B/*vP,"]N.2>SfgEC_L6EoU(֚7|o/vNS)Ev޳/KI@֓^wŖ+_1y`MEc59$oJ*SskӤl/6q`nyO,rv#AZK=N'Th_6_:11u ʔMTJ[=(Z$g(Y1X Ϡ"v AFYXLA?L¼*)X + +JG$Uсط|x\TtO颦z] lhv|@^m]Gy&Zs–_M"CNo5ff LַDְ:6/CJ:P袹2AEm z`hV x٩?$u[=V`D9Fp"c0 "]TzKXD +B?x +pzoY)UI8nMy/MojýՑɣ? ?aA;`LDx,m3/P ᾁȺMd;*/*G?@mԇaE +(~uhD_kAH߯J&Tigܒyw|f. cO`ܥ7(3sZ$8"I6#%L(D諔wkg;OƦ<捅!y>,Abl_/LedAzU+v"yt\ y._%h^_A(Uh+|-󹫮̡T=oJA9{]3 VCTQBa9Wkb^nϛ:zF0gL O"M66Ҕ@i +pԁ|X2T4:>FEve[Bx'],@ɽgPi#EYSR8I#CΨ։1aA*#NKv*3ijO;N5] +7$ϭq ]^p:|DR +ufv3{apmNh4cnvCÞXj[:e-0]leOPH/& ^yH7f0 +حPȥ͙b=|rѲsV.f"*h×Hb4|n)wp9y z}L*UYnR g?4x%=]Nl + E򹧣c]/?S1} V ^$yxH:ZVp/~bB#?0}*ل9L}&KaSKq_YCW!7:tHW`n`u[5T B`)t TᬀPPL&'3c_vԌ~[􌦋U[@ U} Eԕ65Hr>^L޻*TaEfRY6Grɵ[KAy϶?W;iu|9*jj˗.Lδ*XĖF ,kXDEA!C҂J"/C`LeCCUJ5npQUYM4BhQ@OV*#Ҫ'Xc*:.~S9`0`{Mx.de,%cHM[=R3D+fɧ' +$8="{<}b k& +pRI0*sN!YjQ[\{Yg]8[:70\۝5e3*ʦT~<^scT8i"a3ΐ9zt뵳Rm|k%4Ue}vtVmAhՁnq&2 pE`o aj\P\_Ypp;PXYGQpժ{,Жbㅴz+[';h0bJLVd#7"2|X.v]tܝg9`7卺(ؔY9L@2eKu Ԕqؿbꄛ0?FZ- + v|+6GKRg%GR7.EJ1'q׏wtT)ߥe}d8 Ě+J*b\ "ǂ/qbhke`Cх)g rS3=xQ.o ٿ$(o{qCeusӔYݼʰGB ]cxǺzn%2ڍ sy]5!CԱ,Œlj {@ԒGr@(–(Mo)vJ#+ ݬn3SkLYSuL(ܰɝ~8ò#?:'sRQgT4׏XhDV!5.c<.C{!Ma_WN`P=>&=T$㡂q(vwzؽOJ{P8Θ3^ q[ܘDd`9ɔ`-e<-c^ܟsϭ /b֜[O\rMԑsk(\qSWY_ڬ F}HqX>ʽ*rjB;'SEky0f[392+&.ئ +HVl3;47̩3g҅x#_ |mE8/"˓(zhҶN: +l4U26Pߩl#ŠmLݦWq]0؉`d.vm>ݜ@!"ήUJ"8r4O"ya#ՎҲ/><' +m%i(U DF] eїa^4Q&> +\ }kx6e:wiavJ>+6z`AvNIG'Yx(q=v Hsu03,%!ɷ Z o-}: "P"/> 껎y ~vh$2%sƞڲ8/!ƃ=BE(r-?0+-j@^|PK훃 +7shLr UGvE*릂lfFaHkJ+FXbëktpN sFO ++yļ'-ԑJ&q6υ:4;n:q}1@ȁtӰgȝ륇ȫlgz#2*t AΓ9<m8(0cwEMz:ByD.ڜP'`K<Ξk 1w$֚%,gDI<IbY8#rN{5 V܋\s&lilz`4I=*#9?EٶF[s^1S<=ͫY&)B~z8+WE'n 7A0P>dT=2,R^!pI%XM{1Q==`q@" {n'TAbZZcrzb}q̉@01=Ue%ԀuvcݜɪB{ |Ղa?ٜN hv4HuϗIꭊS!Zj!} ijczEw+ +>6F1-Wނץ *+t}ʀ1ZЏu/wLCkh YO.R@{1g׆ԧS̀UN $Ӣ(tҭMcLg|3aYcK[*dP'Tղq≀.y -l3\1Yd黰hUF!T~EF''-7,BNl.>:tħIzX<\F~F6uoGp$Р +.W 2il (MߧIĆDF/mvPluLȵ$i{z1eCAO$fY;P[VJSFiuh(Uu"ܤ_VJq + tMZ^אVvuthoQlʚ^[ cu( )-`D&؉mwY$cn!Xޜ GKbWB|Py-)\H؇[RWWlO L~k ٘_0ޖR Vq7.ar,|Z{'^nnD&]R@Y %lruHy`rx_y˱]5$tD1}\- +y<^Edd3th8U.lVC +,}φ iS@;`x3'uCb nl=@GG Jy2qE6+Ⱦc$Jm]Z!%f)NfƩ+I: F9u[Ҏ>"J}THӻ*jtHt4`C#\rKoU{f#!N+ &BERG00+@ǴFeF7^({{1eM]/|dE$gbSg+[t6 )}>~$}xj6- c!6j[AFÕ*20I's|tuIs8Ho7jaT7@o H &Gc#ʼEոR#HuHxrg)o9њwnȴ|oP +ٿZ|cq Bc{h<:Q44O]B}`"KnEzAblYSn5rR>ZEU^(  8d/KEt'IsnJc ѮPJnE8'z W%Npb +B()͊F˿Z=]BKbϐRpk8Kc*8Ǘv6ɳ \03תUeZ'Ybi-Ճbno3M֕s'&PVSEm~ju ]`eVCCǶ幽tn䅞RH-'sp xY*[:uJ@c';4%lxڴzI|72/rqA,@4۾(|~o*!{Ix]ַޤ[M)'lӛ^ _x+R֤LCikZk9 e|}Ĉ˕gOxS9Iw_I5)zaD삕ww4E?Lqb׻`"bZE08*MxmS0o36jy4$פ~?ՈYrE%YS ̳OIuwϪI>,}m1Bq>;*6 ~ҹӺy# +ke\BHs}yF.;ʙ%p*!IPOBB 6$/bnWKyڙP407\) uDҍK6K WS$f ZtYzr: RXD% r%"<^lǷoe@wc\ Yzqtn1_| G |ghJM< .181)$w h6'Kp8;U^ŸxeSոZ? {u*8U_+No__" +/orl*; &zګqЪ / Io;棞e.J!OGeU?[7$Ҫ-upq;^Xs./Y?rP]0 OوUPy ?]YMWP,$=W#6)(W5"/um":>^f2S-+j4 +,bM )NxlE._WYOc⛼zaA> cso7bHryA"5vWha!Ƃ|`r~G3AnbNPo]U`3We >`7~^X *O&fC(#- z CAv[,a6TD0Zh]A>+9,e52[ Hq H#|*X0-0fyf߄Lsݭ)fN{{n * -m! %c&̐6n?$xl (بEm2j&}VWno0iFH!!B^bŒvs H2vULg& ]Iw`jޛzJzƏgdX+LwKiԫܢެ ^teF⇹TY"MoQzl&B\ϭ觾mf _=nf7{8桝޿WnXō_q}tjfJ|aHkV YgW 9=NM :J-1:pA;D ;?,wtBY7zFYD \ñWṛ.fH?<(FOmy zsRoEtݤWc_j|X vۦ]5 qdXG_jsa2+5kNq&=}$P; tgJ]e`p@&7)Tw`$d +ε ;d' % b w64 w%]eX.bm}|ȟE@߶ŗhNcmq8)@~ֶq?AT8]BOXt/xLq`9{.޲o.Gr2ǵy7o] Wf$<`2wɷj6gp2˧^q cRQ3U[6?XZaG` 0beq a?@71ƊqIPڔZj1/oڲWY m 䅓FgkzM] ܁*{TF<*tI|czSlp&'^i3(c:h qx!Db?QIѵ(K3@Z1tf Ԝ0fH%KtSZzqhUn~ZҋoH$Al}Eށ1LfnuVjCc ժk37op-h&OV .mrm7*?S!CHlB~C3S};IY猠WYO^`D H ҿ#N`B͓e1Z?W۞`k GRgE\X@BòU%,?ܤ3գLM.VV: +[zގ^ R#m8S*+%h,#*}C?S=$RnR~L?7E2(䉗&yB +tzxxvC) & J?8_E-'\2jB~f 9·}^+LH2BkcI&bю/K଍ci +'<ٌs'99E\?G؃֋Tcv2G%Pu7^}A-'LiQ]ECRnKGC`LT|Ec(\x̕K:L!˒2*Y8~;AgݲyPL~ >e1Lxq`u(Y. +7=5H.K\d-&ڨ֠@ݏmPWBOh>ggڑ:NQ9KqPEh4^cϯ+Q-eq=ٞof J%nJM;Qb=ow~y];g{̪sRjwXeۉ.HD+oI]-\d{UP0>oA?o{Z/L's/'z474U.S1_Fe$]HgHX*3 Qo5pAZ +58}S0|F.<@U<^4,@ꩫyԡEc;Nѩ@obD/b8B1jbpP7m>bb$~f' PyZ#EEryX=1od?ѺE5{?^>I`B_|aBRfY]Sk?2Q25l. @j,/>%ySTht +~8-if5XSGdo.DKW8r[UBcFW:@֟3ѲTv7\M&sYx4B9.z/[XJ ^(MU/r*?9䵫wZM|wiywJ]Ddn[Z:=cLߤBEAR]u6Ɩ&G'K>Ad-r͐<3pH([oT_EMCY`WYC5PЦL uX,4]%C??7g~TM.r_oQSf}͝7zTQ\ejwo<WmxnǝLP 4VF?"n2KCL-5s[_[%(e;5KLpa\m0Y-[TO2'5d޵kqgc=˵`u9%jXj B>EWvz”D x, ֤4lήBڟF"fq4)̉5#*o$gmliYU9S} .#:!ycӤyK`cg; "0ίq 0F `ɀ|Fa*/}lP}M- y)G\4Fl}Ư@9)M; nEªf4LIc#4"+ӿ-SIݦC3]_-pfMv8耑Z + O^ؠ#!@.%tv龔>p t޽@@}Kpxc/~7M +E?/LT@yqi +-O@0yYd3f8UҺԞܮ{6چiKOf20k{KX)mC//~5oZ2tbDK6PokDJe,h_ +Ae'A؃sK3]:߱FBʹMx|l/HNbLn]kC2oh*3e _ut*2{lZ]v 4oE?0wHy@ɱT NŲdv:$f6P_xB*z!Jȇ| *I׃$k&pq|OnuAS:%{Gi^C|@;ۍ ٧>}l3;ҊRي83ss#헹mr/ |%>Q΋moɛ;< }fhn{ȴ80)NdbI? ˣ3.#lbs&̤Z0tgv~4 )fc$J0fգMcmYi4xvڳv)ꢀh"]Iw+Þ}/UawUY`5{/>QӛFHKL򶦍vy5\ǰX5XL 1!25&\x#K|TfUJ2ܐrbM2[0NN^(mY1ހ_3؛rGz{1 FlZ'Z 7e͐Z>1Z{f0U +TWN]GDb'sΑɒ s8 }>~꿉:1 5y'v&:R=2# +;Z*уZ9j@\ȿ&$cJDoNU)3@b[pq35au25n@ڞt(t=dGL"A[n1qޏ=qҊz| q*,`f }9Fإ$Y,ɱQrd2kYDF1J'lxl3&w?Ͳ.I%Qo'XoWTN=*iCk=O55kQM otI8!8iuyu,2=5=y0&ڬfaZT馬\È͖FU8CZĺXi)]5W[nγ +V1# g*"OַU7-9:]ɧg'#M(f[W$TtV*1'm9I@^ \W{iicWx"U#eDv6cHMPXB3J;42=v9XYdwDŽUx@Â3ZkY Q;b4^3w4j/53Q_ɤշ)'jo^V  +o8`{ok3ز/QNgq+5cYI'~]lb-=˹D} cvs;!~o>'HթOc٧UЍYuPVPKVt|!}FG.p}?ae"| p QY3KL"bI!m@'x"0]>aL (y{˓ij]b}jE'QU|m:q.F.R/=:NTA_rܶ\F?[ #Ff܌]nWvcMO l.!jr7MXSy*zdy"[x",ئ ԓx ?V i."7z~9NA!Nlͨ!z%ߒHFln6(XS[FQŪq|h2BHd fQ5pp@SZj f6&J/0ʨqXnz/mbpՖ>[tCMU }H +ܰ-om4;#d .z%o}]Mz;{m傗tgɤz/D{ZlZ*Xnt{D'VWCT&F3 hJװ>ҷK7cDvWD=#UQX&#Hуb!޷C'Dze^![.%y*RpODٿtyXyo JAs2(z٨Y5|[Lnz{} Rjj;(hM6gE#79Z5<g@gvY8\jrFA@HvI{?9V:c7DqI+!݄\OȬ$1m9҉.RK+e|ETNA67Z˟?ck"ƺ?u\[sWSȃf^XF#kؽ!Vbs&=G Pǟn$A3s^ڳVlE85K9 ?<*amREDd0GB SV Ҭu'Dtr_|,/.U*/㹢Nlrp&3>Z%UCܸV] lBIF륉ۺ *Wglz;:%Q̥c,яpGWxDy/΂Y?p7[}<3*sߩ|8jzXҺA"Nw(#XV~DqWUdW~GhPy>=?i/\>b8Jʲ1ȝ`>e˻BmjkHR|U_uK`tzAOy_EjMX~Gď |i߉9j>󼘯-ߑ\!7lqTj.4ș`C'kJ&&1es'[j!uG$|PKw$!Pڱ9͈oV.m]*!N m!l1 ;OM+̔)ߺAe'Ӿy-lKzYco%=/9=j LX3T@HjͳXQ{IwK҈Y[82tZE⢓0y|3K/cYX_0*OK\TJ`1R'>W7n^K C-%ɞ2GfR:߅f~W#9rJrAj(b`=g޴&JL`㫌ܳV!=x|sAߣzPQH#uqV9S]ET~=s j'udKk^_og 2 ݎ^暡F:ͨx!:GnǁGnm =t 'pq'y- +{@'yCn1K"'K&u0 k_zFW+)I-촘J0 &0gHw] |nIR<qVxqX!8G"a| jRMHFV2nJ<]+ѧ'WIG$e [I^mFmي oܝ^ʟ)D03g :5Q2R&%M9#-H*+C ѽ_1gJ,q0n мnv&eoDqa}JWʀ<>qr:Vԧ&@ư}0,BFV|D6vA"bϓx)t k:i׿(uSVHET5ǗRkk0M;]W}8խ!CE{0n jw̽h<; qazg2; uVRs :;6gKİ$R9gߋ^uvרւm}[L!?ɡ4 BY{`<(+AHuXs9)e){GeMZ)_c9`M+6@(LYyH"*hJ[<[ErnSv~ڼJ.j|ۊR9 +#:_WmPO=? _ʘ3 x*3khpR5ܟ0EsF:0q_ˊ;%y-}TιC +wst"r)aו=;O$sn\ؑv10TS7_n˂ϩmRs YJי~e(htԣ?<ڊÅެ W}>oi)/P?޵2;-ki\-: zfęUw%Hp&aOE0<ƐĂ2PULB@zA,$ pbBcz?+VK;;l:,n?60$1hm3wtQ]S5$(X۷%!eg^A) X6J;0tj∣&r;K!qrk +J)-Tk^Vԩ$ku]Μ(5Db,7fh8J(Uw@{d_x.FwtΓ*jik?7Y9F7] j 7Gf $^zZNf υwa=n̏[ AzG@Ω)cMxe)eʱ^>L%e2b&n&{H8ɹAph.]J]9{%4b]Ѽ5"?նI;E"^eT +JmEDëW.@9ֲ5I6d&:۵a;NZ1OSM?F8;߅_Z%NcӮOg4K$N):>2Q5áц,h񞐃,!`Q)%/'nEpяkgmLZė^#N&~bk?[Tld-s|S|ؙ]A,k ?D?kOA^yRh~:N +|fyė˯ed T?taQFa1-03adS\pۡxXߎZXby48Po5BܻRd``Wv%dJ6]lAQ ÁrsJCnte톢{h(H#/ !F꩐ r +w?o^T'9z41O򓵜]^/uj 5KILv~WUyFs;Vne@wKƶ ?XiX +֢ɷڲʉT#"Y2m92&4[IapBeB:Il EQ/a-Q *I%5AQ0iu[ Ix[:MUmH?Ju:~6r% +5qo 8Wklm_q5"4Hzb\=ޝ@]nH}Oa ) c,& A[R]c~ oG;1\!o6^B*XqS7"6('[<KɓN3 t/ +"GPsv:J#$)8b']S^XzQzZrj$к7 ^M}UХ  ;Zp-{ծHQsEm8F+ZEL)OgJ}[7P  ɝܶU}}TKBȒ\Z`l"54N TJ=+ .n@b'0_6ƒpr=KoIG브/YtٞhEU= VN.jVoMd=ؓGإ9@T}%1RG6%b/x ]^ͥoȀ娮>@Xm数 p{h {֓0hBHn3ف.F5Ч0#= zE\{-FL(Ź/gkrer6y0J)y"X Q4Si`b>Am| x#ΕU.sJH-)8ۊ44i+dM\:(5hdͤ`hOzNXQ`zey@(#X y-kf/;a`οɶR ߌF+~{8a|-66 ?g[lX}eO `/{; + F{x^?HW\O + +';F\w}׿<@M(ElN*NPֆܒ + +`)(.vZQc1v4f`q!`/hrlL9# fLcjXʁ5ۈqf]kd#Skh *2G.${*xy<,`DCvʛkW3 +̜zZ(_cINH pԃh@B2uq2҈y>Oly'G`13}hLy=#L5NwK䡰ZBmky O7v'Esm>Ƨ뵞8h++it^ +J7ޚUlxVz$H_bvP"y,TraO`n.ٱ9Y1 ڟwb1LHĺŞ&YbZ>* Q[jG5Ll-0T56T8d-"_v5z`6WW$Pi-6!,(z}k(%*IJ*ů$,8}T R<0rqy@e«~Dx3Kit&ȹ-4j))eK|,ҷ2}4|[M-'Ž{f!"L#p.ٜlMi@qE5 z(yK[ h'ξ=F&lTܽbqe5Ae<Ec$׃?29 ohS +V$cZx- ,} d]~ q '@lTNOx@uw +SV0Ho–6j,HE~2۪32/ϣ8.31{Abt.i{ȼ }X2Hڎ c+bp[]#xH yw Y<}fw!lC#UQfIv\aoK&vp:Ubvbfxҵ?./Uk q9A4SurR ٸ"?GZQ|VnF6d9.D%[{kܬ()W9 Y Pmn3|꘳Inurԉϔ_a؈n3È@C9_M6@u[wۤha߮-(RnҙziD)pطY.uGQΏ +|,FspbJ a5UOof,Hu=s`O!^ʋn`)7/֌{*\l~ГHhg؅һw<ܥJUt]Z x0bvY?3O+>jˌ/:<$u AjN +S㯿Rmy,Pzb0K3|;NXdE}M,GF[ 5V0<I#bčlYψ*Л~c?SLĥ|FmفzA;z/ +DA 9N݄]bV/y]y'E/9FڈH7V5N %?-)/# \GbTc47lj]jJ?+avjK<@}Ye=b#ϯ"@lZ +e?x_y`:3%CZغ-X/E7wd,NF߽DM*{j ȸ~$umڢ wߠ/miDz`R%!:GS{wx-3SER# ;áLת*tp3Qm)b| W+oTwpſvGFI4zO4Jx?B ثDD%p{V{ { ݹ&cDvQ0Nn8+E8/_s}1 /oCD &?4}kfSfӀ<6q>4f5F7fd:}TFr5*1j9)yMJ\hVvI|SB<{p <.PЂ̯+e3ѡg'ݡT +='O֣ x:|-د}bp=E';G`tRֿ̠FW!UjI^[FPIg'icO%uf[c ^FF^ĽSk=4DK%0qַ><kF皑u> +="w$.pt WJmt֐9`)(24$gQԥ[Qx" ":K?Tpb@ɯ҂@[Ԉǐ؋RB>o4lj>Mr>MXM҅]2:`8e a I!qoc90aO5e LNb$C̝湶7璏tV~ʘJ:'4=. +ɿ|AB`Ggܻ(+[ R"])3wn7Q?wwGN3  /G/;0$R}Yq8NmeE0G=:* ye;nњAq̆b@| Sa(" {=v 23FgNs`T υw~^bg*¤9W21-UT42H2RQ 4zF"ۄxxHi<hVv's۽b o|~UxhGjdGMx?&ʙT'ZqƳ$;LY@^''nGEu(IG +"wmQ$|ܩ fI [Xz˝941+5U4O?aAϤN ԇ3 OG#;pH*|[x8H\N.&$~N.yypůD([.Qf!C= _׳UI+wp);<3V|[ Zfn> W\YYH)%;xdX#4 +CZ6W=GM/#r&]m|ˌE6hK@.bvRFՇ[dn_[@nYm/0<WU_zʊ`s{ʫ6R},d3Z֨O \㝺71#~TEYCL . 9j[*<<75E>O]~ ~# mD üR0im +Ȉܰe -W9:Z##.5s+>ϰakMW?Q6}}3~ؾY\:)d5Աq?+en}9naKw +śk֖Lٜj偵o_щxN`}k ~+h[)~7"e-/7[KV~b"A +z)en0s8gVءω )k:Z$BٴC sMT>a>y!3O5CDs*]ΡJgms ';WQҞFU +{uLJVEi$iȦ8$ke",%ݞ:X $aqP+SٙE(;cPx)5Zmb32P5aO; +jpCյh&OfN {3r٬YlşR`C|m^M=Q{oŵpCn܃ayh.ZU +k~i02e%u˰+RA+kN6f( @\/6o +T֝l6؋HX{%:? BUы)BI9ϛ'_ aLP_ۿ3xoCjÂܟ"Z/8tTȎ$p%pa\R8N_ %h =6N6:Kb.iA9S6Rūy,}'sZ~pOզBzvN,߃5!Xt \ǘɲMPC6XnUkrS0!VDrXX#W3jf"̯a.O֜]֝B`1b(+P^te)1H +Ix'?8=. . l*A1ck.m>{8\ +ﺬ~ 2 +jiuZ#y#%҇^N?*wi:/SSaֳ0I'T$'\r!*BM +ŕpE!s8l5p[L?P%1L$Wk)煆S] hIA4H`IR@J#R lFb(Q̈3I_x6#ըv3& oIZZ2@ 4!Ȭ^/cZe2cI\#6 "Tq6Qݐx)&2@_x6ܑH.YߧTuOy5tC>ZCoD>/ƏJSph.Iq[8.Ԋ P>۟;p?bqu׆lv!#abe+dyz‹|&OC½7L{F5 V.[Y/:xn#B$qS͵wr<|FdQw0WHrX6#vU8PH%h@ĨYۃy:OP8 +z3 +>br=Lw"ǰ|^#,8mnΠ<דAgM;:+[rC~z48I.,OJS JkfPN&1cjn[@*NB"sќh\vI1Ŵ7 _Z[GfiK7 QZ8E/jɾFax9M#]5{4_)(P I&ě;"wU': +~UB$^vkeZpjvhR a qT;>GL!Y?]wH7OdҚL4 e?S`3"XK/Wx}EBqt妃6نj_RuaΟJ{`K Eu͐AY'2Ҵ(AϮ+fGV<CzY3+5Vd{;p+ ~AIOz!(o T</BMxiU {ff: 0J qF3y9Mѫ܇G~]b `o8QĊQEĻ͡a*a#य़!~y2vH)*ysQb:L"SxE&gW +MJ3 ^PIfT|_t[Q8.ORazdw h\xYZIx ,L{c*5K{\kONP}zߚo -rxLER }=Tcr*AR_YB?9 cw?G6f1h,E55ZcHt݀S/q.U's\%o/͓^mY͡ز@k.`Y4Ad:?P}WTo",$RR1ps/Rg>tNs&YT0fR.W7`m`9gQ9˙)A7Q.WY wqVܪUdY BR2g~܎a3jRɲgt?P dm[x1T %P|pl`r@ uƓ>GyAE]*~g)e?uF >~F߈mj]M؁MQ +2ΥPYANW+o+"f'n< +}&]d-Fq6W(KCr$?(= B@=D\Sm+'cPbhGUWF>prz$J "Y}oX ِ)*Il&q~- +a 63oPTnl?j&t">'|Ԧ,7뛩6KwjS*~KuX{P' U]5jM*.<g(*5|Z;Wgyz_PKg$ۡSډ^j7'_}ub T7k3C< +ΔY\H :A'%4#a`d +D!Gfa!{zI >33"H[l]e8YN*gp6v(r?|8~  +^G^9 *6^<.!0 +`D0#grVʍ7n,3wqBcܥ^SP|$P!+|nm[KKeyT6<ʂ`vnڭeA+NO`/EY>c.l8Zz2pQ.>\lOr}%b3[apfY=c LK۫3IN>*]w 0kE&'}%NBR + `627(7SzG[|VjySjs~ƇɯvC k]ɵ_Q/+GR95DcBے.yv ƙ]K{q&|0] > }9KRߋC3W>,h&y;=$Pc,FDcugx 6Cҕx|3ʡEFipCUIS&4L@*7SLPAQRY~SA_;L}|;i:|'|,-Dy N6͉Pwهz;"?OX؅_(7Q}xђHfRK_f83oEЀH{X۳RkP~`&=BJuem(_d\1/Nu< O];(ٲ@SM88-%|}5ȟ3;N@*~}1iW2)BLICb̅2XvG>bˑ4ߔ.JfqN /51af+-$ߪnٺ$ +iYBi'߆$Nc!% YS SMQ->41}mQ;[ x/}t&x|⮇tXHG^}vu@OxfFȣ{ZW1?߱obؾӄ?t{ZbD" 6bDO"ANE;g^ᦵ=%QhCO'm<9Z„z0:mx#`p˵;"h|_*t`.pqH{ܩۙÂaaᗫ@[,K^UadLa["Kn">C͸Lt ne I_~)a!#+yʺd?cIZ2Inh:.kW""6h[ɼ!)ݭ +4!*}z4VmA)5kGL.ſX/&VSCeN˦ՠק3T{'NPOʔ547dW9/y|$tU9ޕLtBUރvs\TtmM@GN:KI0_ b20 + be5_1 JmT2$dj>:9,9JRYss 6XV07,MϰwE=Tj+ _Is" ?ǮK<"#ȕHGxBZ9c1ޕC1\%o`XF|.Йbj#}V)PK^Ċ>ѣGI#|C:d`%is$8u +X/}:a}zqBIο#gney$\*{6M\w<_WVif d-qޒ5gEL2J]GF1T0[H$´@]|“==d =[hcKU\q\~njOd*9+N&G )h]`^#PH /=NV/PJ'Y#8ܸ;)B@ھqY z@>xOeUŰκp08!"Ĥ; AS?BdQE<&1[&d/΂vX<)- ]-Vi2$+98ȣ=N#y2Nxڻi7;*ևB.[gƀ!ʢ&I7//_RjuՒ9$;}~7H]"3>uf +' $#pCQrD{vtpѾi?}I:意 H|"#"rD+2s2Q4 + R(%mDél +Y,;qyr]nκ #Sot]4$z9guOOA]REO=\<*WM\\3f{BڶXϢ*QMl-匷mhqljr XE}  #7o)[ +ƿ1uܙ"wuҀ].&0`;{u,/8j(CtL.*\gё6b$A܂G1,>ﻔLs#kTiVڛѷV v`:#^g8̵;?oDkWwTy< ,6xP,.U]sft#7uY`*ʒtڬDl 1g:VӆR/9q hZ-8q-ηFÌOH8a)w3\kс|Eœct0kԨ2cCLmA8Q 0eS/Bo.icSf>3@.GJjlB`JT0-ѠO.?m^H]KDD$8+zj/Ƙ3j:[yp*d0ΒT09go5}A#uCKxlJ^,f<2v}bYx=M 3{fk263UHo -:Gp ϐ~tzrkW=mJjxBLZ)UqACߝ a՞vz:O3 㯴}ЇP"m[^/|ٔ,)`PRNn{ڃ.N`ؒ4fԩ+TaP O˰ pIcw^0}k n)zsO +"p^Jq)\ƚX//CwI;&M#~q k/U6.$"gW~dכԘ_J}'kڒRU-YX)ғ8{m`px̯UCTV2})8x,HͲ R9Z GcߟBtS<׾'[`t kyjr4 28yryL(z~ n6kz(JtT`)c?,APMk:hwPiӇ8{֚y:$Ĝ j/hᘥ`]`0 . -AT*KVeLx@/nCa:Q2yoaU<"vҥp;1+@lv j7/7o[~Tl7$P~FK;j?.J&O/ISǦG ?D?&d ,94bI}ua*G1ȻpqԼ̋Fu54܅eaMUDEƇm^, 9`aįMe.3v㣫m=n.VVUBյ aZ(@ MYix{Fq}KiθҌ9hgXaݸC~ryԂa2Rtvrci/4!}3.n +6Aϫ{պ\1LX*FД"$emtJ_=aruYxU,cm%`Bԏq*ykw~U].sɓ[fn3%N"} /uf [ldKVd?ڇ~y#s=l=ةY%e6"TPjgo)7pFQr)Nܤ(N(:FӡFRoc",!nR`o8"TÈ3rx,߷Bber >wuQ J5dh:[d"jc c ދ!Ϩ)O+W8"3r_7p%3KFWAK0҃$*iې7-=ctpUs&lS݊-ypӦB VqI2>4H0h)mG^8W{:)S Alj(S=0ړ Hiӷƻ| +[)DEZ@?4.l7{ +ikd@,t()"p IQ^<17uC*p1O5+|Lb%6MvA燇ȣS}i57TK pgvFd\+̼<J"z@C>gtzC\7Fؾ̐k:5*7+Vf@pąTN\6[/ aW||mG91ĈL>؄2\ +4j':. `<RhfմQQȿ9 +GɛƢ<^? 8Tjh:TM横ݰB'A4 + = }kO`Y4 ף\$Y~\c'Ň\EV3g7D}+2]m`86aNPNO)܌'N=w)ǿ95D9"/YX3|H+duq U|5tv=T'1 S z c3t3A~';U @W&[ /˯3)\C.+z]y+ps)b %q e.b N u&"#KN4pҨ=Gm (4MYmgF!z$&P@< +UDpHjt'Bg$!#4?L0DD&Sd~29SqQtm"GK!ތu #G +P;}[l` nD6&q;s(fB~BضhL0O_-o;hDe kIB hccFx:[rwIZݓoKwhh +dfkb%E{(>PhV +dIwP躧ZDTߍnGT RfG|줮5WKU'Gfu|Wa/z0e‰" *e.E ceZɮ/0=BRJ]>֞SNK΍!rAe|Af{v]cȊPdu@ 5Q'?+#\^K9Đ\3 s.|B|ZETÓ挧#8W<>G_ϟ̃uSgI,h*F]<~N)W)wJV󉦗kC&94?'"e0y1&Ch^;ΟʗWM kxu]K*Q}$[$BHo8"D$4BΑjs:1\dWq>:ZA:\>a9-:#rLU|~5S?gaGPkQddK`=YX&vv^/`V4u4!1qBo" ~Z h_Mv성eF蓫o'i▅Ȯywis4 y$B 1fKկn*#,8mk$w|ݷ7GhQ]p]-/#3Y~#SDp?1N~tb2(h!i?c4i򮽈|4yqX~bUɲn70a-t2mZ![3-4pЇjɡ+f_b9LE3Ksv޷;HOS9@[lQjKЉڢH}Dev{33L8{ۍiYNyS?46w@k6yaxAR26F7KG~P"&V:\B/W쉑w<8=3&4{Dc[/Ri$ ޗ85/.1jT$Z23F 8[S{Vz6i$B:ǸmEj͚T]=sb$jxI4E׽ ^k {k.'<$ӧa󏲦p=pHWY 4?0FBQ5YsǷWB<zF'/'lwxa",7ih +Oqc*`[<@RBU=Y{6x0oa` ɿ|ʪSnǏ@tP6r)osWb?a3ToQ0ֽAuQc}D22o&)+)le%לEi$[G"H5BҷST L +TJJk"Tyw\)[6~MpϜ bJJk2V0>2$zSɚp:er.En3fΎƾ>2.x+n'S޻.ՋgP܀)a pxM(Ȃl`}1oo[4˸>ϹmOH#4KKM0{z = + ~tltH01Dx'~ r`um#ZWN򈶵֨U\uck"TsҲ`Js 䫤d]raV|uV\`!ti?Cj|'f%mV/q#,59\ZVtj_ChiqrN~'A09h#%}:bw(g.>k^tzDAˌwncH Sp~!}jQ$jD9DmKVPnS}-CE~=RoD`\:OA1 {7yEEr01xMWCQL*8ba*5ݷf:b0Rԅ2`INLYql7CIҞzb41ͦY9EqIOXmd'R-SXZ6RYZчv}4ftdLɛ@+>?l,H{2T19Lݹ %NtQ6y1FxmԕxMe~j7o.L(77(gxnW6ZErOHFphۡ/8>/J dNx;7ZAyBvOx,Kzzn'ՙrdcr n̖9sVg+p VТ `ln'tRR &,7]Dٙd/'ж +3 hڨJT=\ QARhu^fhv6~u~e ? ìشLA}8┪!rĕX. +J {qA#ﻲצq;M-af݄֎*l= .KA\'xWշj&}aU|/+jS  3To՘g}h 3:wNFEg8K0~3CP*6 ©McصwSfsh&SRA1q6" fعe4[v6C3Qiޛ&V]`cL8"G*VQ,o̲FpSK[0]Hbd`5#)7 sH:%-=(cD"˄vof k_~5Qm@e#XFU)ԡp$Z-TwO('}$llP@rmEómX?vWw>I 9Ql% xok{TCribu4HE1t9r_ɗIprնUy~jl`c ;7CM淚QtS5YX`#flpn|k+YqF12rHm( Wu>}b@9 eU/8. iTVc v$USkC#-sBy,$yӻ`RǴed` +]bd蝪ǚ0R7`E؋˥Hu'6 ~ b~t%{*6H}.X +noz .XR<6"Q,Wؽi%`a[7pqwi[` = _ ?p+np=PH:E\!`a^_G8|o|Wps%V0Pu@C yyγ6Փ1A< |>-"B=JBƼ?Nrc>*ۭ\CNns)LHhfb=nAR/L?82q&( V +OxOv4KobF㻠6&+]HP>a8,JWtl[9ER%U< 6Y-h'G+5ɐ9tr)XL,xl¥5IǑV1gm$qMld>xUw +g޿roJC ݹGd +{g[3B&-`=<`;K,z^!X6>&iEaj_"OʡXU{JZ(xٌuD#Jcw_O4>_B?^^=1<_%Ԗ႕ڞLJ9fx gDx_\?g݉)ڼr]Df PnҾg*=np;ˈlE0"dhH%G7IǯQؽxD`_C?)\ h\栛˙1!)BmQ0Y+ P-pEd'~K3>+ A!V[@_ J8r͚ה *p!k_,wӥ!&SHJDjעza#z8^tZe8U:}wz:z\M=ő-8%ƋpPsh嗽{6j`xLut@" +缛]Ws: ݓ0^Z Q `g#셩 w:j+oc~ɨP?J}B9C[xNf8X׮A5k٤2rgjPmPqtDn;Kߦnع{ձq"l]0 TMt*ӜVv[9oS \wC57%ێFLІӼ*- ˭*Cx`H[fW:7G>_1Rif٫(S&Li/,7,E]fjßVs9DAm=&E#mϱ(fGn=TN sޝDikl\`rϯ{GB 7ð*2yk6sZaYGo˂*͎. Q=hz;!=(HQXfP~ =CR"EUrYtaerDY?Bh(Ţzͷ7P fLc:̒2y,&N &3]{akx +i6V!RJꯔ/:,ϕR 60~,O_[~ÿޒ/1H|+d듒ޙt3|nrkJ4o[Hg#R~C<ߧDÐRdHّ+xh? 5սrg<^BYgcѴޓ\?(4JP}@.`̷<S'߀0J 5 '[\q9pbtva$/<ڼ{0+?\Ny39ZGB^wO5>͵=a .R*PB'x u@@zdUs'*$S3̅TM?ՙ*͖_~3Rn?=su +s/k&AO< ?u\WW7oӪ4JcU, EExT܊]3;%¯NoI̮{5*JLx`7wXjr +%ja^ǖx b2V}XLDu{,|#UsӬ"TyMٶ[X+*7ji+sl(v'! S:_ɺh/jmޏRpG_٨[3oA_ :U78ãctKY7qӫHqq_72D>t DK,|}7H-}:8+ֈY1uzLkAĊxV@b[#Ql]V* cvv_1B{j~)ԉ0[OYYsR%U!W7;\ .!Aap'[*WbR,L.1 b`cNMaOhm@H9eyi`{B]Cj`4zMdRcQwiZ<3NZ3R>1 ?o" X> 5 +m~S"=3\gbPK+ngUA ǘ,]8׆ +jCIs[2\ӻ'-ܡg˨ns3[O;(jeO%v=ӞY0 +t_~+g~%"VQ#3>}Ҹ +lutGhR,Y ϧl/??Vf3(ݎ(C H+7TCOgF []? +2ch/(e5:R͒[ʳkliR`u o^lxwYyC?Q}!zw5Kض6*>AZ#ӟS:&gBjCqƱP #-$PWƕ^IRHL>N{Dc?M:M\ןp5 M|_sz%t (qѨeDsZavWTr2n>~vlz=6vJ .:؋QkKI\`4̟n)N?Dٜfy :Y~u"!eJxT*Z=m%ƷلE->6f0x4%m)7a!חV` Q (4`鸬L[cDx,kWTuƶrĚKKܣބ "TVJRIǖJhUh}VXMFM뎉a¢^H>j`v܄l`O68)lc.N8qrta_H/H&ZWFrԤEP8(zzBRlŝD3M[VY +'1k ela mp"a)λX3N۵Vg">D{JO)!>,mE^Zz\&!o7sfRLJZ_(hj5]gD~.=TvMw-9FSdU!Gt_^,nax0<6 )w,%mLfNq SZ&0KL_1l%+ڛ#g۔"w=&ic4R-&80ga1TyLbE/2_va'eܝQ@GB\ MVM̆!6єR;?'FŮ4-./I%Fz +nY7NFj8vLѮfiw? P ) +IQQߴ>*x(t>^]$EA6w]5[AhR7\R_1%jTyDzSRAH_̰h9[f`dB)2GD5Jy ƈ +zvhJEߠlvd'x\tgϫ&:`&}k +d1JKWBZ{LqӾ!G]MVx,OGg&,Y-KѢh2ɶmi+=Z\&.H5%b qQqb`IE-sHdE˫ڲvg^/X\]JYH٠hy0ҵD " *_maRl ™D2y@! 3l>3>[2QK,:'CBeYaNsërn70M>XZ;n 8Cc$Zp)|m -4euBJsQF,§ #X|U3{ %G{B*rU>(#!j`u:liaBzG-r[L:Fw&ՙlL]hHw@l; {xq)j@kXʟŘ`el2? Y}0a•T^Ӻ>ۣ@FПҏJgpDq8j2 l+mf NG-Nk.xCxl޲߃4粼Sp\J2`&r݃T|RF[7܄;ȼh +á%OyFBD@{8:ily }W+.BL_Wjݍ[[TO$ +]ɱ`=Y& *@K;/7rMi.~% }BUBqkT1 je3|Dߕi>$ $.zzg?8쎦Q&:g`/ S  `j?2/2%k3q`Tc n1`^y4f6HwCӕ]|c?|YJrC7mR;%a==6fAdeIdL>u?CS$&AA5-N;tuƠhPoTlWV@2P>֓dm…rT}y>̹w#Q'JO%  "KL<7؅!2f,.>p cz%t@VcA=;IڽzOHr荦+a!i\2_뻓GuU,a=2Wt^D 58$:viނ.Aٿ^u'}E\Kvva@ۀvTT-VaD?Ӌ~T*hDFz- "r/TDɝjmv:rEM'z=>Y(

a3C +\rWG{@9뫷qq-R\&I }%3%c7D ]nbi69f+d+]+Э큒jr[m| ;nRc qQ5D Q!Vf/aR\5"Db\@{:ak/ ʇA&iVdc^lrÏ o2jv#oq̒,brm˿P0Ou eč%@*նQklq4bdEXYBfZ>F`Qu{hKݢMn &wW5|VEy 晉4>SǢS8EA}hГ1)׈ڀѽ`YD18\݆jέ^^8g 9> 05}EkoƄ"(A3>G0  ll]U%{_,oIC .T[N{,.cA-b : amz7CI;Yqh5dQC'[YnFr70) f=lJUdO[0"S_q@C.1G03ho52,4KU$ƿ!{_V'LI%4XJ;!]J;s惡۟+ dCv(GԕSu(MvYG7 8$likxU\=ZU츧uSꘇ_νO4;-+;?Nb;$XtD,G5z-Z?>iPlP9ByjݢJELf]c4QP7k&~dYQ4?<\,}^+α3s`++xQpw qbsI!pK>?#`upۼ~cC|uxwz"[ q6 3574`uv/_7\F^Ycvͬ +ZKcRb9O"$i(6&ߚb _n!` >:Ua>= 3T{r8+#u7)w>| )M'&ko0Z=5]XˆDa}hLǯ寶;?Rhݧrdo=Ŵ{IQ<[2px'.'`Ųp> iLC0EyQij3[>fY>9AzybS["}oN-c@9,nw%fl ͦdynH )¤$Z \٘^>e<:_#Vd/D8m8D)UBԈ pb .Hq}.O$kun*kCZ i(c4CrE7cY}>A9٫_ k'Շ/ڧD֧Q3?nؙ' wEkD⠱gjjTWY][ +9b5b)^V3[7e3w M\х{g^@>P􀈥y:6lZ&0Tϑ6A"k4`<̠fG{䕜Xd2c4{et|*%fz5u +Q7:Qa~H`B+D[gǭnby_}r}GG1Z֍[T>/}5Z i Ҡҿv~pA hE&x+ZM6LƦC2t:5/S1?,%`/藄GOyTQ.4K1izS _;Sk7ʢ4Nf>CZo-vJ'}AۄJG^j@ E޲j$d:j O`=UЖ Cs.pao}vz,7F0ypenֲG w}%Cpǧ]|''#dqRg/ +G8~>~4&X9Ŵ-?nہVFRu#s{|*]i@o|i67T^RERwķrJc϶e ʮ]|f++Vya:pjjp.rFc6 AF̰&gP]| 7Á驚>al7"b} "bucKto1 +`tPN2Z'._W(`s2p:'Za奘ֺ)ө*'* ec$IϽ Fak)tA`?nR* ZK'Xѥ;ψh]0iKg%XΓrUyZdx_ \Yկ >bΕ-f+gSVms)5ȟ ւ+w:e < `+M%؉'P!czZ1Mf~N\kȗM 7iR*3y6&GOUl=i, qbE +ܗBۮ@IE9!Y5OX8X+fƯ3+K(S( '۩"<=bθNBCwW*+-{&za}V; ,v#g ^>:1ia }_jރmq *\Y¼I|\8hGt\U>?Վ7㠚ִxԚaEPxDU$OyF=m٢?"R`OYL`oʋOtyl>l`v葡1}@۱VL Û^%}H%_*hOzn=έ$qPX Cw b:Gl ֎txGD2Fg[vzNc:SJ?CjrBTܮ0|\'FA`W +U_e3cO&$ %)ty)bVPU qOXH9ЫrQY!lć±uX#GJf<h.^觫]׈^rIdke*#r (+iI|; әL1\[gm[:1y~ԩ"fx@^]?ѤAy«Pmq>U ~`?:>9[9se\,l_ ۛ %`n!@tK+4^\zbn D:]?Ow~m|ܡL/ +6yFI;l>q_kxåm0L#UY0+$XaS`: +_Z`#TU>z:zvslߪ)Xį rEIiy廓{ hSSJ L@}yt3& m٢@◼%vNy>ũoөNS8*gɑc`[ט=ARD rzM820 @6T2-_B,?V.LnL#64 =$ zjt9ZʦO4^e4 R`B6T vr_8m{0f6+eEC1l UR\8;^EArP^gؚ{fw&@t[DN-pwWǏZ"ͷYdHؗEfwdl`֮~ґh< r$_N!2;;3Agq~ ^3tTt,zy3בO*~[/-gEWvuLzbtZ'W,2njqL5 +E#Lt6 82fA BH±&vq4 6MQ_\asg"-Ey 39eIz֏I:Ȇ堒 v]Q* FGe*@I6)ӭ'L eҷW ~b1m2o'{ORw 7jBj9}.~ӑqso,þNsĩ+;KTB3ReQ.R JcP6?-e|jF"c:l\$:Oi}J͙OݗNՒV_hf;߮ 㨆QkӬ}l""UxG1NJuw~ptɌ~&ח=Yol&aRIl#* .ԵET2u7p OmM%ڶCQV^ d<\1s ,.m^}8Gn)ë5i=׶#%3g4vx+p"7Sٍ +M;l}Q,gOI<띝RRo~!G25 ,UשmI: Ë+>'*#K26fDg"Ț' !__Adwoj>;Xٶ:G}2E7Q"Œ j:,~)Zl9)cm=>d B;6 ݳa*}Bg0x %'oNX=T8 DR4/D;f;cx^f *;ZZ"px }-F HWJ<+Ekxsݚn%;m B52hՁxk}(Z$5b; $n&(PKȚfz^>SGH c <Ԗ5Ω[-s{FgD +Z} L*I5+pOXP'T$fS :0Ts}g0^h́DG݊P+q'#.z72T4K dfI]`$dOU.>-p_JX,\j Qb )3iY[YyŦbtԺOዦF̀_OD1DRH (mmʽk13D9#٧1%goG,Hbk9*zAZffB06͆+k<qta Dp JղF:ɛ͘ԎraFŎlxoZar6L_ )$lurjk[ڀTAU[LY{u6tTͻ5y؂nꉞ$r3Z39*:>0t0[x0iZ |^Z";1r]ޤD:`ow01)B?H>xTWfO&#NZ XfѱA)Ns.^&pmj2{21o~{m +۲\`;24`s}k'=/ѱW2ma쯔 dWcuN*gF:tfzJ%e)I( w7gMs6hø\E/gƌR 6/H ?*l۱ѨE\ИЉ?_wL>/OH4Y:#FZت6f48HՅcEJËlp]pI!Ny[`pog&S f]+>/'wP1u! OzUlv%,>x߅LTkFޞ>;}?Lu&ר_Jʫ„'@˒ѕ'[5/S[~܊OO<tQkJ5,)ⳀNPH|SkJs>-@pI;{9ަ'J\')fN|ol]*d^[M)NA pA&0k"$8E"9̨O"WeIzwnjqua>G-!zGhQQ^$`0@d5*c Rh ,s'f55wq_ JXr7=?f"<[:t:!фP'G9HT)X +0w.cJ r-͡i'Mw|e Da֮71)wd`R=EIkF/{` +JV3?YF;w:\kW[ZwdNaۤ5~ϵCrsR4Q܀O86:Wr:|dlˊӈ¾rdi+[}`&~k25=҆T u/|mwX}²9N{QYu,6k!<3?ַX㧗yY74]+LB4[ûG7:H3)~=(M'TbwÕZҖh_z4Z{_Υ35&T&8. V-NP-1&?16'x"biAjP8&>ݡ+~p4Kl6S(=MkyEFy"mQ;S]5"p`Tau&Tl[v}C`IY|f6|H~ДD w-&yD;X`MI!QZdLJ[ "U߼;ܥ 2F[ZPmo@ !O,V|{j>XThy'fMNҩjw:XW)*|']sF1K2[byG0p(a@XyCLdK"sZuߠ:ːmtlI! fFAve;/&5V 䉦xuBZ0K-cˌ@ᦃ@Jr$eQIIƄG*˖jKtM[)*@k_5mנrNٴ +WbqӒ}Y"> Py<]TsK}?1ڙ ȶQy]&_&}$8[d <(~&̑ڿ}a/=*4eiŢZ"U2b|G>y\fG}:eƃwMGfyωlZ-U,l;|&B,K%JJrxc x4Y8LgkQ&vu8]'b0p¼FOA$IP,ȧŶymˮ`!Cq ?j"㌤^CTȼAqvp 4& v,خm><8*gOWYz$g\0̃Bik 䴓Y~mą{k `pn9g12'y{I{;'|"+̸SaCcpŎF ͒HF/qZJ>G&Z7jwd$0+f=55Lr}dnzHƤ<'r2O5]''.5{Dp ٠4TcUUqMaD K&ɤ7gvmj^p7d32ӶBmEnkr#ԴuħxТr57*O 4򾸚AxM"50&+DZ WgTIŠ]7Gqi0gި 6^GKw˨`lde}amnf=#3plqn( E[9MG;'@'46뽨s#{/mU84֮wY2#_,MU1H=T >πHQiTnZP,+J*t;1UZc]bAJ8ͥKAq83-}-8j*;V#8R6 +bXm<{~ c"&L/L1O>7>Ec«Sչ^MJ;bXojV^-\/Z-HDkP*4|fv;I (b'k(zֈ<Q£@t|'[2GKm\+&zzhQP@1qF!'V1O'x7gUҍ I'şPk ޘxp^鿈V '.ԇQBaͶJ7;Z?Ht#PrkI%J`f +\>]W43˳gfhDžHG(M} +O ܸ蔍Gh;Hn*[IPgzZF>`%iL!ρ4/4)wS=RN՟!DK# {ޗg5hW4_Q{DPҬcHӤfEC&NGc(ژ0NBIJs%EdA)?ȍ]DO >y)pd +lA;\R`-\/bsW.زX7APy ,8ݙ$x_%Dp&qEJ =оOovlmwvcXA4@Ǿ@#_tbnzvthBGM ?oK4V' TkT`4A/Kc#PxB +./qF퍒<bQ*+t~ƌl؛iWCɇ}kσ +,CD`|{欲Eo7狁|!IrXa])Y巠_g^!zW&\jc+p7KƄLK + +^M5&۟7(ѿ7p 1IA"Q7ap5Yd1^${8|nv)|ۅR A!\BvhCL &O:ͯ٩KdU.*aN}VPLh0i۷Qk {)r~Gֻxۏh=V;hJ.F#飛)!s';Il'C7Gf%[,wWj`(噓iP-r B[KO_+n]` r]rM/0fu+V4k16('$%EA^1x& /bQS%aۍրtkHQT` 8)@nñ֜ +vg`osqCVW$ o5S/0À|E!#z\u <'|^! !4Qomy}¡E^^ Ms@IAVKfE&hK0hףWqnޓiAZ+JlGJWtUb\7Ad٧hRx7Bqk3m5FQʹ+z8"t-˜8.W:t݊53 ma3y=l+i< q)G$GM:?/ݹ$'s hJ3[{MbU*89"]Sϒ@\VũCo&x?+`] w5F3K @_59F%8d6ak۔yʩ`t.}~Cf{FYSBQL^̼ NH}a޻Û"4NUTjHn3BrGbX ȩu5 㢺0f/+D?>aBB+QJdN }/!p(ևUiOʡo?S9X/dnR[\湼jM<('[-ݞ&AiBb_WAНc XUl~#YEi6?>/d1O/ZF(Qk߇H'BK|>cwFF {:_ߢ zm;P6*Nk.nLGwqD`jj?[Bt--ʻ}m ,>Z:VM jˊ┢'r&"|OK[l8q_y芒ahkôT'a^4QpgyҎ N9עl=ߴDdeK$AۏL Bu0LJr͓ \G-+qť* " b Ƅ/ԡ1'ڇQIc4e*ܗ+"GaATy{E?VTG>\a3_GK+7R\$N]VpUܿxa'E9'3٨_L*AX,7,X+eS~e_x _aU$jfUx»{:y(q;TkuQX o;t[)wKdmx;˜aIÒ]3.ýI/CVC )ÓwO7W~s륚790RK$b)Gr֜QAG%1@=HVϺxWl0"Me쬭,J7nɿ}09 "u:>y[%b\6Âɛ)~ձs8Fޒ"njMP`u2Dr/A5ѩQV +iAkwh9QdɋӐ[eƺ+ܰBo`|6lh&=,@0 G)^u"OB!x1()^a9)5r*<9ffYL!TiBvRH286)!bm~)J@ cL}vBHP9hè?(acN˜s?wDqti3fIUylqxIH@_mBm$gV)|R8n]:8O>.vY1۠he&λ.z") @K#J?NKs(gp]{+uu3Zb}"el((LЫʭf5EѸ+E+.qJ"nWMڏ0 ̸o|zx +ƙLg) + Iu$!JjoAY_(t̹!ʦ4t0HE77lJJFꚆ4scH՚)X kX䬏3<&s}g`G NcY$ +4K/}؍lZ<5V(rY^˛;on-֌{SA8` xfIȼ#s˼8%;~oR9P f= nߘOY@ofbO+ⴜӁ_ &yz ],!ፔdjl #qbV) R!5'+V'4;l~. [,q9`7e%6ޅ.YN9XBkQ͟:ܖ]Tv0k05LSI Y\{+{B@%g[K,]r~"J\ .7[BG +knAicu6]~VG^kn,oT"PU* p;f:t甥+f;^>MR[I~b="wWW}e,LBTL`n̞%׌ ?(ALkD*V@a| sу–-zz_N749Ggt4wl42 鯊CU \Bp,ebXb?[h~Smhݻ7`yTq58˗KGX_c$:R`M}\K\C@$*(*:cQ"V5> Nv!\w04+5@=0e) +~-Sϧ|-@p㡏#8[9KZ~ntoOܶ"pDj#'3l_L؁lPU榓js[[OP>^,tu/I<1%4V1:wYɑ D#nGbv$&yΰxɄ" Id ( HDspcҴv\*zni KP4 +bfHW8kJ J + L=: e$AUGt_C4 o_jC>}4~*&vAvHL bBw:ai;>2Q9Jf&ymllG}]q0a-ɹo<ùC6nNW,bfmd>LN]@MbԐh0fh/ `z}u\D˩)k훾Kuwڮ Z +ʸCva29VCB^H-q]; KH!2Bh[{5+uLTX]:j{P"/q 򴀜ڏRcw-1>yVCu =rw*>&~A1F $z`Bl߽#b`݆ݬ4mAE%JK|WBPsAX/ݔ4l3]A?ph\l6X/YۂCZ?UaAÞㅬuW.vSCZOc>w h%JH]x' "@CD$65u-Hgj>M{q|^ۢVKسwD!%:3kލY89)QRnLޑ@N֮|3O bJw.0(ŃRp% I11xE{yw ִim~`HiA3D8 A?%Ȭ5Ŧnk>mo~S<-F՚(xHc lޫCHgD -ø6IencEoc0s #Cɬ:1Ijzۢz7ʣdw+XM*]o=9/bw+ߘJ9XeuH8db1y!y4sKIU3.2]V@>}74p4"?t (yG +$ٚ&/-j$'ƷF}KQk TV]f„O:_]HjfxR. +xZ덏)ZmOɃkl$XPꂆ[૜l,Ub/hW]\ wΉV0\]Pyߜs6RJD>][=W#;ڱ_ߡ5CgG#(ue+ *Rcɽ Q1́p=u&ײZ>“ΐȔߟ&=f^f*B'%BzϓZq.7+5|0OjqC4S,6\:`[mddGh1t73'qT\Yo +DUmۗ;;vͫ4W)[tr0 ߌL/4x,d6e?bG\J%ڑi\:o\:hX#2#򪰨fd׉#O^f_n8G q"4pt0VG}Ƽ|8F}m@d6RzGp 1.U:ADL宁&0ԵɡFg,Yl,%_\ _a c?w*b&\x'H606ךdeWq(ft e!u?L "Yz4Z#Bӊ@.,pO;69-Kidn>г"C +;՟^}{XK U< P巭bGnXmc< A D *&e\8ڭlϿ+|F:|L ib;TfY|S\51vh0@|} +D DK%[<-hg~6"٘EsćO3*Ҙ32 SvWFJhX9~/l͊z&k_ΒѨn2+q5-) +%`ǯ+1Ng9`wg.i|3];^h |WZ׎CB;;݅!\oMHW`qĉCdKpsR8xi=7Y+'ݷZ]rzzk5"l8O4ؤz~̋s)VC%wMüRCFI?+ȓ]yW]D~VJ< PX!tx5P:J_SC^ tmo#x +Vx+묘Dtn$) ’22vi÷ =۵_ $VGo?cY!u*CWtk3Y`Nq_WTNոxjF]f+7.;{+}'úZInC[>Ud䶡܎m|p^ɯTu+'3F V$! +廏T@g-Thh),ۦݱ2jENHE1vnu?nOM xfXoM[U/_d$MB}̤UW3w=nR%)0!h~|y-vJt yB@zxr0j(- ZD;}|̺{ wHg^y^5"my ;;:iG]-bHrQ5].96#>N{ ܶ].|kτ*I`V# &DqRCM 5‚= X\ "'=C!0 +yZY# 7ghy>p0"G(6-O*M݅R Y)7|>\F,.76XV&F' :'EVBM?8+:CפzOΡn,(W&Vゆ2+Lo?7}F 똫EpVƽ_:xSOrG:eaY~>$[|E\2!+ˑXa}vgI833Ef|FdoӰxowCE"kg+aRZȝiX>M6Z g +.mugB+JG57nZLlCSlmVKV#e6m vF>[^Aktv"?0S› Y2ɣA] +UI3C&\s:(S" i-M\xXBXuxa澼}X5}͛]XcuWa#:oŹ:T3iG?k<#yg\AcCѤ}90p~U8;s\' GymK-f<:$NF_K+8( hZ6Gsea_4{GԬQ %Ag(?anL;C>7.cݞc`/Zs9B&ȗʿsXo~x"|u9bC:?]W7Sz+$V)H509sISmn 3Qb-Yױի^L(|FAވ^ƅLV댸)rn7v?.]8z*yph鼛F3@7tF=bM%t{=f8DF-kL]*[ԏ9DzukC9Km3iF ]Y/]e3/$8!.<'2C:G#Nb[V&&]a +rN(< +vcg/BƖJ|ǁ=+/pqfdɏ꨽|ROD9 ;WocHV$BW&.ʇvfƚNplo›bv+Kޑp:޳TU[x'{"T7h1 +GkBغ>XhhySLIrѣy5BkaY9DzlqBml,|BlFã-oj9$8SzjNE fah"SHlb}2 w~D^tNZhP2W[>䁵,YbB1-h/a> bl`}f1*|8H-9s{]V 8 _@f7*PWjfK' + S^׬)(F?mp~g5 ]o/¿}Nh&%*hU#6N8{1U[chrgN}0kE$xZ)}S0*UCA g3G7K.T4w +yFUI3ͷl:YocY;ͩ69Wy46SA6hblŚ oIvEfhԧ+ -%k尒| !sIO8SԒr\pFOcr,:6S@N)<܊ /rm1>}iMh@ on{ac",oPGO@jU)(IʷYq}\A.1SY5KLFN"BLdf. הMf5(^77'A#tQkd^p")-\r,2aHs?ϢVHO5 '$'>*jbuPy_ڎdkw$6Eex +zo+ Y5/+͜&}ãj{%~R`zuDCd >VSt0r(WA-9Y/8ɸNFފm=B +Q˦<c?,z>dsϠ9gLҶ54:젏TFݲwH1rrZ +ONjRt-MtS[d1i~: C+'YVzAX%IԄ~vi,t泖vxy.)`F YE ̣n#sflF"WjX)-n Qf$Qy»aV3 &ʾI> [Ȅh&`N0x)RBIaހ,>I^þŇys b~ 6j*A'ěo?҇f#ǘ挍ojvՏv,}Ko0'Nѡ7g|&ݨϲwt.%P\2iQ,ѣ8_hDYqRľ!Ki!^u猒[u56ry0 cŸf ƾ#l1ŮC QM +u)?n(Q"_pWh7raX7to]!d nqH\,q pZ.Il=VNo|;=.hmG7Sű?c1A @<ݿ-r#P^U?ڇM O2zyĴHiSBሢ ř"FTߴ~f0VHduB}]ѕ5UƫՔ +yR5("٤+;9 StCCٌ+03FNKeTm̖t~ 4LE +?t \?3c6Erψ@!$l_R5 F(K:_H:1(Tb>DcsU*Y|WDݺGk\)kEuG{xQ G5"%Uc߽D\+FM>!I{v{@Î)SoY8M8x 1]sma^b8[;@e0B7V%*U0SI%bK6Xa8P8xNc֐=vK_8׍"[F 4/,U-+g:|KiR?0a7|ь +MۻߡsoWpg6ʒ9]SKz:#r&E M`GjTh$sQ6QqL gms h-Mk :$&"TEҽLt֌}K8 Dq(Jrtku6CDj+>8zV_#bCZ' Fz4М{OW!Ș]3:G 8rw&>\27jL摮S>FZ +^av֪u+*b~!Wcz/uύk*5OB1+P*k=&h8*C\(I1Eʊcw+V>HFTaOr-NE'&U#?bK0VN1csjo!@P +2 +d0K'&Sd1&<ٽ1mK[r`$DHk`4ܯX >變z:kQumO<Ƚ Y +0[>TL3Fa1eDJ:_/g̿fvb{cAM3 tʀ*L r*l,mrqV[CQFb ;!CK0fHm5C[.#fBfVθ9iA_|(N8 +%%tf(D/әH[lNYg7W a" +S + DE∽Ŭ1 Me~Ҝa;M*MQ ݞŧ9#'w!JQ*D߶\tK"(R~vPwT[⻽` 8EϮP!LJu#ec r#՜ ~\.>'yW.A{dGqt ط q14§2jVӘQ[N螓v7Yq^+Q2 򠔚8曠!{q`HOgrWl*؍=D9zXI9B"Ck#5dMJ(Fn{L|GY( dQ tR~Ӊj_&˾>4rMx!<nHBCk5?Bn/zޞN`o)0}J_'4"_agtcXl3Di..N: 1L9nrNܫc"IzNdou"ȣ#tî28`?&03ϓ}C꿓vcЩOX?l},`aXGVWjwn)4_80:<s28\4BdS^pt" |jwo #iǕ!0`|o~uOu=z'oe<"/ pf!>ur7kd;h`If7\kxARJw˭䊯JSK.m>4 V:`y1-4' x8ֳbMUQֈAN_I%P[T\rj"Q~aa4M8 r5"͇L~ 4:~'%+P*9a^C.QAVSUO"_4m[ziC ґ*!'6 g E*bcs+׉.[UHY,A%8XED)=B# 5Zٷq☍-ɱ&@Yl vrXf?H()9FEƠE0>EՋ~| ]iC|JÎ\ޝ{"Z +DB0R.sD=?; k;ʹcM<7^NڦjswC3Ѱ1H ?tr@0BR~3/D=.hqՂܱب*d-mdM=kr}r|1.f|j?Ϥ}&YJe&ΊoD oX+,к;SAԅSxk+7riVwny"y4QpsTbB]gDv:\ϒ}:VOYT?F?-?䶫=<>I_8)n0=_ ~X]dQ eMޱ2_w8o8 +'v^['EcAC26V)* 8 TVTbE92ܙQ͖6ihz7\p)Z ]$ 6jo1;B?u^#Hr;ht|Wx?3 B7_u.]m~Pzk- hNej8uHc[*t\~ekiwZ"z;wByҘOyI.؆&# T‹ft 뚎 FUa]MZ+&[dڭ[HJI&wzmombjwɏ=']c"\ˎl nӒ/jDwmZN_~ϳEq2E޺g9Jvs)W{j#\U!TY{fr߂4Eja$.whiaţUPBĘnn%OJWG){i7K`ey38ek|C\pLNDje )MH/A1^69c4H3jH1Y Brh ]y +~ +wg0z,Y !BszSvX@xN&.m$7PqZ,I(.) ٽ+yY9n>Cr xy+۱O"5=˪C.$/6,{*sYBtHq0i)迖z+-ʁ ϒ݂sP֣;xNL +ɦ=kHy܁?91bJ@NϬu>+ e7Y(yÿNul,W !X&Eel7mG1eSPhQ\W1DRc5ha87 +u n ;NAW|D7WE<3J4ǕdEcC7ʲ, 6 }k +^waa rq-gNh#(X4.!^fgΏ0k]CkbYVw6Z\Ukq%PN: bj|fQpm`I$6=OʬetkV@Ksud[4 ɉ_l`Q% ɪRdo=تQէxJFDol&N'G>ֳD KTzW2[I9m#7_ L0PjY3;?=mvL4 +-ɠ7hM yEq~w9CބReaԂf}=ϔJ9 @lablJya +3[ +endstream +endobj +312 0 obj +<< +/Filter /FlateDecode +/Length 11212 +>> +stream +(iFz/e)q^ Q9iaz!c2Y&FT  HͿ99 4"9 #*LZte@Yr 46H)۪ts]EA%,m9!czxrh3_RL:ԲP]]!^(`CM&<eJDj $OˏafUEŹ4dw@$K`ɮw^'{p?T}:X2HO԰#V:eڂ\tgp`]b'ՔS| y_,C4+AZ1:n]D.6 ؔwn[P ζ?ᒭh. 4P/UroV-lMA.dXIm4yu7\#yFt(mhn# ݴ𜊼ĀT9J3h҂M9u3ό)\$V\z߆Cl,DL %~j} i2;DҾ$s *-U36XKe?T+0 YXLJdUO=b@h1)]M^;m*VxSZ$NuMWPogm_<௪$&ܾPٵ&2QR*Q1Rd@Xq,˥_!V(=N!XL-jGǦNU6\Q$/>}Ӓ jN^4$"&6$P- XsO{gu9܉[Y’NnMP6s\Q/pJB4/7a{8R;cllQa΂10 p 1ܻIRdj ~~4m>AG_5[sيj&k08DZ_.~b¯U]:ڶr6 k {>̊[[iޡڵx"NQwő-:w&!Bl1{iUkN B(fhiFV̴_J +\hLT-qhOր-簿JMNXOONfKQO^Ctv_NI&M( 6D +_69oxqY;y8Ĩ,]W~X1\ Cf]4 SO4kbWInJ\ ۓK,> =W DF13Mp}jž5sbw, 'v9) 5=tɎϣ9ZuȀ-S[w@qs +A- ps!aWR7"xZspnO| 2HBMv{ϛv{st], /Z=3I#7N: "،tH ~j +ptS~o?;{5R#L/W`[iz1]a䯝#VVj` fUB*JY}r2$1%÷LY'~6IsQrf?|%O 9J73،n;ķ_kD/f&ٜȵCG'Lb_epM"~ϫ0'S9Sn~Wٹud"N!BXpKjdygW5Co:m1,Pulm6jDgx![񧏈sݞjѻx( yKDBsr3)y~yEO̚9hu G*ttI\i8Lw>kLj8wc0&howݖ =z*s 6]t%l)0 y=;@0XR`M/jX2QkԎ,3MƦiꈬ)6±FZ w:$ȩmLV7Q (wAI&R dd}xa!1kBdUZˤS]!Vt(~Lk({6T&~Y-'x}&xv5_Z*[5'%:-"n.){wxÎ[66V{%$Ȇa[LnUX[X?d?$y4 CFɿX&HcKqdU \KJfK1 += G+Rd.\L{x@=5 +q :09M8o;3Y;5F ;l*֖vƶ8~"kj"+[C%ެ#B': [vzr<*֋1t-'0Ad(B(yο.Q=쵶@G5ܛt1{B 7QQ?E*"2%DjY?R} ~Sݒ +3o2%hCMS!:sqp(G)%OKt<~<$@):PXsu^Y@~:[զ867,D{oٳoVYݾ`+bٞ Vi_![ҟrGrϧFvGqR b$w9᫒]&->lRZmڟ *YWI8,JܗBpOc +? 8Dn`fln="ײAjEg6X P6 +,$HDzܭ-AfZZ%=Ӻvg-F7ujQRP0|1C +L@\P +ͯs0| -}aRH˹PPUWh3}|.wr >u?&Շݳ.D폨p)xpBSBA*PjN7ҬU`cRb=PiA}KGhݱwg?{0F(F VHU%Jh0Ȯ +A/u[)Sٰf/uV CesyHcmTmWX&0c/jYpD@A*4ʼ2| pǩz:_ĝD38(B.׸ui6kԏL9*+HlV@&x]aFt !xy.qIWng+}5.h(bWYJKA}|՝h}vE`@|I"R<ۭ#1S4.Av?~`E̋X4 -L$VyF*,ѷpv(ha(V + 5^"-iN['y7T.KFz?UD$I +KYDt_ +p埰^ $ªÜ+o_^)+tN .ZkUPzDBw,uKD17ЛJi]c#sT1O9B%YkeI%kgT>U_W&񲓍๷ᨘe2 _l1=\~ .uʤ?XHs1"-ʬQͣT 6]`ڌ$TmЌr+Ƕ_7~ E|_K<${>7g 9 cVO߫99!1A$&^-R7TczP xIP~Oi%5'mS-z ;GQCF+vϪz1謚X!U4bw>rpzl F i/zdrZp(>C<>ES"_rFnf0\ J%M7J`h9u %AJ=|%lZ>νW,wvnЛhU=.8`ߠa? +PStx6mcb%~9/xp1bI(ާcaa'WT]_eHg(NYt"?ݸ &y<'ƹءY1E#YxC}Շ/*Pn&оk6,-̊pr_Y/DenOj.l5Ь6)_7ߓ[Z8L`.cz+Fl2KCħNTڎ? + aR0G Yc07QfZ㝳m'FIpAJ~[gj./C<`Upl 1ۈɢ>.֪AgXQDXT9) ,A)pIEf1%+E=>xi֓I9F|P,HhaH^_|AKID,o4'VSAK .'pq6ɣpLS2 l27}~`eSV_pmHU.3 Iu*AWc-"r^ƥ+mBpW3O&q.Y9Z> K17Ե( *(9P[j>lHު)Wa'*u<3)|>0|Z6Xc;{;u  ym\px_)I 'iSjw5(΀$њ 8ÐB@<¿Hia%-eƙƏ9u[2DS7 14ef!ZɹiX]65ۃUV[˕am5[7 K7;SDllvihwBJ _FY]ۗEW<=VmP +q&M=4ELG% 曜[rL""~6ᦤ^6G$ZC pcݔkH0'6kE8b2hz"mN0Q8?8_Y9v -tXMYe95`F5[˖]`;Y˯t@LGܦ*gg#~:GqYKgRFfi%xF:ǒ?JY='KHiwTZk|f)ב (b6v$hpm dcs%4)ɽ]j=saC +6MRE7K9_) wn.J3'BNjcI% W$`T(Ue=M13/j^3@yAW6_I版/34;3Q>M8Q sg2CSK9&,ke?`dbaB6>K1ٿ h4Z|oa|)P5*{ C޸O\ףH +Ret6p {A* +\k~&\Jcf\)<02% -^@{(WnOm="),Spcny<袍Yg R%hhb[D4Ֆ%CĈ/\;x[>TRT`02ӂ8 *MW:y]i!:OsĭH](_EK{sWXb;>f=0Y?X$] rġ=N.SOs}FjUe:lX=?zwpװ:*PKyu, + !Ӹ +a-I2/pVҌLNLTlKLTNaVd:ΠoN5 [ma.Ze,y3V0w+'Ј6a6Ęc֤sdfD$d-tBf+"K &ƴA7?]8ŮR<.ڸ'+.47yNh7@W?T>գE򇩄~b~0WwcL(_#oh&meQhђhgX7q8t&^d+"Bz +)pٵ;X(ǟCK5p̻k&wY䓝G{ ͙O  n8!??~r L~֏5Ht B#xcLxR2pN+'ss|7"/pТGa6**6xP=2c*i@K#DF$s={#nܣV[brځxy\h\TG{đqrK9vIM ^I9} c"t\s^O҅pp +5v\>BriJma:7+ӆ+jڱȇn!i!yT$*\* +*TYb~;C]FFP瑧%׶b *Σ2cJb|\WRZx?$' +~ɏŵO;tބ#NA4l@?-(jϽV7rQΕ);m0`vfA@NV=u`O]b@yr!>$}%g j$׎RT +, "kS w. s3PGVH+alQ"h鴿{(l|>tn뒛+<`GaJp%h4fFAy7 E{5G qD4Ew+,g,$EUCQZ@i`~,I=AV_Qnex@2 h>CH mU5Px3\phteD@c;j\l5 Bܢ"zƠki%NgF8g[4( BWݴǻ QI臂;#?qh͇`)ϴV. DEm$"~8op!&2;L5 @}ZɅhә`8ra,]ڼS-@%QOC;?<(d< FE4u\cCؒcȚt͋;KaC*g`L?ZS-rbǶ: !}^ܝDkh3;zXX?yN ʳ@[xNܐCB{1_E~mirCelAnyzڂY01SSPBmO:s,=6f-=n(9PΛ+~֋COo-"a?U7ڡnf2|/NcП>u>*J.Ğ@}'G?wꥰ uL$ݜQ)qNw:> [ygǁLOv/xY#@5}ϑt({5HER8JY`+8^JZqr,vPB͍ôt3Em&Ewo`3yw +VTְR]ۘ" ~{xv2gWZs<Cw ^7Uנ#W (2[›ܛBM)KM:'0ס:w+DI\){h$jɜ>@Z"}_.nu".ga={UMKl^+J*̢1%ՠ28ygtuW$l@]a;uxZtۃR`Kڗ:;3dքwyGB_Z7>c8TL~DlfSH VV?v,)sC/'8!P`M _N[kOS\q븂y}RylLX*hu6"=^_>iM:nCBoi>L- ++aԪn>1*z.8VL6@8EQaT ku]oU)ڞ!qkF!__,uN&$B>!+>:v،) ce[L+_9Fƹ OxQv + )Uo^H\H"@S\3Lvĕ2ιR@Te>/8_-aJ uj I?P`${ B{)8_ۇ:L,@rvc09Ooe2HR@]ҹa}S]iWt +\ ovfcRk +8kô2k  ԍ`؍;deBS-VK3' g7Tj*$gbv>̮T:w-6/cI5$IfNGEf/ gK)'C;OL݊fUWx}2M7[BSBKfy{m]cТqfM +*gN+.U_vf)t́wb@w3LbLhxq|9;g3EL>{5յA=*^Q{F|Q{2RdGۭJ$4lhOBfGSυnms!(1UT2~ +endstream +endobj +313 0 obj +<< +/R7 305 0 R +>> +endobj +314 0 obj +<< +/R137 315 0 R +>> +endobj +315 0 obj +<< +/BaseFont /UVHPUS+Georgia +/ToUnicode 316 0 R +/Type /Font +/Encoding /Identity-H +/DescendantFonts [ 317 0 R ] +/Subtype /Type0 +>> +endobj +316 0 obj +<< +/Filter /FlateDecode +/Length 648 +>> +stream +SaX,ˡ"VXlȜNPWaAl>%!eߘXm4 +΁x<2/T-x&/⧲hI P㧖+M-ivɃۛ&9jTm 3r)#=qF0fE$K6ByU p^id6{O F}';CH̄GtQ -P%+jG"$$;Ej(0gW2v4[ӬӰs{0į͙J@D23csX"CM.&tqe Ɨ_f%"; H :yQ=BHv˧4=^e+J^/64& +鴒p3EM!2FykFth{0[mvS藺kqyhzRC}C$ ZV=3zJANۘhBl0c53+b B8B +endstream +endobj +317 0 obj +<< +/BaseFont /UVHPUS+Georgia +/FontDescriptor 318 0 R +/Type /Font +/CIDToGIDMap /Identity +/DW 643 +/W [ 4 [ 331 ] 7 [ 610 817 710 ] 11 [ 375 375 472 643 270 374 270 469 614 430 559 552 565 528 566 502 596 566 313 313 643 643 ] 34 [ 479 929 671 654 642 749 653 599 725 815 390 518 694 604 927 767 744 610 744 702 561 619 756 667 976 ] 60 [ 615 602 ] 68 [ 504 560 454 574 483 325 509 582 293 292 536 286 881 591 539 571 560 410 432 345 575 497 737 505 492 444 ] 135 [ 393 ] 139 [ 942 ] 171 [ 807 ] 178 [ 857 410 410 227 227 ] 366 [ 539 ] ] +/CIDSystemInfo 321 0 R +/Subtype /CIDFontType2 +>> +endobj +318 0 obj +<< +/Type /FontDescriptor +/FontName /UVHPUS+Georgia +/FontBBox [ -490 -303 1796 1074 ] +/Flags 65568 +/Ascent 1074 +/CapHeight 1074 +/Descent -303 +/ItalicAngle 0 +/StemV 269 +/CIDSet 319 0 R +/FontFile2 320 0 R +>> +endobj +319 0 obj +<< +/Filter /FlateDecode +/Length 36 +>> +stream +Y#R{af ]`Lsy"5 +endstream +endobj +320 0 obj +<< +/Filter /FlateDecode +/Length 23277 +>> +stream +6\UK )3 !EA&фms:0azq' 8]RW)> +A@'" #m<[l[Ӷr?R V˱'#ӹF(r5/kc> +GhZEM*f*f⫗"j{xAT8u&垼ʷnal]O'#Z Ξt6ydf@ q`U0U!F`5 £&߈h.F Iobٚ*zS؇D +Ie a[ lyu ١q݃q"ǚM%MHÉv|E[[ +%}MAQl?Eۜs!+ "Ev|"a0j0OpARrERB.pȨԧ#\-ggwڰ3Ih 4ˊR "*R@zAz7-gm:T?~-dv`Va1ʻSy.J4,6;sD/(MU覮`.&rG_喁M:,Ƨ:< (bZW\:팄vqJfJs. €܄acK׈s7b| ūҁ述K[8]R>M +ZO[שA+9`7ǝ888|CLv c?P\~ 6&,P6O 6;f_?]/|PO༄ŕN+}1gvia`'Va`'gQ%`Y^q6[#jUiVC Kʠ='yFJwvJ4Br}42u='Xz'ǵRy6fzZD50-ZQY -},KZ6q/ѳE5p0;;7֋/Ș10jQ$]"870!'jXVN8[ +ry_OIVz"SgPr(^#*j`4'fY{ֱsLNI /jfY-"I,aOq#䠶ÊQ$]woUHP_o ǫeX#1dʔWB  +pBʘ5R|!]5w'ū[7t[+$۱CZGUh +֣٘`4&uH:;g/2+𽟤Dx8M;&xt!1Rp'8;%_@$tt+w 19.PאҌ +XuD oo6 QO#P{1ri =9@WMـc\r\?5\JM"8d-' Q/zۤe(!-Nv@jli:S*+e^_2Ngh){m>Z&`.O ws;CEv'&!DeyxA5ѝ SxDiD|tl݇%~SsM<5ҽ&=4s&!QaR_]r47Sq#(ޚ.HxK2gHP:+rDY}MMAid+bcn du%؋LvXq-M:Ҥ "$t.g*~)YsNΪx=w#%-&$~ ,.pLJ?)6e(~|H08s˗I|b\/Ԕ>ޢC|uBЮށ bSl?d1g9Ks7Go܁H.t0ڥa6SjY,|IGje`J*Hu2S],DV8:T3H 2ah7;H)WS",T +>OSQN?-*Y*g<:kv2.blYs +cnȦ'_!)"Gqɉ.,Wv};b Og1+bMu>偝3bJWNNh]kfLN ^%h?0|8YV&RH"!݄WMHZD>UĴڞ{Ь&u9{(J`Bx,<Q/x/i3;f3K\Y 7+zQ_ aaƼFUH:U` א%;y +U2qη"2JC+P֤.^QåtYӘ $,j d>\WU6)W:qm50&;=74HackKQՃO>L6 Ck#}xgk-#ovq{9JG^3D]$CUͽ.H(qہyE-jqJYI鑣YEZL}3dQkn ~S+WOgX$ aªOC;Żv>p ˋ㤅H'VB[p_>6?ȔVc +\tBp&.ʂq +k+LNzg 4 Ay Qi^Y5Pq8zGGp+K|Z*ZWoA:Qku΁: Ȧ+a]37\cwhٶoXSMےXO& I=5lekFّ0 &)ĈC:v>>+|shucCJaI \Zs/4X\m YL?m6Xf*, C +!iDa9ЁZ8eibP &ҏ=@ذ|bPҍ yҴƖuIVJ [i;^2=?rh*b)m5CDOB~?6HV1rրJ$AR/uT_o_Vz&{ޝ[\%cF ~>gbZ +&URI!R1׆9 Ӻ:=V.ߍ;8pwYtJ'.otn):$cEpdBLwt_WխpB%8@FV|h_sb޴uV+xw'| ΢%Z, SsoNi ia\E 'WQ6M*Ϥ3l>}{dfW _01bOz%{UByX4!@8GFG"ɅuJ e@.b`%~6g ºgvT"6RH(فo}"x%tB>\JuL;LBI#HfYI 0|TTھrzLʉ-);+xuرc)]>M~.͉TDWCV0]EoPoTt 윺\$U!5"@d +fshƺ0!Ȉ3#p^nyUZ{ᑺ 6ȍR8dosj/$(5ϡH gU=ͣb*QۧZuIh6/[g 8[z#L؎H0tQ#z/#ՌP;^|Iz;]#N%3A`!L@)*IZB휍x(Q}< >}d5y_P_>ŌWnpA­!I"f$x /ւ7h+>o"9/_ Kuq-2n l.$"[yl8 M•!"LU&޴XF'7~fݒkLK}߄Fb}0fhK!]QP<`<%J0hVva-!N=~Fm5P)˺|+i+L~foՠfIDb[5[GK/;_ ^ͥ/9SPsoJi}ek uuIxhj +e`t8JN+FHUMg <'Vg1vk7:R$^}Īy gzY14t2 63mLڰdͮTǽMƴZm I#'oŏGT|9N] +if8Mu@9) mn!X> IBӓf3] *btc D0~1zy{C.x^*0)K=np !2KA|H툂VyRˆks]c% +nC3 ԙ֋|bD0=^OLK#;_N`AÂoaP:QZZd$u!T[[:k#,E 8̱3ގf>JW)5bK2Q96mA]1CWJr7D7#,kvgA43k/>fk̓{fhs`VZoaut;2fvO7I.ҥڻhOÈb,&}r刄j lľq䐰Ξĥ=y{8=Q(M].@M(#-mRXtzL^4S fۿ>9Vj.eŇ<#牟׷d~7e\̌' z EVZB0/{mǏ`wDB8-^&teqmLLk6OϧT 9:D1FTf7[]43R2i<~[yl ~mBK[I!Oene3G]?EAF V=~DYy8Uړ)3Tk:l;34O ;lbatZVҵRS" LrV%2iY_z+HbmyWII%VѬlDZP,,cX hH6~]PDaxiWg&p{)zhs@pr꠱g6#\yJaav/bK|jHC!BaՐ4גJX9fEVSܦ]V̲0B>R.HyYUS!GrQfs@ 3*BJϪѯnEy +5rZ=( n#Hn :x« MK А_'kɤUl,k q*[׍U2xkov<|.oobmĉ5ѶH|{;M9*"D#IOe֍(W#M9);.C4np*)4m4(a=J*Q(7 yNg8+qġ@˺KSݞ +Եtwoi+#!KP1 + &JhOƟ&$xE>gf[>ib&'tj<2c2|qTiHw&*&ڻjBR>V^3E1I ثJ\{ kV?w=e\L +B/j~rh)tIO}9 H=Vڏ̳&0,7Ton{lB:+ 5ZXo~:ҫ8X"ԁDKj'|qWIWj+w0D: N>ޜwd㿒CHHzR# t.Z.'oN +4I\c`Đ?Xk!iv,95`Ьr<MƋA4Oݓ\[U =͙r$!Cw6Ej#Tj2ve}{4.mK#ˢ_4+)xz';sYpkq*m_Nw C [ 0; * f /l,f;@gs2ȕ/Єz#d?QBu,?\f#B F 〮TXŗH!z>XoM!GMrͲgP`⯼%i1%q穉 &1J^ȚM\g*Hm-㥌H^%7 %I7̖IoV.,vqpJ2 Q[]Jr,m+ʴ__(0J (7*tE'zE~@E~>D۸kG$ߩ$7,FM9( ;( EGRCSɋ\h+[5lIb]g^0U1JTLኡIqzBBH* WN803! `>rnsXS-a81k,E4䴳瞥C`u9}( U17BeA$|Be5.@IW=j7֍0c +bdJTarӋ5v.Z93j#eEK4Zw6Y[5o^?v siZr@"Y3 +%-5u_,jCm)O5MuZ<I,;~vMj v c|\(׍U+B!lq-З?s4mmH;)AdKD L^Tna198I@od댓xsn=\&ކN:fJAHW<"a#ձ!ĝg Gfkq?BO3wT=X+ϟ7F>s\[ky- &r%\!^ sG ׿@yטpZ^gJ&:ꞝ:Us ۻF. +=#L=PL + W@БX70tS`qp _<~͆N> j +6 g1s֢azl4.yv{}{|<5Gq!B(JB'*{#Abk U!8^)=/´_8>9|y!VįB`tdlBz+?1.JC4|Pnefػ\+GK>;,!c,3yO~Y]-S Z"4,OҚbb_+=E+Ɛ_ruFTk y RT,pN}rYML݇ڗpkz}CAIlx~]|x8! V=$7ӜpI&-2ɛ2靦oBnj]f `1'尀^@E[LE8wd'/0#cGVc\L^R1voUM)lvfYW1aBR;jWPQL'J\ƷpK(7Gƚ|1XF#lZf͋ +MTs>d8ڦX=A=쇝z&2krBo1W%+%Ȋfe^rkЙ-1}IBɊxkeVQQ,ۣlnf1kzmLڞ?U åfڹ~z"`5tcjVJ̟4*>ڣ2TCA;K:"5e EHEjY o~tnf&63M\7 \3--h2J%G.5YyT!FvPD]rQAͱOJ'M߆jO߶>Qq[I3bR |&RjLY.@ƿP^!2%$}TR=5\k<+!  iT/[sD}s3=Ia#X}X|>%d}# !͒:5>))4IsQ׺6HGſ{$%O1M@ڥH&^(mq8͚pB412" Dzχ>x8rli^$bQVyG$!;ur&UD 5uܼE-M:+VqA\ilxE`eY,Mq1״.v0jaip7/Zs 2)cqgKTà x|ײ**;ߡ<(Es8SW j|*@6p#W_kSn- F8-)vt85έn-C?6zkŮ[`4;< B#TPQGXv`|wK/o+ IGF,f\;& v݃zXC[u$H{Qt-J-u#Q"h o3oi>_k(JGQ-S*apnڧ+krsƩO:5cɀ5ޚ݃GkQt=r#z[ (=(xF( {ٴ$ℿ[}2/lx}8ϒ p!ZunjΟ 9ݳrKLvJ} +x/Qϕ^#2qO9!tJQ Ii,ܺu%6;O)bE=\ ʣ +ip, X0O59y&.3 ^n}BۘZu_.ݐR=(y/'P}쳚寸9Z0]eX@0HR_+^}ïP\:"2{TJC"7*ΧDn>0y~"Q!RACU +a75q,%>?ڽr;M~n 8} \N[=J܊йGR'j,Kp_lBjQZG+=N֡/_8pL5 J|TOLTaCdD-4Ο5?lZ +ۑ>[ʊJPR#kZЊ+ރ d e"5Ze(Ohk6PTk 6BIoB@g]}IyaaD] o"w`Ֆ%dBcѩR"# 쨃 =m]/&b%U5HN}uNi>V{Nac.L34s`o\!W-m:6#E3,!kJkG +ufə$X} p o-0t(n&TF\T2ˋ46` 3rXpQb>u%4*4@@SWPoϾ%Ck*RQISrN<\ 3@DT;e~wqU͌,GbY_D7d(UgIQZd 4|8hdBIB/*@!Q&/.f8e˭јg[uռ +\&1{XȨuT} Zmw.XZ7 ?[}Lye H#p52͇qZu=c؜R(ja]%l•8ܶx`vEϚ)3BJXCڳ5;{ꟕ @3nt-&}8IS{*:w>')ɝ_.[{5f!.؎;۵*v!&)rA rݭ V_@G] t)Bo}؝DFh/5GZ ݬtғ7fH)bv:ruLP~S؍QD$9Dڰx$Of ~/> U=}AbieFͰ61 Q#Mz$Z8&+KuxY+jݣ"d u8"d;"k9BytE +x ~ +':fhˆLs}pw@oՉI|gZw絇'?AGUVKaiN]i#"=]> |(o9y~"zU%tF[e,Ū7eQNCk8ю?Իz6?̐*$%Oh|iMRd43dG\C?"J'%<BTyU]4v'(N䛩ӥw ؤ,M0Cmź[G P]2|W6Ky@XPk mT|Yzy{w-{yr .,K}HX0Fӹ!X}GLZHZkdHɕӑ=lå>AERV2P2ih)^3VX$V|+LYuLH[ Ag\kr;Nܿ˿s.ܓu G3ꗄ(Y UPt(l , +YM8PC 5E҈=w<Np7wKwU( g yp_J/̔6d'2hs`CfR-벉 M<σ=ujAgII!’q'6>7e4-JC^7cHbGI uqz!YR6Sk`ma¨G6{U )! :b4-oao=Rk+[>X)4BԴh!,$롋4pfAQ*-1;#cB.]>hmʫ=U>YMt-M5|0@%E?!TdU(4k;m`[1)l EKeA)=_>9 )GݻT!Ov\ޤoK%Pج]~ju.4.L\lӤ{u+Пs'e„QسT,nr,žl.,&OQ#!J %.2@chh_7y%7_@ᘎauT 6Q%950; WqWb{DYAlm0c:{8oSa@5),=$xn*nnoϺH2~o@@uZ [~[ݭ-x.SD> NֶtE)|@N?a^Z~cDsgt;@[I^n}F͢c[G2,9'ժ4AKA IDDprBWzqE]]~$aA\;ҳznPsa`XMy c\=ʈ?p%74H㡳 [9(V5kk~+"bVe3lb׽Cv!M p =EݓiR_ dtvsH= K(fW̴j[pY"dqFX!JĻ {!'A& nѐ4U6BNE-C%/X(.˺9 a +#%\[]H5Jz9S3&N ۲Z@DFDPR26"7As:hiB\ٞ0?wQWT3(KÔ%<}฿mxŃؙ-&َ[H4,=Ho<8!2nt]%LpK8j~\:Q%6T" +zޢsBKhS+y ހFh +ύ3:/ʉ&cKkCv:q577p^{$FP^GQ,VX`"%9\5R86%-v~/ b32JɱOy.%N9UNֵټh|ɹd)Ƒ{)hBgRÁsh 2gڿDo26ka kzͽ8{`;tnXXgE@0kNp"×zvX7T +.ePa>{шLbۖeT{m6ϐEz~KSs!&:W@%/9EX=dnXGUYxmZXg=-.R8^M>E!߱4 ^sl{wz$lIcÀf|f/BPAYL4X!xp-_G P[%[_G2 +FXPR# +shzFf0ptJޢ?bTjx1!%|ޠG=.9>(!S&>E!XV.Ě' t$.eAͿBA!\O[E=kwY& 3i/T&~8}Uw/۲GI~!U\"P@ͥv)Z^E ?N]rByPM HnWX4Xt5sAw-r ?iB':>`Ѕ=\-٣Vjh=s8>j'pGi7g?Y?h̵d[V`~ d~166+߃k6k gOz˼&dP!`ʓJmG1W@#GGtfkud\˻(@]J>dtXk*H7: d\" b;9}S.3@Q]RSjPSg%EG&Զ+ru.QXk 0:j5 \<7@!A +o y +[WY8G੢Ƴ»ho?/wY_kNe5_6v3dUSSqc)-\$,%VLN9%0}-ͤS&ҟVb> +(.K)BsFj':=cUZ_dw%|1GZNgtsIUw43FAI>JNM>ź"ޠ;@VY +qD/}6q +?, كnb^":_~|{OW}~+TȘ֦LZ覵Ѧt]MH8UQ,.6 1bJ7h ?)]|\ +ӌpZYC>xCg $oK$?3[>|dO)aO}albAաSv9p%F3.#̧m X\h[ nQ-Mb6ntkiG%ANy%\2 3ṉ{Y|jJP2_l_tg%0bu!:ɟZICOM4Љv0jD&5N lP-3~yn/*QvW%zuk 1x+ق\Q̧Z2a}g Ĭ ~Z'1yŋˀok9Zrʘ~'\6wQ!Q l;BO>s- f<-޺/V(0#(6I +(r+& +o[AϮS $b^$ăfɔ' B b E8wb3N66"|r,Y`>JpIb(IJ~(2YwX(KQ4:֕L`Ԗa mm#rVO|Sa՗ nר:b0?=;@c kWC>>M7%a NJl- MҌ|kѳ8 }|W5%ˎ͍kH |~&8N]np'4! *p)$@FLA[,ĻL@)Ys*fo{c1H/7Qee@nK4kpQj[mt' &qO O(p oK7J{Zl.w3&E  <ܘ͍c*r&@vT]S_ՔPpk^R6WbxyV~[ *-# uS%!Ҫo9+__f]n 0wࡖh-EpWZX.5>_jp`QR9^/^hT)I/Xa% P#Enrq9"uH +C0w*cgκ$1h0¶n+z]*{"!{v]hpXrxh(UZ%,fZP/37U1҂WY|/f +e +'Ux?>t x/!^dC5MLn0@磒g'j/6A3П9dz'7T֝hߞ=؆,FM13[t .>  szPz~GpZ* +|L}^[fr^}Tz!B9nP +8erW{a5C9nbUwuS8@fZat9Pz4IP̩6(o~rmoѯڇ@&jeb]L0'"HHd̨A~[%'+{ 2q&i($X<`yqęM8-Y]EH~J@#oTOrgrb~8֓D*6Ii51xJX+OLJQ]7hZHDx)ToWFGO Mk{e)X=U:Dx a +/Ordering <83c7dcb40f041088> +/Supplement 0 +>> +endobj +322 0 obj +<< +/Filter /FlateDecode +/Length 241 +>> +stream +|lr3O,S=h7=y碏ZV]D+LG*`B-o:\ Q9 e<aTY f:AAKw5 { j]GLE7sVl]k +y> +endobj +324 0 obj +<< +/R137 315 0 R +>> +endobj +325 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 142.874 547.253 194.599 559.413 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <65c744bf4e814d2f4290a524414341ef7ea2ba> +>> +/Subtype /Link +>> +endobj +326 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 173.164 507.658 224.89 519.819 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +327 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 232.572 432.214 310.029 444.374 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <298202367b0924e1f500fafce6b160da282a61adff17> +>> +/Subtype /Link +>> +endobj +328 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 236.18 280.796 358.004 292.957 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +329 0 obj +<< +/Filter /FlateDecode +/Length 2313 +>> +stream +s}>C+*p4b~z`D8Q_3a ׁg_:?b\1|f"% wY,k)Oo2]EeډlTE2g6"KPw1e + w䜋ݝWamaE"Q}KqVgiݠ:=b"c7zw2'x<%_m=~&s{c$֓n-ϩtkHfҧZg+/Y]:-Y9Yi{-ZlDe_}g2^o\PNLS/kx =*!6{r('MY5 !#C񯟶wΎv/dȀWNNvWZwK`$c&^¨5m}"f.Xk;MUu38,NQv08%I׳kH~jVxhRF;(|>^љ` 8#UHJWImPǝ0 KR'ydzĽξ< ގBk\ԔlԿHN37;j9c+,T\kEW Wȳ[F3-# s<Huhe̴n<ڈEP d"̛ yc)6w¼'M t* EqnP_I3խx,G|ɣc32s#IuJpPIy(^2m]^ OTe].C]UˇoW"n s6^fNM)*L)!d=**a4 hKVs5+EPpfYMcZ͉ޮ#tbT 5[fJڃK<‡ P4,FeY.f4Be2 ]YAMmk0VЮ%|TDMPbP#)[sajZTYĞ]j)7>;/#Sc15Qٶi7Qt9a*˺a-ubгkB?Uƫ@ {KC =84"S8?!rGTwu*Әe8px(G?T_`K@"h ,#%,0*E݆e1zϐE[[9?60/:ą׀g(qN4~?ã㧖4B(*+&2B}ByaA)S"”.Qy\Xt cqghzߺت?  +\(hԙ.F>Z ԟ5X36Fa%K>m}Ϥ[TSmZElUB5~u:smN/Wd|FNBW18KҦ +sv4_דpyT꧇z7ڔYaQ&.>e*I5z:_C::^ib@֠ +endstream +endobj +330 0 obj +<< +/R7 305 0 R +>> +endobj +331 0 obj +<< +/R163 332 0 R +/R159 339 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +332 0 obj +<< +/BaseFont /RNZAWF+Georgia-Italic +/ToUnicode 333 0 R +/Type /Font +/Encoding /Identity-H +/DescendantFonts [ 334 0 R ] +/Subtype /Type0 +>> +endobj +333 0 obj +<< +/Filter /FlateDecode +/Length 563 +>> +stream +sno}rJHL +HJFB'xn0*c8gDzPB%#ֻZb2-HPKc^\;wIH.Pg)TI~5 X~ +VGp 4($Q񏽏ln\0H5a5UV`Lj ,>b!f bPqdSj&mZΖ~CP$z"*wA0}vՇBfNv_a`^Oxաizz$,}EVNy}t_5NCe?M2M}v\ԍ[\Akjׯ,Nv,DIb _69ɴɜ+Wk"Øϯh^ͯdo5a"ʣx?Q6 RW0S!rQ5">EenМvJ>ybZyA I::𯜥 i2!Ukct,".u WdS? +endstream +endobj +334 0 obj +<< +/BaseFont /RNZAWF+Georgia-Italic +/FontDescriptor 335 0 R +/Type /Font +/CIDToGIDMap /Identity +/DW 195 +/W [ 4 [ 331 ] 8 [ 817 ] 11 [ 375 375 ] 14 [ 643 270 374 270 469 614 430 559 552 ] 25 [ 566 ] 29 [ 384 ] 32 [ 643 ] 34 [ 479 ] 36 [ 671 654 642 749 653 599 ] 43 [ 815 390 518 694 604 927 767 730 610 ] 53 [ 702 561 619 756 667 976 710 615 602 ] 68 [ 573 554 454 575 472 329 573 563 297 291 528 285 879 590 537 578 555 461 431 347 575 538 822 501 560 444 ] 171 [ 807 ] 178 [ 857 386 386 195 195 ] 366 [ 537 ] ] +/CIDSystemInfo 338 0 R +/Subtype /CIDFontType2 +>> +endobj +335 0 obj +<< +/Type /FontDescriptor +/FontName /RNZAWF+Georgia-Italic +/FontBBox [ -514 -303 1895 1074 ] +/Flags 65568 +/Ascent 1074 +/CapHeight 1074 +/Descent -303 +/ItalicAngle 0 +/StemV 284 +/CIDSet 336 0 R +/FontFile2 337 0 R +>> +endobj +336 0 obj +<< +/Filter /FlateDecode +/Length 29 +>> +stream +iܬBf8+ y<~Dd +endstream +endobj +337 0 obj +<< +/Filter /FlateDecode +/Length 18136 +>> +stream + _0{ Qa ]2ݣ"+snԷa˼u`?S*w^Jd7jLvƦY+M+$G Xw36\B[hx%O7{SbB] + aa_,iĎʁ@B`|F %lx>F:Y [ +u9 lж\zd&nuvAS"(s:J/vYK/Nrq!ѝO.s'Ssmq&:}<~>]Z*SIFAB+LjC Ƹ>njc~[&}t!R[jE0U1NӋ' 'Z7R,VRjΣ#"i^kި>~If!X.<;VG N"(T4 +>z.})b台m=Mh3ɬ<.D{IIK'z}̓dE(?\;fZDkJDU)sVn,HN 1BP$#3ϬKz;{ْ#lkUκJd;9Y M]p4V5S7.+pǾB*ɓUj?L}P3 ' Tu%בg tNלm]q|~17_Ug癖G\+hqdXQԡ#V]n3Zj֗>d 9"9[AO!SeWϽNڑN#!qE=_O@_QlzxMfq\ g_([_SVbZiq:pcO/X56=}y>tN.L?5{\NPID|.iZߏ+g[R3y8"g+ 5P.y(ӿ8p~H }%'Cy̒-I3.-x +77*bP?T_1dauF2c,Y"}Gɾ)._Ӵ_)f+Y[,id` )0ZCqI$"VqB<afҠ(㮵IΙ$CQB8أd[uĩ1TpWCF~[]K =2oj;mҗt v :@MF3;,6y)Ym? !3`ݯKa7_. ☩뭗_k?y'Jb\(!OG蟱 %ZkuK UBo⛊Tﴄe8+ʢ}[JG#2%A[88Irh*#bfwx)O.+ (e +3C}3OuU7ƠF_)³&czd(U`<{S!1&&7:0> +"A$!D&["Is%Sk{L_`vv3@9evRJ7M} =Ld~_h"ǛÓ ^O|RӒ +9(-|Kd\-FF 8·a}4~+ژOP0{:hz$xV(Rn^¾=C^w|94+Y YqX,{qx_66K5d֪$WLW1*V$0θi6Ib2,7QhA`xXe3+I*/h;*w!Xg8?reJƍ{k\(Еd +%]%b+X6&Y-* i8dG: 's3hqb(Yz%\jSU6rg9X%koQGێ&fOV[ת<I B3IkHu&ͱ+DܧK%i-d0́}Psɏ藥75$ +ЗB@.)|AEŠxw3rM. $eE g|.`/}5z%'j93HNV M W-b('VmY,T98-0ʊ[B(4)K>xCr?D$CʪE@$ȈG(_0&torB0B|d Dͩ[H$l|^o<+g΢-ѱ{vⓡR6+5kXwY.x4+[s#gY!<&MdLGƁ l]#Wy@AX|@tqo^TfWd W_5ْNN Ykޅh#<xdXd /HӂHA@浒Uڿ(/jF<S4uyYU !j/_Nk,!5*\ n;ZDۻ]oHYj%| ƽT\et4u≫D0+g(\D3-Zdq6%W#͊$#nD~ˤ 7xJ!)6Ft>᠀:-C +u P+Q* '>M^ 7@#r]V'E*dLyYvo'b﷉?ך|ϋDNk K{?DE$UꚾB-@kٻ>L2L.djD)$B02>ë_'Sikf$Ex)_fy2(L1ak՘c8Puٺ 8>x +phdZ]Xɹ{[tm_*8A/,UDrimfmZ?g VcrC9B+H( D+P6-o!VvD4ŭf WR N_͞Ív;˙RzE8ףֹQufXg8[/ 0 +!b.q)ɼĉLaO^hȶ-O77fNLOn%X!GB%̢}ȮJ]0xV_ ]0-=>OCأ4H)?gLnÝYZc<6GdFt>{M,Xů4}^=LU(ԒȝGƈ}qe,;?Q s*5-))Ϊ21`4`7C٤,}\?JNDB_0y1pM;:%$"TY;INyb+^߉YT?Ɇ B>7>g<(3A.%"Ѣ'/->/s-~!kea)Q Z|$L DO|3w1yy^sN5:QH΀ZvFs~.%4t@쁲v:1OPCkGf^6"RڠOp@be5h/܀qCZH7]|Y'=x Y}Z;/ H'(1G!ٗ| +%p,D:a>a]."7:::e/<%XVK LZ&DshV[kN!(/!%4dN+C&;¼fH`?~He- 3;՟Yjc`9[ςݵ%~C .R#> k`Ǚ`XhLTlX-44.KqhG g7r +=V0WϘ* (h jkVm5AD(/eV?93 + (> .!e,:\|M$)l|Nsi{Wj`VLm y (mTϹ{hLYyp8.A Sdٍs)_m6|8 2+^2uۓ|ޕ9҃K)zM(X2fbpNS͑I踅[ԑt*G,*)<XT!JGF}n%'ջlI 5Ls*uxsoizpKwIEm +˗ mSkMO"E_E%3Ƣ`,) +I?&6Yͤ$_(;rp~خ R#Eqd` +XhOZ ^? Z,?B"FsЦï m- _t@Mr1hkNϔk^E}_`QWX*7o|Vu}CE*޽6? X*!LPsk4t`p )C̷8;X?zOydoQrj"􍈍"|7"A^ ؽfTJ*)Tł/:"IK^刮Պ'6Gҏ[$KxVh 56o͡T=avK3B5]wuᣣO>Ákk$M@u5`x<etŶx^yvP+^QKϯȷvFJ:|b 8UV-t/  62SA7  +I74`!J刁GEs"gDnύ04 =΢DUSJMP/WM q(Lۓ\ńh1!9b8fxn#uw-qg90~bmď#GB^ͅH| pgzmm_w‚AOL߮~ .n:5[/3?#z.[<^Y\X=X 塜 '$KN\ȄD +Cc{t-378b;Ϙ<#~TBRՄ9f '.Mrv@=ZGUJruܷ +Ҡ=hϝg;$2@Y|vp-}z؅3,h8}93kLdr<-4^7 r +mQd \Z1/M]0MdhEݍoGhGB chv[p'@'UeHpRL3!bYz:y;Yq 4 *wHT>r0Z bu5W7r 0 XW(t;M58TjoDvI.힦O[[p\G`ujWz9dC#n(zmK +~+9춮n뭗d`pvMBNh\Y!y^yҐpJ+?^As,JV 6.v||}$Ҫ-ryG"]j!.PL8&[h*@9aӐXC/D~A~zf =#Ha)%9o{8ҞǭD@G0sZ-S".7H; 2_ڶj'C!8LskF\(y!#Z>iˡAMWqug([h'<h1e@"+N1~ ,hPEYoAXP >!sw(ܕ!ysDdƟ*'CN@Tjl`hz?3j+f/MW{BcpΫw0#tKQYq垃Hɔ +LYI~*sl*Dz"eM|\s 8sK<ֆN.S\ $PKFihsS3Ag-mD]\B!xVlodľIi:<ٟ٤ GQr-FHRP=Q_IEY $XQ cL%v` j/ nP U,_cŝŵM~sTRڝVg 0;Msq@X,FPX6Jv|] vQ@L(&sU}+T c\l["!7Q5ݙ& zBl:4ַqs03& +Qa᤼6_1݋"MZ[r<@ 04ˋ]߮vOt7+^;PЧ^h +vʛo)}T$`#I83liӼS"Kh,JmkQ=FUl!ɷxfieKhU5!ckޫ̜{ o^ ꯐ|o#H7ig<쨂 />S4CJ抵/~r0F A#-c>(#yKz0\^ڎvQ[NsHQ=YYA6S0!u T,]FrLH& +K pI mqrXVӤgBkս:zx2$*8;W?( mz%{tߗ"H57lˈ8` +ah ,e}Ha",e xUm狾9EיQ Icч<&|z {v:D ޾ms,yȚ=YLjw/ijO1ǻA+꟨h<ȵ@hⓚ^p۩miB|v##:9ʅꇗEْRGP+{uw2Lhhx0^0B ]"tMS ,08@Vݙ;wV'ht&CȰ-A>/g ˳͠dAm`S1ՁdAALV;x~o󣼼ū#PK0 p{£B;"ޘjxG`wf|ȋ]1^e@{Y,Q}XyE42q6CVȤ/hFޫ V.)b>7O}߆eqn2g1Y5^0!٣;Ӄ\#~o^<@&C3:} p¢HD4wr^Mu?N5W +g ) +:זȐW]M|'0 OЋ\T6Uڗ';p +֞A*ne噌$RQڻmmg zfS:֒:cY^z5qۊ9=8L%(eWـP"po4p 3ŗxN5fo>VR#{^= ,Vurhl#Kn<%:Mr0~:K-VgvңYjG9m)@>}^U\5){j{{E;j!d$Q%)O椔\ldޡݍ\hq!d׵mP nifw'iaVaIO]2 1[Z |oh<{{dΘ9rZ滲:~@XRP}1|4.k;p`)ϾEL)̑ZDkq3.!Y]ņf0>DU;{Kp4i!,r;b AOʎ m|Q.Qj8 +Y>#eRiuGҦ,kSAE FeSXd-2M}>ufZw%׭%V#6ͫ⠛r: +P )Ȟy,?K"]N5lr|&EJ7};?m/Pņ3^~N9>$?[*4G^h{~7K'n[{"~ aZE))$F%*'b#d*Q'"{tո_ȊGi=^X9,x&Jې]dY[}L#kIY}wÞAVn2bY ˅:-ȵ] BR+f4ZQ' z]]F{KLJh։~@mz٣4}?*C~(oRĿXBSu>4ZZǩsM +FeoG=q#q ۏVj|Vx! `/Ju*Yq`Je AcaM ר/tji8!yB?S}j7گZ49rbHX#ef$$BIVb~]+k>mߜ%'۠T=ut:{>L\{[{hpwy˱Eç4ܔ6w gTu3bнFV}8K&#6Q ^k`ɀ&J7#f*%fխ sP?̣,mytKtQˉa5x?[ݸ=nLf^G5z\x1.I{`T (E$TIb\|P]"VM}# {i|gx4socx:<5@ +&6d| MCaxPw%7R"R:nziߑ#tw'w5cH0;.X=U@m! 3E" JOp>j.VE2hHpqϿ,םdwyvf=Gm~)Ђp5oKRȥ e/(57`s{a_JYTJ +l߫+1y+ؽX +Y0tQ#Br~y^w _57y%FJSSZ͗?ЅpJ-{Ti@klɻ]?IPPB=!6|w760lj9IX֯}k{;GO"A4coV`-9%,g +U_q\鑹`kJ0-ô2(PUQ HN7H؀NN@i/+XUHo,:bU’ؗ'i\MyNrSsL ϴr٘m/Y';UVA ]ϛg|j>m=s"Jh/#s\)n:3AfcH(Q/`kPD2Cp}POZK<'7I+!&Yhw0XFR x_?qŽXy\&-]3]mڸ̢}CAA6.1Ot XI* +[4~k:7"(@ֶD7^R"KP(l)TF@ p薬dJZ=XQ_\&df \V#ms0Y9K!}M]r>5rE9=dK-X #joWF[8|ɫ՗ɘja_ +VD'ѩ.#z%<@)=,X@ -ߜThF-LBQ p7{=wk*poa^n; 0h$;65ϡF((DS&™G4 7lL9zfw:4!nSKo,R ڮm/nSKR+m3Sܔ}Ӯm)5?Qy% + ԡ,(暝J Ҥi[z"N\\i\D){&kzbK{1J$Ô:wL,%1Չ5iGPSh;ơ|ccFh d[-övo70 +hVۓ_phyF,\ؙ%&FrA7/oqlϘ<91oּzy1upI۹+{m38^x]Arn<{@ fiuRM\i 8*lJů2odnC{xغGT Њ /F +=e9hש [_~.ȟOg| + " +FTi-w(0X vg\v~[YNސߡ*6_c`O+T eTcևŜWKq&ZjPUscր!XcYMaQnɡM9i~[.D]|=t u簵q[?*8VǾYMޭI~L@<뾧a|f;Ɵ҂i;ˀLxbVD/DHpf<4OiED4d3<([Rj{-B"g0)>ɴb+?95RM-ܞ5#l.Qg+X0MI +wꃚT-C16Z4,$^g^p\E3A?C12 4 )EdYAمڔUZ ȦEEc?qw1lK_bOk'E~{|Evl H`HWhT׉byj >h> +X͊8J=,To -n8(uh6{zՠa}R>5;A[ +歔/-ԋW(<#RKnO_/APwz_z;u:Z4R0*o#*{71Ͳʼq+2Nb,0]z +Hk¶7 ۠ {=#E&RhbY?{~LiGKJV.j_S%RPb^*e#cs3?{sfDM}  8+Y|"&3x;915]\xs`mVuIez%o k+XĐXVi2c)fWB_Zl* Ыϙ|5ċ,]lؤ',aiv$l\O1Q) ۮlAx&U Z[*D_Qna9aǣ㇨,~ ,cw+RtP_ RH/TvԆH9n(P/>_ +s TLס/8kJϖx3+" nr#?h_GFȊ1oq/ o/"dCqw'VOa:_w"0xy )Z>\&Gqw+,bH,[$EIXͳ>ϮfyR2c'UՔQAOfu7ɣwU\ou_VZJxD%*&Y\$;&FdvC>6)f>+4Z#tVXl7f',t-᷋wL]@0;XyiXDžBWA6e#,헗,ۆ/B.xuW +"c3ȯ6GuPFDlݥqZŕ}}-SRPѳfxP + + ޡ,l S 3bxO owk43h*\%>,c%3/Mu!jcfUbOLw3`m߹6:cf;CN3  8DRI&T:+?Bh!?a#Qgu0w~>(B!kp/oV\hЮU ևi0t'oS< Wj|3k9,FS/9(mx&g q8wfsG} ;rq}V'­V{E ʕGϙ ~G+NK?NM9>k@>Em>f,u 0*cbr> ~脒s0\mH= DG ɅRK~*6CqG^2.wiuKX.NipQdVoͮ]ÆzӖ1%qG;PR.2o"Я^3 %",x؜Vd^ zu.X׎TYB e_oI5{W *-6LRs:\ *Eɟ6pS17ݻ'{bʋƸG%ga{Tt&(W?cj!+2/&:Qu0U9#-W(=2eQXKeZ0:OѧͱVRERm ZFT%{v ]w2Xkk`!OUJe\S缝e+S& +(W4 Ei7h$݅k*+ ,>Bj/ =b;^ 5_s`2G^ *X4n?4!MR|&{pvVhUiH"DJ$hiK+#g72|IJP+cs۽ևg&/'HsAp1L@'BA#z.M?1sss;|ok7ѿ8ʼ^Tp"YA:Y"di'dqaiQ ,%ly +:NW(YXrSZ(/{*uf7vspybHM ."R1L3|'ZTrGάa αr՟dE)6Z. ]%B"KȾ4`Mfb5+[ +/Ordering <80a2f22949c2fa26> +/Supplement 0 +>> +endobj +339 0 obj +<< +/BaseFont /QPBFOF+Georgia-BoldItalic +/ToUnicode 340 0 R +/Type /Font +/Encoding /Identity-H +/DescendantFonts [ 341 0 R ] +/Subtype /Type0 +>> +endobj +340 0 obj +<< +/Filter /FlateDecode +/Length 270 +>> +stream +NRT"`)WDoCtˏqAT7YRU mW ų xav4`O]R}N_OU~ (Oh2Z{_̖Stp&yqƲrPE a^hH/"[q d =;F{bBA)#,T{:O}˽~LŠ Ϋ,\dq}QEw4wzy BiCf*Wq) +endstream +endobj +341 0 obj +<< +/BaseFont /QPBFOF+Georgia-BoldItalic +/FontDescriptor 342 0 R +/Type /Font +/CIDToGIDMap /Identity +/DW 366 +/W [ 16 [ 379 ] 29 [ 367 ] 37 [ 759 ] 51 [ 706 ] 55 [ 684 ] 70 [ 536 663 557 381 ] 75 [ 675 366 ] 78 [ 641 ] 81 [ 690 636 ] 85 [ 534 517 417 685 ] 92 [ 669 ] ] +/CIDSystemInfo 345 0 R +/Subtype /CIDFontType2 +>> +endobj +342 0 obj +<< +/Type /FontDescriptor +/FontName /QPBFOF+Georgia-BoldItalic +/FontBBox [ -573 -303 2177 1090 ] +/Flags 65568 +/Ascent 1090 +/CapHeight 1090 +/Descent -303 +/ItalicAngle 0 +/StemV 326 +/CIDSet 343 0 R +/FontFile2 344 0 R +>> +endobj +343 0 obj +<< +/Filter /FlateDecode +/Length 20 +>> +stream +9wH^w|@װڳ +endstream +endobj +344 0 obj +<< +/Filter /FlateDecode +/Length 6822 +>> +stream +^KO$5 +^z>f3igipHs6ۊ̶6/;!{Cۚœ~ 6{1%Ⲯ'[CW@TI7 n%蛔E?"/t{>dudĹ>蠨C*U +u\Vv#@>ah%9Fx0 h-ԧCMZUlK.,_&p䘻4h= pƿi,,s阧ʒZ<"9aҘkl1?YϽm/E)2]aWز#Q_B[5w]t i +qc`hH[=7`ϫ7JZҽ>1m)ˌߪQ`X㺹|$U/- "42Rm)qEӸSL; +s|v!GGzzG)xԌ6{0 ޵ +m}=Qdj)s;CNgVL](*XR;:}jYL ƕhc6v`oexy$J+WaHX #9q$e}h& `Ьs_s +8W oP? [h2=,T)3y|4GD#Rċm"2|f=G^:?GkŀVX;'yusDO'׻)bm?V8-qG]!V]yW ar'x薶ѻ_>VQx LEa_\r?lI=wĤ1x{ +kCJ-פBToxEõXE<"}(A(光;oPKYv& k:>ԕr.m`kyzBh6)T)v=*5' @8rR8 VKZpD+"IeBk4f.b bc,'=?/E2/_7c^|<4U=gwZߟ)LW +6F&ߣyg"J1B:ԩ,vN quv~ѷ *RU]E>R,q:dA,gﯥ{ 3oq*RzxlR)?2:CjP15{QbZ/Rkp&^UCrLs)$rdRA2@NVGv; VM|O9_z}OO@4̈Ӯ4IuO 6ir㯓3ȷ-‘ۆ%#ۥJb Ry"F͍, }_a" +6_56vD\k"n!VWPe)2!P+Q!(\%Z%lHD2m Bqh㥻j#6aJqJZ*]6F2[Rߕ60ۓhbLvؼb|u亟 :Pănh&WwݹCDyLT5(^Jb7lAe? (Zя*K,>/F%cu +0Pk`* rf΍61c $&-| +;N5PSx&+`,8FLoRJ_ +mT?XEܜ${n7v#8HHҙdҼyeK8=];^w-ʨ ¼o]aTd?+u.֜G( WΆyquGP=Fx$ G gU<9ҐaKIli[",Rm٩ YT8U@?;}Bx4w60c5"xj 4g_}O}[!q`I_96a Q'#9=p^iWB%jw=MTv;/ژ}ٴN+Xgҏb+c= + MGAܕ&t$cf s !,X`_$l(u=xvD֖[-gȗ=; Cc>&lCfwhNBWp,4!KAऩҽvx(_J-(&S$D (]0 +y]پO9@Yגg 0»,MI4>!f7,矡Sb&@Η;IAgw8fjm?gEYJU6uF Z + |ᄖJ ~3=6ͣsՊ6i0w VEPqԺnQL+E7\fM]{_k?N:[gjx&[X E:W뱀Z{qjEsZ>}r4X&&Ť 0Ģ˶5ofeLJ T}6 %Y!ӆh5:t*ì)Fȥ !%,T$M~y 0X@EwSʶPڙc"Vɚv9ٯL+- ;<E|6mo9u؄ Rlka֭S6׃U>O@X10p^ `i/y%śx7@0 ^ԌHk^eiE,_ᗗGUb怈w'j4+hփY);3Bo XtӶr +q,7:u~υ[hUs )kaI~@ \h-y>Aa骇_ƐH [$;ž)Q##v9k'[ 5-E 8''+eA*׻L:jjʋ1uZ-lTc>fD_Xqcv}OȘ"K#F1[+,Y߅~Cv),&Yw40yd8'NŖy8(p!t%<͆.Q2߬Z<.TGv$czm}qsܸ6Rۿ1i@*oGc K5kAQ}yX%1#Fl@5rI"Vě縷WT1+;ho8Gi+*-kg_6 n3BAtR{H?Ts7\fЗ>/xTQjӂrT[x$*2iȨoO#wɯ0TBۅYVǜq[Q1;RO u~٪nLlq@!,)\Zvё! {(&YڇOdyF}긛[10'0|D1 +7o, @@[}fw0.|?3[\x:em\31 9Iۚ,d b)#2+/> VՎUB {p$TD'N +7TGlQx's8Imu<3"(j>nJ[0 +[[lp(Q_,Da +I=onn +{uǡ?1jZΰ_?| Kve~ } BX6 hV{%Ʈ#,mDZjޘe#VH2%C+"_Rr,yP/G>Qݘօh}5$@sS1!UGR?l5>7vXr{\3j"-CY`͂[JKVOGV}N.? =0Ct$JiBN4B3\c+锡U"iWP^2$_3N:Ͼ[ `e[mKv<-pzj͓;d_TP Im7Rj;b'#>rdCm 8.ϱWtIױ1B >]\UkO4 ? +ngOk;k4NmFVxUy[4ar50 QUOx̌ [Y(e2n("RS_j˙ &{i|J^e7 %-k8S锶ˤq&9FAU4V +iK"kBѶ.SBȞ^qW'ĩ֗Y]Z ͮ:"{n!d zH`q5A +\x@'fje?FBba_%#?m͡8zAO KTdہR!)h`X.tspݤ)@&}ǐҧ6;0guozڴ`%N:#,n!^Y"Y{0Zd)+۷!)!+)ZbEIdBQ~%Snͱ| k5\, ۣG++?eZ?,)@Idbܟn*UJhx\Zh57aOg791摾ϵ?|_pw/Ul~KM߲{ׇ9o5!.,dDߖ[ii\2(3C8Ca]>IU|)Qzԅ;A@ʜW@Vkpz9ByXp$,5NksT(dі6 Yu:wN|Xut2ei;sgOz2[SK p=R.Yf^TݎeQ=mIو6KCY>S*E"oqvhsgȋ3S i@qσ>n R"Yo 4 X VA7K-^/G^|@҈\ +{P5 +k9*-h +\i +$; ]M_0鱭 ҞZ,A\ r +iؽS0H9_gJSjU ͎hʹ *a_h/ M=WOZ7&r*n.g'vx"'HOiv~1&Яuw +endstream +endobj +345 0 obj +<< +/Registry +/Ordering +/Supplement 0 +>> +endobj +346 0 obj +<< +/BaseFont /WDNBBF+Georgia-Bold +/ToUnicode 347 0 R +/Type /Font +/Encoding /Identity-H +/DescendantFonts [ 348 0 R ] +/Subtype /Type0 +>> +endobj +347 0 obj +<< +/Filter /FlateDecode +/Length 591 +>> +stream +YW+3\4**P;^aA$]2~iOOM$8>ᄏ`ϤEVy LRJ؞60)YKu jiڡQHkaZzD Q0˗HQlLc ޷[O;41 :=9 Ph r|Dyﳸ;/Fp=R[gJG6&c4ʯפQ1P~ZwyCG{csdQ:or5r!:a$\n-V 0h=tLM2wD#C])DI*F`CNPtX5|B^W(n瓹4 ɀ71ڃH4+jKtZb/^*4񎻋MtӼUҷgwGËqYYU{p`qtX1Aw18>DSPw8- LC=Q'_,oQ7Ͼ$zYLٸ0lGL{ւ\j9\* +endstream +endobj +348 0 obj +<< +/BaseFont /WDNBBF+Georgia-Bold +/FontDescriptor 349 0 R +/Type /Font +/CIDToGIDMap /Identity +/DW 703 +/W [ 4 [ 376 ] 9 [ 799 ] 11 [ 447 447 482 703 328 379 328 472 701 490 626 625 649 599 648 554 676 648 367 ] 34 [ 548 ] 36 [ 758 757 715 834 721 671 807 913 446 595 817 686 1023 839 820 701 820 797 649 684 833 762 1126 ] 60 [ 732 689 ] 68 [ 596 646 531 663 572 393 577 680 354 346 632 344 1016 690 636 658 648 520 513 397 677 567 863 588 562 525 ] 171 [ 942 ] 178 [ 928 519 519 ] 182 [ 269 ] ] +/CIDSystemInfo 352 0 R +/Subtype /CIDFontType2 +>> +endobj +349 0 obj +<< +/Type /FontDescriptor +/FontName /WDNBBF+Georgia-Bold +/FontBBox [ -549 -303 2068 1099 ] +/Flags 65568 +/Ascent 1099 +/CapHeight 1099 +/Descent -303 +/ItalicAngle 0 +/StemV 310 +/CIDSet 350 0 R +/FontFile2 351 0 R +>> +endobj +350 0 obj +<< +/Filter /FlateDecode +/Length 25 +>> +stream +k9ZN52`!Hy)C0 +endstream +endobj +351 0 obj +<< +/Filter /FlateDecode +/Length 17787 +>> +stream + {,b ~DF$ TzJ(b78>Ij>R1Vjb1ᷗW\Y߫WFETd&;}5P-ybUq}F.M7.R 3 ßHa7tڕQFD  +"=:`Wx5Qڡ57"3{-ֲӦۿ~Ə'\_3%Zv(p +/ّp~ /J"h]O(#Ð6NI cNEoͽu"調E+@aBn*T`', NR/j_ ;Nq%u(_Zz_ +YgRsz}B`%$T-?T.*"}2\ +nD96a:\alzqC1+$rJ;cyAa;VW G\Ģ|F6r,znfii@0n]<|Y~:I!w`Gݥ?33[:U9?80ii|@nn^ERTG}'zdnXd|6+Yw[u=$ +~3\ mtKQZx/y1}IG=Tj ɠI`hKeyEޕl4S_I։6q7-a3 I-Ưgb2ԗKmtGpߒfkD+w$FN +30fhP2ؒ m)nlK(~!9 +OZy`k=DhZWUcӥ %u?:'_ Z[IwR֊/<$%1E$D.jW ߱2wQȿ֥7zX MxnB7eN>㤋ƆJ;2I$3g.ޤs +cGN%,tHϲ} Jd*MRUn?^1ĶV3S-[7ηWl4U +p;BV81o/͔GG'wNViW]g' uDzYsB]D%d(I@vBM~~ aoZ5eu;xfXBD__qx?}sVKZR^ +V#MW 4WOV])7g4 Y/w>V6!RFMaFKNqH#s_/U5|2hs.{/)K u@~-|'(y'yc˴XDo©}bI_)[wwd[ǯ$'c-/=V!2p iZTz˰ʍfq=$xK |_5>QGh'Hv ŷYN$A> $֗${Eʴw<,Э♜Nk&Q ]}rTǫ 9%bm(*}2#=f߲t`D"Ķ#9},JN{ |w>J\g2bPef]̘GX/Gd`XtO\r 3Q(_zy -@1~0IWEͬZ +"d0s:ٳF_BW8dbJ@3ZqPnXe#.[{,B'i۫(?è8y'DO6) U 64Fs9Xcj '_aC ~݁J2 +5 +x #9LBd"{!Q>+P'A 7}Ǩ[>\ ƅwai/ayWOyemM)9J&K*4~-Ep_x˄ l_A'vah>tc&o=;K{>,7~5v^`}^(ެ. 2E&!]-+*fpt@GV3S2k 6i$|"=:=N4iܯɹL0S<+ :@=s&+I֡>3y Ѿ/P7,uUIsw\B &!xͱ(%~jz>TAJGD"Q5ΡZt?oBFVm7#nyKWLjy$|7c|`ayn}s{9II[նJHSK%3phx{tfftկŊ1zJ} zQaߣ!:1m"o6}u^asn{^S +Э-2sNS ;m6'` N?+u%lI'dWv|g ]@ ZKq0 z?F 5 +qEc}7g=MoDl;˧FEu#8̹/:^2R5q ugo_s&C$*跂 24EN|c߸)gcD^cw"ŅEcb5W۴x)\=e+jc[@,DQQŸYyw&1GԸ^i݇dLT޷#p k7^q-C2Ȋ|h, LzX|b\[Yn * +K2# Zʄowdq0e9m~ng^RZCnq_ QKjh \pSaPjZ:p4ƠwT<0{,j[~s!LV[Q^jf#'Y?<]zVbϹ)[ْaGg2 ̷N**t&F`w'`z@0Ǫla*`fDg{ԂƎ${yɈи?ɐza/A ['=ң$ ]K|D-A˛t?M^zsGgHx*lņƍ/Tx]u#_=9o I7g260?y %'+蕷ln.'@x E1q0"(uG+Ω=sYYI&v&:0Dbcl15<0H2%OFm搔RuV0,:Fo 7\;1b.5)&뙍)9icB9]fnwJI2}!X>v?2$8:/MW)xX ;?gw~5% /`Nܣ_I{Q%Iiv@X9p&Sn} 5Aљ`ŀyغTYjFŬ~O2'W׸u@L7Tgڪ#k欤:h#Hs%q}gqa"7ج{ؔot`)~L)sidH}]'=]/IB9UIct])\W(O$r|`gkrAcf1?@n<kB"&FdD0mY_ͼ~Ɋ0AKL{ˀ!Bjȯ}=l4*&~*D7^/$>cNKѪ}>BI#!zXޫAohOR?oԴs;7NcM.+-/"z`]nSZSά'}>D}MlL&"i+ + }FBiR$|pk,axD[y>ʊIހW8VZL;8;}l 89?-Д]Dk#1C;d{"OXS[;鈥< Foѣ2U["~0Ԗ*G7A&Zhlm}v~bvkίrVkӔ'lX82ƒ5N@Vwn@&tf: a 6du薎5?51a!"zIAq/ b.˺#8Ǿ=tUæ(^ℵY#'IIE*S#my,68V/*z8wOfVhW & MؓqY~z$j 1&¦\x5* +Ϻ}1.#Ȁo˶\~Ux +g5(t̽88PvCphgO/`> u ߒޯ='z {~bp2b&, +4|MA3 1 &D-fh& D^F#?P:eU{8i +_€  LJW324YUѕ F`ю0P@[?&PЖx/s8.u]u9}0dV`AU&9A۵O煂pGD[,B/jDRV/M~Ob# dװ,p<@nsLָmOEFn a+"HS0ވiRWW'LWsQ@v +Q٫yZ1v)=ض]Uv'9PQ?sKy8*`ߔtV! 7Y[úةWKxj*V s(^zZVho'l?MǕqߜRoaQY5i,~4>z|Vl ɽ=' ~@~RǮP"/[ߓgG:ҪD,0Ge:EXbmf@1 7o&I5]i'i^v 9V Yrf)hi &QŸ}Cͮ栤E٠.] <1c$]Ā?}z@v]g*}iIJ3oG*+bË( R҃@Q: aGP|+h.kBrl׼OtRؙʪ?bp$ڀOURv Q<k$u2;#xg$_+mfҲ"i0V}A%q^O7&$~yrݫu}e9Zl@ۣ {63#9\4x]N}v.Z)Tڍ kf-C\Zd|`Ugsr.E T ﵶ)cx1 Ym_BbY ׈$1IvUV;z0No'(p)uLx*IN}<9д2 utȊή3Ўj6<] +.gJ&-x=+!KHnJUO﹭XfZ[t$gUjp^Gw\ xM21u쉰CAXCptL0u>?Xį8Σ8ef#%rxTA~&|an;A>D344FJ[I.0?Qsxm/25B_ݸaKswCCvPtV<`ؠo^ˍPNh1ٲceei\[DH]g7ΔT?I&IZ7j,he}F2 +CBS4m2f O}FL3lurWvf,,%fyB}iSCcq_516BXD]Ȍ~tޡQ<<Drl9Qa9ZQ BV*M1H^u(HPEwϟrPɏbO@@LX e6$)}bsUgN(F+s `N!0<п:T8DйͲ,J~TuCt\N"7BQx:u[dVVb"ko͹a*t#OAM&/v܆X?2esuT**]& +V9< 1phOzTZ ‚IR~T5.G &G=տj7)ұrps0k؜|JB7e. T/z"6]$v<s'X]~\;=jz W4!;3|+~h -eb۬g皒UCב>=.7޿ m)D{F%O!ʐSO<\d +Lij&ϴDc Bh9S%iFt)qgkn4kU{\Ҧr{*zge_+'>)pj%@(_tK1Wuף +Zп_"Үm{XOKs/=ptS7{ ؒhsŐ)QyQ$)\"'XoVs̱u.J5ffi+[Z9aGn"1aNR@ՇMc.cdOZv Bn܆W`r2 D51~;HD33W5XGç+kݽ׶`/m{('--wxd!,&jPpoYKa275zaN'~-5= 9Bʊ;IR(ir3AN+ojeX?V }&wiS>lP)l67ݥ:Sb ߗvC_KaR C!\1@<mވ^|RE5Qx2@ˮ^!(=aIC,z#hiET; ]cO2?}٤p^I~]z~ +R7uEdgzy2jj*Ht{$;`D(i<1<bOqLA̒]?qp _r KDoW l[/o$Q-U󹽞>gN9?NYꦹ dz@O&ϜC.Pj{KYǡ\ʠ:0gXNZ߾Ǐ-iTP~n,O VLXVky<)e-)U r: Ks_~#uFX"@ypȍ$X'^xle&ћo{Аx s ^_]nd<ȽロS5艿<[G\ˋ=V"1dCbC$wg )%㐵=9#WsɭԒxsaՌ>3(GV,_Y[q7@{~%ƼguM Lghro[6c<ʇa`EarCۧKd='kp፣ck" Sur2`QJJ|2|q$pnOh5A\?yCey?o)4KFIxG|\i{iJH?wZ/3X,] +4%mZg{aRЏܐ[LҡTWՌH Qxm By;PFNU@!#\v\qe;~]ӑ:\"2)d04>L#ؔ~_k, LJ6\GRyW!(0Y^!F >x$GqQJ +̾u$EV^f"INikDm6w4OECeVwG6U7he[)H5gj[v {D!ˢNc۞Nf[.R|ć3`vym yᠩgA 0ȎgtbpcDq\ѿTmQ- 7^jF{ByQ3ğ\_Ǐxm?nHv@g]'5g$Z)Qu|pm{>eDOQ SWP}|OH0ۋJ7!pK8qѥ}s9 +4sˀ@C8*ԭKcD0P+-*gMb~PD!<ߥcv+qiU"21VWAj `ҩ)Vm/'D'O VYm: jQN!X5iOt /R2\D'K Ə%«6,vY9Vh +*X6]C%}XOZQ{5* ~iՖG:hY1l6d| 5:B7ҭiPG6!N|^҄t F  +RBS*ڮc nV<>b]MX8k\ArEݼp>69X ^N Cv +,vWs2vqDBWS+{o{-39d=j-8J6Lܖ-BT RyQsl̴r{ +^*13GHR2.'3l2}ra4 9bYMgAa\[9AhD7;lq~ .ur*D]|KQmK-k:Yr^Zf>]\t8/w 6;W=2/b@7p﷡A1m"cJt.ɏA6;וA#"`: 3]J9c?vytDµǘA@æ$qۏNj4.P +@hn("w\r>6. 0n𓕼όI/^nQbFYăfac҂P Rxq,Y;L}>PV2*T?\8Wuߕo'ЬvVa]Q )hi\Bx"߄%eC<9D3^tR + +!-3oV7QԵ㨌͈Z丱n_j>0I>9,0|k&淺4S(VMxٺ{q:~2f[=`U6A[C}eCGqpj:ν1 GF99nL`XڅUGeXl w%JgHBH}qn0&k8(3{^v#""9InxY‹H7Jqc&d> ]q)_{ jKTYwM>8-ݭtt(]'[QyTks$;mNc)e3 +؈`оi7)_%-BUZ/jFgOYLlliODcm.)Ќ,Ll!L1k>Rv̵||i0%Al:%y?{F,i'P xM4m(ZӐ ҩlYgkCF4^>q*lC YzIHi&]FB :c巧~Pg̸Hf Ey+0)xo&Fg>'ߒN։Ĝ/K5'z7 Mg(YK-#A>2eF/*7AvN!kZ!8NKDӓ>DiCz\Sjݠ_JWA{3^riĬ#o1F7BX7a9]oh0L4FbSX̵LA)I8RK`!ui{8>cjS;O**JΉ_ǜv-UcP,ŧ/>=d܀H&»oVSsp.jrIo1%Q p$>*y0 N; MK J"I ]w҈ҝ_ l|,7$5!58xDT g23oRW3Z·I)U^trQ 'Dޚ_Ƅ{Un{Rpd=Ξtos[9~nto`u t~ VjLRJD\n%­7oC۵;Q@t"ni(a;(1DClV66[|e_ExNP 4y42\d ; ȦT>H{Fl[5 zZh˵v> }AipGH#&š?XA2X} -Y*dbBG?҂=8|?оZֆ?R~s( bd@Sn/wMTuZSq +uJ-'lXrKR6s';)FK69 + pg7jcD۫D1h**"ra3Ո#p3wF-k3r9ɶM+`__.§5c> Q\CqCHEL^Wx!+r* ՄT 2Z*e%7,GbJB\܍enMȚA +D7q0A_ki #4GacSq[p#S@G܁q}HKRëߗONkqq`Z_?8{E*(C8a$ul/~0p̥4p^6pzk(>A W &A$곏494IIIk <ӝVrxv|Pn;d$ΪM!Ne #׵_ϭÊa..k޶=H6öCwks@9Hɨ /<ƒq=Zɀ7^K&n,0apψfybߡiث*B +pf]s;%ERy)V,rL_l\un=tU4)#d$)˦:%"oxQ6EBsQj*gŒxH9cXj ^-J2|V!kBvW /W8O_X ]Onϲ!=(B,NRlk'&+rh_L&c,H]$KZZ:0mƨAKvSf𠪞"1I8ucTɀ4 >vLrJ ]kA 6q-cYHS⇐eڛ~r .ជ@ +OmRcbYT2H]'H0!_Zijt9hY_&]2ţ#Mn=FT„ 9`/+/w|Gz BޥrԠJ`d-23憒wӀ"{I799h3i{{I|q; L}U ?xHGqՇbxq3pY h^kH‰4 g$Z=y,>?FlX.,J.Ȯ;P:.(17N.<̈́QѕM^KJH+<oaf(cf +Gm+ׂeu ,p:^Dfng,"D6gX4ԣV(lK(.t W 7>y;lQc[%dЉtz%j"`Tdd+b+tp.or8d!BZNQPc/_g +CbPi80z*~D6Q7x kG^]&JiWs''=`nOW)$KF`yyBA+gxZ3&cTm<)!KeEYϵ_TI?-:=U=>i*@9:TfGydV-+ϕ\ m3FOjPh +ΐ /#uDMoQMz p KRfG+ u +endstream +endobj +352 0 obj +<< +/Registry +/Ordering +/Supplement 0 +>> +endobj +353 0 obj +<< +/Filter /FlateDecode +/Length 2346 +>> +stream +~Qw'dL.ˢKM[ Y㈰jjW^IA\`J(K&j.EZqRc禴6A&aT4F[Y|Us h^*5+o -ʬFP T7w/V;JR+BI:\^׎a[">= D +˚1^׾GnoZHz`-v'n^*tA_qѱSQw8=uyم>FS_쟈g\x~2Sg2b3 Q>jy7Q:+[ G+A|D=pLUB8f3YM) tE< +yo|l$O aI.gv1V]>)D?QBZflA=!5]\)t.Bf\66_н >dw;/fwy]!m@Σ.w$}͜|.@}$dޒ'l}*-ϖ=emft̩cHm󥷓-'xw^{[F9@beS:yD8` L + +~.C,,\gi_y8!-k"]B|%R4W숤 I5+,lelM5ps%|W㸟L,b}4xw\ٵɒ5CnF&HOG;#QV>ja8}9ocq6,Ubd?~(PΨ꼏 ,gŹ +!$?B1 1=d|ڹVW@Eq l]- ۄ81sǀ(o'n2us ;*ѓ,9rԺ '5Ų#RԻ){ 0g.ʻKP)9RڵK|PwsHn0 Tꫝ҇2pE8KU+#OE_).@T?D+*4t{'HM֢1yI$=PA و_viUr8!LVG}Mv]GފE8v&Ӿz +a)Ψ}LDS[RwzyE'.(<Xq3"fTD"tbymAs"yZIbYV¨`=Yڃ'9 @NPSC;]uݭF aaU-6d rA,mv'󸇼56SYG|Q"=R4=&8~8tBE_tnA4"!OnJ:o\5Cs2Rº_k@3 ޹8YJ8כK<@iM=x2^MdO>\3ԆtPqYnyw2&L u|i$oS's1|ɟhG[= p{PoԅN9)'+Wǯ$w'qC<!ftDvoyP_E6OP:kl?qnAt?D14d|s ̚PO84o&vz64Z-]ܔ_gQ*)1 {sWOË`GZ3ŭ &+ u鐇en&q+BR䆅)$M.r1~bs8ۈ\O=#$b"M ?Eҿ.wOGk f](H IuvD!kqM.0th_.,?eCrO"w[?×Wm%GvAN"قզLVzCDγnb#K_H-G)Ђ=0/u 4;鼔py74nAtG2Ce>#Q +-o7M $rޚ=cCr?:(LoIɒ&> +endobj +355 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +356 0 obj +<< +/Filter /FlateDecode +/Length 2485 +>> +stream +z4D'>e͹?a[ӅU܊*WP"ܮ3Ǖۏ-LB]:Eg4Kc֪ѣCV?+Ar cJDKM3%+_lN'8&aF#ƱXG%=cu{yҔD?b'CG;F橻 1eF|"-EWPǬڰC5[&T؜LDYX5^նZ!f@~Eop.J:oa֋G:THaI3R/,bfYŔc,D :&%ߕ :h ˠW-:9SPRDxbpoEG$ o^_$Uir4nN^VS%ΌEV^~A;LWBfl%p CaKۉ`l7)a.i&|v[i +(Z:ԶT&3L;,U4^2@w^t%ly^eQ$i'<鷶M` +G-=Qg'&}f/,s팂bN*?zv[,̬vs V\bm;&Saeŗ4ؙ&N!m^(]@b.t{RsL;iS(*_9Dg^ _^XD5W$2@)d _ ʔ + Nx!:5\5)~%6\)!e'?VM˩:Gof,=@TgćV)KQ(KCxh̵wdfKIu˘=eg{',P[eR.ᤤx䶖';` zNF1oj +"^%%nZN.y 꾮8 @MW#RoN_iB `˰/sj?x.pzmy<}mҰD[?iA +3)ZP]♡>Gd{?z><&NR + +{&{GXNխST +%6iR&D]_YCEǻDC{s?VV3P=KrZ@XH NB6MPeP+x;6gU~h40umT47Wp8)E8CL̑`+ +$}6M3n|UR +ͤ8 7Ȃam +endstream +endobj +357 0 obj +<< +/R7 305 0 R +>> +endobj +358 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +359 0 obj +<< +/Filter /FlateDecode +/Length 1335 +>> +stream +9/ζk#Hrq \%gw<JM@$ M=nye_.r :PE|T'+8]քMO @ APʺؔǩhs+y=If툝sFު.V pt."I)EQ}:$t jWG<1iFӮ K%}܍)qA۵)KZl@B6 +;[n.?]V7o ,  w[>"8nn.$%0Ljp dF<'#:J$cwt')kn; ՜]붌c3܅v҄^4ui Qd)b+dӱ{Y~owܱ='綃tx gQSIc_-f5, { N@Hq>Vn˴8Zou熿_>b;ʛiofZ+YVPBSHs0>zhm#u&|> +F[AVd56rCtrd!]ͪ7Q4&i2a7EB6~bI%N'ipΗ9|<3RM ewga?chD e ~_rʼ6s{O]Źս1pJ;*ˣLY+=݌ ΏJ#7I!F mD"/-kbpkө¡tE#|̑B}sM֩*/ \"21k7uRAg3h!+(N]P1 v^j+8908(HN \m화 lTExqzMYV5*w;0]m?d:6˜t2(N?ۘ]*%2 +endstream +endobj +360 0 obj +<< +/R7 305 0 R +>> +endobj +361 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +362 0 obj +<< +/BaseFont /OFUUCY+LuxiMono +/ToUnicode 363 0 R +/Type /Font +/Encoding /Identity-H +/DescendantFonts [ 364 0 R ] +/Subtype /Type0 +>> +endobj +363 0 obj +<< +/Filter /FlateDecode +/Length 607 +>> +stream +>+:D%Sy"B06?[[D7$^4 o!qP%-ƀfpᱱ6~,c0;0#aUWTH!xX1iInR!oIcaKOa"UH#MZ tFZkr7J ^O|Cm8] +.͒B +&0^;'KC6aBLx:EUq(4ˌ.fA+h{I"CFԖ [wGbGvHuNs%ᰐ }^'v,//4p3 +tSͅ$U I?dN.Gt6{~/fb˯mls2Iq<˲Y~tjv~j1I5AO +8]/S6֟`_$pe!ޕ.ܔ"0aH.:X⺙y@^NjKҮ%SGG +endstream +endobj +364 0 obj +<< +/BaseFont /OFUUCY+LuxiMono +/FontDescriptor 365 0 R +/Type /Font +/CIDToGIDMap /Identity +/DW 600 +/CIDSystemInfo 368 0 R +/Subtype /CIDFontType2 +>> +endobj +365 0 obj +<< +/Type /FontDescriptor +/FontName /OFUUCY+LuxiMono +/FontBBox [ 0 -210 600 992 ] +/Flags 65568 +/Ascent 992 +/CapHeight 992 +/Descent -210 +/ItalicAngle 0 +/StemV 90 +/CIDSet 366 0 R +/FontFile2 367 0 R +>> +endobj +366 0 obj +<< +/Filter /FlateDecode +/Length 21 +>> +stream +UT{i-bMcqZ +endstream +endobj +367 0 obj +<< +/Filter /FlateDecode +/Length 10183 +>> +stream +q MygH #ҵJ>l,#4(6Ӱ=gڑk "S7TW^؈ͅ.~&UkoQoo9vDЁ8zϸ>ifmr + ʎSTm3aJ?D~^¦nczElNk"9SC-m9oYorGiSk@덏EYƔJ#c7B~Ǖ@p&UpC?&g&17N(qgUEtl:'4U +0 +dv~-ۯT8x'?!m}W+Wh*`&;K1ߞF>F/pq +2~/=`yy$z[ZjE{ Ajt{ h\Ǯ('pBd7e& 1h-wPgL~)[/ +_ȑa6c5K>ݟojXxM?7ƀTIjp:Gݛ!6#TDQ,SλMɁܹdfyA V# 6-5(Xfdżgh U b$}`=cdpB2"%# +TNrocc3PВpTSkdEDyʯ-Q>͗0ׇNÈP:SɄK엵rG5h3(|.HCy+D qoCQl/",օSz#(:boS/DG6 䜰 +%~ZO[* p9Lp<~kdLr}6`0 j4^BHKfLHyTOVO 98_E )w+#5OJ.ʼnۙŦtaL m?JHjR'Ƙy30rM,PyQOT)*6 JrWnS)8xNٞ ,F Úmu&{a~p"WbËj;2$̷|<_7ͤЈܹ +zMy:Mfw$/G:q x-!EwhZڪ–/K蓫J +)k2pib|۝nu#7cjN*L*ު}j¹TKSJoׄ}_3U2J8h0-i9,֔q.E#=PG輿AFıT Hˮs |l:neDZHV[#؀WSƠdt3O>ImA +> VGzIrg@1h.ĈŀnHm$Sxn +ިY@I]RqoQ] D u^9Fp5L"Y7xŹk4ZBu +TRmز}^5|V΢*:r`^-5rcH*GG S!)1(a+yjGj%T\7Pzu;;g?2,˥O9ɖ!2#},9jImo+e L!iÆ@ dd k+0&{9q\ mOIضFEH3'@rF"nUΈ$,wX +٘fɉ_C!xR[rD0TΏ +]v HXkvu S=dy?+1 2Kjs/% gn$͋ߵ 6goK<@'~; a;J_b9,r'uaSO%@c_9ʋۙCk e}zwU yYj!߇8>XE K0ҙZq=FhY h37gŔ_ӢXGWaI!7 (9ik3IЛ>5+3 $Pؗ3쿫_0C 1Kxni)!,;KGu[m98tIc;hOJHXITg^3Heiѝ*ZUӦs]klQpmt޷1bpC4tgm {D!|wyjB)ض^¤(;wft28^y4B!~mQwTfѡ빴jϵ$T?m K +O׭yu:.An{ ALB.'&S4F9U͇^X/#8"nR%b_Nyl`6uDs~>6S@8r?9fu8ݎgrU;ݛ)2NvS?i CS?{1hue%1 cbyd]XFXKi/ܘQ 8Uqs +%w8FیE|Dv]""5̹(θGpo'e@PדGS; >3!z!U+o2@AJqHHW?jU恡XRlmħ4K=A3੥F1cY|NlGVߨ*I h0kԵN 2P"Bslm'sȆ?9s$O -%-+x|~H$',*=}v6I/9&K Ǹ8C^vԙ+ ¸D^'2 cme4Nov&s}n d = ŸdSm:PvGWzLgڜl}k /?'Il|Veâ[[F 0S4~5oQf.4yCT7yiA5:$n9-n?Fs;Cz60l* +#|'DO<`;Gj7*">ťױ#Ȳa"}Jw /Aa@!{D ?Xd[٩Weq hb8y T!mx1z0xb>[ž_}W5ЉEyB̫f?0ɱb0P[$=e/b2vb%&Мs'3:?DΚi;eKǯr7 >ueݴr'-9dmAU0 [wA))M33/7`޾EbdGՠ][ 3[xWtJ}3S1GCBЃG]'DURe=֥0[ )D5?!blu8HTWP`Jo59 +ݺag~ɇd=SxT_${j&}5eY2<uPjl h{h ^Y-EKA,z7c~LsBӰ Ћ^&;)?PTL9ɰCĊ+pyFTa:G*ȇ%9xAg.M7-[,PeD]\[ C+;&\Ӌ*{@EİSv!6U,d\RO0 /[Y0۽Xrd`g3 F W{Wņ㐨U5K׉XJWyFbT<σO(}Ȁ2g xmr#ʘ]tΉ vm +,M Xt,6 ݁rFzs +~?Vխ4~&-eVUO`U&x(W%"/g[Sm=1g '~3ʅjj>vlp +m$r$"KC`KoLa ҃: z9OKO}A^gsyh3I& r]EFl~E{kQ0_t2gu"GW4 mve;d+!_o_r 1w]& E.1Wq +v1'z ]!CaWHI-SyCVܧֹg[qCv-Sh G j5zE%(X{o Fn 3ݙ\!I^nO^x(.(ZI;uQC4uwwY8mtnB#ao&JIfS?cM2PYZ0wڮjbSfn+f̕ +ka9CSSWkTC}R +! 䦁yG߾(M85nL8g&: 0h=:,-N3̵2ࢀaj g#qzRBesSlm7O Tbڈ|&]^/"o;0')-z<<˗F J rn/.Т%' }S$Cg":Ӎuc }k6UeEF/:K`?WR_b\q}l4aV&IM1b;Cҋ?^L0Վt-QjUK|Ur⶿ρ L; +!QX0t !8 ]0cYj2Rv\1Q&0ztU|Tes- SSCsr:Ol 2tssJxf҆k-;9!AWh8{ ~n=x$ !4>Y!2.}jcvd.uk&&%˺]^Sch3c aER|1!`3ǡy`D8%k1tDo/MaM_>j0+?M~6B ltN~euSP:c +vF@5u_?Aa-(ܧ L,4~;`z_o/ՓO@.t +[wk6|>JיBܕ3k +.iNC /3F4٧ׇePd/L5BfbMhK`ܝ!y>( X(a? ^qo8:poEgdi!=at"7k;Rr45"-\ֵW`Eނok )޿J5BE!ofWC8#|4l==٘,F3)k r8)@ x8oi2Ulҙx@V\7NeOqֽ̫M?˃^4bY7])%W@hJA_[;9 5__ts Ƥy8u 2f؏נxGv_o uk TaqՊ~?IpeA~4idst鋤 3\Oxa+ߢsh/?udoDj|Ӯ2¥Qf_^ԃi"bƴ1W Ob*CvpPH|0u-|7uK_ҔzP Ō[MzZ(snw "@ ؆Ԁ^Y$bʭ1uE((aw>x.gZ,PZ# z)Z4;Rd ((|"zڄA/L2,llZy35h3_o pZiɕݙn2?547 g_T&)V{ln6n%$]x/I:!,0Qbc1# +U-moBƯp/4J*ǙW P=3}Pkm8rn=]+jS"l~]觚Ԟ]zxn`rnK#('}j{!"(ES$A=敞fmvӅ_g&%$/$S:칽J{}q$fҒ(\dWN^/ +S/6F_#f< zAdBkMNKxzpPD`Wf,sZ̡jRj!`zg~v-Rr.Sy'J:}ɤr9XIsĮ1n[D&`[mEAWLcCTYК:55S(_}<^.ۦK6sD|J[Yknyxp;Af' §/A5 +#C<~\uX*e<_ xO0{ZKNDO9JOדL=yт 6cm +&H_7 ?^D^z;J F/ SkwΠo;l>$x }n~PuFʼnEVfٌ®lනu˘1!4(KE6VYHʩqf=CHIjA86jD8UGu̇Ә242ֈ-k,obZ/s{3}}g_z,rDoU~1G.疑u]_r Ya.y'Y'9k Q t`j>[!5kٗ.z!(;ߍ}( X__O|OHdR7ʏ;A/Jpނu@ͬD,D >4<^ԥ-8ŸnY[ޯP @MR@^/q{phkMpbU{5`9k.b+]Gw +FCnX oΙ0\g?U +n* {dlW1Z2U8F bT$&JfwU1ԦR#ZdU +xRdlaߺhѦARF REѠ)(ˡɐyp񴈆ӂnڑڸ+%'hw٦k%ފ.bnk<VnMnϽ> ?*p4ϖ7n+9l$VlRfu+UCEI 4 +//!1:h@J{ImT㟅t$&r&F ᯡaձ42~inʳBLJUwp/yo[Pi1BQVԿ;΢fN?h$OTlh.,JH:A +n07{V"v$Zw4|>9AX}O1ZI`h`. a_a`թН >^Tpb] ?)M\X(+ ܕpfS{LĹA \B\4(D8?IY[A.!W.zHL7s^NH1:ap-6!ˁ?h1y<5\Vdoж'RcOcЉ-ڏ s8;#zAQl_xT ^yIM k1{vK _MVNwPe4ڡ+Y/L*e[vwk!o1uy<|%ׄԳ{"!2*O'diZj@OU59K@ E)8& + +NMY,i 3ݠW00{T7- + _?{zi|5oH.Cׅ2/It}bF?{vEB-W$!.Nڪ U7Dnʑm0Ek0bGZTN/JRHŞu<Έ! r \(5A^~o - I >m&hF >GEo<$}گRF蠉{nG%*ԃsw)z^y\:15]`Tae8"Tߪg$"?Unp;5RtFzy[в83( v?X2LUVwrh)B2 QBy?:%kcsʄ$뢋HsZrrhm{rBOQb@* 1P&T-&G1g~+ЪL)3YHx?G(;%h@ĞmG,!G* YJx  NlHpVA)-ѫneӇ}vQgoKorJD`b(%]y^ ؾAE&/J.{(绱k:LaW'rX +endstream +endobj +368 0 obj +<< +/Registry <643b99ea5e> +/Ordering <6c3b93e64f496c81> +/Supplement 0 +>> +endobj +369 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 418.08 103.044 430.167 ] +/Border [ 0 0 0 ] +/Dest [ 9 0 R /XYZ 54 446.4 null ] +/Subtype /Link +>> +endobj +370 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 391.679 108.051 403.766 ] +/Border [ 0 0 0 ] +/Dest [ 12 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +371 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 365.278 142.532 377.365 ] +/Border [ 0 0 0 ] +/Dest [ 14 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +372 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 350.818 209.041 362.979 ] +/Border [ 0 0 0 ] +/Dest [ 14 0 R /XYZ 54 394.34 null ] +/Subtype /Link +>> +endobj +373 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 336.372 251.187 348.533 ] +/Border [ 0 0 0 ] +/Dest [ 16 0 R /XYZ 54 395.9 null ] +/Subtype /Link +>> +endobj +374 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 321.927 210.703 334.087 ] +/Border [ 0 0 0 ] +/Dest [ 17 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +375 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 295.54 224.814 307.627 ] +/Border [ 0 0 0 ] +/Dest [ 18 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +376 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 281.08 265.396 293.24 ] +/Border [ 0 0 0 ] +/Dest [ 19 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +377 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 266.634 247.806 278.794 ] +/Border [ 0 0 0 ] +/Dest [ 28 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +378 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 252.188 300.379 264.349 ] +/Border [ 0 0 0 ] +/Dest [ 32 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +379 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 237.742 256.439 249.903 ] +/Border [ 0 0 0 ] +/Dest [ 39 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +380 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 223.296 301.58 235.457 ] +/Border [ 0 0 0 ] +/Dest [ 51 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +381 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 208.851 248.292 221.011 ] +/Border [ 0 0 0 ] +/Dest [ 59 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +382 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 182.464 177.38 194.551 ] +/Border [ 0 0 0 ] +/Dest [ 60 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +383 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 168.004 262.904 180.164 ] +/Border [ 0 0 0 ] +/Dest [ 61 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +384 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 153.558 300.347 165.718 ] +/Border [ 0 0 0 ] +/Dest [ 71 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +385 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 139.112 216.263 151.273 ] +/Border [ 0 0 0 ] +/Dest [ 76 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +386 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 124.666 244.432 136.827 ] +/Border [ 0 0 0 ] +/Dest [ 89 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +387 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 110.22 246.484 122.381 ] +/Border [ 0 0 0 ] +/Dest [ 94 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +388 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 95.775 212.145 107.935 ] +/Border [ 0 0 0 ] +/Dest [ 97 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +389 0 obj +<< +/Filter /FlateDecode +/Length 1690 +>> +stream +霃HEU~}A/JK7o(m[җeCEo359ɾ}C@ݟ(w6w%ԝt"x%8rKAn(KId] +jV_#<?1I1蝛afoaBk$͈ cԆY9`Րsp|"YGzV{+?q9j$(,"Fg~p]ΪL /V(I#` +qJ"*diǗS\:LdnlIC1w*Ҹ*F3t}xxJosQ#|g2}3WKZO%q3O".ɴvwD9A^d=`Ƶ#Sz4я$ͧ l/>iAfh.]na "Bz1/_Hod2 [Ii0wSoc3l 9,NBʟ=f8m5j]4J-.B[\Nq"qw@;0L%oiqs21P^?1Y:otVܸ,DTGxrb# SiĉAySظTs-NOWY*m+Cfֱ1h=P$a{lf>h3u=Y{/}سiS;.U8jqX#E0iA 8 /p.ݓ"6淴/#d)Ҝg0g\q 9A;c{\,- ,Md3j/Þ:wlVƒD NH}Nvm30 _T.ԡ.sn0NglJ^> +endobj +391 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +392 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 561.713 150.791 573.8 ] +/Border [ 0 0 0 ] +/Dest [ 100 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +393 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 547.253 256.234 559.413 ] +/Border [ 0 0 0 ] +/Dest [ 101 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +394 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 532.807 337.87 544.967 ] +/Border [ 0 0 0 ] +/Dest [ 104 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +395 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 518.361 277.709 530.521 ] +/Border [ 0 0 0 ] +/Dest [ 114 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +396 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 503.915 262.089 516.076 ] +/Border [ 0 0 0 ] +/Dest [ 119 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +397 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 489.469 328.389 501.63 ] +/Border [ 0 0 0 ] +/Dest [ 127 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +398 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 475.023 257.438 487.184 ] +/Border [ 0 0 0 ] +/Dest [ 131 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +399 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 460.578 257.485 472.738 ] +/Border [ 0 0 0 ] +/Dest [ 139 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +400 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 446.132 326.727 458.292 ] +/Border [ 0 0 0 ] +/Dest [ 146 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +401 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 419.745 266.7 431.832 ] +/Border [ 0 0 0 ] +/Dest [ 156 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +402 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 405.285 267.419 417.445 ] +/Border [ 0 0 0 ] +/Dest [ 159 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +403 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 390.839 202.833 403 ] +/Border [ 0 0 0 ] +/Dest [ 166 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +404 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 376.393 306.174 388.554 ] +/Border [ 0 0 0 ] +/Dest [ 176 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +405 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 361.948 186.042 374.108 ] +/Border [ 0 0 0 ] +/Dest [ 188 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +406 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 347.502 169.978 359.662 ] +/Border [ 0 0 0 ] +/Dest [ 192 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +407 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 333.056 174.87 345.216 ] +/Border [ 0 0 0 ] +/Dest [ 198 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +408 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 318.61 173.558 330.771 ] +/Border [ 0 0 0 ] +/Dest [ 204 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +409 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 292.223 179.899 304.31 ] +/Border [ 0 0 0 ] +/Dest [ 208 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +410 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 277.763 211.701 289.924 ] +/Border [ 0 0 0 ] +/Dest [ 209 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +411 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 263.317 258.478 275.478 ] +/Border [ 0 0 0 ] +/Dest [ 213 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +412 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 248.872 296.15 261.032 ] +/Border [ 0 0 0 ] +/Dest [ 217 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +413 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 234.426 186.549 246.586 ] +/Border [ 0 0 0 ] +/Dest [ 221 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +414 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 219.98 266.698 232.14 ] +/Border [ 0 0 0 ] +/Dest [ 234 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +415 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 205.534 207.238 217.695 ] +/Border [ 0 0 0 ] +/Dest [ 242 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +416 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 191.088 171.253 203.249 ] +/Border [ 0 0 0 ] +/Dest [ 249 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +417 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 164.701 167.252 176.788 ] +/Border [ 0 0 0 ] +/Dest [ 253 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +418 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 150.241 221.092 162.402 ] +/Border [ 0 0 0 ] +/Dest [ 254 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +419 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 135.796 282.124 147.956 ] +/Border [ 0 0 0 ] +/Dest [ 258 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +420 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 121.35 319.322 133.51 ] +/Border [ 0 0 0 ] +/Dest [ 262 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +421 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 106.904 291.714 119.064 ] +/Border [ 0 0 0 ] +/Dest [ 267 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +422 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 92.458 273.962 104.619 ] +/Border [ 0 0 0 ] +/Dest [ 274 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +423 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 78.012 223.71 90.173 ] +/Border [ 0 0 0 ] +/Dest [ 277 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +424 0 obj +<< +/Filter /FlateDecode +/Length 2504 +>> +stream +)vVͦv]"{\BK F ؁X5=3M 2dS,BjTioˉo;) J;tOl@੻Ol]BM"k\P;{U1U-JY٩KyDxNE IZ|@_ jSٓ5/L18q)1HwlCqkŸ[eMeP?!\ +Üp6'siibvBcdZU(Cѳ5#HYiXڜYK2Oc;,?БwՅF7 "iHKv-;*apm#q1A ,"oxP; (8c|oDŽF P,޷HOX54a2Mܤ*ˢnl +%hG@@Se!Wl-`*tzFw4)U$`I0Yx#áp VfH}^en~Uc,#md91'>,kiw> ::k@^AaAƂ|? C"Q.gK==rlJԼ,_m.;m(qoҥRG޼r0O+#q9t2ض8e w>Rӫ? +uM7ǧS$+h4h/᡼!)-{(wftך{S~a{!5S*)b> := J{}dh=8 4493b5 *HK>Aeykpmc]XNQehgpvJl] + :FFrmn9:> 1r@0 > +endobj +426 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +427 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 561.713 256.363 573.8 ] +/Border [ 0 0 0 ] +/Dest [ 280 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +428 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 547.253 284.356 559.413 ] +/Border [ 0 0 0 ] +/Dest [ 281 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +429 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 532.807 324.422 544.967 ] +/Border [ 0 0 0 ] +/Dest [ 285 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +430 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 518.361 275.414 530.521 ] +/Border [ 0 0 0 ] +/Dest [ 291 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +431 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 491.974 166.872 504.061 ] +/Border [ 0 0 0 ] +/Dest [ 296 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +432 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 477.514 289.08 489.675 ] +/Border [ 0 0 0 ] +/Dest [ 298 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +433 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 71.933 463.068 351.626 475.229 ] +/Border [ 0 0 0 ] +/Dest [ 299 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +434 0 obj +<< +/Filter /FlateDecode +/Length 986 +>> +stream +ji@"TX td|AZ <^r-K37b9M +/u@*V%{|ҧ4cLo{J_^r%Ux'syH\wo/jCVg #YUiIRa 0Dݻ5CxlV$DžO`r0BN#gFjDZ6UUwN"Bٴ8i6޸$(<:Ygvnp=]MLPjVs]k:@GyO3Bf䬋)/>~ וMn +N툏˕3߲.Eeߛv^-bB @`ߋws.}5C,(Q#+~Lۤ%s67|[(1bBd5&&5Hx̯2uY D ˠ݃a`ȏ+ŗ-BR/J {O9s BG@(?;$̟KJƧ[p+2"5q6HCͼ$ps7{~xU]nmS[*+>ϥd%6&r*:Ю9+*_Ce"f@D鸼5ڷ(v簽P5хyLaW',N"Ԥ`Dg24 3fs!MAu 4(3p*QΒ\~'v\iQ-ڱ#ˮ!@-LmC9T*E> +endobj +436 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +437 0 obj +<< +/Filter /FlateDecode +/Length 2538 +>> +stream +Dw֭&om}~-z1~ 40>/ThX& iT.{y-8WWa잭rmzZ)#`li}tQA!$mQmS-4,NN4,Dے07|:ArzDWonQZ"{G:(  teaBKMJjM|Of[ӽ{MjI9#wV8v ؃Ÿ0`Dm^Sh'z o_x*.!b/o0E"ղd#I»XDl BIW?z}@q,$@ق;;Qy;*]'W;r0ZLؖ&6D/Dt R6ЬZ#vJrQ1K$6Rv>G?<@Ut%Ͼyx<خ0ujD*bEOvx_>sDzi"?v1U&9jec/ljNۮ +vHJ*xR8LϿ V'3ib9N˟x'g[spe)(vZt'7]Ǯ< 6;z[5$Mc3[}}06?m-\a:3>0\<̶CնM^"WȌR",g3CoCv7rRr%4OᏩH`*PyJQ? (%M^&$bk{|pR, ֮@iý~!gvK%͔MiU|(Hr@:OcwV q6;%X4NF??NpYΗLAح\d")J^LVc+E +oQD&^SHP!6S ˔q ڮht +[[2F;E &職÷eMk됷ޚU9>t׿Rt֮ƾ8^"0S\1<ҥ7< :PGVo$0$g\ \! ~8" +w==\(e8;b35+d-P[~ԸŬCDR;@4)xpKi-Dx\F<-S3+]V:UnkY= +ƒz,:QF$5Q9 +NNsq,?SWOn룜+8<bcK3F9~*Ĝ:FZ`H)pKmpXʍ, Pt+º&;kսS`kʢMhK找TM{[֊|r.xF@:xQS9*t3^-Ila4m`;DN JL@:R =9.RibG<&} D/v|%ŃLg,22a_ʑMU9Nu0@҉}A'ʰ[ɦH.LU%gvu.Q[ Yl-o徶,;CF\IF> +endobj +439 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +440 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 274.215 96.744 327.869 108.904 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +441 0 obj +<< +/Filter /FlateDecode +/Length 2988 +>> +stream +ϴUDƔ !nHq{`Tb[ JbP Ktqly$~ k_VZ~ oC·>i 7%.1#&t;DA$M.|.@\J7ܲa[7\5ir(Һ'3u`ucNO?h<!PX}p>q*Z{a E!g` yw@TWkԗc-\;.~MD8i5fC&3(i0KPZp2'I0v 48r|hcoԪtzVd6,_t?yͲql*PJ*h W >a _bZʫ[4qRV;_rbQ\;$?1=iǍ<8`uZVL"pf:Fl zרe{47|PJ0j5 ^tT661JR}L)AlΘ(Uy:7񈦮˜_>R(_ĩu6l-OT\@YYCt-ɐ9,Yo~sK);XO(rN}#2)C:Wpq rDD35jQiҝM"_wJzzZmUk"` 6яVVjOLQU* ?ӼĿw +Xk}iA`6bD3fR,D$Da)zM(}}+%xy2w_UI@ц8Hl^UM=qLPV &FB@hr|`eU1w>3 "p.l4~r!PH#Ӯ" [ajNdxl:eE\ cwVw84Q vD"'v4AcXsgF% /T +.̲Id'0d bk{ӷԏa`2j㯁1 J%J'\n)IA]eO3?hkk{),l'Q)]m n 30I\F>/$LG&ѽEugB{[J Ir';[8t2p,6IvL¯ +KK|#_0c=#176=,ڣVGжЗ%d.^wY&4D&b|btP doڛv3p+f]R[S Mwض%Np-*@8<63ywJ*R` ͅ)͎_Rա#7#K%e^//_]A=!ylnz$X[:T-"ʪTЎ0Z fP(&ط Eݕ&~727~7ᄐcAPb E:̲mӾTP^[\SSI!?K؝n ECK6] RcekL/,r!Om)َː6O`>y&SEK#  h't,.:kYo'`Upo^6ŵ+`v*|$w0rLvcpȶ{lj6؜4S3W"#Nxha%)nxnZ<>$D6ø}Bԉ{GYyh(cƏm>oC2vm1P&tO{=P5Аp<=&0Mn2|!:#q* lw H_'`H}|.cU.Ak7V>JsD/9f&#.h'e0cmXgY?svb^,b1ޔMխ3X881|a[}S?&#qS] OQ8pL+` P ɮl}Gx ["1k|Vy";^umwpd8UKtsdzM" LqX+M;}(:TfTҦQd뮚Tb`k#om%q-mpGnCOL&ȝA37V(A:\c%!8:jYI }՞ }d Sci4,KQ!p+d6_QOUS y+m MdTJ Js)eN ~KU+Df6NZxdV `6TVĻ& OӺu3ɸ:X}&6eq?sh}4ZOKg- x3鹥b^L}Xy41"ylYa_tF gBXeNzjP:`},|D}dPWJd;!2%hYJNK E F3Ҳ/0(??i l;R.t |, +endstream +endobj +442 0 obj +<< +/R7 305 0 R +>> +endobj +443 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +444 0 obj +<< +/Filter /FlateDecode +/Length 2191 +>> +stream +_߁=,wŷ}xiZ'0-e.Oonv`$ Շ3өU<w {s= +Y *ۄ&1bV> yfdV񙻷<Ӽf ;f0z66K1PxX4 a eEچkWw|-bhA(Ɉlz|Xi" |` ]fcgwWOsy$iA{]|=1S)Y6dsYL^2I0p& GYЪ;D}%:{l~/eʾ+ [A(\Ē<{.EM 7R؏54Ƣ܁L]ꀞZE(aʛwS$!n8hܩ@q(an <e^/̥*z1D0/~#Aքa:l<X rj2-:HS}y"~A3|ZC cHbR{L r9/DbEA7v2{$'JjF. 2ht4f\*6st_6m'`hKvq| dLr]f-)0h^}ZPn&2eзRQ- /F8 hbȲs_qtS\عi &I9oxԦ,.Ol'}bl􋉂C@a> _،"GHD䁃0>%TG>]9k0m +V(a$~F@4 +pžvTWA K+T +fFVY]7{?\E*'[S &&jkRvHa'[ }Pup$xu QN{a-`zP8 +187~"܃+⣁XS3qp\ +@,toߛЫ>Khrz![4` ׹!gmxQ͜AN'uFZ:2Z\SmFwH@rvpo<* +6DYo{m]0b:eN$- 3"(sPBPXHXS{n%!x[iv!>O Uѣ?>%{|1*̽efnO +T)5bӟ?ȓE~Jt> +endobj +446 0 obj +<< +/R163 332 0 R +/R137 315 0 R +>> +endobj +447 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 121.71 157.743 173.435 169.903 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +448 0 obj +<< +/Filter /FlateDecode +/Length 3312 +>> +stream +{N)'ZH\e?bJ? + +lܶU7ݶ3C@z |U`0 2&Wq50BKy-jx,ʻ.6}o|1>S4.f_~Ģ" ȅ̩Rٵ+"Kt}M^)΀W16f#x,J8V-=vRj"q6 b/;_o&QbVE@aZ%.DD0un\(3(Ԣ}Iٶ1U-OxEQ)Ub4/Ѫґ +gVӠETҪ ! +=MvNCt!qbf Tŷb4o +Ȟʘ>+EDOv~?[y/_q*O&tĉF>J/W%O[eZ=2[",UĶei o՜R=l~+` 4x!HȦʧ멚MǚT: l;*+J}dUAF}ڻqdcG3p觡w/)H' T!xq -i,mCaf2 +Vׁ\ݐs<'c1aXTFֿ>5_AݩS9kؓWxGb " Vбپ}4x1#MQ#oFfm<<]D:g3p3B܉l ar3[qg&=;6˄5RނbV'Ex~|om7qZB.%kzpVJq{rhM[Fȅufs]Rfr:b/y8 [s`_vn{ƘR^d3Q#2)~aWkɬe 1Tϟڃ`JJ\dÜrr;>Pv`6RGNb\ <gӔsIȓj(Ӑ*c>‚}di݃nG*Kz]XM@WUP:離S\x! /?.( KeVblHֽ)C87Ї8PޔT#T}j@^;O~$pEsEB (uNv>lfYQ=I]YZe +.C$nEe̔)`[V +t$0c&#Uh(}UvCs,ݽیR3?9K%.&Ə36Cy{Si]:A|(w?.\ $l +x9Fʊc yU FF{1Jy| nh IdC^MG&&Y$uP܁7sfBz8x ` k𤋍5h'> *ޖzC.oNP#8h-.͆}ˬ7ݮ.Bu$=p4Пd&krRW ߌs2z$"(166*g4IOֳ7M)n41LY~cf*ka2$qz8.*vvKк/0/XXI;ت~S}:7o"@A_ } !s6a:%EZm<QnM +[G-Is#jMt_RmCs"r 5/# iRFcUJ+͂\n//&9k2d+4 +endstream +endobj +449 0 obj +<< +/R7 305 0 R +>> +endobj +450 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +451 0 obj +<< +/Filter /FlateDecode +/Length 3093 +>> +stream +uD bw>8~\#&yd:=5͝@d{+Z)S',} +W*6-#m#ԛV1B8 'e,0JR첋O+/PE^p .tI*UȉF\,Su?*aɴ' +w\zvP{nkߵU1'\]#@xeN &?2~e&8CI+_SU,2:~ IDiLsdko']vj&.qQ-~H_zWCga55}* *f16{. oo1LcB,}~ lv0O iV5< o쨐 SQPRx?Kc6j3קA^WjÈYxZc)%g*l#U4H)o#KS1b{gkT 9%< >drpV5{ohE(F?n jU0; +N07oT?oqEIk'X!r\䉭R~rd+ qR ;e3rgixïEiYt+1Ü Xt}ONHsB3#4ҺG=zd8u`7'KgwZ~TP2>0&zfbLHHIlOG=ѶfRoj|?aHٷTs7'̮ u}{o2.>d,5:wm<ѳ0&$  2lb4759<-L&1WT2H4y\Ɛ|^vIDLh.=UcobBbDЄC풲a| pL쪫z-2@(}0{"|èff5NGY I +ҶB2XbHs\OFqRK],=!3 +p1F8{YjFmE`dY4!Lx͒aʵe\vyx#5FqcbZ;ݒ[j LAyv]D![YYGu9EB@$[t/͡ +GsŃOA8{8Xp 'r%WIH(s63,A[`: [4Pv +ׄ3Θ+Sh4ecyW(:#Y+wD$4eMIwUNhp͑ +7-J*nWྞjH(ôi6&eit"oL=,Dqh!)=(Zr}StF L@?2_ZHu">XZwk~2|btc<4hЏ[x,1T6x2wbmtݡ~(N )E}?!ii V2}rzkE$+[[lk}ZAf/1`MI.š1]x4 +}>,BĔú-=˖(tAWoGB:"iEuዊ=Zż`A;URf&ys_Ҕ7YKrG/ǠЄl +\1Z>͔5cN<: k* (ˇx~q_2"eT]R)).:Ob-œCx_qp:_ +X8̫~ N? {ʎBڛ.n)}:*Q#R"Jj zF[>."51+orkpgɽҤ$ͳ~ٟ5l.%mJ@\^rybe8R aFG5s XuŪSjeQ冡n1wMс~2@&S?Db@,ꏠӣUx!$RiGXG2/DYheLp\]{ȝ^uP{idzK O ȷ[j]kTw~jB 󣫼BN mKëG 3Ư>[[MTG[Y/f45jYk$";, b2( 4 V GdowqQ E+"Ʉuk04dv3pKD= wu'CFqٝ}LEw#ON ^PT]v{atdS%S]0B6! MB^Jˆ-' +x3=@æq؁w{iI WYz[ƅG8ΡzAeG W+< +א~G,#1 ߵT"zlP83OP鉽2> +endobj +453 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +454 0 obj +<< +/Filter /FlateDecode +/Length 2243 +>> +stream +xnbk +Q5 կ/rfK6B0A.U^opTɟ2W˗hP^m&Wˤ;M>Q`)hǞ8.1|Z_V6⊶ ;A}_UMIW ]5HGy(-Jt/rqCE)JֻTDa4Sp $I9-7Y[Rݕtȳⲁ)!)!:ԓ!#_1%Σ*4yM& K2Z2 +Jr6~T"HvlY,Ezy1 IE ŕ<]իZS"0E@E'6d??ɮIy^r *W4 + o2‰J z">R/~v-!b7LZiP?`Ef1Jh*>HƈD_H\<6~u"47Y6?#!ΐEQE,;] Cׯd5:圳Rv\6PЌg4Mzq%ɟN#hZ[ +89XBcI7M +huz#hܧRAz^Esq 6S"c&:z.Z]@MvczYqFbUwP3y('-A6?YZ qXhQC4 ,ӗ!xzMoBŷ~WrXuf= Qi!I. ?r4փt&]#b^Gu&fC/gEH: +fĦ; Qu pK:uXoݍ tG{eJA"QG 0*tؔN`vh{Ẓ;!MP ;Ip0+Fڰ3Uo*M=[,ƹ4mU%.MFX5p(@p = +/APaQ&zg6G&/އbc/ы%V%a*nTZ&mp+_~:ѫ bs3B1o{/Cn0hƞPtne Is{T w~usʂ +-8tJ4~f5Fƚ +V\MrY/~:Gos,!7:ZUS9IYWqnkJg)<*$~hAh*:J80Ao{\}kK0kʵJ &O'ʝ61 ">$HU`bimꩥm6Kw.>'d@ vubSRWy +-/9`N8g4R zIx&#f!>mR6.\#rt:J~ZgtEc0"$Ia6 4w=VɎS3XpU?&[WX9V| k!x(c+,ҝXUGFOUŌh] pp)]I*ZeJ|KbvWDP +qR?2ְˣA4L]wr;'aWfW}ćjS'3)H,w܂it=F?ٙx<8^-bO!fTW`oY؝m`gu }7+΢i;*T'o=C +A[ٝ6w,j k'U?IxJ.eLτ +`7|=yRJ?-]+R +x?ũt@GM0 =}(AdwA9^\Z((IIkI6`uyIǏc +[oZ5(B^-vzΤKr* +nz^a)>~R3Tf +2`cXz-&UGE؝h\/Y۽sc0-44^qg}!jw5 :Qh߫>(8JA`J +endstream +endobj +455 0 obj +<< +/R7 305 0 R +>> +endobj +456 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +457 0 obj +<< +/Filter /FlateDecode +/Length 260 +>> +stream +̶{iD@gᨙp4"Љp1{26פQ8b]s%%+=:\1t*h H!^ "'ƕZ":AL|82w|jhi~XWsAE`E#2kU1V=(,59n:`BV3'ɑ\ئ9.R9{*Tk!L`HX|8"|% p綦, +endstream +endobj +458 0 obj +<< +/R7 305 0 R +>> +endobj +459 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +460 0 obj +<< +/BaseFont /GXUZVR+LuxiMono-Bold +/ToUnicode 461 0 R +/Type /Font +/Encoding /Identity-H +/DescendantFonts [ 462 0 R ] +/Subtype /Type0 +>> +endobj +461 0 obj +<< +/Filter /FlateDecode +/Length 444 +>> +stream +8(ԁ#S黜=63aޡUU"b>$ȿ)ISϚGlVԣH!;͒ `5L"-oI6$JB6QxD™ͩ̐u/Yӎ{fh[ak WBNl."Hًj*YGi#"i1D+,LRu +ԇ]3O,vRrV;M]jR-%W72 }qF}IÅ38ՆDkF`,E,h{ u} {Ni(?Q6ꌗ];ѻTd/qK!eR +D+/F6@g!"Qurtˉ^94\(p(KMd(*1cj4Y5xEmJ +: t&c[\$*q@czHe&˞ k +endstream +endobj +462 0 obj +<< +/BaseFont /GXUZVR+LuxiMono-Bold +/FontDescriptor 463 0 R +/Type /Font +/CIDToGIDMap /Identity +/DW 600 +/CIDSystemInfo 466 0 R +/Subtype /CIDFontType2 +>> +endobj +463 0 obj +<< +/Type /FontDescriptor +/FontName /GXUZVR+LuxiMono-Bold +/FontBBox [ 0 -210 713 1012 ] +/Flags 65568 +/Ascent 1012 +/CapHeight 1012 +/Descent -210 +/ItalicAngle 0 +/StemV 106 +/CIDSet 464 0 R +/FontFile2 465 0 R +>> +endobj +464 0 obj +<< +/Filter /FlateDecode +/Length 22 +>> +stream + cޝJ{ +endstream +endobj +465 0 obj +<< +/Filter /FlateDecode +/Length 6358 +>> +stream +˽p'Z4лXg:E,‡Ãq ,&\p5.-Q k'm!3Q@0]hb ǪūEb6_PuɆVRĤʼnYN@<; ̅0Q=p}|Ae+},b- g'Idj.ZJr7$ڂH7CV@S +ҾYWkk!k+wh,#'4IP"*,M8]\-GK p|V%@E8`fC?N:0^ϳ/P(~ixCmN+Ҩ1E|jҜ~9NS]u (pYفB`@?,9;7E 4*9|HNn0˳76\핲=lFJ% +CW ([nBw痵B 6q`8di;&c%d҅OG ӫ ]:(a `&X< )gLeI-5R%W82&͗=Lu4)c]#3T]Q  *#ǦoU*_#?Q2o@0U.وPx>JG䔃Nv%w=>.ɑ3rGhn?DW#v4jG͓ 1:X\ـzR|~q{=qR9;'SbmQ ܂*_J-.,?g{V 靉:'bMxy"2z:y!/~L]M6eSG~fTslN߇LH9L>(!n-߃$Ϡ3Q$k2cXc ։w/Pe暼nݼjqwuNJ![CΑhJS7{ ל$-ذg"y H'x9^d~D*@rf:$8{QbNd+sɤ[ +[%*SRd|)8/ +xTaƋ,bR>B9: g19#+)VblGĻN<~c!F[z@1?xwP^} j=#= Wz%6{X a`B~Oq}*4/ڶeh$"#qAXW'v:R?qށ`B)1E]S ; ye!|ǥ(bcs,x?2OTU`w&wfZ{*^w;x 0Rz=^s`.@*pnI1oxߟ k>jsܚ0F@VQe GI0[ RKR_/Rb4t1 G U'pn0%C2̢l! ICXgҁPL ";|ϺQŔr!{GCǴ\}u2$q~Q?d!Q}#ˋːp6^"'*+ͮi#:d~o9\lCsDs.rP]O}OPn_'6tEI"/^1*^h%ߣJD^FB܆KȭX:AP&G-jTv8V.i1Ub1jݞW7j8RoQƄ7?RuRj)p)]#zY @GL]+eIIB\ʟȐ[r|T:r|~&*X޸z(F3[-7ʽ]#h[h~{///#o-p /UP >܇￷tKu4`y_HupCV8R(GF}Ŏ8#'_r,ϒ\A](Sfii軇@+*ݷ)* <5Ի/Uq 2WCzm>p#=fw)pƆFP$*F]7.$yVs8 n`p^tU?EGHʩ:;qp:u]JRQ:x9(1}EPI(9Kl.%|ѝ0\E+KKiL`82/ilnnv&lc;? +HQ{BDaY =8 %6{  T&NE +# D vF,%}+AVCUIvSRg]>0tKk0u{8b PPFH*-$b?[jt)#,{do, ͦm=M$XbF#Ձ wTeS75w +Y4"Gw.PrE4"Ŏ,aexm.';O䶆x""lh $^M˶ Te2ϓaM=+\th݀Ɔ ԌɄ1E{00ػ2xNچqȺб#. #OX3q., ~Q^N< +γ;HM+(?#Ko ͑V50ɴ"ۖpvh+qw;IVNi"…uU^+˽9&9P3jXӴU>L*Q 8< [' {hʩsO ȽN0;'"68#׼F7U2* w{OG[tvQF ɑɮ\2M^/5~6$6eJ\u-_T`>4b2E6)+|+o[*f쿃e8 TG%=e oVR8='Ho=E}-QOI.%#r-#4 AnYvˠ=bw+ZRr=v:!>>nw#@_Z?_ԈN@rMiҞOj}_4; 솕1wΛo!J Sd䐂n@hk(_u^a٨:T0P Ɣ;hDgd|BR`vI_d}9ccӦ +/\Q{KBb: 4Bb(w<dAjL~zmGi+0]3{;Yn5#Afӣ7V$$c.D\ZcfyhhE,!,:yBY%u)%su:}="R&kkW7XM-2V,Sqť]oήsxPm?ׂR;z?ScVHZ+W ^i#!҈eTx{i]fM0`i*\j1o3X +>~a&{3 f5׏X=#_&ne{+Ի:pͪ>[>|( %4,-WC(oc 1zDqǒ:B,EO?̓NMeVod;w=/0WN-<HР4Z80ڛ?Ʃ0/:AXME`|X^qg}`~ݎ? NwFit ʅ@׼4FZʬi'ǻGϟ-Av + tV:|&u>46ţ/ Sˊd4FKGhyڴ:D, a; 1LPpŖHi|d\ܹ0ZI,\ճGV ܇!~ 61QC7EPA,6{k#5.oUV ^|Т3Қnۂi)gΝg1:d暇,~7>޹xٍ{`rAy`כ ?ˣ h^|MJN?$* 5Ȑs>S*)OIyǮj[uVkY@ğtG+؆GqdT?8zF!^f4@HLn +Xka,W<)qH~mB[J;gq +2$M:/XLN1ٱ̧D' jg=W^[C>7k<ܷ7 BhTIea_*ܻoJeSE"|y/0Eo,tdIhpRx%X +I ث^u3_8ItR$xFt%jSH"kI]SG历x CiA1mVW1@].+ɡH,KW@_o?Y[dyEL g8?L Q;i.IU5AV(t)=L+v|{Gn@qڸŸPB93ÊAۊ+g0Kkg*# +Z9Qrcfs?:AǬ2e.cYmpi|ZN8>O4> 0RP9oPt ;Z(ĥ@b xM" %(.&ty={UO<_&WJPe],{2X*TkL-U]'V$1= &5鍤 +Rd P;ʸBo lVT8 /ZTjʴƘ6嘨Qe%vbȆRiqgDɜgP46x_<\TuF0|m_XyUVSA7Q{lss63l#\m\mۂc7ѩ.-(I-ĤG9xU Wf˺82ZK85Lyr@jgzU4M0M`(Rf-;!5lX6@׃>y{  X"aE"rj%6EE<hM},M#+|(%Z]w7(;s)"dZXt~x(# ֆ]9}x[i<+A.g_.O%Z WQn!r÷VL*)0JR]aľnkVh۷Xy~:+ċ=T j?wDt2krk?I)K/ūEbyӁ4xSOkW~|qƴL }Ǔ^>jFj#EqDxJ}aËb͋ҒA?9So'VP;S\pОIJ* mO^M"tABxB#wx9 wċ췀t%}A Wy.yM ;wB߄m:|% #;sAiy "@Ze*nGja&ޯU7>Yy*ۮF +endstream +endobj +466 0 obj +<< +/Registry <6423b185f5> +/Ordering <6c23bb89e4611726> +/Supplement 0 +>> +endobj +467 0 obj +<< +/Filter /FlateDecode +/Length 3297 +>> +stream +DH;iJOⰶdH. horH#Ɏؽ>}\Y=L)^nŏ#Q7{ܘc5A?c u5Ɇ_X2+>}d +{@.F8(?rn n)TBG4~4`Ƽ2b:u҈@&O2**ғ3JG3aaªWCWQۡzA𴫂$ E2 A+o7y$4ܐ0d԰KP2:Yv숞B@3.} 0 Zя֮ˣ %BVE}1x@AF3Ad/U*']zњ`j{n9l-u(D+LItjf±G jlJ fu爅2ZK//5vD웪e8 hHg->G6_2`RӻxZ'(ఇ=`OpTqz!X? cV {DPc9擟 %WGjj]CcT>I^^I*52:s";LEDc +pY&20nZsgSָ,_QN{{]n\/zK/UYӻ#ڵY#ܾ'W$-XZ̰v6o0C1kk2d}rw/%.*lQ{Nc 4Ouyoy?E MqYWW(E@ثjd'_NrQo#bt?8]Р0N7l'{cEiz3?=d~$ +A@ET" rL\9Enּ͇UM:JDl/"DJl+g *[Vb*ϧ4aܠ{/?$/|ao&0q>?2y8qGVV^+eI\&ji .wb8=^?E36 +,=0q2LJاe)jj.̶ybtˬ2MI| ?}s>e +aT;eHvP"O |SXkYtN< ;g)".WHP#_WN)NѾKMp54_Dp'PNơd7K#jSͳWoqLj;V +vSd{"O?sʊ=~1K6Nw]ؿްIz?2 /1bIJKmCr^PVð㊛'O|_/&y)@M-GY<9y'*UK!RRY&r%N;tݮ<8D~PFS-sc ۰kf:zbn +CF&x'-plFr_8 +wPl(#˸"#rJw&)ٙ~ K3Nw b {fGu(BΟm3&U/`"J!&j۝ҫ;Msez2R-9IZ8TXǑjh<"ǡJ'30Kx!&ݨMvvbW%D` EjDayCe2:*Cۆ  SW<V?I?/[BӊU|xG{V-i + +;RrO4SAI])35Rfa (B֠V, "IzAqRp,ۘw*N'Q2Xi '3jj!fPȩ|䏣u-KS j f PQ$^h98Fu y=UդmK۞6CC|s- vBM8 Xo4,QTboH_zdW_D1q}e:0g!r[v\kkб֫ba޳zϗB_ogLd;7o=tڂ +JV-H7:X+H P&Pdo:jpv5 Ktbiajp?MIK/(L +xh +endstream +endobj +468 0 obj +<< +/R7 305 0 R +>> +endobj +469 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +470 0 obj +<< +/BaseFont /ASAHIA+LuxiMono-Oblique +/ToUnicode 471 0 R +/Type /Font +/Encoding /Identity-H +/DescendantFonts [ 472 0 R ] +/Subtype /Type0 +>> +endobj +471 0 obj +<< +/Filter /FlateDecode +/Length 563 +>> +stream +)&p 𖙨M͛BHz_it%G!wP)\ ؤ!'6 tm9d>)z5ho@ŗ|qx!{L0d0TMq.+ M<[z6M"e@pg`^ů7 +?V µjCCETāX{n"D%i4~ ++yZ4Nc |Αhw1E?՜; l~OV(t/|BgS@EÕ>wlw|9nhsdkعeڸ{uZ $.tz6!p- hB2wZ;U䵡tbX3~Bm TYNjfex5-`##ZQbF"Dkիƹu 'y+eHSC'?,UjР `.(nTYW\An ݄[+ FɁ~JiQB:I<\~)Dдܒk'нI`' _5- +endstream +endobj +472 0 obj +<< +/BaseFont /ASAHIA+LuxiMono-Oblique +/FontDescriptor 473 0 R +/Type /Font +/CIDToGIDMap /Identity +/DW 600 +/CIDSystemInfo 476 0 R +/Subtype /CIDFontType2 +>> +endobj +473 0 obj +<< +/Type /FontDescriptor +/FontName /ASAHIA+LuxiMono-Oblique +/FontBBox [ -14 -210 757 992 ] +/Flags 65568 +/Ascent 992 +/CapHeight 992 +/Descent -210 +/ItalicAngle 0 +/StemV 113 +/CIDSet 474 0 R +/FontFile2 475 0 R +>> +endobj +474 0 obj +<< +/Filter /FlateDecode +/Length 22 +>> +stream +zJꉾX,}[*u +endstream +endobj +475 0 obj +<< +/Filter /FlateDecode +/Length 8518 +>> +stream +A̶ٓ%bU)vKLT3 Ya0);xIv3P'cV:~7Y,?{8: +7#-\9z?RRt%Fr}Y>ʂ‡\=Ϸ:}\HŷNjF! "V`whZWSkf)U>t: +9(Q>z.E<cC? {gԺ91V% iUJMem+ii P5v mnHWjg2]ᒧˏ.D/ GV?x҂$-wd>SNu~]åOiO[*) gu3\"w&f|ggg?}̲\ TOO*_ Pb;x~fMNc)m]{q~wJ]"nkT"l${!pO^#vovb Bhc?øgHoRuwe2Zd ia7or&1ֲ*'p̩ VޘSAWw@ѻs!`::^kLw\ [o8gQm)gCQ[X~[gy9KH08]2<h=0N5L`{AC6T\EeDoxjy;L515~;R|yʭnd ++T~W2@$ (jxmh/H5x=fJnD1cIBſЗiIcUy5VGUdX~p-qY"je&JwGmDރhsN27.͔\I_rꇗN{7lϕ5`LNjNefw9y`noaV+-{GjEpr=yXz(+$|:Ax(*T~,JTYTR b aP8.3v~K Bn8 \onnޏH= +%g2uWSKn?E{c%-}v&o8x`abgӆ?4hǠ #Z mSu }.dJxs70#*#URZ-P$@o^MTiM/e6ϯ@@z4ߜ՜bm̭{I)0Ȟ?rZԼNJ1h DN10Le9/co~7b@r +(_?5&4oM +It~v29GۼrMHS +d@!%b1ҧ~Gp[H2EyPSŔ 7$޼`FE%:R~ӛͶ W +AC6yfG4D$)-7No2r~"Rc1#ǩ(*8a9 wsiơ|gp(]ނTOxq%֬-*Osq1382 .-QX_3S5Q#ݸ7z*ޣ[ŮF"X! QX%~%$.sAT8scprsTGWS"%1t#19E;\XP&l଎Xxa ]Dhg:-wK8%u"эҌmQi{ʀ1~ v9e3;w3:\)J +PVLlsd+q/%,jܑ{8LZMHl]ɤFo:#H(l#~k=@T}d,U/3E< _9pOm:l8-w!XHay 0UFP3 ={~!4jTI4wWafgRi!n E42diRt,۹RAS,zu-)h WQCYr7 Q~5/ZQ~rv)^cxcN'ʹEYhkX! +`x)uR6-DRbTXkԻ,*eǮӠtt.QE +\'g }#6q>y o]+<C½@oԗX`Yg(WHӂbTi#B;"6=*~X+G~^nƈ5YlZqBk!h5r*2R!-+_/(_댔Ζ#hDD"(9+P`ٱ\~6c7p +_9c+ U>ylfrH]#?q 2l"ᛆHͩj,!oe۪РH0qM ֆ]dV $\i<5yНr&uFGH6럁+ K&%do +n_jgܨbE^4 +{@dYJKA]KHDqc3jԄ)x8j@wD &֋|WhgO8CH +dCr%eę]˯5zYc\_! 3֣ǥm30qsb=zFe np0Yj謱R;< Qs/%1ٳ;O\,\g]xVP$) !'`a`(qT5Q2q(IUvCeQޥ5UvKF['Ǥ)SŹ4tKQ +nKxgKXn,gĵԟ37@{zdlӢZhՄx7{<4ȶ3wł)aM~Z{ͥVu=P%< +Pre)ج99JkIПgHjͪoF=@K0U}ԅ@xT96T.shVh7e̿VΩ} o@@ 59zD]߉T0n"g Vнr)[Bz\YV\B"ߧ'l} 9.кAf` y72ZD{>;Se)k) N'x1s*X&.f% +N$≿T-dd)'尌ӝWj0Af'h44Y&6pB-Au;LǴS:ࡖc^c"i5JשbM `J ٻtWàMXh SԇqdSs jL7؟oӒ´mWe:H3I()JxNmPȁٟ "ȆnCiirX~6w|\|$Д0GE&] ~l IHYY$Zaʬ.(w/)OK'=lںº :cI,k0 #&rcy*Y1Y-ĉUOf7o:-6o6`L͹~f)ψ}P o\nB]{0vX.̃!T=򾕔"翸8jU_2[_S퍹` +`C0h5"9fr2z%J0E 29a*Nl04YϨwټ}(AS.l>ڝksQZksyӪfTBU1KG0+gV_3s"5oi-2'Յ0!l#T!?{&V]w:j;Ɵ e5a_h)JٍWx#R#$P?VԹ͖ځ{hA)auLmc$ʙL=4܉|"ݐrj%@Gg=U# mk\!U߻mW()Qd}WV7Ocw +SS\XʝL(bDDos-!ocZ<㏲C  Ufuq[])'2+k>cp1=|%f|~` +9`\0gÿFk5eyY)QTaSWBŗ~ 4ߺ%j +FeYڵu@4g#El?Ъvl fŪfXB5c§Hfs+ ތמ!یﺱh /bs}$aN\oT&n'2B4 j.Fƭ>]8)[WU-V+M*C&aX5l 'm[S U]S fWTF[w(VCrE JL*uNe)6] @@`jܖix=7͂+̦ݺH7<RG_X<,O?Z2Χ_,* N.lǥF9K +1ɢVo\@|b>d__6cK.D +hc93yi[oߥ~I7rb(&AtļX~s@e5(Wr;Ap"8/ ^jO&& +Œ<{ }U,Eb +ӂze!4>E`K}rYs*Ԏ$}Zjn:Vvb~n'{6-:ݠ +Ax29]uvy~D"nؑS2E6BW+Msu\RzqV}W-3w{nTfN>I@R3To|~{!ZbBTe+!:AK&uJ1 >h݃q؛)6T+H{CFx jx0t$;Mb+WfB/t~ أ=J`\N RBi@$'b99X FAzoAIfcC0f$١J6B$PpCM?y{r "(5DʠK14Ϝ Z Gg,L$ee814n̝L@#U"g*Ÿ^pdb@O\HɰE_Ybe _Öo'TJ/[^$&B#eЈde i1cQ]dQ[(y#&Tq 13m+!4PMg'*5_߉C^Fѯg3ܩ@w_*jjɁ9^s`wQyEVw(F0hMYt67R \A̗## =YPHeuI}ߜi̇27&}ON\?=S +@8 {Xhԃ}AI?eyuYWO5^vԠ2ݴ`:~4o*%T>"+x#^ ɐܱ~TT(;wN2~71S&=扉Q?ǯ3TBT\ Tv4;s+t&v.u +>_>ɘ i+BW{0?Ύ%ZCD*VM%T^kip§c$OKN~^SG #"=8G,z@X+;б㵺 q %i&P]<$Yvg^c9*22yk78iƢ(ݡL{4hޏxS_5~Ъ{8p.W{HuP= ? GL] 4hw?T].;/7Q1/Daa&8vV,3PaZ*yД|Jlטvɔ:GߊqČP 8Ndх/uKU`Kf_Q˗mƀV,ݓ!D |/!&FH&$X~'4+0a&o!\PPP}GنE>cΉ$%`&++ښ{ @n@慡NtVaSdnU^ܥ-gUᲳ)zo~Ls_|74.|S3s"\@ӐԘ>ڋï`cG nh!p>ۡ2%)ISʔfRbD_[ϗ>V!H)tMZ#`pzjwLoZ&tj8X`5])Y0wE +h2;Ǝqw QnX([808) {bKUEvD)a[L82?!ov$;t;9H]vA-Y?|o*bϲ/S]^:wz|. ]z}+vѯR ໫R(#Yfg Nk^yyسN.mkhW`vo9QfI ç&喋RW>LpauW PRL^2Y*3JYN Y<@e-kQ +6;~P+Ղ5#k#PyQ^ދ^ ;4[>|;Yا@JUɿ5pT(arW;$%Xj4GO{hn|3@UYM`NBuN_JcD@HyyQrShH/hU^s4:q\P}&N9fʣ2UG*QʤN> +?ongpw,Uh6ѤԱz*0N^j"evP NeoӾZ +Edz)c!=C<'%"{Ra.ELv[?L&t2jGh8$3יԎMlp5%8jLS3{}MDbti:9j{t$C|23e'^h[o E{Yo$eEO MMVHyVJ,D%^ik'4Jq)zT(IN ].ԉK/xU%|&@ [C4yHkD;YEC1 +q  s_,"#́UtQ9YJv#[`Hn,#x"OL7;KS7: L{# )AS`EFc)˺'{fB'p7@L!sY6=ys9s}b2[Jk~%RL2!vEsoi$r) +k^'Hi\g#~F+! +K1+Qlgc X ҢQ˘8*ԥ :.n"9˖cduH,H}?%rHB) f.R +endstream +endobj +476 0 obj +<< +/Registry <86ac5754bf> +/Ordering <8eac5d58aed0bc5d> +/Supplement 0 +>> +endobj +477 0 obj +<< +/Filter /FlateDecode +/Length 3315 +>> +stream +hʀiąܴ H~Ev |F̓^ 5,*j}s& N^;;!r]zm*1*'=}OrDi)5U wX܈b\/^.@'}zjI^M癋{PoޚGo.-9§%a1<,5s%3z{f)?8ps僵VȻ5pra~g jLMg]8T!3ogb*(&.Bv;͠#. +,^Mȩ5zX^c^HKH"艰^G:<(a;3ic6*Cq$Ō rR7ru` 9膤Vx>`eτ_$y o zrN#LiK(pg{vu*yvtD@$,a*e. ʓmrI!Lvzs晉9ul-a\F#cvFxjPt-c>dpz4Ju-:}jW*"#-_S)λDZ> +wVu.<:Ut[/#d=k?s݌j#V{R""fu1X9N<:DЮzhbn -[ݍhjbຖb9z 5ŧrԵR3)?GU=~ -;s8\IZkV21pbe t+0\+VIDDڣAr˦M.1p~9!%F"ʈs +bBkZ2 +dm +C_)O{7A][RiYLԸR_䄓2xD5MHv½ޱ+= T=5(^`\l-h2 ^{|u2 ^="l ` +qVS9(*/~RMCNK֠2;M"*0*[Ӕ$ ]k:fN:7 ->-pҐzZ>2o@ ~hk(-:BӌԂ< :qRr'ȡ|1aX( 3 eluh` +gT +RgH!4"] "4A`yFi5$ kOUL(Em*Qu#A)Ħ1͹tAˢQC% T@bM WK +J +QLvRx8624>̜o©Ty3<מ*~GϹ } A >cnIܥ=:֤?jT@{?"4;툇2|Mř0u^0-3%@|ժҨ F&Λ5Y.ڊ}0j'Ma5+f.ǭ[eRfckjk{J&rHYgܿ-ꑌ؏(ږV68<?A]/b] tv1(Jeȭg$;eJHr8FȆ% \m0BE21k +t'k43œ6aLOH\+_Sx]-=#F/6VZ7 'FU~}?ۇ[T*bIw!yw3=ZŐ9D^ڪMy_^pݺbwJ,'b'ăS=>'@ft ]r^xkڕZgKz帹SZ!}.9̣ΙS9uwkٕMY yRj&5Í^RO8Ն ²VZճ;%g2gЩ|RMpR?DFeLׅQz7@@q>b~qDG7u,ZA|s T@%=]#TQ{٨yL_w WF)ǡA*YL6 +P` i+P=o4s&|3 +_KʌsY{Hb0W7~@kFv/#`pCJւRa3*2{dpLYɸnSZk'RvtMޚX"Anhch0<5Q ۞^\rNz"Ljѕor˪D[7{[fwsиy9^ɨժﰧ+Q!jv5E +=3fMG#dq'tZ*3c3tJX2<:5GQiK10<B$a l)-@ž8^g1F*`)^߂z:Q@=0j(xsI T>] ~r ^LJbG7cˁ"jT"_(HMZvlt`߳nյ|2w %$10v[xbR "63 f;H)_$uц3 +endstream +endobj +478 0 obj +<< +/R7 305 0 R +>> +endobj +479 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +480 0 obj +<< +/Filter /FlateDecode +/Length 3196 +>> +stream +Gxc!7Do/5X2X$77G\k)ݙ& j<Ӎm$/AiWض2EADsꧮ9soę(#*D]"GxB cGC$|th1:xòTC9ӟ/DS9R0pTARI`#m:\piII #hxKRkԷ"\xƻ|eA֔1ehznrT ~:\ɩ }G*atnI9ӛB^Ծ&0?s + v +avUIw!BEvCq) * #VgW~(QΣ<(k-3O*O\Shr;!wkM<4FKkOenDgVlcI[ÃSX +@+`U&(:FU]gNqݔQ_S98^l {&:FLۘ,F+@Ѧc0KtA/u<>C_yuE.+n>Jr TrP¨8݀J0MV[+v;d\{ +E;+TCqe4m }蘾DMu"Kn|dN˩y.i⟓G{k1#E%EM5 !Nt #'#[S0EM!H.f#CU7`L$/x&MT+5LH`PD0K6 įD"(v>O%m bANOvk,U&XRN;ڈ$zEhz{/d] @t JӤqfA1  P,K +N&#(g8>V2 +d@htMׇ\XoU\oȔS+9 P@SR_,?Ǖt926Fw`CXҺD#Y"{Q/ eR{(EFB,Q6O+?.>i,Agh#`q+2@_׶ 7|/[%m;$@̡oX M5K5wtT6ۻHgh U,Hd$ZI`!Ҧ|*.e=woY +G:$K lϨ/7w 1FyNOICu䏬थG#I0|0q[_FG7R6ߴ@YKժ˶,pBd6ET~Xn:_$#>|n!C*j/bGYBxPy^fF4J>sޞ T%+pձ +endstream +endobj +481 0 obj +<< +/R7 305 0 R +>> +endobj +482 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +483 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 115.137 452.182 118.203 460.289 ] +/Border [ 0 0 0 ] +/Dest [ 22 0 R /XYZ 75.52 62.68 null ] +/Subtype /Link +>> +endobj +484 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 48.774 234.257 58.908 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <58f6aab858b1cc85c3324e3ef85452d72129b7cdbb7a1f749f619d8de653f6fdd079a34467f0f18d6d0d0d95f9170c15c9f734e1f39f7064eb3f1c93fcf41de4b5ff5aa2cd1418ae0af3> +>> +/Subtype /Link +>> +endobj +485 0 obj +<< +/Filter /FlateDecode +/Length 3206 +>> +stream +1C*nǜ]u.'pُi_Vk ,}QlV߈yMĬ/:Π{KzhDZD/d_ OT}mV܉ @ 'p]LW&hWT(!Ro +\W^jDsbGPs gpD{SX ؊rsǢJQX ) TPLU6;A~6ZrbE1)ʅ\0uEZQyJFV#nd{cZߗ-BQ×no*03V+;ogRNl_GpZyЇ&IcxY(k샋%Ѩ5P(\\Hi |n`wʄFvGxf9\8{pM"&xAvVU[Hѝ=)"CmDnAB#iOpbқlG^h湪hr -׿(]~./UhB ~&Dg䚮'}X!)/z'#p z~q79.dl+YSq86=q)Q#=ut$ Z0T?fE5U?:rZ57s&8|9|},FBRc#' {-Q9x)Al'qp?_VL/NqCv, + r<瞓]s<\@NB}z6摁wc匤n"fѪj[,\N/'Q(@"cj8R<:%:_X} pQ%y +a C"vEcHv(p:Z1ƒ xBa6n)k!yG,j\9 u6O" 5e'+P]MB6 7XFSg^}VO@b2A3k*}?nEoN2äԠp[uXh!̺/bTr3}cҳcbZ#K9\51rfza2-H[cG9؁8Zs@tf.ztvP/0гS{gƛ3ݱ*^ˍdFU;te[!s-\x9 + 0h/Q|_S!hN%zzQU!}^@fT>=ΩQ?@xc_-e_[ u@i6DH_S5۬ k\gK8aUY`n[)?\r2BU(3cQ->_qڏ=YvH2;J '+FN!Zkf&gsG:;EZHRzf7b-S`Hvh?+Ӓ +)P̨%zͰ zYKA.OLOLښ4Wv;[ +"~ :2 ;2Y+@0IQ3Rƴjٯ,,.&aИ+Rlx5'A.\s3^']7Iy +gKVԣztZi?B$/|sXݠ][a~u)=@ 3|c?50! )nu BWm!wޮ] `bz7DqGfm1HD&[8vGϐ]P"R)f"X@ޓω?4>T,`)glי +d=w#b6`ow"D;ۺ~NbL<}i<0n4왇\AVxy9t(-PNs3,Ru- Obqv{jgl3#>"f_ڀlF래*^@V:/;{?JV*+xgٛ#f*pb&;./ zE67~~nR2a\J TG#GK+fg_y&\ 4硍0 + +9E. ܷ['-BW +endstream +endobj +486 0 obj +<< +/R7 305 0 R +>> +endobj +487 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +488 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 204.849 407.62 208.834 415.727 ] +/Border [ 0 0 0 ] +/Dest [ 23 0 R /XYZ 75.52 91.76 null ] +/Subtype /Link +>> +endobj +489 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 147.519 171.387 151.456 179.494 ] +/Border [ 0 0 0 ] +/Dest [ 23 0 R /XYZ 75.52 79.8 null ] +/Subtype /Link +>> +endobj +490 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 77.848 175.314 87.981 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +491 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 65.893 240.937 76.026 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <4c3ea87c4878fd934291611ac09fa842b8aeff26f765b5d00235e18732999a5768183394bd8c66e021be2883b31ce103cbaf6770a6dae27758a0> +>> +/Subtype /Link +>> +endobj +492 0 obj +<< +/Filter /FlateDecode +/Length 3259 +>> +stream +UWԤfOE\=1m9d',u{ 2IP(=O&82B<<Vֆl&S]k:T'5Z{KR@8po0_H*p;C % +6 7 ctvW'XH-բm%(#Z ;WDx՘4͛uGX'H,W +$- vg޷,d5TTZ"aFg@ZZu! !;y'TyErZOE@%rg1\좑M֡qRcY5؈ #]Wĸt&G`]_ϫ+Љ:ȇs^y"Cޝc)9u$v +oN=Տ"~Vy,1Bimbqa©+`tY(9rKΗ7ԦF {4 Nsrx_i̪kzR +~geдA- +&ȴ_4yȩpyۆtgY$̯guLuLKי)S7OE~f _ywԈ05QCynz*!4OG2B>̷\,&x?5>]Kc ؕilР&&zɲ44F|(qܽL`]6Kj~OH2aEӘKDr +}]WՋyyslVvMV_!kQaXZ[1amU] +2HM"ROE|o8mY'=5&wk2cӴ5I +pت]yCk/2PZgj|ؖ5zTyxLiΈeKAwܥF"?#'ה1f/I\Y'i8j]okε'sSA AO8b ^Z ٯ3kt|n:sT4KW̄aeX}b%T$d& i$Uro(VCG K@?XgA4\tUhNl1ĮGԂLKpaRϴ`SxLI̦B׋hW ɗ  +P]'!:Yq 󃸎v6#r(虁mԁ+)yV)ȓMq +=4;r7ŤtP`D:l-pl3eG4ióBJ?_@h6Ө>z8sɡbnWPBNs.en,Jzթ$ÒNJ0zX;?m?Ij;Ms+` 'ZEdͰD p& Cd5nD=yBfR2T%!Q#q0 +lIw%@[vhᚽw{,U}u$j.~7 avĢ5b=*=X畩/ۮrYlqTK#lo٣bS7vڔfIa# <:.N-;עqDc6Pۅ +Ԏx3}SSs0F8 q"kt9)O$awY!d5E#B +sF ?eKoٴlh}1Vjw8A 1}]!U_C5iEvE#DFyOT{yVE' =$˜%ۢ)ns!fرf;9`x|F-['Ӷ5K5[w"kgG9 %q*ٮ7ttDy +趪ǿ-}[: ݊ZPU9o淃FT6wtNgJVt9I޵6EkLF]rkُ5lp,+=wGslV/lGh;rP`-."5!7Uigo&\_˫m#Ab22j݆}ednֵYBȴ|gm)=k/1SRVTe +xA@8s.8ȃ}?v6khU!٪nq`ƚA|i#m%1QzyK$##r/7O8xnN>W8N ,IF$DhES~4|P1w[yR'9~RۚiD+=xf΃iɗJN!u\Ci$.uQo¡La#oc~AE::^& _%2 wZnC +a癘:L"{[mgX\uHrή +endstream +endobj +493 0 obj +<< +/R7 305 0 R +>> +endobj +494 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +495 0 obj +<< +/Filter /FlateDecode +/Length 3283 +>> +stream +XۮOw%}͕B$k@'Tgȼcw 4M  27_M}_yXe |Y/-ލj 4!P|Rj"SdHZ.g,d=eҒXa2`ᱏ:Kr7MGrz0O[M#AKd¡'Jv` }ByW4c,sܠYUܮ#7'~$+;qWSDĖ;dCٽg5ߺr\f/ 58]4޶B +5qqTZ!nl!5>6=>j^^k:4-~|qܠ`y~b3ӌ+^$Ƥ${;߳ +$Vc 57IHەu=1̪y-gHbݨ&FG_꺙ߣGM<_[b`KVNҺ4صGַTκ')U#hF16Hq NglҤ=fO~6{A'@\w +Go*7. oPK˅(Yڱdk +3Xk]Ry/w@q3y!&A*3Bw[ɫO8ORr5iQy3X+ +?|x{sB*yZȽ;WT8ȡ +[`HL%D;4&L 2) ofPƶsD"3σ!1taM͟G?%3>rԡ#u0!S Xz"#^Ms.ޛo:P+H4kԆq\\q֖*t/ՠ$`rAڜ4L\dr-5X2} 5n$|;x-~ +)T W$T !M} dSs {VI rrȖeK9zCi-|@o~1[>R WcFt PƊXb~)#$a9<$*/Y' >Tٕ14(ʔ9˱`).LY xV8-ٻA]Ih}P2ybDnYDӇl@Eњ؟Wy!O5jLeII~I:3ŝVsw݁[z4S faYe w Aٺ|^oHivE2,i֦:Hym41%#h#.\5j;N~ +t66n <:Q,(N8tUڻ|S3 8.[B.+f' t3XO k| J?Fa%g7+faE WFغ1T[s Uy5VhD8W#v eد1Xm@DQC!hq#aZjǰe:8Ι$ijWcVƁ2NP(F>zenwn_8Ĵg'u`'agK}V"SM9<ޒ!>"e<byGuD{MsomW ?(?8u'ÿn·{l漨;As$( Qxxc/Xufx{䒅l7L8ugT2Ui u) s+uڏ/걻-hBz+z=/ Np2FxTZX)!n` #.iZQYyLOtȶ)|;՟WץӂCyOph9"L#W#= 'SNteќi~[4^śp@fh!;j~85<\Ġ֣TrEA×&'U9{ż%28SNV%mYe_Eh lspЗ5/z Kp>;%Y|FKe^Yfu |r = GD.3<M% 5).馝2\\1$.uB( ;!*3]r.s3QDZL4i +}Fhԍ~44(IZԾaoxAU`]|hEIGrpoܶ碣EzӕB R0gx)9"ӭAXO _$-ϧ=S= \#Nh Xm]PBE3PК=}5\`TS㊼u#tߎ2|`'-VP@u~H;{ѻ]Lu;_Tl +ݷ#yLhkdlJvIK!PY)#zFuMOzk +Rs eRŔg@J +r g;S<V6cz<.5?d;2qB@ݫjCuRW!J [>T`*i +Qz>ל.zC("(Bں';ċ)z7Ի+@r7 +d^LT +! cm,׉n!r'?xwOU17oZ8 +endstream +endobj +496 0 obj +<< +/R7 305 0 R +>> +endobj +497 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +498 0 obj +<< +/Filter /FlateDecode +/Length 3364 +>> +stream +PT%wҌuQ?c!9CKI4wWP5xž2N=6B >.f0m-;7%׼(r{bl+=@O4"bo94=˩`yee|b,w>h驹6SnںU~!ĺ)L=QPpoaZQ͂N5p^)ƅQkyXF'~gGaAǤZKx޻;_0&poUhp0GC{tMvzt b~'gfVE0e +W~u?eʀXdoVOC[)dGRQ¡oPF @?V%ơ vTMK#PyT$Us `PW&$@([1F&C45TlA$Q<4m:-&9f89:n֢yր:.6՘ٴX_j9_'@K0pkܽqaQnYn>:MϚf?ʵ7?eDbzIj%91G.gKϷh |'*m]Q-/¼N$A= bᙜAQz"[GZj[d|G;(OVprO&?@X>q̤Yiz.<Ȁ/kஹi3zJu P ްa>LJ|j 4aDk+OCڂ[}3H-1v+ +J`?Y3 +A阴 eKZ 6.w% ւ=/2ǂfB[UJSN^?Ymld#^YZwΫ8$Ϩ<(6V_f4 !8Q)"5Rcyb,ijɍ%?S129gP2 fBfS~Й2Nx.Vfܲ9̢s˩6v(BUjѺxQaJ 5xP q"<[ _Jԗ +;60r\I7pjƠfҝ(h^ ;U WtZkߣ5J<[b>'+xvkH('w` >o2W HC@#k-L4y/~W5ӝt[\PEs|ܥ%w^I.MiȠMA:X<w,')>a4RJbr304PijT#M\刂B(I +Ǎȳ%HۺbI}(ȷ#%&K{*ˇxQ*NJTu@<ÉqxPA' a(+ȁ>YiPسB> 5;Ob2J3VnBRBM?nާb8.dLt JD [Quh' +߉<9Zm^a^KzF8jLT&ub ٝ|p KИ;tf@-d<3*pxpqmnDpc82ΎG"z +n'/cg͹|xabiޒTfOM!Fr>^! d&gv5h:R>_$ǸxE:;67o[t'Or7g#Q._[o7"/6@ou^+SSpB +NSk8{Mk]aG DbP_S/)Ŕ DWjwTM;U8H=-3B Q +`N?UaE{3$O?eTzѹ}m4o +@qU!|4B%31]lBMD/I~¿u"p.&@'|P&A]pt!=2^`80_07 TܓK'PD C u_i W=Zp#6%8< e.[*\ S$~51K"QT5Ǽ)V<1z3d^rITX-t 2#/GMGDj{+&ɹ>) Ѽ31<(B:q'xZbpLDH8.፝qykp& K!{ѝ=Y@Ikmj-E]M\&dG+;-/{A%.N4vl_C8XW{AnVlC%q8I,^樗Y)At^3y;]SxSdiG:Q6QYoW1W6zw3SKRG^X=_RR,z׈)e\=TJ,zpe# ٴ'A[Zڞ[> +endobj +500 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +501 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 297.836 178.863 301.867 186.97 ] +/Border [ 0 0 0 ] +/Dest [ 26 0 R /XYZ 75.52 99.23 null ] +/Subtype /Link +>> +endobj +502 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 118.986 73.368 308.905 83.502 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +503 0 obj +<< +/Filter /FlateDecode +/Length 3420 +>> +stream +6MX=*ϟ!e1'BE6qd) 8h==YTE8j/Kps\=p)6niKUq0-;6ݚ5ԓ104,]%TK [<5{JJ5{)$2p3yAu-&NE;bь ^8Hw9l_V7$`i09@]:CQV[:7HֈXhR;'[]z_Cc + @MUN'r.Ah>SzGΩA"Yn7 +ikOE0ΆN4 +a3aHo. Ktinz ɟHq ߒmøޯc>iΖ߸ aaADnG6?'&xn7et?y@a8F, ~qo'/%s*ˣR3%)I:j9uS۔kgzy3^*6E;`Ik֚fJsp@b]=Ό|I2m.~辘4T^@|,g`q0FLoccU&wK[R8xFZd:寜<~1G~tcg? wo ԍ8U+!p1&쵳+ 1hXx=6@K}V,$^մbk>T͚VF.aF^H0/FUt<׿-5DIKXd\2x7]FAqݘʘ`qT;<70D68B:cHV'n~ӓVsywABJLnN&^;"ur^eoq.Ӳ'q/o"x"A٧`QU{< bOc J<(!d+o37#Cy5|QYؾdL,.JK_E@L`YDNтׁYQjQ{g3d 1x?G};pi,;y!u%L6;&>c6bRc"qcYq3MSl0E y7E[e>\ NR\'e#$6j~p6K?i=jH둑"\}~Q-ZWU:1Vc9O.>+O^"|[xEhΎ#r.+} k5xU98.xXE璼(W]vsphH S#6ҾjKԊ[8c + '^exoMcͻ_n~THpv*bƭXRţ!ң33"7%;L ~VQBϰt8v̧ 8m20Uwj]2ZF݀ +jP2= ^Ui=!x@zQoT38U0G[BCv\R2?=l)S;Z!1F#+Dqtp$>]i cYZ$ =g1<=3͚x~iz\sH3yv47+ptA:puۙ.jC`iiVMl趝 aP3(1^Hn^`_m$S+< N!.?*R\.@[؋IE7;q*m51d?T>S-JpE?^9eU4d@d":{*kxq؏Tة$;=$~/Yo,#u0m P^OЖځ8=볒הI>J}H>WSA6WZOm2Xܨ]3U[B9Øl~K,oYNP ,iXނSKjnDp2}_䦺m=₷vւY l'Z!k_wB#SXB}B|qyfիo فBԯGUf(0Ї& Ȝ%/ՖstdGj.J!~Y꼡+v38Qv؍0 +hBHn6lw'UӣgV0?K";ݺ{]\5/|$=$'dMV1XBARY|†`!'4ioEB n΅ڋ!A|@6y}g,<7L5)+2Vԥc<)Ŋ6jTw jW,w*qxB˝:R ")H +!E\V/i [r ArЯXݪnO,ڴ_):X@;`fZWv@4pE8(jP;svRZ`"' +endstream +endobj +504 0 obj +<< +/R7 305 0 R +>> +endobj +505 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +506 0 obj +<< +/Filter /FlateDecode +/Length 1614 +>> +stream +9xzPj]$?jHYP>O"*3?;Z1rx}IjA!<λHeDeGJ7/s3$+$d\d܈n#(@1Ȅ`hQW4+I5 C#tpli +$21v +Wǂ(Wcphr.ūΧ;V]Xk{ N7Wy+PS'6Cr+p =&xMfle *a;""}e*q":N#k(pvT^@&NzӫBǾn))͍q|ذ΄4Խ+/A:74R5O;@)N$m63!Zfy( AkWʼ'Q`^#=p?\p%3 Wp@X'j\xK.*|~<}uqp àW,-*p Cݍ$eWpA&b཯#`HO̯ MVT! uuOϗՉ!J6ɏ8?haV~q Bn$t xPk_0|Yg7F;!\\#+rD[ +!irխFt=6W,Txv&rWg9ǜ +!Wz *Vv2Ag\2i8'2_ͼ8wd i tfp"A [ g;\{esaٽʊJbk(ղdF[湛0,Ch2} +4oSɡ/kdqޝCKэ@"~s +Ȏ?S_ɡ\e)6FYӛsaپ ,VM4 C[ֳ?;oXiFx7$g6B[F'{S<݉ +endstream +endobj +507 0 obj +<< +/R7 305 0 R +>> +endobj +508 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +509 0 obj +<< +/Filter /FlateDecode +/Length 2771 +>> +stream +J-暈M]UI0N+ J]fc +pK7G0E-]oQs+ƗuM d}@` yWuecۧcgū<"}O+y"rĸwݮVڂTβ'NUg(2bn~@ÊU4 {d7ܥ1!hMUtAQ@̊E;CV|AW-{8@U48F:$DM龏iqQa(b;uXT[(SIדKR *һ&%.K #5tbvd?KA`K't7PH#I# g^T{G.hf̗EFtkD6'_eW"9.7= +l-}TkTG)~/3{VC?2J)pGs'p]],zv*SX#㙡lfiK%oJTƕl5/'FXs :qLl]nX`SQֺ{ +'%rA[jAv5{QNXd>4|CjHXEfi\*Aٿ ,5-GI$Kn$?[I bTYA7ء뤏12 Fna WخQgff=dfA&_O%/+kFЛΘT_ܕWF0i]_\Bs^jp:z:IP1 L/|:lCx7u Xkre~ ');&rYJ'Ag/#>qyh Wu#w@Lw0yJLќ#`r2ǛA1rV^y Lfj Y9a H)s XHQIg)=*e0 gcV'Bb(e!qxL[n S(.Zg7$W7uRx&6] } 6JcU[z f|2[5qjݟ4~%%"]'YVwɞ".n"! aSA!k*wxZpI)M}3¨\B`O(|)R.Q2-V~iW"vU J=M^?v, +=4<_̞Ngq8=͛fc"N8t\+=.Z~~U֜^2QtZϻ +/;o$Q#dn@ X}^쟺`6*F!% Fʴٖ2:#UP<^YެXC +l\ψtϷZpJEbrFjo ~a.W]ȤD\M-Ӽg#$,n)tO\7pzj]FFqJ_ +_G5j .tÐ_Kq^.z|yaeð'YzZLXXjۣdVǣo7$jxb,wp͚p09-G)<%؇XulV3q5;MפCD(PPbHqrq;M!\# ;6WZjIfI j6L61/41ecnpҸ_Sӏ$mmw⮼f*,J9?.L5xM oB$#nb O0[{רO!fڿjK'Ac?*YNTBp'\s2}ҡkYyʩf>l4HyQ}kqYD}mG;AjMl˂2O|?, -H A%m-$_xm#t$e2n*~Q9EF1ı|/ TD9I;V8bt/4ƉRsB]kpH1u;uawknF\d{gL )PA蜀}'TrGDyɪϰNWd +endstream +endobj +510 0 obj +<< +/R7 305 0 R +>> +endobj +511 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +512 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 183.074 178.769 186.844 186.876 ] +/Border [ 0 0 0 ] +/Dest [ 29 0 R /XYZ 75.52 82.97 null ] +/Subtype /Link +>> +endobj +513 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 69.056 257.028 79.19 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +514 0 obj +<< +/Filter /FlateDecode +/Length 2726 +>> +stream +|egdґ; ?*(50;n8K;To ftb +K9GZ\&a`=F c>:'M)&q,,]K2!` +?Qg`X ȃqo7C0}EN-W%!cԻ'$;ïh0lx +cvCzYF656?gzST`X~ + VjM8co9! +̊ %'Xo~bg6/# Dw=ʠ"Nz{]$=spͅ|x7P.ÈB4(HԷ\4q5: @c~kk7~3 _D5}g} k->OL9@"dg٧Kb4s&7Rď1G~x8eoW9Z "}qfY #Ji-p hYm4u GW䆽i$s7pB.4k Tj(~a `rRol]7Q߱|ᐾ#CqSgc2g^[0`%F5jF,'QiVA_g د(7JQ-t-bϰXְl5UT!+VIvԽ gK-MҊe$ײϤH<~u,Tx$x= 늦RNLI%UAr+|1/!|df*}P,NΊ gaNڼ^GŜ +647.ZjS\\b yڏ 2>I75圢x2!*byjk+5,䥭CQƻĸBy3 k\{]X*dihX = .݃,[ﶈ 3:ez?0OyR( "ߓF>TswOڍHSqϕ >g> n`IOb; Pӈ?A{LʜJ[ WæW D )s-ݴs QBrۆj뤵Day 8 gЋ-\8[ _uYbن© +bSkӕDBg HfZ`%ձ&侵@ !P HnYRS%}N<1 G$4lP>f[>M>M(B9iu. aL!sXƆǦfC:,@XeI9jďsJ{ţRdɎR33 ̲ HM hl-C /Yƽ%zU3)C%}?3q]X(Fbnzzq[6an]kH@J[pPk5>)/ΒUY~l<'#=0-`XAAGQ?" ?`}EϹ\Ww6[՗t{'7\ kOD ++ :~g0 P?V%ǐXG^KJԻSd'f[[KڿE*r, ғ ?36g6XXS 0{4Av8@)Y"J/pHy^HugkR ] ,ԣn$ dw2M{kN5 7[Y:5=}5Q#4?p\~ S@ˈm1eĵ#[NDh<>W86j,[<&)a3u5 5%L84\yu)Mcj_kݘ|BU 'U ?`>rY.ĐDdOu,jUr!]nLjhBZ=e@ޔJej)gn\x0lB}) u|JTy cT@3YeqA,Y0{͍bN/$:A(17[N^>)ĎIydRj滖x' 4 RIYq?ɹF'4`pXJYiӘgOiry?wq1Ӛ˼Ýϋ\ljzSACht\U}+G %|9to$a[lj8T2^KNCm K +endstream +endobj +515 0 obj +<< +/R7 305 0 R +>> +endobj +516 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +517 0 obj +<< +/Filter /FlateDecode +/Length 2696 +>> +stream +Րe{ FOO)! o(CvKk*3/ӝ%jZ O6CE]:tXZ1αVYr\E5,Aql[{*+4/TQCCuY!UTLk%sEp}6V|&tQ-ηEj0r,x]VJ@u8/{'y`Z)>UX-"kY iw~g`E?TzRĢ)4DE'67~藉d.kplhȤ)PjCQ|ᇌGo+pZX1v[`'+_L)M=E7a`"du-r0QoXVlDK.NX\cE/?6OP9[P\8ǖ&a{ k=,t%aCc!{T\.>srtzvmZXc,6 +rP,7+1,Q*]sk#= ` @5ov SjA0Is%` k}Ts `v*,מV5w܆0vf i/;ҷQ+Mi^dj ?ObJ=tm٠G~c 1.}e]Xµ^YᲿ (}Қ}z둂:pD|"zT90\`F9qI/f@ti]l1ߙUByl.|K%^WT`[#?BZ OvX[R hsPlhƞ F萂m&z4 ̍0_m@ +L=N٦Bȋ]eRȰC9 +_rM;: kӷ{+7\jgou'xϓ[Xܕ!+98)^2na-Lm;^`-> !y +t+|?\ImRFDުFK~|4!lP[Z$L;K#J"}u7喁Êt*̚ v!iDD]+ąfw}~u3RP/ȸ]3 49ͽ->eۗ5E]@LK8:%&dK0A @19%kcX**ʾʃa{/Ds iї{m%75FH 3N(uVG/ qꝡ=2*ŇƎ*F~"eܷ˳ؓF̂ΧͰ5y(L£az}`Pw0K|G X G~&7kpN#e}kHΈYHdg^:]5E 1 jB ^U&.D002Ȃ4?1v]T)07̸EL|UE7HE@_$K`'TB/n͢+NP FOeop)@%!gm6L\|^g^{짏bVu'N6;Tʍ;H8}Q+6KeC"ykM-cHOƴ[u@LMmD_ ?_NאD&%z#Q h8k]ElKSo=Ye8x$Q`$m8#M,P۳]A%'aq3L*+3b/Eީ,;~ #el]dX3BvnM-nͻnx*dP6ļ3W6n7P|so4__ +ܫjTf P|N?FƂZIgaAzp37D4 +vRZba9R6PKZPc~A(D&lص4#Hnr 3zɍx̚`Q) 8̾S#P=:~Q"zTsm웴~k|y8.<.Ʀwu%ѫbjߕ?I ƃ6%XQ/ġjp|/:;sD"MLHal 4?Ӌ^8r0#5m?86)tĞx9d;Q*K]Z싑RJBLz~$V 6]lt>~Iʮ%?M@*>gɦP=H 1+<3VlT!!X7qk65q{n.'+wwk:' W$@ZV~aCA6@; j.Mj?lubY"Q +endstream +endobj +518 0 obj +<< +/R7 305 0 R +>> +endobj +519 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +520 0 obj +<< +/Filter /FlateDecode +/Length 1459 +>> +stream +UpmH3S\J$%_%E4xX(\J3xN!,_r2GHPmoxM%I?#i!LBYIߋV=>!j#X[O'n#6wB݅ ԵObJj.cNQF>Fx5XIsˆRH<ǪW)BÒ(0t`Rr?$QwŹJg}C>͂w08rхشT'VaFsDl}RtU4rflXݞ}y83w-.ΈA;_ܐB<:b@OǑث7!WTSXIO1氝ÕY~HiR|fibsBp`pRͧ >KSaorl>jF`pUs5Y-$K&C^𭲉3YZ-I[]B 䤱JaV[S^qt.]s%CG1ǘ1 +'nzVN<|8;t1jU.4IkU})>M@~ `WhR 핬cm;&'UQmK4U)q75WaX h{7uLǭNT:9 +|[lJ%^][EQT4}8&sy./_낀Q0ҼΣVG<Azc?7l;{-N>45b k 60oOtQJеcJ}6vy{$OO~9)sZmPdXxܪp Ot^ +{Aʑ~Ps2iYJY"X*iv߹rU_@ݦݷŢ2RASYXZ:ݔXq렊XmJjQbwț9֏'#,+e\|x i4tOj|`#Č66h {wXzW-ϓ8水ϏϪͰIE1LIC%k ӗ\- Ahӝ\Gɹ ->A2L<;M#Bk)J^ȩ$猢. +endstream +endobj +521 0 obj +<< +/R7 305 0 R +>> +endobj +522 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +523 0 obj +<< +/Filter /FlateDecode +/Length 2891 +>> +stream +GNnUD9 K$ SG6ߓ eyu1v&17p Ţwysjٚ6]^&,8•?,ύT}e?_1qm$]aT[t:MM[:YUoXݿ%R=L}u}L #"S&/~kdv'ϼ6wd9dJС8ⅇsG3gEڐyBzϫ?9}iP5AP;߇srR}DUS;[yğJQ˘d!f<)KV .v(3C}ų‚D7zglmj>U,DZ9, +WQEL!~NiprNv0Q,}2oug:HIVPK> moi{@s\3} +1#T r-t̜/HLM"KL π^&v+ZYSdleΎK$1 .n^F6g_+ 8eHk2Y\Aenb(Pҝ>y_זM@PaVL#U;nm}.ɻ/Wa) ^ϴd +l#a#=}L +I_-_{Ws?j0 F66s۟_QY5xUm6*cﯲ5NA%ޛV~Pu)GhR&۪nJ~{,{)_|GSe\74~~0uAvVR׼VtB(z)'ش"Ơ`6U<{Oz~C4{ۛ(aXYWhQ߂̘XF|S*=͓1!D`)GsS5.G-Z"il?͝~NL'~R +ex͜/*g⯲T|T7P+GV!_<&\LmX.Fdk~=sY u& "+l. 'f`A(o_a,sO'EpwD H_QӳEtMN܁3M"Ȍ{uF81$+mkdAØĤYނ8JNa.ҎR\ԘΣ+,s#\縧L8`kpVBESc ̈65t}fxULPX6ZFb@kt39*)8ۑeG-J«K;WEQ :9 "zK%v_X[+ X) ۉ uzuO.7Vmȫځl!;ndaqmM/JTo>2aSR" #@DO '* (Y!û;2Bv,XU}ISGixD;` QVW9evo.3$6Eszd-?HY:+rVk ϙty-hGdCeWAFR h +endstream +endobj +524 0 obj +<< +/R7 305 0 R +>> +endobj +525 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +526 0 obj +<< +/Filter /FlateDecode +/Length 2624 +>> +stream +J^^Hv^,:4Z$(~E{ _w~h$w푰*fTsg R:d{W-{yknfKv F՝_Xk?Lhfŀ NtG]/joQ>`|IcDY̴i3'J| =KxQ7﯀*!R,BXA3d29oytzWNIms76v*eMx +!,V/m߭ƟG}6i4pH^ +t/u!΁xrض *E8Ìg4@q-boa"| }3D) bĹhdE1h!ëdW&#M4o!lb4Ao(୺AMTҪwGcŀƈfoxf`@U!|wNnWVyN{=et:0|7dlΫcl2/qBelVID: +a:K߃Gb轑C?t(ب:!~4W9~ +Z']7E NMp?Վ1}]u13}/B31vM|M}ij*^;/LKl~ n0*XOd(1_z%,WkQn8l4]vh+ϚWR-ͶajzMu\SY2k$./0-v;lCS(AMGHo%e=e MаzroH򏵬ۜd7%?^xT[pDl_ON7p  ;̍֠ӨF#)y|ۍq W mEkg[ґ ߮ a .1SeХNNKiٿ 8/ Γ;XBvt` GUnȸ ~G3[3Ae!i.sM\ԆGlCFDcmG eDh>xJXDkw|i;\$k7h $hw3ssjưuMPxZ_W7S3#5h#2FJ1w u|{nɖ@`(Ooq9xKλ`kV &Щ0LaD)=d˵BZlFCۍB;LJ^rJ `(yTckB1RL8>.]I(N5l9) lYn0.*kFM}t60<2&B:j5>_$SKts\\ݻt:j[b ԛSY]rYTґ&gW x6Qe"N<ƛg?: C9 +CP.LU.@Ƙ %z&$\MfN#Hej)_jEMuHZ3T24 P6"Fj?D17H<6͵[,npԶw4%l_iT% +M@IH[< =# 5dt2Âi,"a^ Z_En#'r6+N/MEG׀slp^uU~mLgo y_cб{>lxYIPO7j=+<nW=JN;/i`@ KRjYTbݿaJ>X*6j݌*a+ޱU~s^M[ȅ|I`~7R +!~l + ]JX[o&a 8:29? +شZğ%045U>r諸Ƭ!-h_ѡzI?Cn`<"o*Bz6bif21X-6aĈgQ6mG%hmQ[n.[^y+= lF->ZA1k4OX˹U-[ߚmTl-at$:;#(<)wLI].rv3ە-}mx|*-E2mH1A2wh,bc;/PdC~h('ϯî{'|]oz-G.,,vdg]yq +zNJ )%eJhZptGqf]U?2&F +endstream +endobj +527 0 obj +<< +/R7 305 0 R +>> +endobj +528 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +529 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 370.856 501.307 374.894 509.414 ] +/Border [ 0 0 0 ] +/Dest [ 34 0 R /XYZ 75.52 79.7 null ] +/Subtype /Link +>> +endobj +530 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 65.794 285.901 75.928 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +531 0 obj +<< +/Filter /FlateDecode +/Length 3174 +>> +stream + 7I_˭ʬÏ YS"9h:nZgT7IBSn_wu";{DV.y1CXqLHÞ|6A| +aoa+TsҩHl`/ɥ_Qێuo33-2K&OF6т%H #\4ͱ";V?,B)a궐w1g{HayuyM4dDX1F&Z͸)pȭCy&lia^EԈdt{ye%nf iMr=[;R&حɇX5=W+^˗YwEԜ5٥>O P!׶ eMl/k/\[',u06kgrH$`x-5WowlE?n{)}yNTX.fO!50^!ـ7 AcILNb={KO"5ˇpq`6}ޚoN Xh𴕺 o-lE W*#:t6ƺMZz'ά~AN(Fpf'+ByZ8Gsk% +:;ź)ރxcyCBm },:%Jy.i{# fn:u3 dz;<9 Lv?9 '[ؿo'AzO{.T_*dű{\ Kys2Ђf"+CUj_ +ZBDdo$TopJ#M8YMPYZÇ-&K@eФ1uOpռ@J9H۱ .T?ǭ/ZdGqqF ɬL-<( b؆_8񀇮2M٪Uuq7Lg.Jeit\h7uu0fi`B EkY"?/;;vZzH{HÞ0u:W83%ÇL×^_DA%[d% /!?id9ݹ%5 >9 /,TMcȌ-dR)T&o4?w +a%,LEt+=67p5aO1dz6S!_ldɸ_0Fɀ#DE t~iT _T^.F^ Df{GRe6Hm6LXBPЙ>wsu5ft::)o ]/!d#IIY(3u-a4bDv%oWC1X: :b }WSY9;{8ŒJA ؜[?|h0C 2F>Ev +^*~XX˺;ՠ%u$CuDNhhAمL6`hXip_0U2wHXŲbG8?} +v<誄  H_AXc@6Zō67tjJHhoN/es#H 2O8Ee=q~E3y٩WTlq\8E3h>|uCGl뷄/ښŖyf1O h;.:cx㹙kM,,|  zu١Jܲ·^ $L/jij-)q: eC&x%^b=.S-j(}8 >Oc呚"u/n}& "tÂ[wSPH%LE}C+LF PDS3.8DDPm&퀣UR+zA{t3edWK\MIYV/aHX =<(OHbN*̗.-EQ+<$59\ Wq1b֙޼* K? hRN{紦], P3|rW$Z8s{"u u"4,ߢX(Ĕea`6[BMBReB+xZklPPt) +ϓfA`h +';]7n?iKu}KayD:Îm~Tj~_y+޳FR_⠮ | oq5byg^#Hޞآf/5 b(d>Z +endstream +endobj +532 0 obj +<< +/R7 305 0 R +>> +endobj +533 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +534 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 275.943 410.902 279.528 419.009 ] +/Border [ 0 0 0 ] +/Dest [ 35 0 R /XYZ 75.52 66.75 null ] +/Subtype /Link +>> +endobj +535 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 52.839 188.975 62.973 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <51044692c4818b49feac05852690778e878b1067718858dbc8afbb43383d7611978d29ac492d7072867a577cf61dc6037b> +>> +/Subtype /Link +>> +endobj +536 0 obj +<< +/Filter /FlateDecode +/Length 3043 +>> +stream +8~(};\;YI +aq AVJ Tx@[4Y%/׮ǐSkiҐ=TøN⡿pcwSh2mmaDXo\5(8,"3bJ\R y]LX2{ |iw>zYJjR.̑ tԹqXU1{D&V^ xҵۛH}fT[IuoVLa 2s!&[d;7ꭺ/_75Dz }L`m'}-5n",)"wYQP:s^50?S^MKhײoyS:RW_(IY& ɗwlkX0Цaj=̛/!YWƪEⲳ@(rN2?&z4+1APNAزkֶwT,=" ۍLR!N|'uDс7/$Kܢ=egr_5$ kV3;{5dDl2rZDUʃ}/5thcdYϰc jB3LC7fv][yeQo{ jS&53F݋92aSZۣQ["|LdߍLta6t(ժv1 +ӊiɶ1ch64 +.ŌEq]j˸F[.KƾS~"1X,f^X0߽-(aUn X%&GؽQUyEp2(yS`JtxGh)[RD#qge% 0sA=P`@ٗpAEۘ-8/<0cN>=_(Eo[𻧛уh6ڌ~rGM<}rikzd 3SZ8 +N +d Ei'"e,D flT9Kg;Ѱ>-$NfXw7<~N.JꭕSxv^eN+kjZ"g`9vT@Y)B'1náv%]y t+'Qj|Ff>0"QrH- OO p)-DJO%4/Q&*[SѸF|/0ޣHL?Ȟc[Px.U͋z[*蘍P6N3q@O8 )|5D8ԥlsr;R¸.f,a/!5?W5Us*?y1p2$E,67= +YZ|K:'g2#o>6 r;3-rQ(zn7z7y['Erbt'뀩,ߋiiʤxN"nj`-dPd)L;pEAuW-XИLƁZ|pXYcȘPP:ػV0fn\NKKW$]u{I_D]꾦 ~0[ ߵT`A().>wc 2ҪlN?$j)SJk]sOΦt g#EN%#vz?4dNЏS,Q䯎NDOա|"z)14d(]Xf fEokrr5H㴑؏e<%SZk0tU|tXH_&wz ´g]y$iB #k!^H<5 gAZBimͩΟm[%ᮛg4sNA(D(o h(_=sC4^#f >={v[Vs~4j6P4XFM%3 r£ +C8iWl!ArK$H98r "9mB ^VT9ܿ })Hv^H黮bL]4;__7hmoMNcOAy>Qc;ElÇ.|YHa~pzsnF^s旣 ^O,^6e&InMs!!l]溶ӟS +endstream +endobj +537 0 obj +<< +/R7 305 0 R +>> +endobj +538 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +539 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 54 381.389 104.199 393.55 ] +/Border [ 0 0 0 ] +/Dest [ 76 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +540 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 127.589 381.389 177.961 393.55 ] +/Border [ 0 0 0 ] +/Dest [ 234 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +541 0 obj +<< +/Filter /FlateDecode +/Length 3076 +>> +stream +cjJ>r>*i*@tA]eX*P[&x`&{GdJP 67e| [4 [E0Qwx<b*'!*b>P{[·&G'p{hfr4Ď0$z)fL`~R˂/!ղ!*nn^8N/Jc\QMu}jU!Жͤ~HVN1g'ONǎa+ '(ʆphrPtװ۲w3;mC1[D $ɞ[+,J'Vt'VDVЍJqG"UݫQSuF0=)*P7F!?o [薹 ZNzaGo&fڹ%DLu[DU݆0K4}Xlԏe.z'f)nS5Pa=̢Pn7 )7.RܨTߚdE1oZ<'KQp28FZ֠7%> YJ[jSvJ@5%M*[h+{"oIngljMޛj_fY|m#8Ah8왳g™gg|bOb+Y!OHx9]%-i8E+eA\QP'DhU*\6CB '0bN8MD:P_wM$L^>OڶL׵<Xp~ f[5?S(ܫYBYtڅN(O7CXyJ|l*i>M<-]˺0 ٵ?Zhق}ڨ78$եIɦY;y^X`F/ȿ0m8v>f:|QN +$B8bycС]b3d)s$|Bsgl*]|Aب`nQDP~,wzӯ,=ʈg\69 !~rZven㩅t@Ykvc668.&qihzr'!`Խ] XvŘ4on@VjT24]+ |^ ĻdF&'Z +FGql$C mA^釯ߚck^N.c𽌐\RJmvM9Z;ܷK.) V;9y ƲE̬M <6[Z& c\jȌRy󻵓~J7g1RLK'gFSpRn&juI4 EdnG$x +s肇F>Om1m.]H# ,#7%AM;:ӂ/.G;*,㖌Fke7 'Wt%vԕH)FYB +Fܱ-ΜK0h' +a*( o.ʻ(g[oЅ+lTP=d _wH9L /hR +a16 ).7xѰ$$Mצ- ReRa8jw8qdV->L37DJ$~~v!Sȣ+Li]JaTdmA F1#j)Dt 7Y-o,(MB'6h4SŃp f Ê9_.ӭ&n.8IIFJlNQ\ 3^IDl@;#ĖՇq/R-\e;U0pô&#‰qI /[Ol H;Vͅ: +O'㤅 ap1F:JsYGer3MFUJ~m=]+f +ercjnwY$U_i-oTI;upY *(#k"dFg +sj T GWk@@Gl.oUuI _'rO)5,\VbROvtyF1,'GW4?`kt'3C8ꗅ#"9^f:hN z ljgjN xR8ℜk.6)3?9Z#(φ|x";:!2rTDk'KUk-c~}kQwpKxd@N&!K FJjυr5j'O)b&➴\vXrqZY%6 bF܆FbJ/ۇX'z/NJȀ*c#&uDh6G] '-?aFFS\oKr>RKz#?F[`e΅q[84}ŋBkFr( VA?Y*f8)hͩeQQdSrJ(kYv+<{>ʈ0^ +ApqI|zjP_ I$e3%i2vö}F㽳{Hc7p^R"p#u't'J'o yX˸D\B~-b Uc\֛!M룾n3}k1J.{5 (+UG:B٢մy@.짅(»N@$;l$e#~Bmlkrgi0x#]y*=s$R (i `c*JQ'eMċ+ +t>0wO +endstream +endobj +542 0 obj +<< +/R7 305 0 R +>> +endobj +543 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +544 0 obj +<< +/Filter /FlateDecode +/Length 2419 +>> +stream +M]:k +uU]uf=p pmFJOXɁMheBo9*`l8feMTj+kmjqݖzm4DJKy1Su$jމ u?I;B y,.ǜ8g=⍈za4[6Ҷ?)OtCP;D +QkWs'AwI4Z] %L= +ӠפCh8< @gxݷ6+8v,XuG6(6:-]4Y#fMt kHَqߵeY7xxg_*L2"}ZDU=;CN#10&} 0qۏgTEͨƣMj$pLt|]HcsZkG55x$*/R z>6Lup*/VxNFمˠCZ٦fbjS!h3=*$'ߛ٬ANorOuV+krݲMR8o6%a;_Hz 62ƪsQ^.nt*G;ÅwP;fPD}?U9?p_.Ҍ낽FhGTAqڏ>DjmQe|:4Դ[áEIM0jRt0MhBl2  T'yVx.@waQn LzQOtTokE+.gx#lvU,=jH/ "fR;=3cQ2o}˱IwWc@0( +\hUp)_cd>o=qHvZr_DK`)voiUC^p9 ]sE10~ 6dB==,jW!/sv½8l[:y +w 8W[O}}4 +: S4EoBq &˕ E%NF?*_0 j|rRzކn]3)ȍwX +5 ~\O1 L~v'*MzJ$16? y"DW>dTv Qgm8tt=2)UY.sõ*ReWۣa\vw6F_kdH%:^^(&".3',;"\pU=Jj#3Ǩ0 Xʋ.pb@S8gkq* flzn8>qm3~҄ؐr-‹:kiCF A = +Tj|2p;=MA]e%GpjYbɻد MHN?;5ӻ%2Q(>mM7ٍ`_R#" cX߬$ 3lo^YzȂ2|~݁b VAU@}ނe=g8+p_.{J1Z0yv^ELˋ@#VlsS5IϢE/Eif(2Hx zS%g +Q!er["eݼ d1_/VT- Ivx,QyF,M@ +*Mb3۠I5A9PshG6=R nEAs)S-r3+B6+;0'ᬧHc6Qϵ_UߴNť59+y]rVo}$@:Lz#A}xznWQ%ƫy{Tle.䵣\;%. o^\ :eFJ,̝Kc`5MFL2R4ݛ*_͝=pę@+.Viv%bjr~@x icuW$/\DZR hr幬ݾ-%jUW0s==Kuoe,G4 -C(mP@"{Sie),PL-+7Ӗ,ldAlI$ +endstream +endobj +545 0 obj +<< +/R7 305 0 R +>> +endobj +546 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +547 0 obj +<< +/Filter /FlateDecode +/Length 2133 +>> +stream +De,\C"v/E֦ +E"Pt7I;'ֵ:|t] ^7E#Zb!CʽE.gOetOrH V*[^MAYR۬Y(aqX9V %n󈧅%`qv#.;z_ַ{9eǝ!H Kِn3۩\Ɉ/BQ/K߂/SZBobΊ81u?RȎvj[»` +6+mb={Ii"Jl"qw\GVm¶Wҡk}eG6qMI pc)_Ή }QƨѼRrQp*GTya Ϯ +w0lbvc׶ڕ>2{Re{%iGۯlrch::Y^ru0\ #u X r +uU +(S5:+۵dL,G hxO? AT AIjr?ѝ tT;Xx;KVaJ%eJ)&0p^38tRO3*A 1ↀXy:6kh42,`r1q|(>~#55fmtX?(pʂ+Ƽ.RסyEvEPk +DΛ )~]t`/^n"ǵ`Pܭ\ ! t)8[G"'v锛hsKp#}&+|cpF;W"/2ٮOkď49ˀwP^H +8v@J\hlP wlAoRhi4~: PJQ+Y$YHٯ٠y8!B}ړҐN;\dxoԙaWl*ʡ,Cp6ɨFgrC$㑋EƾZ^k!bljgdҼ҈z +!b 95ᡨ @ut\x[p}:Ffohwo␅qĿBP*Yf! cG +\K2/"-;Ia+X2`yg(DA#>V5s +#C[wWъUe|+qf"ɏqk7QZ0z}e.{iS._]=t +j߅fp[j@sVߠPi <<۔#k4D{ shi>4Xb?AyC{!T^>ق`v+cf}q{(Γ\K^Jv_y,Z2^TU4j1^-(_fVBQ',k 'DҳbaO <}DXvf"UF H;Ja#bnAlIEB8"dqwjLl\ +endstream +endobj +548 0 obj +<< +/R7 305 0 R +>> +endobj +549 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +550 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 225.386 150.124 229.64 158.231 ] +/Border [ 0 0 0 ] +/Dest [ 39 0 R /XYZ 75.52 70.5 null ] +/Subtype /Link +>> +endobj +551 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 56.585 235.258 66.719 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +552 0 obj +<< +/Filter /FlateDecode +/Length 3088 +>> +stream +<_^h‘@m,4ӂ!)i<;6{.;!~PD͟1RM4&z\T9fdXئG;n'5%򀅨*\/HEwO~M4*~ϥ0נa o弙=h`oQB9-kD&dqEJ,i8Oqa[]w6*nsSy̕\- r]^l!e[fpgMg{|`ŋmN5J ?I1,u;S͞'VmlZƒW\uQr`1R$ +X A*Lպ|@7qK+4tǮNxxeɒJ}qWb(q ĭCyM_3W2UuW]}BEѶħ ^tr.ksMަR]n٥ Cfvt6U'?y<$x՜,&*ǥ&;pB ^>oH[ݢ^,vbcݹ@s)Xު{,VfEVQxS$\'iງbHg 3b \|3_hn1ћ:zyvZY<tL}LhoY¾1 \W>ܳ$~my[M^ut{>K(Zt<:LzJ>lgU>ew @3(p7ޖ 1B16 ޞ9`:0QΝB*9w$]RLcb{C} +MCŵ\_qI%nX+r^0+}-]*5g<? P3]_;+`o| [:ۀH`Y(߃T3ǧ &O̦%BR,2.Mf-izɝN qlȨEґۚ{l oFN]7F݀ j(κ}ԒKc|P<<J4$TűTmQl|it.fܝ-gJۭvh<."ҠjZW{mOMqGA)DC .M'VaN FW6Zof+(Qmd^×tw`@kbz* |:Ttea`cp*JYQ*@ v5D#N |fҍbJ?ḁW E*r[3Vdb0&H`1(-m;˼Q/`M}2ߩK_ U6ɣsl_ډ +eugnPֻ ޟG=\~;LiA.Qx+?bIe߸t;ז sodu)W:K ;3ٙT ̜~.8kR-3ƢNU7>8^E@u'w _ZC)dCp[C%pBW6؀`||YߞItx!º@y)R謮HHŸ-LfZ} bS;`}F=Jrgw6`@"R4O,zxĀjI,k0M) "%9-``'GuF4bb.nA}ROAۭWz' hUQI?};[U50y*jZW E9:;sG(vyRkS9\@! FC㬐_[OL!xԥZ8~xrpSxrTij7Xe `F*Gv _a HkcDaI]#ea0c }F@M\a/HDHƇ=_[Y6dZJՄ9sCX.ʰ9Ĉ7]JGA=>|5;A:zv3ړX g+Jkڟ6٩i~[rkJO2ߥتʃmы_U[%GpFO9SeT+ػOl땩xq5ո:6w >ˣD ,$F/xɁ a'AiԉĂ =G/i2_ +̣p|~v?s`Ϥ=GΟѕ4F`<̉˕SM9xXg}:Jƛ/WO[zՙnQ,ؔxgC G0:~m|I=$.ū&wS~_2-&ϺA+t*(mǗ~@l&.h8O=C TFkS%W˄:xd叁fo#Yh/B9ߝԢ/t +\iyܗ!B|r7IE_ؿLPu|,}ٸLed6M 6SW$Ǿz y/7 $ɑ+qTNX݂.!<ۢRꔑKrUzMp L?Фԇ\IK!(p@z.8A9ףk/_A A4ZW(upps!3]I= 5aN^߆b]'{S=Xx՟qj'iQF'ks ٧ Ja jK<\8\%6ZIGX +0íe45PE}JKUG;Gah禯#Al#ٱ;qaAijEj娒pK~R23m[:6H'*&hd MN^l`kgE ez/DK3t:gf1 V`p?)Ǭi~+]Be84 5yx"vc/㻜` ]0-#m-A*PM*fҏ>KBH,7_:q . +endstream +endobj +553 0 obj +<< +/R7 305 0 R +>> +endobj +554 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +555 0 obj +<< +/Filter /FlateDecode +/Length 2442 +>> +stream +SͅO5 Ī"H1;`XƎv3TʓQ~.z raWօd` ,~Vu'.=>Ba鸛8h:@q',yb&{_K^ |e.qP _|f:;2?aQw` VY3k `{:glimzؿitTVf|.$c}}^Y,s@ݝ#*GWbH)@׫QeVL,NKe(Y~f3HE}ҁhA\)xrm[Ҫz9)my\IQ0BA6rRj5Xӂr9}* aC棊)o?' e%:a1,n%?gҶ' ӠVCjfDL*S %Bj{}{ЫI#uFx>TZUb/0&t3@:A*=d[mhG,HТ}v{'B?ysT?[s.ޞqm_-QCgصQ(_E\´vr0M4hDV na`>-PuYNlLJw& FgүQKɓbT<.`t˾ܹfZ5wDQS`ꮱpI`)=+:JXaF!X$( y)sI( QHXhَ /j BS5ODLҽr3ޭ@ #ŀFVp*_c+P/Zxz goG$+3/j*EPnBc?ЉЎ`v<e{̦m|J۳|?: @K_퉽̸y6b4P1k~L,Q0,-UVgcXݠe) )|5И%w(*NR`jpsVys`?‰xQėgT+>/hu]o$M G/PFs)*2;4_c}֌-*$[џu/nD삦X$Ѯ{t;I:nNվA%4Uڕt89/Vj,ړB^fotH!3D^sÞ(Ui Mc +>q%{E rQg +!+sGf +d<-ΑYy%$YDvzVu@aZp1 5)Ya *3  { +.1L f)Yz<+3#0MӻB:lNMXB&?thf*Nj7 +ɤ/GC'߯Т1t4&q TuC^Z i @%5&;Ҡ.f;| ^mS T37DrlqD7Hͳd˾:7Kk "CY:OX 9  +mg'0-j@V^GNIy6o3TIUrOlyD*)-ՍC"jljaǒ +$!>?V ELA-wM# qv엹iIipܢ4ϑZgj*y5K梦ȦNde;q9\Ⱦ<#ϩ| +xPE?0z )@J㹳nEO1 e7Ju!Hm%%C}=O:*رI#_^5; ¦R𢑼Ahk46ZRMhnYYr^M4[gH,1d Pǘ> +IJ:s3.MWq`ՇT}ayРk8T$SY+u#8-"|T$ 3ybD̍ĺ]LӾwywH?<1s7 `ŋ'vC8%%:kATE=>*WZJɪ<[7&ReY7eT[#FK1DsrGXAq=C4?wHQfuG=a#%B 1/ZCTu1K~\+KґZW?5Ԡf3ߠj1$ +endstream +endobj +556 0 obj +<< +/R7 305 0 R +>> +endobj +557 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +558 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 367.776 481.112 371.813 489.219 ] +/Border [ 0 0 0 ] +/Dest [ 41 0 R /XYZ 75.52 80.45 null ] +/Subtype /Link +>> +endobj +559 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 284.607 341.863 292.052 349.97 ] +/Border [ 0 0 0 ] +/Dest [ 41 0 R /XYZ 75.52 68.5 null ] +/Subtype /Link +>> +endobj +560 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 66.544 261.187 76.678 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +561 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 54.589 155.991 64.723 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +562 0 obj +<< +/Filter /FlateDecode +/Length 2857 +>> +stream +8PRN'U x^XnTqr=)s})_07iv ’-ƌMdڠu8*UFvGF'd4L LS@W+' mI%c"jZ>H`#{10AIJ<-ӫ*ID +|t %&'^ĝiȞ$zbm1]W;3CpVñMsIq>'BbAI$sR=t5@T`ȣ:jfxX,{ 뀀6,y}Yb„k0F":nSKЂ(b-"EmKj_XZ%uc(4&;YfDH!0!ȂLyKY7Sq~j{\ZGEFan,R$_@09|"D2Ϫ2\6+fR|7K"ח5n^t+nJ\ho9)A,i1D%Ty dc +~l%">̑v(7"^i02D0$BXLH,VES}4,DXBـoA#֮Ԩw_[-|Sʱ'E&-,B?UZK5T}!ns  YhSĉdhrrћ)e(lJYFp]*@9lॱr`@N)(M5ʁFZdEI2`V"v%ӯ}g_g6_}0u o|_dGe?Oԩwڜ% +W)Ǒr5g`0(kGhiAcSkj2 +@Qq=5<6.9ݸAUͥv~/"~ u{3!$ap²8T;0pM?N7[ш@s3^wA~bی W-m Je9ӡ/ o퇤4iYt_po)"me79 Gi72T( v)T P{^܋ O){765 .ML齶GNT;hy5%20Yŗ|$&=s>@zN!/ܼ./]vapVX=Q|jgeR{:~}Ĝ. o2E,u32i8fb9VX,Ι)pӲߴЏt&#Ѿ)<q~J.U܌O6o%ikeB\Qyc~=ڵ[X'F>MExٓ7o;pd=3P *B8 +>:Yy/V#Xu +0U ڠb +)o:ֹ=uɱ-1S{wrX׺ ~IQΌ -7#^cL{sAQ[xW(y㨄 2Q~AJi)oV)'=ど@7&;̖sdZXnKEJ/"!:upZЗz/E|*ϢҨ4=wЫL)k y][YM;/z/WuҠi.*VN'DNZmh"^I_>Lf>S$M&TWn[- 殺DpNHZAo\rsjii+Q +endstream +endobj +563 0 obj +<< +/R7 305 0 R +>> +endobj +564 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +565 0 obj +<< +/Filter /FlateDecode +/Length 2954 +>> +stream +΂/Lɫ;0RJNZv;`\CNQ\/JZֵclVFGPD뢌yYB3䷕k|_y1p5a\^R6U@>a76?6 +H"`^ƊBtVt h3ܞ"[!S"G!,UB) |M8lbg7"(\w>!>-opB^bD,QltzqV3PclW&֡O^d"W=:( ]ʣ2\sOksӌ#q# afR{X_&T׏hO'ćOXkS ut\a00?WU}ԷxSlWʧQI }7p5G6gGܿ UKgm1&i BkњI_Ĥ'^BԘ) 3Aϓ3.g1%`.c kŴW?@Va7$#њ!h&@G*g̈́mC J~n#+a&c3q0m.f,o DOO.+Uep nlpTq)?n 8ڡ:i|0q×wp":ڿ7sy>?pƀd\HT`;(&Ueؙeҩ{xI+qTѽ71QtN?@PZRbtsE qWM)`t| b~ + +I]_U:'%_՚&GV&hSǼzx]tM葄z$}y[0K_=^C%`56Sr3Џr)V̴*֯yl gˌMNeۢK! +ps,S 2%&5"UCuzuJ7;d^N#GN3&dQiƕCxԐ 0k-0DEa竏'/?]zBW$ܜ=x*Q=)=gFx+D}(Zȉ';Xord%º36(3i몈My.mPGWvlU\\>)4w`^H0hkCmY%Iҵlu`+IF҇gcINo9a:U;y߅e2MOǘg:X#eG˭*Xi坌Mx=#MX(={?R mD)RH7"c[!%[y 7 +sP+^5,d&]EA @N 3HGZy#bZp'%2:s2W`zU̇,/UE^?BHF@LBBP7㝤Nnjǜ&*fZ|"ZʺhK-gѵ:AxT΁0yo +x"2AGɝƸ[ށ.As=?jg؈g~5WۡuNfќYE#m_GL.H\KMο(ϓuGg,b\8A@nyᑁQOt#7btA+&R|!$OJQ0ф7# ti,UQ~G#AhH-ho|;6 +^FUw 1 P3xKL>?#qG] +Sf%Xݝ[Y +sënIU㴨̶n_l._}Fzg0P@j"UnJ ;kN/V6v\Lxկ#$@`4w@8ԏlhŝޅ17%T03-PZ]|3wS1s!f4 *)RrܣRA>q,2n&+@Op?=3-μĔw*fIڧnxbug TsX E]۱ >r -۰R& N5{Ӫާ\9P {/%TT'[ ( +e,_Zfzu=Y| [Cm0սG?/wFq H aYkF?^\QXPC<_Wocm 8y0ty,Zk|Z.цf#8o|B<ò%iU' vB9 "z" :ojT0O-; S^n3l['?6XNwXvz8ߩa8Uvo !F!}%^r} p'qH0QjGQ(_\UMA_"k̖${Bžb(- +endstream +endobj +566 0 obj +<< +/R7 305 0 R +>> +endobj +567 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +568 0 obj +<< +/Filter /FlateDecode +/Length 3264 +>> +stream +X71UυK;TchHїP$ J:kHJlhkb<\V/mE=')!wv-%!'h%#'VY6@-x( /]1U0+tyYȥbW%7|g4DX3#πډg|]4ϕeM)Bc Na㖝~/|ite̩F.#Ϭ"$BSxx֣N]B>a- k$NpX'coVrѲJGHbQ$qjIP`Jw{㽢5U{!'YPC}ޕJ.5;hX0@+"Bi<l\󳅶K2:Ji'Ե1ɞ('lQ1XiV+_U +$<;ZYRW +._&{+zv;5>k}$p]W@wYeל;xLWeM+^z*.UnM|ovQƌ.ZԀ~2%x dBb[y:ZAe&:&Lm8Kd7 e\F=aàukRQjue:/&>kZvqN[1bkw fՓwT쌗ojJ>k4,*r,B&X[:#z?\DkyRnNzþ[LVʔt网2Gc:Y[O;zv*Kɡ|)y"B3ʖG~ln_S/"fj(F_-ge HyT9.eAhxaqݾѺt B2QU"rL.%%MD#3L+$V䕆ű~ǭ6B(E ?0uBnmp,ͧ5M_z"~W4n 5`OA 殺|榑5kU!ak1I*!/>@CW}eѵyGiSnguv&u$d.<i ?(edm Z~Z~夂B9PhMx2nu-XWVٿ&#|`lejY'z!_Z# :kA&(VKSz!;A ݓi]GMZ :S|ߞGUM#Lb'sAhX'&\D. ;*֧v̘@գ# *,Ri ;wYb60 +Gg;Q R(J^wݸ+v Ñғ~Xd17Re*Ϲ\Na{e PLBboo<ݕ`/.w!0eeCÓTh)2~ ν,iR7 +6IVj\.N^b1zu-ӖjWIcMMD3BkBh.߂ĿyY'W֥Mesl֬s;Q[Y̜_#ek\uϷΥPNnIճΑRade";\B&6%8! ,s2_~n\"Avc,IHo|;Q\F"L1;ۭ*gqI=lg tt ԢlW:=.5eC&RVMb&3(!r`le*`(ve-c'vC`X:[Oƺ06"lPaޭvtu\>}'>nolDrv!pKE4״L aj+3+<;̲I]ݨR!S7cy)Jocb'XcPX&% \pSKEsudPEdY 4ܐpVN=[^ !]j{^6@r6LP28Nq(|#wm(Ͷ'mίTӳjN|؁۷Ż +lidj\L)QD +endstream +endobj +569 0 obj +<< +/R7 305 0 R +>> +endobj +570 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +571 0 obj +<< +/Filter /FlateDecode +/Length 2987 +>> +stream +/]I +/eu3a &vūE0m.ޡǂx_U;)=z{! #U'8)ڿ j^Q>~dh!nW/L5gZk2M[RBs&82x̕*gt!NA0X#{ cSӃ > +V@/VBpܱ gAVl{eJ +@~ՊDgmF2F A@*m|@AVzyl"4AQ}_@Oa2u絗_ݰږQK=k^ML\^55"{%tM;H?QVM$ɰy9f"&.G`cܲXɏFFh1 4=iģSV0aJNYo!_M3X=(хgR;DjI#+FRȬ2>Ws?ridsaLmŸBկÓzDny=(kRW=#Fބ! l5jkz"XrMit|CueФ|&IKNLBѷUA yq]C!¶}@[sY%( Obo JQS2@T6s /Ku̍}bh#Mʓ#'wvٷ&_g^ĜM]ܓ>fSԕz'%b#mt-0x8\3ss3ibrz42|Eۂ.)~^ C(?Qh;Ø[(Vbǫ~hjM7<_c+%ZL*كAqX*FɿXыEfrT^ b/ X)1lZ=o.A8ZgZרd+~(41~rs +0! +w0y=rqԭvc #.ζv[(CRÔ|1%Ό+VGA_fe8A d`o*v{0}Hܾ\UeN(BPE/:Rev$+D|9xR[;*9B޽Y,G^#&xsm\Apr 2caēV^+a1 +L;IkQl9Mlp$Z=(hhOQM3K]q/ !CAKtS2Z!iƥ<Ɏg߽rO$٨4#$ +g3vtCNC] 4 [/W9P9DmIu~KK&ܠ!LϛUT7~׍J;>GC8㼫bh`Y̛}M8VI Ӡ^|ux[ƙaT`%$r?k> +endobj +573 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +574 0 obj +<< +/Filter /FlateDecode +/Length 2276 +>> +stream +{Yb5"A$ԯy}ڇ6O} a.O5 oS>mCYf>*͠vo46ʙX~U92L#] n+*pUB;i6 IRtNǶthrPڬZ/q]3 %SYZW"i¼sĎ F}ݗccqEh(zpg39o ΠQqQK5ą &}SoW~1g *Go%tUE'&@O +y!>}[DJkcb--DCKCSƆ[ js,(nO$AqDmkѶ 6=J#$':me6&KL~`n^{dxD] +c↤!tj P+#zjrLT# ;ycM G127kdzCuIܒ9@{>anb{\u"TB \kU\.Jq|^3HO@'J?!rS&K\F_:P`h}<̚ɇDL?t_nݭg+GƬ?Q (\2r&ŏm \IW\4k@BFCOOeYwٮZn{([tqS.VL @х1UgNRl[L%I1i"!i;ݝOEm˙Fw.H:M0%.N7Id$R!"ǡ +endstream +endobj +575 0 obj +<< +/R7 305 0 R +>> +endobj +576 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +577 0 obj +<< +/Filter /FlateDecode +/Length 2593 +>> +stream +uft22yʤdA a``U19َ;L*bL9iiY]ځIȞ%-@,'ۨ Q81%&gBN%XCwI.(MZxwȥxH˾^S,./8cSj Z8#bD:K#3暦-+vX1 iiwH z2FU6aCUCagvvR%y3gǵrՍԓWi}vYc'6.:xg"]Ry6mєB5.ϩ'ב\Sf^76G+%AhIKYpol>)Ż`4}~<ݾߚ ߋX7ɶ:|_U=/z/wZځ'ToIrpgw^i˻:e~,X> klk՜>:<7{3(ySYIٍM}f=E-}uZӑeUi*% +9C"M_(yKO^eQ=Vũ"*:dR?W"w7>cMQdȾSZ v `/dܡmO\*iDv}}e "SgY DNEOT,sJ5.Q=B0ba~åe 4)˱DZ=`d/k88A2믯6u pbI{{6F7(dZRڬDrb{79ͧA 15F{Wd <}@ /1fv@UԀ'oM !{9<8?iY]06rи1{^ NuG/&j:Vb@ԩ;ԁ#CRePNp,kPvD{5m4ʊdlm%ԣ&9Ԟ.0imģ+áC&i0.XߔK'R'^j-y9t<6PX"׈_(L ?PBƁM#/Cؙ݂.M ֭2Ӈl-DTd!ݱ$\b`ǔ3Hwc:o$E?g>ȑwEfU D9/+< +֬D6=VH{Һ2>4/y<_lJ_+/ζ|17K{Zn +endstream +endobj +578 0 obj +<< +/R7 305 0 R +>> +endobj +579 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R159 339 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +580 0 obj +<< +/Filter /FlateDecode +/Length 3131 +>> +stream +isXDn`|3YJ:J"1[ <4\ 8cDqѨQ|`?\PѰ.hNz\+,?cU7͌mR0]_?=&KhqIifM_ %B}Wq2D |>ghۅJY-3[bi ׭ tzceQqouٹ%^O.g/O)Ls ':2Zif-,'EԤf29u\@ /<ߘV{W$\#ܿedȼ\gM\ +b4 gUlC~HhȪc&zR\\ktDʪr8~uKġ:+zPE (W-?Y;i?xyɔ BeZ<3- ˲ps%fȌ77<~).V ^Bw9ssbhlP2M x::JQ')Yy幋[o8cX3@QPsLfVtҩc5w罞iґ<$!+uNH0xĺTT׶_/!ګ>!a}Jѣ_ F#=qY=I +f9aVUZ]řEoM칃uySaL  +\u- ^m&B‘%K5P4[hJ_ݢY/:J i7zsfPz? $4Rn/+E9qäΫ2\8]%BåN^ !qt Wg^`y'EZ<:ZPdF]cDXQh#Ci4`J=qmx­{}ɮd򶧑+|z;u7NT +oQtAȣu5)1U Y6Rnsj!; Bۍ?[aY.봸u5y#Ytٍ1,98wBƄ{zŖKq*aof)bgA')/;ߵ+%1;ޭj ur`%f~i؇fB{WGLc[K1hf<Hz1lƞ/.Mp]ؐǬdspq҆8d\D~TWFtdQNsjDH=װ\z2 NM|;DvEҵ:M37ॱ nوa/{ .܎f: a^O!oQ|$scϣa8;V5fsFobi٦ȹWD %?VۻJChث0P}42v" ߀4+[GY [Nv%ziE;m`%'s+-N + ŹD˥(0* $D3ڽ죀H2t/V5ETR-XE)Uo\! L"_%@*(K7?a暃@b XUGh(ȱrPKlTJwl9սiEdLgbY-0.9'2s~2ݼ"sųcR`UŀIaZwyd&ݵ8TbynsGj#3rpRC8CJ1:?=- >ȓ`^GrE Bwh,!E= x.·?KSM-aꑻ@I ߷^ +j ].&)Ms޷!mE3V@ۣ^!lQK]#~_G=@frir;K-6s<5f)-+4iNY.+?Q9!)Wo4$\E-q u4fk\ fCuyEs)f⼞ \{mwػHWO󆙜&\ ޜ9Dmu͂|;hJ_쫬p2<pRToCnrRLEakӫFS Z깂fΣf~B +UmToho)~$t~9}0˩ƀMݘ̽xߩp;6XVew Y2tg<4O=8UǤXPUTBK5PD+m(y4 +٨~Gq0{cin!o:0*:zM+I?qt'Oa>!q};3N+[LJqINʊ؎5wm=xT;>'YM=0[SM#s",@`^<0+{24[bcLxݶR-Vlfg JNOKN჉6 a EJRj2IaOvM$J.֡ yJ}:1B##2/CSy/%`2z1C"w2%˝3S4!'v' 0z&-Q8UE) 1cN*CrV&̚m6l9boLẛ +endstream +endobj +581 0 obj +<< +/R7 305 0 R +>> +endobj +582 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +583 0 obj +<< +/Filter /FlateDecode +/Length 2997 +>> +stream +UG=v 술H*ȇu <9Mﭶ54qu6'0[ 5p eBfpAyj].-4} p&:KG6cFذrN~5U,v1j` TD2>1d ,͞ie{Ҭ ޱ{xWwa,B0."$FК&-2/P.u-lW.mPXrGi|fDU[}Q%bxeZK#(w$Kq_ضh.)'E~ ' ]zW=ydag*ʱvw%*GK_<+$R1̇ ^|Q'w2bcuCaTZ\I+'ж_Ceӛtq8 "߄P5UDO^Mo]*W.cTe7A:Av(`@@ KZUXuc!]b0MD'%^ډGbi78T}_GܛK|JD:[#$l lJ'dEo:@oApߺu8fD(MP|=?j׼e? +^0 `>ѝxnUH6]"OhXGg%bVY or .H*xjJYv?߅oQ HDL|Wf:S]DMWkWc[P DuHπpI *F}EfSN_K?QuW: fC?u7ޕ.ejH΀˨yؒȣ6 Lr=Q'yJe>&ۻؽeіZ, _WYUhL!3,Tv-܂oByVH#d>wY"q?F}E $[f6y&YR\U0! xjM,[g~ c2 FNs-#*55ImihZ?eaœ0lFKnwd84xm**8`NLeEx5rj$:{ !MۅW_TwnN3a7ڊԽ ??Mןn)|EUuya6Q1uM, h{{y˰Yؗ=H9޷;d ȫ$(-T+=1P;k^G~@jmZJf +A9V"!?[i4 i$-D,$"YZJpOFB[K8brpmpN1T.Qfo pṫbd 2-RI+YMd r ?$[Cd¿Ӽ<8[^Y8neH#_фM-]ѝ;߼m;'em7lpv}B1,u ïaܳ$]^^?VȀN&!)W@_aPp.S0͕yb{cUT4,0GVtk '͏ 2~|G KO:ozAjY&>U+ Pdγ\掵r~ +Y r6- DsR5ox1kCD]'}I5=طQFRO6N嗟|,UGt:)1ՙtoJӂJa$h9Cs +:(A)K^P?H:XJd:Ns˘d]݃vzF04x'K ; "We9N<32bqNf#;'E*LJ[S}?u.R*A\{"Rm@+עm&t6amSGnqяdd20'tr3T; +BZ7ѧ%;h?vpv(nN +endstream +endobj +584 0 obj +<< +/R7 305 0 R +>> +endobj +585 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +586 0 obj +<< +/Filter /FlateDecode +/Length 2594 +>> +stream +̚FY:ZTf((zljuj $=mjHn2 t.fv1!3Yhe_D]}jOjdyRAEݜH/ȄA鯤1:03Nz%"͘/x{_){W>- ɸseF@$2$QO V=9,N=uD%q#^p~ RyD|PiQ`tD>%&d.X5d!G K XDN/kBNP)k_9n\\E5}9&en.aɷtNjBCgpM.}j`Oqg4Q5`*ñԊGpN,qPq^zsΌu[42~t0Y91 E(ӳҡW\0ԌM= I ˈnHK9sbL S_4>*eyᱝezc`n$To;b(tVDǻE>U"׋ >(l!C+ƣGNLw/ɆYY#"82o X㫟 S\Jr{_e>un{,4n1(.l+!m2i螿9)yVSDb#w;O 5˱=F9b[aEO!9!~e,`a%a9$. 6=R"$0i Rz+KJȗv\-vqFrDc+@ȮO+uuZ[ze?d{?= !.=Ϝ>&hIdԂ'mzpTJ%mN +Eyzϛj?WO(_`%,p< ~/QJMD'Vh-91~aAf'Zf-xY?QN{J$3nszp1BS()q4tp؞<5V9NBF2՞ݕ_/] v(bs# !)?[VbtD JpʮE9#@8& v2O%蜁YE7 #OqgbBi4bZh8=<@^B4gN8PR+ (mW5VJf`q@~σ/ET3=Ƒ4 t +@o()#9=e=}dfW n&{3z?8CjȚ6 *cRj\ك@>)JxicõKb oǟӡ]-y~cV7//| +wfR'|{8ok"*rNv d]ӦROS瑠L{i:Zpgzrdl~0[0 nieOu!WITj4$O/Sip9k޿w;9t_TloCGp-?x~ z BWAS[e$?9́ +eJ|Tڜ?ExV+ Է$| e$|1M fWEnN6DyIiarA}j׶U nB(j5yQuX ++$^IGC'&KtV88X4.,hk'Dmu.U^f, +Σ8ν8` L"w_VR/xð O%Tr!tܭrN:APZ BAp +endstream +endobj +587 0 obj +<< +/R7 305 0 R +>> +endobj +588 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +589 0 obj +<< +/Filter /FlateDecode +/Length 2149 +>> +stream +zzY,eS!cz'̐T9O7b](*hĝ5! +>SSrOZd +h{mS)rMv5 O.ss!Se 靍V汑wqS 03l*\ur)ImqўZ)@m6)Dtxun3g~@F՛Ax9 *ۚz]i<#Bhr'X<4W0]f3(Anט7_Q3]Bt)' KB o?ZP3% ]jHQSuGɋ!%+5~,9B~~̩>[5_+vs|=]lE-3]sFf_`Q0>ȚV\Y)Z8;\ F/i[@#0l>𛪰HKV>(D2Zzʷs;9AjJO2p}qD5ɫW&Pؘ毂VTL|nm6ywR8SGAkѰA""dޅ(Q,0,h,p +m݀&>%C4wj%0}_/$Ղ;&vI4&CbkxTS +JSXfۨ /jGLƈ6͐yO:;PU$VSR-o~i'U.: JDRjb' e䙲hPɶ"$4j +#f3I\<:E=t<] rr1"ՙQM)I?6!6A4;T*,䪤%7WK#H.فY0*(=`ZVǫJ`NOj͆61Z9¿X[W\9&BXiHk{!'d~UOL| x lO]Goe:.3%eC]+UH뿫F΂&Zu>bM;߸䆛UzpvVFnCM{c .RUlmR]ƸMaK&#AOW(A=OrW<꽜m0WGZLauTX3qo"tLj#G WHH?!*|߻̥o-n~MT!)q`(LÝ2QgL{L]㹮 x Y!1ԧ=rcS +G)u4r_)r_{ G@'/9A:RD'y FZqʆtbMs%>,/ƒd;ot,Ĵ.P~- ؎'RMnQSf7o>Z`𗅍۞]Ql'^ƫeRHOS%A4Q`Ĭ4[~'M /|'c-?KmaoT "W i~3lO ];# 0=Tk:MG1Im8d,/VSj|S`Ufl%e%-2/Y)LGm5CuQC}a^<ĥn,th;mRHW<6EJE:R{`(KRJnxj'F;l>]mSqOǵ =PiC_嶏8=+T՗ΓhAadmPtF&ptV4b8VXVNZ9|{ )\d%e!6'@!r3'FFݨ! 0oZ%JiЛ.ޘMYT .q#?ט[ @< yB T8?I!)+Φx>aB-~v jo~"2~+<*Ww/lb^ꍙL6 k(:: y}5!%4~V't*'YYc綯JZ+%)U̟/48g" SI-\S>4NIWYcfﰁžd6I|*κ:@$}o*ϵa|)2-NC]hUDo⯊=Ƹ r1)1ID734Fm0ԕ5_~ +endstream +endobj +590 0 obj +<< +/R7 305 0 R +>> +endobj +591 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +592 0 obj +<< +/Filter /FlateDecode +/Length 2935 +>> +stream ++A9A=b)e8tT uFdԵ3SE+э`#p`i% +>(~t״SR<ণ(΢kV,״d3q ?J@cq-{{~WE'O\ް@< c(my,`SV4^~Mg)w[dҖnq݄iѲt8fT^Gt'ȉ?^xY5e̞s;wXOxkBa[hqlkW&%xc%Gw'nH`:,v h=zVl)׌d3$xï; --yŭvן IX+r;/v{3[mLd:R;{#)DQ2iaYO7~*Nn֦K "7}|XÔSDPȠ TM6{ +C9ZpsnqaL/,“t%U^|ʊĕE]ks}nXq KoO'!kUveފs|l B|7Yvɵv.KEL `AĆ {j|z y<: =Cro,:aD\Hv}LsP.A.:Γ)[Z;a}@5z- +_>ٓO#G/ T54@[}t"%e2vuF`l[X&|S!b;GH֥H$1.5"Y .۫ ȺpkrB?(h3rnOjJp3K'羨x$Iڇ|mA"_w҆m`ϣt?`^@!r'm̈́i9M6X)Kh_'PZ7EX$" ֳjUpu1F_WꐝxIBH +7OCOxb{s5[-~pAlŞbt{ty+븝X){32!yrHlNgSj`{3ɨT=kGkcߩFJ&ex$ӥAoAv91&? 2wW98VE<5[,r~ʪ=DZ,%b R0nd!xkx{*+HO9 EXf;D! ŕU- ɓZ@)s788C?Q>j:arʕ/_1rI$D)X2,lgם(ɽ3z?oR an=:ewC&.^4^t# ݶ JX}Ѽr=t61'J,c0YO"!j'< g.ȁ/3е4 ;~@O&D'ùN{p1#Lѯ;9\hfRBfmRm.|µҲiu@5ЌY]IR~m.;YADRfnqN5/x5%UNQFI qhΒ*T:,O ,ޢF +@jw^/`(nek! n}qΙRtr`w{K0{%uæ7BCWA;8&v[S׈6uyCjoG|AG#OK&Չ ? b1$gGJ{A;8G +$V;ezu GQ2(j/ͧ&myg,\_Eqy+(,ZIRsV´F\ucfMn q)$9%XSJcL,nꭉs.}p(rK>FCuQ>$Q,Ԏ w -+fi秗 4O+4(Ly"jUv#ݍhO08.;F~jS<4d$--L0t|qu}vn~V*P~Fccw.=e:j#WT.;6,55{M˪,q+b&HfV*ׂbGwu򈻇ʫR`%("Ƙ̓ИВPa+| 1h(kS5KnD,iElgvyo{q!f$kT ?_%dLFAIU_p>- ۴wsxZ7D"fL-\7(WM.\`c<O[МAxsU)qt> 0+!gBd ht@Kly)p 2;ބjz7B,#\6G;(>wfu3!`bZ+G> +endobj +594 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +595 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 318.829 411.364 324.961 419.47 ] +/Border [ 0 0 0 ] +/Dest [ 52 0 R /XYZ 75.52 77.35 null ] +/Subtype /Link +>> +endobj +596 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 63.435 267.049 73.569 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +597 0 obj +<< +/Filter /FlateDecode +/Length 2879 +>> +stream +t9N0(!E@KD4ݯ_s-M5c!2E$Xhw9imZ@#"o4-L`xěhX9xdЈ:w+*_s;=|Z O9B+:gD9q!)lY0^0u ^QDJ $CpU7._bBs3=;4]C,.,rG\"'Ep?00HMUF.x6jWieOLj*0љH./m&7j$ VN]"T1y$14EAj'd6@im#~\J [#U.jnUa?[q+ +WϦyf# vnV^NrrEP?|ќ5WEײp]`z u8{ć錀sjґhkxJ#8Vn*?oI# L18_DT@z;|d<#>6گ-:Iٞw2:6ZJMػY§s%}Y%qBوdTf\(DQ8Ay0>ʗS7(KJ}"hx-ٕaKڷwL/v[}d?`b_*ZpQ)Ԗ80弧TLUP6ygnw,X{HRS CKӕ"E0L=,Jޡݫ!Q'?8&* >V=U!k]b!˒6lD#jcߐ,uwΦ#1ӱ<y߃en ; + ڙE#M @S C:S'0ynh@+oeI8]9cX@WxcX _&ͩ,8ݷ:= {$gu.bp~c{t dJЄݢy`%@9Lbc$a9B0+:F|[\p|8AeOzcT*u-NJ?${K3 +L&[D@cp.$=Z~25攢uMޣ~^8 m6t@R 1~HwnWJir߲N)LD!jBf@9P{_pyBOd0/%c·RF5Ƕhi UZ;PLQ0^L^ $m%p垫NVNK-k*-%_$_Z@o^iJ<ݐ,{zԯfKd,bߋu4W1s`/q- H]?n\K88C +t?CU_azk ѱB\@~mLIkW4ԁ*%yqcBC'DpbI+ ?양hE1|fŅ;I)W +Ow.HXO9?@c'WQ`䇟Tٱ'|mdL:͚Nߪ|a([. ΡwGw-P$n[bppk9ml(ӭpU]9 wniDK tN4L?REB!? :/֥Ae!rnֳ,2JQ al[QWJwT'UW#=F]< =ndXɢY wLzwFv !m&fc_[#+?E̢)2?偡t-˳):앧 [i4t0im9xݪb.eNQ5+<ҋ7%>l? +]Ѵ6eO6)dX䓹-&RL|Ŝ]9;y4$`5S§p< T: lko萰's1L?!p^ *:r b 6x400q<og-:͢@{HgZ%g ;eEdkſ`@m& D]N> +endobj +599 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +600 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 254.527 297.021 261.578 305.128 ] +/Border [ 0 0 0 ] +/Dest [ 53 0 R /XYZ 75.52 58.39 null ] +/Subtype /Link +>> +endobj +601 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 44.482 196.186 54.616 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <130434af40c695f91fc3b63a141ec0c9779edb7b098f1c8ed11012168a6a082faff4f9707a0e4f53fdb4f919cebb7d8ff99fdc21779afcd8bfb4> +>> +/Subtype /Link +>> +endobj +602 0 obj +<< +/Filter /FlateDecode +/Length 3413 +>> +stream +9i1%j=Fzʲ\Xꍐ j_,$PqBr@A. HQËL9U3.hďȧ?mNz{6YK삒amA䷞&apg/Ȍܚ' [2ǀR3_PO8uռ8%Ff(ĂZi@:v,1(mC,_g,+Ho#"_n“"~0L'~-gf-Xq7%\_\I .) l;ZE/hMyYCWJu$fN}pmM#~;.X0!J_ob?yqPx$ھV=X&Mo +>pvl61`('hD1&oYP֨<>IvN`I+y+2!fUk*%*-Mc39Y̓!h1c1c,nAk*yJqwf;F94 eo#Ȗ!+OQ^7"vGh8x/FWu*ZM#Y+LcBi_j=6optFi?^ںHlFwǻ!eG1SHr/ uF9lKOnxB>\BLl5z)/mt^_8o`9a$GMcOWb6<;R$X\Y馣 *t"lV^5O)1bBlQ)m,]uue^a܎-2)gݽo& ' fQWl \} +>ќaK,W"rݿi``,* }s_DEWNx$ OXߵW*>i6g^ފ>~ m1а%pY MT?9;^W82$\ĂW$ֱUgD-ܘ{˴;ݟG ?Y+vގQ"5xB&ڀg $JdnwْX毴L}{%/ +*NJWw7;;~ [H@f@)%tIiXIҨɐ3C%,-в`Ϻs! +o83CRg[ 'P$.Xq|껚ȕa>eͬ,.aM F4oN e$Z$C)h(Ǖ +èM +{e-mP㑘"qE>ƑٯS"Wh&qm/\;樦nc#*"BEg}@ ֚C(Rvmg5DiFTRk~b֭ + f]SKv0L^RUf|<1h Tz3}e +Qg*NU6Oƺe=vuʷ8{AX;iu="OxtpOf6YOO͞i05ZV3 pPyqآ} 2qN{ǫkoG!{> _bv8slgoh*pd]H̹V%|L., J+x4|h9o"Ir_TtP|s]@ғ~F\~< 5EUif]zF|d7ѷ"\#LEW1#ՌdgHa#e4j_(UXUvU) dڮz gJ6Z>Fn>&1nh(bdp-{܄ٗ'FaA6[h/ȡnsPE+iԶƎ uu'F |@g<-GF v~ ty"W⒪:[Dd`B\>l:+nFv7u₭'N:BG'n{8ysң/5x?uxXֵV5F^o犆 +Ǘ V u+/$J= 2`Tt'mnhT_"Sp>k*A1'R/y!ʩ.ً"YE+}qY@Me. ĦB?8~0}{ߞ$>^t9*ktNkR?\y?\ڲ$) rkˋ/5ҏfӞHYi#˃K\{@5B_ڶw`}#{'>iLMpPk6°j8ִٗ()Mć-y-=?{xdOvFTbƖ'd'B}Zr?bAjfNϨ>:5&to#Qb)jE28(FhזHQ^KT# SԝsN' 5'-05.*yo%sc?pnn=Q$`he!ﶒ#/GUW'}| (0LJ85yBmn-*g +%KKa+OJߪE !ьb$Ĉ|:oaAo!PْLheU3k M'egКvs^ۇ?3߳{.2pBVsJm6= .q$8خU& v+}(ĢBm\ġ41OEsY~M ˘mv`gtbsogi:9n@GCRzve&LZ>goL,`d:HmUǺ}m~58g.uhBTSLD.*1@>@q?S Ktu1=>2% +endstream +endobj +603 0 obj +<< +/R7 305 0 R +>> +endobj +604 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +605 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 321.123 483.887 328.126 491.994 ] +/Border [ 0 0 0 ] +/Dest [ 54 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +606 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 234.152 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <6cfa111544ea2f380367c689bc4ade55f73a9255b01de7713573c221022bffb5c11df4d4cbf945ca389293a1cff1862f67cea9bf3242b5990cff35218827f9> +>> +/Subtype /Link +>> +endobj +607 0 obj +<< +/Filter /FlateDecode +/Length 3249 +>> +stream +1olLBn,;F!c>/G*; )H\NbAxH%mp%{),GI(% :,^!(:rxI  .\"hՖw`'İ# N$0Ck>s ܀JCZ]SMd9z6j}B,N9Ǝ Chl[f]@o |KH!e[`⽭ft(`Ӝ5/Qn+*;INArI^UKߜɭYX{_2~BG凭GoU1ա 欑xD!Y +,ޤyB0y ^Z.%Û(ck0:[!hI>>GU7bzHwj[ttQEmuEz%,w~5I?)LmaC@_/چQY$''-7ReŏXbKm !Һ/.$PcyeQh !Sw7Q[KX:#ZaF_ &:R@ '`+::&'J:H:oMTN&EkWHAVj@*q='c4l$ߘЩܑ T%ܿ 9i$tө f P8:ZS>Pe~Rliz\T Whe e_R5ɫ] 5;s$̆|BׂTLE '%?G7'<23lZ< }o틿5nixF*0/}a +-NUz}U:F}BI![Lf0{ɸju,x=;Ls(}*x1.3i !!Dp dD )APV.ժ qIVB_*>Q4*u(=+iHŧ}䝺jUVU3(*V%nzvRdz4CzJ %E+.a|o%UQgޞ[ulYh>]JK34#.3}\t*|)#KN4n?eo1b5Smvjzٜ0)xw%n|mC#ĵl%iaAoH|#Ñ +R?>۰JlA׽%`,(T6 Pdie?1t/`\\OTq5Yޱ~7(CÒXpW*XF_vCÿsV :/7`)4' +fQì/$n i*&ļ 9Tɢk>91@+j´2E?rYn<@G_Tj0u_Oҹ3Oz,9i`AXZ LyXbOm/x!~"%i)\ ޱyCVH VO&N]u 3@i!{O2qE WOShљiz90b 32s])^"_;7`,uy7„g +GY76Wm9hd1sRW%(-u؄C)UeuٕZϵH J,7Z;dـigɗ,JO.ęxJ'S0BXԿD $=  ;BwM-^_H!'V*Z{;(FIeވmVDߪju*N쵙IG}#tngYlOi8琜Q*oσVI&p˫} +'Pdd6W7*Ou2tfxewطMEɇ} +mi}h-iL~X +s +endstream +endobj +608 0 obj +<< +/R7 305 0 R +>> +endobj +609 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +610 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 253.721 271.458 260.817 279.565 ] +/Border [ 0 0 0 ] +/Dest [ 55 0 R /XYZ 75.52 69.29 null ] +/Subtype /Link +>> +endobj +611 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 55.377 224.982 65.51 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <6b11389e0291a06feae77db419c73bea9f4cd21e10a2f668b6d7c6e08e565961ef6a> +>> +/Subtype /Link +>> +endobj +612 0 obj +<< +/Filter /FlateDecode +/Length 2703 +>> +stream +<ˎ eq:KׇbϞܔlB4xg4B2vg^Fe:gg\iI9[f0K̐!]Pė QZo͡H[7 ])D^dc<66`HV K-+ĐQU(8a!D%rXq +}cYo(oK]~Wri!PE`eԏFϼ -vQؐ mMUΰ EO7.ܟum,&"(0/~=bəT B^4^'V4Js,?PlH38E,8VOSo_+ݾzWg=XZ +1<3鉟̪Ci6[# :=\L"2*jFL'UTi 0 +}>{Bpڸ+P_<#5f6*!5[A} [O:JQX,)$xU_֋yEAB(R%#|Cb2!k}gZyuJ0+ӝ7*|nճ<.p.^X;U/'kd\ay .om4LOcшX[Xo# +q8,& RP22泭~l]탕<4V`] $dq£mcdzh !)봵 +UpR+ l.ǯUţHx+MxSXDCv æTzQmu3Zs/7cJ*7>d?j]0(Cq=Dl J:nD +M|F s+h+ Nt{ӳ + E4 w,nE7+xhe4`fLw *-nɜt3 +MW:.O: W`*e)Gh<3iI\e}|OI?o} &0.vSUr%3Q@"ˢr5NH.نS95`p5 ŕ W]~a9+Q?&. dm0vj=Vtz;qˀA(ޞT}K kCW_j cMG:j6'XBK>*gj{܁Y ut.>Зn0aHDXD;^>Na9sr1r}D#/jr ަ&#e ժrSev8 voH[2ՌAˊGء%c_9ZshL1Ǹhѓ/E:g8)`;BV$_cvS/q$XتwSYUK˃:GG$Qt km]"}j0NzĂeۆbZuvwƌv;>a-CPӯ@ؾ/͸1F?< Zs^zV*sWW[̈'9kZ~> +endobj +614 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +615 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 268.269 397.528 275.104 405.635 ] +/Border [ 0 0 0 ] +/Dest [ 56 0 R /XYZ 75.52 81.05 null ] +/Subtype /Link +>> +endobj +616 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 67.141 245.884 77.275 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +617 0 obj +<< +/Filter /FlateDecode +/Length 3213 +>> +stream +wI9y&]9|-=ҕxIos;=`_0J\b#e5r{nR}\vq&_;5/W uKA1e2ƫ'/Y` + P$dxvZr;Lr_efܭ5HQ ؇PӼ wX/XggLU WèbG+*`%^O.Lއ.j\1w`ڶ$ Q&+Ա"݅&:uޢFЧ; v|"*#)@neN"tP٪NB%ۑ~=Dl}Y$jO:n#`T>gT.\|=f♓!\{ X$쓺g{־:^4l4% ;g'&UƥôW g+Q)w&kڇ6 2=1d_$3S]C`e͙as)1@m }GDw u-"MoHmܒ%Da9͢3trL ^W" +X> }fp(ߩ@b6TFf3N#f[g +& +mO:7$0cxVvh?i7&j#xs,;xb!kwGvȽ:K$_PhoO\s {GA 犓k$ER[fbw9.i{rҴn3;ܟ)9CyБ:`9ϚIe FMD@q2U6T$z!ʐ`:r:R @JN<>$#2?-`i@uV +F\XyB7)D;<6$uz<%;3tK=C(eT3] ñ f.YZJ>Uy Y,y26B0gn)=H+-PX@a՝#Y>R:*  +I6";d8^$ES<#,03/ ccbRp XV7 +'gH@B.zl=9iJXx-'YiįW~Ek]NiU )ꬉ%<*@7Hx//{D_uj[ E'wЛЉͳ{tt>NgLRщZ دڮs:PDts{9qRm8 A[(~>C[{|ëH-JptރP3TO)eaî{6&CPR܅#@]W-e!/E N4ng'Ȩd.R%UJ4i% kwmVRp3|ͩEԸ2A2^-(Q']u4pr#(ԭ@5n3Bv¿F JwQ/jCP3?UwL>)Ĵy0 c C^ &Ğ~ 4?MWOCG`.B`յ+rb~%Yh xд 7$u:cRo}ݽ#U^\iqS,&^etmN!<͜Mۇb,[yEi`96gʤIFR`_ٯ PH92' PrP{fhB8&%#J"~Z_{'d9|3y2hŪ(67̏Hqc.ߚ8{C8}-@ת`^zj$;q-HoaAKr?P^ ڣ#F.yωPrf:Lp3a]N9Pr')[X5]81XZ[[i0!nZ|T|da4Gwpt _w)P^phP#6${38t`EC;@e6VPhg4naFT#U`vUk!.F.C.r4فIuC>8g[6܊ݜEz +endstream +endobj +618 0 obj +<< +/R7 305 0 R +>> +endobj +619 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +620 0 obj +<< +/Filter /FlateDecode +/Length 3117 +>> +stream +qdìÁ'CO#%u,!X&`{GQUa"B,}ӔB C \DiA>lR杗R#VB۴Fb=7/0S +s1~ڐZhّ+RF([!lC3s5 ]ьzgK7i0}0MRG%,#BuE9clՆ}cm7_;k&6o*_6q(2ad\1[ۤ-U^.-eM.\8Ip[^V/ݵsYR#z!OK)©V;i|[#[+,I^GPl|EO2_}^Wgi;y +f*~dH$ qwe4*p~ hO?$o l'aljvL+| Ŋw +3YV"ڎWzd .ؕH7 w] <"Հ#cuV&] %pEdXg @H>jixjmo'Ey-?h?*FNsW3"{'f4\4H5?$Jι2BhotjqTyAШ dDV%EⰅ>:C4@40C9`kzmieWܧmy-,/5Ӕ/3C[.575<'X{%^+d^馈j^*kEP3 /uI|߾Z6< 䟄Fz~CB{T>-ЀNҠȞIDȅ}ߗ[ʈr@o$ p:w\:Xَŏ?5 +4"ignuA_^_\GI4 ="ӺZsFhq +'aOw_̐`li9^15|P5=RUݣn +LE[a;(  v=;H٣scACWLeS>ZsV~!/ +VHn !BZ4>`ԄuſN8|!ANlY7Te~Пۊ0Ьqwr}+4m%ju?Y0 (y-\A(T}AM{g16BzGK"Mҡ ╔gnd8ޖW;;-Ry(lDM3OT9̟4/JŢ<##5i:}~DoaĤ7D&xB$z.8 V5ښi]GhkAE'eKNGIrҹms@R8ESsR52 WdVu5_oq3\@H@PTAW[ ft,'=`"<(t`,57kpgoT$ E{vӍ琉wZ.H͡" 4c_ Ktя<͸6 {K:tn!;378@k;dwFvˢk;<Һ#"p98 sCn1pw}#1 $pVP`*VBV:u̚$UEqhC +P|A\@>s(&zXӇțg'RL"5^@GBz,ham]_ie]\'SyRO*2k!Ox݌:4p\N9wuPK5NM\džyi*@륇o#F2!Ʒ4D|fܽ-o)tP. S%o|lB!נ]ZS&;2c\h_O.|QL\tݐH +@ .ee΢qox{cOZ%Vϣg-$5 +aOw@;&5W{Wl_OSeڨ ++ Nn_:R:q^47d'@G!$=݉41* M_ۏӰTeTSǬLD;};Е0Ƥ8X)9 ;6Rlݱ ꝣ2A.O~)[FhoD>f- Fbfb{XV]V"^<1N'!b 1?ը%T<U^BXIhmxH&HC>ՌwwY)苢U B!_rckc zF 6$BEK\Z%uuj Dqkyč}Q0w{!R%%HI +Jz=m~u/ O E>$6Ϝ>閙锼}_|]0V-\qUr o +%~3'oI\CС) er2 [?"_aWR DI9x4F̒f(4uz5ĞwtLš,cu1 c.˚3$o|O5J\'an?~J"1&[ +aJK^K> +endobj +622 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +623 0 obj +<< +/Filter /FlateDecode +/Length 2938 +>> +stream +a9Y?Qf1_lEډG͐BdeB9kړ QcNsؒ$lQ@]qHGN/f6[F3(tbFkG7I61lXf$RĜgvQ +kD,.26yK/Ƽ3G||% Ν2R"y_5Ǧ\z~τo1(Zd>C(7eG?+qVR%0k7 P(*b@`(GgyMPvQtOH5!L923K&tV V{7]h&h5hys|֊cSNg`P_OY?yU8|6l>]XI`Ac{n 6j%ga?P_y48v=ߴ$(;i$SO_'|LP_0=/J6y~nF)[ky՘&{ۙИrd"4ڥpgR}F=emx$@GaČjsʥiD?9'eNmZ֤(pǀrB !1hD3vjZx;d(P_Sa!ntH 6)&Pvň--.AL–WG#q]V,FT6m'OѽuX:F&LssgTIǦ_N6U@N?ah٘ᠶV4¼mUn3-~}"4DS.y,YwL r)Fn++YQ͊8s^)1HM Ya0jC㭞x`1>c{ ጋk9 'gEu !9P 9w |Xg$S潼%E #+Φ{껡}KԄ8/O,zlh SHh7 ,6U|͠;]ٕ@.%c?*?|w:OX2"{hO(OߝHO@ZgQ +˛1rWYLƅO`/fP|/Q-x}.Q#ҳdlCڦ[Yp1za/VS7[L16<ǚKI%nKVvgPHڿ"IKSqqC%, / !fhTS~F"|yCOx1iUT]WJR|#O OkZ 2 ƳSVڄfLȑ)@2}+G x껶' +|yp<P DK +=#B^=;ە41MP5 +9`9z[Aib ̏״pT|"yoN 襰rl4qgs + ^Y$[rR1BSV? }0˅ Ǧ܈3lv1bBė`xgp @F\2 $;б}|GԺ]TU,c;a oji\tx*fP0\$"pivr1F(] ׽.O3&mD];*isۛM]j=F+pe1 Σi씋^GЩLݧ^+t7:weJ=0jb{SeXΤ.])h* AϚ Q@ZeT͜-zWx -0Z- +@1F/.6)`K EƷ#g, +&kji#͂O {vB%zޟKT*ؔBY vl*v,1+-eCdǂTQ\;+l(|JPv~Z~MShTAzsJ:3 yhl${P"1am\k{/yS SbgS|v9Asv^&&[.þZ0#&Ń +d w[RxJ?$o<<߶ӏ Wj.c>hE+gڍHYoڒvjJ{׹ѧ[3aXELQk^ 3Çykm +5tiɤ~E6CYП0Rf~g}B_jBZ,!/k@> XP\,yIa $ +endstream +endobj +624 0 obj +<< +/R7 305 0 R +>> +endobj +625 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +626 0 obj +<< +/Filter /FlateDecode +/Length 2376 +>> +stream +mVaH0gozکz(DKwoU#h Ϲ0탙A*>tqqhRe<S\ja 6s;lQkt9ınR' Fک[t'xtQOh/)de/苅ŧR@ +_IfKPDKt)OLNk .jz!Y*\fty;lB\;HAFVw'Űrm>VLۨjB}uP-J3Y(+ܾp] 1 +^5$譽c0*Owd>f}[mFBJ|鷍62jM{ #7tdfM!bFƲ$>$6S91a2:?Gu#RX>f ~9Ԧ$k~nN~! $1!X4+$(UIv%V[`jWג2DZ9;>HPt]6'5@LOi 0Ҍk>/Zex%sIv +cǔv{UO(,A㔢yeepv5RLk6\\Uѥh-`V"|WIԻBKS3m֐# W擃 $TmnC +Y65ZMueUβ)r?S9T^rqsy`w[J 1GF:1 mh1?RH22t^=%fxߥ:SG[rƐVrlB[0C$}%Y<lT=yf[LJw۔gǿ8 X[us4jtRz=gV\q~˻ (.KM4꿁|!4A`Zȑ;>T"3$وUrgE\{ƓǴ'x tبxQdM性'duA_Ne=2v(?t-z[>ѤʔBIε>a,S<{O'UTA +C*vee5$eY+.*(J[;nS/5_^:^WOa͎ $O 7 hv*ʝm;1ʥa8k :UiC(LPBpy[%朙%pi;& +$#BK93I kt/QBy`<7s vwB\A{x'Abei&&3jBƽ37IرgUT7X#CĢ P|6`&Sr-YE~þ*V*|lh}=FiԼ^%zAj2ަGGUPD ,{dsrɏyyX{#ێ/@!eo]h7>ZBg{l6>} YdL2|zqtF8=o~e_t\>qDpch;0#Ϟ #[gX!PSh3\_oFC]@}oXtd_id#t4ׇ9p9[F@V%n̈́G P/n$ń!vm'פҸomEYzٟPFkV!@>#Nkhji?[ȄE,hn?GW4c(q/Eyg cRnҲ`KlSQRC][Oe] DG05뀰3넲o5ȈO[ M6F'5F?ALԹ6*aM:k2 GM +C)r?$z1sRy AEgsV!HET> +endobj +628 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +629 0 obj +<< +/Filter /FlateDecode +/Length 232 +>> +stream +4]/pi jxХ#~Bo3.n! +;'-C(_Yl8| OḩC.t@!H9ES(T#@I/8?,+   +endstream +endobj +630 0 obj +<< +/R7 305 0 R +>> +endobj +631 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +632 0 obj +<< +/Filter /FlateDecode +/Length 2699 +>> +stream +R.y_x:IdxBݡ"uD4# +mOYD>:5g1bJGZ*A^V;z1iBj+^qVW'm^Ů뗓Ѹu::__1ʟ姞L/ P BV^]n=FD~g-+vw xH"oEU&_t!Q mEf\ORGQ3>>-*7o "% +hYFow~E$2oM0=hp2p̋]$/\i#GGo^h_7Kizu=Nu50!B6E1"jLIJ{xoz6υN`A!6=/O8!"9 ǟ6 zq~] gૈn3eI˃}Y/:@̒G95 /. m=M=iBxZS=~|YN so/Jg7۶<6 Y buPA(DѼ'H۽@/9k>\֐EhO;9ݛ/VQ%u@#KXf-!KфI("A. faʪ+s"KWxA^쟩l%Kq#@6|JEdJ]75^ n 5"mҨTQ>F'* uY:d )KRo)<jՂ-aul1đjR4',Y1ih#ƨ*VS0el6ʒ%=?*ǼiSŅf[᮹FvmRNg᥃3c +¿EL^,/~nq1jK5vQ$V3G=l _5ag(k+ V(ڝ.GDU%Sq>YaԻQ~WnDU..C0U&-M(?YH@"nxB7H1D>Ih|Ϡ[WxӺǶF Guq߁3o&L۝}~JqI x`32qˣ ܁sДa?vf\b^Ν^4pjiVEcb{hѠL{sQ^x_ISffyaj}iNKi:Rc_(Sjz#%BQ0 D3f?[5XY/"+cTSKD`CvxO059.$iܪ$6V#Ɔ+M)-JD'ItΦUs]퐨Nb0$9u&)z*9 "E~(&ﭜh6cRqZ%wCx.WŋbjNJ6>V"R"K9onģ,( R$wCR40N^/R? D& +;%M3,c0-ᇪxŠF3uPAX ^}qQ[GR4r\U Z둣n {yڿP6oNH(qnN"#@> +endobj +634 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +635 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 133.179 530.198 136.245 538.305 ] +/Border [ 0 0 0 ] +/Dest [ 62 0 R /XYZ 75.52 96.78 null ] +/Subtype /Link +>> +endobj +636 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 82.873 248.488 93.007 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <73c76eb749410b58dc0df4499fe42440f99e2a5be855322a290cdfa791ec6de6720f3e03ccf0cb21e4cf164ca5572cbd4832d925e89ffc06c7a7b3da93eb423019518f93593e75261ccef1> +>> +/Subtype /Link +>> +endobj +637 0 obj +<< +/Filter /FlateDecode +/Length 2633 +>> +stream +/Z<{m0eYK>=dy$F1ǽUB_ $ +!Jq8`X}۬)XU1oZ]WK Nv-!ȕ{z(\0l4:`$k> +@KvEV +/M"L?a~yVgOaڜr.H.|̚,3w]b:xh"I8YVKMux, 7>m#:_lm摝߁R'4}UdyLWZ-ցg%y<,|fS4CzEuZ9>U]>v?NjZƵQ%|"MM$P$x(`wzmqGs}Um I0"75E' ,ldm*S3VQq:Da%LC.2][OyQՙf.pԤHBhr)\M=ʮz33~2uܲ"}O{RcvgF^>3 LQ-vNҜǼ)xfʪTRQamk:VVbZ*FI2w/]J暋ޝe0":E$Sޙ +xr f(կk%QVV +9,AP%5a,O{2^I!03M*$I=@$a^tyRϣ $&OYŽ5$B?f67u=)/mPwb ~H8H9~J@{ 0IPXrEd,U\pD=`>;@V*5}maaq7FzDfll;:5'\klUiE8~NHlS-IXp9N2 ԁCFvqw6DxMvxH6z |= !eifnsSa}*a +KZ9MSO\VU*$oCZ{se$[x]S=}AKxGQC : t׫lZR[ *fG߄ԃk2/hstd3lx/Y+@+<]'C3\qn߅"WrV VTqa_u Xp(gN'7KĊ +ؓ1vek kd L{N%ҔJ$OJ +D0C:ۯ`SݼxQ"^< h䳿gV]C9 iI^K Wc꬚af)Ztj9yEp1bu}٪zR, p <^w7dr8Zpʖ@޻rX*}vՁl~1(M}޴3ZFF_ҹIqX%Se"|֊D{8 ؓ{G->6^% dn%)bF4YvhpvtԸTdT^dkajmG Yj +޴ +pb% +NfcVn0H+ !ny'r୲rze|",F +*ܹ"xUPBݶV"Raj 4<Z#ː ze =N&mj_ONLHc@ڻjEstf#]]_4<<쑞 +endstream +endobj +638 0 obj +<< +/R7 305 0 R +>> +endobj +639 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +640 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 234.632 537.927 238.618 546.034 ] +/Border [ 0 0 0 ] +/Dest [ 63 0 R /XYZ 75.52 83.4 null ] +/Subtype /Link +>> +endobj +641 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 57.006 45.574 105.545 55.708 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <26575d3dc238c5242ff8689eaa0d066e9ccc733b3139e4cbcecefbbddffcbaab8cec15a3926fba0063> +>> +/Subtype /Link +>> +endobj +642 0 obj +<< +/Filter /FlateDecode +/Length 3558 +>> +stream +tlUv{NnLg ȳ04XB"iOrGlzЃ8Ux;&bpΜ-Z&j](NAtoV>u+y:$ic]F" s g8DAc_qAg-m5.od=陖th` D #?.~ ܕٺ % J p"!`s0?gU* +Hu!@q-. Ũ{nL;A x#>R~aТRd"~ ʈwZHbϼ$+J ||s{+d%Bp^Ud_=í#vr(ܘצ'.]~&pSU+7uK|Ѳ?70wtzjmx?\̚ߴu}2I'`Ɲ>$; 9v]ȿ'7\tIpn],ӬDAUE1k+ ?#ZF2\6jok:廙zex}OklKD0wbirl[cntwJD>cH{1="a~9V}vѮ^\x"NO؟B2VІ,> 51}C%AE)'N"k>S;qyY^ P"0r524ּNRWԸe1e ܧЄmP-WVs5|B+{C%+v3R*`%L SBT?9DơC4"{"f ?흂$KiEޯd*0v5f|r=cAٚa;}1{4"غ?jhϙ~`Z7/%UgXlPv.jzе*[VD?7Bʒ\5;R~Hdz @nls߾v 3L{.%Z*>*}Ω<$w)1"T'1'=/vXϏoޜǼU64\{(2M4ӌ/,ڦR{O ^GѠp5ϠCr)+c+90`gc5StJNa ~=n$A~rij!->9 `];?С\Gw&E' Fߣ߰Js{C̕!(ؤb^ i֔RX"V?~]Y*/ ˜=kg"m>>T9+ٷ6E]uT]iS6\)`U:NׯeEߥm^Ib鄬#ۋPxL'; .k Hdxt>`oj*|>M:@K'6/D&bC"hmPn{ o(5Iա9t@4c PM۫{?1>4wJv&|ƯCp/,jCgW`}1%\EHrhnܭ1*N"H ݕ#b~C%%qp"p*׼CsL){e}c +KY5i`@vDEVa\s_jI{p;34Pn#ذ ] AdV +ILᱩ˗ZnƟߒg@coM|Rq}yHhӳU8]FCo9Z,aﶄKoMٝ~ȃ؂ fY ?GG3zrd@W$.YA0jۘ"BQhtdTYfjNb[tNmw7˹0PS6dp00HmAIkKH &2u "G+!0qx r pw,&yl'[hB[ B"Rq9nA[תyYgq+ٟi}X/uw&\y,]mnNq8^+~g&fd7#|! ?,eEwAn'eZ6yd[3vobÆ=OHQI%4RU >Ϯ6)Slq Y'8s(&:-lZwfN~s#%w;@8çة­rjV4^|,$ԤZW:R|usQd<-,G;T kL^@ %PD%1[OZB,1[Ɯ?AD7oyRݻV@f z%oꋫ +%]Ø=d,}+ ùBz'> +endobj +644 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +645 0 obj +<< +/Filter /FlateDecode +/Length 2716 +>> +stream +%jR烛/=]Peqk½;J tXAA"0ҡX%ѹ{#fNv^c< }ZbVuS?0`+?Cs:qN_)=j$-3Avn!&\ds5~tH(85hPQg S-kTX\)ȣ!.bHeϻRSI58byq"~@.RD; UmCO2ɜ"9ːX?_aŻO7zv H׃t0u@--u?OVlXBgO%߇ÂN^+SIDd<+K8cV=$~+;[u, A:w>YNM`00dPRuNX@g:8QdQgOrG Ӿ +Y=BW}OƆ52+߂Bp{4Ѹt pv>DL8p>;}Fֺ$!~~t;?+,_rvyGJ79|4^OW2hAO^}v<5t +1$V,6ucuNJU{K̩ƲmxQ= oNvZORA,Ӧj!ש[fnQy$>qsԾjxR[ba@Ո7֢P}.K;͎҄C&7M;"sB +Ҡ7604W2X+jTyIr&YiQF]Y_p^)l9b38`%<`'B.ۢBd)K{9WTː~MAt:]ҽ@Ԫ6C',$aUc7d,;P0y, 5n"u&XajB7ͅ(p[msG}_]9D-VB넛(&ctW&yܥ]cA@k3c7+v3b!m[5@|Fwb!:ToAUTP43߬'bn:ѓu' +[>=v_ mnOū^OW^ĘP o+wY$cK4!KH[ۮMq"N}Q8fܡfZx;V&u4K5y)ݏbirՕ0$)ZC o-=Xj T,s 5| [L+dHfal4hRFHZ/}Մ_EXJ㉟j9@I{8F7'jRM.eMz.j18ʷ&p%s,8=f>*ZNW?52BVt=f8kZR }2^IGζ8ܯNӟtM]s")cJ̐8#>xH*X,]^5J1l@uf~7RriSgw<9v(\"3LӚR#覚@A5Qo.2p%v³Ccsܩc +Z|t-f OuvW ]%ړ@Ic:i #2`>VotaDk΄;OV!;>ۖmela1c p0}~몛f$нI$dF)hc*߅ +BwO> ,b t6 51-e;Q:ԹQO5Y!# 0~[CWX0e"l [2%iWCL$AVfO)K91ȮwWj/3yW @O{6gm>b<6sm]v"d#&>#zf{o +EY3qu2lM۾Xr7mXnX3Vr9.'/v&suQ1@ f1\LwP³&gn]hwڝ K%"ݔLesgQa08ẈVh,BۛQKu[jr`e̕`h\\%rE#BB"u×wP{Q8|~mij5YA"VR=Sbc R7a|5ې`ܐy֝C` bBN4̏~mq3 !ko +endstream +endobj +646 0 obj +<< +/R7 305 0 R +>> +endobj +647 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +648 0 obj +<< +/Filter /FlateDecode +/Length 3093 +>> +stream +ƵUƻԸfH(|;p_`h$BڥIFǷ z$!6H|<U*A\˞"ݨp #ѻ5HIX6S0 +Bb`@QxͯPg{䄳hM %Eh;(ՂBOL=s6ґ ߺ_pT4o2>zRK|Sm:1dIn{ N XFXPs- -1>{X$ַDzcHk=ڈ(Fr;Hzj5>MEqQ~ٜ*U/mBIm ɜն?I^Q#N`ㅒY~d3㼍DB57v,\@.6@ +~WG?qm.g*8FH͕$F7 SUgG4nhmT60?)Kunt]̀^`ѓg|%EȖ =`H_Հt0]$AsrY%-(7|wɧPkQt'8% [a!\T?m{@7C3ŧNEҋ<ښk!?5m^3C@ȅ{&)zRqOjvM0_"еd6nXӇ)[ĴcRz|:RD?#VpQE$oZM#X 2%?h<=mcgN??>ʁoL%]I} +F#x~thZ 郤P}OZA:8j:5B_8~IKl/r)L)ALPzmZVVGJumøljc5zɇ ʷ7D <(,/8T5,#yٞQxDkW?!~aDﲙFnҵ$. 6H;ŗ=3w;V +[%@ep/lW=SyǗ򰠢Fʒ-θXM~;F >sZဓz3?%NΚ]/݉UIDqo4#)Kho).]q|'Sx.00D,UZOmȢkp4cZ&q+93–lW |{F8B:M0+dz%tw[sF 2&Vr7<%k}h4b 6;4Qqєӑ{_x=f(S'8uQKL],hF8ΟR坥 7bS>}8d .UE4^Ճ$S.ɦj +|i4P^JD*_)ΤfoᑎIwtv˷z&̜|~j#@8턭I1PzIߔB5B)[L5/=FmmNejIgOJ C>.TXy"4X6Fwkw9ʹ99Tkօ8Gaz:xwߢQqTq[خ׎ r% Z #j\+ zcuQe;Bon>9[M$=ѥS7/}~=[Da3}! u-'-_4@Uj&ǵUťcl%_hhq"MYaErK>AbU{٢|)׳1wSn/Wh6UkQׄƿ3ٌ29iG0*=`p"ᚉc#vTmR B%4>yn4M WtهQ y"<&HSS\x8r(K9-D )s.Q)TM.: ծ|o%j/d#,oaOٚ!]q%* jAFٽ Vg/ԇf W@x%'4C³7 l >̤=EZRJ>YH6ˁ ;4ʡ%b:4<_|hXm}Oq.'ww9:N6Rp &7a$%/hFsW˝W@ +endstream +endobj +649 0 obj +<< +/R7 305 0 R +>> +endobj +650 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +651 0 obj +<< +/Filter /FlateDecode +/Length 2881 +>> +stream +XfI{mh6["7z..dj*cW1%NkZGF>uyLyh[ +K4uN3zaN7WR?iQ:AtFSL"=|BhMNӏp/R[״cudkO",@  m>kLnSggkOvWp%v+G}fv'wC(=r.FJU" ke +R_yAp 0.KX$Ǥk+Шf3AZ)>]/G7[w9MOu612x TQ}V4&~b~G;/%-!|z{ OGaf Om3MkhBYk@xŠ>It@k +9mX]0K6ba3^Tgrn.uc :4v/GȘeRH6ÖA,tnՐL\B.5=7UAYPm'ziiph8w'j$nCVX0P?5UfqcdZQNrΕhtYVΞ5,9{h2 @*#!#@E0*pAƲ؞Ў~Gy6ۄ.^ymqŒ/չּ4jx^%>,Gbܷ̽{ +0PE +wkf7쬗9L5Xu򁨃xYb~lQ8e]s[go +_g0Y,patY"o۵"C~k RԺK δE'DAm߭|>_[+Cz$̭|Y5~.{xzc k6/6Ydջ"| +c]ƾ*u-7) UP׍;2PH^\pѧEGc0s~  =޵B$RS}5&PEDUި3.kg{6Bʙ?޽Ӝn63 Kߗ+_Ju7 I`.q>Yuu6]DB{}WN ;Բx`L%v14>C܂Ij$IH,9M͔M&h~†B:Zs e#ng1BpApWD>ҚѬwߝ +I- 2zT "JVmD%]*1i/k۬T#pE9ciKTqym]jƷlE=9UlO Lҍ."űm2i&B +tX^17Z8{䱫#c,A,򠸱z(>$oGV,q@@TѤ,'Dc_t0ƶ<|ʔe(8jb&z\@U(xOGuZڠfx ,˩qr<-fqr~\َ߯Wf1&Qoy$c]lJ> +)舵( i(V~R8*r?` >Mzks85>/Kg}":zMAհ][NE1w^'Hvi= ho:DWcV)%[ӖPM75JF164Bn(%eO0[`ltzUpkJ# l/ c( 3R/y˗/jrp/DBm_Ð*IhAO]ydlƾ8!X_;n/1wwӾa4^ipeE?m3VRRkCK>PXlkIg>/{s80"SOxX &5\~it}5R 1%c-{MCq Yf&ϒA0 X`$S(ٱuJGup")`* Jn$ +A`쁷+ҠLA)]gɚ1n%_su;|J0LL;OU&g1m0z%m[m0EI>aO=tAwJkY~:JlΦg4-(ָSc/jgq} o +H8+oL rY6-"l1'ǍD%H_8u- 1t9&!HͅK36ڡcîl\ Q*2X>NE$Pl8v{>}6\.9:j`C?, WUwVF5]؏.t PBj]ϋI{* 5k&FQEī{fᔿa§fx%@%鹋"Eme+˪`1iY82*KT&\h5/e9pz +U!d +A,jIMMS O-NA,ݩ>iVGD@uow옹]g^e$ +,4kؐR5' +#ʎ&WR *(Kt&}K߰0wZvS[ +endstream +endobj +652 0 obj +<< +/R7 305 0 R +>> +endobj +653 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +654 0 obj +<< +/Filter /FlateDecode +/Length 2850 +>> +stream +[jUrn]T1CEm'ߣM) L7@0y1 $\lck*\NU_DW ,Lni ɸi%ѿPTdP@븡xc3TM +/!ĭ~o,Ktn x[dHnE_mmu6$)\$Dq2aD'_K3OiIdw R2NMi"ߕ[Е YF*\(lvQ\Ǝ%tT1?ohce6Ĵ 9}js?&<#f4,1E.(O1T0af)mG`Pv"1dg^'xT0?ۖ!\^(x!h@|n+oBwKIE6DLTShyIح $K&?5oQ!I.xb:ȏB".U1ھa دA8F0ÓGP&ũzWqUWȲjT6 ri3KwɗNJ8[M?!Nb:3p=c1fAcoqUaO"qq6O& N)3]7O;4~aե +>pݣ4Ds.˾B53#5:q|n+26\2Ԑ)laԾ}WZg]׏3pǠ6#v~d!qosEnٿ}PˇbDs^/vWE&pkxnLE=X+u!('OrTCg+>ȗ88j IL2a1BFC3iwe[mZ0 N2WX/JjF~->d<2f1gڽe8W*n;҄Iϔ>g^^Bx&WA=_! _X8 C eA;œL iCK&;|gS^'j ϵiͻB't՞VXH^_XN#zswMM1ڻUEAXr6!9*B8TD!zI_~F՛"EaUO'dSɛX ܓp${GbWEp ~6@o<@Xg,p)d@%En>z(CST2-:~ހó*^& +x<]`e=RiFƐN'ϼ2xVYC.f|wN;ȕ&bckZʃy39ӉM)ހj^zy < ÅIj^?"F +endstream +endobj +655 0 obj +<< +/R7 305 0 R +>> +endobj +656 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +657 0 obj +<< +/Filter /FlateDecode +/Length 2935 +>> +stream +zFՅY,3b WE1bY!5V0 + T?g˖Lr{;ħy\#3c'_zֽIR$k F99N9.k@u!c+'ӻ>x%QLg ]&j&N8Q{ld6-+~7g1Ńtk[6x eSŎч3,of +O *Oa H]DdI;;z?Qen1uwd9,^cY16GQ7RaK uH~_l܎}ᘻmdxD' 䲊5QM0|mkJN)Rb?x_\LU@c`o "𽆴<=V^w +rx/cLV[߰ )b_ ljNjaS @B8JeG]JF) 9NJ i85] 2Tgj\$a>ʑ'R8 Q{-ZsyO PaQ#$i<0x垸'mBbh7N{-av;I?d! z=K@AF7S#]0bC 5nG|o/1rڕLOP=А +* +NDيrwlbNdqqKS RǺ٪dS;ѩxg(i\G<Ցzu>iDXT(Cx^1t uvmmqW9G]CEDNl@vmC$lWJQJF!3Tdwӗ5Ù+ HpYHLG f>-j~9_1h1M:B$q2J뷁KЗW:**(TS[0E';UP\[T7B Č@dv29KA*(%zP:c1eP*{3>T'E&M7n%zsx +22}.Ȫӧbjjɿ{$bW2!ؽ}ZtZ^(IeJ_p(i>F,oL})*\[p' ++rxq7[nH22ӳUI1W> ES @Ƣ7ͤ\SJ;[_O?g +*.r1g@d r{>w) _ OwޮH+hP6lC^wāTnaKeHrczp{:"YaxL|/,҈tmUTZѭW{٧lԝS O7]򊵿yJ30?Fz~i*tBZߡ>˟\?Μ:52p`=zvV FԔ&׷;J۩(=DUm3h +f\i@EXjRfp;όOX:ΙWڣ]x% Hꅕ$msM;2S2l2yW,(q;!CwI/dOsϿl *Yv҉K;3aU@R ,AGg6cDK0Ai}Pg*=H4Ue0]NC2@,Ao/~ਞ\q f)!k}ZW6j0Ti{ +l> 5i[_]7Tsn8[*)#<2t#B?]kfQsªxe+ ad'ژӹ-xz2$cJOL:^\&}n?^kk27eBX|xBi>Z]~4}jU%9d=h?m՛.:oM H oA+:sҎ }CP!/`#rE<{RzY/QoRZ} ;O)Q-l!j[,Җ27%\9 .aGjwfL!}^:՛ϧ#0-K<1k Y:>}כYa?]^wAxY]s +kʚS?/F1&zq|-/u'G槶*a`FPsױD6Cp˻܈%Տ:4]gKq_Yw`|iR}8C 5iQ`)g> +endobj +659 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +660 0 obj +<< +/Filter /FlateDecode +/Length 2590 +>> +stream +aB-ˋ3K"6[BX"w R&?;Kf('ZYĝ͠ĵCE?Xw 8jݎ˔\kj{Mf~7NXbDuFG׵)='. WLi,OcF0QTlgh +2 B\R R(q@w\ *+s,(]r1A~\=pcyq +x Nkl +'7ZRk૞:0e&b%F}| H>vgUPM,)j%̊l{^qз~p(7YQ6]&༤&Ev9h TAwn_lS#%zv&+sIJy$-vj: ~}2|qimNTx2Y+ibZ;v\?ԑx=A +endstream +endobj +661 0 obj +<< +/R7 305 0 R +>> +endobj +662 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +663 0 obj +<< +/Filter /FlateDecode +/Length 1778 +>> +stream +M*5%pnߎd~UL= WX('Fi5S[l)M@m@NE*B5.h>a{ji*]"{=6r+RAz<:F? +A\Rz2Ŀ(_#-|y!=l5R5a8+F% yjp#%aSےcSΣ:҉4~/u`-@&|xɈSn}sfyg'5uގ8}ab ,B<$5HY! ~'SvkآrwFhY/ ӽ+R Cs/Vdn W~]U(|#%WM'3"''Z-c}j6bv{!vS"0VQ}=pX@l9C/Ak~X{`3܎\DW e+bc03:rr)Ծ`hΕZ"v^O8Dk,¯4"Uɱb&ٳνm){oraX7V|ˈj`:ltQC{11-~s?[;52vS3UjUM"jCe{<4 3Gě%67BWyXtEسp k-8` |8H;R; E;] t0#%}#W=gڐ\Qj)1?ICwV-Бc,l> ἜKYHo KTX,\l3IG taς.uL +&!M>|r1aoja&% +Nx&ϩ^vQ :MF\nowRXFSR\P⭏N`0JʺI~g^,`E*qh+~Cw!r^v j0"W_C_哰q~\H|0O`]uϛfr[ϧ+kY6iGIv7T8=qb|Д;3]r.27ք'ԃAĂN`CQ WCy-*:N2:b6$R@)7Fq.F𘅮ܵ+̬venPԃ: +:7Oڇlݐm"4&/Qq뭡_>]2KװOD"ХvTGyy#\Ąy2p& ;XR}N xL\+$`@<03zdcޖrH!cC5eavh xu'8|LIt +\p,UIc?~t_h5s{Tf޻gO1,hoIq- #:<U'yς +w*4˦s٪5Ir߹: Y]C_d*@5Y+b&!R.Bs) ϭ՚8q \7Mvl:fߛ5y\Jmro "@\(}۝ fES&-t{,p?0zŎC\~v0 rA?ڲRLXvU߾?i +̼3Rߏ,oMQS#Xm&no6-@ Cr6>gy +endstream +endobj +664 0 obj +<< +/R7 305 0 R +>> +endobj +665 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +666 0 obj +<< +/Filter /FlateDecode +/Length 2732 +>> +stream +@PT.ٳXc\aqسPL9KBO ('mUn]WV'e?3FM}tz|a?fkJWXAx=+ +>QG+Hg֡\{J7a ] +;@Dl\MbԂ&6E>8lb֙T TUl݅P0{ F;`9,{]TN]?ť W0?LxB9-8YؿSj%kGtۭ??.9pS;l/иfʈ诌&$urlj3ޥPAs`V"cONc)6g2@T"6lcb+J (bDh |=7<3xP +uKo쥎)rHMQIj$uf(t^}Ki@Hu!ْN kylW_/=aKziy"߃$HsĨ_тt4[vEJkXBv$ +]?;r75N&i?տT `FdsWBq3gc DPh"vE ?$UQV!Ƚ +@c+ ;ͭL {#F4CE8q  O8=A7j4Kv{51vh:|De +̗ʙgAK!{rDM•9e \͈\\"zx_]ѶHY_ݻnz'FˠZ.ŠQE(_UC U[8R^˖dn)`&ho=P޵l߭;e9V$CׇN|)!N%Yr1X͖B9ՔpZ~I7]!ۚovc%Ax*V*O`^lG:^?e#fBU\@mxcue XL|CT%!g* dF{cSX6}WW^Žٷd +endstream +endobj +667 0 obj +<< +/R7 305 0 R +>> +endobj +668 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +669 0 obj +<< +/Filter /FlateDecode +/Length 3752 +>> +stream + ,$RC_Tάra$j0</ +Xe%E~c_Uo_,vULMB )W1 Dn*8WV>ŻJ˜i L{!{<+O%Qc`B/V&THQO"QoUɗUH]VֆW4 dWg:T.R&ZQ72AL9;3UCeZ2?)"4Ko$NpG l5ЛNVYڗ`0؁hrd9FI5D42!/b_fTc-JvO S 78;tT={hƥ4~&0&pnEOo #FU[- "ޜןmE_j%.j= z"_4Se+?d Sld)/\ex9l!'o\T_&N8 5^ <N G[ر6a!-ﳼ=8O (S.zG:URf>W-;Yv +@<1h?IO`|߻ä%u菴i`"|#`$,?6BV||T2+cKRҁH !sIKl{ɭxxy>FJ pʕ ْF:ZSKnm`!ۻn8]YW0uhJ6YˠxnØGd[¡]1r3;ju6/ܯC{N 4 QDB.'˩A{&}yaOQ"`Vz}ya="Uο%D\14ַ4"t<51JPV/:Ȩ8ip:a_k^j$tH 3{AX0 #n.J Ceh+BR>{U_tn(=Ib(ǥ 2dscqim+ۉצ(t\{qD?4- +29;Bm߼so3v<6mg aXӽU<~_Qas;(.1m" +J"oe{,VLI!Yzei< T-FǢbܲoo3^ d)$K.7ni=l Id* ϱf{Nf])!qy$`u ǀh +.np*xs4D)>f_O{I#*G#=:!gE|UM:P2dܱnZw2j`$zv+Q}qdldr݄shI䒛CFiM\6}D]}_\D{m&}ߎ°|3 Z`κ3`"=-_@hDž{3J-[F  pf2~Xq->aDA8?BƇg_(t4Ov4ȶe (PAOPuDk5ѩ7󂧺A++aѳ混mjw?s"4XO%maqp~ɵ<ҩ($OLL '*Я7A03C(]uz6fA(w@-3 C2Ʃ;d,FQ*Ysܿ&'-esLD:)/oo@)enG$ 0:/%^ٻyK.GDFdt)r=RyG_#:zi@MDv))4 ɣlTt1,zxN\ՅaSK ހ+'Q`+}(7xz5 clDᑽ(RŌʷ-w⸂ÍD6F%VX3,dM-ᕎ"#Kf%SL '1&{3XTw*F)=w,X6ϑ H>m! +)?\""JKww<# ͗n~x^mꬸuN1>?tίn*mj:Fg]P'='Y4<̀R A*w諑 2f Ʊ=~|$ެH!.~&֤$ŮDގw ++*dGwɅ)\_Sk,8G?V[+'j¼/懎z8=}-x+꒼s2v&1ոg]"H9u1e{}}'Ci^AIR2QUwA|r/dݵj4_khzٴ)F􍷱qQ?nܺS֘Dʅ2 fݎj=z}T5yt6;ؐ@q46X*H1&#  I[F bzN*HoC9.DVf1m@]ձayϽ;_Pؙ. voTn > oy6 ymW/p$Yr L +/S/[fU&s׀8T,lM1@^\Ҡ0JmK{2jn\SVϛШ¬l= hU3*&U@y TaS CW uV]EClOR̘gb+ 9kI! ;v|J8274*UXK: Jx0T?:*6Z +endstream +endobj +670 0 obj +<< +/R7 305 0 R +>> +endobj +671 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +672 0 obj +<< +/Filter /FlateDecode +/Length 2908 +>> +stream +߿;,]_]`qW\d\5Gr)^-cW8, zz-v26 +~;i NG@h9l¨91*]6f)1{"JSgݢ0Jvu!$zՖuvˇxQrz'WVSr$^_ow?5TمX1{lFH GhOA|W 7NŪ!8tc_^lJu_1&d D <"qU"~ 9Ωq +zGcxW?2@pE8FmG_D`9"6HKϺ lM1`2hAtz^?h>\]/㱉 +wDj_-x(cƏ2*wPz&vMؒ&-wlY ]=^SSl/ks3>SlHN` W[@Z=Ng{F1>k +lC/ܡ~fh7Wʳ:=$?:^7׉2tDPH.k:>^?>{-` K4*_I(MCɲGR*- }:mЏ!>6hx6 + +=?SM|=6' ])ߧOy E@IQ[L! (%y f8XluҢ +8>,gi%Ƿg; s {RխsdT=FK|,"ܯ hRr\Пմ༽w틩b^; g Vqgg*Rkƹ*5oeZ359I +=IxYHi]'<`9K+}Eo\b%  +ڄ2|lB~Y2dQRwpEWeNLERKe;I5K  +Ue4`z~!C$3f:YC{~V+D7D)"+ph)P|?{<[)uynԢ=r]+TdMj!Q69(  J{92mi@mp_Yp,1nGunSΧ q엑/pZW?W^"T|P=6='wqУӣBBg>+h%7=?9Q@#[a6ŷb%VH + Pڵ:MhLcdѳ;eKD[I?jbKMxX)kPw4LytVE}%CI]sG̤;)k'E} ~ԛ\dEǭfhhd!N%Lad%ERd'iE+1.> +endobj +674 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +675 0 obj +<< +/Filter /FlateDecode +/Length 3141 +>> +stream +^y6G +-Jφɰ?:+V/i4-yN//xٜ .8GcreiB1eidE:0D YL/N@5EtDh/ +cԱXS"e/ՏcGq|$fGaaUy=FC\bf G+w +g)NASLH4~6D`"ZBM-zS +(FTwl!"`Ȟ |ʬjSe|V^54~R0ׯlAרjϮ)j`;TDhf*D9QP< g1#tx&#> +MFk wu+mkhLpYBG ~",ÓB9SG򍟕< ZLUdPy$6Pw2$K\JU6"v! T69a''UCYxkl^SeE绳%L0VT&wҵ>ch:E;+#.MF +JALz"T$r!?>? R2i=]-ְޫȎ3>SdmPu(]-YNt '8㿎TQ~ߏtL+~;|ҨA昙?l'؉D*Jh6BDNC Usf[&+ MiHTRl%A/ePlW}hᥱ<R/ٴe}!cW*\4-x l:H\O%AZ()>"+GAS]LL DH;/{5ʓKC~uЪ8K}ceH:<`\XVVTaw +cD-BzCXJ*Rr=S ZKTW-qn%&H}"e렭giM{0OM?3p|7h[ZL_)Mw<䲑,L&EDX0K%ԮyDX]6Fqr{} !Oi}KX k +by͠^ nyj@wMZ45d^Z$Rv]/&[z\ uH~vݗ@AV"DPk1M \7k'PvDcgOT?֎84b)9lGw}xZPo!Mf+IDy[ /uӌOM(FܞW٢(Zʗli*k,:~kRcVN] K/ア˸D}|NC="e3~Dg}Z\C!aP~V߆Nc qG]E>glZhiz$bI&ֶ:*y;F k!l3Rorg]}뎯戡U|rBsSbU1p(- P\DX̵DsD0gϱmjj.Me`ذR@XY5{BB%i1CeH +K&&TCe[/rIg[<3]PE˽ 傛ȮT :l yn#_o}R%r5~neb ҹc/Fag{GD,kC9Xn]f(Nq+f @%M $ƽJ#*M8Mr*&a"qf)."B&[IsHF"_]>`M[̏|{|Nu0,2ou} t4[l +S ӹ^rGoKΣ]km|:ޣ:Lݻ8QqgSꣶkl#d1YhֽTM7L~YiĶޢa| Ր4`>g29}Rx_g2 +F= @6˗L||`*eh=TSAfZH dHDΏ. w9 ٹ#CQʮ쉅r0 +endstream +endobj +676 0 obj +<< +/R7 305 0 R +>> +endobj +677 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +678 0 obj +<< +/Filter /FlateDecode +/Length 2692 +>> +stream + +$3m?jb)FkF91ns3& {BrfQE悆'98؆u5T"p%V(_LDx.M,| V+~\#֩wiZ͎M71d;]֓<5fN% >@^JGU~u &D訂(edp7Odxv/]WqoBxUkInԂL$9B),-rӲ Qonf~ +𧃫sԱjzxsj%=oMpt dV/YѳYw 7XղC4<1PqÑC%Ûқ㚬н7*7z'*"l1MÀԊyǁv,pb@eA}m F6Ki*ڦxC;2#-T*UG -ZIQaD` I*S̟F_H#L,l^錰W[;)=\?S-˙D80)#:|8r +H=¢j! u5\B$~:}kEഖ?52jT6t.O-xt"7 6/R_n&*dB mڀ +laWC}͍^fj[]UX ?z-5M?fYЙJ% =ng4kр:LP^@2<1L$Ӂ,E)TNݹY|c)w9@Z5@?|E4/+\`ҢOq%D_N `ݱkR†$Db>yߤþFQn=rȅ[kMv1I7:k`[B}X*]؜J'1҆"?BplpDNR+m*)mPy!$cHhUjL)$kj`챚SQ]lb@h^ 8ǿ#&D+}1M]KTwhe@0\/Zp`:&u\6-?!J`.hGA3ap@\E HՀ dc%iIl>M-YL?px0VLLj8I߃fv2iQ@l7rֱ S=TSf[t{Ł0&;@oZ7۩@`N\ :w:As%"KaVBZfVV}) 0AF?9`GasJIEBa爑`Y7`Qn +3_ewa&Kp/{?`BT]:_'c] Z\ g\7<0 v>=9pk˦]֤&~NŘTgnH@6^u sd$)op%pCN.7:Qh /<졬0Z^%'^T\1M}w=̷| +ڙQ:ՀT,w6%G'3eKFL.b.p!XTLw$XWn7pyUsrX[YDWVO~RF^|+ꦓ1@񛚥yدNPU{DuD@/½5PI`̻`6AaDzXYp$)?U.K0'prVXkdG}-?'ueR;[n~LPz[ +莱X-DM.v7ax拭c"m[ O w(38"2aT/t!%MLx~|mHj|{MnR8qI[zHE, N݂&}`v|K(Zx5(@H¥G砭CC'lcplWZWg}>j*X3 ,9.e6p HRW +i(7M9k1!|MB) +RHi!#'(zYŮӕ#ǣvK*i1dZ庚 Ǹe;&t"zf7B`FOq[ZA1CrDYhzr|%6 %aECױ>pt;d˪-Ѿ(X"Fߡj .d +u)@')hUz{C,L$ (<=Rw>{eFݜB\\$N]Klí7Uy +vch2 +8oWp6 @k2@d3&U +!.;11bЪ<ųoXͪ+|2VϣW'㰈/k(&q_,iDroMl`=Up sdgU[0,f3+gkH;lPP 5\gbM_,$}M"Pjva;ɒxhG%ׂ/X*e@εZd +endstream +endobj +679 0 obj +<< +/R7 305 0 R +>> +endobj +680 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +681 0 obj +<< +/Filter /FlateDecode +/Length 2947 +>> +stream +JDRgS^ XA/`K ap$҃aA]mUCFJعK[zxd>{6Z6Rȉg5^h^~lo.x"7-zf LZS`BF` Oum#qF G쓟rTPq23 %{Fcq/ 4: *HuJA懲([<^+%v1N2{岎)tpwH TAf30$ݐequ`?Szj Mȭ Z 8+- +_RVv81!9㳒3d8ҒI;r͎7eL{X '_VrUت7¦;6Խx}SYYYX_ ]umяȊ}iLAáU7߽`!^G~.B2 +?VKRD52h< elH<\S>WӳQjMj$2U>:s2ˮk)TEE6m=I `v,屑モS߶DXqEF\!_b58e0;A[KWpY_kQl|D O!yY?t~n]@Gjq)bI|dF8C_&6C^CUOc-9S@R-rQ%s9Bʇ!dktķ]kYS}#B#=+ Px4EFń`W8(tںv*NA (ҎĘ盕ٴy[\Qr, +FJm):@ sk/J@!]Z߰W3V!Q)Xo%9 tehv:)QEcL3̌ |ޅ Lv(A#uYtKtO<"Mxa?ƞ:M9| +qUd1)"`]c`j.b6(+*tϣ,4ޞ<j ܹ. &BA#yHtz8b*Ts~w$ShW 1c+Tq6O4 `n 1et8C'Q Mw)qZֿ@gܙZS^ur xKF_h8U1AMeH>$gbc43IuyPxW l^qNVp"HͤVPp9KGxDލQ]lXh´:J&X߶_WO$ԝA cџsHCV=;^}߆F塢X&&FQs8'Oukx)vֿ߈]'3/Ux~;0Ho~:f~"mgWʇvS77/ڳwE(l0ҭw֨=-5Ch fEa 9JjyѩuSDcjي &xZުP+XTE#ǶiY>/E;gaoc4{D4"Vh0d +}_]S}O=Zp +D#aΈ[NZo5˷1g8u)8ׅv~ dْpd}82Gg%h2q13e ">Ӎ_8QuxhkpI8r :x4O'# L6h'cv-@ &PG8Կgf3> A z;v:4r:Kp J;&ݥJYx֔0ܠ"o` Էsʼn:=T&9DEj8>OMbR[]QdwEF?suA5*B\'$`٪0֦zٌ*i&@+G"t+1jj91w/f홃ܯ쁇 N1~̬(V]x_`8|h~fWrtRJ&;}ƒ;7-qhl`ӏЈ9K8t[_ 2{F+&WC(f#1Q"MH5k' +Ώ6I0|/ RN:E +Sdkfvg7ѵ bJ NC]8o(Gx0)+=G£ٮ.aRU +11gߒ"1=⏷Bx0fH吼MHç,2_/2,.uQe­QK.c43zaUBp˱zH︑[f/՟gc#TsXڡMV>YكO zV@7'5\-Vm߯@C#rJ/#Ġ*ݴvݍ WR[å4_~i!^db3łp{`q,DTl!sOSg3$꽣zIΚn̩!BJoUbUoa^)`Cmԯl K +endstream +endobj +682 0 obj +<< +/R7 305 0 R +>> +endobj +683 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +684 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 98.636 204.824 233.868 216.984 ] +/Border [ 0 0 0 ] +/Dest [ 61 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +685 0 obj +<< +/Filter /FlateDecode +/Length 3506 +>> +stream +^׹ v9#9)fd2bt 뱨U0TXz#]L__N<\ Hv^qA+)r`&r$яfU5% xv>| X0I#p]LjϦ2L~m$翹piAqΌi?kCX"FzFJo5?Nj^uIOpn0J #gnpTݷ,vсy<ٕ +. &L' -#)߸c`جO͔)լaФe3YU>2 4C8 KSAmIŋs +إfAlטgGsmܰpPX&. q+´›5A^ T' IpqRˆ.7N-]0d#+]4czBaӞk,|4?=uMJcSHNb[N/n0pjmBr{M7+?lz'KM ~?J@̢ U,D%s@q0:ԒoQ ;L袽G$rY_701=YSN*7>y1,d9Tkxri|aLv LygU#[|mL(Do°)Eu0#oYXQ®B5x.|Vz=&|.I^~ z(h' 87P:|H{o0lE-"ьn'.TT57& tJ/v,0D[tR{( oG1}l dJRG+v 2iU_ 0.f~'# +CoĤH";lb Ƙ|AB8Ui3Ep0?4VVʂm|H&!H+I_g@&lٜDZ}L;-Œ٫?b.)!C뼚PbKZ+x,z"6 b}!Cn쵕< LWczhXyru s\|ʛY ܥdG;D0$$5MR|`@mj<&CCL:K07~҅uӡvԁgp_E%&,r޷^ B',Sx?qoJ~( wThb*sػKJ `h.IŞE|]^:y&۲7L ½ _ q) @ g%d2 ,[1>5ش C h}Z>cpSؾ-+%pbXb ;l$‚{-#S+d;"FQ9?hD&AU\Dj'.xh4%M!DL^r6D}3íyDo7lG: ȓ +eў/֤X?ILx}կixDu&M)RѤ )DUwh 7gA_yak(0^~fFS2Rr<"3pX*^y8:}ksr;Sá_fN18*[1Y}|2IpJ1m(8LtjFT]-P봫..gaRS~Lȯ{v-Eu #3虐1gWɺq\;@B\y\FIRϪ2.cL\_裈׺W\k_IW:^fJxOa d )]MMG}0X_ȣbeϞXG*DWlU'ȺFP;VBuHz|602U`6pa[kVQho]~3J50*܏Dup,=*Kީر/ +N"45c'FR? E\zAa/sRHa!t ;M4ܨ0yz-a+dc4Z'EPКmWZƎn}+ecmeY8b}j+n>$^~"xzr`ZUЉCLͳuH 0q7[]dw3 |D?Ox4zPikbqR3Ox~u!Ƣ~{7~u8ozT{Wze܈gS/ڱ=UNwEҵN;O\MԤ2n(N6yԷ]*a:ҬŦ8\(26^6*4e0ll%ЉT C̬ogS C`!5BALheodzWa9_&*N&K!)u3C=ۍŤ +N9w +}^+1T4_||% ̼/ĸ +B~)VXre(T~2 ;pYUj)&iyNRk{ftzY8l܂0}'Mǡbh?J:D} t>:)b흦s'aHT LJuQ^, br:v?jrg79LؘO_`FH MZf-#9_Q\qީKХ*~`I#\mĠ̯ Ëh .nz1im^&e- )|M/*{%4wfoB}퉝Sfj5eH|W˞{R,q3d<}>^ZeOZH'1JsKnNE)R +ɀ1P6[֕1|WG6)$;0Uh +endstream +endobj +686 0 obj +<< +/R7 305 0 R +>> +endobj +687 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +688 0 obj +<< +/Filter /FlateDecode +/Length 2696 +>> +stream +WuM}cۛqؼp,|! 3r`u!hZz KT18TO`BCCKb N mx73gކU;kssyVTՊ;4j%^&>(MXfB2~+2 mFH UF^\a9^k7 7f I_V)1}4C۬%nlpU*@` eSkGdWZ6LY_B-]8EAޅS̥R<alL:zvh;%Jі~Q ܥ= +,U܌Ip?c!xџҝl cV:ҫ"Bq P9p{m#s/oZ@L`b.2Ke@7 ڒvV^(+C7Ii`)@e}CBq7H[*3H^uDзӚ+ [acF+ /3Fkp0K2$wsՅY@HnjwO qPf~,B{rIA<Equ+8~9 p-5S9i'(& ( +ۺUm7r +_!@wZڅeФ"*ٵJt7 qOh U>)kUѥ~Sl]j׸Ak))n.&p?!SӨݽYshj .PldO31b؈o7"s$IS8>?#XlByO6AjxjZcPsKX6>`au4M51R0r}Mئ 𹙎C 1yNTrZHnn҆432Iښ S erRj M;TQr?r +AOh)9}vZ9^W^d'ia>U\k:MNOL]a35o}_S@&u_YlR /aĦ خ4}]'+i)W 5 +sp*qeTI)A /dR:sF<@3d_5A(졤>˫%|\&*MZl;BSi^4NϭJ؋)(3.ڞMGET8b ?!i/dտLB7t -|+_>Xp6#"Ϥ 4I)Ex$q'uW,EMZ}IqH ᑅsyHBNC}‰2tY߈vWygȀS\YvpS40uz8@4)Ҕ3=Fl2.$w}a;ěZS%:)nfE<+_ĨXeKk'HXK.)EjEk^`ե4Կ"M4ojA4㤒;Y1}9?7KϞ5WdЏd#2ec)tRCi/.꥕K+hݯ3!Li-:mY[F HvY> ilU<-;Xb0)bePoZp_)]6JV==ߍc>  |c%)%?M^څ_SA/nU=~L;z,ң>E!T~HG9f"Xjo) @)u*ؒCWۘFV T4μA(Җ WGoOzo<=5%[^}1T9m2&$YEF{)p,3R&6yq2Dbc1GK-yzU/].^;< Ƭ/hDZRrGFϩVCkrP+':%!&bԸi|6tRRօ+裀`@yF'&Jٷ3 A +[bqa&hn64:Uox=z!w:n> +endobj +690 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +691 0 obj +<< +/Filter /FlateDecode +/Length 2817 +>> +stream ++eݖJzUJWh:$|YNg,W- +]Sor!!+kՊf3~3mhȍdlΓ *i?#!9~P6Oa}e>)'֦ݾ4.Ad3y婔M(KKԉ7Ąա]W  h| +/'Y#(!#$A;$BAeǛA+0]]è-8]{Wfڰi~v[_y2*ATCƊyh̝bS̿ckWmui3((dh;o3!+f;̲{YxfCD~SIh2++]C+228U +Abg53<سl`#ob[sj9;StFeͿR[jP:͕nd0NЪ93iP"Bk?TܻmC~hp֞[|18'CkwOYT w2ameZRwlC)p\7>x&IEܬ}xZJ$W-^ `M14ه +Lk}][i4`ѣkjϐԊKAO򛼡̷TOt!S tzH"ykpmTU]L+܇w)d}WC?ud鴾b,>@1QEMGm--\\!A[zlaţn),x{MUMΫً"`d:uO&|R`sH<)& +h\_q^2)q0A$`#{d$KavEIt]o];2/yn1{ĸ*8 }SOg8)HKZgиu %Anу9_ťP^KT;Bz Wt嬿 ׷&T&ԂGKKOW-iFO-_k~M(܅l:lL%/-2FgځAlһMa|bI>8Dl7% +dĮO'~ 扬7e^9ZGu"; ܴAlWʖvmdm)~3]6do7ȸSSCߎuo~9V lF(~t bPAFƬ{_ 9?4@72]v_gD1[I &<\?6Y7\kTao:\j3Ͱs4MDIk OlT6s=7M rxͺ4!1Kԇ @Ģ{;+ui(RQf!\ 4Ĝ;h##yPm# 48R^ݓa+$*Wہ2h"f„3gRU1Ꝏ>gۦ>'fC9u7o-v]b.^ 8ix\֡h$5 +@6dٟnДFEBgpqUL 6\4_#'dDFIE\ývw]D-lz^/pRD'#"4h`侎c+Q loIu+-ǹɞYzr] P 7ZeDթjWٔyü9Q/֔-4! wp*.Rٰo0iIf9ž]\tm@_{!\:y0x4QN1Y$B.[*HiYnDpjlbX |OzҔ,`TN޴`DXNSR{گi[Hx)Nf[~͟XYV:r\\ FN,y8;FdU 7LA-ߺՉjU"T^eQyF'A9`ya'q V~ԅGd2 +endstream +endobj +692 0 obj +<< +/R7 305 0 R +>> +endobj +693 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +694 0 obj +<< +/Filter /FlateDecode +/Length 2640 +>> +stream +svaJZDtOo-jHwdL/ٰ̌Pȑdc<~Ԃ]T۵^)hu@,qGML?\":DyzZK=ozK7C'VQd|$G1u4:_Ը\l~ %H^%wu?) gGkZs$!]u$Î`&屬oo~^l$bg`b>rP=RrR<*B>P=5g>kz1IlLH1ЉvX[rg7mhO񹱜7ZY~xy"ӯdrW k]žbX팵D 'T;RMФpԍX6tT;cXDm),kk/U2 ZM:70FX {mE*w?[eW-x9B۸pp&~ J0lxۑtE-(T1=- v30M2X.-j,K>8rqq4nŪ`M'\'/^ A<91*- +h٠%!KŅS"8b6`*]7 Z^^ +KXV̚} +ȥ|)zuĚSٟ92:?}3rO.dEͷv +q`$i`I35NY!L1woc'UkKMDC)6M]8pu7cV+$F_vhj'&Up`F($|yߎL"JrOa96ZV͠)ʤ)d"Ha{ +pb(!&JfLJrm]sr`FdNh8]4nNK'WZ9Tz}4tH2Dɦ9?)ոߏ2iMbjvR"Z\v(z2z8]AH(; 7!)F.mUVW5zk,|}ٸjGMf"{۩5f R dTT2.̦|3fG%#q-Ņ'\Ć}IDvh.nzv)0}up nqP|"̤6bpd]S[ڀnsb.A؞N8ݱV\>dPńtO+fľT-pCP=j:?nEŮJPNjbvo폨.Iq;C:G(x~EzvuqT9 տ8L_3Dv2`'cB#hZp5G2h I%,%vfbl2e/URƭ! zux5G~IX3]"E-\&ԓsV'Ykwb'/iQ+o8^ҏe %K͘YF PT" N:Zx(۠VN.qTx<45k5&:N>(IFts %^cu</D>؝32¥e$_>z$_(Fu6:Vo j(+Ϩ_=/؝ daqԻPe S3TBY$nʔ xNz<l|A #gNu./T@+È*@۫Cs|f}ߪn\< +bp-A>.3ɩfw%L{69:X8@VV,sTbrOG +e]~$+kd yeAW%IOg)HK:n_ +endstream +endobj +695 0 obj +<< +/R7 305 0 R +>> +endobj +696 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +697 0 obj +<< +/Filter /FlateDecode +/Length 3155 +>> +stream +CQcVh)? D_G+Jjv.ý"8/ g; 1\/Ν +l\ΘZ4yz(.YhFD fػ}q.[$n<Ӹ^u_ՓBA]ϭZ=ӏuF{|M| Jq6~N0+,rcY:IUW iLYik~#*Ni=K)ѨW{%$ӓ Tw^FŠ맘G>c"6E/u멒 w"ǎFUv֭yqm)3|C5OؗFe 9ӏ<*oMÖsqiA^DKoCJ9Pn^ai,*R,]3|@ƒ,FȞ +*+ԘN42 vjDPoGJL5za:d~H* MXiՄUa^C]1xYlڷ9<&2^0!˩Q= ; WGm'"b]h} yCkil֡,o>9*A"mFY,Auj5M_},\^{5-{@BtԸ8I'sW`SF')_8h >,:ɣE'If.Ӥ͊@.<]LL++ /ms/kY M7<|ᶙDZJYQWKO,Uꉟ.imL7N/z-Qkh#PT=*Ba&WXl4|F! Grl-\mk.@}Ie'ڮVE6/ YW0(:S\7u(((D2&XryU2:v^ w0J1gy`Wjp#f`qfjzm6 wTP@Ƅ-漖g) 0w̞Zx/vbP(o9]aglcD}R3<^gPq'+Z g\"O2hH4k /06o|x2dC$M@lσ=u| Lx7Oe0B$d-"ýWq:o~ +ݐe1UA<$EΡZİ Zx +y0'5'A{.q{d(Kbbڄ-nRY{crJB1e$}~kkg$2Bt[ vwlN +"nb¹H?U)kύ}Oa, }[4ߋ"Tub훲m;FFE$ t0}[BJc>]A7J5ƫpcoQ׋u<~qKr|spnm9a^ Zsܪ_YR=HMם 6 \ Śѯ_Q +[,_#vjb;VDŽ@sS)X*&Ls;a3fDTIr+/ѫ8ٜQܐegxkUk3MT#;Ebr2.L\+-k_%W>xN_hHm;.=sN3Tf&ƆJ;6xX>&;[NqS^dTg47*Nl{ng-*'M'] +ZDCYϘ1e"Np"@PEciDCS 78^R*<_l_\u/҆  +A}`~Ob?νQ$aJYf@bi/C(U`gми1Y&?U=y30IslPW+!|'ɢ}0ҲlO5^u;HTP? gJ2(`c-н}|vgU¼rC2 ܏OTR3Dvv |U8Q&jÙVffXAƙepԉ\z/1aV7 #uȖB:r'?J[,,B~z!_' +endstream +endobj +698 0 obj +<< +/R7 305 0 R +>> +endobj +699 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +700 0 obj +<< +/Filter /FlateDecode +/Length 2559 +>> +stream +w@rd"}RdM#>Q!D%ЂQYdm-{|V84^NM猖8|t υ(07s+/P7<^pCķ({0_Tj2R`ݡ3jC:2^6od9UFu fVzWpL#/1ē\_MG4$p$v5w?K6z<m;NsD\jumA<Ȼ8Q9;MR`B[c^=Jc_^+)RHl-ixV7 D6 'JSd|S>[|R~\4N1mZP%yF tc>O{KRÔ?l;  \v,G bfݭ@K)9R ]."~e__.l8|qR5ÉrF"3"dT =I׼w%P} !O&{q0x\GV;gx!Ҳ[ptJHk2i.=_y=dytuG [i/-/9 yN4"-k;*!WP,ڇ`ڂo"QcZEl~gvZXV>G,Ivc=fdȅ22?Z*/fktѰ7kzDW_R' +nV֖eAc{sśi"rSN]v}zxi=:T7ϙt 6+1KƉEAm 5b9=|4jL4fԦm&Uo`’ L⏼ h8BkX#۽5==r_W7 bQֲ4 4= +ǯDWw,&/Q{飽⸈; ɔc'i19V8PePy0ճ/LJb7]nC!&k\ +]\\\Gk[˲g4Xpؗ{zŢ8OdU{s6 GPC/! uꮧ.1L8ոW>w3t hT YW@b7T8,L*B`zi;i{BY@s~"J|G,/XÐ:+_{_ 0[! sσU13n# TYJgNB aRn ٟfLڨ֮u.W1AMTw"1-^Gju]6ox@Mz.WTn,tk/5U2yeuW n(~+1{3'8ͧ&Υ$ t|n{gҨTT!-dϻfPп=4wVdLԿ.av8sNJLvn{zܯi瞱j$8 ~:TQLv<w^pM]HZlhE×9]A=ʊy.LAFɭ7*#&@)آ42*1R ٥RἝ1n" oNY(i`L*14Ŝ$y: b6(+zbo)Jmg.dhm} . \Ɏ0;Q Ձ @? /DP>llj/ j(٢_ Jxr"f&6'Tvf\. j2MAK+8/_cކ, E ShuÑ4eEmK̼gtsxa!?40]JZ;QХ̅P^MKYUCwv>W\Qm%EVP*jօF!r#aj,93/FEtP#dbsYsdv9e_) Vn@+Qvc.2 m{²ܡ b`9ˆcg"ez~)w'M9\<~0YrʿgL /nc'7qJG_b\(5)y\+ ++ TJyNk<qϘ'A/lIUϤ!1t8u^b1-~Rtg͉̈bºOR\;+tԪ3Ug>Y +endstream +endobj +701 0 obj +<< +/R7 305 0 R +>> +endobj +702 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +703 0 obj +<< +/Filter /FlateDecode +/Length 2900 +>> +stream +3,zV ΠEّ~l$7ħe` E !(muADK-P%*E@(t(9p +"T{\$jiXpvW^kdRq2-1x d)w,RCoUTgu1MM֊~t +c!&̷x:ngL̊0>cT؞0 5»nX~g&-q`j1l_>;Y+}>;u|`*=7YNnXd%';:G3 @AFphQ*q!T8۠qF#I-?[VZ;CύRf֌AKqVJ3z=tKA}]HЭvvQ.%<.*L ш [UFY[edջ’aY#q +d%!r6ՌiwJd/cK!<_+d' z<-%g&"=&; ^zL+@^>'|dʚN4 |)(VHt+}CD]kAs؄QPQop IAr;ܶJ ^_y߳Gŧ m0%˾`ڛp*3˘yn8CQ}n=6f]3="O|qԼFTopډbUfvX12w4֘ϛ- bH2܆zbxqT1hy>x?N1 +Қ̰#P f1h]0vV4[63$1h)-_}&W1M\KnGuo;+~l!1V-כf%<6s.5DˈuH1?g^`B:|q#<{Fj[ I?@eB\.\f2b|y1A:_s<;Frw)pZ +p@O9>ViHwYAhl XoMish~44Y?Gm'^9 (- q[, I-R U"DF-ہ8O2A,hA|^JnÆf &Nv0j:.c 櫀g>r.T40[CnPSuY +gyY3,^hMDrzЌMcyǼ^غ"g.’Y* cٞI5T7G0#`X'` B>gbkdR(5k12fiE+δy/w\\BCN25uvjz+OWe'COzd^NwK. +D8fn9atC", tNg n$?9+Gۘeo&rƅ%uPQȣ5x(Ƹxjρ( j'HdX&qڲ߸SaصTSꕰ[ 0qOWH/ +Lq$9 jJ֤lU:\6w s/Oqh,1mPT" !}@ -6"Wׁ~H6 +endstream +endobj +704 0 obj +<< +/R7 305 0 R +>> +endobj +705 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +706 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 296.262 422.118 300.198 430.225 ] +/Border [ 0 0 0 ] +/Dest [ 84 0 R /XYZ 75.52 84.49 null ] +/Subtype /Link +>> +endobj +707 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 75.519 70.578 242.975 80.712 ] +/Border [ 0 0 0 ] +/Dest [ 89 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +708 0 obj +<< +/Filter /FlateDecode +/Length 3001 +>> +stream +PxL>~d(0w/ĉ䫮ͰXVG%T|'.MCb+j~5zFG;qweIn*qyz%7J&& c[9t0󽸷6 g^xh*4 57M"tƜ pgL025( w‚#G-Z1+}m 3*`]sۼ.JWXDUI;яR[A/_T!-Z|18 +aW>Lj5Ŀ5s8A+!Q48WμFn?C* ?β# +J=>h$ʖUP}X۷# HpاLbFP@ax1343"5nc + 2K3OXOL7*cDה=ɹ4ҽZ˩>،{>:DAxY +nz})D{3o'{yG֏eQ5 c <,o*N5uC77yqBe_w3ebDPų (#.=6bf tlxjJ*/ %b9%~òUNWt"+ @6%`YQfuI1h FI="u=[)r WW@sw1f@B{ +2>mg$uXxk? + +n 8!y822|1-sNL{~C HьŒZ<`(h aIV+Xy(pn\*3īV ǽ_r7g ~)?p6Q ?Xf{. ~WZZ4%O!=!qV5C(.́Ip\^`:߮YtqTt!'8%utCL +,kLfHRqTO +ZagsDMTd(KyX"."b{]*e>ts1u)Ư(Ȁ]bRAwsP!\ʼn4d#:mNImaN{Q}k+6Z_ 77jА)))kw,o3È\ң,Žvbd<7syxmSy1g"}GK!K?Kyy(iSo4ks1[zTtQM0I$Qzq8 Xd#~kOsw(G;uT䯐m4U%+aT:aPa/BpМ4ɮbL*W_qI( +*F-0G͔YP|3'LOL^jz[C +reۤA +oS^z|?Z٪@_A1BDd'|܊,*HB=ۨՁy)v\ T%V^޶a+P+ZES]W /x}sDhXW!Pp(W)ds}gicnUObE)VYL.,es}7Pw^}p[v0 Bsz@:8cH_z_New dŒs;THӚg]A!uM>N̞` q fcpucBKGdu?eaUeny`E8t)Y%? 6}ΛCHsa;{bK~8k ]NW:E p.0!@z H6"Z-8c[cu-!y!\)oW +_$zV6^ż?boTLOJIFus RQK RDQ/j4pT˜׷?l&Rt +iS{vk-f?*Mwrh 84Y'Y6**&=%݇H΂ f -kt|R,GB)7u}x%;;;C{;+AX߇@ +J/a_:eLt!VnPYuGv ` +endstream +endobj +709 0 obj +<< +/R7 305 0 R +>> +endobj +710 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +711 0 obj +<< +/Filter /FlateDecode +/Length 2750 +>> +stream +B|͡z[x̔P ?}$m"SϽ$B~mA!:0㽇(h)r C嚫 [[K;7W\̢`L]{Pzo' xKn׉zJs%+5EW' ;[1j,7ΜMih?ClL] dn6*H{A c@>3kbcwtm*o"xusGfi(06Vb4uGҽF?N7  +ͤia0(k&;N7gWY>X,:n //mQ}_*- MߣJʚ]ÌFij7,Npֶ{2IC+qq3IлD6[)1JNk CbǰusgF_-]H  +{5xpU3EÆkƐΌBP2ѫ'\::/юy,]q7cf&*]48͘{ UC ؊<V36{ok,: |=}#UV@vo0cy/1Ţ K`VR$9LK̷?⯍&Z,5?#lG5XhA5U\{=J$&'b 9 +c޼0eEl2F\a'H .mD "ӷ& 9)@['&}N-?VʪGb6}g#hđW dҒ,n,Ԃ.CGf`$tUjn5g8R{ȁ)SZ!ȇsZr<p8oׄXC}Q: c9O&`}(#5U< +y]z{m9G

?O+H>V"=E6PeKxؘۨd<%VTuŲγ=RKcd=XG+ؠcϜpI:ՀRUKͪ6j;zP5bÖ(V2rU۾ jb2A,qpRy[Qy&n!\丨JS-.q7}PUF G(bquXpբĪJ,yC[o5Gup?|eSYV/:S1K!d`C\/pbF+( W>  +%Ԫ^8Re.0HcK21E>&|IgɆ6y%IE*4z \Ecͤ8,p^QDsJKjXM(Z׵ \H5V\޼@ O&Bv2Ѻ"GzSj\MYIHF'nڒ5Eze4!O[HG2@Qtwh (K zLf嵆9`e+|T䆤* R +}8SXb7 +L +̓uC^q"EU:J~$_!h-i6~Kw<up.q,:O~zkE؝l?}JN(î+s0~v9~V:}U31cl,W܍8%ېT 8'T})#V ]Ѻj:ı^WUg5NHVi[z3xE^Ygkh=/yJ)>B /⭚K\%f#׀â8vE#i +nAur0ę#D5 ֌}[\>v08WI-nc ͡0=( OgUJ~U!wN +Lc2\F-)EBJˑG> +endobj +713 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +714 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 368.892 126.005 372.922 134.112 ] +/Border [ 0 0 0 ] +/Dest [ 86 0 R /XYZ 75.52 60.82 null ] +/Subtype /Link +>> +endobj +715 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 46.912 212.243 57.046 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <31d5cfd1c3046d5ad3dad2a75f002d0a6a5550b64ad569412ae5c12e5f91e1f6423a49f96df8792ae595783622f87471b51ba75afa7e4c141e9a5e88f1bf0164> +>> +/Subtype /Link +>> +endobj +716 0 obj +<< +/Filter /FlateDecode +/Length 2627 +>> +stream +Ʀ.;NюgneM=WQޛ#LG=6,V4 +SUwgZ;KomOq\ {b ] +ȟMƋz+׉OYzyzr.UdR{8G'7T@^пh} +MޗtqOa#HTxPtF=}> +gB&:#EPs [4ys#4 +@G 2{ ZI[䑲Wb3/HnQY|&4]j|n){H[qSS +o[A'd #'Қ"{ӟ{nCҢ L!w8]#uW՝oByH5(w;Z'.YE hQ@Y学&zsM{y-t&LjF'Fc6/96wS4OS)[㔦o ܅y#&OڳLP w +cTQsn7tQϟpƨWTJ &;iLx|a eVZ<ժꄆvI efkD3yR5lb [%Bl$Ʈ"0=/E +OgSvʼnnmφӇY؇>+$w-PΜn!%*;kWGҰV-,/{ 90e֋_OcXJueQglitܡO_I5Y嗥5fB0ɀ1ɍyWªcX &S9NGt*Y2#Nt]0@&hl@ItRU bwݩ4 !p)ȹDi걱ҨcOnUql%KS*ȃb_ }Cf5$TCLq8#dg +dH˲ycB-vM2\"اY*d6GA6qJRMS%%oPH9iwW|14(EPۓ.؝T +=RI2G)z$2%}ڶ ͺ>C*/.\wNiy?t4Ba{yv" +?k F;EB3kT6M(:%i?{~@y;ׄ#͍j<HU?A= ;kOLaQiq7 wζ!WmC:oZ*"*М-AG!/2Ee?j 9" +D#CCfR" +u⑤ywF'*Ť`m(yO36}Fxcz+{'q< +ׅϳ>FXu#H/d_ZXiQJzW젵;7:@. ‰K.͗Y+JN9li*gKk: +_z ^f}EZaޝT=y +Nhv,UlFCZ(T@tɷ`4Nl;Ǹfϡ]+V@E7׮; +f0k(*,ml'9$[A 6]p+Et 3~d'ЖOvS3js6p +/Y,&6xiw-E&MW[f- +5Lxbn2^2&Bd#Vs~FQ +DBY}tV z&wufZ_m + {0?ۜT}'i,G+!or=b 7"ue9ct2M8y |5CF>Yl5H=ЕIݧQtrb ?-` q M}Ƙ5>S TK/JK<{-ac:Pa__"3<.n<7z0[ǹ1vh1!`O3A (ADOAmvhZI1uA谹 ZƸj7dFZd{EvN:]KNC"p1Mm rZQ.e:)@GS11^deH +endstream +endobj +717 0 obj +<< +/R7 305 0 R +>> +endobj +718 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +719 0 obj +<< +/Filter /FlateDecode +/Length 2359 +>> +stream +_.,fgp{IH8Q"T]np`^`e]dRkV}XL:PS.zT_'a9rP_n\(W|Uq h{w44 VBi,ټKtbL"MXP*L{;hMeÍ@U>$xS|ǥrhW󆰬T h(GiFdiw|δl ,ȯ?EQ;\Xu~ؽ%/W_0B + |9d)^şW-Zc^9a&q\dZ =ѕ\)=,5[ 99rtg[Jq wȭjȥnX{*UH$ b \_&wbJTG0-A#F +{fpoosc BHu/%w( hף%0~`rLsxUY4,T&Nf7iaQ[V;"ixA09>."9NLklYOCл9A.1l 1X8@ta5ݸ̩EIFRG)m-;j@WNR~7%ũOcBѧzB"+hJTBx:rZT*b´W62lw^Z:^G ICR}K m cJFISȫcz*r63 wJc#JZ.8ހdZ=Prq;22/,S:\yq.RyZ^E9.I-$b鵛C?j +te@UHfPeUFH4b1>u6& LU 01Urpɯ̹p~9uO/@~r!( ›0EdW=W"/)*)Q%z%"tXsA>[lP uO|6cPxa ̻I,_̔xX t(Pu &IVVÀh#zoglܢĖjO(dbhS)N{n -qp3Ѱ_\2Xťlh5zAfadWADGĉ7P4]kJPLt3-% s)\>!A&uÀHU9,LE Js$|ecFj~e[;e#w!أ',@\莺~jӄTk +^Ä q"ho&,k^~p"Օh* ]2USgp-x)n^}uw IzQJO +pK qP°*{ R_G56M5uniI5c`!ZQWq9\TFJ (Aj au$`FW,*:( JɊp[zPr~8=sᵸZ?[o|;Q`!e6Af2Y{TJgiP;. 4 ǧ +c7]5"goB"U0{Ոm*3@*y'y :? +#8QdM/UjziUQkv(śSg,'0%"bRuUs8IA +3-5`2b^oPA bLB7A}仅Fd{+HzL"c$IW{?:d tm4l%,]K+S5IX(fmgAK[8WohvCprOocpI1 "`Ya$ָ1q|Οau >FL2ӊ1Eaֺ4,G}eB +KyǬ "ЯEϬ3~ +~Z=MO{`¬c IA +endstream +endobj +720 0 obj +<< +/R7 305 0 R +>> +endobj +721 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +722 0 obj +<< +/Filter /FlateDecode +/Length 1475 +>> +stream +f6x(N ,3՚lGU1rjC4H3 wU?^.C~S}P5 '3@w>rpx |-7T$ m6c69P9.D@s[FN'"#&+*Θ|յW +rbIҬػ+eʮ^#W3Z{ +"dvK]9"pYM"A+aC ࡟%_H/) +C>P6qxTRA`Wdpd"kU{]x;mb .;³as=Aad)7#nn_҄#fkBJuSQȣv:o`.$).I׍MA` Q}:\|)#yd"I, c +L:S Ť*IVw4i)8z)SH1Xa5<}F!.c@a?{6u=\US,q'eQ䢻ơ|9O&}^x8oqTt♰-o'NX (g`|)O7NnI6aeW[*t5#j{Yy%y,ȹHali=hQ.c+o'TH~'ɡ?4,͢DJ4@>~Ie!t("4!D=زVuH|[=v95.ءV:=ݕ:B-/CgoXw_L(%[%?- n9xċ\wkds CX$ls\͕VjmH9/dOWkF&a;Q(b' `FUK + Vb5t*gUOۀ5:'az:T.$<tr ^E!_//6ť=K#y,Qyzݟ/-е. +9?ŋ87i/XqSr3rm +endstream +endobj +723 0 obj +<< +/R7 305 0 R +>> +endobj +724 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +725 0 obj +<< +/Filter /FlateDecode +/Length 2955 +>> +stream +; .j$BH<;5E4@^,/x@'}C]Qǒ Eθp3(򄳤fE}@ K5G7k-bECY;n3gq TwaG(r2)U&UדX4^n "4]QU{)X14g2ĭҙ)o6U[(E~1Y'!VU?r +CX-81hTc25&Azn w7zg `/oO0QVoSצR K9S+~\cY!FJإf4!Oc}]KtxwFg\x0 <Ɏy}!ܔ奇o5źZWKY N_ZIJ4n1`gACYR\3A|k[$I[VZŴ.ucK} @[MG4),Ϥ"O'$RlEDS3#CZxyt߱IA, +oÑI' +ýzv+u|y { p.i i|h8iv ERb`*KݹU8vr%jfG҄"TQ #3%Zmu-l>iE M$ #}2SmCSUOI'9\,)[|wmlJU_7O^#}UJw}wXL6+/[.H=qA  E 3Ln>w.޿֒h.$4،oN{W!,yU~_\WevmY~6L_<$DKƊb]gq)4G025 +ۙچncQ 9vćz\Qu. /eS^;Ѹ5uT i.,(~aցWf?1dO̸˿4{1Dso2^`>mobofiiBOm#X3{d> +1[l0DSa26QzO`{ri٠X>MNUcz ^9x\͑CvؖXtIGq;bVk +=I}/.a|+.fj*TNodn* +q, d C-'[sEյjKCf{F݉ oK6nd~>h_>9+ 6hDtGic'Sb0=Aώ^W.5\*sO d+aQxU n)X=-EI1Sf:w&\ E$UTF-=.aSF 1@h}똉 e*"wVG9⠭5kn?n:Ӷ>0zQQ\  $'8FJA'OA5fBd&W5?&!9d)R .%vgdӌ,|M%@R0$kH%oQ1x[cCөZьxz6F@6fCkcY៾%8Ý{B|<;]=1r1oq^yۿ7+zWS΀P̐tmS鄠<$wcg9PQj+toHJj[ߛXWCHw݈BрUM+w+l K!}'P[@Ur:=üEDPU 荒*Ua&: UbScYmp`AkNÓQxX:Զ}/4-ZfEpv@K;xJe)e3s$%ט {TuànQ!+.gT{pyB#Us.Jq"2pN@vpL6 +C/ևa6^Mvp1^ھCڜ}A7$%[9yS9<: %ọmߺp@X˅La_ 6" {ha3yr{%os0>!N -af*>@kJ|AއRm;rae]* qv As.r,e5g2#ڃ&=f2,׹cU1i<ď.GH: 6{> l#9B5u:fɟޕb^$)& zaY|֯腱܉KE'ʽtsM:#0rʷ,%1.C|d*ss= +endstream +endobj +726 0 obj +<< +/R7 305 0 R +>> +endobj +727 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +728 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 98.174 98.838 101.943 106.945 ] +/Border [ 0 0 0 ] +/Dest [ 90 0 R /XYZ 75.52 87.7 null ] +/Subtype /Link +>> +endobj +729 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 75.519 73.785 249.629 83.919 ] +/Border [ 0 0 0 ] +/Dest [ 94 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +730 0 obj +<< +/Filter /FlateDecode +/Length 2920 +>> +stream +tܿa'Q:s[_Tns2~QK7ѩ7Xpha(Se >V [[5w2[d[`Fr7GeŮ!r6FPvS㞌 q7QisfL0ѭڍ~ae[䒂=LoIO>bZ~eN>n?0aC㵐~-#5khbp? ‰%A܋@^s@ +kցC`/D|i)c>^YOT +:s}ۢ!TaFNN)Lnd:mW ^3d i{S6 }#}zm=t6rը`O#.h 3<|NNy7\eT6%YM2iNe:iv]~N[wz=|!<9bٚŚ bz/] Y#TsE*"],: >F %rv138׉UWPa-T;#{J3\71jpks%hKߧ%׺̩ˆLunZ{9qX$K?յZ''HFÒ^n~h0 ,73Gޒ0gWjK};s]6ht-ws^@ 8\vK8,ia %5y VT<@q2w62fdw2QbCH^`^fŮ䕚VnG9hi!E3|201r|ՆVt2g G=]AIU"vٝUکgQ9^NizB=T׿j55lӴqք1/,?,yba wֹuIvC@%(54KeZ,CQ X\_Rc<-DpO9s,-a]I8Xhh9<]ͥI2Idg D\rl)C ǖť!̟_.)r6*$n"*-]TIh`)JxqgD O8A.))aMKጶu-tp2qɅ 7)ߛ\ƲJ!tyT,>ғu^A0c]|FJ[)>ІS5S]usȓT)$F)YLJ'@ps7R0(X,]$L2:?Iܹ@ށVySV268-Nۣ;С)NQ~ q]ۘ Lc\\ftSD 3mU!qZW=R븨z + NP-uax2]p*C׹^]<8JQcp/CH;e.w=e&]H_:퍸q[GhJE[?.eiU KM:lscܴ4_ه@4"h? svB!ڧM˼[)Cs-~;0|l*?}m[/XAq-w [ilFmX8*(HA2u2^NfzbkLDqy&s'ɛ2 /-^7<kg{[^ۯ݌C8>ʪOӽb%8˜ĚĵfPІnX1+܍ݕ.ьҳ)6f߼l3߫N4֖-OXvTQ2P(wOj{/`: [~z !g23vj Z{shV^LOS¡vO-ӭjM[ +qA~飞|Hfxf~76![G^梨f2woׂ{'8;"DmWykhJƒj<;8."G`Qqh(RmoHuyqJrNy4f&o +b2W +endstream +endobj +731 0 obj +<< +/R7 305 0 R +>> +endobj +732 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +733 0 obj +<< +/Filter /FlateDecode +/Length 3046 +>> +stream +M9\HK{t8dV/s Z*!{}HI3]K0MU|-S:=\؜C'%LO%M;8"dT}gP"TAϬI(U2:IBB]gGJ'㑒39*`j؇H~H-=ںѵҎ!nysTcLN<wE&{zS̈jER"EEC(aiO9.$s i&kI"A6ۦKT;/tK}ig6MS?,e?ǦSC{-۝oSb`-F:6/eƟ!haϢۙO*њZkT*و_)FJ|4j=ep!Ŵ cwhe&rWh[|g!)ӵO|eݙ"adT&tg="w:RI& C/[^ <=9ڐe2{8;u)0zW|@Г8$(poFirIط4k-Qdx_\9ycN0G%U@nCT Vcj^WSa\7.I,ىւ$ɉ!~dX]f7D%s 2W[%N39$w3$v"3)4l +vslAƉNgl]#k'+DE;kR`'YDX1q&hJC?'k~M:|1V`3>Um\<}]U*h Ee7'EI<1n.[[a<.FĂ ^$NQLg5LV0ieoERk3p[\vlV=APa[jqݯ w bt L=BG8d(&7f9*J/W;,r]Y\1Pg 5&ۥ9/?*{q Um~uudvӧ8Ր`ܿE޸Ӣ&8:~wM^1,GV [w7/Sr3GdSPčT&豣"hg1iDǫArF2.1%s#rEROut d=`)'}]jcmj: Ru Okd.#|4fUX==ÐfJ=؃FFn OIFd; +z)SuI Y"5͝TKy=Emm ז=h 1R_zg% rjmkO/ur;/0^"U$P<6 u}""XtoaKYYfo5RϺfgpcƏz, XA;@1 %"~hs x;-@+<{e" [U^C>_SpqsٖPij63 G0ڗOa:R6j' e}e M"1/ +Y?[|G\H* 8vц()- O.! +endstream +endobj +734 0 obj +<< +/R7 305 0 R +>> +endobj +735 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +736 0 obj +<< +/Filter /FlateDecode +/Length 3185 +>> +stream +U@҆7,d* $T%1.IN^(GJ/@9:T +^ßѪfS>Km7~I{D,@iK~5ᤐN8 2t +է1KN?NTh_;Ɓ1xaa _Ԥ] p6wN偨93^y~@Y)y@=UѠt ׹{:u>8]G9hv(5"oPKbPgQ>?,-PLJ6mzN뚐#dPUnP^!<&Џ&C}(O\+ +ӍLUoِ + `dŵ-v$G[ Tk#q_6#u0={8Q'nUpqwmxσ2L/, BXSM" +WB="x.&FE\ WEņ} MJXC-!8zRxCEVnTair, B^DÇYDyU*yPl#p7fb~mXW^ɚ}~uSK>u(~m4# +vԇ!Aؒ9@v^[X08f_p'6KH3 ))R KUwQ`זT:H Õ?Y ̧!|{3{HyEe[ +|0 >44Ked^E&5)jEܡcR}1'8g1t\2S#go^[=N?5]E55ND5[[;]_rStIJ+"`PvNW`:y^^%JT7À~RJF[{b[<<%nA[`Eo\I_HLoϊi%z -(*'%סhIGqwXf]JfDIoUtg0^6/iROx:d=kp'x Nua6O~6%n)X&As +u=xT~V +@끉i'iyv W-"Џ:KET!b>$?ߺS$d@Kolav8o4ީbt!u3vKdl^PCĉA#N6S{ۋ'ukxPt̯9~W:X µ˞WYx>nwP*r?2BeTor&a4J j+C)QM ZZV)sBIIM鈠m|[ez/;m%? @'H,"W`ӂaehEJ4owU\KkDV^>6i ӮKDTRM2:u&ʕ5uQGc75d\Y yB~NTa`勣d@5O <1^q3ʛV["wyz ?Y% 7,.H~YV1v|Izڌ78IH귰f R ^K2J{&\`q gʟtl馚?0E9ZkiYVoKiiVKa +Wj}Jc" !L}m( y;NTḭ=,rTAʳq Ө]/3dTZEP!h/ekotiR̢J)5 +%E&3e<,3Ī2" 颏f4 6&^;EHm7pKMAh)=*vN>Kphw/4%9JEIf[㍜r:0TA@ N0Gv/{ɰ6RpRJbl ˱5Xw8VSVXuQ9# M s$3up5{^K(]odLŹa_f8l*sRHm9NT1&ZL˘^繦9UR's67%9"2XLmJoe"7Hk^d|&vڤjwi\/q@rw-<)M@&f$SI. s"Ym6EFʐUL*-{U~X9)I?qIIN\G_m +⠼IhX0J/޲f>yׯ=5uka]^Ʈ.Zu얳*Vp)mS$5{ZF;dREnZѸ۸bWׂX)S)u>2qmwLMj~肅zn+ь30ݥ|t}'VŏgM8VMԃ5RnBXVhىH,PJߺ{luZ;,W% 0sZL,Z=h4z+Bay_Nju蝺:ןMiz}ZTI= nCv*P|S<FV=8aVЩ/?R87|D~{{eE$nk Qy6.}<+B/N*,+1قD*$y%xQ,j˗DBqtzA&\ +h tV=EQ>A=uU.­]vpR*@ކʔ =f:PGݸ1#{5((D~꣩sejb#sfSX{Z~#yO'3yaG\=΄ 0 C%QQj,}H,Z`*^:6vb@v"~=P2SnR$J}Vڭ=4DeeVKbﱏϳ{ T$;q*?G凖&o7e ucaq4FiE]߳tPgĵGdaiyW=߼~.TuЭ@NID|8U5Ns?Ӽ?-i}CS0t+YvzWs)N5Ҽ>]kKj}q=|4OjN8mxSUI{5|RJ8g5Ų \D#բ4{pC30%)U佶!TU^mBej!e!:3 2ҡ(vWF X{ ZpΉ L,1][ICAV'#y9} +lo{S}cc;0I +endstream +endobj +740 0 obj +<< +/R7 305 0 R +>> +endobj +741 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +742 0 obj +<< +/Filter /FlateDecode +/Length 2982 +>> +stream +`@M3K7Qb@-o<\_Y?3M/kFZmN>fYkJY{(aP˜_O,F0b ޏ|Q9ے]cFhLY`Kv'Rt'7 '44p*Ӧx m0'M$[: B-&Fkl8pq°#TWXeSegNb.IgT9=SEd!s#O.* fhN^DO1gɤhR`އv|H=?&׺ۭf, +½^D +C+pd)}F@R M}[z/kl7)W,Ka ʘ 2˱04od]BeBd`rl̪Ƥ RP}OSzc Sĩ倁T y& =8ഄZYd[|V;G2&w%vp%»*j!9dϓĀq1&;eQr>p9KGï9Q!cndM[:M(އ錁| (=qׇ|@hɕA&4 :~Z=_ZWjzd$39k̆c Ҹ%wb&_]Ŗ[v-2Q 5t/6A[H\mx޴Dˈo[N MF/Z&&i+(Ydxw}B]Zn^{C4g43p,Uh +Rhb@a?|1ihyB$qGRoe!erЗ~q>˚6G‹ B6 J,bNpwVWh\ N1"@9ytK'Q/_-)VP1o;!̧0^Mp.)խ"LW 8z{]h"FqXȖ*_#bSql^]-mq(QbBɱvq=̺vtv"NV #E- xxqx&7=e88|.Bt#'Zu8lms|%խ-n +Wӿm$.g:+rͼ3X嘥*)[<q_a#c_vBVZ4wJR'N‚` + WX( Jk'*Z} [5~:A:R!k'95Nsnd LT%6: M@ !Ƙ M^@ʒHO ~&cP^wI#1-!}Ƥ3JhHFN䩍=ɦs.m?%d"׸ ^Qs + =QMvU0@485MPb}BNgᗉ]Vc ҙcoFJ*\r%b8U˥8"&2ܻ74!Иo_ҤRE^ ڤ`9"q)2`Xl٤H2ЕYQ}DOahɼK?7j;i=#0o6_J=MX ' KԆ7X.Mqnnr9L~}Kvw)a6}&a[^ {4>AGء [ +^=*VV +endstream +endobj +743 0 obj +<< +/R7 305 0 R +>> +endobj +744 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +745 0 obj +<< +/Filter /FlateDecode +/Length 2965 +>> +stream +T`]'J۞ = +0 +$35H i{rZ!֘란]cT"X^4EK룠)Gu + Cď2l4T*;|L4*~f5&!4=J| y9ovN1BĞ4dC13Tտ2>ɨxȍ!IUh'LU[Gٴ)ߨԃ#7mP\o!aZ# z lkudd#ב0QsYNɨk#5q !I@jJ[|E%04@a:ӵ$q Etѧ-:@05%K5D3S1˨[H ޛM'E AlH -1>$Py/ ;Uޢ0 匧g&Nxhj>&q|rZqߦ$i0^ʥ| D:W#h9Vѯ4?Ȇj.qJ;NQk''{GNHR91 KčmU KŢ$jE2%;g9*INJjsb~Eb-m&! ,[9ςVЎA$y\/}V։c&ӏ +Կ 'W4Ra֓٣g6w,'Nգ?m܄x~ +bրv/`c 8+ ڎMm$[8o/?xD׹^US41_ԝ'f+~XJ?x˓Nx6Mڌ;Xg)[X0?hjQᱡAT8/R4GPڬpݑ2pJwq;fnK}ĵăJdFIKw๛E!G$yFDH϶O\RPS%V@lA3|,0Yha*T > +t}[Ýot}0x㥱AyYB )9 Xv.H$`$$_(hH /,pƗT| : !QŶjï]T.=tgsa"0YQ1EئMngFp`@W8'2&?iz ou՞OU\e ˆK Ӂ"ZU~im :b 3vR|e |D^JBny.kd;Yǿ. +^;c^@Y.{@Cĕ- |Qv^eF +18'B :0 6P $e +0rl:[!wZɻE5.OR̰!.?lcEN d"'oڹM"8GgmDMYA#J4~W vUARpɟ" +Eɕ[r#&IE*}N 3RU$L,th*٭=x㠗/K6y^oCcSR_7krN{Ͷg׷{g3T+FObpQe$TTKZ؄: kdlq E >QWuז4(XȜ> +ÜN}EN+e.Kr-4˵.OVGܗTU?.O3 Sl4?ˤ8<ĸ`JQ4wQAaQFZ. +cs/ECQճ|`׻ȥy3]z-'~rie1 j./F$p__kX1e!hxX;vA7\%69i8jJRAl W: @NJ,: NY\=M'؍wɶI^%uɤip_.QvCUKsz\W E̽l;HjlIF*PeB rJ_^;;}' LlCٗf%b;g\.֒}nd)rBS滂;@ +r$I~ ԅ[667> +endobj +747 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +748 0 obj +<< +/Filter /FlateDecode +/Length 2094 +>> +stream +sPyTsBji9tH6V/oǞ7 FX٠h}_p0R0>1O0 GgY$4w!SALr}/g:e4nK">l;-jմ_M)SF`v8q~`seF)JLަM'6Ʀ:=EF/ +֏,Wh׬\64Nӳ!|o?,6%'߁~b/֑[~'Z8wɅG g~B7=9Zڔ;G̗9?Khz>@s):tG-܉ FM%ŋҽdE C +X _Щ, @Ƨyb4gWhIcgWek'#ZOߎO52RiÝL&L.`,48Uz/B&*JTe@"FГ^ђyQwma aebN`@KP(QB(Ќ1sۋ]IίC@AK("7Cjٯ{ZZujV-lnŪ؀ xV5|4K1dH>3u2 +:}:rzL aȴ:?HҗF6D  oF^+ [O1!a)^S:և섻/zfIAl`G⳵<_&g:xT"*lE'-g^ 7V=&Rj)I0ۂ4v\d'해 L"ɽTH2ȚsjM R%xgXTE4+e|45Ih/2w*kqX)蘛Q?~7^\aWfzRE;VկZtZrgקtH +Nx}R8&x%ii:S3־ȕ+@MOʹ4p*qC$kT]]$p{R iY̆,2⧇(XPMŇ5U%m59lOKɾpi)ftT_X>|3zn!y||O$:IVgiV{U)A,kF~ \eJ |AS䊑꒙49&,5/8ɼ2)cΧ#`y\ɻ+u5ۊvCltbWukK6( +f0_ 3.z\=g-,!t⭾}٭Ӭ䐘h~9[WاE`ՉN``B(?&Bb}-I]/X +BrrO܅UxKcO u :"[yX]yz\Ifb Z s7#=P>~* ݫhMJ+(F{Mdgm2 `'CEsg@1a +endstream +endobj +749 0 obj +<< +/R7 305 0 R +>> +endobj +750 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +751 0 obj +<< +/Filter /FlateDecode +/Length 2020 +>> +stream +fz0{>%I3u߳ޱ8gx6A +}Dk!&58mƮs*("uw" +P3u,@ ȆgxH#%Fjq_tҞ0qÌhwbQwDZu N,97,L{ X +/f5+OF3F?.b烂G4ڿƳV0+i@-^ ý\|t=<$rj]}ޚX L_=CB2:sݰJֱhg҅}QuX_bBb~(S̄&f~ 97xqpZ-xԌA7v%7Je5⟦Y9>+ "5rrWWF#f^=0ou!7dZƵ 㝯?͙VS}FT +t.{1 ,hLDnt_NXc{Ӝ;q\qsB5M+hb%2PHkW2*z=h"L";}AvhEFyƞ ݓ5wo糜3'-SfeEw{qLvJE!iV%.%nW4p=}yġy/Y3~Գ>7=6a VJ^vϸćdH/jYhh}, Y V^d2׮p;U2˨ M&L"Ql>tg拴Kz6(AvOܘ>) +ҴZX)07Wa~AƑ&}xLa!@$u +!!;jGؕ;/ݥhYv@1&W +*9FB@ܒo7(>Ⱥ?V[c(r-/6*,էݥs܏w ij\Yb1+@La|{ t +םE)9tD-Y)tޗlNHd[bS($yq#U1,gA.Cc_tδqx=2V`tF9).o6&xK +kP"G* m񘮊C(?84N!푐:R_, +2Nת+HlHVb\fpeK‚&(@2o g}K5Z fLGFzڬ4h#( bsc8 pc毡KC9~2WMފ+1\ؒ{^ppH \V.j0O,ly9]ɏõ\# 8 e]P}Miآ[Ign(;ג`.u3#6K. `rfy`!C}AgocB6Gi8$e#6:ì(la=p=C')9{Ir28`v3&V@e%iukHKkL;p7#E +endstream +endobj +752 0 obj +<< +/R7 305 0 R +>> +endobj +753 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +754 0 obj +<< +/Filter /FlateDecode +/Length 3362 +>> +stream +()3(N!.Ԝ->0::92+)\=LgfzF8ާQBNQudM3W7uhէt;Louz5uxH!4cNS^9yT&O&{^kxT+ie9VcOzĒZ`̡i=j;튊-Xo)rZl ҹClܭm~TG 1ٟ0w:0VJv&TG?7SK|}JIr?hVlT<'IQOu ۷Өa+{gdE׷it$ !GF;15mc9O-e DPP vt=XnmW0OeT]])CvK)K~쎄Q i~!f=?~<(D ;W]˅X!_~yuSCnHvPiQ`eT+쏮찛-y#җA@+lr3oL_pXU"#kb#@hI4>oaζX-?u`yt՟!U>P 6gPR>͍WxK}~B#')6Tz:m\D-wb%grvÞ6Aо R|޾T Uc &L +h/$*: c,e"ewA] m <#Ҳ4-/to wY2ecR\R@h|GF~lI?L{l)W_q4`h,c{uQՍ. +n(R_]V@=GE]z}~5] 3E6x-L +Aͳ-13) XԾxMitJZ,_.b7%d(mDU/#X, 1 +i/\}5ՁeEw %VXÎ.Bj s1hKxE TX`* 8S3'ι# wR8ɡ;ꌋpEL<)Ft5*]TƗ+u3:g;^ءi*TgIIެ`MjWu*`+JEƷ2TT!98u +f5lsS迧=X ERmqīmQQD3 +ӂ'@^,IJ]%/~5\Yp.ٮsl=*&%Z򦛴ͧZ㱭Ke_ tIrPӍy%J- p=\e&zlNfTKgvjHMa!Y` epv v_'98'ue~?WL˫U"Cj2A{VsPZ[b9mxYh7zfO B{|+zAw8-ޞȖM֌[5ia$; k }%2 }ڡ,|W.0}-ɾRY[E6r[@cp0 E vXQQ7N!0h]l] @*8Q,ҩk@'2 iZPEWE_,lt8c̽s{0NV3n:+ d-Dy̲'uS?C/Y,"$R:~ڄ4@UX:-< M@4CS̰p#ϡ +sT'Hau,񦏦qd%1Qx;zDmҴwtVޝG-ܼ|*a?NN@caf;3Yܮc,z:n4mW TDp+1r_h@lpǓҒY?5TjPt࢈hsi#_R0Pľ [$Bˌ8p:n[pIyC\*Ty^Rv&J>wm޸EN俛*4$"pq#Df2Л+dƽ)Mh\x2_.Cx{hG%e"$e{>wݣdYPT5Wq!:5F>i49eqL2"z33-J2pNЙ[_GmdE0d^`H G|8k}. gn<ኩQi@ߝd1 .&h~8a[t|uV5DK/'3C4/&+fĹ񘵆B|+A[@]{R2 rhVW޾׬Э.c z$I_iMІ^W@OƖMm*MKYQY -cwOu`!M +endstream +endobj +755 0 obj +<< +/R7 305 0 R +>> +endobj +756 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +757 0 obj +<< +/Filter /FlateDecode +/Length 1730 +>> +stream +Zh4^k 2C`K&!1V5̬/.9^OZ$ Y#'Л +A=[œ`E@fŲ\.\Mj3.s qRj2ԚofJ=Zyggs0\#跌^FZk9(J%:WsUr͖xXLs eր|qBW*t(U'ܭJ-RY*e\~pVw|T? C=5=6rkKcf7>_,?=r-1]+LJUEX]~[FWRtc6/lO:tKhV24G酕ENjuNQNO n_"$%0 v* "eR?Z䒬Ij`hp@wK#?<,fx-ϺuؿtrŮ,7Us׿BUJcc hkAp5PRYR/s=;<ũ[*|#px3;\ "Hy1dj1ZO<(\gP.NJ_ rBQVJ/2`r{^!omgeA^ Iy9Nvw^Dh+;EG[{djS،?jhW8k&gY$/9 ; S\en4A9V >b" {c# 6gv\ DPoP>iֳXJ%Jȃd[o'pr_/,-mJ^;b玏|ROq?sH[mQQ@,fH26f _ uBb)Vt<4~"4M;nnہmxS9xԾ|<:JP:P"#mq Yp0BX،'ٰ18C!( +X,^WY#g3dyau=Ř?di5eu^`xa}7#]Zz꣩c5.Hao(rx d> +endobj +759 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +760 0 obj +<< +/Filter /FlateDecode +/Length 227 +>> +stream +Q4鞥8މԕ1+^90+xA8^TAMD Ua~̯ {+"̆Ƃa1̺ z>K"ilqS#'LƑi$%]VZąՃ#͎6ґro4A?دXH3Z'%pG:,6l"`"PdݧRN*?3_-P~Gb +endstream +endobj +761 0 obj +<< +/R7 305 0 R +>> +endobj +762 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +763 0 obj +<< +/Filter /FlateDecode +/Length 2854 +>> +stream +`(Sz#J /PGk KΩ>˥Q1vKz;T2옔T:B̸(k"|88Ҿv[u8{Oh\o}mQ: f>0&^#).g뽻ӏٲ^,A y&E-2Vq%* m}D,mTŗ:*u@g ]^U*b]#MBd% -hM.%J̤eI%$ܱC*,^: w٧ 4(-3B16ڃu=i經wyI;5kpt#[?ʚ@u>U+^K'ǚƱe2i3oSP +㜹> j !31#Lҿ c&;F8]S-<@13hfڞa,#}0$Pcz#FttDԔUN v@H[E>~vK,p͵]׺}:`ڠhHod_T}t*0a<̳eQ; $Iw& p9ʙ*vA7ߝ>t6~0Q4Kg(-&;v H.T5\˲Q-ͦ3 UZntT? "H>ւZSg9nb.6E-h(D:oרUjؕ0OKGNV.]<;EVMl̫*7Zj^~pFաŴ;汬 _CUǼ('.^~h*1m#D,fA90?!:ԑGI%ev(p[eqzN 88(wY)bUz5N?aK,0f 2aw>JS0jv^ HEG.PR+'[-yvbX rE5;+GR h"Snoqrf[A(v[s&F| qYt\^{)ҝF1үݵqظ +qYdYӫ +wdWs2}Eӳ~ .ƱvBg$iQlxW 20%tߟR-}աLkjq"pB-6`2իh{li利x|0q^1 ؐ5+ZhJUS w<ϥ3^Ȁ;Z#t9ϣ܁sP\SQ0bM4hU`揺ԎPm@0qCNQ5|C">މdV,inANOHɎ–ʿ MO C [~V/w~ gX) qTȓwyHky.Vc wM>yBz}9 <Ƅ9ѻ;V.%F"Xc =:5VT%ZlՁ6lT~Y?ARxQ "-U%YDaša7GE"޾nn:">@.x CXk_(вjܹuq0aZ`6& m.9p4C]~'NjI:m+?B;7A5 'UFlrP͐}q{}3c.lej2)#P#9lnAf6aZ)Y'SB;=2 +endstream +endobj +764 0 obj +<< +/R7 305 0 R +>> +endobj +765 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +766 0 obj +<< +/Filter /FlateDecode +/Length 2365 +>> +stream +3FUc%|?ÕQ*qEϝeˢ\5ߑo`RB/Nx4 + +v|^3Bl[vaڕ AX:gtK>^6" KEZ. +<ס2KLTmegZ]{Z߂uZEӼQzƝ|ƚI <ճUpxG5v4A%6=m p >0S][C՚Ii3ȡÜ4ٵ 6k 4CyZ(/MpdL E059Ӏ7EBVL:$;b6Ye Hmۧ}*m`Ko +9fCtdP=kt뫙猱AAM +EmCeI1R1N{bޫ@XJOju;cTE|YX!U[tHP퇅Teb5 gP#F@w~Bϓ@O4)g,-َK)EtZ>2"Pib]߫]Ps0F57Y!-H%ŎX(;&ۭ/1X駯0Neo-2`5S6$_Զ(0Gpfs>uoz}XhS("' bf.7GUް7̚O|$XTxY96n> %n&ذkE_i{}ݒ!יfm'Y?@3CݼCJ81Eܫ}‡uM[JcOebrue@$&Ш:æX"STEie _QPo)%S;_1\ DGs'z@Vckդ;h ~D؅|JםAaH}mɖ'P I.`nzaYw k EvBq#C&C_fx6F 1]bAB2EM~E^.VZk5CU+tDkQj'tVݡu ,~VH_pzv:r1ate\-ZJWFYb1"ˆٮЍIRE{VΘgOpL{:P1lxĺ2M0ŊP׾ sv(o7֒4hߞ6 ,O"f}'WgNco9A]py(#x;F yha`-e:*kmEM]n4:"FP b=%ƙ- o*;E8P uCsw1"<#ݭ[`m8ܣfjXrZb ݞ#SSxW-跥|V!.xc*,|6Rx}Cz2TΌeVm).;5Kaϳ K\V)"U/ !S^-]WWK#NՂwymnt?#+x~}0d +endstream +endobj +767 0 obj +<< +/R7 305 0 R +>> +endobj +768 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +769 0 obj +<< +/Filter /FlateDecode +/Length 2035 +>> +stream +즞7>(87b 9닭2I^:EOg byڬW_3P{yH~r=/@C@͓otu5hߕ+=)WW26`k d> X|H0 =yD %m۾tgܳ:=$?<6a%#~EmbtvkՎ8Z. +D1&UcbN-%j)K1n1<ءSX3qj];F <<&))A !R"Zo}p%;֞eP?ђ1 ̭i)g:X`w߷V`z߭$:-1Q.Y3 +ƴ`u}}յa)miKE)N@Z4dn +kEgHڶLlctv}&ƵGUAt>Pj])^!vl q3!>)%6b .' Տq}~ڔ)YH Stn[o"pcdp@]WL}JL:>@鿳PW,F#ذ NmBft|QБ7803v 3kJa{3@쵩 ba+{z,bwq`oЗ\M0\BT{TKN0DGTpN~@JװfJMUlB8m6,8ХqՈi$'twd$Vvj{c26 cXA7=|W_)&G_ +y1wf0/cgQ/6JxB^U8_F$S85g匇N"Hny9Ԋjb*k`C!u]O`2)յR} LMT 2_ԼJꜜNR^< UT3О=A5 8'c|/J=7{ka4D]yD<@dI7,3R2m L!kU:_|r)5k0؞ tFoح:Wbҳs'MWAzcҎd pą{bظm5Rdǻ2P?h#ܩf[o@_TY^pLXׂ)3+ט=o,ʱsYL:.go[,ұc<%Վjڥ'!1+,sjaٯMfw˴?} +#w6{QI1A >-$zw[9owpo8} +hUTmMXn@6$ k]oM33X#NLSjC^kĊr`4|P @k+qƘd8(F0֯744H<5?HJ??ɭb j0!v"Zj +endstream +endobj +770 0 obj +<< +/R7 305 0 R +>> +endobj +771 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +772 0 obj +<< +/Filter /FlateDecode +/Length 3091 +>> +stream +ܜL @-qf^!n+K䳄 J {(~I~~t"i$4~~ǣM|btƒ,i%<3Ƒ.uoijއ#NBHzEyBq[dNae!ΆH>0Ý|a'=6RQ6C>"W7é\3ѢOYLr?௖S^p"&gOjv!>z r)[ȗduɯ*v2%e 6jcκ9y R_6N69a0zQ@񂓮~3V43Eh2NqG' R϶kP" ٳ*A;ԃeyW@}?Z;'o̵n` ^NfE+5"Lnxo?oA򷰊6B| 'ӁAݽ31A)8pI,btq4\gzg TD.OCQr81ڈ8o)"&-W~Ӵdq^{{٬fa;Ʉ'2+~uVJfƎI8vKC)M~Ma +1!f;N`!"% {&KG+@Y8e1hZ-N_d0#o޳k3%)iWɩikT 0ȹ"YZz.V-S#)j!h[#gg((+(xwsdTX6W0xp\ciVjzwyS"ݤj$bu0^'ǟu|BBܬF t>m%B ,hC9Ar>>GGho3@a,"<_%]d^R~ma f]{AaLF񐸀!X*W0CZvߌR[n?͇5ƤLˏ4'Zq?~DàP6\(it%&?ыoMKV]*=_JQi ,E橪idm)%*%;]R ;=dj*'Vlbr66kVw߷#/-eSq-^{#τUɽ7sÀ]$OClSIғOO?bxWT1F| sJW]߬gW")ݔAԚ%>m!jT*H^ñfco}gfCDxA#d`%-JL#c(%ԋOg4Ϳ"q+@nViPZd"0][TF[َ Nf}'= a~4<)>>zFDE$"b23"df$^9~6[04EC&X<Dž4mxb5%6}ڹ_EHˀßv+?b!v!h.vOP ;Hu.ǝoe^sqf!x)τ6N կ_orApBK"vO"~,謔AZZN?VVے/֯v^LUWx +mһO +sJ:Kԍ^1{]!_J˸/Q#̓`Ҹk(,8gJ.^ +}Ïd{"IûWy8x]-jYf_cAsxatMԄ?ɚDXמi\n.9} (!a{KB5QaRk"^`īw,,r BB2J^TxQwwA$_{Ra G,\QJjN =b+ vOTOH;D@y]J4fzc% +\UM|ts:͠+NcE%@NgQG>J QaX9Ј QNOMU\ +MHRz :K؋Ǣ'Pm!ꠑ:)Mb#!3/6Z]2KNgc w!GEl=Ys aG zUk;PYl<+ͅޣ9ԾXC- +endstream +endobj +773 0 obj +<< +/R7 305 0 R +>> +endobj +774 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +775 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 238.115 552.373 241.181 560.48 ] +/Border [ 0 0 0 ] +/Dest [ 105 0 R /XYZ 75.52 63.6 null ] +/Subtype /Link +>> +endobj +776 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 49.685 243.175 59.819 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +777 0 obj +<< +/Filter /FlateDecode +/Length 2941 +>> +stream +M`ua KgL8/K)1eZ9i`쾞0SNtlFТ~ nFS"aE7i,aVEbΨpSl>+A:vцkx$#=T_&)RE\Jj/(CE5J,8Eײʏ(=L|fȡBj"¿iZb's\f}*KoJK6hkX矟`7C؆N9gܺfF^oS-?R$T7LTZY3'20It|`=b3bpb1{ \ .ݐ\1ȡ[:?K"`l`jw SAg.eDXV.݀ aj)̭tAp$ʻo&(x5y}D@lvJn#!Ke2h1ް Ac.v_wJXPKkb@(AK^ 'y6UK> +zTܻϥ׋q+r\ZB*fۚs>xQgR2|z*DR6d[ZJy36^l(c&t2;- _Go6%jfe%DEMv),'G crYPp/Ե'2TUɕߢC0=~ + S>UR=R,z20? D N塂{[0r'0T/za]ʦ4~n '-VWAilq3W|$ VKEĖ`?>%?wU _2F^EĀ5jbzA_@B/Y쩰JK`D, |<`Sh!@0{_ XrxyoPRWW^3#Qh|x䧥_2t[nDr$Vnqru iE ʰ(:9 tIENr-X'Œe$V`tͪ;hkRi^1ZoG\ dn`UO1,+ Ms>_P瘽y)];p[N@IYwר7mo in8$ziiv7}P_n*1]b#4jaz$XÓʽ?-e;LNGy:V9`0w뭥}hDHE1}R*ltϓ%T26ZH&*W%>qHm,'rz*ƇBK1\Ah]c- JۺJ;cE4jr+!pVĽs a>J4Ɨ7*|nmĘj/ntZTWu_RPx"i~4 ߨ;W2v Z#*WR%p/q +ڷ\5Ņ-R&LYNS&lchrp7Y8F.zUܨRL`ۛkY{3Z? 5_ڬ<{jHO{c_G{IA (܁[ڂwv\RDA0~5GL%s1vSdTy&l5og2ĺG D1yɨ!}N|| <ס_I5Glٌ3k`3~=>_`J*1gFPPX:HwVzdop 20[ogvo\7;ISvs*]evD +rVkC-7RgaŽف4vuo#]sjwmkE,a7iB%0j6{Qi_y)!X:aRUnȄ@O5:LIJ5=j(+1;`eP礨t"QZНNBz}-LѪ/sׄ"%:IJf MO?YTbA\N$ \B3DBkV 2Cms4,:,ofi?JWGMNhE^, !1% 8O.I1 +UygyeNfpBK$i¡ůS#.77A+xWZDLƶX_Nf{Ɗ3!/Ќ.qw*aDnb)w'#0w3 ZS0=YE1OyPssP.[a#C | QM*SHN/Ҳt4zGi Т$`҉)).uQ(/kCtb@l1 6,m%bd.(~ZP+\ɵ 9BnzK;.cUMBy*}1T Gki| ˛iRXTY}?6g9GtC\\<> +endobj +779 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +780 0 obj +<< +/Filter /FlateDecode +/Length 3401 +>> +stream +>;?%*<:uW"W 6A;^'F8&JI\D0`;!9sC+Nhn,2 lr̼_RؠHpdw'Cˇ %p?`&qޖzmjщfV2Uvj.NFfL) ~S"Dʳg^Fe1 6M~\lAhFQ gBZM]\dhLm$2 :mqQ8GҝT>|\p|N7مAy,Vل.qT'&dʴvm.tz[e-rv\^2qt8?Vo|9f5tfdbHCQ +*EHQ KWOQ8-6G孰*sQn5*@<:mj +zjYbAá)iHϑW}śE)1O[s8oY$|V~qHvz (:F ж8pY;S /$7'0q[BSo5 cEul{O*/0j9&y !Š3,^oX2\мs*k;ݗSN>W ~B~jN۞wG,\/,IgQZV) &4o#kg V0Vvkak'p.\/ Ȟ"+bV)\6*&b/A?qu 486ZWo[]j#4}Z;O}UI<|MMW 8_ Jy< z؎ +WLL J5}+ir갿$^biJe8B$k%JZ!ZK`/W۷{Bq{e N&"=qܷJҔLshgݕ^\c!PS^z Apʐk5g"gQ)+z{^{[VSceP"J(?l i  ˨h0QLyȱ1<_}tY`]-)$VjV9C (,y"7Bf!O͞EC4X·z WwtgHqMIVNSAvBJ#b0_ٵH ix3(| UE"=H)Iga(i=f'gY"_mι`2p5̾ Di2q$ +}^sU[gIv ~>[j)';R 0)[X_ɺk^ӑ 3ڙX^:#ylYh0o3,Ϩ%7'NaXS:ާ!:^3MyP ꁒɯ 5۠zУ S=)hF_j#,XDFPVbD)Qi.a6 w WYn+\̾q1[F}i@7 k=,}ޖz8Q}0ݱk,gu'eū#,ix6e,7 pSP_Qݷ"ğ\72v~S3ȈJ=4gH* +%Y{ۼ<29XxRT((ץRlB3|.DCtJ +Xr YXiU,p'[R..&Oӛ ePf"Zh##?J ʾ,78UiKQ@˫\9vR}xn^L@u<5znM#N< +ԋTNF4()1)KNUz^b*ųrZ2OLXNabIe-]n[oX-Q7[H|1k(q'%{t ;2`a*o. + @&g"'sGwJ @ QbG ۺk_#VmP4cFz7'p۫YUv 4\\&cf:[U|íjQ*3 M;'z5o8Z| U.Zl=9y^r:Axѯ.7g@-СqN3FdxѣhȴRgjNIѕa~&@'bRP=V aSN[C[2α;HqǷb*Qb `;pqz~]"Y#H j}]m~2N0; ++uɝky-_,8n6386ID)ؔ/A(KT4U. *ZӦLKRL^2t-&:X0{YD~0\= +uO#?p1 Mp+T[$h"yvgZs_QE{jpe^wMnǦw^e;07(N$w9M9B"4~<=g2ʯ<}ū%Uc"4R߁W;vn4dNGh6GVdr }?k3ϵY"؆}\3%^3;9g "DZJTO,hsmt35єw(sKgI)> +endstream +endobj +781 0 obj +<< +/R7 305 0 R +>> +endobj +782 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +783 0 obj +<< +/Filter /FlateDecode +/Length 2629 +>> +stream +BwIMhqWKڱFt_܈,eG>5@QE?IU)Qti01t,m))BL K-5#fQmOb{ݙ l}KQ)uM_n9̾HqN:-t)׮~CC+ Y9mKW94;J J6L  +eb&(:bAǥ 1EUX`vI^(TxX<ă\tuʈipډxvVPf5@ߢhm&ssXiT8tSR, +(h享4cfCGМ%+PNȺWjHj!dO蓞ia>g'hmK.t +tGՋX{ɢ䃲Azѽvo5Csl.R;XL<^[a#˴NjuiRH=:y^f8,iC@uwZ][^y8.GZ6I*[tQ7fp/ޙF.bi§Ж3‡`8qyڣjY$#0cԽXٳ!nuljXjO\i,~GAQ +iQO\d<#+όf +M@Of9<(yC@"vo<<)( WfӼ0y$jLnfMDXnTZk$|9r(社.[ӻ|'4,w<%|K.C ͡c':<3̲nktB<%N J{YvMvI >1r__qֆWId}|M> tĞ +M|r B z}kHG˗ c 1 Kh`9xbt[l){ oxR0D!!$al ǷFbȹR6 ߟ/,#{< +dD,垨쎉ڡC)9- )fp$|Hu)`iq%d7UNr,X?¶PZ +P S.o9Dfَwn_Z =CT!b1:㨺ݭ[N뢋˻Nݧd)T)Hɿ L?Ę4C1%=Bigt1 G܊M7de *=R@5'EX[:XD//Z`Wuퟞ])}BW2t"^т`IŲc-_)ex}ZOlg=$ ~tj_&1<&選 M#E0IЂ3gVN~qM2Q[ztoy;7oYjCf>TԛtPf#׾{@V#cW^Ôtd)6e/D"Ƅ}u:%8w=@xXPw)t[|yHV=$땦Mԩ,Fd^+yi>v/Dmml#'?B^ۨ޽ جNSqǯ|H4AL ZH:n1%P#C/ 6ݜ"#'o΁f0`ۙ_WcFG~Y=WXWa`/n^VQFQGr Pawf]-[Aװ$(f$ZTǦ֬Fs`;%bp=7Ǜ6JLlAvWвs6(b4bI4tc +G;ȭOZ+÷2,&7joXQ ʖJJe*+ xY:M)nÑ +We!8ǝ>Ku<@*Dd/QFwѯ:! {@_wdT륂3(ã ac_&~ZJMw݋T]hOZ|eœ4I{yo SglhYau)!iE{TΖV[0,Y7N?j ӀfdXx[> |%rIOg"^ ]hjuMգ{DD6G41h7Bj*H!iƝ ζV2$UWLOI\sg&0AYws.lH'Xb~^, s7 K)Ey'"b}Ǡ>pwf3}AmnǔqO>`$l~2xSb!>5Y-c& +ʁwt +endstream +endobj +784 0 obj +<< +/R7 305 0 R +>> +endobj +785 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +786 0 obj +<< +/Filter /FlateDecode +/Length 3074 +>> +stream +[?6G)WΩZ3% +-^' mblejZ2r_uD_&r(R!Kr͡hI,Gvc? +-Bb.Ap1nV t$R*v3?r +- +81CN"db*ӈT:ryjo; 0T:|!/ea +N!zw}j7VLyRѲGl(uP2*7,{NkEw6Wm$:X3~fn7FooDP +{jog7짬CvΞm/vT$A-+.*p p&dvlݢqW&h|p!0YQa1~[4w {uΌbp[U6K㡴? DJ;_iA.[KfuDf9M zݍV|Nc0!B.8S75[Z2X^=瘇ow7t%֯:yF|~O*V _n ]NИX&ɚj ј ,oV>)CZt GaT͝3ء.:dK 8_gJ~ sVT8ٴ4ѭ~ @-P~B(VnSdn] 9LX3( +v,pSD>AO#C0D0msǡ,꼌M6W1)x܋ҌN DB\3?&Ktb> tPӁT-iBt5U:z\'Zml]/rTGt`PgwCxųU~!M ou9Y)!.Gq}~!TwIjnKanV폧]]:N&hMitʹپV3#m.[J%6ԊX&OԽWPqc *Jl[RQտ}f5FSIƏf lt']} 4 Ϋ #U*L,rx K@fbH9f ޞA;$rU$Lʵl9i*HUcO bߜn*]MijX&#*~xr;&ˌ;c0@nF'뵆()ǜKe2h- tɊ7RXedvX<7{XO\ nK0G  ؁P8'~Crbg8k'6|$gi e+gm 0 =A{"v`xXB&i3o߈Ї',762Y8#thek۟ +~P"lġ>뛶j`]_;N3<16Wzj8pa{|_u>=iI^)Y&w{rO TG68YY%x>H;6Xzqý)DA/~Ms"y(_ =o8IA* +lԬLuىCƆeGMҦ);^-lBI :uNvB{n%эT]Uc,$I#l!;IЍ\˚ocBUC>p*vt#4Y$y5j45V8Gmۗ +tgkHIQ -K{!5;ÞE8=FM$1C2-nP~VpvM)-d3ÂGbI: M" +$odQkߕg0~1VQ6\ O>a4۰Jh+uڬ`T g[$ncE kįy4ae- +mW(JגAi'-X=_V\ipjvY.[Dz]a+vn<(h˝ |v +|.jdfh){K7ku,nF}s[$TewkS Yj*"CMZܺvgPjw&p0ۭX~G 20W_Gv]eQg\$w$Wa\m`Ҟ9 /qo=WEhzRFsx+!{D`Ӟ*>q…;ny(42*xpЫwn "~( f+DL݉h2'9$۰8l-Z+Y"+]~ܐDn*ro7zXO?/lBՖ +endstream +endobj +787 0 obj +<< +/R7 305 0 R +>> +endobj +788 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +789 0 obj +<< +/Filter /FlateDecode +/Length 3411 +>> +stream +-o ޚFdCqk)_ E=/lWTʷ=LruJOqjE%o noWc(S}㔖5}[xX| |=Ƭ(V&3PK?d+1!^;f},2toÙ_>MC%3,?Lk3P4KjK{![.޾Lh~Q+5Fv6򜲈?]Uklj|Zu#39~Lكtǹ!%3$d/WseIc+l'"uIS~hso i,JfџY[44 +QX`_H!dxn䲊.}<(R+c*4EgT42 +\4^U(E UcV> 28 TfQڥImMH.x߶Ʋo"$x!{R!tsn|i-{Hp4 5xΔlD{ϩC=sRl^ J.3#M'Tic^ +-\;yڇjx70mɇ[Is8x@{Giwzn%S +59jsMl'f'삭-wQI[EufAX_f#1C.$Wzw*VqR($@=wL*Sm71,Z,T= nyr4ة;kDK<,lb@Xxp!(O@ +ΟGS76ڞo N>,%j4Z#0i +Vq5D`[fRjc{[!b]j O*@+ VwDdbl-JnV#j[o/@^}Fӵ#}imqYתnT™r)9GI(ǫ]\g}hܙ^{/aKx344xv΁:eCYH=(;02|+D˂qp0G-VQ&`7!`Fm{]ɻٯJngTWqmo;0#o޷H>fbLjѷ-DRtX;혳_)G= 2@7I*K qΪ@~'7ZΑDArZ01I68wNf`M)g[H x+iC@,i*}s sz2[A~Q9Y]y*B9Mɞ!>U=_eM?SFNs@l:015 9LSz5 +ZNnWC`R$!! Nx;z7M: @р %R 9:dJU[_oPTKnDxY>!CCX7F4"LbXԞo(U$.2i6uMۋ07 -(Z[i^촞HfZ?d:~Mָe /#9iy%5)a=<30Ritb=$]L¯%,Mŵ Pe`8^l lM(K3eԥTBP`{&m-ɸ/lc?U#~v'`zK8(O5i`^UtcKHm-x)9ۨy=q`9V/g 3n_+Tv@ޣ Vq[faPz כwO뀤9ұF+rT={2u5ÎHnVgl~1Q%b9 _WIJNٮ3а!h()` ffTWLjF| 88FzO832.PE|eJJ};k 㡒Hd:.gK +endstream +endobj +790 0 obj +<< +/R7 305 0 R +>> +endobj +791 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +792 0 obj +<< +/Filter /FlateDecode +/Length 3003 +>> +stream +P`WzOS>EkzK={CBCӡOiBX8nJOcؽ>AYP"gSDMh1+p2sU^~Ffq剀 塛5ol]* o;uW;tCʩXvnZߠʓeXܾ 4_f|ˑNggA+aEObZVNto h<#.qSyGCPTGs'׽ܫ& Btl##h9Ts|gtQOV/UgiVvP*C WB,xyi>u G"l.XPuԳ; 3»I=v{PWD FQ=AwɎȄX-oXвw{U+BׯC) E1Uål; YGz,i`ZUM2+$MX&'eb}Ɔ[of\ 8+3CiX>jG#1࿠Ƈwkʅ2LK Gpdr3w2'Wrq64=<@ٛ"E`& B|>ٝ58hzGzhd~ mkv$%sp螝ݰQhK%Gštwh AǠ73u E}]ݜ@}.0)sth'$^]/ ,ʃަ某 ڧ8D#F 1 + Zƪvr [13N' Eή[ץK̩^?W?f njTH?T؋a'ɼ35Kx)hsqT u W^l(` |pcS{^VZ[~L-Ssg#G!0\Q0\0dtՂ2g FEgC ;ܬkQPcQ"aIBa6@u~_/YX?XU܋A4CxAq$']cSkf;;߯:@++WFzuӼ&$x70Svs E5 f}Ӆj뽺#fxTRFJ})07!\P$2Ѥ3Ξ/?nEQ +nJz::nOԡQ̑@PQb"9/M&c*:sSy5o%v Qa<'CmhYyz{&BI@Fx4a"DPeWJ =m'}i%7ZO $c3U#k SL@fH1R6!Y*W9o6҇~5?xؘ{RbLuy_c^Y@> ui=%a&i}F4CUMh8Öeo!x ?l~x;Hσf<0.')#yT'RE[q31 xNq~?^(T75I* +ѸV'w``ޱQpv﫹LYJI{t> +endobj +794 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +795 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 298.728 302.731 302.713 310.838 ] +/Border [ 0 0 0 ] +/Dest [ 111 0 R /XYZ 75.52 60.98 null ] +/Subtype /Link +>> +endobj +796 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 47.072 202.81 57.205 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <6751dca51b80730b03ce885a09056ebe187d2c43ea7c090214c19d1d52315de96f742aa340e0b50ace3c59ca2c8592b7cbfe> +>> +/Subtype /Link +>> +endobj +797 0 obj +<< +/Filter /FlateDecode +/Length 3491 +>> +stream +k4}a8' .`acf 䓂TLRFLab}Ҹ2˰F:@4/C$lŌ97$89pa9Zpo]Eq8k=Ge_Κe0!v"ZJ> /2T$y*s}g(rf1mS +Ւ,$/~ut_GSGAmD4N6MТ%nP8VCP?%uM%{:e751><%:-|]eFʩULFvCBT6u0KkHdz_xԩdA+J"Y[Zqc(9͓ȯhgfR}hB*!l@|r&64J&{ެE 45SBM.5tpQK(u{-*Ӑ&`@݈[1*B"f!LɁ9"}6H0jQGk/moV{*cLZL^eT<=ԍ Bxdܒ{]5rȟu47M't c}P&0:W;Z"֓~x +Paؔ;R /2E{F<+Y'o.Yםdސ@Dڵxbr-#⃍C h k +1W]\LddB=gg,x0]&]V, ,_qdji m7db̈wQ~s|rS֗^sM+wȺ^`j$\Z8tqv^]" +Z3<i rW(Ѵc?K;`/9ZQ&w#(?pӋ7AE9 #Jd3gX^\s]}pl 6D͖>MS&UzonDq3b=IqOEp큥ND}IgFq]bc  ۳AƦp0qV|1nbPj4ge֫x]mQݟ6r_|2  _I30M9mӚO*B1ḭ̄}`),ӼH<O:(6vZ'u#}g߽& LC|Z4 oDMic?T7_qȜeyocܖk^V7H|KGʡҼ?u6ޛ{ʫ Y>)g2*)Ii5URpY9b dž;FIOh` ƠW$ExC9#[D9w[~ڭ 0oSZ̿IZKPِA˿A)BKE}a2t.%U"/!d"3RdWh/밖?4[~}OW|.r\&ÝтH?i=JZ0c:w(<UMF3s }@U5L>,?ABs' ƾ8$E۸vo<&^.\+-E\ÖzD99ҽߗ3qKdpqmu*n ӏSEZNt#"k8!l$[ӂ;Q)ܨCQ9ݑ衪](Vl|:A<=AG("QXX>/tndeslS@8Sgy糡*ms-gW%2V<^% 903x3Q6p5uBǎ 'ϧzZ[I.{Ur6[N6vo)g= !|UTQ(əc /Ɉ%̈́kۢf.ZNa0";Y@Ca0eʹr5_?yopc S(UFwtvD@ϤI [oqY > +endobj +799 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +800 0 obj +<< +/Filter /FlateDecode +/Length 3065 +>> +stream +or+hx[q% s1L6M{pR_.,locr`x/Ddk@Agtyn3s~7M6r/h͛[oeQS8_x5Rt;QzWI0c?֘ "rePx٧p.j ;;q20|9ѓ]ƌ\W9HHʅ.}wOmZshlsB|M%ak]#w}!-j3^P\r[T +0ot3DT<'vY'GQ5SϛM|AA379r,! +7֋VȗVdVFOnMe"I@Y<]fO/^}R\S,w".'ZA)e*W$^gaZw34z3Ց ^]a)Fl-?> J J担Eϟ>b/x*I,,Uu׎Xruè} +.k52ȌZ/)*jyG"B-c`[HGaްTAɒt;X:'fJ7f0j+rrg'r3e9|3Mz-,6BHyFJf+0܂x\lV!b(\FcĂ^/=bj4gi$327Ӱ_uk8iAg#! Np/B`M`bQ^mQ(Rv/X`֜xj_hoZD~"-#Y +DՈPd:hG: >zВL\o˟8e,V'ӷEot\U*'-r;Y&-51=s|nc? i ka$?ٴ3B[}s/Ş]kNX+|0;Àchʩ.W +JbI2|4L'=6MȪލ2彋`mډ @0nYzNuAJ&y* S%%i+p[ضRSqAlA`e%Wip?ET >`G:DءqKiQ:s<6\<} lQA4[}'`U*mIz2"B߿^[O)\FOVdөsy@5e0D:+j/&Sdm_rTO.sTc5%cD2'<ᴒFyob9pe$3jŸuD:h[-ݿ\]w_,}/_^l<^ò- ]ZHa4Dk5GV~%lERhmRS'! Dt3>.,6dϫVʨ9}^P]#+H|JjmK(憞CC^,('U^rTa1 {s*S v^i "x#9'\d] +7X4D7W'[.]wdteDs|/M pTz$"]<)tU| ut+:A@߼~VC 9/cfjWzߥv+Pp5ӷ+$A +`,14m΢_̠(#`aMYw=c p'԰i$xCVsϱ&s7ߘ^ARy`3w#)aF0>:`o44}őJw(%7=fyNR3C4QpSf;ɜG3F,ӑc7m{}8Zdp$w<~e->e"zc&_ *yPA% P:aU+#"6@Xr CE(am9xq5EwgTvQ~#D>T.KXҡm8Ob=h߀) +1"[$9_,lnH%~ɟ?M$Y]60D@Y3@= +4#0> +endobj +802 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +803 0 obj +<< +/Filter /FlateDecode +/Length 1436 +>> +stream +5&-бs懋m8z\NR]C +7h*hZ2aMn)\FoE FE[򺥥J%UO2c0?CgdfN̓ .:W(ҋ܍J bC>qc!_.,^V +Et**e{8Kpد&.&lκBѲ%zz{H1BE݀ALgǠHIM 7:~F{e5g{CyoznR:P%E[xleRU2_iC做51Y=<#z +IVY* V.$* +k4Ia'kA XgTM1ɢ~Qn{63Z-Z1Ĉ>tc øvZPKO9G |)-~A2WzF2WcqX&Oc<}w2ZaTco̲N0t" +.@`_82dBA#c$H6MՁ#^gۑŠ=&1`S)ѻ?_~FHLո~R ՑBЃ˩<@\E 2 ]eO!ArQoݱέ^ 9>=i&o(ٳ;JM{Urp?D7v]'ғƺRB̤Ż/V!kJbpw#]l_3PIԶg0llo(V``ކ-ϛ:]?r.q*DuakFE$r{I1]lNmCT1)g:JAX)HY.ӒA;o.줫&f6cB:6.Knآ=Tavrr]KY1q}c+/s0r /Ǜ +A3cK +_8Z X^²yX7}k~.QS [ʖ$sd(,W`9YSۮeQIS6:c`tHIo[r$mx g{εd@8U.G3\/*Ý1zbi:% vTbپ*D0x4Tsm-o"Nz/2!f*g]YLBI6S+ϸoBr]J~.%k7 : \.aMH<[ܒ#2$Jɠw oM3'ETA-p f_9)} n3N4L*◷kTvd")N2=Y ݢv +endstream +endobj +804 0 obj +<< +/R7 305 0 R +>> +endobj +805 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +806 0 obj +<< +/Filter /FlateDecode +/Length 3198 +>> +stream + gŜ_xΒ'6qaOո|᣻7 Hsz7~޾k.hHl뵓W̶ϏB'QJ)?(g b80}_H>V"{HpeMUŔx"Qw{7Kt%Fw.(]mjzUPo=,\{yLM̾!@%F0fOQf,D1UAcTwUFk8F 7t6Op(8#S/*>whGP/WU̾Ykx%OH٧HSBEܤկ.v0Mhk&A}BWS?>, +x,LFEtOM1.X}&T9JtM9N{yh)z W̔opI]fCS\eJ;<,)Gn4A n]i}z='g^ZfJCjz:隽 k.cS>ڂ\|V''S`SP7%^!#b9U~C`Il 2*]"Tm<|HI5bcOt ĉR)5(qEby)NI + ? Ukc?KI]Fg"`4L (607=mZ:u +!ewsQ@Wl}3 3˖Ym!~Upv8L PFSoeuVn?fyRa"ݡe&ݎh!öۈ,mu) ا < ϵh^GNRlM[leSU$O] &.(Lzن;m.mJOO5oC 1U0q葖"jWw0cl +o\F{MZlha ,\{Xh{zgA]0Oo_..)v BQ|JH~DKٷu @"qFIkLw,̊75J>jW9 j(@3f 1#ޅ`wf3 g&޸D*H4WЊb55 uZC B$4Q^ƯNFoX!w;ۢ8A~L:%7qq>ޙ*P;z +'oPa7PnxH +%CO&-3G8Kfζy=|h`R ¬h"_P!_o:cp:Y3<:cPc@iJ;{˙k{BXJ!VxTtUD-OmqY9kڪ7u{Eש&w)Q2K/f]\ Kj,Lx)LL N|1SxxߩNʟg).vA?^:bG|)&fuRɖE3c[mOz _ߢBz=h y [F轤(7?R_ǿY2Vo=} PLɴZĽa&ruRKg!UlӢ8wC]5 #0UC2&eQMB&"Y ; И1M eCPbBc<PDb顽Yt6>d!KЖrGCՙGt7LFb2d)eIO5‹ J2EH (p(X륺)ꔈ\\ `W: l^J:=z +DTB2ҟԊ/תH|:Ac((%?Q^te!ញB %|N#c1c,ĭ40)ûdSת+3x|[!.yQϰ13Ivd\(*P1p"TZ#6B9iǏqOY45H?X]42 +lb$r;T*+>Kw']h=oPѷ=5м)'hSՉjB*n4߬@ v=\uR0t!A#|VFhZk(S^2k"OhQpmKXßvz<%SuX60|wz*USR:pi`܈JٹcٷI$u X%ݹ&63NO7~8_\UpM:Y%}|jj.X2 Ն1nŽ*< +bEur@_C3> +endobj +808 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +809 0 obj +<< +/Filter /FlateDecode +/Length 3098 +>> +stream +lzo* xN@-9eSsF8Qqj,~m8oMؽ!+OώP^N쓝f0\w}uOB:P^!إW~WsF:y"juB"{7l@>ۙEܥAF *ddj٬o)t"Rt.&k9+>&7ddޏIY)rqr}ns{]Sͷ{nr͌$ԲZzb4(V5r2qjj3+[e+39zYsT 监{[u Bqpm",l`4HmfJu QnL׬$ 6͏}-*`J]#o&]zX)eNWzӏF,h@fW>D;aaNGe>'N>\}f*1m;x{IHUcUҪz 9vW/=ME⬉ +tw C: ! +70H_>R%'P!0dN^O(U3KcN( 5Ac]N m1 /tyW4'|JZ~$;^Gt˅DC`Dc Tl_%cњGG6g2K& 2GśHpQBBZo[xE} +\Sr;iq)(bh=ו&N݉aW_+=SjhrǓeUSN{ogb5q Ži5̌V-69c[%ofF'X lz!Sli.EaU휻Keho)UON"PW8KItHaQ25U*Zh⨳nL bPVJ&,܀D:=":t_|N#I,֤Dz`6\uVֱI;J_>:mgJh +=e܅)r?Ct2[ {=Ofd>Mȸq*U~t4r73VVcqv[]Mgg5/;V֢}G7Hьd?O\!P?8ᱻ8<;#;7O\9ÌM$Eqewsܭ$@uc= +i2.ke֙_.y7ǢA ZdR2pjl o-*@9l`"DYүG5!Lu`7mU{)^U\8}jSՀdf۾g9*`5s6Dφ~(W) +t1u{Vc{8 ԥ~H Pcsऱ>lыN=` ^>`\_Ep8Yo#onȧczViq*<(.$I!WHd sc!bN;1;KgH d_?_Ye*F` + Q-}Uw2"'MWd,0v]X8EVB&u;Yxy[wCcXJa7/NA`}N(mkRr]V4&mdۉv1CbbHPNÀBJ*x7~ao2$R7ȋp;;ȰSToa$ #5i (-lqh@ >/^mmsAZPrR!**:kNF\X)ɸ,,v_ɡ_BXQg4|9mR{Ay\DDU@\gq?$}tY#p^177ɥ]my;[J:b]dX[1$P,w,I}T0垆'LS90EӤG +yQu. +H#{Q*o0`$\ HiTX]beH5j.*a9Ә-wWPy=w"iKx$۸!)B1n;SdSCbAP}!w|uri<[v$=c ;h<TP $dڣS, A"U=F,,Hqg[6YRd$bl"!)V;h!Fy'82:߯1&Ӓy=pd$ϫEus䡱PsH,v_&I87pO4XHsvrEZ-}gEPX%a^o>WlߺrfH;"O<,}Bݤ7z?pO 2"2`ijmF5pm]ݩOm'}V=YF(HəstwW`܌|g*coX_"r| `l:ZNvHsc@toISڲ BJ9L'qbO 4.Y]*G))N)rFW8T'8ֈTtMtu~Rg1u! Ø#ysJAyxkgI^/sTklB(&k"`fy"/g';.Xd;eJy ͹WN>"76N +endstream +endobj +810 0 obj +<< +/R7 305 0 R +>> +endobj +811 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +812 0 obj +<< +/Filter /FlateDecode +/Length 2968 +>> +stream +|N!m_aŃE?9Ұ;Q:j;7'Mi:CȆ . Hnxǩg_@7uCceuj=3otE$5f5|Y7w7V}YL*&Pjs9$,0zEGeYN`(1crIP ǜq2O>|)ഒ @= VƷ,j^M_Y˽B48f?I;h1P\-Nl URJ1=e4[ANʻeJOo&t-r0UntލܢO*m+ +oB(n7n/GޜNKń9v-[`אqԩH43ޓPs9YPS@}s$o:$Vgih߹#9(;| V׈.G'N]~?Njf;diqXz;vqn$1 +I:.'/\ Xhbf:KE{ĉ-#;^u|2p/;q^Bcf8z՞-<®͆}ʽ]t(ÖX3 B!Ւg13DbѲywdkD"Vc +RP+{9z4WvD5~ctXY2ﳾq_x]7.5TC_rS7\dz/gLn{kň%hYT &^$=t:< J3Ru+s:N&jFݗY@*Wna6M辸&bZtq1n\=}"!1`MfT"W ./ka1+ \UM21J73.Ofs趛H 9eߧlB)̾GEȲQ`\^3;Q8=4E(;l.zĭ6@GY5nȄ%m@ND-%6 + P\eՍ3_%F eD J* r.^)oS ]Ev.bZRCx߃/NņKh;|O~`"Uj^WZȟ苀hPV@DEaB ybx&&0}1PZA2nuoPMP3^;$+Q\R}8>-v;e{N2Ǥ*/@?3*?К<]B/9=9vbŶ[nw/z*2=ʠ\I5{B" ;s =ErG5~?eL +AA݀(gonLoqdV0X]-þk VsTCgJeIFN; 0O~mHiju/mY{Z51L 0*MڨF(Cc1]JE#Yr1KCb& +"ӓjk$bCꥫ&F^A +kݏzfFr9bceSj r| +E~:x٢9ku8׈BNjyfv0=R&f{"ks/qR❈;R[&ۙS\ww Ap (hKṶ'3xqn%AXI(gkZpc{C1x5+f{YlXgNQ5lY8&^/b̰R 7G @dOSi5ʹFzYa岫 1k>ڔ0|)*ڙ@33dԨԭO˻Bn#r#oB%:,{~ѱגiQ5KMK5e1 k,T "֓b`]$b狖$xM@ ڈ,e&?q#2!ߠ@Z VbUփ0*ӓO4zLy: 8Z3OrJv- RΝUl 0ƼIYW ]P =ɯcw:OL+$<6]|LEd= onRFO%6U|;6!*Eɗ __RzYdL- p?Ǻk4?cKeCUbbo4J ZOfM 70*\LٹhmgyTfTsuC@ ;-̶GKؘ7o+UZ)vG[;ssf*a^t$U1~k5."b+IAHwk[S;dN8ZoZe̻WFmN\m0TAе3Pfrh@ tXr=٧= o;:Cybzl`Y^-{lcc\d+aHeEu% +^UOҨ (|J":$$dVxZd +endstream +endobj +813 0 obj +<< +/R7 305 0 R +>> +endobj +814 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +815 0 obj +<< +/Filter /FlateDecode +/Length 2683 +>> +stream +#}b%q6lIԣ-ΊTsH %ٗ:ώKd]W$_-α/ҐDX&X8 +f/P/M/s`?WqK˰ *{2`gl>Z*Kc5Dr:K^]P.~ihR+ٹT1ST"|r/9Wlh4YHJ͘3$>‘f7;I',Y,L8-$xOAq;{^}&.n zO<ްXް ei mt7D|'0'w-%"iAs v[™-Zպn9 3}N?X#AKo 73uƀԷ]c W|N1J=,{:ROے:)bPyn/: ruWHʊѹriP*W!-YdN#JBSяAax<DKQ69|Lਰm0ˍgo- +.']<Ұ Ԍ 4vac1?K\+,mխ7Fz RIg؋a1 #r\Ln5[l}ӧǥh [D_WZv]#EDN@hSCuy3&A99*eQGkߟG[)Ycy:R{͛^ڽE0# +%sy1ƽDA+=,K=/,tv,Ce2[ S's] +@F!~?鹄䣦1U*~!@ +c4.*}gQrOh82z9T9sm[I0@2uz +S0;_B]&Ԏ{2V;`TYGPXlOq۲6n֟C'@ "(y(_-$siX3s- )qZ>GSa㵱<\i~͆%%]9h>t].7g@xT8qz[Q&''dw7+'YYH;Mu~0{YPX5o +[ JMG¦mXY܋êfA9ULn8lLw`+bďm0w&_r-3K y8Qczˑ[c@8S~W),]ʁ5C􅳾G +|5Y *$3=[ALmtk\ +om 8TfhSVgA}-'agZ'a,|@d/O5Sz+NU o$ 7D=?VŮc6<%CJ䈕%Jgjd;{LMjr6QhYJ_ +m/^C#Ѽ$QǙ<5) ģJj{ҦHi~re3) g3&*rzxDPG?5a|ˇ fT鹲AR %¶ GoM̺4Nq +endstream +endobj +816 0 obj +<< +/R7 305 0 R +>> +endobj +817 0 obj +<< +/R201 362 0 R +/R137 315 0 R +>> +endobj +818 0 obj +<< +/Filter /FlateDecode +/Length 818 +>> +stream +mzw]:vpSyfC[87?:ȏf6h%e7Ɋ] iU-fWBS;4. +wpPAddxu+`$netɫf lT],Co_[@S;e$y sV5;N7$MR7C04q0ش"qYh%"Z#O4vqcLylo]t>ڞSmlnBoECBA6scMl{hUJ@I+Y1÷nd 3}VjzOs.Mvʂ~ +0VyլqiPo*(~%-`eZU Ÿ|&4FYNЀ}Lp G4fU +|wo p:x +yO@ [$g1w +endstream +endobj +819 0 obj +<< +/R7 305 0 R +>> +endobj +820 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +821 0 obj +<< +/Filter /FlateDecode +/Length 3208 +>> +stream +Q_Z_ptս(Ozz=N#,sk +]΍xլ<5 ŮbeA}gZ+S +L0Yh&7]Tq{S?1:=TimsoN);"2L{E˩k6:Gst|R<SNiiǣW:u1CíN`d2x=NZSXvxf 8Z}ڀPCNӒdK'ʃ$2q yPcĀupȣ9yk Y'Ѝ Ce_r-6\"hS/ 88m9 {VpRW@)"yLb>d=Ķ/z<yhޖ/'ۇ3gBfM:C +*/lU呪dizobac&EbeĤ@f^@$;gb0m=ыw.VbLY+*se}`q1?6_LscU'ON~̹Ļ Vd:ZVއ΢UN <s_>Ԓ/~~0tN#ּ,o;(ThTÀl3sY5 Z3;Z8%v +d}Q6'3وs,Uk}1]D$=},:zf`%YQ{Q"&g B{FhJ o -b8;2)FýHP'݀`M?Ngk/@wHSHl pKH-1lF_b3Z$X^?yC'`)6_\^ivwt:z-Vura􀐚Zǜ\S&61BY1D1z,Z[؂8IT շuRrSUsST>k\_Rzu|G%JlG<#lvŢ@GBx 4QDe3:G0=?ϯZ2qsV\yf[( yʿM?BmgErTs{zIoғx9SmjǪգg4* q"ČÊE[BMx }F.kjJ%rLλ4Wnr~vASxE>VY۽ջNt2wϓGrgB q﮳._~r,Zÿ૲=RH IUlnFe^.y\J˛3ey˵皯o5)_64Q=&B@fW>G/Jp59>`,rāszoN^Cefȝ`7硊|]i",m10xk|@Hu q>9h=# ]FP}B#,YWbLnOw[^pzV@K](E \w?}Sj78KÌS/\!K +|Ba,YuqY; apn"+7mD,z8=fTI伜#!F2RUێcQDuH)e[ %;"ɶt\;}ޕ9]v#É3V(^BIEjt/znYv],Wj5 g> +endobj +823 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +824 0 obj +<< +/Filter /FlateDecode +/Length 3141 +>> +stream +" > N6AtE/"5 +$!Fmyc"1"u!!GT/^bc-r;bi[:G[ex {uA7otT*賟mRѺ Sk\T\FƖIyW-t,{kQ]8{D wnʄG \Q_X-%zBIhN{2a) gư)]Q3I@^X,s_8z;:@sDE"n + B hP8R5f:zvd24-];loǓPX +FȹxX[^7Q ^%:Ȧؖm };;Cv{),uj LȎ@ sQVEDL_ ?>#lIWAt.OQ^vLz*(|V,˺lc]o3In#f!8Bq_O8ݖ$;1V},aAA@ws1Q9٩# &כLV)ryP!q4Lk@u=|̦LlhGr^Ȅ6|&u*z!쿋D'N9e$`g"NRo&7OfO$=V5ښ]' ̬e֟‘P}P}O d+z Q7d9D"!"ȧ޾uJT= pi +X>kuIpw/}TeV)&.c1)*UF&֭PњDʶT%ZjJ<ڶ>ff_Ä4dIhWo9'3ywU/x)cESk&8}Хcfg(9,sFn0΄2ߋeH߂-4A谤nȦD=a>DM:[:O1hWF*j>˿KdzjT- 1D/rh,8,)R A4J*aSmEi/ !'%'Hh9Kx8r;6L 7#K? syT[MPY1n,"Wg0vL} O-+C@FʳSYP +X8iۺ˕XryK²2"@*k"(8'v`Bс˛RşQ ܵ !S̻^.ZPXԣH8yE' ]*.*Ž[=(%B GngJd?\Ђ5n"m,0@lC&.4h]9fl%{oOg+0[Mꑘlۄ|U'{' +D, DYuWyȰ)]**X`]La  rO3,/JŌG}nJfc=F1=Ԏ|'T*Ji~|3S[iVa& Nj]$xPEЗ}({ GԏY䲮(L#@\ ֞Is#}c&W[ߑw%؂F^VB8..m;œtdU[@@p<ʮWmUmiЩ3#qR*%b+jѝ +(;S5`7})6C 7?sVE*Βl}x쑎e(阗p#0mAWid˼͚2\.W3ܳGyGD^XQfê4i[4Elwc ʸ8'd_Nd<7Os!!piHB'% 9 2r& v&0+!+4nZٗ ],Ǣog82Igf/{QK_@I:T`U'It bo ;;QXH9Ii +вlv\;giY7c PFhKpҋr9UnP񹦁>'z%ģg4rbyL27XL~%Ii֝QdA Lvz/EZ(/S8 9(YO$ + + k\ISX] f!m{!+Ĝ[fp20 6Ug@ݧqMԺR,<"zw|0*%ܗKG0jp 1Yv4^Ė,).)L숊h>J!x4=k񵧊wF{vh5wzkXΧzo%=MO9mb>]" !jڵ}E@V|-+JS3~RqA-`3ֹ݁3 +/>w)r"<5U6"WʥxXjK#}C*mQXyέNGWs:$&}v> +endobj +826 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +827 0 obj +<< +/Filter /FlateDecode +/Length 3351 +>> +stream +LA9+y퍼(I;$MKyyO^"3Y[nVk 4rᤤZ7yEnV~cE˝R ,[x-Ҹœv *Vؓ,Yrv|C2A:KTئ)ZRX$U5 +̺] |MwwmSUF:?Kpݖ#F,EE͊_Ym{ŏHcMSFTܦɖ5˰tzsj SQb<x-TR)TF"#B]Dl 1j0`V[w ,y3`UC0홤.EP^[ڿ+44.%W>{du.tW5' 1֕^GC:6yyVuo*. 0v7g`|@rQ"kBrxP3|oKpy:Jɘa||]kԒI)G{9v-'!w(oerz]2*蕲tʴ:` c 2S/NcHXO!Fu rfHfb + (.5yd 3TkC͕A]_,:̻b—(J/7++pUH͍,%Oc_x}G6yÉԠFQZþn>HkgƊu)9,/m"mF)H֭ZNKd2L-$^*M loo" |F]FtƏ<,2+v +h l4p21ua:f X1 V1/ +dhۋZMFxowT:/emgRHK,ŸW_t3BdB,;\T*G^?ğ$\.RtdR9h85NSgee(:ҕK+y"|5"nz%0i!Wņd`{ZCq|*[N\dWq3f=XU@ b4@G|*ȝ&4Akirt:O5pq7S(|7 jֲ{WGCu2(;fI5W1B]2,q,"Eqw _M}D@m̰hzKo8gb<ڏ+3;Gd9G4$/AvC,{: c "ACRC * l@&/*Zh%8=Hдi\ƍ$?Upã(j m7]t?%mf'Xx5ڗ:bhh*Mz ΗF G'akYh-r9n#R16z#(9+|p +}MPP.H.m]0'R ;1ږ ρpr0Y @JGB6&TDZqypάð'e?t+* +݅ʇUs*om5U-s(Ƅ4@˰s֢"@?4 J Ou eŻo]zĚDNvd\bl$D#'{uᰈus݆]S: :BS YHwW)2F T6-rvSaʅ'yC *dr V9<-( Y+3YݿMT 1=QxKꎥ[5׆X-%P3jO9KފGݮ*4 ZoDB?p»zR2 +I5 cGЕ*mf7$=\NSR+&E;I`hfzմ-诽s{3 +Tkga4ˤ"g >g2-Y?lw+_Wٸ-0]$-M ~2H9k>ДjYp_̛s̮>ڙO[y6^c[{"NGNU["fԈ ΅ɜ\!g)!!QlLzUrPW30/i ӑJn 7&D9hMe+X~wD%QߓޞkWm)dȦ,mG+2ĉ2pdyϓ5Q;*x3ir +endstream +endobj +828 0 obj +<< +/R7 305 0 R +>> +endobj +829 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +830 0 obj +<< +/Filter /FlateDecode +/Length 3155 +>> +stream +0G ֻ<|D>uLٗ2lTs9qrOr%ߢlX  N #9> pυOvYRIq0Z/ȞHQmGqIС=hȓEfZ#:ay#>clҜ&5(YlۺLQk;$axJ>ޚ +HMO- ݈&-/Ո@Mܒ">X kT0:i7n!ݧGCe)G82ցZP֙Gj#_峣ir#qbY1!thR:.+&*4_>vBZfY,,\lkEx}7W>(D{K A6],TYOFpayŇA36x\(L;[ѕʉ O)p=(%XCk> FÀ2^OF-wƄܺT<G_0gu[6|d$kVgG%U^߮ nQiB^+b<6'))-q0j]:_vpA&Y\\yIv 5.Ow >C:Xw3i=b瞿 ؘS}wuCV]kOmv$Ϋ0Akо +iw$:]y m9Ýw Eak nš* rv!&zC"cQECc EG*TP2^LrH+n?=7Smy)5q Owt iwޕb" _ y&?|sz}ų S6L$XNݎhXkIDZ.}dQ>KSJ{Tnc6q*THjZn{&U]ㄸ$xw&y/>ƽ!jhw=T G~3U`ufx&~dEƈc +W .G[%A5qIFGxsj}A8| \ ,QG !K?Yr6U_Z$2E#r\`GYz#\W'6ɇfRțS3̦[ avmXz5xCwx/Nv͑Yxul*S1+~=:g]t~@N-+,ϚpGY;}Otƙ0OٌKL$'kI^n;R3NM_> #y0p>{g$DW L7a!{FW\8ۄA2p%ýяrjL32QCgRQc -E=< csރAϬ?B~g=; +5z\/O9$HS2{J@d)xPy`& DQn#VW-39GWZ /ۙShleu+~6)=a1_QSlwæ;xj#" FE-LnaPE}huW?Ic/Fib ؜OGakJ87q-Vɑ;Y +vOP"r7GW!Φ V#k\ょoN-֗퇵F5].,|aK'w6<8Gj)[6lztZ?6I%Hy*UCfs y*yD{>U8N]/-8jzܙr]/pX@u +endstream +endobj +831 0 obj +<< +/R7 305 0 R +>> +endobj +832 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +833 0 obj +<< +/Filter /FlateDecode +/Length 3030 +>> +stream +S9iK0BV4\%jO.YcC2$u"7.ږ*b>s/"bIe(%d4[|QQ幗6t0R[@>m'S2_֋k4h\08 1.vRt_YI''#z5byAI+ m@. [jKԘF]sS h*+ x@r#$`ɧ-6'`cۤZ%މ٨ 󭕸@W|zǸ{_? FC-ʫE5q7.jz%6tn}zb#Ft{MU{grE<[u +VgŁR AW7M)->†(%-+#&"CNl"Mc:-=AS4PD(y\}[mb/%,.1_5;IxhqG!OD-l}6VCz +fX XAY|R ] ?si;$ /+e&΃nh`j:DhM^J̇k yt8{+.QI+_NDbgwc~,2Y] " swJu/M6s);Y!Xn64W'KE0-wqa9EK?0({~MCZM[g uAkIa}ڑ>*B1a';%<,(8m +j1,jFeᝍ|sk>yE +6,Tu1}?vQ;^Y$AoP6u4^uHm̧01i{ 9D|:v +2qWEM;-I +Z,qaKM·UC.ձ)\2}Ѝt?3;5c)2gPa>G;S%Ot 4@y,mA5]"{6prmSv4aZy~&@y1-XȕhpHtPT0?7car!YWWO|H\Mv'8:C^E`^`ӓv*!}W|]8fՐJNxb^:A?m̷<@I^_d@[yflP/}̯B~5URvJ~fvn<ͫ +%ErKƯv|hxt0&hNY#ǭ38? ++@56MtKjQ0? ȍ3֗+w+ # Ki'*bɬ8yuAp4J #,MO`z:E{ AM Vነ!#URX%q%~LjO=dKEf< 5LyU:z\|p4rVhĆسR|Cݹ7=?n2^H/'a8~̅PY{ +ؔqb f2ޛhd` ]Nk@L?NI+RsXڹF.'[b#$9tgX奙t N7ʣ^gW?AuwV 8L~~Bk H}Tbδ}-rJ4IJOcJKwg1,teLւ{ dshBpɈHS4G][^[" 68 Rɹ"JVxg +!s>NHK ]E͞{R/=X3Q鯋j~*Hbf+zc>0g$jrW$nh ] 4  ¦h-9t8LL5Eh>M $ZTf$!J=)/@q42&,4y4 hTAErͳ#%eqښo^  6$[iy +/%YA)0-1;H!M՘{슮FfF_ e;R(Wq@!)x&~֨"?ij\fZa`{jwk63`B?0`cԔb@3> +Ci|\FO0.i>/s†i[Bcµsն@eK40L[Jj<'>#+Pr"SMm(j9tK A +?HIT}RETdS\ +0<~E=Pb27G!}/8FY!hiH` fff7g5Lzy/h e&H*+v"cugGB,"hqlAO_$c@x j>(|=#)΍  G?X3Pn$F[@mkAAJ~"uɜawHJ|ShG9'}#fܟϊ-Q&"J>j6>&%}Զ0pq~s'M1Zt@FvU$͓(N~F9 S7r#M^.n-ˉ3lY2">p&P$'xN+ +Ɉ*Wž4NQΜnuD$i8GXOѾs > +endobj +835 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +836 0 obj +<< +/Filter /FlateDecode +/Length 2603 +>> +stream +#J8eN#P̴>R+IXYMy6AN{hh:NftGEh'^GRd(_WCz– VDbDpyT^Q2(JlΎṞa"1Uh* FnK& Tpȋ_4 +@. V~qc[~-|(d +H~$d1,Q%lu,&ppn"| &QBe1Q]XCq'6Ѐq`I/09%CX\KAʘ +}eEÒH#ߗNwadȏoM*bub-ECvk3VAˑ)+ǀnwCP< yb|w ބVTPv#D1A:ߦw|D2}qRzXdKk+SĚV9c~: %JC9c~rrgq S*kW[Fp,1B.tt> +o e>L[us(G 5]ajYtF,pvl rEXY2Y3RV" ݺ1 +1n(~N g^c&u-1g oZ(/l\)q@:3 KtwLJ$aMʋA*#>&9) +muys XWxxLfz)5x[i7TM$G E * +0p)rYڑ2_Rս:̴0 5鯄j>b=-*N&&@NjN%{ǐ,$CScI>9D  UVFF~IgX]|xWId`gEXZ* —0Z;rg9D|M.!N(z= `BKM}ztu̒F~\YȠ׌"1@բـ*`@1ƣۑSB5b h7_ {!OWa36w?f ;Cuf:MW&/pѧlW6`B]sRG?BaaK2s|UZ*Fj.';I5fwꗛ PHT1`ʥ7grM2#{7pL*mPp٠g`ni&Om Y``N|/GU_;S/?5'KP׮8hjA]Q3*Y b8\%%Bg}p +4 %k? fRYgu! Z$< xp\hM&E{B:\<0a|{,#y<*3wҭ,=bŰЃ<3QO 2xj8° ?iLm%DS=*ɜ8t%ܤg_'*G[շyva{~vJтNgS6]4M? `%Vq NȓoОN]4T>x>!-n7Y(aTf#Q5/fx;y6]Pͳ!kWCpD~JUJbnk,0JD+8`p&KXG!=mQV*KK $G(ʷ +endstream +endobj +837 0 obj +<< +/R7 305 0 R +>> +endobj +838 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +839 0 obj +<< +/Filter /FlateDecode +/Length 2525 +>> +stream + O3A[tU\rYS%(4(gǮU'aT3jyĵy=W=Q2ۆTXvs}ػ*xct{&r[uxccY@aM0L, fv}qF*iTlk6v LbkSZNF+"W[IPf-W83?g`ǟ1?y9z +nV\u3.%Z~>;UbV"@o˵[;֗l]PZA=l:-EiQWـLCkoob肰(jHFE]01kmq9#|q^luzF Z0"Ɗ_3Cԁ$V)`2h֖oD9a C Arn[ٻU `.qL]ѨdmWֽ[Cl\óm ;=pdu^'n'ݯ¿ 9濜W +lHŏZʩL]S[#FP")KIq,)&0{*mgR"9MM]LB[%Q-j~k4A0Iߵ29<( L ofΥW 1 ?r516B=Vt#FJ+7J,5};eqIgϕlNc4j4~a{QQ \\Gzbp?3DL,8 $a$x +']P:z~.f9ޟ<_aܞv6OfMe5W"jY2}>kC[j@TV=>T!˩a6BiH/эSu$qns{B|h +4mm 6y[JIgX< -qFgx' n²+ FUHͺ̰rO (8}_%2 x]^|jTnZյ-0v'W*9 ]S]ywBVWԪ7{CI`NtjoʷHLbd`TӠ96gs\iΏv=˩ShދX4( +?u2-ۜ]UusÕ5 XlO~WnL|0{s䀩oJnCIsֹf:ѠFSh~'{ܹ'lh@qNU)g +׹ >5e!9~Q]2T2b>cBzgK+TNHl xt_%Y14vߟx=I+ź8'(7 +m7 Z&fQgI,g]J [Ze961d`~S{qD^Wsm{ݲbD|! xJͼaMMGJj9nAl =h GGsٶK;yw==!7ϧl.PY}`]dok^:1TKg˧tm#eP9F΍? O[U5 gufVc6Z6<;!42Hnݶ/SG@uo0%0AehS7ԑo|GIPsG0%cI5vV~kG)gw4NT ++bp2RF +:(QR{]J1=!J8F-겍}в4KHU]_|߆.sӜ +iJ\UO Rf@EJ7ScF_mY nuA2c8Ȏ.52NPNB +endstream +endobj +840 0 obj +<< +/R7 305 0 R +>> +endobj +841 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +842 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 212.189 400.2 216.126 408.307 ] +/Border [ 0 0 0 ] +/Dest [ 126 0 R /XYZ 75.52 202.28 null ] +/Subtype /Link +>> +endobj +843 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 188.365 281.99 198.499 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <4986a49c95fc3966383a16e4665c5dfbdd95e1de341fe7dad603fc063cdd7a21a22b57bd40f4e023a64113> +>> +/Subtype /Link +>> +endobj +844 0 obj +<< +/Filter /FlateDecode +/Length 2483 +>> +stream +@2C,nzdUkN@'?62w?_(& +YAD;Ӄ;($#7<xR$ sd OKM駱BeL^*Sgt:5p4zpmB#oS!,[iV5s\QlͶhV$ % +A8Ͷ|;֜BMϮtf~S/DM̿6a-PP/J$y!bջe K aUy8)sg\TCW$zґoPHV:6}`F7|u\Zr0]۪G/*ɯl!21p MuF FwOTm-xsOJC;b5Lz vܺ>3:en?~wX +Ĕr6#ݘ0eNǷ24$HWNcZO +m ӓIvy WC-1ZU]nA@[g!DϚw;I_~52N|'0ҹM:!ڼXiv +qAfuzZ-&8͡.caQU6fQ+sAXswΈ)jq^2̴-VAӌ$p6V`}}gCѸ& 0!&pq-3ēd$UY3krZCQXn o$V4~XUpb÷LFCJ}ҷ7e la?bEPX8#<7/ !:r\*3;\!*iVw 0PX +jA33c ќ.-;,#j ߌ'հ>X~h}@v9@HiA*S +a: F۞>Ө%ncj%}r}W:jySk5ѹ.5F@?`t2k*Um=}.ǻntΩ[#Gy8(QSs{5>\iԒa'dHc.%5wx刜MoO|̱["Rq5Ibf_ \u6 T mz(=I88 +mLҍUnsԟ~/8k/(Ԡ\TEesȘŻ0zPC~r<dޭYӺ-ת*KBTSDkq-OgXH4-(^S>ɬ7HhG ("? ܸ(xܺb*J/=sjS! +Z{+&> +endobj +846 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +847 0 obj +<< +/Filter /FlateDecode +/Length 3092 +>> +stream +.2[lrY& +w#5 +P4!a gx{.I֑UGJKcg +f(kd8"ˏ +F%ԡ%^M! oCa2ͮG)teόw[g *^ hL/9}M6!㕤ā נk\gS0?ZGᰴgKFu"B: &# Cz! mbUߊdU~V2b8L)/V\ҧ9'ȏ(M}Ϡ@! 7v"–|a,9+њL:5Yap߮;۠䛎88XGE (VvA M\ZH8:W fmEXwH0+ Y32hw۴{u\)Lsk_- PΚvWix8>ajم(|"&hH[znײ[u<VpvOoy̤5Li`D]jG2ejwQ3lGA }?vDQUuGGLnuu&Pb,Q+ǻuV)_$ B>“ә{{Tx@hnѹ9kdn.@qʇYвiѪf>Xb}";8Wo#yG\XQnAK#S0HR&;{꩔!@oQh׼MfC܊'7*x$:Kf]t1]9 7\lj gtϋ9S'þe'"o&n/g<%V%A@ R&OS`.m {W&UzM6QEIKhBF1~-NI=ZѮԘ x(ԌAJ".1h]L½;IfV툕Aʳ/hPWa d$d:rnKȋt]aCI[վ73&D*E-F0KyJv>Gw&Q4c]F땇@4^ab朥rLE֕?;;*}LyJ[hX^Pr )z:Wc.:} +ZW<ō2DbNް2)Tq&Uw5K~ +${('w*Dr1qQY +g|ԋ &}8C"'9>;+]GPZ +|Z4L3H!\zitճȇ|EԂG%Ff16 s)+@70OMP-3NGhhኦ"@NGP% Om)jVO:q(< +@1[SXO\;=% +vB(S5lu&KgwߌF Ii߲Y[> +endobj +849 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +850 0 obj +<< +/Filter /FlateDecode +/Length 2151 +>> +stream +t_a{+vɞ\:llQ+*hG>npUMmm  S(~2ClC2A,YVC;DGJ:1!|\`_3Rت7DSk/8fD:-pF,2Y,cBz DQ +фK"&P.:FSc-rhpx$Ht[my1&jM]Φ256pG׭NN +YQEڡ>R?2=wM~׊Y"ba<عp$_IVb3i:0.hn,x0jr^(PaկOh,\_9>1Ez P&ky_`?HC=`(|& jń,yuMa;I+ BS jD+VG)`]%!XaK2?CZPC)˕oU [V):};ϓ#d +:rx"ɛ/rBr{Ө@m;k![=k FZ%d" ijRzf׃`@SؔƊ3aLs";/`ISlgTtќ40!|3rvJsr_cb @R=eSt /EHl@A p{l6- :W3+(GM 3Gg9ǂM`n6Y>GO4[]OU/jAM7txL3Jw,=nLa0&v[<)6Ȼ8ax#/ E9;8_aX_M5ɞ +F2;~I^!JK e?c7{akSnݰ BHG_oo\f1{B΄muTF޸5C".P_o1Tx YYf R-|kуi"jLӟvH*~A,z[豣&\\Ąn+"!ޡ;R'!\9ZV ^+yNT~2ξ8x1RΣ#mqT6;7I'N0 ڵE Gv;!YISDϳe[kT*o55Xf!ܟ*İ̤X=-F-"S5I6Жd; >p"[; /eW, Ju=Q0]be9B>fˌQԿ01gQjPvZ](jk^ٵ?SCO_?\w.5 rP|:~`(M_ :`C#HqPԇŠNfo>]= hFY=qןaK7ϕ`ҳzӜy'`x(f#aSEL(&9[1]șB۳-9J(DHa*:˜SO̸L${D on5{)Xx"pNÀԵ0E(HpEluJ[a 3M8vdp`r`a=ZZ{;mIiCRqsa|(?,`A9%&!=m^}\!Va  Z歖Wj׸l7vzT֎ N!b2 ,)]p٬znv*"(V +몐X X7ucrK45,o}lc8{pqE wjg'ts+^ mY4 ƴ/#+Qk@em +\ğ4)/S&F^nENEVX̨ ʯҕ ĘOY-$@k,{$ Yn}"S(z_Qּ`BXX൳( +/L7a!]tXqnÞi,_ +endstream +endobj +851 0 obj +<< +/R7 305 0 R +>> +endobj +852 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +853 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 323.325 514.705 327.356 522.812 ] +/Border [ 0 0 0 ] +/Dest [ 129 0 R /XYZ 75.52 78.65 null ] +/Subtype /Link +>> +endobj +854 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 64.739 188.645 74.873 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +855 0 obj +<< +/Filter /FlateDecode +/Length 2526 +>> +stream +D=91֢D"yG6pl`MXHL?˪H$"@.9 @9M"[r-F&$kEhxԁrQua|Y O:xܾ yUN<WtbNs #je#d1ߢݞ"9M!,y[n-@ +̹Ʃ@"@Ρ 0YZS2^ +؟ϙ}0gGt.xcgF-}K1Ƈ>}i.Fpo;2t7/0ڑq=,p'f^n"B;KU+: - kk(杄^5^.ZmdsyZ4;p>-n.ur%<17 a!mLBf.!&Z(cO>q F]I0!{4,9zɲwJcN񫾩l:{cǚUfgp|z^<&NAYƇ[=`\wuOC [cu6{ԉS~*Č)beCmfثS$h +Bޑh|]EL!(tr߂ ,;CEhEpmI|-"%uf {T.ãCQ_Iamv#u,G¸zoT. IdLYƱ"TPÈo-teTvs&xnn I4TCL"EsP+N)e>{8_Is@MH-䯣[ܰUmEGoGu)@OsP&GyL@8JDMI -t.E54#1ɴ!z5e>sH9;q7n^ +~bfmA$vB-?-/Zef>A1о̰EͬzeQkMd{67b0+^B

!X ~l7]~VNp. 춾Saڔ:,ų6S`o$z,$ ҘjŲ׏~֞p@ +xC,-lNvAP-w]6͊TzO[X"57?}0|М_PpZL4/B?ޤ?V FrӶ)Ӵnm +endstream +endobj +856 0 obj +<< +/R7 305 0 R +>> +endobj +857 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +858 0 obj +<< +/Filter /FlateDecode +/Length 2465 +>> +stream +dK +ڃS KvV#ZF}ByGcvaKf$l@Sf{vm 1OI:TNq(c,hWMF١6`qhQ:[mݭawT +s{?ɏ +LK)ѧČ͵Oƒc]YΡhSwHjOĚ7(IC1~3_, J{l7' !̢1r\d=S]]JэS]!`~uJy%<r ͵„D +*ִުQ\-mO\[X9+TEA!fP[}M6zgԓ&ݤl1w4XxJ;%,_/NxPqas BYLI 7?-Iv?_.9%tȆeۃ|8R7%0ǪY=.#hX@g]d.v  "L!aX+2?]$QF;$Lj H- c8e֬;RM5q?upo^^a&}X-ȿIϧQ1<ǩ/$HhҀD*41˔tFR/L 8}+ 0VlRIpAE#맒x1-0ZtS%~J$DK_r(kv yr5XaX C{% ?r9=XqrBMwiJKw3,'wEb=8 + :'>1ȾV ?Wc3hY3"Bѳml!BN:M `y;ERDc5BVIs2|s;-F8`ٹgB!ezHJK*R8(mcEo&Y ]MpM2orݺh_A gd" {+hc̈́hH7g٫=Ib>~quЮ~_WQPmi*v{3#AXʄ#6/V6h.sW÷YES9q%*sڙdv+P!+lI |>Ȯ7 c$?O/k r=ka$ujɿx;txyj8zi6ilG#| g +Lq〘t0JolFϬOrn>Ė4Ηx_x2&r H0v|g3]l?W)ZAU_'+c{/=SVP{QkU%C4Im#Q,MͤqX foG@EUx4ARF+Y*HMW?]KIT yW +s^DG]y ӏyn\]+7H*^jAOw/GJ,Jl(M/=O{dXnjZgscüi(6Ys/P }ؒòCp}K&jPNݲ}NĒe{=pn1"^4|'EpɂHWP瘯'y]܂ʹNFۢ>p^3y a|%$؏,\m^9聢.TmIX_`Hnnɭ" #1J:`[5";gKȗE!NCIs/ +-}%r31q {kWN:% @:?ǢgW>x+%K1EF(uoĬ0{+bP% ~^p71r,MW <]źGxJW'py{w0AfB_IJOpkIO-|Y6CQ*Zp(Πe(q$y6d}T`śSptY @E]zhUؿJ#:"Jv4!RM2xk +U.ҽ|.VkL#׾,`oOӭ4ŲǷmdfB҈Zi +VmB"wda:z8h2бņ]cu$O]؋`d١JjEdX6z jP̏6FkMh,P6݁bM-=𿎵r,JqN#7ջZ[V\.}qdu9?0P/xBN"MfMteR.z޴·Rrʛ,=5c-ֳޅg d.%#uӢ +*U diMuJt7ktpE7xtZ 8)D_b1O|ܚ;H_ Q +endstream +endobj +859 0 obj +<< +/R7 305 0 R +>> +endobj +860 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +861 0 obj +<< +/Filter /FlateDecode +/Length 3017 +>> +stream +20>-L[.?wؔtnжh̓~3ҟ~ b 2KqG<0 E#؄d–]WO{a?_s.ҾU!hwkdin!#nph2 +Z5a +FC~߅;q^l]bt4PUm0"a5{Ou_]戋0ŲrDgrq"<(>^j!n"1FX!-B&fQ/ANr ,nV.p2u}㝹YpV(N>З%W'[g-72~9{W]Y:!<> +})љ=ߞ6A7rb-R` }_~nmo4d`F:s+ާ٥8.~Vla,w ;R^an?dk`URK$7n]M[n5t;Զat/| MAnN>M jeDA8vpڪ6[jcJe!Ka% V ?'%]C@F&M1}e28-C3@"XcMD`wD=kڕ6]## oR~(_]{؃ ˽rhl7N&0VKJBy 蓼8~> +x"q9+qQ֐,b ~O|h77E3՞(%"็Bwq*ow d07Wy?N?lce=+;1@[M?GoS^{.!VO"L)Y`)MP~="(JrPaf?k9A7syL0E1KvҲ7_o|ⷳػo+s1!QA~5*`jDr[skoxtXfm)N*o 7Z;Xv ˇk Zٯ6,eDEw!Ʀ; _v., ECoB%/A7$rl'ޟ›Z}>*ǩ(=!IKw74yv.2(Csx8Q~Rg߿uas`Yd?(RuN$=nJIG E:yvjR4Y}Ǟ(o#.8•Kg[2clzNܚʙfe;Gu;HL,^AjQ6|"Su>V};G7rM}>G~nk<%'fPJs4@Ŷ +3L@#45$Vm J#Uvwx蔡߇,Ce*=h]>Ix|Hii6"N=䮛 E +T}Dd"jiF%A \g +z~v}-+,Eaur9a8A㾅7ʋ,lCO@}&_,(t}jq-;Mg)t#EƚͮI!˶ֿt0 ߻ffקRZZE>"Nt4jL]]7zJ 7$XqW7յ29 cٔCx+!fH"\xVFI:T!V5 [ o;C2+pΕ 1(䢚GVWJ]@* 'tQfXQi;S:?S߳zUz w.Ɠ׊B5 ̳c> {}^ +O߹Ja Ɖ|BNj lVUa~?Q#H(_5َ+tZjZp8#*] ef=urO{iU2]ar ߛT\ڐȈԅqEyD)wVrd՚sN ^T l{Y`z}^ҰЙNSLgq?7.0BP`E̮Oyxnī +Iԇne5%Ftwk + {?g I>SķTa3b$t/d ?rk=X/Y8?Gn*eRv k˩>* ̓&4 /e<ր|2Fii{[ctkiIIXz* |Th!kNBТ;";>v? (w)x܈"7v,'lo5%;6ɺHcLك_ṮZ`-BD6Thslzs@HKv=oers04mv\2 Q'm]~P&Ľmҥg~ +~(@bW|GsԢݻ切=]; Jbvv%7 WK؎L>U&GYar5 tzǜ$ySY<9/㽁Թ>$ KD> +endobj +863 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +864 0 obj +<< +/Filter /FlateDecode +/Length 3193 +>> +stream +ə}G!2JwmQ;'T@=IEn+AcևUn=h8+ټh7bSC.I#'njs:I$/7u;,`r֛Ժ( y)>=A}׾VH! v1CەHIC[/ jLRՎ:ەQ(nu[]KO ݣ.qz&ܓ xqI`{Mig2Zu-aeo'뤭i +I*fsVIA 84˓ia@<}=M-j_8?}6dʠ4E7.\=|(sXs%`T1?99vFY--nM59NqǼL, hŹߥm<hmkPb$|W_h`ɥ>q(Ի/?n/1 U&2SY/Џ +fvᶙyVw(ѧ:oN&hmovv2Q]̽!BLP .K2~w2!I *P!<˻k,,/ *+<}`mcc_-BK6++ۜy s ̬mG^Nz;7;ly/%2hNhP~Jf֮;&E)Ր~U 䜎@mqHFX7pY(҂ @PרH +y'Dwƃ=yCGKDI0b+?яulMM5drhsܴ9f7V5"M>嵽UYq:+rQ>n|y}Fo!}=#O<͙N:C9x=G&-plRff2w}6{rD5NoA݂`iE#! L"{[ MmeBG-J1C`fA;W }4ҜnÓv)<15 c'DPz5۲7.&iXFx:)DL a +IUA_n T^e NiA0$+maf˽%+xͷЍu⳩Hnu Ȑ(AyY`PA6 + oeHvi7ڗE)G?MMz;09yCIѿ Hq((4E#joNZC|ul{[7t6'_02Y*u51ѥ:s%/6#dFqo#GKI& +/K`||X9萲_[\l]&:VFn^|Z,@ _-+9BC ͔,?r~EG W h﹒>*GJe%dٍ2+JK#-#7#->&7Ցku +†$6qRA)j52G~\wlApym84 bfcfE|0e)ߑ@6=Q?v:r2R_c74ry;g)}@'FCIxִ'[UX1Yr->ʪk\vQPvy.yB9)<Z ^rF/mt~d8PmL ^OPbO]#2N>VM+:R$cYUEv[ M;_fɉ8wls >[W4GݨQ 0QfYEIi((MPO_.*VdCZ eu]+*&3 -*8^-[{&J"slHˢ6RY% &:1u=h.WQO$)qB5}{7e `pF VU.T,G +)# [}I|Z8K ]4yamB] WbJ|0~JQ$%;n9$+Ӳ7/gmDVv:2}sgL׍cFE]%jbusLm + C[<|Lڀz>"h2xJP%I,g{-I L {DJ=fN,ڣ/w2:> +endobj +866 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +867 0 obj +<< +/Filter /FlateDecode +/Length 2878 +>> +stream +xžE;]@n3_E1Bf1\O(dkSdq9uck#,܏t5B5@zcTYާ'.DQ *mO'3`Kߕj26AA?= +{Őq:!WCD2=|oÑomPg^o`3qOpDY^7dq̾9&i0:Ԭp<\%:Zv<)k  i}CPiUUйEMI(NKijmE;?.wN ˸AƄj+΃ ISto 8Q$]լ ~ײĤ֏dft*1luk RƹbbcؔLD?r%Mm(qnrˏOGAHfo&V)i$vU;X w.*vkPR&ON5#rx?q}[ǚWQEv氟1TA&:aE1CىoC%nFA KԢ>^/E&)l|Ht1 +8ѷc".Ń[Rju&>@mmnq%ܑ#;%",oDx:z]1takVU]XC5XQu4B|Ffc/}[g*ҕ&p!R7GbTDR?Lr)~^e*`Ν;@$I +},PFV`~z;>Yo[Mktdc?zǴԼs*ת(b\Boa;C>Ⱥ" i#"yCH^?%~(* {skxçplϢLuQX*02}=S`(%j&gPXL 7Crb7 +pLPnTg_^r>R7ͣF]~_ L:d|nlV#Ahް+*pERO\43UB<8v*tTޛأUT3ߠUguU7iL +xOvN1rKǍUӁO]."(/ZeZ<Pu3J+َ -&ThOFM!ϷTP9է6٬+~Ay1ʹWc!vq/2E Mk_'Ě_J\SH(s8bizGS&;1eq2MVF\Ȕ6;ӇfV66׸oa)n o(Ř鼒టRr)y̏xx*7.Und,!0y,;/:d/;{),J4 ~ 6pfcN\~HCؒRU\{ +q9% +^[$ɕ>ݩrDfH*WԪ6D /wsꙖr,"͜+.ԡ )UC30nsE/RSBmktbeTlfj K% 8?E;͙YCUD?UՒ(VubB@fIWr.nlo|+q.VHJ| Q57<,aJcmgȥꤟ̔/oCoVUZ`Jh#9'}av?]pܟRX[yɱܼWϊOb-?Pr xԢqx= h3 qWCvǣ?4ׅC05%/ޟ0Jȗ*@qF% ~̞qʝY2D +LZ/ Dh ,XS,0X4r,^ a>^y=8DzǞՔ?.e/|"J2xBeCtjPs= əp$isbM;FMz=x)|;H}<K6GUԿqĐZB!hϏ(5#AuN$߮$`.6' f~=>{jjnyB= ":%~㬰.,\}l +Lw("&"qoTnm.׊]e3oҋd1Mn~EՆT16vɒ|a}?G`:d' –m륆d}Iptn?v[V'D&HiTϴ]s\,Zu]uNod{5FSǏ9$mI$͏A{Y b4Zhp|vj2};{Dg<#Q7Mtc*VӪ+#(2ݰx(uI0SݧI)å0_'t8\FP(m@_CS]nq\虡yф,nzp=D:һh?a12VOVBS33x_Sv,sd;Z%j6Bemtb^|}0xQ +UpvU &19x #JBljl$>fCyjIzwv!njvbW `Z Tg{0kykO+eUJ1FxRltF´wKT,}C +endstream +endobj +868 0 obj +<< +/R7 305 0 R +>> +endobj +869 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +870 0 obj +<< +/Filter /FlateDecode +/Length 2565 +>> +stream +ڏbu +beQbM w0֯z1?A. 1 xі\1j %az^GNgM"d5v2}(W>LޚăO" 9fۅ J.07$I4=`K$?C)ʈjӨWgN^9vқq@IYoBeXjop7҅7m :w⏈s-fwg&{ɹK^mWY +aY2 +"8nJ͛~kA.96Ƞ:ɲa^w"7\́|Gf-¥:w{+hJ#9c _ְwwF8ቝ-,5E!v!SQtmX\:[d`vs$=*4/]Ui~D +4a2v8kX0qB:r͊\&\(&f(n|oK({92U$@>H~ jc;n27~;ua|};3; 0Hcemә&=r_;ceK 'Aiai>۵",/2 cPvH@/i+Upp(Ny9&hX# SpsDۻ+7rFݚMqiQS(M&X ^hL6TGaLln6A2?D 2'릲z;NY䅎ɸ;Xo".;4RHoP?h7}uOINr}WZJ1(.:8zgc!{8EyZ}LoۢM];:ǧ=T @e[w5dv$mJ= +qGP"SVXnya٢5 `ؙclԙގSEټ +0,-y{*#MFA(jz f϶e Ak Y {$A;`PQ +03%>R2G-ȃDWM`[K6Xtl,L`GUf%Uq e 6~b]vu)->Ci"»^G('{&ViRCkk::F"]D#;C+ ֚N ɇ\mo^,#+{VJPE|] }-r+j49R#A)Wam`:6{ ٹLt(uxKQdi +)AGHP|;a{VnVJ.$~$pB —w/1:ݪ󤫪Inm>1QǵWgt& +DBQ 󤎒Pn]c_{5 ab(?1~E!\?)]hUYWJņ7hְUv`#uI(`^UX2Lچ7PEULg0#Pd!"㔹ѕd]hw%zxx$YUƥ}NjBGdCf$]odpJ0|QMH'٘DF^%@^wTEy k& Jsϸؒ}O}m܁8E3|\)F픠NVSfJXb:+6hˈ&62e +bv XNm^C|D89S7):|x)Bh U.9v +Ł8'*3&¶DveO|~5c缩f苅xgf/,8O@7Q -4slBRG7F/Yf> ƍE7N4E,O*{Be9V "r8tz¤|]6X|B0ږqE5Ο v#p|{x b3>`*:]ݩT+X@T4-NuAdK*\iQ4jBTS}i.?pvDEuӆd[l-cܾ3+渄[0gӭHẇ vܓjNf.P wuVie6.?IR m,pɫV<˺J9Pkb+sa*[u*2ȃVQgR ++r +fD'MέCIyj^{Q|D/'2 ĎLh/׻\"s ߯ +endstream +endobj +871 0 obj +<< +/R7 305 0 R +>> +endobj +872 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +873 0 obj +<< +/Filter /FlateDecode +/Length 2855 +>> +stream +թ b8%YcgNtdF4<>&rͣpX^"sY8Sx|"$U&aMXq'rw: |;c?3o+p,$*  NekeJvrS<]~^ևn4&Lg R +mÿ#U2n; +By|qۋml{ڱc^odT+Y{_2iAɠi~>b&$P x(JzQd}KoBΎOfmn\1Jטe KS7Dw@J4}FR <НHٶ{3ym]4a#&6=zc +b\dzb\M56fA`\S1p5$ ÌJ+g,n7^ ʮdm=Gn1žEIZ+[4UxI6T&J\HԹX?ӌFS{xPŴ{0^/yL;VfG%b?U 霴t}P#/wݥ+MZN¡?zZAjVt. **$ϸЁވMqә<RJZp iV~]?н]{5򒹝NDRϦNGj)H&OBphm=_?bH0C~cl󒔪c, G8!MXmi aɱ?K/Q|]tN KܴfxgηCXjK2?]2X;۬/e%H"__ϩ_w;;czw*t;=r"vy\Ke* Jb?!Gwf +ՄjY5[4ی޳I2&';}zr\v :ܗiG9bl];ljacڠq*4\:&jAV_gp)lgyD\jfF۟Ky5b)=*Vd3PkL]ݠ|eDXE_m Q_#Ghʯh4PKQUls2ͲA @]} ۓ /$q0$d/Pϧ;Oy-mVa4̭s,aER :zlYĮJۉ#ӓU:CE;zįhFKH:Xb$h1KLgnɄ 7k\mҤs}y`n 9,5WUѮNѽ4.X$@0˝r]^ɽFfzbu^eӐHPt7'U=޻9j@[,tˣ“rɸWy`J|8x%S/Uٔ+n4iE驑Ӻؓŵo'mPߐ$sH=I*riB BDFz4R/ ʊ;Х:H EHY#۲V+%O_yGݠ9~7%*Ax%ykM|2Ӌ3%˨:[Yq{vh3nd;hg_uflQXʂsFw&_iG FRQڡMvq1rҲ&^`JE?/ր_ߏ?jRbv" OKəQ:hvyFjŏSe(7w&mr=~KOJ|'vhE[4hSKN(͘2 5 EH4%JH+.nO=̗C yYG%N07KSx˪p-_N *HD$;boB%r)嶫"Vv,QX j1ݑ G[_? bf8`Uy!-Jҿ\ ?Zt_qꚷco'bIx}=) v%ջ]g؇vRf+Ai'6SOFi^)(x7(ŒN멶(da\ L'px[F=2 8e_E8>㨷(HB^lŝ[|^h k7ui#}[5Hj,sL|*Y$"㡜s0'/aKkl$nxf@mTL>@|C ۏ;@ U~ o fEUo1Ga>%᭘j$ Wƽ}A} FvRU +9v96!b+$o82 ΋9u4κ31WPw<1H(<`ZZ\ >QQl83P㬗hp`l:3 +>QrU=w/IE6|C)iA=81Ƒ m3I)$̦G%OQIdqMcbCl{9Eͨ7,0n :w]SyKfG$\j zvkۚ#fXÙXA'{h_vຄbCG?ou Ъf-7ThAAߘHEϾ(QVһj` 9&`WBjynBokgDb. `<ޕi&A/TZ+{V9xAۍ4jcx_X{Ni> +endobj +875 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +876 0 obj +<< +/Filter /FlateDecode +/Length 3065 +>> +stream +B ˡNA1 +Qe%Nr'`c*x$n*ZIޡ6ou*lI.dN{yG%y/)I_ [ )2^$eS*.l@_qqpl G٪#QܜKH6 QVc\R6vFb/ %X3`xi?rI>޳ӠL9"Iz/kpAZ@k.9D-Y8$>S%|քѩw rIbB*s[Ɏӽ=8@sF' M?aЭ{[sSZVeuΥ<;{ߞR{qUqES9>eKu t$Zqڌ{=/  sҌFoy g"B#gi1ۀۂ [':ľJmrj~h%ɑ>!Qub(7>sJɹ[ h{  buOJz3IqvM_}"z`KX,GȲqIɎNkG{Y͘w{LBgX:g S3ֽhv ~xm|"|b-Wļy0ZpP*l։Ziɲӹ6bni'mQֻ[v3&R'fڜdb~vh^?_4VZ$]842& uʧZD3/EhM@D0O\WBR6`u+))UdhuRRXQ='N\Kfl|X>)]ڗ̊-`2fWMeɪv:jo)&T{Sh%^ %y+PO~__y4q{x\)D٥%Rʒoi̹̠h8f0k(P06{nqV[] fm &^Cxɢ&D>-KBǡq <&.qVS`rci;0f6W2()RxjZ,w9ata{8IBݻ[TtPK+BX=pl/:7|;+%/ Z_{Y@} rɱ3 id6,90WYG|>)=]}̕d <4X(ۼf;CT莡 +8@|;G,)rk|!bʹzD!tR5җ&^Ig6X9nj$cgLI`/nxi!0'‚B'q,AA`4-  `Ip yjpyfo_㼘*_u!O&'r >OUdGHQYo;6Cɜ +(9ѥdsIQ4fԞ扳Bk{,0z(~ZH-W%p`u:^H y,,ap:^,,G(> җѸMSQN)=#wCŵGS;LM~@ԍqVg̾454ljA `W>/ $O~~lƏYmډ>+PPh4ROgBjj۴[O^fOh&VmXOgpv'j +y'n,Z+1y1j#{e-\s +貙r`bX%^Ri!$vI#M ">zW09'`j8QYۚ+` ;.VRH7{?,BRiP@3 m\ +s݆ޖUq*TCg2,j#1Z rFP_u P97,k2 PVykY-┋ +>RN˿.@4;d;Smd0]ŃcWt)|pܳWAqF{זm;}x~i`Ղ,H<+!ZXjH^=y_Mj<2༾ДL4}lsjA2TXh^lS;MLiߑ8>[+pz/Z{$_ 5p"F @_#bHhrzsV~`@PZ\]ydp^,-`e!K?3>Պ2(O!IĄ&CԀmBw,~neA1ŗ{ >"1iޗ-dsH~ElEqrޯOkL_²ZeiWaYeauӸs~9)G3C(9> +endobj +878 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +879 0 obj +<< +/Filter /FlateDecode +/Length 2970 +>> +stream +FX>{E.":Ӽ{#T]Nni!u/LB )&x xog~6\-O%1ik0+7ܘu?QGHn >in'Q/@ 1(#n݇ix^lL\'L( cApV|6Z_!-2ˆ<2Y+XA%<揔P(AvX'p1kw0 ۆyGSpMM\U`b>G7=xJsҐ^-:w `oP+ޏcG.YG@Z;uõ ^ow T"mÔB=ZͪIgD' +M %gHr|$÷ƒx k)}JЭ9MA|vy Uю}Z1*QF?cyx:h$OӤ5>6᭵ms$(3b$u7M0i\3DK>\Zr]O;9X8G2dRrzO/`:7'l`YD1lӵQ>9S"hg`z6W)žU&ђ=𨻇]iʮFN ӤޜnvmӚCYq0(;~ Z5"CkV$\T3Voq=LfRUsϞ@-dp9?mMƆrxʐ+UtM:p׿M5RXR(SC[sl2V?[aFꁞA@7 +SpX|y,ȞX\z SPQ2?P /AVo>yކ WAD徺B_0d,o Psy>A!W{+Jy™)7>4@[$F/QEW I7!썶 fh4j0.CalzO*ٳ+6K T+~5IkS>,ıl :r,!)vB4z{c> ޚ1 ~-~*&!CM))ߙfvTGzj".'FmcOgx'LOjY!0x=0߼YF`-mȳ֠Y}JkrrJӵq _^\|;n@jP;)W%cq6̄7shaȃԳ=iP<9QtlҀφ@7n;ZVO-vp u3̤11R&qcK`~~E8>_ΝM %JZ~<.nPr/UqMo&,q\|?0~妓 "H^u{0 '6W.|xX%.͠wp 6Wx{Dx7)Ɗ3ʕ>fv񒵌TBH8MmPQ 51ܮ>+q'NTvk ) he)J\nkCZ tmCx +5.. @[Hev\Ү̾L]$1E:F0xҙ?wrQ+CcQsy/WrhfnmLtԪ=',8?Ơx-nB \co=I+03hD+^' F`"nݪU3E%H_F3!aE>$Rvz(5@6Nrb}GP󜵀+6<FPsMX OuX S%GSy}+wHsCF-.ds2c_a`VEKuSX}^;RN~x3n: +endstream +endobj +880 0 obj +<< +/R7 305 0 R +>> +endobj +881 0 obj +<< +/R137 315 0 R +>> +endobj +882 0 obj +<< +/Filter /FlateDecode +/Length 605 +>> +stream +ZOt澚pVӊEL13Cߜ㥥N({KA|CtyUyk%ZٱVJ)ܸf$hÄϚ&N ި}1noVSݎ#zd>-Xke)Z6mx3}BLYY>U"7JMĥriFO6WP +n|av~_)R_h/FX +k0xW:@H@>sßU23gέi Ҽ5y_ZZOGE]MŦnˎn@ z+ѿXh~(k}*>}r2(AʂY,n&~w`#," 0gQL>:q1F%LwcT0"h }[":6"z +6ZXrӗA ~6+)ƿ[p=H$9҄g3d/3+[GN>JpOb]C[ MMmA>ξTS^ /iT#b$@A0g6ɺR%x2j?ٌ~/́{ +endstream +endobj +883 0 obj +<< +/R7 305 0 R +>> +endobj +884 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +885 0 obj +<< +/Filter /FlateDecode +/Length 3135 +>> +stream +py4'|¹8OGpDZJCͮp4,ygUzKS9w% +*i WVƚDT9,tƘ23 竭nq@*샆Pe0Jgi‹6Wan"Na*@e#"H.%Ih= w"Ke*9"s4V>&JciNWhkA{"|} \cw`7w7C $Ą)Iq77,i]-\b +_*d-a +7`خ4th/v@{a!EjEiJ):$$|xkf{VBd \8*ZXm@sIa&}}|V(.O6u@Y٦'=|fۍuA<0@S\?µ>P#ro"GI2m3_]qRZ0E3p%9@C_i b6W3P@jS G.V Dyڟb{1^2fO264P[%8su$N{~W"B$gV%eWXkK}N6r*bϴ{{ `#̐PnF&ؠ`.nB= 1tvof0 >-eSx[QiZ0jďTnE4__Bd +1KF}-W}}@w6I0,x(UfsVpSa9&:Jg :Jh# JN Ȩ4#dudRVX!JYz}NZ7:*ѧҜ2j1_c/0LVhGfWp rT{V_,|}z ZS PU#Ƹ. u;ogovkA?9BHz[iقkj*{1|+چ?LC3<9RsmSpeMqmy9y_ ݷ5^D宬$VWY>Au.v A3rWҴʓ7f;ᄐ-%Up 4‰f4x'o3 +%fIf-/bغt=^0UKS9Ӌ;) 8c " +*Ou_¡qM޿ &ӵkpaF[czi;:J_`46QGQQO޺vWRd Lˉac<*+ЎRjup8eB*V:}euf7n +H(kygWH*ܙu MjfOǍ-pgXgk 5O3o00Ov}F. 31ht*ٓ%,k^#(񠎴̬'gESIg׊8[KlD,1;N;Z`lȞ>Jh-`_}HP1UC"vKϸ\x|7=eha\󶧹6ttUC6kV<fTSGzT(0\TUe0-МLXVuV +{uPeu8jnٓ9inoO +*d?æǕmx/S癡dUiʸlQ$0w,=BIس0𰴼7^HV*"7 HKiTTkǤ&HQc +b(Kz +ΚkSLI*~Y>ߚ@5̻BQɛHD` y Tw(;gטπ +tc{e ޡUd<aHh6@%Ɠd WETYF56쨡z_Mӄs: }̐83)ўb&MI8@a$2zy19Ƕ[ d羸x|-0qT6UoP_B1oy'k-LuTRH[ٳ>Nt}q r0B.Z +Br;p|gyo| +endstream +endobj +886 0 obj +<< +/R7 305 0 R +>> +endobj +887 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +888 0 obj +<< +/Filter /FlateDecode +/Length 2757 +>> +stream +ߖB%#t>N?./v|7EasW::qvD/Ě`db"ptCfvTRv9THJ%lꣵ# A$~,׳[M '-7ʱY.fCqm֜[r2 ,/ p]4τ ` +=JkgrXC۩qLWߢIdivi"p>ƺ#(X{{߈NZA+p”=֑u׳ 66_CggÜn޴#bK1f8|rgWkhfbw]Zz@qN&.bKӚWUV G_ޠ钪;* |WݗGƇ"eC{ ]e1]lth ȸ`πnUâ-ሑ+w*{`]+S3D@w}k;0ssc͢,6lvStmH f(C󨆛m%y 4 +hgjiŏFEtTU1UމT_F{o;RqBs DϳXnuFZmGD3Gñdד2,d~pj74.NǪϕߴH=n)o/dε?j@ܿ29, Hx6t5*:ڹy$zxZK]0_JZOezECn5宯mp(>ޚE{R`ԗCVc- N]{T5ǮO\7zA#0nZhK&E-{SD*`iz>a}U&xŏnr&җbڍ%fc*%?%j`1BQplo=Z4!( +^:,@oBbN1Xg>+bJO;<QA7}%o$H:l6ͻZK=D7gI%pSƱt;,8慚CVb?ih@u,tGZz¤ѱIL&寋f$!{.DBmzsjv{XYJQۇaPːCΨ w 8RlNe:7Cm:Mes摆ZQ0,mÜZ!Çv,)@ ^;*3/"g@Ϛ7sFu wq/y 1ݻlv X6ƏYWgEY r +7QRB1FmBR-V +8m=dmiS[ k; vrvHAXYjB[`XdI(_6`]ٟ:@$&p!!QV]f.kㆃّptB:c݃UNukz֭~B3*W4v@blW))|)40m`XدHףg'$nz"cNO)~H7 +B*(( V[zIP{7P|,$Jc$ +1 kTAr%!@5M:_%E*\2*eN'2[d'L[r> +endobj +890 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +891 0 obj +<< +/Filter /FlateDecode +/Length 2780 +>> +stream +bX8؞umdDa0N)KI#ee ^~ UnL;Dcn |p#vHnih+F "2غiV"ؗx>HfbQ$  %QKdHK^0a@A ++YS:!M1˂Af 5RJ+/ ,nW[ yr*Yie8v.H@JFZ2RK h΋>%o҈V83Z} gK^=ds_#4k2=`+_R!jkxH Bh%/`)_ۿRuvnV*m/ٶۆ޼貜ifMKVם)c>!bE/Д$aa:}Y> IApE?ߍ +i4@9x]? /qjeS[kB| QUuP +m4G>".bA=Auk X7')+'ڇɩ)wH{'@%\#t$ y&"I;8c.ٝ5(6+D0: z a,bUAt8؟^ BD]?HMr8 K(%+fI~Vr˰? Xj`V?I]1rӽ6+Jo)XG$ˌؼu_!6ɲXEojVtGiuH0|ɷ_)A`Q'S"`s(>7h?I=RòA%XȆPޏuUQd%8W/okVw a얊)/QzſLJ%.0`Nxւ)fgpq~\G)%.:[ꇒtbw9;6; uz] Mk: `RXS`> :]k}(NaORa)`̆HJJmΘ' +ȼ{x q֔P7C?I4c w2sW4G6f]:p# w7X7H{3F*?7&e\Lc**y@'W1Pk0a`&oj_ Zu +*|4 +ʱh#UX FR9B]N^{sl9ݪ>-fČEi:Yd/Wƒt/m,!eɚ_J#r6y甍){gd*o2ٲՆGTyWI]F6/ ,n 2/`CE]g02"j@9)NŘ)'l}](.!Su΋wUPdu;zWIL=WFt*刀%n(@鵔w>ϯze3IC}ި<%O][k1yhBvVC@_6觃O>LgLv҄˒C9$T#fQzwX0edt4d #s2Ci_(8u: Ζ +C/nІDfVZӄ[ +xJ6-7bojBs6DlJ䦒tF  +=~NV/-C>~"z؞;;mD5^dۉ棟ESK)E-2dO7a7&D -]B?~z]O׷HUndg8W=7}(aMUMI8Cq\Cy)ƨUѦX}m)%nFV#>f|wF}ڔ{^ܣ ̼Y^ QQߨ_% `QIDF1A)͇@& ÿm 7Tx>"o"TWHe[PxCL5- 1M>DP(,$NR ۂ^ +qSҶ @.̬\$3f9L[f#07B%OBG._ҽ+8N_/z®fPIPdF[5[-A4@ ª*LZm Ra+H/E {IV!n ]䣯L}6F m@nRzLCR# S7FQDsV|OZ!;|͐Y(ԺI`'~aO$--LuONx(OGeZhqf +kρN03~0B=S9M%mRK> L^ +Jѷ֜>=ڳXLmPA8UX,|#`~K.rc3=^ج4.<5/qpji2! +endstream +endobj +892 0 obj +<< +/R7 305 0 R +>> +endobj +893 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +894 0 obj +<< +/Filter /FlateDecode +/Length 3114 +>> +stream +5(Kض{\n>|Ĵu7NkhŊGMVx Mcڐ@_`@ 5л%6@;Y}QFbE*rIN߫eūhhlMCT vG@s#X56 E?.2a݊XMYc!^NhtLvckX +z!oYos妩\JצExB7Ǻ `I>*"+`,cAG:{: 2bWةg@gZUAwׅ[hwBW(p@7}]l#m`o= +{g4 -/&2?׋z7-(_fDDL}A y2ܭ:'$C9+c3+LD ΥOp/mD: 1y^l#F<XeS&;_.Ce"H^"JnϷXX\Cܡ+2IFdX_j(# JTS$OOnE Gsȝ?PǷF9M}dKΝ㈝\Dx 9e#=1R7 +덽t 0[YaZcqzPKB3!`\ #1WBNY΍(mX('m59jyMι0 xb/`ѹs=iy~?&H{zw)dWޜDDPvÎ`Pנ VOp0z}^Ţ0")4*opZ.F;3+fu2FΟ;>)fs\]D6 RMI̬ʨ Y0@]ܛ"B^dŻ#mPc5'I>7?E,ofqm}';#+>v5)3`Os)"="#`Apr_Zb>H&jYyQ +T94+:.Y+1ĭ*)4TߐFO܊DGBb~ X9)"ɟBj0 pv处>{lq2[kljK֠|o g*cG cFN&iơU% rd7:N94e{ +\Pn瞃tWP"bZ>CnPmtMl4YxFQ'`hn;9'Ks(ǜOi[P_Tu??Є9qDk N)ai "hJceX{j`տy`*0a7_u[ʼn~מݔD.PmmH 08j #W +?<Jw×jMeQ@EK#r| fOTo-dR~ujphujۢJ\߉GӞՑ&rۨxqJ uʼn–kL1&õߧ΅v)3d0ѬL~H +[}k$Cw/]?)lǞG#!w,J؄w'}p,q:yufs8(yE9YD]+VwBX-Fc-")ɸ0uXh>rE{yYu[~LDybЈ=Prlt%$R(djj ɂw*jYs&tcE4hىsoslidu CnǓr,)XE0KO-"TQ\;l2 [> +endobj +896 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +897 0 obj +<< +/Filter /FlateDecode +/Length 2276 +>> +stream +@pN)|'Mo}bvmnEH!;ULo:"̀!Ƃ(eI䤁!6W 8#Xm:|G~ZaԾ^9sEpM]ӕK骼w]>Jr5O:[&k"/.*Zs?l_.XOeU_Ķ%V?O T_ E6M@{`fqqnEF[ FKU{Mġ\@ +r򨯁+F94?z3mVCakH:..|;g/E9ѕSz<5FpmXD|$J =GJ5tZ? N62e'BnVeR@DLܱ +ޫq tf'ggN-hLN'y͵[ +*<ُEHS?~])hxi)q)=+ 4g q*wJmS*ZPc :@,תgᐍJiv=!~]/^%OLRf B|id\Z,ߪ}:CϦVo+<<@Ê2M/Z);0Dg~O·zcV-*=[~ Pt$x|nO<* &E %`,r}#HݵЕVE1"-_K ӥ=Юvx?08axh[H3_VWi>g0MU/9.e9}~/MAyߝ.ׅpLmR#SСqVs.LR!|tK]rNN2AWDȟYh_;a9 Qd2=oL˺Q;НeiÆ5*dq޳[6zxvBȨ"D&< +V(p4Ջ3 :A|Fĵ0 qAWHEBN(3h g;'~YX7?+x6+=d BJ.X@|"87@M& dŧBle{Dܻ* [Mܛ(_j]tC^ɨ ǿKΨ_ {6 V^C3$1Dؐ±R]YY> CIgd^7~ "טmdZF3?%(,U ؞eTPFk2!,w-TJ@G􎼬,7 VDY%@v/JdhM6VuߎՀ;<eA;YxmevQ;7{1`AS덤a\cKt^INFb?TqY})t +Q+3q# $D"~,VX x8_etQEX# 0M)!~>BFG;!Aն3_!DePt +~C ]/tr`~+Sjw'ؽV &*"^n&^YxX=ْVP#r[ ̖=MmwʋL9'6B*qJU6{[/75|zƏ OX[-&׷> +endobj +899 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +900 0 obj +<< +/Filter /FlateDecode +/Length 2554 +>> +stream +ީn^ * S!cY㶧 Ŏѧ -h)A1 o +$2v*=;}$p{YeӢH 5(pK؅]a<9d֫#&Fw#XlP]AoDjC`#޽ȆR8znnVb.~ވ8Űκ%+ :T8N=6YOqE7/ tЉ4{|]#Kg-yߨq?Bx 7 Pgg2Q5ҿ:|<@l2=\=/ш]<؇l\â'0yj?M{dpyg,VP>F'hQ{ ȋNP(եډIK31KjɓԶtqz3$c#{,+ه2Fvx(ݲՙ ͯ栘 +GڹΣlFb[h+0=grNC Y Hk-\N WP\K3{`~|LAҫ Cie^*`ER\@GHAϩ`apQN"W2;cB&pL:,We #fC$x.-c͑-nPgz1gfyp6em^A'c/i *1׳dPHe~i&zRs]GU>R]F8[pa:nM׉TRY 'jJ +ɃqۋrpLŇKejIUIKNGؚ|K<qƜRC7\(:)ƾ?D\Ws椏dT;?@l}pmF>{Q]G?,Z|Ol= > +bN)obZڅ2` kyU-KUhBJ@vO\LMa&sG"Wy +\EqmqŚ2pKkc GuS/$cl4<Ϯ+{ +Q3cTJ7`f| q\5([zk]Ox-X C3diTyF K>NRҘL'Lp"Z>͕ .6j8 =tךGs # [c #+v 7Moӕ=w^QĖ3afMj1UxְWVbjlVW +1tˁ1T7AnV[PCbtTäuEb^xs9]Y +endstream +endobj +901 0 obj +<< +/R7 305 0 R +>> +endobj +902 0 obj +<< +/R137 315 0 R +>> +endobj +903 0 obj +<< +/Filter /FlateDecode +/Length 1079 +>> +stream +Hvnh9}h2r9EPyf<Ȥ +!vG-a`ZqА۟\E` 4J,BH|9iPrS["bxlKHYgol̈ɨVB , o-2NS朗{)Wb^'cΎڹ'2AK7fɣKيO/c䗜Ų1d֙ Kc(ScX:~hΞ0Qo؃_8FfAǡʧ Â~I!/]0M|RS'޴TI`rԷ>0p,. 8WNd/vDϝ։zeF'N}vKUΎN"ʍʠkbJq*ĵTo]hf{" *Cg8bmIDKfA_ W=n%x}ߘ$`Wja0@^C/j)L8&T+l{fAŒ.<Ѩ9ymj5 >vX#axi!: LkW4mgRLlGra ϴ +Tǁ' V.{4M-dOEoIozqR4UM?wh& ; z76 / ێ u݌2:!!}w +L=jCED䤔E$(ru^SV~*e\&`I=`,].Ѓg8ݒwMF +endstream +endobj +904 0 obj +<< +/R7 305 0 R +>> +endobj +905 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +906 0 obj +<< +/Filter /FlateDecode +/Length 3036 +>> +stream +kyEp>n/d94Vhq$SFǷ}fujXO("mͥ^Ibu:$q(A­#MacqsX3yyu*f}H07VPӆ5NYhe;i坞tsV) ̉2V̋.#˲;#]SMkr8FIMdha(rـ ~$l`3 Vmq#q4 {RDj98b1` `*$:ggPF]老)}h? Ds7nPħEkK.[0IS#؂f=}^IǴ2[h*$"H^c=7@%0&ݪmsځHqW8P >a"eOy?jhP0_w3EAH TlY8i1Ǯi-﫽tɯgDG"+k"[cH[4-m$ݐ^3GyC`Lب D㷽NsR#^HJ[|wU/&BS"~{h!$0b2|]$h,$bY3.}E!1*E%I/-8G罋|[OaUş2wG: s@ؕM'ݢw'@oh\lMf՟-J8,KAu7*>!V ҹ/6H9:&B٬ R@,B: ,e@+GjlhTtkׂ$r'U~e秐ɑՕ^lmX"l' #[XHKwrJ LmOlu-O,~}v{3k/ӛ̕ˍxcpNHW7, "4a t&Q"#G2G +oAMt|Ǵ;ӽ,!;5nVV::-[\QJf d0!U1%SPGR#gN[쾫ؘ,uu _w+JTmPQjeRr!"4{a1n +jwEg9ھOqRgyP\k+٢%cm5䅅hTmCGkQ\bfU7N vWua>xVxYWq=B0˦(@X̯<5ܾr9MFaB|4qEW?U 5cke-G=*VʳhI@Zݑ؞H&&M4E\g:+S^@q)KUFE-̵v(wk:P ;x:,ouEؚv * TN!旉z_LYkW:̑ᆜnwL@opN dr@:FWT lꄓ87PNGNv٫(Fvħ!̱zѭX[֩"]4 n Q #^!iv+&P7VO{-Qd6όG|13c$Nڇ +ZۓC2HA369hYlXUX1ph7 {-о,M~0ҬxBctsN +endstream +endobj +907 0 obj +<< +/R7 305 0 R +>> +endobj +908 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +909 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 257.453 372.994 261.222 381.101 ] +/Border [ 0 0 0 ] +/Dest [ 147 0 R /XYZ 75.52 99.54 null ] +/Subtype /Link +>> +endobj +910 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 128.443 164.722 132.481 172.829 ] +/Border [ 0 0 0 ] +/Dest [ 147 0 R /XYZ 75.52 87.58 null ] +/Subtype /Link +>> +endobj +911 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 85.629 207.169 95.763 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +912 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 73.674 209.534 83.808 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <953c7a9f2b5c1517da7162e7119abf4a082805db212eb7877e86e89349243e94c3266a3fe41bd9ae84cafef856e82689a3ecba9ab9a340fe2b0a1431fc> +>> +/Subtype /Link +>> +endobj +913 0 obj +<< +/Filter /FlateDecode +/Length 2898 +>> +stream +[H;+z=L#AÅ 1In ٱcb-QEtR𰗦e" @=Zg=J':މ}!N8Y~8ߞ,mo迃]/ ,F=44~!nn)䇰xu;94i N1m#X2`ăiI3sEa,`|۞ c HhdۀRIik]._iSUEa^\'خg;|W"TB),Pg}n 9< + i[A)9[]cܞ1PT]QyvE}_]t^]!=ǬғSLs ڌ]ò&Tq7A0\DpcN`qJ;%u NU)iN^kUS)&uS{Y7NY. O8X>a@Q2^yZq6m~ĔN=Z#Utcñ"O6 V=bhw_xoZ<ûmE{>͠,yV n!)(({?dD4' v3u鴌ܘ#]Yլ&Bk `:2:YGuT, +S*X-)d(=P󒅶br9DMH1Ւ.U/bJC0&׽ӉF}havjNn)-.r$ʒ|-|>,HyW;,Aom}:UYTө5/Y`k쮄hO;S82>1';bz^m˽qUzߓ(vρ n*] p{ ͤQifI}y *~5j lXM<˜1b 7$.A bkU=8%o""9$y<ӝ6<Hmrm88Ofl ;o!vdb[9;R::{g{@_Y(4-pXA97\Mڐ7T|Gv;cx`? u 2A[?F ?Ql 2lMD%ˎ`yQFh3Vt@3#;Ey>&t"6[Fӣ(FrcWr2Bz`CByT +?1 +^PX<`Nә)ѱIxGt2Ma2(.P{KG_,sgT/-J{TJ^0G˴jHJ%'9qzoM^4ʸ1C[mV}@g晧> +*$ata#!JaH=3N.RtX٣j|_';oU-0zJ?P1๺ q +@n&3I vqWwPיe:J^[7Y-ݐw&9D [ N6 *R)?dio2(Ʃa Pk`M M20\w:tؑ?Oh:PxBL6yB$ é4ϸ +IzA1I2,DvR]b[Ŏ.9ɰg0b\ABGy zK+N4t1d/2|SwTCk@";W|\x +endstream +endobj +914 0 obj +<< +/R7 305 0 R +>> +endobj +915 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +916 0 obj +<< +/Filter /FlateDecode +/Length 3197 +>> +stream +-59(?j'*8UWʭNd;ŭ~DInqQƞ[\J .ri޽5foU>ӓ!mHbjƀ5O'Tz 2/<5cL9jScɒjb~Fbͅ ?n$ AiڲCp%Lh tr76=t\jHA8KJ5|Qs|qg?SV 2\R3%:fFdw,Fo+4ܧ'p%%mr&9bџ3bReOycp3 ~>Đ]j,}`TRG't b2.J W{+8Wm* +qs)jwb#@Znh~H[fv4 T[M#'ٟP~0ofi"X\GZ\`E#% M5StaD7ӎ7D߆[=(c8P6 +ȕ31!'嵅Q!٫1=H=c,0@=nm|M1avY%:Zo4\C|#ܛy\7Pl"{VlkZ9R9hKcS&A9 Hp. *v dwRVz+D<#5sVRSWfBC4/L5UBhũ md5LbqQJK(ʷsvl@ *S"\x20J +VDE-"ȼW^g?VP=裶ɇX*upL1sXkKrg2r;_8l# +,ZVE#Ri،й +n:,!T 4X9bV"˫Yfy)e$dUx:{*S :kѰ_i嬫aƘrGZx#\!@_v\-㆔̘4PJ3F #W% +,y`+21B8.{->`B8"Kx>;}gUdN]ܼ^C͗I ؚ&H Eyx +8v0g4]jB簲Ќ`+p |5N<$xa2d4Fν>[+=` +-}*yzIbCǬyM xXn '6s%X%: +񄋙}gT'yoBw9<\bx1@?~̂TK$Y1-0!@_B%jfW7bOnh2YLKZnR|JCU ]ԮʵlդHi++ulja dwt>}7҃OL n.fu0ͱO6$SkK6/vU@gDz4<;_G-G}2&!ɠߍ@w > +endobj +918 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +919 0 obj +<< +/Filter /FlateDecode +/Length 3448 +>> +stream +]@,owz, H낯Qdz(w-8gZ'2Ua $]l-{ +Ʒ4!e0gߕ4F&u-W^V+ޫ2 ҥj wt$VfX)u_h sc#BƧ+W¾9'K,=Z;_H)R\$SM$tN&ͶOqb8k +i+; g"_4ȈTwI4vu]:jAtɆ}_jXa'?R;JM؂S>WjL{8N,`p$h`S5 mg&YE,M}rV'#ch5y-VGI4DYdAxWK8/jJCJ%Wqӡ̈́0)W=[{!K/sg\sB GC貄!|r*xP`&W٬Oޠ،׋ʪ']絷BEd +r6S0U@"0T1LDvo`"x8+9(-#ߓvM QIvƢ#K4"Cܝ."gp^O#RA2rW5zTQ,]UP~EAIo@\}M/KCP$Hv*4VjMi!k1&kZ4ơr*ԑ/-:h%Β"&?䛮}ZEvc G9*yS' &}42|nSE8A݆g>8A" =p[',ܸezelP +(u*BbV6@` Am +p~i4n?Xqtn.|boz],iZ7)Ƞc *juL\ +&ɓC2JA:^pDX޻p){4tQ%+NJ>rjmdtTY݃Ǎk8"c81aXwUw.A8LYmL g8:Қ ~n៱(# +5 -k*^<wzr,s{ψ{F#o#j0OhߌlECHmOHCoDu '>v\ù#6le.6; \aenTI8GK;"G_CcN}N*Jhb4*50)|r` )B3LU^$#4ƜT#߬H|U=Oo߸)g(JDTD6 M2L TzGok~CAbͻF_IāWj. 7Fa2W[Aʢm3U=I Q=0HD*6jX +oŲe b@3c姎p j+~\SeY xjJ,l)\`]b7]I4i ߝG$PoBCaaK')671 MUxണ8ʵ _= :xO |ÛŌTL9 ]{Ȭ.kAOZC:d\M9q1\z!! `>GP + ŻrƚX %ĉ?.snW0x価"qwX6MzUr$ˁVmy`g,d½W-sR؊NhNγ|09LH[ſu命}tn~~Z1NmjHZq 1IYl)$XvYF(#wz[=8rRp51jM&O͚$1ygJGOBBuBgf -B#؄!8YLmմn +2tMO*a~7i' "\ͺ&nE=J_/b +{ z _0Δdv> +endobj +921 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +922 0 obj +<< +/Filter /FlateDecode +/Length 2895 +>> +stream +k6k?Ën~2}Yx5 s?f[WW9s?fk~9VNŗp^O,*)_ ,fꇽ=`!@!#j$'=84KYT7 J$'0W@12IWQ)ba6jD\ώv< )|֋ '#geX琙?s&țtlJrT>=wfEj|p}lk8rD#Umה7 fi;ʽ,nV"= b쒕<]?lF9dbvhd6f ywT~t>'TQ Tc(S5&qM#bpgC<;̅-7`IxTq"_O7a~.e>_} d<V2E VN<ދϨ4FpsC Lyyn2b Ɛj|#j,4s" ^ANu;ۙn~ +zXNғ8hdqYh4cMl˶ s.Ve|f s͉ƴЧqȬԔ!bUzy$m.fzk%,߆'q] #xaj[ΨaZE缍">ܗ84\@B k{b* >q̾MR2 9U;\UbO +h*mճ +qR;_ƕZ[s*:Ja-ᢞ~'Ymp7)B9#m\(ǪZ~Oi=,8I7rS^rMG[MmG6H_1DX&e1cu}RšiNR`gɟ`*|aEԙ%rh{1 (yp)M#K`B8zGeBAZCm. 'k_Ҍ 듾C_5s^::C5&l˔剛ړdWy%-u +ˊX!$zє˖oG .:miƩɔީ"dwQ\2nЕsGsSŤxdg;n#居jvÎyܶŪ9>T+WW2mv<@>UOx跉ٞy>| +X%0PJI#SK_jMI\hbWocxNg2O$ MqRBZIvXb?`|y*ךJZ[KYIyn{bDu-YjPTDf]'ho8 _E[*Iņv.ܲ*;4g ( +Q!V`ǻAEnڦyqQ۬j3ixvOry ys"HtĊ'/(Ĭ c76gZc{;~1ɞ]zT H.'*|&]\wf}@SiH窄v1E}sϛHy_pǃlf:]>%"#bNp¢yFO.,˚%G4e +<fk_[0s+RP[s_叻٨\G\I=. +*+WJk, g[8Nq2SqM5l?WۇC @&Ts) _+˟v? T\3SK-a\t1лP[5]iiDq>hsY,5':9I p` U,Z7"+!oRP`_%> Ju-Y2#3ϯA-ZragZ^ś{BWc+.7sG'7;_s;rs"us,M]?rx͓Xw9=n:uQ*ShZYs,{)ZIs6as! !Xq{ۣ(-tثc 4DI0CGlgt]҅SH]x: B HP=(0ԒKZl=zq E.!!xB~;TEBU&s6ResxS + +U{.Z[w=]q#3u\-+M;! +endstream +endobj +923 0 obj +<< +/R7 305 0 R +>> +endobj +924 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +925 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 97.402 191.684 100.987 199.791 ] +/Border [ 0 0 0 ] +/Dest [ 151 0 R /XYZ 75.52 62.43 null ] +/Subtype /Link +>> +endobj +926 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 48.522 295.878 58.655 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <858f6c7e5c18f51cee2046a37a0dfdd159cd0f35e5889977db924163823611f55f58bf8489a4211ae742ead8ae24c7256e22be33e837419ebd3fbf836f84ef7540a06c> +>> +/Subtype /Link +>> +endobj +927 0 obj +<< +/Filter /FlateDecode +/Length 2856 +>> +stream +ؐRtbi'a=F + +@Q=OT|e0' u`Ix7G:[7-JP?꾤oh_4Y4Bg1C"65`' Hv26ޏe;alV]K,09xGgQ#5W.9PVz_`UaK5>[B.G "7 C}OLG wrH!RQ`co^cb𵛆h{=dP_燜RuYHUc2PV1a]ޑTeot{{}D((wQ)NiN_BC犖{ZYJ9OSYg4= +^cE25&Na~xQp% + fs4̺FmKh-gbcL># >ξ0x !=]>*@m9G#(9$ uw +)o/ffE~aݔʷ-ywk5(9߯{sV4Mf&tw :Q.ƭca1[;n̋U6eqDs12[ꏼ˯P_IxߣD9 \,{UaspLd2-(^s 18s<$cLq +ܺrsă& ,M4]ĪIz) Z"(#Fzwݳ XJ'13p&L!'< ǿ ݻHy$i]VD DtZNI~)Mel_zxMҸBU#Ku{KUafܬ3?D!ܔ^ٿCilf8tx&:_'^3y~{0:?JZ˽~/ȥwBIϒpZICNx7U|ݣOk&ޖ"3+H 5kW;˿k'PyL{ ݨQFz@⁊)Ť܇>[WEGGRG֎K8ڬ<ŠIQ>IL)?!7L?vC\*IġeMx,E2N^s!ׄq$̳+wP?#|HLE!I͏OF%zhMrOxۉ^D#▭k)pdD2R+~+\CSɚ>2XDzOC8@jIOl5ԧD`)\:Jh0uH ڎ4pX 5ar/3y⛾>w3^GaSlzӡ'?n`j`R&x-_qp:ow?_:pBBWHУ4$fa[ xb_SS ?BIxO;h@+&t6,J `A?l`JmN +endstream +endobj +928 0 obj +<< +/R7 305 0 R +>> +endobj +929 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +930 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 373.248 382.958 377.502 391.065 ] +/Border [ 0 0 0 ] +/Dest [ 152 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +931 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 223.038 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +932 0 obj +<< +/Filter /FlateDecode +/Length 3021 +>> +stream +@γ}O1ؼ=rX M+Zrp#@v7 o aCN3#˜3/ wIЫ\*JadA:~MO}Yv"?0/l|ɦD}ip>NJS|0YY&7:F#V7>U u/00Mv2 8BtKõ'/QoF<*jF}/UQGqM4z,o8l_nQtÅ boJ\UKt cWanLGAyLɰ؉t d*wMujXnsE6#oIs%Z݋`튎8L틻v[v>q av4G|L% }lTS7cŝ7 N1^>rE +7NuVQQx俓Eej!:Qbk=յ'7) +T\|qɄXUBv؟uPU;5LٝmAr!S+dJ1c/azmί+2O箁Bz+#%!VqWG %gi *w?4i _nbI "3*@p5p8\{X4Tu@,Uؠ=TѼR늢ӆ1~Chthtǵ%-P"Mohu $D?ͥy=Q3Vx }pHouTB/ۿwV"  l-WyPgvGL%oؼ7u{rː, ˄2Qڂ>rڱA]P3RgI{SVuv䭪E.8duqQRqMwMJFCI52}]kG=Jfu.R7\Ad(6Zu|cV4՗?3 @a/A‰h'bT‡HZYkf[_/,II}I%D +ҷ^[!<و5PGH;VLk9LK]_ENcff S#~=HKEZ`c춽.33~X" ȡ'T~>Be[Cpqe ]e!evmy!"B +W9F;gAj~+y(-c,9v6䄯7wjh5PѭOrlOܟUx >f΁A܇e@zߠ@B2p~J,MUkyJQ(^y`lR}Oc&ȅ\L!ڬ*}S('T%$&2r,%KYQ!qcN#E"Ԉʙ`J1Ko*\5uӌfceMOSI[3w9PALE,7I^QEY? +C|`m W6 3 $(}|C26% nx^.VOM:0j53q6EA7GN8F +P[wI%e#x>5,W&yngTcq ӱg^Jg.By}QSMI<^(}+`cD96GiZjG'Q}T "I&jA\*0Nw?y⼚di#- V-4&I<)~ Ҭ&w\6b70 S@? aa +26#k_\`hrI2?Nڧ+:l+N aǑk$ni]Ju_Hӓxp vxa*е?bDG +5E3٫hOGr^ <ƣؕz=@?F/)BpQ +83wpesJv-}j 6a3-ws~ÎV ~6Ȼ'2reI8׳H/k3֋C;_3[Bj*q*_[G" 7)3eˇxj#!oaW:qsB/wDLxФ +P?e0W=LJPhzo*û!}DT#/ ~M-ӎt-&3-wO2wahq5o8(yy4i&$Qg-y@2ttqH3@5{[8^łt7l}p'f/r9j(Ԫs)% z\h劌q6j. iItL[Ynac \ x΃&5j7l 5~9Oa$t,N[k @'R Vk+`︐03(VWdX* {!6<ЅΞ1yŮT\8^L}-cM3Tdbh<7csVC PL[_3\Sli蝍~婬eC>[҈^ ekw>9/P;'w(0@gPu(+-L re wt><\G3las/5 b f=P_DO/Td`z+M @]nB#{5qt ~[RᬠIm.IMYsH&c_J4޴[YhsֲD8a\?L%u))=YTqj1`cJ3'SN5-\l\Q2 2ᠺ +&1aٚ +o{d0U.129Ձ^ 84Mm1.yZ4A\su)gX,> +endobj +934 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +935 0 obj +<< +/Filter /FlateDecode +/Length 2585 +>> +stream +ýH`& ܷ{?x fyHF,/|I0x:jfyd!DN:M$6P:Ӗ f3)' Ys|Mh K0'A`rm,Y.یfr9癙?鸐.)߉/Qay=]sNu,<'{&#2>[|%l9/VZtJTμ@6Vn ;=U{]5B~tƢ,.V+q/6Qݞ1\y*i#} }DJ1Y;xЧ8܋1K{ٮjelLwy\.<-" )|Ͷ2I h4׌/D:D I^ m\ :.ҁ\ i8VlkN{XN+,zx_"s~, 9pFU-aqX]_j]%t?kN%??pTϾNOUEܟ4~YK'P`"MnF˅'7 {0*-N] L&%ggm 1̋d$鄌i ,}̀ru֤xġu+okSv Ki҂A5.2, r!ՠ)rs%>E F`3pzuzG;^Nbb#i&^UK|5ῠ>ig7/<*gNd zrW_Gk{ f s2l+=s +S7^G acIPLlǝ^,P Dz*j Ew]H~O;'7ml7P2:A[`uEښeB,-U+˰/G{>8,ff +$cE x~߀WPm?P@tbVbbɿ*;}Yld=oqDݵU㩮FJm̯Hd|vjkeI%P͞C,keN#i#RSota/HbmsYt "'K1pwNUqE+es B? qIRA'x-ЫWLA9+'plw*iġzC1gd-74bp.Ғ6[dA6yt]حc?MVt#GIH^f*pm0?l&}Q̼k|ʧzPQ%[=?|b @LS
@ޒ ?Z3&%e 䲆6),@A2+|F.I7$@D`Z_2Df(S_9> ye$)vu4P 78/Y<4|\޸.z`fHo0aJ%Q ¾RwHdZ3N}wӅ>v~Ű䥢a5.c45w +\Aw`B]41e$MJz Oz3oόX FZ֠L#V}rpm /U'2l̃(i3PgT]Mp>dVNf$w|2 ӈMoW2FҬ5yb &#Gk(X삱DˢB-tU-@pL9L M;!0kiߛx^3,iеZ=le Ccdd=FrWB:J)eqgiG/Ke񀳙}q-oF=Q/V1^!DyMJ0PԒ:4+<[vaӯN!{hD{j^Y0#)Ι)4ѡ8b΃ChRgbL)LGmͥBJd|0k&c1f*Owj% }|YpBGÊg%*Yxes?p61?X'vݸIeaɃp2Ņ90jM9 iC0*. +endstream +endobj +936 0 obj +<< +/R7 305 0 R +>> +endobj +937 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +938 0 obj +<< +/Filter /FlateDecode +/Length 3091 +>> +stream +t7U.(T RS[l LPc&g|t> !tg܌mT{^| &:mb\'l7|l>KDb׫TJB0C!yEf@65WT\`Q)c.Ř$Ç[\5l83\ xjEq_#{KّZHA( +U YjvnBJB14E< ;@ +Wp&*`%d(02VwwyX]!et󃭡g/D|UvZ]dRr$mNfIoF@ᇜi/N(;Y#tl6ZHh5@d_֗x%ټ? շ_@2Td!lBvnAvB `Cm&G`/}'e/ѧKIaSF6N9聠Hi_@J DU<_Y:=ڷij"L&%dQf(Ǖ=k+?H;?W{j%cn56\u< )DNsdNn]JM܅{ʹ^=HĽ# ylx/HՐ=m5CEb&f№kqhPE8(|Ü8"-Χp-w6BN2T`x2MܤD`N5oi]WC4EFI)H#/iupљ%#(|!F&֧}4X 6~@GpI~ZňpcP#BKy5zs'5Uu4vi&rt|`m *vEƩo\bL[/qSRͫv $U`Fi`WN~YɔvMBm{rmIu& eWD~J&4z^l5*L (#Cu ?nK4fYpm_rM488A_ETlI` RZPL3e.~50f-q p {\J7+W=Ѷvb)1;, +xge{AzqN|ĉSckFJYt=e3sB0냒# j$z<t5bֹȍ#l)`q2 +`d$vYurKdaz_ QLjyM)) ۸bNDإ庱s5-]|U59t%{vb"$p&2zVV痁3|l.w~f=DJ TECPުN?թ*6۩O{cB%Oh1R%"X-ny<lFͦOff8򄐖BǛz`!4NUd3xԳG&R gmaP|?&K2o7 +?v 34?*"ls\]U'g)(HW& w_n]$-ķ-HZT,B)( 61hn QM7T u٫eQ׏p7w.⩈r=Ϩ=>PvI6{?Toҕq,b@ b4avś4͓"NDؖݪ |]I0!mt^ՠZ@lxS_#H5DXO.!tm-TIK|u%bӝ:{D1S  %(dK D1фX&tDe?{Tc9ARoŕB2L&ӏ0x§Wpl-)az ZEke/XѺ>#Cwj;tv!PLŁCG~rkdr[XQ@1 F1- a4=wؼ+ȭcg7X|'4C=#FGj|d$|.K2rY([>ltD]ϵfQ ɃvjMw=-SBی1t#JH$_qN#ZF`1&դڙ@NI#LWHrvҽ{,VL(P3qÕ]-\-5*S+(3>'ø$zMeDblyϑYCN d.l#;3PG&HƁi]V)w:8 IĦ #:Pa\CE-tl8@ _qeng3#`}]<<ԛf+@]68>A˔PG_$!ZcYH<Fa&`."жTaN07 [VG _" 8X?'2Rrm䪊D*-j2 Zƙ!3p=LΦ 鶇//OH_F#ilμI0p xm-솺II[EdZSrЋ. .v{Ike1D(Jalʝ|MFE1wګY@9Ow@T)@?,k5w2̇z''U=1eeyRB c +endstream +endobj +939 0 obj +<< +/R7 305 0 R +>> +endobj +940 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +941 0 obj +<< +/Filter /FlateDecode +/Length 2559 +>> +stream +zF"`2"w!ja6p-%db* b8눱F܆R?RLuD G?ԁ\/A{ڳaҳ6ApۧoLN^'eI"gv=P)oG!8i3@f ;\v+E@ [y)}BÜ/)],oÔT*z%qq6֛Q,i HG|CvjS#Q $h-M7OE_x^aP̪%9@L|ݺvn7[rdT1gȺNt_%' +3;e2&uYU]Vܝ*2 +Sy>ՌlZ/iɸjf@5( s#kc*C$Nd5 a"[;P"$iY$!_9A +e`^ 'L`Q,9qu{p; ,-,|!5GlU +۔s{ř)/:-VφLJ>N_꒨P޵< K 9cp"Cᾞ; 4.f$ҪkvO.=閶Ul +izfjlTEia)Ib8|^#7b>3)bw.p6$!FŻޞ]XwլGyX5 /1نeNRo6+\%hMOeg-H#~Bj\q2@uRu7Rƀ>#Cv +W``BO.MEMIِxkw@WgymaZ(6؃D;zqO9q~ CI*̊c':]?gAMk](6.rXyĐPf~U<$$ +M)ctzWr=BM/_dͩ [!^R69#3aזŮv0 r Nwu΋Ξ_f֪#o#h7SfrU[dmjjνzK◔[034<3M7"j]:C z224cUj"gO"J: ZTٷdt)plC7Գ*aB|GI;վ{+y ph±P%?%*ܵap-.hbwLp#uGpDV>Q=21̏)/h ).ǂ!]dž?qhV^Dc f2^̋FV_C~lKE( u4h(R2GB +y0nD:r{VRҏخdk..8 KNo-zs  CPϼ8T5{x2=͂0W> e,Fyqe1I Aq\),:h'VNB@ đ*"alEs C)LAH@D;:&,NU!%aTg5#(0KFcg44YmŘNJRO/29iۻwÁz0:UkQzK +l} C5ʴAr+IնnXgC'kPʝ_178fγlAP[q*|)Α:K;aJ: +j[kajU } +MncI; ܈, +\zfeH췣ǢLMAED ]!/BT|0M+Ȼ~N-x3VŦtVH7q3;- `ۨuV[T>? 2<٧J1a +endstream +endobj +942 0 obj +<< +/R7 305 0 R +>> +endobj +943 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +944 0 obj +<< +/Filter /FlateDecode +/Length 1941 +>> +stream +Rq8}&ɥSdԁmQ:f]CՇM}>$66W{6Ҩ`U[7M3:c-M@ENسtY qVw7y A$8׽tsoqtkډi4,foBX~7}t[`lA~XfyvJ uOntr+ =^r˞bM1O}#]LW4owgeL7Pl&dxZ3j(eE* +j$ޭ^`(7s,jQo8)7D¯{\_U4V^ PEHr!<y#__Sv?P36J P!b*H"Z.:k2 Dx+SY} ( +wYx/C%?;┱_rsIιᄛS> K !?z(G藑_dogJp_yqWz#"?< .[wgNFulS"-Of,oAȁl$Q}'NI{:ҞDLT* +:{qGz>AK<l^ Knb ^bWhBAO5#2-yHԭR>(.:,h+NUO+n8WԎ0F,߫ޯ;'sMeD{4|Ȫ]Mc1Za_q:8qe菃//*mc7ϑԙؐd(@W?upO|M%L0W_8) +F$?P꼆'HWxc-#X$)b'gk3|mlnyu;=5 ޛovT yR*e 9?t>sW(b%. +ʾ6܄9^ќ^d`%LO61NCza0i-OF +6$ǫPëK+~,ac_o xk;"q̞Rآ +2󫪙1"*6]g*fjdA!A. + f\Qˍ1"!X-8U߈1N0KJ"Gã\^FKmOz9dLw48տg?o4Pmt'ċ),L|)q5Jk$ז rT9hC+Y +endstream +endobj +945 0 obj +<< +/R7 305 0 R +>> +endobj +946 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +947 0 obj +<< +/Filter /FlateDecode +/Length 3211 +>> +stream +]x!@o4#Uз7ܫH7,82B I =%+R}B 댿˲o Lb ABguBZ⥗Yb.T|ADO XBɓqorǙ3|Pj2.˨qmފH6y[4qOY"2_&PGVX )VF(${/)0G %J DAMȩ7-[w^`LursŜg|=\rՂ`YϓS{Hʾ Dn}ȾG.x̓q [uC2'8R(`zrY=x2vS|!Hۀ>:Tꢲ LxDߵ5Itq$AͨOʷX]?*6XBS[ge`Wth_dd(8hgn*Әў6ecNN~K^ Qǃ?ÈH#i$u'I%]#{u`Ho/|<\wdqwPBw_ڹ{9y2zx?J@ t]/-m:O8|9LqLҮg +c/:XQa`xPJܝ#|qZ6O \𺥁mB6#)C'uIePe_zYޗN!R4~<ȉKV%M(ALYONޘ XE'b +e#_ɞ>}1d0OFuI }K_T}?;bB (d:ZbD]DgG_I$飐⒊kחc_EHp!` +B%WSo.?GtV=rdt+ȏ11Ih$'Є^|&xdJ&1to @}0_&4*cISJ u1 +J 霉OHLuTiVI;x0ʐwpk6X+5/oW9Fz7dZU׽_v:rٻqKvxv)x`[=ḟubڞdzsRsvoL#E+ QRg6 HsaRQ9]-t aAªɓP5v3#JL잌!^W;CwǐW! +%sՊԵrAn=#ivfayCPdE$Β^- ĺ߳rfehAM`kCq)}+⫘wʪɒzc&gu"%7H&֨\u!k6ҏ>敯+8FxNJ"<cOϼ#.Z|T]J4PN ! #aEgs1GK/_3 +_@K б`Tgr? +FDxӓ|;S{\(/l*컫(L CFPkUշ O +y#j[djΒ!1Ef_ ,>_E 5߻xD + %bڀJ?a=?y :OLd$+Vn>ctOpgyюTqq;X:(xs/ |(K&㗪{Uխ gӋjho ד4Ӷ&/خГ DJ׎fMw=sk\hڪqw]힨sޅ<\I-,©%O ] [Æ}2 ˻r\jKԳ/Nl"V}[ lM!0ݬ]ŭ1Y!64ji cN!PA\tnVjH9^S֟ܶ|=tXB;Ued \̫=#_#,OSGps{g -4]F(ȏh|&v‘B5_/xcdjGWz9QLƟ ߄)~Xp}5oRHaLLv?Ho ,H:cy;_Ml8ʋ٠&'6]ɓw%0^fg?`~K #Hܔ`i9xKءλN\.ko ?usPO -7J:jH-0p DwܡoeVKCYŧ.k+&A#Uxq1UHh&FEz* +| `;wD6xЄN)0k'[ꕋ,pz_z}s? b(S\:@ +endstream +endobj +948 0 obj +<< +/R7 305 0 R +>> +endobj +949 0 obj +<< +/R137 315 0 R +>> +endobj +950 0 obj +<< +/Filter /FlateDecode +/Length 408 +>> +stream +mN қLAMoqQ^Вդ($ũt iT&Fc,< BX/`"R[C=$ZN?",*JD@; Hd'Zz{qoBAi"^a5Mk!c罕 +KcٞGpaObM@yv~ 4V:C+uTY¸.뫱Agl:ܻLG {OtXf;.+t#gb9ɷT[{ |odƇ jA+sΙ@Pմ<]~-w8+}~/w/x숌A'X~E|Lڗz1h4\{$*RqYBz pzBVs\TUCf֍T +endstream +endobj +951 0 obj +<< +/R7 305 0 R +>> +endobj +952 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +953 0 obj +<< +/Filter /FlateDecode +/Length 3053 +>> +stream + D@U1q∟? a@r \V/I0vNHrZn8ssլԳش;Pug^l"_t.m~1zq7C(t² +lFC<ߌ@'Z(5c.0r{W=+Mc]FYZa+&{gK Ѯ'd ^٫m( ʷpa.ηƪ +sBtX,ߢ~ kHq"̓eId]Cp0-סw-l1٘5S%PڒU;y^5 +%aE"W|(y`A7K60*@+M/3YIyqC }o{@0˅/ߗ{Qd(E!pFuɷkkWڲ$aQBhiIaC:o1.oC('CappĘg#˿䯉H4ZuN:`qĕo9`.ۅh%;y +Qѷ{&I#׫b*j9E, y!P :y4 &(D+K /)E&,r:rFFDOʵE; +oEr ߹H.9F掵^y.yľ>BLI  -Dne%͟%#Ay%7)g5GzG;["#3SOEn;0̺_g?L 6˯ޞ^RZXM`*}&>SBo69≰J3):PٚIb9ķb)C W2Gs#?ܜknG[Z%QɟaErMVwU˚r@4:PrX!Mp\̀i 4>rQ +AO^ n[G+ǐvRA%.-"(]ʑ8ƥ6Qo]2othԛw Ӈ84eZ;5/$0Φ@7'I8O@}+7 'W \&ow~ 쪄( +sgzqDkρ>"OVHӑ70d3oü.+YoS=8Q1"9l*=4lxs,cA0ˠ-4)LUNʪ[?ߏ]J1i"G'ge5I %;?>0tk asv'l'uʵVA27հR׊@coC7NL ה+(S1?ױâj0bO3SD dp:ߍ97 jH΍ZXWѽ_:y+#PdX")&r CD#VTf=HO?*bÉ^nO!3TtRjAv5Mm&y]N,6{S0s#l1\%ɷ5=Ѭ5l1xJ&7X5@-Vsz}do( Y?!gLhO=q Uҭ$nc3ip#z~#9%n2&'OdPJ$(a "EYȁɬ;[f¸|nV;5fBGiI op*r|U  +۪&s핗Uo(qj)n[*@PGѷ˿x$)b$^U[!&6;Fb,> +endobj +955 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +956 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 100.343 566.819 103.408 574.926 ] +/Border [ 0 0 0 ] +/Dest [ 160 0 R /XYZ 75.52 69.57 null ] +/Subtype /Link +>> +endobj +957 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 74.25 217.68 78.236 225.787 ] +/Border [ 0 0 0 ] +/Dest [ 160 0 R /XYZ 75.52 57.61 null ] +/Subtype /Link +>> +endobj +958 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 55.655 237.222 65.789 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +959 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.7 223.099 53.834 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <8bc3ad9703b31269d52195c66d23c84176a1c82a25124f44bca572dee3006888a7feb76d6227aafb4e4170016433b3f62a74c24f19> +>> +/Subtype /Link +>> +endobj +960 0 obj +<< +/Filter /FlateDecode +/Length 3143 +>> +stream +Ms2 e< %{I鳞7EƼšÖ‰Cf+q#6qXk:l3 T4砃< +GWصR'n59W-*s!`~k&0dX-eK&rK e-O,{MkdT"EUypǏ وdt\jM^_WܽՒﯡܢ\x=}ܰ +Óϝ)qe?TrP}1O_ay+$UHـ0Z'HϨ iQ.};,@')&2Hٕ ƂEhBGɓ R~EЍpѹt+ k4κ3෼b3ofEU++wQ=)y zDs +Msڗ/Lj|^#C*o,u4jc"{kE{ +g kAHa"\C<8lzg) h7%,Ḣ7Z6Qޒ>VLe+`6Pw#rg=Qqx4】pF9y@(皓G>ozvSiI5N:o9!E}!,pV9BRJVY~dh˜]9=˲=fntBƲOLVa}_+8Vx=a,XClgJ{R>1u<ճ[mnv_#@nR8](8h;m gוB唡unZ ӵ6-̯ 9 p 94>:D8HGɞαKA]UNa2s˟@|҇J/GQm%,} A 2Fѷq5*[fH!."'zؠٚO@>rtBx%j%KM氶,P񛓃LgA) A!-ss!=^b5'.q;\nv^d3f8!J|ebT9b$iE'nxCɫ/$qh83r +da@/ἴ<򘕟6I$q0[B`_s b xjmc#cKO UwhT%ǔB ?"qsO~1kkR + ngZNXkeaw/_ky h\{ Ȉ)H6Ξ3bLJ--…60\OG"e(h#|P@Csc4xۥ,AiGfpA!p9΢Gd(#7SETh'oqt\'|B:ȐQ +ӇRFJR3`a _Jք.ۓ?;voaoi\ (%gsw ')S+3a2"8ajznD(lDZop< v/Fu!ZIסGRlr!#2ysƞSÎs Y~l-]v7=gy"CQZH5PqS5i54Li_J)?2,lFmLK˳ԳE y1Ojk1!9M6R–ϭRV,BiyhmL4w\܌GOpc~ ( y|ٖbdũn,@ BtL=, STv +M!0 +#bǏOAl>=l>_\HHO) Q;9z%†8>5F?JzCPf"ƼqJ$(Z< e*7dBdIoZ;fTEW`ougx?<_l3J.#9Kvp&L9/.]>vL- +2( %j6T,y85z hg#=0+yMs.,H繕{!t +/ozeftT2={,@"DL -Z&f$GP2=[n0f=9.+@5,V:ZE J[ nL6q{o\[< T#OŅijxa5+L4[ؐ?;Kh^@X%]LYV:"B'9M#L\l6൱?y]OWֈ>)`g!R;=C~I +@}Wer*g6QmHR(ׁv$i8i+Yv:B/V9ݳd!q<Е3OVIt{3hˆ/ftDrZ(\&* TW]:Uhp +ސF[B$if YY1P-v;o*;;7"J[ +*$^9$ĵ͕";Pn̤ B.v>(_BEI\5[DR +endstream +endobj +961 0 obj +<< +/R7 305 0 R +>> +endobj +962 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +963 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 330.994 218.089 334.931 226.196 ] +/Border [ 0 0 0 ] +/Dest [ 161 0 R /XYZ 75.52 69.97 null ] +/Subtype /Link +>> +endobj +964 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 295.683 164.049 299.713 172.156 ] +/Border [ 0 0 0 ] +/Dest [ 161 0 R /XYZ 75.52 58.02 null ] +/Subtype /Link +>> +endobj +965 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 56.064 243.297 66.198 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <34e77a2319c9d061fc09f40317496c46b66153717bdd73bbd4f84d48032f4152426f0e9d40b948c31eb3607b4406749589a3137f4fe128ead32c3ec9493ee7704d4f9d09e367ed4d7971> +>> +/Subtype /Link +>> +endobj +966 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 44.109 167.267 54.243 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <56ba13ea5448f4600f76f512b5d9be5d4c8944eb56eb17c1bcd8e6538d21b53368805093b2ca467d5fe6d35fa575a968deda583dfa1d72921543b6b5fe4cd76a12a257c7349d31> +>> +/Subtype /Link +>> +endobj +967 0 obj +<< +/Filter /FlateDecode +/Length 3347 +>> +stream +4p3E + )Il_@pl<+wר+$Yrƀ1,Xœ w$WNյlMbKEGSZgqs|A4,CK\1*hC0!mnF׶s )|B\b[ &P] Sǘ#Puj$az6S2M@55H(MU}:lJ΢?z1ꬣDd HoWw]7.HQ[㲞>1*O 'mC⟄@ $⟍sm!JXD2H5lmBMC!ԱiOz"&.l?I&p ُ$se/+ |7N֣ QGaEd?ဃޮG*惽kϿv0aY%bۢ:U-˄},G^V/r#>&kk6.S Ԋ5k44Y3qus{ %Sl9t@'Oj1:"m iuSMj?8ssuU::Č3rKx6eZ<)JL35rK}0!.+U`nĠݕ)AhSFH~ XX"pz%2/|Cϔn,?EaQ~=|9~j8&FZ[ TŸՐ[6U_@P*pHoK[u&N-bp/* "R>MXR``(o,W<*̮КV*@Ad(Dm>t!?gmYuq8œZQ}4-ԔNTM2^[_v +K pu+Qvr8P|2CO/𭅸[:.Q.- HjyIR>4$qn\Ip:e||&(bbņ(MÐ >?}~urf$M` * 񇺚b_);-X?|\!Yq[1L2b} h+:KOG(v/9nLxSBs$%bqXIf"S-BI4W90/H>v8:wc3 }9KQu#QM(0]l=GvjҞRj@ޡf_q l\f)|RwJJ;n CoXV> ÚsBv {)^\X@U"~Lchم,~[VITkNA.{o + O@FVk̻l78 W{g:1MoR}Lλʊ7q\7t;2'4qLKSI(T~t A:S˻i|5^6ȋۏUź|ۥ,í$ګ:)_olJ}#=*l56+BjA3WG[_U۟vC~ AnZV?P*Ɍ:NSތXStr1൧ii۷u!/j/v?EvGnBE \}t\N PsB9zyCuF Dg\v" Y#jb}_aQbF$kȯ -q9ýawM}6|l|c#Vx[.Ѵ\ln˸-0j;rJiEu+Rrm;| +Ў9d*FWz㵃3c#$@]N:|n,P: W.Lꄨz={~㳅 +ѠީcB~/c\pGfV˦wa!~ha}eLέ* +1z%0Hի*[ӂMf63M!b6+@n}BC0f@JObJ'3DЊBb&h -6ks}rIIa--^vJu$ypm!u3#ٻ ;V|"ig6X(6 '3BG˄:oFg|):v\&ettYż 2"4$#(J!3(H:AC@uHO0ĮLt C&K>~`diHO -*p6 w?Nʨg.lX@: `\:5bL_\6蜹 q=W&%W) +›?!~X FΖ +h+6Da9Nlyc, +endstream +endobj +968 0 obj +<< +/R7 305 0 R +>> +endobj +969 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +970 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 201.305 280.593 205.075 288.7 ] +/Border [ 0 0 0 ] +/Dest [ 162 0 R /XYZ 75.52 66.34 null ] +/Subtype /Link +>> +endobj +971 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 52.426 236.517 62.56 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <90a588330697edc2e48ef3565d2e2eeb967b5875acaefdd77d4ac937ab5c6453000ff6c827d8eac18376db571d4d6257baf561d000741f852b4e65099d191a805d955a3ed4d1641eaedf> +>> +/Subtype /Link +>> +endobj +972 0 obj +<< +/Filter /FlateDecode +/Length 2971 +>> +stream +-nZPI\)bF.l-HN76DPYgƆ3{0A#720 + h̋*Nhx$m;&'ux1gG"8bGaExl/ _lIҬ>RUy> + ZnW#Lt>L{3þ=è ߰z,HhW|,,J*qtF=\2K@oO ?Mtu bX.FE&/wA'HC>@I& D$P򡸠@% +EU yeJrNXm~jisr*tNrH:tAIcy;k6k>e/ƛ4$5b\Hڄʵg|>OitX*nc¶y99re&%~g3 +<봍rѽ3\xנbܟ[p&o|#*kX4ʿN Bhyˁ}=TV}*.0d-,L=I}qTE;*#'P_SJM! q2Joţ+=[a}{֌g]; +h3ȗc[@R_ T;xd2 C Rm :+C!ZEj |dzNt:T{hV`Ѱ%0:0T'Ֆ7[ʎ^&hZȀsԪAdIŔ1x ^+<ր 7V5VJrĜ +]zWksUc΢ Jɖ`YElv5f{`u`WMPi].{2)nG\2*q!hӲ97Ibu'ԏ卪}Z2 hg50b! K"w1)jx3RAbntULT030b9am8>:\煲aS%̗m +F܇A8 +٠˥ӓhj<\l+oԗz6J>(D#>S`Ku1z]3Sjj [W8@ (i }8WRÕ'*7n樂V%"%f +dsvqb8eh3Ԫr5Q3Ҵk9L-z=j_5bypVO7P.~"d\H*Ƅ$YfLyB08o +)C넹 5j #%"o JWCqku&,rn˪ eé CEyiw7${TàpsȷH=sAkZbhЭ$wL0k+Ѽuwy[{XeJC' ƤR2?XdV +Tbb ױ60;_kqoA&2#0sa_Onb"ߓ3ZUP7ɷ?^$cAs=@%|&2S݊7FFۜ\5S93bKk"_/7.U4Z5nX|b&dI9[;-WY=o4T\ٖO|YnCH`>r tJQj?R A% (SBJAMNޱ\sD*$FQ̇QS.kv +af{*%ܐ۽' B@qvni7N`)`щ侯Eq@6Q!SJjQVޚ&?3OpW/w% e+ ItsDgΜe8M>#|>9I7S"r+\wtEy9<81t9kOkA_ፑ/p U +x7zOOn&cB30͠ŐgNt}@{HLw3{j(ϦƱy?hdo7{"D8Ig@ѥ䬻q`IuW16nL"9+PMQF%ꮬ]Krs= +endstream +endobj +973 0 obj +<< +/R7 305 0 R +>> +endobj +974 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +975 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 174.594 447.335 178.632 455.442 ] +/Border [ 0 0 0 ] +/Dest [ 163 0 R /XYZ 75.52 68.91 null ] +/Subtype /Link +>> +endobj +976 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 347.624 79.53 351.209 87.637 ] +/Border [ 0 0 0 ] +/Dest [ 163 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +977 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 55 235.219 65.134 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <746a0e26051169814f55031fcaed970216ba787d564570760e743965e26df92aed54c95e401c47f9e7333f5bd848c76ef94d62bb68b78c7e2e8e41709ce8672159921c10d20c84> +>> +/Subtype /Link +>> +endobj +978 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 250.335 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +979 0 obj +<< +/Filter /FlateDecode +/Length 3062 +>> +stream +/CeY_e"Iu2bfh W'Nݧ%<'jz\'wQ[h+GF(K*k;XRqJLli B72E`$⎅N@,Aۈ֊&|ǰ @H0dWws#X OFY|noQ,q%Ԧ(,;E` :V@d`bңۨ3{Ro +!;aҩ /D.J5;h޾R:: ߁pԳiv~I)€zÁ.%BbOV&lӖ| mkɩGXq9?)ZBOm~Hpz'm}v#ɱ}~"kO桄ZP4stVĦE# BIJs[ ivLt]Tzxi +8 ?O,{,##a9aƢ't;Z (8/?{&zPRKo4+lM:,h\W4O aC׳0x H?|SvY+:ȷ괈 +yndtI~]e:;)=tZ?k]f:_m^;o3PP˦JL~Wxkf̓@dsgt:$҄U@u w}y4J}US49.1/-2gm ō*^%CjKmEfֵMTG܈bR@`8Zr"ϥף5&Q VܙF8Zn~l^'ܳ_ {0frF9"&PĆ9~}bA)_wiڰ#H^.΄~oP6ձ6:B\„c94xKnYlD6VEἩ2)>׀׶vSXNK&+@LGa5:i-ӷO|Dg {$Y^[6-uDR-)a[+F{ѧ8Zl)2ċ +ϱ984GIc9~/r]d\9j^q;`FS7erDtNaτ0la@Ayt*ȰբQuU J]>VUfH=B!7KUT޴g9x~$^Q+ ǹַ=w?mbYgpCtҠ:3j 7/c冉ZVՐ:D,ЇÖc<<'\{Gcj/LT;2u(/O%ۼsbd-Xo<۷v%H:<_~ӗN~1MqEeO}oEɋq|JV/.E8ՈqZ2$eIvזN +>{i=_3y]{)rvbDWuo98(D?:"LE%oZ}¯QC,$os1$qf&:(ˋ3e˚Q"x~m؏SY#x1 ArO %dMʳ8JEVioWe7q+T> +endobj +981 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +982 0 obj +<< +/Filter /FlateDecode +/Length 3145 +>> +stream +`ݿ X1C\w5Dmu;̵0 qUW>u`Ѡu- efӊu977j I脹b5QJ;A;7j{jshQh2–|.A| |4EVQ4+BȁfաZyi^}L9 7].6DŽpV%8qMD7<}=#OY )Bp83`"xyL=zHwfp"pFB π1K[$}ht oqe6:4Vu&˼ +H(OɬrwbIgjP^­ +Ji5>?%ZV "at2.w4׉[mom7Q{OAm2\Uj:] = +|.1j3 {rPq'C:$0P׉FskXg7yet|ǝp?#Y:~X"brnF)otWC;퓓y(zMH@3MlJ)j29v bNF5AǗ!#e^F>l-hdPNa?=zTyNks <5crhyV nz:1esHj7~]_FXhaD Mu%=1 +/m;=>\udFX,*Y +UF dSr2~v 7(n>R;$W(su!N|Mfr s'N#ܯs1BCs|Pbx^5_YAЁ}lbg!h΢(Rn8F`Ctؿ {ͫ@MKGĉ"1[t@Dd]}ܾb +93h9H,+"#lqxvmO(pbM7w_*j*oVfN-ߖ&d1U2=&'N]8*)0bVʡ&/AS1vO#6e?žZ%`u +IAZR%7vYʊu02Q,Fah[o#W>' rjB91N~}&78z/YCoh dsǨDBBP D: U-asL3+wZ!DZ 8'tQ$^FE˂0xߊ +WcܥCnfa_h'^f{MT͏f0t+sjrȍ4n\zQbBYSbcê A[J +gv'Ƨ f/P }*[Evskp)lקգͲi1&`ȹ0yf5KУK32aQo[M۱ ЬiHΉɁGe`-0UB48 eC|2"&e%X,@+1T;)}&{LP<_)e@Bs`6h뱱7콺y<8*AZ_t=[QE_ x=)DH{!/sDX>B/b=H!0,mi04k3ێj ù0_Ȃas'Ku%`6/wQͰn/jju#ns=붨m9cS0xTj$5)\*ѦrAI4ß +"T%z;?O8Oɖ. +ˀțp?޶JH6ɼRyH3LR 4LUލkM,l(eck.),M!en4> +/oŖAQ`SG9";7EtzIʈ0 :闕$p- ̤|I,}ktF͐=]I +hb4iE]w5 =ȍ<`N~<#6?@ Y k҂ťGHYw<9#!ZFxY>`p}\HOѢ4۬WzFatƃ\L*Pbl~k +Zy%H! ~Ut5y}^W&  +hry^Z Y0QAڤJto-qwE܋H{Ք545ټ'Q>=, fNɝ_up˴k#m:nKAuf1V`<ƞ=w +eP0^QSEw[p4k; kw꾂jxῄH,~2@@#, R$!mrn"~ >`a֝w!?G.I +F0Mj 0$Kw]2gj 4 k{Id)kSd3)1d$ě:T_dP&,لiiUqӤ +endstream +endobj +983 0 obj +<< +/R7 305 0 R +>> +endobj +984 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +985 0 obj +<< +/Filter /FlateDecode +/Length 1227 +>> +stream +[t kULs +E~,(=U֦ԚwWfYu7JKZ4Lo-,+Refu-f@愈(c&Y$vlAqݣʐ|߹]H'&˸cH|:}Xn04b'뤈h8 0̵)U瘧+y#GmxA\80m_/Y#)+}Hԭ M4)epan:W6f@O}|A);'o{L='ac]C 8)|Ƙd˚ܫA03˜  _H>L=UPpM:HaG@3џ#^/8|RĹ:eY"r%۶‡s xЎg`<-6smgr۝>7s=picZ{ߎ/ld3gp@Egxt^=SJŕ?dE#/ۓȫ: + 8T>ceF!lr o.B9l6b3(.Mwct하QYIy& +MY=f l'¹Oux97Q5O%6BD FAJ1و*P3ơi66иRzacK?I7[6j< 쬘wKRCzoό 6U3xEٱ"žgyV2M ("mq^{?LƻUJޢUtJ*q?=m/uS+iK ̞O2P1:uѧbk2562OX\#|][^+5p_Q"3uO}ͱVIܴ4BJ:Yگ$U Zxw>?wz9p>] "Tq ( ԇ`ԻRs--vuq(iWP\N0h>ᘟ[2?R\ ~5wB?Ԅl!:#rbx~_xm +endstream +endobj +986 0 obj +<< +/R7 305 0 R +>> +endobj +987 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +988 0 obj +<< +/Filter /FlateDecode +/Length 2725 +>> +stream +5Z.&@!b~ZtAr$෉3k2Y) 2^!}Clj7T.qqZ6Gw['?i~Bv)DA+Wo3EgErgj^ 40ul?T4"ROp)| XH&ޑ>W`j]+5R{fxBbԅLduZ?WFqEFH'c;mNL| k"Y0X=]Yt-r +VMdㄉ&)x?{HtׄDwX ujk31q:Y}-[bqNQqN`ױiN낥7}dLkkg74 9/C3hrt>dK*ޙ"B0 +{^05(Lte^CwOOK>d]GvPjت/>ly5V1{/"a2_9$WҎɜaT~QJBxMaSko ~N5M(tSR6Ҍ AG>qy)Qk`;78tRb?GDB|4S \'/Uv{+U>MZt^qΦF`r,^Kň^ѳࢁ6Jt5 e'8y`F;ωUnzINwSA; n_NS`hN\j@#軸zz~SDwN@xE*=稝z#n0gf)5Imw6XHtS m`:BiQTʄ$ɜoEURnTz_ڛaмyh7Tۢg82@*%?֙>-;=Gc?o{q#&#)lOw.Uk&L ˬFAyZݡ~hg!I4RWHcKL B$T7^F㻠I$cث{@Q^amuf RnzJ +UEչ@m 1{n>l9dlȇڸֵ.8vBw nA:kdo}@ +§c䮃Rz!u*VW@k d ,P1pcʵ} MDY#MW.k>Vݸ"HƽE3.Ey簍5[teP==d)(a$1)N d5ݸH{X^Iհ4ZpEƩ 8xڕ \U\زHv&'(BGcq)sx)dYL޸QDa4 +iDmq ͊=F|boQ؄]3^xKpWOK8Έd/pBiGEX3'pt.)Y\U&G~^Gyx ꘋ7o8Y㍿1BaG=_կPV2st7Jj0WusgԤX3%G($3+!5ߠ"`E+H Us)*@`'.XX2/6ˠb)J>KT$7{̡L0k'!-" lz8כdM&&)v{;q61(IU-`, pwA#B뮉T]ȴx~''J%dMm4]qL N⧇2L-тyO_/q7tAC7p=[q|1 տS;tg#DQYĊ/n侳$?DŽ"Oc:ٲL4#grc5T |; , SB(#5@0 Cg_<&| {P^`H(S҃IJ֋tdhsEJr^acN{Ar#2\8{jw_)E&uh oWi9HfL.iJ/MҞ9E0>$5ӒSV2΄r،K,-NZLq>WM}@ؗ[ w⓰hn ӊiB`{0g6G`07op`fu岽Fk"z`sVq"2`ћAXԕ<OEfDXRc\Jב;]o 1Dkz2РeĻ'4xWoО &UW0 9i&&/݀IPfM 6b಺},HM +endstream +endobj +989 0 obj +<< +/R7 305 0 R +>> +endobj +990 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +991 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 271.574 360.473 275.827 368.58 ] +/Border [ 0 0 0 ] +/Dest [ 167 0 R /XYZ 75.52 65.24 null ] +/Subtype /Link +>> +endobj +992 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 51.331 161.814 61.465 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +993 0 obj +<< +/Filter /FlateDecode +/Length 2991 +>> +stream +<+,τ} Qo:3^.?h-2Ȁ<Q$`|c|ûpcʕ\>&f.T֑E%O*W^k!ZhQ/ʄTE7`K bB uD\w,7\6WB#Ӆd7W[96: +PޚflԠUÝI( DW]Vgܨ5բL@Ӻ]緀'|>?plc>%m"վDžZ﹨V围I{(RbdNrH8h `K +uϺ;1bDO8X86Gl-joeD;m\tS:eִЯKF^aU5ZvGpp.oJ<V|Tρlt5պ\}:^ $yǖuOJH23b&G[ _!hZ@/HShOֱܖKPϯc3\WjFyFb[|?F  (_!֌(P9uO jL^4plb=-ޘ ɛ(a<92ے\a,eњV{Y=)0[N n;w2=[9M]\5%uǥ+ϼbd_q:U(nvЙCXV4Z( Po +zE`dSSa8qEUPm;02|Z2e +(Jd+ xA`.Lإ 92gDF`OK,E/o>mAK3erD8)򿰒`9"AGd%%p*X!J2g}&Yo=o椆~JJ֤7׽?x~q[2u0"Mog!bɐje)JhdZٸ77C^*ŏT>]"!!w{39h%d?d7T +r!n-~BKO56=bm2{9K%R3QyQcqz;ki`28tbeD976ȜTtMk>߬ kqytPIԚF-c-D.=SGwi xQ{kқO6\>Am#|)~]؅vttR܍ 8n] SjuR>2 kFm<ea| AZS7NA]  )Po]v +'M(8hg6^H#,1>j}Nyrq:qytA꘹I$s8##ZF%I2_0'{,eװ*jFT7UF`[vRዟ|p:A2BxK@x0XiT0|Q{=Q 20Ƣ@ؐl`ͽ; +Qh|u9oo;]Hte{־L Džk `DE<&8׾d̋3#ءal{[|t;MR0x&20u(U`gϾ=9kLy.1:ŁWq25=DqsBpZqpuX }fO|"wꯊ:#ADyKW4\pTQ]$f0*d6:QmgISsX@M9AG]:e\-k@%xi+Js0k-7r)3.lQ /"Ką-.,Y=xsLU-20کРi/?5٧C$n?䯼5EX<"aĚVG#JH̉S>^Ӽ0[]jMv{y OLaj3p8N- +0=DK_ ʭ+5):Y n<A~T!SZY `v8dQ> +endstream +endobj +994 0 obj +<< +/R7 305 0 R +>> +endobj +995 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +996 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 353.643 298.871 357.681 306.978 ] +/Border [ 0 0 0 ] +/Dest [ 168 0 R /XYZ 75.52 57.8 null ] +/Subtype /Link +>> +endobj +997 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.885 169.883 54.019 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +998 0 obj +<< +/Filter /FlateDecode +/Length 2441 +>> +stream + +XrGjg.|'[G)j݃@OTY?PkĪwC/mc5 +ljG%>fMYm)h팱 _plKS婒mso~fS !n`SbеjŨqn?ǂF۳N;K*ɒA*yH,~oCdZc^ّY.G Cyo4-@ 8]Ɩ1/3 CS&3@a{ݬ5Kj"i!tpB,Ϊw޺ɪQ"eq, +fuz 2%s +pXs:D߂sh[B$s8nP̬흮WfuްW"ZA\X s2_]5!4AVL6UK> N_@"AN P{12}Vs _r/.N(|'v +SфND(V4m/ڡVڏ R\SiA +0Dlg= cIWN">ሓ0i%9юl/XyKl=e[YT'e ,|;U5gc{dѐAY[LLoiA V~Ff41Г"{a`ǜĒ#jNy24) j/6 q% nYyvgi35,"@;m1,rZaC& KS9-YWby3L 2$43{?vM.; [b,|y5(\.OVnep-տG mDfYTwL>nxghPn6 tpQrjfM`^E*4,ҭ1I3х9'9}f⸰v)'sl+2d;4/fWHk#E3;k(YydYvN_1}؊Um'lϣ+<3.}KvB:5 ~Yv +},889/ږ ;g)co`J/)E Ql^^GuII3IK :݉bF.-2 lBV]xا]S#ELX_[0Y'N5ZN|4.նG&uz5.'#[C÷ +#i IhY40XVg=Uèᥴ<1TP/ё63sIwH49,Ip'{dJwlXKciTkV?et>>g@[KZ*6%)rd=hqboQ dTy?:)^]9*u0tYFFqCҍEwD_ +MaJA-yIxn#~Nm*+ZC~($1*'0._fƁq̻38[heW+Гln 8ѤH~\U<& }${}TRx/i^/K >vsc J޸ס\VVvzW,/?Sޓ n8HY?@EU)0b|jy7=b@ʨt'\ӊ"^DAK ` pBM5s2 +0P}Ywzd?_xpOs߯4L%ToBmZ%Ϸ8K_i\^Ce +zݧ] R%PDdy&s^;SF/β*U0)/JV*笳0aN\NўDѝ4Qxz쁑8! g+:\f;JNH y],$vƾ,Ed%V!])`"9i sehU|$Åc,sy!)Սw:9iv\*ybA!GOkJHEXZ :O~.E/a`Z)J_fR{*KÇsPxW(T1F0}ۼ4eį;F:KzpV0{+:}19q{] d.,2VՂPƗ +,͟DD[G:7EbA +endstream +endobj +999 0 obj +<< +/R7 305 0 R +>> +endobj +1000 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1001 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 245.542 244.831 252.987 252.938 ] +/Border [ 0 0 0 ] +/Dest [ 169 0 R /XYZ 75.52 63.44 null ] +/Subtype /Link +>> +endobj +1002 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 49.531 193.491 59.665 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <480c62e26db9f026b4a4a603e6a7a8a384fc8934f1a411617e9786ab0fb610a68825328230f842be76a1d48b> +>> +/Subtype /Link +>> +endobj +1003 0 obj +<< +/Filter /FlateDecode +/Length 3046 +>> +stream +Ր0͂C+&dvGk i4Vi*E7hdc8,%-  +G#5+Y> W2O,M9ѶJ5s] #d283N 7O'S…ԭ6[j4uO)d?-V|WȪ#E'*,jK:|,}<ՏD"#bg^Z$rQQ':pd/z^+92o;d'/rb=0̇]={C 7H_tJaZevV9Px&$i%,oͅ]ުoP>&[Vyʓh~0}Ӥ[}R5W s"CñrU5a7M8u>Db؆g苂,(P;""a=.{Yﺄk&tu \ 'goVW 8DѾMa9fKB@A+11mM|F5ZD4Āem{5!73*]"iS^57'b_9Xv4j jRv>|dAȉ+67O]E4TjTbW}zvȦ*#H>T<Ԟ@:uY;ui?l)O"KQ]0@IJ$1*lx32rc_ +g`O"&JeȻ l0RQKt)W~E +ʨ +~A?0?+%Qqb q,r2AlULOsFn.umkPvjkÖ<`[.wk{=Ǹs&:\!ЕW:,Pr:OmO{) p1RZ!gtb%1y% L2h]0?!lv_/W 0φ)eנΆ\ّn+u}qS$="5Ji~f};d2v'#TPΎްQF x䌡\沧w08S{w9!d]:dc\J/zH#"ϛ??\qH9AVkK$M/]әzg=˜Esc.?þA\7x=?@gxI6`%;nVҪ:Mg-;[]_a$ൢatS[m^ē?l!vL,]TT^!bH!䬡e}^قbT;0uʲC{K/- w㕛^W|in2=W1H>xmBzvᤳ:??>i 7̏W. m9hLwi8)w5po sVKBaL\dUo(',"{e +*MM sq|{Dm+Aѐ-f%Gl+^wXzXN'̡*Rɻo]xeyR1G+K~1n>}T5@(Rq f[4×6)|J N%i]8M4 SH;![~{ϘPv= aIhKſ{+)nB;c҂p,c)М(n +, >YGU +%U]&xDKo'P +(* .cDѼޝ5m/yf-k [<~tmk ` }llGnåAp)fZ{pܥRPExAT +endstream +endobj +1004 0 obj +<< +/R7 305 0 R +>> +endobj +1005 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1006 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 202.758 168.514 208.889 176.621 ] +/Border [ 0 0 0 ] +/Dest [ 170 0 R /XYZ 75.52 59.99 null ] +/Subtype /Link +>> +endobj +1007 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 46.083 160.302 56.217 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <93f3984a56ee076ccad77eef8f8959ed365fda1675b732e6cb9ed47f049976a86ba4352a6ca11171665faa82af4bd6051c98f43dc836504338f5703521404e5a9738017717c9> +>> +/Subtype /Link +>> +endobj +1008 0 obj +<< +/Filter /FlateDecode +/Length 2606 +>> +stream +9SJ ^Ou AW\|zw!64ww]"'Xqy[k&Wm7gIw5®i$y8|}:X@t#܌`}Yju$Bm&GTCrgiR *{Ll/|뛿yvvdl(e"nEh'IYgvCx4QA XFos)"t7F3Ibڦh[cJ͓tQ%vqi|)o[8q?^oboF [?-#ZvPhΒ |`-c--ՈlU \}Kڏ'(-c&>F->ݼ3xoHX¸>co/@wpCSLjؿ'T F1 +c{ ;NI|g1)|q{<"] }&_fQT6)j?x7-Sk='3Ky%{/d_gyzKjLԬ]F + +"#] jf-#F|CA KNZ3Y6ބ[)NM}ˡ]RsxL|t-9{H.1?//Ww@xM;au0è n5B!a}lT]Iz&>QWj MpP3&{; 6yejRipqSӨ_{=q6SW?샯)'[Ұ"=|?Ųԙ@?.ߓPy H +Grp ụM*NMLo/z=ۙxA2OyUٛv[Aޢ9MPgH랆;%S@t0A w]xE^eWPAM6ʖ#ey+x0/f+Xy q׸h],ʨu [7㝝c[o-,']ʀh0^&\ OHg VlQ|/tūF0Zߏ;]T@K@.[bYAbm] +څa+[bVR@ nYV6)b B9JgUvye8uLje3##7}>Xz?W2 +NHT؎eŷ{/E&YG/TNN(1}|QM+8wy7{ʧw0/b}W r{wF=+j:@wp΂Jj٥DHw qˊwj@qh?gUin;9\hW[`E "6mmH_*a]T8=P q7Tpt^Rs&~;k󦣾C]`ayʄ X0m SΖ[;L|=4:_0 o +endstream +endobj +1009 0 obj +<< +/R7 305 0 R +>> +endobj +1010 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1011 0 obj +<< +/Filter /FlateDecode +/Length 1762 +>> +stream +Cbz6[۴7tx%?3hV ο~?(F]lDn]Fv#@I $7[C#逎 6d PI)7G˚_zG +X$h7>YkϤŢYO7^ OTc47uv_m<;C%:))acqVhQt^`OH 7,jhU8urL;ߐNT0U)'ҕRK?*՛w>c1t񫎩8R9=p_C2˜=S*3,t^U>)_ķFM:)~b)!Neo~Ĕ~z/E"{d)WR$5@} M?!mi8 8q|N w$fW^!He`Y\F<6A۲J{ǂ3q{v3!#g7D$E xwâ.nl84sLpsblB()h1%Pv>:ϛk@m \{QKH镈B!XDi?BS1 3FMsu|iu3QS +@ n1IBۄ3r O츹 +~yQHLqɕ< AzZ$~\bjY +t* RhB,>*ugyaRrm1i`Q'5<7,҇}֌T욱D27ZѵуL؈N"اVa @oTti3~Nq< ;!rUG_]!$.0 .|g?\vF `x0{-gyJ[|Il#/F=?6ޤx],Bӹ'AFJy0rZHOlM0ç?}6w yQ^=Ңx;/_Rs7ɔ[ I͖Az3m(pзum*5ppGQ;(b/&L R _H+Ʉe>G=p5f&vabCD։q yޭ16xu9rQCU jujKA4G/gSpTdPLt;oPǺۙ7(#<h#+@6  ERQk +_Oqdk:~B#E9:7eÿ4S1cO! +سT`)7 `27‹vVB nrj:{:л񌀙 G4р.Xo$7Z6N4Xƿ"u˜5X:3vC!t>KybJ%̣>^Wx¶3c`@wR8z {7z$xr VcvI`DRh.S$'h4=68e\G-*B;\{g5 +endstream +endobj +1012 0 obj +<< +/R7 305 0 R +>> +endobj +1013 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1014 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 165.638 530.198 172.689 538.305 ] +/Border [ 0 0 0 ] +/Dest [ 172 0 R /XYZ 75.52 99.37 null ] +/Subtype /Link +>> +endobj +1015 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 85.46 170.345 95.594 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <5c738d60ff8a9f07679e3ef97d9f4cde09c403058228712fd8460d7096aeb2656dd6b30e7faaab6d3f6c5f7ce73dc33b0a5221c97b6fb9227cad105e9a> +>> +/Subtype /Link +>> +endobj +1016 0 obj +<< +/Filter /FlateDecode +/Length 2730 +>> +stream +҂7,C`2*aٚ8ʚ]%1r- ': q3vtwmH΂MG2/ ha+ 4ȎUު_q|L7<]Owhh Ѓ!4DOE̘^ QtL!3=?`75[|@2 ?(q@ǥP)XR ԙpDr<_q:ꀕu :&ʯ~S|3oO<ɺX+piwm៣,_9U2hNN`֔{9ޞD0]}2":;#/F CD1>@K:k NMtZzw ɮIg533mLB?&D*ЦCJDCg͠M/kP<_hP*Ivd &ɮǡx>e"Y=zbiSBoa.̻'a6.J [8f|'@25Oo[uêxo]chVTDzsƨ +|n9;W}D)v0ڔAy0;} sy:jWst ++핚t\ O%:*{p@ĕPg;L d@A`eBҔT9_2=ԙfpDsk!y*KGp['/NEɁԱv+66 <[-\E ib6Sht#%PI7mj"ҥ`Iلr &>$G/mQmx9f86NVY]y.gCJhq/'euySs~dQx2A^}4ȫp䩵ם8 )&T)tSq|CAƕaanLŕ}s6|EI;M9(`N:q:/X [Ci}QTPRZj 1@a}l(+p&Qe>&Jw1 |0?_ѯ cNX޷ m"G6ze@T5CC=}r5y99yWm1m7l2er~>m=@ wsxBRf Xg4l>""VKsÈ "q؞D`vЈrצ̞Pdbf%>\ըi`B*VBgïf> r]V?P 2#S;M>DG;RM*LwyHZl!o=ͭNvяL;_{G< ÍU'!#<1 ]DAק?& JiCNe98)_Β]BPa0nsD,iB{f욺buk +endstream +endobj +1017 0 obj +<< +/R7 305 0 R +>> +endobj +1018 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1019 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 128.994 530.198 135.997 538.305 ] +/Border [ 0 0 0 ] +/Dest [ 173 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +1020 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 187.176 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <95b0669761286ba28fe315e288ce5e50b256998412a7c66f31b5c222a5b0fca487d9e1680af8b8d3cfc464cd24c2dac081f1480ee67448b08001d3b7> +>> +/Subtype /Link +>> +endobj +1021 0 obj +<< +/Filter /FlateDecode +/Length 2489 +>> +stream +~"ӉZ ]QzpUv}m6طK]RG)۞k %ȃiFA.H: ^D}8#ږtb$Zt1(Z§9oÀ~gcڟC8CDIj h[1[qee$qN""I@Ve ~\Y>!2)`j@*_~ ]&w$\P ̋ +2Kh}GR>ŭ#J`Zc:կh<6އt&l-WKKUȝ:4Vnwk+$}cvr|ׂWk1x"wBsh/ivb{߻:M>妊CbyZm9)_X$\{/DEoPʖƥN ,MW%7#zE#NÑW-A,ulUQ7)M3Ԣ sbw̴: +0JëX-OKwb=pXYU;m6{f9u7MLKͣA(5*ND~E@ :`*;ii?mw_`KB~2$Қp N/Ԗ}#-2T{ЏVgR +((nD.sY`}j(9Bݏ IiI!h>A1Ɋn;p4f%ֈk0>FѦ(,.[8ɫD Qx=ϻۥWAt~R&Vlt}/P(9'+C\BQ rvj&R>j$u{C32QȿzwnBGgn,{+y_AACY6r HmoH񷧱?G|;uOk^ Do$`Ycݬ MSƆ6an `?s^*ms+0%~|?7}Bs0nIy13^GS>rAP7 j-|OK#4~ :C~8= +E˿$'%;-m8h=.A9d }-:^Dq.V3K?/Q$`KԎD<1י$"b&D=tYTPjdNwΠIҩDHOn@~E1E> { =`BM L4"ZBi . qXG[}Y`3. Xuo9vE`VgGY&x:…J# KӪXU0QD"11nt >4$љgbd;q/rF;lnHN0-.e`Bk|WTh6۟\(j- #aOn +YD'6&HJ7*> +endobj +1023 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1024 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 156.142 253.511 163.239 261.618 ] +/Border [ 0 0 0 ] +/Dest [ 174 0 R /XYZ 75.52 65.8 null ] +/Subtype /Link +>> +endobj +1025 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 51.892 140.799 62.026 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1026 0 obj +<< +/Filter /FlateDecode +/Length 3128 +>> +stream +6{Iꕫg a.;trp\#ӏ8p9$?9l!xdw[gm?84k?0 '3|s擈y]fK;Ž5CU3&%-fQk:C5 Mҳ"-(s"^tP&[g΃ 3RrtKEd]{VZ v6]Ej* _;5i.Pք^ NeV ˿m3\4;ĢH7a6V(SPR*!> '/De~%j\C6lNWAppt3}ĄԎ[Ж%jE|#b̑)k"BJn+V(?4P~䭲ath6[+fG0'yɫQ^bz[V9Bଡ଼ ^d#*S)9JwPVˁ#,-]NwVyK^}_G3 u +\:N<]l-HL9$ UU"<;șW_39i$c 56Bl Y',]}kO$j>|-P~i%jNt^L t>e0|2(_GGݑev}n "8@:_*z\xsƟX'ahCهh[#.Û?(\wW[~MGx |}N}. m^7D6lEf>]r<{ XI}G^3Pq*Vcyzِ{Hh͑-g }nĭMmT:QlGtHX*!M,)"$ ԫ[!ۃ0-Ar':,F/'f^s|lu:. G]Mʓl5B*}Ԡܒ7rگjQ(/gk|EA#2=i qU(%C6^|nHۜ +flaM(gW\;p!$ i]&8b ^L4=eowK?|Ëzz>;wQޑ1-g_OIfz(Z̘rPT2Ki]z(DV@?g Q䵆D4Kg/tfu[Z0} M̄œ +OuS;aytu{$* +{sLH6BQ3``R7fb{o3vm%A0meL9\8%,]ӞK3ݒ rI:h]VWzjςq1bNO2S'-: +|×Mh <3* ,Ka~}_ZC2`N83@I+ EKH/ \)<c$]#`vڝPk(dfO95R8Pŵ}D(2k_LHz>-= AMz$hg4@mF ]"XQ$=icqH6[(pŘ<\} :U]F{WVTntEYasce=S݆p;HL|˜~LJC32y!7t0>~FRFlc4J8G^p.ˀzH5 +aWCk%/GR<\XMb|vc +׃PuZkX|ЦE{2z,h<}(8%XCtj >f,bhΤYߘBN}!XЧjRk8$=,Ҏh֫ϥ7o>`Qʭik. L57Q IYCP #k{_/t->w1)~z"$ +>lW9m] *?z"L zûнeɋ 0IVj{ZQsC=a4a0m +OE\Cp)A L?am[?Ţ%mF=^}`d %؃|110i\;a xr3 FPzUz|_XOdɌ2|SeI&C_ɇHR +aR%o 0#хZ3hR *ԟwtt_o̹mRr8,9?o5~8f8mAy|ţ€*u?.CJޙ.,_g!cAlkTHRhG}¦5H}kV_KTy)m]gQB[AA@=\Y(:(>>6.~'WF~1%8,2BqrK&Ŝbv K|BRR!@4qknmնET., bΕ2W/Bi{B%ԧw* +endstream +endobj +1027 0 obj +<< +/R7 305 0 R +>> +endobj +1028 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1029 0 obj +<< +/Filter /FlateDecode +/Length 1768 +>> +stream +.t޳+K9T4eA{!Ӂ*~Se+ PŸױ^ѬOQܒhF1h} 㸞K `ج $y%xXOX8 YLe_q>q ћ/FUipwUDdE2UWFF*  gp#Rj3>vfcowEZ9w 4‚Lŝ%}DiqeܗG"y&SΜQ|WِyGt;]o:p!u- +tA|Iy3ќ|sXUgU-,fǾES&CV\T\ 碑HD rJTLmq}JDq珠ZVn!%NEcWqsǐVA.\r`Cr/(Eӵ ؚ&Ap^dIp,pxQ#i %Miq3uDSTzoݕ^9?Z@yh{d$Zz鰲qm;F < %o_ih8+v>P0bG9½wiʻD>ɠt$bs5͋Bf,`==p)A" A=EPT&cZ(O\L+2 +l,;2(0ru8k5-5΅)Lfwq: kFz vNO{hez +tYJzNE =ݳk xZ.^mKUlR'<9mwxtݬ!>M)˓K Ҁ!*Չ]܃[ӥPۑ@+Wq?R_qnblvԲI|>MeE[}+%͒4Od9^1>פ,T7UE#f.g8"O-;}/Tb5~TFSR^DՖӱz sX 2)nؾHLSVrקOHbd 7A|էU5r̓[(3j};J(+'_~[ouqy^wxFdpEelP?͵C jG҂_]6R \m%!b8z+aߔdrl~= `^LUܕt^xɿ## +endstream +endobj +1030 0 obj +<< +/R7 305 0 R +>> +endobj +1031 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1032 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 162.27 187.807 169.105 195.914 ] +/Border [ 0 0 0 ] +/Dest [ 176 0 R /XYZ 75.52 79.29 null ] +/Subtype /Link +>> +endobj +1033 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 75.519 65.377 267.075 75.51 ] +/Border [ 0 0 0 ] +/Dest [ 159 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +1034 0 obj +<< +/Filter /FlateDecode +/Length 3165 +>> +stream +i'/~C؎%W=78=(lݤQjG>CM$+2 1ԐH2T82Z<3o'0"4j{ )\?,v2AoiX&s:F򀉀{ 8-&/k]8`Ij>LӂU697 Oν4Dcl WCce>}o XޛСi!~6v^ldaAE ~%r$_W,.ּ3uɕڡ}`Y$, Frz%Az@r9<e .y^Õ0_jgVe Q7 j[*|O-^k2<TX+y֓=-юI-}*OrRtVQ&0" 7_ :3zET}ǟ/F\dJp͐UM i_-VA|鎩\B\!$ޯ;ZMj+ %j.;̼wHc_ H_nلU& oؿxH^Y;$ sA[`#vĕa~e6Jma99O $L.~ANsJZEl k1=  +~ dޜטּN0J]6HOt][h-x|UR:lO-0 +;攚uT:>x|IF aѵ\gWeu%ucios!^Zu t +vucv^F8܃]DqG9!ܙA|HG2VN\^+IQ>r괮oH4 ),C&bOXϢfl14S#wq0CrPR%P5q\zsoS[pZ&d6wyS<3d_BڟԃK3mbM96LI~OVQw5숒 +TK>amu^}D(ܓG"x6hk>Uu +]ؔm- R +6UqG)ly +]M״?݄ˀ4?a[ Ԁx7hxx^6D9*-[}0CÚ sU`l#o [c*mT(t+` O kD[&#i6BD1wX6\:\TlV&xzJΨaFIoHƌ7*z 96<~5.F#Z=P4!vu5Yd~/^E)'Z_&|/2ϣYvɬ+w&y@`F,V6Tp#$LK1aBګ" +(`C +ԃ1M&w1D4 g>N'^vrp啷'ƔU 6f^ +T$h?ؚ#Ujpo꤂R^fEWcSvH+OuJGS0YAױ-k +Z ug]I+)ԄIfn2?y; +[2- pVE#a16)prq%9Ӧa NmԌwYRs^f%n)V?1Bh(ysi~3GۅMW٣TjDcVN,n:S'ٙ㐷 F<W`ß9:|uZ4 +d?w;|n8ǭ#c,vJdЬ j&\J*T;UY7Vk yO@U<4uE2F*'k]6!/ XhIEyGN!h%5׬RIqŚ.4:d4)qwn%a ΈÂ~ ; ;"8"/8P +={/utS/tNIqҨm!Lk$iIb}?Ǟ Է`.C>¶M$Op\z{"]iNhr{X0G4,xGu]uL*}Elo~Œp58" +OAedb e-vp'AQG!HS*Di3D{&j^F˸/n0:vtȢƤkCx'E*Tj-"z=CN(C84sC̠I&rymRLt9eNa|{{wq[ˌOFvUi)zٟO 6g24ZSg}TK$?.D!1qv>j،'H9 b\ +->*|OFs_$wS:_%p޹%\E(W$y~:Vl2.=B"kD ^#7GA@^)aXVyӹ8`6SZ)VYpd; [\ g!-ԦJT)t Hrƃ Y|pO;7&ַOYݪe˛D'EmN$GPs4yҩA65.gfva20k`V@RDdf 6&Gc:u67HSr_ؒR{{t"׸ɧj-D2qDY! `N29q11.\9٧YZw'ʍKнE}9$j;8̷@)gZn%1 */!5᧱"⯨0G Fnf#̦n ]c:): LNj%L_M 9#:zKed KNۙn +endstream +endobj +1035 0 obj +<< +/R7 305 0 R +>> +endobj +1036 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1037 0 obj +<< +/Filter /FlateDecode +/Length 2376 +>> +stream +&=3Jk Bߦ3ovLJ$F&:(@]uq4;+JW=h1F?6uֈћa9zcT xsXƎO#.yk.ud.=LrѮ""T_lVm`,kwmRXmك+X2mxbrF0"H4x݋a/X5hw]CCq5Ub`/dl=e8q3uMc³Y UEi.KțB=D)}7jGZDs)(РWjdΧ?wd,k6ѯ*k6qLkQ*؃yebLӹk_[1{lW:Grxb)?4jR)[]I")@v״E@\xh:.\dg;MHX!h谭TM|*Aגt r8ޑ&[g %  aO$v0#m?ծΩ]g(DJ=,oSI5"Rϔ4!<C[g&?O<:ֹ](R FM;+>-`FLVn _WZ:;))E3__̌*W^'@Xu,_\º0vvsiduqJYl3pV3LO3Ƴ9Fv&3ē»cX'v0GP(XmNnd5L*(w^ Gό Fǹ++ܹk!1K>cxTC2KF.ͽ[G2a8.֋У[1!34`_ѳ;ҭ/F zŒ[YA(anOP;EVdZYt) OϼpQچUj9wı1B@$#E)Ju+5lvn4aHPOlRG݇=, Ffrޮλ'9l{͠5Z$W +[1DgDlA=F?U35pqIٳ%,"ڇ"2gx~TwX$xY%h_o"ƾhS90Ś v* +iZIC m{y q̳KmO!AYb;("T*4zfno?I\"DC[$xy 1FR[V/:TҁInsw rG-'dkm%+{~S( q!C;bk`6AXa\Ug˜S#/ޗ%>AQ+"tُOW7bK+QI& LaV7QCG8f>#U+%м<:c|(;w|NF ,VftQB5b-GU]>j󭪳d_*0{̇זu3@B [IC +endstream +endobj +1038 0 obj +<< +/R7 305 0 R +>> +endobj +1039 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1040 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 78.363 457.891 85.466 465.998 ] +/Border [ 0 0 0 ] +/Dest [ 178 0 R /XYZ 75.52 69.52 null ] +/Subtype /Link +>> +endobj +1041 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 97.568 403.851 104.218 411.958 ] +/Border [ 0 0 0 ] +/Dest [ 178 0 R /XYZ 75.52 57.57 null ] +/Subtype /Link +>> +endobj +1042 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 55.614 169.883 65.747 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <37c51295ebfbc3baa74ddad3426d3ca43350c84ac5c04191dbe2cd4b2e6d1a47a5efb07f021e7f82697c08fe21de513cbf160a31d2> +>> +/Subtype /Link +>> +endobj +1043 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 123.079 43.658 173.547 53.792 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1044 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 192.735 43.658 235.133 53.792 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <4330ab9226f26f7404871fba31816abdf45a4cea5349f6bcf2436091b3c4be1412b8c312c23ff5778caa8d0064db6906da7b1a082ea0ccad5abb504032bdd68bbe4847c79c9375b64ee9523cfd69d858baeba320c1e55c10384ae293b805d333e71d0d08eee9e87320bc10> +>> +/Subtype /Link +>> +endobj +1045 0 obj +<< +/Filter /FlateDecode +/Length 3093 +>> +stream +ΎF:"h~,dcX]Բ{.fLRߟD $}rvLt^t}qx:riuO; g2oD3<H!X(Vz"ٹ(xZOAfùo="L=\dB9m!EfLܴsL(W +:l Zr2ui&{iů ~?8{trB7˭#G1+UTh/L%{n3S8(M 6:ߔ]j0ԏ Tr9 ++-:`U^zOC_iFE˵r%ij4N쩂 MfWVJ s NE~MUvl9 +AV1uѫnQEN4kQ靅zȺ&Z 0]wA4x> +H6_)>`Sd ~4+P6ۥ;%t}PѶK`>a8~]eU3_ڠ*Xl-)#h-eDn qKZDȭ>q ʱ=ާw7 %&6NI5ڐ=`BmI[qdۂFcv?U)"uHsiڼA1q=6m/uǦUM5iB\+A׮ҭ0vs(vX'C#FFm+pP̛s]d .FGrGsߧ2wӈ%y᷵ʕ$>OvCh0NG%'Ғpg7N[:ȝDat7O:`R&3L*etz4ex8p( iL-D"ꇻ%BTL ] ؇AK*Adx䈬|jY: +HXO^`j: pL: H6oaA] 'U㱖 +m3mscd( +OCf^qݪ0G>BI_GhG=57{fUctA +:*]n'`:,9 ŗ @bk#bUxܜ`0CU!} )xH}M0}_o(^~]YgJzTe|p) ZOe.=aσli  +^C9:+)+ n$ bG)}F%Qe[ i Ci}D/ +5W-=;QeȯD DPw}esZ,1TFLkkЕfŻ(Gh4.|[O1ZŽm7 +7(Ge2k| +)ye3rP_` Qg}pכ ՟J8Xy^`Ë>Kjc1F) =Cj'&԰AS/lފNŶWHՐNm| 7(`@JӣCm,xFuH0^53=@$j ƷB(zRH/nS!K׬D"yFs$$:L r,Ϧ# 79&&wasމwuGruo |qTR&Cf?EjhVٗF(<~NrbA^CB#-E}n2'G4? +@|[e;wK 2 ={x .t{Pӻor/}-f+tV!T Bk ?4]e,i,=kl1NUTfw +C7ŸA)Hmk'<-lsjdZdLZ[գY bIҺNIUP(O t\I{ϗ +>;_+gm4/sń+ ҥa_jg*vPQ\}2@ >&b~pca[50.5^d QO(SlRѨ-!!3*eaOHy1-5d *!?aq {^ v!$ZZRhhItV0, +A-M1mXI|pA> xu6+ BT!;0WEBIĦX.eBJ=M\Ϊ1?-=a>4,B>E2~C ʙj +w7w8Yn +ccghJ@g]X0}[5xtot *,םZ"5`A(=]NCm䣹%o8~t@N`#ɶ5{ oe8U|zv|862hƁd,bR%e(D>l$hN;to"S|["s)ѺMCD3{d!raIA^83^|nl&j?y TN?j)Cّ! +h^oܫRHuN#=8zO8KZ8/rQyi#ɯa嶃QB!WCD~T[kI3>f21`7T#Fa@0y(#Xco3< +D'<>jfM4S7jH:oW_Z*bz';3ntGٸJp[-lgx\X#K +endstream +endobj +1046 0 obj +<< +/R7 305 0 R +>> +endobj +1047 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1048 0 obj +<< +/Filter /FlateDecode +/Length 2679 +>> +stream +yz,ڎ{wq!z,1U&r賣5D՜gt\!%5tʒ!wFLgcΈ3 YBG~N[:wָϺӋ[i*m}}< ft'+|G`' 2 "UHeaIP֮3 0ʍrm7t.xb$Yd F00)yc@yXl|V{MUF8[V7!B3#5uREk ݠk=lf a0>ңeK\v xߖڢ| WڑU u r;i(pADJ@սn*?Dwǂz  9,:@j{ɍ/Ug1͡b1|&64.ܑe6M!#B6jCe`?!kp.d/zaw[Ma6M/8S&'09S zoDzB%UǠщΩ EاM%V0@eVEor8<>!ژȀ)cX|2t㫱sEO(%fTNV|f4>kѫsk!W]x4A'TZd=u4}ijis+j`T^y=5XӐuGꈹIXk'J|u&EHy~_+e:PA;yhh +)ˆ@L;vrJjtC>3IMr +^HF[Q]$gOn|)"hcz/i> R zQˉJ _f޿mj>{yg3Rlq$UκnAf% i٩pF L-~p?`Jف7 +_&DEj1 +endstream +endobj +1049 0 obj +<< +/R7 305 0 R +>> +endobj +1050 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1051 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 191.732 389.74 199.051 397.847 ] +/Border [ 0 0 0 ] +/Dest [ 180 0 R /XYZ 75.52 80.18 null ] +/Subtype /Link +>> +endobj +1052 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 86.28 306.808 93.384 314.915 ] +/Border [ 0 0 0 ] +/Dest [ 180 0 R /XYZ 75.52 68.22 null ] +/Subtype /Link +>> +endobj +1053 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 75.519 66.268 325.784 76.402 ] +/Border [ 0 0 0 ] +/Dest [ 104 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +1054 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 54.313 183.801 64.447 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1055 0 obj +<< +/Filter /FlateDecode +/Length 3503 +>> +stream +`qu62{Z+pH,-h":~$o2 ?7K8SwAϵ֛2$m#rJzx84A,I'2xzvQu&hU3JC+PxinQJ +ywυf"4)޷kꅓ pbi5<`OR:ߝTCp-eZl#Ó8adP:RC?,О_}ZPD4X*ԦiY1SXލ=5.H{Rq zm !y84zӲ'+6ڲRШch4O&`?/=@=ZW@4tzr3VKX }8,TQL.0<֌dનn}IH̸&emb?',m?`%![.^IU9pK586iKWX<Ix^eN>nd)HZsjǥE Keu~J }hr˦jw +T+!dgm{FIz9Zkg(Y 1Z$7OE=I4 ӀW #xa1p>Yy7SsۂRESEB[+o eAfRS`&K1S4?alQ GY% ,H`YV"0$pG +K~.unck;-.//mX"צ wCӝq8XԓC)"%y30Ļyײ ^'2T@7c#Ue3xATH0ŅvP -Juq1 "_E=K.-fJSs:2Z[ Fn7#GR-w׮rT#1 XYI@m M윴dm^Bʅ2S!1>~ GݏAϽ +..OH2jcnXr+e@G OQ| +վKݦDUNZH5~%,e9),5O(9j(tZK1k㐇;L˾1^(Et-*ber5= 5,Xa3HڀXݖzoLQ lQI>s1!®mYU!:sl;-U7_^>ŗeRӕ0ÞXy'/ 5gO?-;i~kȻu҉Iy{ S6 t8$(׫a.eE1')aόR%TsuOr|``I7ex/B ƗGzhΤ۴=+-<|[|r#yKilU1h&w⿼th6 |G#<3I?1hD5 G*j68IU)u DXǛB_Ҍ˷?U );w}YmED -tY"7r* KV_pU/q{+@O\y4ѳ_RϻGOP]!(CD5jmNF r$pq֞H>wuNdcvflܦ{8 n5Ӥ@d*Y!߲sH@R1xC ~2씗X[jj[GcHwdM +)ZSk13kyD<۳ИvDiZʜTj*#}z~ 1kqTz_԰=su&$|UCܳQ4rz8kHf`~OvC_ A$JɳwjãI|MEqu +?;USQHbx_5#ѱng9mHpإ5cp>H!gpz}0,pvǪSq#Hb޻63%2olHlO$ԂmaSL)#;>D#C4LEo#-G$vX{K `N{Zٶ^l+ ګui1h!K% Ղie^a _ZbmFSYrꡛ:G ƍ l@,x%\/fLDVc5I9Opd1Ȩ_jNf6KRv6?,W-lpv)I?2ٜ_ +E2Z#.U[Lt{nc,:04[/%*R8qv))CK7y*zp'ʶ čklmpb +-Iy0HA%n8 H4u`EBUE3eMnA҅/*GL I̴͕U4y Qھ`)Y@45"Ia07g|/ 7|A2V}nzN SXjn3.o6BrBrgN yL'kK(CDw(~ )xX u}B +endstream +endobj +1056 0 obj +<< +/R7 305 0 R +>> +endobj +1057 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1058 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 201.664 309.368 210.029 317.475 ] +/Border [ 0 0 0 ] +/Dest [ 181 0 R /XYZ 75.52 78.32 null ] +/Subtype /Link +>> +endobj +1059 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 75.519 64.412 258.757 74.546 ] +/Border [ 0 0 0 ] +/Dest [ 131 0 R /XYZ 54 576 null ] +/Subtype /Link +>> +endobj +1060 0 obj +<< +/Filter /FlateDecode +/Length 2927 +>> +stream +?Lv$R?Q3`L0Tߨ}9ڊGDBvE'Wl 0+H%uM$V.2`d=L;a!mӻ*W7F"$GP6^#)cb02!g܊B *VjrEmf$y4FXjY[7m RH(Q z{t3 +~XyK k78&c||eV6oq4%y] W`?!lDeBǣ=ꩋdj=3ꑟ'vw倣f\[ m/2돗Ax^k8t|<3d€bhuQ}gt-!YR'֘?vW $Z]J1LSSڻ[L8-{>+w"ꗨ`#Y=o iD9b ۰q(nJR +W_ɹB=4AW魝:["{`!R7܏)hKR5}#4_찲7S/u4.~m1#&'yBùX?/iyEzU(VeeH!I$nR<#%殔~3c%8Gg]uܴ_9ڽNsw 58X&&b*"6PWgyP#ĀE`#H-{ThNjfدxˇ<&~s + (e6/}Ȼ$`#x/N@˼! %7p6]Q&I7A5%x EZ,{ù٥v] $! +Ip1Ӓ\ ,p]WEʷPf0A@oyCM+Vysl = 䯊(阞Fnd5]ުդRўoːL7k R'-HU\ڤ-4KA|#\*|v`-i\\a}S4Fڊh0])t#^}7A#yVr>@y֊HWVݡ%\y + AyCj𐌨oq#8 RW_ޝ$rxjc@ܹ0i-)Ҍ$πaU !ǎ I' #o&UtN+c^Pn3p^|.PsBZ7*R6%88p!5emā[d&-Td5 ' ZW:X,5qR.|zgW. +tP%O]:DezFy&ΒM3>f(R͏箎cϿ.[UE&4x6Enitn\دiQa=3L|"^g^ӎis[CJk}Nq{7_gZTwfeÎmsfo"%{%@oxRu qU?q+ +R 'l1jyH͜T^Y&"ƪE峎 +R$ KJӎ'0y l#2;kݏu=߄NV7!zS1dQF|!90llO\!ݕ4hhиt &H0ale?0% NL13ppt<cDڞK rY'S2to28 -W'8 b8 \e lNaZ9RshD@b#:95d/u`2zRc;Gk,1B/,zߔ7* Nvê]2> +6d Ծu!^ںm]PfˬtM_>P)YT^4R}.g +|<-CK\3ӖBgA1RvhݽڸPbfTha* NOdi+;mS‡UVLHX}L\PvgŴ~K|0MvL@qE,CmRItNyok&ѥ"J\Jɐ́ ̓|QP  -2ߒZug 4G ëw,X:0>@6GD-EP?u`*BJ\`%DX&S8LFYiWZMrhmBa`b# rv]/ݜ=tȸձ5yTJݎ4a0uBJIs X&":/NiFQ~ +endstream +endobj +1061 0 obj +<< +/R7 305 0 R +>> +endobj +1062 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1063 0 obj +<< +/Filter /FlateDecode +/Length 2591 +>> +stream +=4M7-~PpfKe B?Z5vI2bH{"[jǫ,d,Go*6M)t1?AJ FAJrǡqD־W6NKBV_'x&N1qM.#O>FJi:g:K5iC#-y1R< d<K==AϗMRF$+.طaQaK `<XZT &B)H=N*<Nsa`A<`AL5AƲx/F9W,]jH+9߼81|V +]e LÚ=X/sfRn^\d4p^)f/ry9dXK{ ZTg8 +_J)ڢy:K"yn)zhnd|  (ßڗDw_@.VA^Ŵ@!%gV4PYeF_ MB:"=jT]1PC'kC9&dP9!?oC]vu4'oೌd>a9G=%Фtݿ=9[l7"$H(id^O:raufq&_eC V~/]mi Jտ\/FB)qO#]w\S'uˍ pCCbH +vF,5nہ:Iv,@2 ?imsYb86 ļd?i@!QbPu5>nD\(2R*{yH!ڸx|WbUU]=A,i &]ky{Psa זT\߮?\%ĭF'=,Q[S=HM)}:pS2ܮx+,ː}^Ue~Dk{_'}"zuBu;=$+qbLi/9'Hn f_7hd_:Z:Y0%nN^S5*=eqr1.P,{ S)YUU-MosUxLP .eZ+@uW'?2Z^P^1x bIx=}Y F)TPQ>''Nm1qH)qԋ7ȁ  IERР +RXLxlp|tۈ&@s>lw$`U19λI%l@Q F#9D+mji(> +endobj +1065 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1066 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 285.753 428.422 292.804 436.529 ] +/Border [ 0 0 0 ] +/Dest [ 183 0 R /XYZ 75.52 71.49 null ] +/Subtype /Link +>> +endobj +1067 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 194.768 359.936 202.739 368.043 ] +/Border [ 0 0 0 ] +/Dest [ 183 0 R /XYZ 75.52 59.54 null ] +/Subtype /Link +>> +endobj +1068 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 57.581 228.338 67.715 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <9585d4caf08de227dda8e4d7f43168cb83dabc7ec84ec04ddaa7b6608dca1de0c3e1c40108e51e8d2aa957043783b212917b5f7b5df933a0f0d46fabb56d03> +>> +/Subtype /Link +>> +endobj +1069 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 45.626 132.851 55.759 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <2d1a0cbb738fc4747805d4119fafe30978a7898ed3> +>> +/Subtype /Link +>> +endobj +1070 0 obj +<< +/Filter /FlateDecode +/Length 2949 +>> +stream +TFWiEq|z&$ ,Omŵ 8ڪ%*@c^ѸyDR~MoJ<@akg݉^56~E4۩pűdDXZiI]*uW,{tC^[,[JH9|*收>lK"J2| :vAE$r2T(B\~Q hK ]r;HiC"ϖSޅ8Cv&|>1U;w4Ax7e7Z^xAccC*ڛް \{@S:s[S%$wÆ% z ÎUO夝kf~HfkHhbºXqQy$ h=d3|f)bKd[ʾ't=^Hu#HW(.6c8)wU N\*UԳɎT'ӶB7/CYfGřhNڶ`op?P͎q/ls |#UvOc.00s9 Ķcu@_W1_ݰؓ7 8eAY| +pϊXj[946!p|c3At13F?jN[l!:5-%Bwʿ~AH2=EےiKolv%NO\ænΦ]zK h3dy(SAܩUMfke98?`^%7/e{zԦߜi OϜ +v;{ + !{4!Q1ZUʅif[17z)دvoˤf"nLA>U4z"sxI?ƊM$+smN:aul!&\8Iz͟Z%&| ) +I_I[yho}TAWb7@qO22T~ {#j&^*-Bט +r0ե}dNɜ%! ˪̚y )*` +dr@uq@=ڹOCɔ +` `qevd9mkXb_hr|hDD!+D1i(aD'tڥbD/IHۄ`i_#h۲Rڿ!} ܁rH55mwRdWou4!jtA< +O>Q +_,DAX5.wxfAL36YJӎ.jp %eo9_mY]K%!@H.˧YзV<Y=)IfId#/FրH ̥~I1v0^t Gv?zB~UN|k6j7Z'+KG$g4)+\Wޢ,ߠ7Yg[1~I{(rp8;Az##h#a1ƈgB"'}~.wkA@W`o + Q> +endobj +1072 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1073 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 176.961 349.258 184.883 357.365 ] +/Border [ 0 0 0 ] +/Dest [ 184 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +1074 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 198.96 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <0da778d9058d7689fca7eb4797a72fbe329d82a2746c0a7ca60b27b7a6f11da01dcaa56e88a882806469a002228fcae81b48e04166bf7e34766457> +>> +/Subtype /Link +>> +endobj +1075 0 obj +<< +/Filter /FlateDecode +/Length 3548 +>> +stream +u lܣ8t'EBt$螜дq`m)4iXV#.t-IIe'Uo%s9%jO1H_Fb&|r㡄`d{H٭&vZy.l϶rAÅEPቨbPŀ-~S@3ӗd~xzb>-A5-K?,h^*h5BS(Fj,)r8~|ƩxJKAI9X'achPL`E!D3Y]/EaY YcW/=" +wѣMI9ܸe9!߿CcX~r;Iƽ%jږAEF6xdXa*.:+Eg!y̙uDqpɺEq m-MW@u?eK3;@T@| O&覷vmۢړtھg{re3KC៹k.!-O9`'mMhȤOV a|QSٯ9j8@Nʽ%RjMneJ^ŭC@92GYO>fn'lܯ; \#,WEԔP +2N YNH-"j1E\swK|(1l`&DE$U܃-b;!͞5#X39kc"B3-K GrS4Z8:J._=Eo8k ^1&Aenռo;EԏgkQa58f@Op(*zis*ә4u (TFH‚.,vE9w[5 5O4>+@sC<Է@0Uqyk\-1Opp"PK1V%QZ;aBe1ǹMrdxrO߿mfc}.x+ڗu+z+D5tDn~ǐ&{0✮gnJkC\Wߐ?s4n)S7ȝn`A6hfT'sYIzvˏU@I *~M +PV8-j Fr[$`bݥLᥐޯΦ,Lh%r'q(Cﮔ̞}IWҸ\+,S *_5e +V1< S'gu E  _8S`Rs ufZ4~xr1daE\%hhgx:KDE=` 1΍DR]In_7G(IQ feXLK uxQω##_uآ8h6c,K?w%B>q09ev=i7((atd ʹ`b~ԫ`:q:2\-sGX?ƶdT3㾐Xw/EP[u`\` +}K;?_Êm8 =Fưs(X!_} Rig=^w|ڌ9[]4_|M*S( ;kIE}&%YT)-Um"Jr^tK|oA[=4?~*!> VE5!Iy*)r`8Wa0W`Рm0Gە_QT(_A'yC^LrZ5fh/D~^Ǔ-ɶ H<}X:U3ޮIť&b54| +HW- xaK䗂?#CKV cvʙ:#TOe֧j{e,9ԳiM(tw ߻''GFFĄ_ަ_*Z; +D)]u`$ +endstream +endobj +1076 0 obj +<< +/R7 305 0 R +>> +endobj +1077 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1078 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 218.145 392.903 226.162 401.01 ] +/Border [ 0 0 0 ] +/Dest [ 185 0 R /XYZ 75.52 66.94 null ] +/Subtype /Link +>> +endobj +1079 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 53.029 245.588 63.163 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1080 0 obj +<< +/Filter /FlateDecode +/Length 3224 +>> +stream +Rq{_k/̜w9:[~V 24aBX#sCjoNۇ)>28`ך|cyXhyJ/毿s1G|)5B‘Ν8Aj̟= )UY'~' U#\ ߱Eؿ&̮;bO{ӭz?g2S5i-7FJWFL0r푑2:X0?<KTd6 cV@4eC[oq%USF塥KdX)`6 [~z9 ncC%Nfr?{ְ: +歎eU>#<Tx̱i͍3+t`4}bj<56|\ܧ=گ!hajE@lJ7ESde!8"JAai] D ښ;fT_"/V~У&?3) }`a) k4K _Z}j-8fRJm ݒڴ^PUɦf gPUYleDؘU#"mKp uk +ȗUy98roό r!C?jw]K"7 o!g}}DŽ"܌pO`_bZXAa^}:;Zޏ$@?-Hk)6b/f,5{j8GpsܠxwsQƖIj +#D 񬿄ȡcz<4h5?2`X֡Lj%)=i:f~l q }6@盺iSꕏnU9rߵPKԂRז+7]3'!Bfe=vlQhku{_"`#p$7HG-PBϣK>ނ-3Hi* u2u6MH?Se_,0 ps5['B.L {df4SfOtorKh$,c7I)reEW_ꄅht \+ mdhXw̱Z YS߂qP=,U*g1'PNBe(.QZ}kse<%ˁ\rO=TnkJa\eQ'ca u\ˀq#9C)[R:Oys;gݑ +4)L]x!9\\ +n6U6y%ΔhJt0.;s󬫌 p e^ϭR& TyfQ,!WM+4H#b⬏Uz)SOKY3| +ǵ,h2\,qE%Iz:Dwl;9nWᇊ -˸SKӫD Ww&J]?;ߙѫ%2|C“PQ={Ab^زs,xd )>:c_.^k)ˡ_6S*I W98u=3v,V K#MtJ yexnXcBw'+)л0: Aw4#gzH» PW Zgq )1/~1`{$p9vHY(q.~}5 )aF\w$ fV i*ŮV W)в/~I쵅pM7* +SX6  +ɨ [2mT\&TmpaJ@W=~6fO\]R)Zl#NeV +'^3MrM ῴ>Z򵑧VP_ݜ%L +I:uگXsrJ6Q5Wy7depc{q&"DQWByQf -v/}|\N-3b ?W=Tp:&A+O7,<Ƨ *^7!5[bm;6еm/x汌74AWYԚ5={%Aw`̓b N 5}U; ioU``r` +.E T1 !pIDW䠑zĠȟ%!=wcl#buM5Ȣ t{+08B<1K iLw;C;=CDhzPbUײ'qȎaǨ ARB,@ 焕A HxWI|NRR$tz1 +oGAH3d9P>o|$ t#v#{G!ɓmGFx< BmN{<'U2[Qn}ɭ v-kw+;@?fcC9=_fl>@Y^Im{0Nڔ;N7`r\a-yQ/{(}eɯܤ8 cS^!?F*8O;0Rh1)> +endobj +1082 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1083 0 obj +<< +/Filter /FlateDecode +/Length 3380 +>> +stream +EhVqY@)Rxѥe 6Hm}1Z&Mq0rN=PǍ~Gdzg T.Pa]1b#a\m<Idu;%N]9Az~| )Ya|QԾD룲 .++)ɪO!9Ŵ]ѫc屬X%ZGc(W7k7WE\.7~?jPtm(ءK7FKL#/*RIKRfo995)BhE.f-@e+LOفv'Sy-ILffoJK;RSl.rV)࿋%嫦 9 ѪR Lg/5؝v멟HvH'$Tɍ{4gAX/W}xyqP|hI~}=ȳW:S[*)@`]|.ʼn93*NJHMG7KtK˅Bݥ "qa#NK6 +R#Б 2UG/@IP^7 hH݈.7'Ds4iУ g. fߢ"Z&0KV3K;/)B Z +Z&y߫RsOC?Hfc&(c-&yKd~ef-",z]\6})vX`2Qo%ȷ ey*A!# #^nBha{_ds.SQ]J e.j<7k 1(ObIn -&I)<]͙6#e5woh8װ(m^mצZ4(#IZq謄ɁT(AJŐ %k +{ ǩ!QU'gb2C +Z`J6s&Tq>0E׭Oy)ԏ.l!VRX4E1K>;}͡j#`@':D`LRʧkLi#YNa*\p&ojޢ[N(z%ɒ`߲!՜2(0 dip4z5@@Յ!ˑr%oke0%(Siײ4ZP\rj*aWʷFh$2 >8ȼBJx &eD1J[URnl4+va\ Jv +`>A[$譃%Êv,4}Qh ֽAy0#oO>m +R-2s:[z`/uId?Y諣eݴOmhz<S.ǿ3zHzyNDu:|%tANk;e\<&ʉE< j{}![ˉʏx[* qׂ/ti40>cʻZet16h_q4ODp:#`w9$sVzU9s]̚+,4MK4Q#rn3_1kW^| pÌ|c"vý+>(DGM7SY[ROlX f/ΛL%*K]UsdCm=!}٨;d^~F@V_`54aݫțD"P r/5_[pef= TNC.`bhrQFR)ôIbM8[Tf |EzOJ{IoT_{k ,U~<3l<|Pl q"7w #ٳ*iJW suxȹ,v>(*oCe(Y@ϯu0iѽY'W&nXXq/xRv- +׷ȐUgD~qIPؒ5]$y!|Q]q9:8 +endstream +endobj +1084 0 obj +<< +/R7 305 0 R +>> +endobj +1085 0 obj +<< +/R201 362 0 R +/R137 315 0 R +>> +endobj +1086 0 obj +<< +/Filter /FlateDecode +/Length 928 +>> +stream + \%lZhDܡz#i [0'dd7f5D<HT/@5;ؖ"Xe6YBU<! +9O#ubJ\ 5'[l)8sʯo^J|7͡OXC6xEKV4yI$0[AȆߘxŊ!ף44ߎ>"Kβ V]Y<{)$c+;NJGirAPA=vD~ :]%c2NG"w0L#\2ϥtS"x9wbSzy8N6ehE~`>!ǝΑR.r_>gkx&I,'׆X >M}/Q?G 3%D +~C[@'CQ2Im1y +ݙ$6Dp>=U"P!L݉~³qTX`<0{2&obSlã/͑qE$*xdX=FaB8L_7nsnRȝ;g-P%Q) 92!0w>H{o%үGܽll~F/X5 Y ~\%0b,ǘ} TeJU(lb PlS19/R!W3~}R0"e .7>6+*r2 _jsAy +RO#>IYQy+Ў񴨭7`5}k})PһetfvMs,(Wѐх0Ts>`YSJ?l9rRwVρVlRpٱ+ANR&;2=asH6aj +j`?;’8@EI߫wGS +endstream +endobj +1087 0 obj +<< +/R7 305 0 R +>> +endobj +1088 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1089 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 104.466 345.767 112.221 353.874 ] +/Border [ 0 0 0 ] +/Dest [ 188 0 R /XYZ 75.52 115.04 null ] +/Subtype /Link +>> +endobj +1090 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 101.126 243.386 111.26 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1091 0 obj +<< +/Filter /FlateDecode +/Length 3207 +>> +stream +iu0kh;ZL+CHݬpO2 y.$N}S&rrs::x%MRC8ptfhPjyƕm4 tk-`j[$rwƹLh@ ϝiC&QtBcj68AHuqJNpò_gh dDvMT}G8́I' uo}CNRMoJ 쓣(s~ 22a㼺6퐏z6,}'"iNeYoE=2 8Qy1V@Ԝ]MqqpζS׍5(5zq%26%K <[`a %rD /E~;y}KpPd>E^e)>p'}ڔsIE^M:V5 "<%wD5Tː>+W0YTny{%:#ѱ3It6aRv[H(:5ԝEte}׳ \SY^?5#q#yP2/вYR%s}ܤsܭJ( k{'1*<.ece}˄q\.fjăxfFg7ݴs$. ޢ#Ϻ 5 b43aoZr};٦}#OdHZNDۮ'@ǡ_q1Tx +E 3xHolt’ܓsCKw3V0:a\>-J\p~Fy0:9㜇'"1.@0y=CEԋc'|2gQZaMKd$c|0q +.}=v(e|8wWd꫗/=o`~Ahtvv]TF2^vO&R}"=8syrn';-%cȸVN sP :GtlA}5[j)kPeq d>|zyZ4NEj((HWɮ[wotLč$ٜ{[D"ٸO]Qͻ93]ԩ?M@P>OA$_ZxXud{'=6+)ߣA)@OXTr`}nۛS^J#%LuG9N65sZhWLI]^9?l&!Yw=@xݢ26ھc%xݵ^laaW{#wء#-ȘzhB|m˩a> p9d"_OJB_U۔wb6'R'A4Tkyݯ;Vxp:%TFWlcu*!BҕՀe_vI1˭2=T,EK .vsGr3W0ևg9As֒o m'ji»{HI]9M' x1 -E9? 0~5P;Ф=U;mUɄKo*䗠wQ<XFc0ܢB'ѡ@}{!(ѣ[MVy&?H͚Xsmk-T{5\;ѥf(L`9/LJzH.D!5yvq{Nɍ`;ҫga"!;_tXYKNYn[2/Qi~,} | [R+'H?~ܘ9<m|䒅D$),g!)Wt?Y &;B^GLBV>󹅍F#L_5Rr5&+S=/DխF~-McCz~GOTB| %( Sh3 : +[u*;B}!فPi\{ 畴]6Zenjs[$I"^ +֓P` fhDҏ.H>#H Ttu"3SEf|'up__!>wg~\'AqĿ3ǭ1y3[rXb) %[۠8qM( yhs2 'HܝN+vI\W^hv-Zpv~MBVt.vr:ɀʫ$#?a^qSf[R }*5'f< .x]JLF[Q""9[ 6^ +endstream +endobj +1092 0 obj +<< +/R7 305 0 R +>> +endobj +1093 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1094 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 297.415 544.644 305.438 552.751 ] +/Border [ 0 0 0 ] +/Dest [ 189 0 R /XYZ 75.52 102.08 null ] +/Subtype /Link +>> +endobj +1095 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 70.378 461.713 77.948 469.82 ] +/Border [ 0 0 0 ] +/Dest [ 189 0 R /XYZ 75.52 90.13 null ] +/Subtype /Link +>> +endobj +1096 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 291.633 171.011 299.872 179.118 ] +/Border [ 0 0 0 ] +/Dest [ 189 0 R /XYZ 75.52 78.17 null ] +/Subtype /Link +>> +endobj +1097 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 88.174 160.96 98.308 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <768f0bb42ea552bdb6a9ab39f9debf9a4ac13441a6e3bf0c3a51bab6b3544389ef3bb4aad18d561b0b912b118e1f3281d4b1a26a685b498b3fab13af6dc0887bb58bcbfd90ae05> +>> +/Subtype /Link +>> +endobj +1098 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 76.219 184.799 86.353 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <6bc2d1e08eea5db3aabb8b2a6855f6afff16f3efe2329d518adc069b0bdf3c9a736c38d662e2e74a16b2326f5d2ed35bf3a763a0ba> +>> +/Subtype /Link +>> +endobj +1099 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 64.264 185.861 74.397 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1100 0 obj +<< +/Filter /FlateDecode +/Length 2821 +>> +stream +<7ːUS$5Ӣ Ja0 +Bj4y7Dy-ģ$(B=anUfɐ_sLzgqu#b7Is0-Q:_AV !k݋|2 +6XkDGlF ؠlb]s[^->C%X$i  koW]L#EcILN7Y'v wz5;ݧboFi2=F%.Cъ#ߦ$zAdiD5pL8 +Vդn9ىN*G02qU]% %EicM~A&Z$e5SYi˅ :zj]>s{Uak1|XY]u˻$3>ZyX=-U[4 R"Vm<ձYiy7 jf-R#kҬ)>i !!E2'Fk?@M+~ӹ yNvͦkGt̖,O c*S1ǯ?Vƾ !VkyL7M)ePX=ګG;-)fq+mVQsRDS +Y&R1$tvyD.?¬:ptNCqX3l =֨2t+:x7!{:bd1KͥX\Ihe\E=pțY^]BJZD,.~Fd8/ aڝwiqfkĬ3hrro %`IeOB/GY_+XZς]?##+0bJT>ᔒsZ>$1N[ ݡK422̚Ê4},] BJ'O7g!0OASܠM5ɚ?u>Ig\  /xLPMڄs53!I^Tx e ry;oЂ:ȍTa>g`M伝DG CF5 ;d0ׂeҠ1#4Ư]д2 +55VGP߹}hP$V/J *Jض)/wC|Rp8Ծh0 8_2}MPФ b[5lȤC*/ o a`>i$ A`wPUUOW1;)Fb'N +62˽_7;M_L*} +_4ה`zҏvyݴv5ad;:r@U䔽8UG?Qz(tB2\7x{yOܠ;bQl` )˻ZuZrSCkyE?fXSCL8CC;d6~w܉Sݢ-y J, 9FO XDe=6,3I̩6+λ.@3Z|csn^z]ҰY(gjh6ϵt *45iKi +3 p;^#حǏ}?YzHh7[MxI %5;E+ 58NA,A!LEQ狰bOgn)o07p{]r<%ʩif:U)ކ!D2h2IW0q:jJl~ΈL&{7lrYn˗([pB◃IvP.jRaPP`#:U~Efމ:Vt 7x1ϺNq2Da}đLȕd♫TVYtゞab)X_l߈SDŽ5+i9T&O]enPO)+%c鹱vYvbq( '=[ +(]WS/r Z&#Mܝwb= )s3$4(aI~uyϟ)nQjcD^4V1vYk;N$*ZW^A5)ĭ"wA쿁&S_bY],4i:r^N; ssx 9G◐mCT/nKV^аV%D^)8pJ + ӛ@+pQ|0!v#_L'O^G)4+Zp6VFn秷P M0 vd[sV¡"fIVLrR~Պ}Ͻ! S{Q{L}"k\<b'Mz"+5C HAFAQ@}]?^IAI >5 +endstream +endobj +1101 0 obj +<< +/R7 305 0 R +>> +endobj +1102 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1103 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 204.927 344.019 212.95 352.126 ] +/Border [ 0 0 0 ] +/Dest [ 190 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +1104 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 226.043 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <85dde615a6a0e34fc4c763048b798e5c1886bc0fef9951d9dcc657289b7351115eaa1a2ef8d6056f32cbc15bd70d355d19e00fa24a4565f4b8709b7c4078cb9c485f1da43b47> +>> +/Subtype /Link +>> +endobj +1105 0 obj +<< +/Filter /FlateDecode +/Length 3154 +>> +stream +6frKHͤz+z/v: es:SfEbTg-N}U@a.;'raQFH!UTUƝF@w>VH@$_p/cVH + unEq Hn S-HEZ]߁"oN-=:\=a(wQ1`ؗݐ/{󳬶KV _8A9'~Bc܏qH8̿ fwSC&dfU@@l&OAj2XZC]'rcZLc1NZJWFԶKsd4v@qw-y +J6ONLȳ%ADžXKS^DBF]UI6 &OՃ.C,#K_3/I?:K,ܘn ]6OuCWE>ǥ@^ ,`s}rh =Z.N+4 ;k̐3 ͋xekwv %/w-@(!aMȱ~fh.{{ȏ}= +X5ʵS<2L:Jok~OУɭ Q) +~SeJܰt{%%c-١z_(j@G̢_h7'FzVt[hmʳ up7U擉3GPYCI 㟁tߨ"(c?hbZbPniCEEˎdxSD ٔ7{Yy(M.iYF#:irڠyo=,(N7YM+l 'XDv>Lwukv{n:5<ʧl';$p!k@a ɜ)i7㯈1tlڴPTbi6Y2I]l {$ 2="zz Utwɂ]xۮL&=%k ])BcfҨ JWat,ʖXSVn@:iSphHYhߝH'yH &'k=9s{|5W1 #Iå'LH{-BC^vb.:Ҟ6m, +<|fo] f V/'bϗ֕10t!ƞu)|6-N^]o̺5)N:IH:lm>-8jQM;X`6QHU]+@L >7q3 E։\;DI;/b4@>hts.7i>K-Aӎ@P$~f@^_zf9Z=^Y=PX8cqghkB?O;yV} j^gɜ3 +L,܁At,s +K,~KYO\v`ȓcOaeh7RqY}"h-خ$$˿VAX`] M& ''ɼo[Ot~~j\{~.BC9&wcD|{BI MC%W/ڋcnM1/Z)? ,c e!E5!)sn%|m}G#pB+{a -g]cV/0nn0Si'K% 7Usz _?^MAcSl;m2{⁶>^Bl:BKŐCC> #B 8"L=Gy`vR fXڈ|B/Ě+UW%xr16B.<+)ek+.t1dANTՎd| cWd1@z"D"(J"a#CCcWF a å )6k#Dĭ-XY_KRu_kě%qإ:%fB +Ftoox)7FYӏT ^MQyG&d9&}qQZmg{Ν(?ɔgJ\Ì# ^cC_?Yħ=ouT4Ay +36U TXq``[dٻ%u"]:lSjv{^? ]4Ea*?^b kgC4Ӵs7KJ/̏ +endstream +endobj +1106 0 obj +<< +/R7 305 0 R +>> +endobj +1107 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1108 0 obj +<< +/Filter /FlateDecode +/Length 1522 +>> +stream + 5.@lܪF3yc"&Nz*r³aJЅ&5̤lTR6,k\ȧXyĐ\"f0BuS3|cqnlɐw&`r|ԶBY!mV4s>8'"0Xݭ`h#c;#!}ؾ3DH8fP$RQ8Cb vxIYvch0 T]EFcV+UF,KK+f pp'Zg> 's&!t:6ר^ّyBmG%q?9vXl?خj{/P*vJ5 XeR84Yk `=eԎ`IlK(15 vZ-iE*EJi1<`_~lZ&Mַz"CGT⚰rlGFͲp5Y/׉'HsQYx6s>Ʌ^X&8~.=tnw:-RHRDξ~*;/ܰ/H +od+uUKV0)6TU$ +)/X"~7̏éY@<&׸v 3VM^d׾Ec4Qy{3Gva/)a l7Ty2߂0Dv,^Ivڅ`I-SN c`}maZ\3[8]h;RDr&; l1$E9!L'@-&4cO VFfgmUf'>O(Kj8YDMRF%&I˿LxDVjV!mټNxxM,62 ⑓ +1#nN1Pݨ + > \A.$oFV;-j`>?Ĵ``^^gwC}uҎrJѵSY>ۗ~Q6БŠ:x(9\d'c&K(_wZ1Ȓ\Ъ^ 漣LCD}PKU{BHܣ3F$aGe>u^-3J", + ~k;,zuMC[\˙rËu#%a 5xpw3.^sZp#}0Ԧ7}qgb7xTtWy-|S@2-uOnH@\rw7'ڊF·3J);w`~6Q_R/cPJ>5o@N+o\,+=09xUÁ6EP{+;K);hкYmՙ>sUy$ҟbxfZNYxU +endstream +endobj +1109 0 obj +<< +/R7 305 0 R +>> +endobj +1110 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1111 0 obj +<< +/Filter /FlateDecode +/Length 2874 +>> +stream +N13IiHipO +-oZj4scsόDMzj? 066I.^@G;$RC>8ZWAIX@МfY߽VW#kHMh?/4zVN2~`#+o",l?_wU@Q; +I$-q$7Bk +1&I_4|9Tp0 8(jtoyaT3/)Lu45>@9=KJWd=n!|}7 _fgƀBH[@&R l(`㰡N7?X?tsZ57IS:Ұp8+tQSU$)ss~ئ;̪қsH/ <>將5m߃ rSTq+}_V##n?D<-Wp>az||e74f`Ȉ{ hk> u 5;*7tA?^H)B+j^j(uQߖ/8xw Fgv. +A&G%IK)a4|y&örܿiq?4NN(鱂!PKYbUG\X)WY%! eYo^EG@:tбU;9eBAUAwk%v bc ,RKp84R~nvU_ tz}7.h1+٬)԰HKF>WX65!3d 7׾a//(44l>v>o@U᱇O)ۦE.) oٿ]\>ޅxCr"dg'0Vcӳop$f P5 wIZrtidwN˳s؅ÊJu¼pIBuQ2ж +uHLBgv;!'[} 5_b CRshMKPd=zaW".!ʗ5]:bs&XQ(m%hg #J`dG}J찻o IC=6X_c=Թs]*방 sCj3{wxN\Qv&T?4;E 53wJ]$jf3koz‘UoK|ʛwݙSYU]7H7pqӷ:Z#m_N_Mҙ *EѧQl^䵣]XN`ZC"[OL8AuPhauĹ͚e5\ n' 0L_¾E)qu.~5zl,{vclj/aXgFE ?/(,F4Pt1 I;2}a1I}%Eê{ahL!pΪ6(*KQkͶ26: /Oo9@RyOLi~A,=&l]K1gVi[arX^@gꅋY56:a a)\ Md<h%T -d!:U&1ҫÄ鼎}/źGQey|\vi3is/}yk"TM| |k_D⚹dWd{qz߁hUڄ> eS0#ЙNŊE)ҩ1G#*K=ZO?Y)$Ws4 -r_r, ~Xoi|7*'Z€hG׈#᫲?A"v~KC̦Bǘ$ Q֞CG|ѓRS=#8Fyd&$n^N!V +Eޙst߮ѩ;81i^_ї$nA=!Ռ+Γ֓M_=`eʢKȑͣև %'"`[X06AyR P`)?$p܍)n559W`Ι *drJ8A_74ýa +լ^g(1R=Ŋ<=٦GP:Yh#o~G`qtOPt0Xξ)i1vN4HzЂa6^Dyt\P V:€w1 +endstream +endobj +1112 0 obj +<< +/R7 305 0 R +>> +endobj +1113 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1114 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 327.127 530.198 335.443 538.305 ] +/Border [ 0 0 0 ] +/Dest [ 193 0 R /XYZ 75.52 58.52 null ] +/Subtype /Link +>> +endobj +1115 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 44.607 227.602 54.741 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <38689cecb4341fdb3ffbfec982c13f7ba07a1af7a27b469c348adcef23cd79c7d7c1e5fa94e6c4104096f1686b36dc3789edc819cd85d802a7316b0749e0b1cb070e9a4c6201ed033eeb721b> +>> +/Subtype /Link +>> +endobj +1116 0 obj +<< +/Filter /FlateDecode +/Length 3314 +>> +stream +> ~v!]YdYuu|T@P,%%e=h~iI \;%*|Nql_7r]naX|gM͇MNuv[f 3[! -=?w5O?m- +k!y! WSH4ŖNK>"c L_E/P b-C!AfkoH'LK 8B**9:}f'b^K*3qҼ-c:pP41!5@'[3V3a֎P[~iŅv4#e٩6313vvxSµLD~U٦桭k=$N)FehIOb`ϼR8|ah $0)ź]EըхSa0vQm{u '< +F} PX >U6}?#ifklOCVT2{hOl C&4A`}똫Q:C#OO7.W**lB?m7n4Ňj!#t[D8xĒQ{6R-9(UvID,y@zQ%UkGnv[B$j{JAF"PIM7oZ)|)UHv:om $q/2Z펂4L<%DTߵ ]$0'Yq$k6j}@5અL{b/R!&SJxq $sƎE<ݔLjJM*<׭Ds[l>_{n /_ J7c?Ҳ +viNԯ]X]O "Xь[ҍ7:hgKwu~B C~M5CcU4%ٳ^9J]ҒCqlpuA.=`׼G,* !USV3Q(!fWIr{.kÝG1NbKK<6.`H #jŨ壀_#DDn +I +-NQr7ԔbZR@s|An2D1_2TSd+l[ax!ȷ l.ŋAh-)JY5r2PH*P04\(Bgcn҈jGtѴfmZPݘ/:6jD3uQ%f7(ѵD.wfS r7H:I?ۉNТIb+טqJo'_8hf:ˢ\psOdx1G[AhY9Cnm[[ Ӹ^B{Kˏzbq/v s-fE@Hҕ,^MޑN&;-5 +_d$q{P/\jY$bQ:m:B̄g +dVELRH~TTo4]pӶ+_h zCȪoxd4}5 ͎h{J9nA!=r +vO\ 2aWB RrE-%JXRR_dXY:c?9¯>ӟo= c+}gZ }4U]F.f~HgO .& qn?Ҫ15.f9D(珍NdPOn..\E +endstream +endobj +1117 0 obj +<< +/R7 305 0 R +>> +endobj +1118 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1119 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 85.815 285.688 92.817 293.795 ] +/Border [ 0 0 0 ] +/Dest [ 194 0 R /XYZ 75.52 75.29 null ] +/Subtype /Link +>> +endobj +1120 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 211.621 217.202 219.544 225.309 ] +/Border [ 0 0 0 ] +/Dest [ 194 0 R /XYZ 75.52 63.34 null ] +/Subtype /Link +>> +endobj +1121 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 61.38 217.93 71.514 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <7d81c45aa7e0142e4043781e817e18c6a33ac0be7892126cec00fc407a1e9d2e0ee28de96842a883767a44065a64da057fb5b74b8f3f64bfe33435b8dcda29b3842cff54> +>> +/Subtype /Link +>> +endobj +1122 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 123.079 49.425 206.992 59.559 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <1dd3e285af039728c604fde41ef61cc2717e6207d10cced283dd107276a002a585874098586eebc0b5bfd8c46d3e7517ba99c56ba702717bda0d60360c3f54299fa3f58ac67ebc422bc3fabbe788802a372eff78f03298334c713c1c058e6fb7c919bfb82a35031ec7eaaf18318662fc9afe1139> +>> +/Subtype /Link +>> +endobj +1123 0 obj +<< +/Filter /FlateDecode +/Length 2705 +>> +stream +"Pyш4Gq Cȯnv_bE#k^l3t)讲oCDݪ~{*Lz%q(V~=&̢ۆ립6LpJ`k:dFc3HfR.eaD?U&I!?nF|4# zi?a}3^>WM cQD0mcOP-g{XQ@(Ƴz1f9r0/G%n9cD`Q+U}-o38TT:Gq +R&}d"v*6r8.f_ǫT$ 8bԔ4!( |9V 3bs6xRPZ%x>+6\v28Nύ51_FΔmD h -R^VVj|ks-1~х.?]G\L # +M|l!:SW|fTTovu7-4gNo?]joo.+4 +2Èt'wSU`1u9,}QHqW.n혨fS%V c{+ ު_ӊ3j,Ē4K[}[lw݊ΉߥF|f ,+3?IA.=`\M˯%O4Rq~"?6+z>\>}>9 mCuјHf,-Y}dGߐy$KHrv;MMM; +h! +j\6Z@<6[;vca4Oy.kSԆ!ovTC +K?n㦐ٙ\%Cm@`:-"3;s^U;Ʈ>Fofj)~D)=} v {4\yV/$aoozIЪmTmV87aKu>9 L+^y _܎F #s9Ċ {:^sR f0|nbf|hG2Iʎ>) p%;/ 衈3[zI oi+蠮e?}rN7C3cFE< 4N +o{]V1-Z`:L12V€[7OM|a*?b<>{% C'.r`ljl/Bv>@C6H1|9'0QUY[ LÄ%*}ebҌ'Q;iW1ЙbI^eC|k覊) -(J [ZmD-ܻ=2#=N5b_`< tTS|E6qU #oo7ҡӡ,'fMhx]o'SɝXk0%1iW>OHrOx2ƣ8ėÏ8/+(Q{wBH bvn5TfF +׬i@kqY).4jT~@ LVf'@ D.B(U8ؚ +TUj(D5bhronT@àyY7$͓ +։RH6EBe +Lh`KMr+7n;$ ]Z3+?'viWBsS>N A@~F[gڮt1`q&8Y _mcKGপ׹t@P<+&i+ Wi2\+g]{4[_܍dZyo*IW&m-Ĝ@J D)-HJJdV,Kz`ۭ)nszqh(=17C~EvQv (DxKaN!`Q,d-[ &­b!oEBlY#dXCU=;댎Bj +endstream +endobj +1124 0 obj +<< +/R7 305 0 R +>> +endobj +1125 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1126 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 178.866 266.304 186.739 274.411 ] +/Border [ 0 0 0 ] +/Dest [ 195 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +1127 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 217.216 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <5fbbf1e1c72b84101f2ba880819c131fab664785a1ab07bc8fc449dab72d86481ad6a843f033a06d2fa168e3006e788001adf644aab282946077da77> +>> +/Subtype /Link +>> +endobj +1128 0 obj +<< +/Filter /FlateDecode +/Length 2468 +>> +stream +OA1A3Rq_,25hgd+21δaIҾ$ov kٽ%g +X%+L!Jgr^2 Pdgb|%^UM #)J9l *(C6$A!!(GZn+=#T61- )F1hԒ҂S㟫]y’ ,߹EdV 3]dV hncClŰɠrmVМ +<:rӰ,5 "Zok=Ɖ3%'U*y1lU;7ǙW fG_,mn >]@lad+r!+ce]Ɵ.R bZkhfdž`^E2lܟ~Uw/YD>/r=Aj-#\cm +OYSUu.=yh-9TVp< _%bJٽ[/=>L2"LO5xi\&N"v 96W?LV#)$j!׳Ł0d!ˆDCS sp=?o8iɕdK3bW  Mv+~M@cy {?rvlfEК]ioegi<̗N`PLB$OS\YY!0.5М7}&ɋ*}XdV-0a`z24 ^~ d 'Br=h +p t]KPe +k{i<)F$da#j WSM\Epꇵn$2}ō]mCc +4:^O,(UAzm"&W f}0@hP۔p,Z>uԣ;g9O?be3uP7v{ɿCn סp߳3p!s٨(/뱔8+uWBUY c=WIvaUusgZ0g+mAd[vY5Yp0g +@#guk~KYqTG"4A(?PʩD-FTQ]BxYdދil0Y 6% ,TI*}?OATpQYr'Y6)rv %AV I lM~քZc> +endobj +1130 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1131 0 obj +<< +/Filter /FlateDecode +/Length 2674 +>> +stream +˚)ǩe> U}WboW_.Q`#\_t&[AuTڍiIP_3exy"+$0 u7-{d/~;P_Z^튓XWZ4f:iSr*"3Cʺ~,k3yl!P &DE}[dyPct%~襥u}BBw6Ǜ,C/]GLIIږZYyPwfM=ϙU_[?JD#xECu()nL?^0کN8/=$F􎏫/HcYѫB*v;cTid4΅|Ɲn#UEr(sfbOEj?غfe>0?p=+N7 ?[byKXBP(-VZN +QE  k*=zmfM؋иm1{ߥ١deuҸ%%C[Wi{~RMnX9aZ:{MU[[됟jwhrI'1PSeu&ȕSCeFw}Ī+yd|ׁ̹W7pD]ygnԇZEO<ˇҊ9yAe&Hobmlqxԯy!FUz6ƫD@Ɖ@מ;]1’veK{x# );!hA. #l1DUb--%Tk%} b#9~H:?s!?*՟-;6'N 0{CaDKL+JX>O"Ogj,lqųQ9tƶP]i*$1..G T `7{{o#|eR4׋`BE-鱩t + K#fE31nۿ7Q +kE=(n?(faTBR9_.faOzACߏ7DLz^o!)LѿҬ6tOOjpv4A>͍jws8c<@=b]AٌE +uAmw@%´,t.P)*rB݋ B1F3CwidpMBl=insJ %"g } #g*"R,y]&i 絫\! +R~n~[DaָDDx +oűJ@]/5 +cc6j8 -:d,%*+^fBUqOIkDnTQs!rB_AOhѢs xk=D.QKpnD*x'+p*M>b+I"_edk93#{4$u$Ty(n&%^" GT.PM7b/$x!Ԃt7gYqR'UݜmKS&~ɖܸʷ>6AmE޺5h]hE ]m?$7GoiHV92ll%hS[_ư GûU ?4C?txET:l_&#WE +ó;B&_!"4齩7aK1M9|7 ӚN週m &4!> +endobj +1133 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1134 0 obj +<< +/Filter /FlateDecode +/Length 1866 +>> +stream +[=e̶/E~lǞl+z?n!8\b 6 ߎ! )`U g\r9uc| Q3i^؇x r:Ϗ"g ogn:@Ԛa\!8[8RQ qJ))I=pY4ϾOܒMiLZNe:v@cI Dz׳LVRkbޥ|Yo.ɏM:&TuM}?\*ʜF| Bhn-HS Isz]j+5OLI ϮGDž>E:j%7ztc8f_CO18lMR<ޠ? vSʓFOuB TP'CGm"&w>F?GӮ  1vC"|H| !> +endobj +1136 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1137 0 obj +<< +/Filter /FlateDecode +/Length 2917 +>> +stream +-opbG2U^5ic(ǿ6EWPB,K;axr\,hHU%VfUU],]\J]mpv ?lDr[pocMj[oC/gq+‰M*νY󐖽V c^316yFJ*:lFgɽuXI^ԜDsӂFl/ү+a]UxW X@wr@ut^ cAEzD)y?$) -4آ „kZm!ۺ[ |/$߉W2D*.w&sM˹mUQF bk]2_ +d)* +d-C1a4A[ef PS?;j&ICZh+ÅRG2GސX9X ѾoL񞿶g +. 5Na>QT +DZxjq` + ןIʧ#u WPr=8G)wLsTؑ\G^ZDrּl[Xp m괼_̝SfƺD͈xQE68fjMz1D:lԐX XcRHj|)/;)`bjJYVJeqS7Yp*kbH(HhE KŨB7xJ]y/A؀$ۥCt˵6^6ߦx9}&T:@t0oUJo5o_)yC4;KS+LҭGCĆ'P8p͈\(4ǬY~ u=Y)xKa20 Sv 0wm~f1[Zu!$;Oxk5\gcEk{tbV^7"2`/P}ut\SہsZ}dLFUX&C[B| =2Ɠ~P_ii 0UCB?hۙnРmUVj{]}s*F\=y۫Z(3Jw *RLP>]j%CCNؗ]EtL8y9Ž2;=9/JPU t(h\ϻ @Z~tm +UJ[5cKk`6s)Zi +N/YJ(g P~n'rWmH^6R6yO}&|IzD_ uƈ~1&a[im6GVf&MEIV%gE`<hQuT4]&k>~SU*_ ~Q0 lb*G딮&RA֗vdN<3WLAh.eR#%|[ !'P7%3-kh% NeqVtcOg2[JZHkZW#Oo_3Xb3;%28H`n&j;Werכř?9H׽DCE)vʏ˗w0XVB[?HA(%8yuZU}KdpsZG'OhG`{%*ꅖDd2k+<7/hEcRM1$g5C-q_p!ݵۧ7̳Pkԧ|ët|_(~hpe!L8n>k댛Z7]^yzmφ3rlYw Qi%25ԵE0nIE!ØgkVEvDպ|CyƋMőNypLE F$fۤk_$yߤ(I|Mr!7B@ dYibx-~iA*Ģwk + o`ֶ0Mͺf7krI|-)_(K-PG_c..'$\%b:un{ P,O/`ڷb̰T}BSt9Bjsi.A7m ޱsZ,emXb&u}E3Shc5>>=љ\yPe ݼTS댾Zw㸦K1$+`C` k+jѭF$TKQH0.>T$JK +GҊ5=Ocƿo RD55LLx7+9 + QǮdtɴKϩvݫSF-%'Sm ',:Yd4.8\d"T= 1\XH|#iL\#9NMt j?-R`*6r2<7l p%P1VZ;qEy,ضg RZrrЫ66&~ B۬ZRwH%&scy܎!e91)>P`lGy=> +endobj +1139 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1140 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 181.775 138.645 189.743 146.752 ] +/Border [ 0 0 0 ] +/Dest [ 199 0 R /XYZ 75.52 59.02 null ] +/Subtype /Link +>> +endobj +1141 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 45.106 231.221 55.239 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1142 0 obj +<< +/Filter /FlateDecode +/Length 3515 +>> +stream +_Je}axAoNmEr7C`ME(I'E] >cn)ppԍ`lx D>wd,:znU])aiSOeOVQŌwHѼ~¼<>pGAU$@ fѪsIIb>Si|&ؾޮ{F!nL ~Gw|'}{ɗ"W$Ko_4\3!u>rMD96Ds,Hj]͌֋am4!cq|<<{FÑ>&d7?tb4ZL9xTPkuj̤-#ڰ< ٚpF3 q3ϖgb 3\<F4DѣF2[|MK1?}M7=N]m)!?SNEO/ɸoLJonds~& +hQ :}$ +3z㣊Ȋ`F;lJ2m+}/̀:/,а}+f%<7:3%}tW?>KkLkL aw9ѶL^!~5Mi.rw"wP[J&p}xK2; (|;{xvSaﱤYUk+fk` +VsiәIwI2X#4[ҫ"mbFYJ@mC\b=J)Ъ9du]o蠈5$RG2α~xDx >h{Ȳ&y؟F+fc,"O O߱90KcG^,@arc +~%x ?fJ&1LuS:DnM${#UO8 k%pf'rKV/ԡ=K2!g¾j}|U,ɤ`~ (ޟs7iAbĩ$ ֵE /"Xn@_薯nl 1_|[cՅk% ? QWQfa;X!=a1,ڂ_u(h3Ԏ [[&͝!gb8iN˺ShJㅈV*ҁ1lvG>924"e4693(8z21\e={up2E @+`yЦ~$'6LL7F?m1LCym + 9;畍᫢7/rGF0da-yND?F|&]D|>;E&cnL*C%!X67B!6W\d;;ҍiBRƒ# =J?2w"36Af%)[_Ku:e &XGI)D)gMd;.,^LUg˃ %&[?r{;5&IWfZYYug;lߖLtm&k=Pf?HԺ5R7lԪZ( @}+ėLeFL3vkFlwwav E[ +endstream +endobj +1143 0 obj +<< +/R7 305 0 R +>> +endobj +1144 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1145 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 85.815 276.173 93.521 284.28 ] +/Border [ 0 0 0 ] +/Dest [ 200 0 R /XYZ 75.52 80.22 null ] +/Subtype /Link +>> +endobj +1146 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 345.709 251.025 353.683 259.132 ] +/Border [ 0 0 0 ] +/Dest [ 200 0 R /XYZ 75.52 68.27 null ] +/Subtype /Link +>> +endobj +1147 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 66.311 217.93 76.445 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <25ee63b449ee2e54123b70305f698a6ac967c8968e6c5b6f2a4bea51144fd28f9d9cb16ef98a475d817a35d25db9f6dad061103d7eb906545d7653af26ad2426bd163a38> +>> +/Subtype /Link +>> +endobj +1148 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 123.079 54.356 206.992 64.49 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <1151139346f0481d2ff43a756d42e5f4afa1beacff3ca1b7eae574997146b18981ec7743b9b521eda7bb563885b7f8a344d2371cd559b601a419b2811d808ef2d20a5236e19836ba9eabbbd2f5c7cf73469e3b9eb17970d8803028ed3fa44dee9b1319b9a3a966d08bd9018615d4ceb09137b8b1> +>> +/Subtype /Link +>> +endobj +1149 0 obj +<< +/Filter /FlateDecode +/Length 2649 +>> +stream +=h"=%mj-Ad_Raa-|)/hz|?`6]Q`pJAȘ +Td |ߛObd9ep3:6+-QF^kZ1$6%:73 MR#f" *Lzm12Q8kAl9J{Ja!QaUJ4\;԰O$sb߶pc Cx͘UvjLl}HIy+n9bi<UT]؀g%:;[t3k8^N +j-DxXK82\,M7I',:KFŒhj+w"믙6BroP*A ;Q7 էGN6_k=q~-L|aar8ah׵7}5 ~~ʬP5Upy_Z ~q cڳAiv*a0564b]&K!DXbV7G;͑r7 +r&$>+Ro $l]8W{'ժ{Qy|ˁHN\y.UMQ̉3c =Z*C{WĠ.xW8wAubYqq{AcP/7Q6OBА뜫9|dr@YI~}5#t%n& 3lͻ{A$|=ĶТٗe9RaП_uMyHBZKC[J/ruN~[zD\EY#r=mg?7n-crV44^ӏLTIQۆ'@/;+xK<6k_p9EEL΀D3te O1 >X5 ac&fێYևB:EBGAIe?/hЯQ"A>@:ZƉN4CD6D=P& +lr"xUg{7I'Y֧b&N(8!{(%l^fxAu? ¯- +} M[{V̶MJ~ G3uEh'ߑ5 \tLٶl4ЍOq)e5,4n幤e=+)mUO;̿Y"Yxrsϯ,ixKi['`fHŚqpCL{^h?;8H؅cp{kB+*-MiH('T.D=cC+\%;5W!ǔYpcB杭yO1I/$BI,šK~T0g)=m> +endobj +1151 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1152 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 178.866 266.304 186.387 274.411 ] +/Border [ 0 0 0 ] +/Dest [ 201 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +1153 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 201.512 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <53f6139ca6f86aeda650d980ca066c1a39c9a3e9c1f4d4ed71fcd8337a927cead1088447858c45bceebee14fb9563944e51244633e4f206c> +>> +/Subtype /Link +>> +endobj +1154 0 obj +<< +/Filter /FlateDecode +/Length 2359 +>> +stream +oޞEXBboj,<|4?}NUθ QOKF6N{(qM/:ivỳFP85쮢sq6@eԕmЏU ry +%FbyjBP#sa(xw_i! RuO3Xk>|r6Ps > fA)rrGK%JpՊ-ydXH6q8s)8JP;,9bI՞l(}A:7~\F++UQJ?$fQe%J)E7~oGB#.\sAUpKaNK2֟5@֢JPQ75\^l-sy:&V[ihV7ԩDGԁE^FZdI3" +ss KXff󙆯a=@A+Q#[ +o]DɬPHZ $9Jnz(AS %dȹ!5Iq%BM|~ 9/#L<bq{pUݞ4MmHJyvIڥF +mF#Z,a#zKzpR1P_pW7UG0W Գ%D]Hn//ٝ(rweF)\6룰"X62 +$YbZ"$A"2imOSRoErΒL8ͤp?{xy?NpV)a);( $'ܕ'6SpVޔiPkl&>r;JOvTʑ`ˏ^~X3Ud̸ނ3tGH>[bo_$9zP@!<)* zRKho^8S?tU7 +`G +A3 ,aS:EaLf2 E?G`Ef໾iN)cRyXf52~VRsndgYEB J1C5I ,j +)뀵*%Q>tgLܫIB)o^MsC /~gu ~WGd=~nɺ^^&Ioi"Bݿ&X}. Z[ϵT Dd~ +Jg:8K!b@GVBxU02ˬ z!o=MY@O񅤝{!78A?!.1s jTGkOV!.|~DǟwoDLVxE'{6/Gh&%Y@?t.'7-rYtSwhfkL54H{$9}$7+|T0 =tߛcN‘PMQeoC?uJ ԫnx޲}[?RguXyY@+X" A-\`>⽜<w9~Qqv Vif՗#kbm@eǮ|JbV{[b@~Y&_ãe^6 9$PW"?kk: QtQ JХh"`"ϫ ^c߈415PPI:**j?iRC"&Xx%i^{ +IIe2*xok" :Sj?wg%DP3 RoeY,Pju0(-(Yl*A1:ּ_P25_GLSyGaލV$gz!.FEͥq8]1 1#_eн`&Z{"Y.D엋b=$3\ݯr +w<a0,3PZl+(J') /m4E{7jXOW I7Qi5Om ּM8BkRE!n_^Oso%:[|tQմn O59\Q!a+']DC׍ 0-3TSXVg +Q"mxA6LÑ8fLU&nP+3ɗht$&h}o,jx y\h^YE/p

  • > +endobj +1156 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1157 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 328.032 277.453 336.223 285.56 ] +/Border [ 0 0 0 ] +/Dest [ 202 0 R /XYZ 75.52 63.31 null ] +/Subtype /Link +>> +endobj +1158 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 49.402 240.919 59.536 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1159 0 obj +<< +/Filter /FlateDecode +/Length 2479 +>> +stream +ލl]PR9P  Žϸ .L|0REr\Fp#?_q ) y?B>~S9uWvf}2:Y8Xq-MERXW˙V^0|ʦKEJŽ:H˚٢*_Lr/fH}a;u "pSp3XNngtiI6R K>߅\J>@n(%`6D3}YdW84d5`-+Ut2\{j$U+IR]=+v9[p\,.fPD '+u "*ckg\!g}w$ DI4*74QO&A!5IJ /[&j@_俉ֹr68X@+'qgDK}[nzrQB2!qWzh*MYnlXRIR~)hx<$;\uUf$c!UGEmU.TYgXkuNY{V0Tz_oL26!-|<0ь萨6 _Hc)s{q`|ieJu0V_^$eKW"HPw: xe9Zo/d&a^9ՠbZt-xm&uвzBw ӳN*6 , vʷ BaMWe[ t;F±IvG,J}!a&5hjp7͏0c*堪 . 䁓O}H `eRlkЄ fZk]s>=-&>cm1 =MoEG5#IňgR.VsOy buzzbk|0,$MxY7: A9W¼CT!Mo;zApexfIyjSA %gK8s XapvxHf!PWo we8 [8FHj]Ԣ@PNķh k }4%%u}6ԃ]JzZg2S!g +ЉW +=7H)ra X';+KGCwiါ% J JHX`=m/*_U QQ?&k3nf 9|, +endstream +endobj +1160 0 obj +<< +/R7 305 0 R +>> +endobj +1161 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1162 0 obj +<< +/Filter /FlateDecode +/Length 1891 +>> +stream +aĵj<})(G.G(l%mY7£J{ho7e}"o$rS1Z@-dny}c>˂VG رtyEM׾i|q})1}#eQoDX^'z^F` M@TU1:ͱhF5L* -F&d 8y/vIk ւ7疐c49|[5ɈNJ}HC6Ԋ#.αanm%_Sh_aLq [H7^SPVZO_:{ԖHg\uf}S }8f07IbEi~3Uq(jQؔY1 S+%N.5F$VeM;8 䏅wJ6Evۊ E+F%0*>H Zogo McXm}̢!rHH>JU F {wIŦʭ9X $OZfkٵYeV۔@}HP@H%\n7\u;`XwV{rwVmwI +j$Et~929Z~p$EDVjĭ*<[EJ_+b1,^ي]V+8hD&b&pPD< )?![hNY.y˜ОGeJT1L$;{r9ӣO64]u2*sH·~7)1h&OqjlbAz?G+9CЗ*Fv v'mPVw(z:'J2!e%B0LbǡV]<~Iv}. ^vb""E\3;f~Z)*YKX~)|Ψ +endstream +endobj +1163 0 obj +<< +/R7 305 0 R +>> +endobj +1164 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1165 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 188.853 526.076 196.828 534.183 ] +/Border [ 0 0 0 ] +/Dest [ 204 0 R /XYZ 75.52 56.96 null ] +/Subtype /Link +>> +endobj +1166 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 43.045 180.981 53.178 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <768e2c1d74e2a7dab335dbd79994350894f175b82383c00dadb4887db146d19bdee78606c8b8252392> +>> +/Subtype /Link +>> +endobj +1167 0 obj +<< +/Filter /FlateDecode +/Length 3230 +>> +stream +>MFmaDvasTx뽈 +0nf +Q3 +,=So*Ƣ|9ҜxIg[԰p~mw*]j/)ǹM\Jǃ]cRJZu*;e6aC"X3X KҳI$R.|vϭO')( +< ;@#Oi@21I,^J-AB;xSl:vXfdyezJJ )h?j3c|6W?]ʚ9vУE% ֭9U=% xnPZ]Hca.p{p25UpV0JuqГl vFEHlE$nDZUq)OUo_{Fsr$;/ A6J]fh|& [? x2VBqEKТ| 6tAyaSIG1pZqUg5-3RpYkHK_Q|Yaã݁2uLÛB2Wy־v<"sas w<_1KK~GZ +N j-5jF> ڶ#ʁ ΀"4%A3-<.XHG*!ckθi0JWw3FKoE݄}vPK eOɖ3 +LP׫*o>{9멶JtGT_4P;%\w\X눀O?;#.SE]ȭ*UO/"EH~'y[X69m_y}{0HWdvoWNK*y{ygfn+W}Ń={d\9c$qVWm5])D Rni:y \_?l8 9<¤ͨYM|?pvݛO6&ī$ÔCږjS`iD"{gLϮG iԓu?y%q;⢬[Jmpg>vEe7s<]{fv$ڋ52?k}l߷$h.b9BX; i,e dni GJ }ů!xt鲎_LڗE5` I\FP8f|љ,YBGmAY 0\J8ۚhi,.9cNF g}֤35o6ToK_mLj<[@%̎IG{TMR@ی" =5"gJ{E֊h@m20b房ie5*9WԸ43ҁE* YZ.?=G]/u|2R0}b3J)1%"A;CuE'\!n4NM'zWOo^9JytSkQ) G]+-WY +M)Gv =J\JV{9~IkO6roU=eSj^pd;PGDn}Ff:ǭ]cִqP݋,5osmra,E;dop<3}nB g^PL2(XŚ \mm +endstream +endobj +1168 0 obj +<< +/R7 305 0 R +>> +endobj +1169 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1170 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 128.443 527.225 136.853 535.332 ] +/Border [ 0 0 0 ] +/Dest [ 205 0 R /XYZ 75.52 85.81 null ] +/Subtype /Link +>> +endobj +1171 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 71.901 198.299 82.034 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <1f292a4c160120f1ab521f07dcea77d624b00c50e96bd29967f4763f9da91b4caebc3b2b985cbdcb024c4d8b66f216de2d1dd2a43bc58c23b2b512> +>> +/Subtype /Link +>> +endobj +1172 0 obj +<< +/Filter /FlateDecode +/Length 2503 +>> +stream +uK{TT.`"VeIQp }\)Hϴ(D4&,/ok.u1.tJ}Ĩ3Z^+uUUlWѼ~v@] +T乷x+wt5CH&@Im}! ?]$Wçi[Ǻ#Ywq&%?}MzݤCdȏc0$U./+87Uq EP"FYsY8E[Wmf* h4M3(ER_%ֱmך&˾>WOq~`+尀[*'hRL-Ͳj񰯞:mi֨ +zc)#~Gj: TqiWP%ar'E$ESb(MAH(#; v"d[GwwN&eچB?aYzihlXHGp>Rd-ApU0T#(*oUUGeUcfLx^P +U8kZcYo + ("<˶ ư\xuqtѫ:X)dҚא{]uMѳU˄Qk饏&F٘9rXAVUf!8~&] u&H* u=G-VF&Wk +1 +e(])moZ5`V=s٥ +Xb2P/A*vCxo%p +>ף': ɽ Kyi: lq5BcQc|^e\=E|>hsKؘܞ\0tqշr2uR{Fg4SR$jPG,M,MdN| M2q"&u݇}ahՂ&Q@Sƀ%=t>FߋpSLK=Cr(RF$t!gA2:.9i~_xv7&B@I"Pk6|{!.'ӽቤ9)`~du +o!uIvO{ؾjUwc3w.!:`ܬ!ƴj#K tv[pDE3wzI{(=x]9BG6ګu.^BǍDPUaLD tK)lBPS|񎨀\i|7@QdP66xĭE*GG/_Xa̶ D#;/u +endstream +endobj +1173 0 obj +<< +/R7 305 0 R +>> +endobj +1174 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1175 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 119.662 515.753 126.759 523.859 ] +/Border [ 0 0 0 ] +/Dest [ 206 0 R /XYZ 75.52 114.86 null ] +/Subtype /Link +>> +endobj +1176 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 337.297 447.267 345.313 455.374 ] +/Border [ 0 0 0 ] +/Dest [ 206 0 R /XYZ 75.52 102.91 null ] +/Subtype /Link +>> +endobj +1177 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 234.542 126.005 242.509 134.112 ] +/Border [ 0 0 0 ] +/Dest [ 206 0 R /XYZ 75.52 90.95 null ] +/Subtype /Link +>> +endobj +1178 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 100.952 173.798 111.086 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <38cf33da8eed1a93ac002c91504bfac8e3e6b6fffc4930f70c1f0227676e73dec2dcf154abf5142df611ef51> +>> +/Subtype /Link +>> +endobj +1179 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 88.997 328.94 99.13 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <88d6c405c8cdb1cc59b3fc835bfda647a902437262ceb5c0d4908a48beb7248208c68d03cc5fc8fcdaf94f55320c20f11f94b7a6a6d43423314e4bd492bbc899b63a8730befe455e1aefd2bfcf4942e3> +>> +/Subtype /Link +>> +endobj +1180 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 77.041 231.761 87.175 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <5c08f942443f3f97aa3fd04bc97e2e7faee357c4fd784df85f8b16007e0db9a67c264187d40cd3856ff7360c3bf68f42711b4552ebaf2128b540a2b3c8631a63> +>> +/Subtype /Link +>> +endobj +1181 0 obj +<< +/Filter /FlateDecode +/Length 2586 +>> +stream +9[?3)6zJyu’/ }rtš"FayʰҀwqZS6(sH,apDS Ʌ 9Ug^x "^Uxms/aW|WcHG vFL/i˅SQE6ja?D.ߓE)!f )Q𯕍LfD\@Ï^E@qeX@c +Isϻ]q=fM1Extj%Ʒ=gvxe$\aj`:a{n7 >1c|`A*9gTC(2Ii-7ߧshN>5#oF +a^s5C.9K僱QIbؾߖb/]⭴<[g,i]3zs/wwuI|?gC`Ŀ>$l-y +P6$.Te*C)}ǴCznHd?e,=VDrƊ_K +Y!"Ь_Νo(eSg >E,]JopMmR'5gfE${*ԄxSH03#G Cv8h˃!%Z7SagnZXP/w$,|\u8JLӏ5q8 ?dS6ML4ԉ*&J#t͉Qn1o.hɬ#<.fW;W~For_`_Ђmpe1ct#">ŕoS$zE +|G +:r;=jf/7R^ᛈтuBU:8(g].L2A!(ZMlS7 +JȀ $kJ,Qӈ B}ֆ2q;:cmv_Xm`lMEp)$kk/#D ;d5}@ 0LZBp5nh ]镉 t'v@ kH.#F]2 ݁IhtVJg cت]ŢgnC78)] j%B7mp\ Neg%\y ,lǴi`#2O(7֟ez@D,; P3HÞwdᐃ}cGva=[Iydwo K4zv>sSĸ% t:eљ9^yoLV8pbRϲ-S2rdz+5;)4FDz @ZD|h'lc+\×?7<];7ț gIf"H19I v@MG^#rgdru5of= ٞyoN)匎#3H;?J:bȓ%< (<)HblSW]̈́~uMZS7:hW+pw?~yc<9wmM{eJ$"Gř 8 +7b&hQc+;h|3/Ak8'{b:ԮI(wi2a~ҨĵYqWūx\i;I3]y>/ R[1nH"bKk#X[YbnHrzPgd5:&Db&{uYh$2ٻ kpE+tjuIɒ +<-yN2)v&.i +9A΅$uv.z~=NϬ1|R[j +;Cǻy ,/`ݙ J_䌿΄Hg4eݿMpYT{_SFv-MCC^X"L .gM y޸[v}e@bAa$d1 .b#:ЯDΖYYȩjWf6d'0)BO_?La;j Vb|+ae62B* @Jy*&+aNãٮ{lcI.{z=g8 s>({M'A-8&ܿR6ØRH XynIhPRM;>6쾿~Ǝ.iAFppiPz¯Zmɨ0d(`FHoSϡ57ZΑAȼ^g3d +endstream +endobj +1182 0 obj +<< +/R7 305 0 R +>> +endobj +1183 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1184 0 obj +<< +/Filter /FlateDecode +/Length 2461 +>> +stream +ꙦfmW"Mḍ6գ@Sԇ܀8x |Iu[^Jb~·<&!p +x޸Ֆ{xipC<; +'sԉ{̱j('v`H4]<+J!;ui ]kX53CFl].a0] l.YÚT :wpdTVOMdž(ı t?l eKN(jU + P@+Z ϶J ԷA>́Lkh Zvl.ht} 5abqMjJ^Q^&bSd_DNyk+u$l?-C#2 ϶>Z%wZӋ`+rEb4 2TpO(HsTV.wphFR[[g2]BطoN}?⮷&PO`$!=ᤃ|"-fۓ=?X^X +(K#勆13ZYN Rt"D.ZO&wyzu;5Nd:We~lQ %p#R&oƳsH[ VER3vk ݆o<r(΃μw8`w\t[#ýkr.o<G§9uEU+-+>C)c9V~{#Ě-w$km _UV G4B-Zzc";m;tiQ, +e] 5/d';`?!.OVurtxSq{YD%Q}t +"| w1m|b*QN ['S~GΩiXZ+S_0ūQwCI^A,mͪ(ԝxu2WϞEzeAi5 t~!3Bhg),zBxbd}$xx.]qf"=x+RT2ܧI}N{nTEBzlF{6{kߴf'h;_!0] ZVCah2"Rv %^JHy`Q%GɉV \P/P&T*=zFBO% ]$b O} Cbϯ|k@YAN%u89dN #L4?jr h =7jf^l4JbZ(b2"fLx۱͈ m2FP#BݰC2+Ax/ -em}#&6I]NB@""9˸py15lPN?LDՖLNnQ Pf\dꎭ yI+hĥIA:ƚa%{HY/ +6~Џ{Y:gv|Ynho>ۺeQ|ek~8Sd'˕9+%Q +| J,NoF{"w5Qנβdb}@6?0b]VQ`wкwk7T3CZ1[xW0AKfWTnxu*< be%\wuo>Z]gt. kݠV%6j2k23h!.Ujl Dj.0a1#I'XïPљ3/:_OtQΠ~M]{;z .L$)/$ɩ*Q'ѝ%yu+ (![4` 2C_y]7o +endstream +endobj +1185 0 obj +<< +/R7 305 0 R +>> +endobj +1186 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +1187 0 obj +<< +/Filter /FlateDecode +/Length 243 +>> +stream +:ϬNB{F4n'0)<;7wM]+,50?<hGGj0k0 + +9!,rv>3DP9SƻHp{SL?\ t~cW=W<Ơ$sSI, /{OaYɞ/|;͊_ϝ}\X^h=>t8}8eA[R@.i NsJ@! +endstream +endobj +1188 0 obj +<< +/R7 305 0 R +>> +endobj +1189 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1190 0 obj +<< +/Filter /FlateDecode +/Length 2971 +>> +stream + VO̜d4Sf +ꊪ+tu1&_9`Ydmo/O\g˘q+qo8S=B3QʟD>;1JAu-Jbl0Ti%헣<[@W{#T@,!dh8 +{InqT1nDz/~7 +)PpMֈa6ihyt4ec}WkpFViIzeE6-sUTt3b5~̨ a`u)-@ @ _\U Ed[J(J%TP;O-2Q(f9_JSsG (1<ݰѥv4"m|*{-jn)K0%4Jfw&%9#| +UԁR5!mrٖt/?B`DzMM8`,澄IQ:O@1'R]BAU;X|+}Ma_ƺ a=m~jG!TxKn"5iµUC@+z5!0Wf{}=Ԛ&nr*o.$t^%>gIK%(#L dASR#ΣϟBґ&SzҐkOwԑN%o[߰.áy]{LphtPrVH B:5 d|rm1†0ג ѦITIe`eTsnVOfuu;3 +iC:G`HXFQ:~%z̰g0=fG̋sUJH+_.> +1=z^ s- Ls&u%% Ēh^J4r@k|88j< &s( +T?ŜfvZQ󊕳#ǫU{XOЗ2f Rp8T-j3Njj +:ƫyI}!@MIe(:⏳%~6{$1A2yuoU=cԧJZHQ "HvQIc[tշ4RfKD|C(xX0mPȈkvzPR4|_jU +̆{Cs&0! +"xr ̠ +kA$Ӭ +I + +U֏#|.|v:xU46w=(~ǻY?"M+1P7d5dA \=}h[ @Y;粍9k= ǰ4k3 tƒŪx:DFKea(CdUۿR7l~烒x9Ehr U9඀x8י2C6Nu%(T^o3.>F//s4`gB RF{]48pl5RIО%H+5 z}֗5SabD ˞ƃ w]fHMj:nElKJĚDl fyeMV}#EԪQ&QPJO(R+/^e:Ch$rv=%}P5fZ!]Lҙ,#K1"z/:_u}G鈡A˖R'G#\oyRU4kxrO ޿sl!O4 9cgOL-:A)@*wK|N(ђқАxc$?z_HUdS"O nVՖFNyi $Cy%j۱:@ܹN6a7L"vNBәB׍iozU0^mCuz#02HR2<%iR vxWYng/"pw;$,,+ +txšaS2N1 ܍\N<(?Ue=gP +]@2kzR@;>(>ǻ߭&ֲ̔%c8ʭ1C>* Xռt y8#3^Sz&Š{SLjǏcP +-h5?R*:eGNiz3q%B!"<2֏2[6qfVD(2d^<9Ppbڅʋ17c:q& +endstream +endobj +1191 0 obj +<< +/R7 305 0 R +>> +endobj +1192 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1193 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 304.604 443.869 307.67 451.976 ] +/Border [ 0 0 0 ] +/Dest [ 210 0 R /XYZ 75.52 72.74 null ] +/Subtype /Link +>> +endobj +1194 0 obj +<< +/Filter /FlateDecode +/Length 3213 +>> +stream +M^nߗǻ-j-U&9\H&QSTmҩ w /<@X_./UL0Pl(i dQGCW ⪞CH +gQ @ g.܂:,(VH\9O| `CrV28{ֽؒL$)u]^oVʐJ'Wd>8֣G|$6 sK'kO1T`5e2Ao)+Woy(lKc{^5s Fc{h=c챴K]Zs'|' %n,U0R)gV'mvB25z>07 3ABJ&^~f4DSє2?^X08 O~?D42+)Rcfۜ*{Q]{Thx +KA$?%zخF"Dozʄ2Ъ,®#RJQN, m6_8WbC[|0}[2p!5qy|^frYݜ X:հ+|4M̟bTzCg61,OL%6p24K*7 \'Wҩ z4.D !3J,M9 a{qldmYPx*!y$ A\0R0FAԠ61f.I$(R@ф<%ʼnx^²@T+ftCOln>)@ecWHBں;QfA?U tYv??7T̓-: a9SIF|*'uYYqF1{uvh1&3bTsutMGS̗U_dq; 4NuTkƨ^0("쓻CVsĊSHD%;3ܢf <.Jصy {1BnӦ)NS֔"ibCۣԼ@dCT+( +Fj/?=1Bs[ iI1.8hBa}qZ8Gi Hd)9A[;%,FQ[-;ƾ@U)fʅչP>9(Lܷ.H>;59H$7uo +7G1Om0kf@^Cmۈ]B8g>9Ao^˜de@.t?Պ\/0K @-Y^.LW:܎+6#ޤDg`0 5;vݞVǨAQӕ/ ^ֈk*Ќ*ֈq^xVҨP. 0p(,V7C"i|aB֕x+d[pR6ZC>DE/#7eShcOcДjKB&U'N[ͧ1M>LWnEc+x:R`|EhG?fRsq 1Yf|NLӨpB\b F |jێ ,9EoFhצQNq,U, ⱌWŕ,+#tbKHEa=DMNeZv*>B1ձ3B˲u֜]5C; w}${ >qUSp;FE} BN˰J.ɜVvy.\qc81n\b5>R@fS:q 5LW uSN +Uc^&퐑VqX @uNނ]Rix,aTh@*B|n}G齑IbQGnƼ@g5yjV NJ6O)(݇rOlj9?'jg Y}Re=9<~"LrqG YȂgJj!zGIhcO|vK3={auHD4f}A=!_\i‚aԋrf'/{~^CNk}%wǙ*faNfvt>>_{"b6Y)ޒJŹ`?ZNdÄLw?[zu)t^ o 'HĶ̲y+yjf`u{$_z"QZ({9=(0'rll3C=.,MpH +P&sH9CFx5>Ŝ&SBV#S`(">a}v\2t*]kBوeM9a(F~q(,áhglD->`> +endobj +1196 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1197 0 obj +<< +/Filter /FlateDecode +/Length 2938 +>> +stream +W(IkXlH-r҂Z5Yq6p_FC2+/4hV)UTȯS5-8]O}G4rg>6^ϝ]lModc(Z&;⍆1ʞ"zt6+ S̾cSfS:ť?WVQs sPΣc"Hϱ̗l= 5SS&|X9,rLkIP6Yj!/B{FodBI_lR;cS5#*Iތ+WF*ʍV1: fG7\2V(GPSz +wԙARέQ0IZNWGtC҅BE۱P?,etEFy + C!o=aJcKh{5.Tˈۥ!l,BP6݄v +jy}" Y)BM Յ +5TW@  ,Pۑ4|F #]rۏkh#u!Aam8PHO\ G'ͦPgI<ڟ\0㎞8iH[eut&aG<ϠruWʶoʾSnxϬ1p:NSӼzZQ<&חv e{fGmRq}|, CŜci-37n{Vwz>p޾ fHE#$^>s*8yQBþ2]Vrr^|Kȟ8}}ѤGafjܿnWC+p-@cܵufo+ {hh oOs{eg +Q& Ô. QP&^,+R6{乪Cmm0~~ֱ@oU둪Uˉ9$Xf(+$W H1?fvӇ[v0=*~hX[.F}"f6n!$KGߤUzdM"aA`q!H`<7'IA@H紓5X=w*1?3ĕz03LF , ++eu_/#9u0`6vjO/e[1Ink (<m *dp.z%Aܞed/`|E kTw`[uIweO { rў꼃FfN> 뇕ut};\7 T&&N|? ?t_!l`SHHi+ϖ\G}W*1 ~ 4(~ u7'u/F)槤İ$UcXyI5{_);̂~j}D`̂Ռqj\5cm7R+iv gAсaP|.,{HhOc~3yr@Љ.`G1& cޣ||RNd6|!20saIwZ$FhmI#v8]ͨ yňj-O= e!f5cKmIP&A4aA4FrWbT⎇I9jo(O$/υ1d U1+$V`O~P KF6vá</iut?o=B*C +fȇj 98^!j!;TWlU\r?fF1IMΐI]=tirUXI $C S`/zU IE&G;v68g4E"FoǶn]Q7; "ge%[ M+[hO =!D,R(~B?k4pݴȒg +endstream +endobj +1198 0 obj +<< +/R7 305 0 R +>> +endobj +1199 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1200 0 obj +<< +/Filter /FlateDecode +/Length 2218 +>> +stream +Gw ner`.Zv?y?CF5w|J^6ܤ*(%~: +uLV +8бk,3̲oyސkA`mE#7۱tɕAMb\G%@E jNBtO)`O>vNP)̐! cRw*_Ͽiގ"eimQ3fM뚰G?ny 悲b/ԄeSםsYq*1xE{d-R局* bL$? u\xe s4i^%:;ɊMS;z`V"ReݯE][$-H@o_})r A}oX6* K#ϯ?U]>'|-^m^s$gtXA'Ji-jNƔ[JTcMNUCX%+@&eq4m ωG#'!lGlQ;7)Sx]E%z #ao{Cz31yq;HT3*\|PN 2"VXX;%U`vT_xV| o s"3"ޛQe'f$FAt9AG0.F^V[#\>S$clvADwDZ?3X!3iGTh nC,pXin=^d&tQ5׹BrV]jB_}qmo#@Q"K+m:}߷4.6lI(:~=%|u0Cbp®\'Ko?̯hڨi]f%VWJ_".Z㻶wr!^卷K] +/oK2s Rw~2]>1D{&φl)743xxolO\L%8҂rL]/Cl]2޶{𷴌`, +{ql" \xjm+eH`[k/7b}@rg ?(;#ݢΨ/QK{ĥ?2#u$f.VI`Ggdž[^hf|͇fbI $]1f@*(˄:;oaQ4}(, +"«#x]]6bhI,%U_B.Uμ.O`%ZhщtJX!4h%ZV/I/=B'x-R=a-}®AL+ch 8A-u7S%A9O%$ 8OǗ&B6-j 緶X짟\75m Jϸ-h?V> +endobj +1202 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1203 0 obj +<< +/Filter /FlateDecode +/Length 2893 +>> +stream +A& ϨMs5ajev*ҥ3d-d7]0Ӷ)e!lak5,v#P[l#J ԫ@M2xv<s% J?bLbUJ]0h\` u{cn'D~64iay/q9qxlpA.k}x! yriQ/?%zLO5=hza@#<ʷWk۸'!)c71~}À=o#AzGsz,9%X+ f\GZtmFSXP)Trln]xY9 +cy6p"_N\߃*ō5h|=v! +c9"atQ|:1N$}@k+[ǧ`{XW="A} @+_L-fO5~eӝL؟e=1h5 0hatkr4E`o}CKEŧ4LL);c\Cݑ\ˤȃopJ۳:;~3{PBgdRL{i=*/1wm bD{H2KMTp*U0u gxyM[k4y FVanCFC zz ͐|V.Y? a&( aJI^+6U5%]":iC;k̲`5a%ˆta- !@b)adfL87m, w-^; ^3Q{ +(<vj +?QΈ>{KUkAϼ_WR/@$ 'VjRrYnUF,: #ݯ}NVb^ӛbr' kYUfQKMn>E 9aUD@h^=`s_E2"}ɔi[pNP&|ReO+y[@DJEKg)ΰFoNT \QJB"S(3V + tCRj<3k3W"1x_E,]Nm?-1M/vT֦] ;$NՍ%zta sg+0V82`@GU(nxa};)I$sZ觕tϿ!xҾ;M 䕡'y=(T)fjhd]{ib)78! !mqyXpIeLDo1Ogq Y+!E6rwBFG|D>k`* w#{1йe#qvƁU~YrB&Sm.f; iɏ']" ,HJvl4$R}ʌԪSј$pԈHzY`wgezm>g܂[q1NJ /0[y ;k{TQPlף7x*3jz]Ɯ`J<ϻ5yCf1Sܟ1Y'zr=ɀHc,%]O54'ѓ7OtddwY2*_Ddr17̠x W =<=F㚦m1"7Qb+94}SA5N1t,̹xaYL6T<2s;U,#ŧݣ*Ab̸w39?"9{< -c4|:œ]KCS9rvq)ɷB\Oʙ\]7)gUr8.y]NrA't| V .sIUv\Id7y=*SYjRoՈ7n+,b=cJ0'EeXtc$Q6Q·moRw' Hzc1\ *OE(sp( 0+!2M{(+Gd׃IU¡< ǡҰYKr8g>Yy3_Ŕ + +V CҨ^rQ9&"9a/۬hlhUn◓ޣ8ONW2./o *B¸_6Tup{I8%i aVoWb?~\E DLJ3s`zL͞БLF Smc_ uΘ:Tgj''$JUKkQTb3ۗcgت/ sHh%,T/&͑8ϓW$.PH\yYeCi,^'[E=ބWJ&>PҴ&Q|4M*3Tb3(Z㌑R`ژ"?aUc4  +endstream +endobj +1204 0 obj +<< +/R7 305 0 R +>> +endobj +1205 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1206 0 obj +<< +/Filter /FlateDecode +/Length 2991 +>> +stream +^Q'4/pkpiz<8u=B (]s3h ZE 1 PyvWM?im"XLn[DRx"Y\[xA|F1|ӰX׉GLT90 + ɰ.FCˤHu 2jNlmg_"3e)n;')YK?XBBgވZ':9jm݄p3] q%,̳"Z,/ +uu gdo] p),"!QAE݁Bco򽰚j<4cڿ")`k0GUji +W& icX $' -xfHй%\A/1-U]ښӖ +RLoTwR)8}(gzoU?dqU`ڥ?ьΞe#݌R$m8u8Ь=nIT;UT`h&iሲ \cW1A;Tg )=q]*Ejv]YV%i?v.@}-~{re.ln󳦚=!gEvܸhH9D S;yI) =:0Ձ>\0e=L 2Mxs.c,=YF6&f8] A~ؓ!T%7eb0xg789 +շ@!"Ӂ$ֈc1e1 ?YiDߪ7 0}ӿݽ/6a산X㞏5@2OT?3̌ι7ގ[' yG/ʀ;::ZB)VV 0*k_LNH,P<0m1 _χz`KEba1Whk˞ Xx]@֚6H>8@8"(rݏ{{oI7idz7`EeIs6MAyTգ /N='!ZE0ZtH(GOQ1=1|GY8q(d3 ٖڅ%'SS{F?lg3MV KxC&a%'CuL2H OĆA/P<ٻ8x:wG ʞo-Ẏ qN.r.3" /?]1+Ik + v a(AHݦ Lpb'k,ޭJRŚh89t͐_VT y0qXlr@au#xC ädlWj~9[%1Fcɔ9+&sm's% w-wI]<(Cj zy%hT90 7- y܂\*y;k7j]CbJT _}jo.<ڄ3`^!] +ӥ['Oz`v$>T;- Bɨg"hxх{8"-oIĥVaN˯۫$n9Z͉9Ul[˶JS +w !xm$K72WtoKG-|V + +xIW@& Ď5z _m s5d|1BaGD ߚ-=N 4\1aPlH| ?Ft%`ݩ:nL^Iu%uMk̸?U)kv`"*gMS]#&]9KKlSC+>F,-i[YEƦյL1 +jYmZcc8 E li7t0KSzu1֣uǛSNx%(54_K.JnZ,|V.4X[sG2> $5''}~3 e SZ ⚍Ťdi$X ⨂љZjt`Z{OU?Zc2OO # + :[D7: '؈G6aм"a(QKpL +VTS,WLs 3diMS L@,yrSb49k5'"Il"yg4G$f(hmD;$ vOvPm*V~?Do[X ,Ub%] /vf^*rA esK:MեB:[?gt8j +WR|B5|;c2K OmRE \/NZAhR4<7.%mm\UvMM#~ n>N7p4NA:G;N^ +endstream +endobj +1207 0 obj +<< +/R7 305 0 R +>> +endobj +1208 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1209 0 obj +<< +/Filter /FlateDecode +/Length 2755 +>> +stream +=9UVr K1&{ɢ-+I=l3; +ߌp )2"V^` mm  ow1ˉOo[ZcL+"+iG$Θʮ 5Ξw'qY ^[m!1iow٦hlX@R[8&0b^~yÿ)LzsUA?F*qٵ?ast_>FU腑Kz 7reY/='t%UaS*Q'\˝I KpiBÇ)qK|\~6V+Edع@-KX, raI/YYNF$HM$ѡeاpaߛĥ.Mg3uNئ[QȎO`#U{dI|h@O$eBtx|˅U +Dg\g#G|KāiVE ̿ƿWv։i5 ZZ|C2Kb S7 X4vR՛ٱ7+n/3gcUCݣkV҅T)N, N\5>DSY F Ϳ쑗-X& LI(-y<0sIu皴w%~^%JГ6M pY-l]m9ʱ=Cp(68@:lֱZ Vi^n0 of=Nl\8W" 3^&kg+Ƿk@05~d܃-0N|'/εS;_ GJЄ%_Q]!Q nqz]ܕ{t0k6RM;FFhO$?=Cߌ1 ;ֶ6(Dn$g(S P7:;O.JLVx7Nq`O\xZ`%N:tA}<i,ke1>3)a9]htN/s) m"g4$w?3ɍv..]i(>c!c~.΂W\;LWlP^W=͒`#­.)x+32&exx4#0B{tR# ċRV*@XH4Y\ĦԂQ&и4ehiHKOn{v)[, Rma)7dOk*ZU}mA¡Iи YvX_R J12Wu?г.z89> +endobj +1211 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1212 0 obj +<< +/Filter /FlateDecode +/Length 3068 +>> +stream +qPh }o&>1$^8Tۀ]i߫0TCCtqd + x +“Aj0*qL~zc1xX=UR'g7.8/Ndvs!E#LO$~D֐ MH12PHZnؠmk[:)g?.HԞMN maf2K0o6Zc 7D[Jhx&zc[RzQ[^칇)mR5,x.#.$>EeeUBۈVGO4 2 ]qO,{z,"\p9vz*_ hF EV"sc3]Ω0';X)H J\ȮeR@f:"esgmFAN.<#L_#{W7vȭ/ǒ lŤ@=&ReI*cm@oNxla~2yvIjMkPY4_QÐamQ敔>" [횬+{*5mJ*Ο4ZU<$aK;kwf3QKfrp[@FL|@Xs&";5gnEؾX22NL tЊQ6%,9 Ui0ri>r$4|8جzQv+- Nj5 ;Z/Wͻ$pBi +н|KpP-2~yjé[pOMq1-dv?~&OeG!*n nz9R6{0oEDlК{.P_cahkLHzbY'qQqlJC|2EB[8~%Ysq6NDWn $uǻȭS38(1?FE|eD﯒#*/oػng~x?F!WkeKi۬w[uCEl4ZMEּo\LO#N&W8WD\3ZJseG\,qm2as} -aW HlCT*;m:s~3g +gX ++["w>}+8"PmiE ^)=o7-OspT؉H%\Mcf08]Nt.].і'.fIA#{l]--IhŚ! @Oe8H?M;"x^ Ǚ³qUP{]{bl5=}3̊SG"%lI/WkH/2B%D- 5,?A-LBEQl<`UрbUO(6+Zj|9z@V>kHV*'<*Qw'/ _wKMySB/GEat?0 ˿1+&ak`Z4C3ި`P/Ͳ1QEdfuEP',T-rq;AEv=o S"8%fGbGs\tb +s{ +$eP\A[KC +tEbRRg)B#{m'ؙtz=[i7pm rr +#4r׺_h-b )Π֩[(L|9懃w)O?w/11[h`mK$YRF8)LxE* cqTB`On=S%^ +*udD蒘[fX dunRh>E +glIs ~}sG߭;5oGV$8i#ug@}S~ +Gv_OOU 5b/'P? Ot!ǧ4e +<7f;EHxjgP2YqB r0Tx=r + 8C\MS/u1Zzn_M:_ˍyyh0y3wR=Eΐ2u&h5( ?~*7?y 4hnK7 +ܖ7~v[н1Tym=%% o &$sg ~ۨ,_KюKϒ9 @Dutůc+ֲ"QI4xOQ6~3aH שB ^2= +endstream +endobj +1213 0 obj +<< +/R7 305 0 R +>> +endobj +1214 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1215 0 obj +<< +/Filter /FlateDecode +/Length 2869 +>> +stream +0p%-@׌MQ20l +:r<H`}G[oF "V=!UkY?!xXFu}{(muR2 Rx6-!T[q'r?o\J`pʊxr,=Np.f8u + -BqTxjowJٹ=|0T=up8sR!ybf&7Y)W7zQ +t^%I:`:~x\6}=;>uJ+ǜ&>Uqi^0 QϩG4 FJ/y\du&-5M@=R&!9_C@"ڏ˿59 cyjC4?y?{{/ U%vt&Djf ,4gqoX7tY9;8-0hB"fLI x[6\Dt_۳y#,g-ԏ c{_ű`kH;ZSomsnT +-r6ag z{ f5W:o'A/~w|Ї-N1k;ŋ=1IHzpkT BbƇ]=m-x7|(Gڑ^"M>F{zd7V;H{&y݂1A2&ZZVY ~P$Uss02A.7hq2)L[MZC'l{ +&6Z `HF,G=?NS ۾bnp$PZ=T TrW-BE`z@.7aZ@jd|Y ImXKbf}$`4*bGbtQ] W|$ű7s{?ۖନi 7 it}i +Sctj9J Po+ nl\9 oXe~*od&&&p b~C6xh0< )(2;S`(6B"w6WJ,&ۂn@[HsJCUu!lumd}RQIe,y[D<¥T~5O\>k95#!>w Nb"|B^CsS =Ch6C(YeԏB\Dq:eܼl͖|XXX+;Q%h8a8j=1^Y!xzI$Nώdtuvz9Y5vBo $R.m&^ȣ](R t6(4R3C;MH]:ougq7:96 Vv[jAwǏtXU_` 6;q`BHAjCoqOMB2KCu Myw]?Ѽ/QFX-1 w"i6y#iTZC5P J:|Le[ɗ%7v61f`N} ފsrl\ƀ| IMuB}Ѵ@̲/US^z"f+ ܛDd e^3L P̟Di[f{ { %w#3>֘hapNSI6<6n6LّSN"(_k|M^I0}p]([MsXo>3MP|^Cmb Vy +Mn\Z>!BHA݅)l` jiUԶo5#4N`K}pmaWjb)b4Gb}(rQ"(hX=,v|_Ґc# }>iYl `{{~Gt;!/w/YV@U^svow城;9oNSDbzKIn[Hdc&hus~f9fEև(!{-WuSIBJejLQJ +<JD&cݳ#Y]ˑ-oGSɤM:VZ>D[r/U >D\=lȇ]f=%C-, ɠ]κd>bH ;˪xv$!k^Dj<;<唛s`˝^J+bbsWI=yRV2[IՊIcν|՘R_o[x8l3.…'gbX̳ 9'IIKt؋n nU8q&0;SiÅw/z5$q,8D@,Ηpr8 G0*@ 1yn0w!CO1mUܲt 9vNG;Sqkb CoJУkn%XQO?~te֥\ +endstream +endobj +1216 0 obj +<< +/R7 305 0 R +>> +endobj +1217 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1218 0 obj +<< +/Filter /FlateDecode +/Length 3403 +>> +stream +;xx5Om˸b5Q9'B/=f$ymk?E +%ӯ%97mZιDKv0sb꽕$- 2|Wo% X |>cܯ(lq={""}ÿ߽?OcP̖A[7lV?=7s=?p53pD_$/̙L^+@kШN4{1ͳ-: Cf2PLp!̞ː^0ON.6Қow+ ϽK>_IK{%`(uaS0:Lztˡ8 CZ#HL+ƀ9Fҡ"fsA-s6Eu*ג!2%3dly< + 管X&YƘvGZ$?9Ъv犨R;׃z &ρ-:mh`^K-!e8: $ 跧*:*s߯E?r ^ۃP jQGNYND=@dyE4J!e0D!Hp/ǧBWo0Z2Ne+74D'^2 ? &C a(RDP[@_l-ug"94D=Ib\Gc2\ًzZ*En'HNZ}wn} +З"3h I p* +>Y*.O+  +c)uKW7-`=>Oqe-LMpXQU?H'dpZ\ZmKc]_%oޡd!EFTO.gh=$m]"q {Q\g@Of,Ճ"@VS[m74%!ƟFʡÏӢ, aD0h?PP>#fI//5g6 l2]*I,:pR[2U yɗcsXi!ıX[T5,6i}Ԯ-tN+ZgQ:L ZD_w_^Q" hN?t*vciWsewklz=ؙD DD7!fs%<y}fDM +la s:vM` ZaZ#ad k`ׄ3˽ÿvB),r\V龄fH}smAK>6~y_#]R.nNz%z,G' % S- ~ +f{8E)LX޼iY=VQ9f8b,|IO)T וȆ_cqy`W}/7fFzL(BE>w zeOiAw4#!|%(97ii\!ç)FDC8G?`MAڤ=4Z{߁'Q j^ h ׺7C-ͅs@:h=AQa ,`I0D<}c2|ho@ +|=RGS]yyD~[#U;dVx*qy26r;:jHOxd#iz5ъhd9BN1(M-yg胭3`O+篰r :ű&- ~㘔†Ѹ_~k])T{CzJ9/ASAldkCq'[GK.719f{4[kӧ6G3ZQ! 0rd,͌_~fIp!!o ɯ7gQQ8#0PB+PYiKUy @D\`IPOXJᬔ. +o׉^%#;<,k.hGYVt&,h2RȨ ~^rΓ0}ws>+sj[ѓvٴ44[w!9Q4.Ҍ8t`6T))"] +{ 2(k@Thf݁lb4I`R'&ȯ[%4a ;.Ymb;ťR*c EM]bJ=0BFr/wqE;fZuj(pci4/1F8\ChO<I0,E;GBlm$Cclbev`I6lY@v!a*ZsgFWL~ww)1Fo &썂zYӷ}*=h +6tdՌкy"&kP02l7T=s)P<=7+Er,xr5dE%g;yDPgo#7~_}8QYV==JJ/~XU/K?K ѭvë<5S؍9+|U:ώT"|/`4Q]Ѳln(wM''X^ǘ=y +? .LehBO-FYkAbv(Ә9|M2^A-MSSi<<K\xLAߕC 'zֵiHvى);Kx.V(Bbn\Z/2٨K*C`~Ls$5Ԇ1eu* l=ELlJ2g2n)+tONNaU DoQbPI |!>#[p>~}{t0K-V|橠.AŊmIj,$HqO~)M֑l/A 5) :͎> +endobj +1220 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1221 0 obj +<< +/Filter /FlateDecode +/Length 2755 +>> +stream +rhPeh% Ϊ"`N緖m+۠ۥkD ...>3ѤqimF=rT2Y4D٘j>2*r[WTɂ9Ey\gƺ5EXgQT5{Y `i${=MX(︯yd[#^;jxp^4-~ ^&U + +Ny'Up5PN}-LAvA3]o&|ͺe ++_7M#ڛeԎT=0]hf. J+׸k45'.(zCb^s(y1>¨Hsqz/ky>D5L{M@[ 1V0ΡB?zAɱTo"\= C h7Ùn7滪}[]"iuDYM&"s?G"xU PQҔ uKn_^2dۆ%%~._eAcK9ivf@Fz3 +/Bq$s>؞2]{6vBJWrҹ[38RX׫Su?K?A;i6NҔS )%TKXܫmJǴeݺz3npMKO6?v}Q=w 8gJM֖ +K_v(S/C,x\X| US"S]z N@nI15]tX[2jPc|/ +:/3 4mh1;,I)y0xXC+Ӥ;rJ L٭dtę:h+Erb!جٷl`ԉR _调MV+BaGY[::,E7"[%sSx*$v,(b8`5_`{P_%{vŲ{\od+lύCsh)Fau)wReBҮO/b%g +Մ Zޕ4[Vena%Ct;H^ Fd=59gpY`ZVƂ~.8L +t?N?,;@C`sRn˱sa3"70Sµ&ݤs#kNRSdbClL:'kչ'I ^o%y;cZBC Z+.^rm Ay+P$M>ч5fD"F4Qռ*R~~ +t&S^78=-@j/B.Gѯ$CJ rXҩ9HNC "Ҵ5IzOQ@Ǻ3|Ξ삳_v8;CYp W^DhMl8U c)l셆!'߹?ϸcVaC /9~\K197WVKV` aQq.#@r%[6xz šO bH8Ĩ~pKuj2]77K_3u_Vozy2I]^0{m+TERSB~*_ ̓y_YTr8>%Hr +P\1o?x8PD +[r)c +f9HN!XGʹ~k ϝO6"GK%R{'G_cښ.yjuȟn9cF{ec%'i|'< +endstream +endobj +1222 0 obj +<< +/R7 305 0 R +>> +endobj +1223 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1224 0 obj +<< +/Filter /FlateDecode +/Length 985 +>> +stream +$'ô@ofr no̸&6[Վ >\ 4Iɻ7'}3P`;amm!Wmgz&tD-aJ S5aLۥIP,ͥ6Х iU9&ŋD}GO[Axpk1dz|t \g WWISCBMa;[bJƓIPUQ<(iIݰr/H.s9dآzq7yY=~|^N$v(ܞ'Yd)hq o7v⾷&+@1NtUR0C<9j '+pI|V 8{`s>ֽ4Ozc+2Q'p 1r\u#:|lL\t 8!S- !ˏm?ȷc@S H'avYR~"rGT#J\/$Hܴ?PJ.e{wYwIBT&?']STjjrFL7p16P+\rƆbLmoe2h*n:9ʀ-~0WGs$'hqE!vbyC^XiRϢ"GWP 6!MSQSZ )OC +%fU⨼2h \^eʜ>M+AF +%$ +endstream +endobj +1225 0 obj +<< +/R7 305 0 R +>> +endobj +1226 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1227 0 obj +<< +/Filter /FlateDecode +/Length 3143 +>> +stream +l{br 0076RS)żYr3e#rՈ|VmFREew/%=@;H} +E)@)&YL@JoH{Pa<.={hr =1YYwQ!E\RǏFL}5og0 @>ONC,aο\ÿsS%&Ⱥء;LP>Qz+ ׁwJCZEND3g -J|o:e#vlt_G:lV]WK3wyý8(ImC4%aDWJ.1>d+]$Cs>2#jSԥO ja PnB66y΂RL'1 DzMa0s6$OY B~>+\UR.nmcCM)ui 膥 OL)3CbNQiujk㒻uǐ9#oᄌadPOQ8P%}W)q`f;65}_*Mr Яar:DQB$j`BVH4%]Ioc 0~7xϨiK¹&CwAشwrbO_YvFSݟ).ݷmw3WGn0ɪtޗy=]\Blm8<ܿ: >=f(`\K ?n\8Rab{/ .fa$"s-d֒"4bBP9VD ^/ƂTQ#{B&6zsAD_שBKww1Tr O|cG)-J@_#7i,kO-~-+E!).xor N!PlZ k;IZYKe 5qDmE }VrTf&4Y[SO'zu.~z~dKDaی61 #*Bl~D7F6+eؤmoUs*͛$jjt^TY [ _ AYf6J`LFO'K:rl- + +GaT"SlI˅`XPvSK(617 +[sϚ" cy?7]QFhɬ0lņΌu~PPw?3nJ]+=5w9T4hX)OXX.0AGn:5#l?_.- +-b剉*zXl%QuŒho6w}cEdpk^ d‰ &hQ-E6CE]3~ 9f>JP +&K 3(voQx(ʺ9yT*ƴTG|a8䀻k|hZ?F#A %唲g[*$aB-f KNV MQ` 7xvy@s(Ͼ_]eY&bU,]AGlq/.D[0j֧ZZ[0O }9=u`goT'C+5ok4 O㮊1JJLVr?fn'v>Ԍ;|#Ʒ~URMҟ*2( ?&[pf~SVtab0JoBŠtKI +sFQGiѳk>aًR>j |U&Eˈ$5*%0kSu^hGO0'ʦc ݅紅f̽.۰ =⚊8y6yb`ZYڪIq L|=ǃ24O=7_n FG}7—y-F{ ~h&4 +$k3zzYjX|x!R3g0 GJb5Ykg24rOv,q3nHY^ 6;ft/-XQ&Ǔ +0hYS4;^g;6ʈ3ݸ N:428Bbr ?Ity1hlCs8eSMYؚ 9XF;Am+8!2p0vԘnMzcmhWl:׳h+R\HK;U.WOnT'] %@RnNXI Eي4M+:cWb;8Um< ^gfTr*eǍ_.YoUFJyt`!DDhiw#^w3uX{~Fa63}JO۾ڙ/nX<úrDrY']m%>]Eh\|g4i'X[ԳsN- +4W3\⫍μ ix,$P U!JU e:iY*[  _cG; fdZBmyPT xyOAQBrBv0{4=HÚ{>FyBH +endstream +endobj +1228 0 obj +<< +/R7 305 0 R +>> +endobj +1229 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1230 0 obj +<< +/Filter /FlateDecode +/Length 2837 +>> +stream +|AD9mxYtf+8HXp$doM:+)s$/?qcJ 8ݫNKmCWsv/SS-/"@wx+5|ewv[SzbcDp\PS=yֵ6JRꤷUA_΀X +}>e& !`w͖Z4UEuQ0DdPso7`&߉kjG"$@2,ӥ5>}hgGOMKyc/\.l̨cPMoqfqbF_P3u갦ye)"сl$"s㣜hk|Urwu _&qy>;@( k[B&[|37Kvs;F<<[Xu^ip5)gVA^Ȩ?ɸ7@L`v, 3'-=+ܫ02Gu|';!?^|,:nsx:MÔwW|nZ2UjҊfUu|6j[uY$+;J1Bxrٛ-l7>D83!@)@ +V@.Wh$VPA9W7aWa T'V;V>#6o/?6K[UNJL^Hυs +_?Q [ӶLnY|Ķfa(F sWY$Y+ :=$piJI+؛ωVwKng uJU۟>xXrk,aɋWzPxi,um 054ax)%Pϑ}zukP!*Ɉ1bujWqLZx.N0ES_;ƈq(itX?n,nlAizDNuOMvd?[B%}yo}"̢B]HXq//{s=ך/e4T5>GY{-rTxf50Ouo_F~G>e h~&nA*-]v;oWbfו&mX<9E^<2kL(Gk>)7/n|DŲmfOisl%ML\3HHAAdxaկ爗 ViB_Ad$xk`EQ*:&⷟f:\}uD w֣蛒wrJg-XgD哀.774FZ?G,*JF~_sYQ8-\%:]GTqq^=ڮy:EDk|W)=hǁa{dLaXMmWшIJE0BDi)U BЦeGVE|r-Kvt--ɲ$yg_ &vCd{d݈ T2#iB.ɻR5 O>jvgP;+T}t+ ԎFUZ=w(';v"H:#A[o@F|@S@A^flǜ;^X lt=nms#bU"@2y--#Ds<"mGl: PR6 7'4㤿c&Iڭ\"aTV+=NaOľ?S5(@m +3u!ASb8m[><@)J,%}5#L?H؉_XqnVJiiʕ ;PrC,v5W]h@Y3jbptY."B*;v0J$q#?a4%b.Z.a`y*#*blDM8~}ȱj'Ɔj}pJǏFW7XqdsЋnO5CKiC-h}-fv^{B[=6# T ?/ZAkyM "dZk+rg]畼*|"/ "k䚍(Z@NJ_Mf_fobʉ + +PP*Tjmbt{Ye/oӼ`s;Q$FUGhuK +8hj5.f4 +F<_}lDQ=E%nx)βͬUdJ.N]A +Nf߳ET$YiRF\19E*tƌ~'xy /a[ѧTXHePt\.P-Y¼IzT<u ?AXrQ MBz6AYj߅gLL&VJBr3QwaMN! +0I/]`3תVw QVSH?oG}F]ҜcD{J}?ddzY|o~LpG@fVPh_w`u-)c^:B_!]!1L{z +endstream +endobj +1231 0 obj +<< +/R7 305 0 R +>> +endobj +1232 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1233 0 obj +<< +/Filter /FlateDecode +/Length 2979 +>> +stream +Ut( 3?c5sׁԡ?&yN{s5<>_cD6½pu@-0zaܫhJQdf]PFXݝ0.HxkEO6rJ8H$L9kyf k.gdt@'e9Hću}u}&I&=ueO>ȔY?u^qmEYV9_*M-g/& 5Q@kChy%°dwÖo2w1!kxMsƌ.?nT$ݴ~ ~ُI@c͖ӉɅ2kD^`>m-\X\"^i]Nҟ7ihjo^ h< +fEᑖׄ)çLSR,\ܖsE{aTOWi4 zR aT +hEʹC9Z :zRϜn"Īey˂Etty]Xd$J ZGkY[+ +#܃ҪNjA|z +yg +sm'Zv:*0F5'[z?۹NTFS[YLar\Xf:TU[=q?*{WV +V"=CvY$𿼝07 LF:sStHBvdJ^1LN?a Gf4ɖLQN8H`Y7EZj;[o"h}Xʇ+>/'H{g<O:W_)Iͭ=r,,+"Vp*ktˑ\{|o ,+EPŽhDi;D@M(]`ի)NcέAhMF.7syų_g<-jq7R2K}iU ̝&:$iO_L]mj]T7ܷ9E`, %#L/Kmh0twdNj.j+-W ^ȉ/vOP4}8@[œ݊kӳ'?cke6~^V϶fޖSIC+ޠ +&p ,1IAEmMm㎎7K?,ZxHYwbUe4*c6NR3Y=fz sͮq 4̩;ΪY[h'־+Nk,~ tK*lu*j̯(xμn>^A=QB;8ރQXX _w^ws%Æ=]-a6k%'X4"~ Uߜ3OQ޺'8j`aPъs*I|K[ &K3R Â~qڛL3[ވ^s+;)z( 4G3Dljx?15_nJs4'$&IlbI#b nS^=Fp_eMR(U:oTzۯn6Z\BaJTg28դ?Q"(|HLpJ4z9de:I1y#L(e}cԡV4ECg(qJKi1u2[j{^>ǒ,f1s^8T@(hƺo;-sMEY:EW\j.ag +=du$&")ťhOpD ]wCIDTb޿XkKR$Fvmıi?Ǧ7׫ܺQ^e$!ڃs3% q,MLՔÁ!Pu٨FL(f@4W&"p4ϺU\ 9ZB/RGʠt +RT` +ۅFaWb=jom@B϶er*% \.Rqk3;ЅG|k81Sb@;/)8hI? \XRۘZD@ETc]S?:TRӴ (O#o:Ӱ_Rܬ<,8\{< x2u%؆\y&2, +;KgȔԩ +Sۯh4*vi>"^1mwRv6F8-XHnz%GVaއrg5=.UռEYC<,ߥle\ 4 u +ZN*d$(n7[?LT=XR V׺"j}nq$OSC;Xer5~8,}14ݖCO9ѳ^~^S)Z֍A@Ey @nT< t[i)́Ĉ ?Q6(8f+sƁC¦R9 +endstream +endobj +1234 0 obj +<< +/R7 305 0 R +>> +endobj +1235 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R159 339 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1236 0 obj +<< +/Filter /FlateDecode +/Length 2448 +>> +stream +O5B>Se6A^cWTJ9Q5x*܇iKP= P 掀_j;vkop†jd d.$vohذ7==HD7t2ɼ [WBi2`'h,%eF'r3 tFW2﫷E ٴ!?Ӽl3f[:Rvd%[tMM&?.=c")B֑T$ۥጕMs D[?L$+A|wAǎ)"9ZH +se23O3Lv}/ll_V>#웵thFw *f\o`y|K|QKD'kH{@93!t955;BzzWJQ&sYO2U'YD>T[5V'A<Đ^34 긇lopgKpD+6`3 m`ȵ4v2dЖ$iH`|g#T5Ip{J0|'-jDV4hOeA)t*5'DV`k)Ty CeR`#k .>XSs1kH1g]6ZL{m-S۫W ?38#ױխ*V(v0ӁY2dX`Q@͵H ]DD @EHbB<szo#rem5$b%KPGe xgMuАFZg\3I+9| +>!r%R|x2Q5'w}vs"S^#Ieϳ<(ogњY +54x(ߠtPTo2}RT)o>W_y$~M!K5m<^zH"CC9<2n!Eu Jި*HKcXú'Տ +]L:AT (e0;)F`F%f1Y9v p)\ztȋoYK: -{_cc9YL53=͖-%G䳱Z02+%v(V[7|7#xپp~b}gYSSo1sh~3Әɀ9^@B+,ϝ<-gh*EٽGZWp.f>˻>tMwڢ{Qfؐf~0T}nܫZɬ~a"n./1|RD-]WQòS,Ji!(TF#ZO]ZAiw *>X4J&SYt2h>2]#b<_* D "etCEV8*:lP .VokIz[JY ظE}݊يr5'TGZHRc9%}(YlxY9]PPUv] +;h1)tEic?SeűENqNy#71G-j G %_0GZՈk&3Ɗky Y,.@ydĊ]X:c ^F\JbI%bvnT̈́2ed|Qgi*7]_nb)uiItԁ.uk]%GʞPƩQ:Rv۱!o֝ۧ +endstream +endobj +1237 0 obj +<< +/R7 305 0 R +>> +endobj +1238 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1239 0 obj +<< +/Filter /FlateDecode +/Length 3139 +>> +stream +W;) +}/v~fz[7On2Wf&63QUO|b`q6.[#@@po;hV /2 zV^- ٠7pkSnw_DV;$# O+X}(g(9d{gu#$ӫw<~VR qzìll- `yh6 ӝa}v?b"jyrU"E/O ϳ\栟XN2Uy.r,./&7t +ڢ$3 Ŏ8u0.u$^@`[I?Is~snHh0l$&4K/^yhA֝COO_vOmԖtDAUL4'[,^/ج)/Jgj͓z<$-ͺ\EfWovX|LP'׊&ܔCs/IHj q)Wö'i6Y2j2`+T vgwPR-`ԗ:}uZ+PΪ H y`\"p9?V1,d$S£?YW:y:ڳ +,Pq+ mOXyJ0я.Ȧ!cT}oxTO|r0(Ǹ+3 ^A$vznt\.׍[Ȍ>QvԺ&!]l2H)߉Wi<9;q/4rd5ŀoXVHNoMÚ皐f >ն4ikOmV+'AMbd Ed'T5rqԒ>f7m@1%TAsq@ +>.V +e׍" .n+BK#,?R-G#*؂ܡ:Sy67pI~ψ񼏪]9sI9Gʏk.L(>&L~ЁhnKYcxaٟ9!q]wl54b4 +6 58jԴb;'&X޸;srkbyFe hpTڬ#6z@<ꇖM#&2~ظ*6Cs&!捡DFv&Wm@]mopo,&oCg<+GmL] d۶ FR0_29ﻎ0]r5|??MƉ.#V'ofKn՝ LI5ɢʽ)W1^A/tIB +)m?Q+HL'ME;(yov*_]R@tNR %T-fu:`,K 99MlŔr'WY; `/8b8$* .a\-c6rnY*ȫlA׷eaEZ~hBdh[| +^(nV­LNn>z6WY]5eznZR[B(pghv&b}`{YE[ͼ + snx>8 Pձ@aY]1a7Vϵ/1ݕwʼGqXZٯBUG5]߽瘝zv#sܓ7Zo Sl',p}\P\PC`bzЈ9;Q&9-K䇥 T P{5&ͧJ]~ړm$/u͈^ROC:Of4'0.;DnK=ǃV'/ f +Ts1H +[' +9ؠ\cBn9[|L|wW""zW}<)). l 9G_Yg1A}S3=1ܧdO65 +Dr5AaZGԛcC\ L[:XvZY5TFeOv`)G@^<ʓɲ{~0O~2Mw)@_$,dվ d.ߟph/ٗ˭m~Pj\tD,  47Z`\Ȕ4>;4/Oz[x:,'nP&Gi^WT䏛5FfvT|R\$Sqo^vUi>ƙ%@ewFG3A/a7M9$c6Qr`33ťRJeGwr" X +{Dc `VMIEW<]ۦ#XSci:M?& +Ӌa<}f7PiFViE PA[Ut,L(]xmM/"\2~uͭ0isd<ՠ}8ܢp/'oHZg ";sk9"=P fI:E %H]+{U.(eeʔdiN'@غ4DzqwϑE~E> -aw8i;иQ{ ׎h*Clw{=vFR!RS f2C"Q0nkmCd9?vFWkk17 +endstream +endobj +1240 0 obj +<< +/R7 305 0 R +>> +endobj +1241 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1242 0 obj +<< +/Filter /FlateDecode +/Length 2954 +>> +stream +-9B*hK@M=WN9R)R?j&3 B%SU +iqmC䘄̬j6깸x#x1qʧ9o˓bz|]%(o-2]xH,:bj:ffob>q@}#Zt89nӼ|':jj$ո( [\QEEJ'vraz6W +7kYVRJ\=rLIcf9ۯ( y;QFd|; w"ޓ lG! EݷLmCч)'_ 6$@-W`DrP.Avv8ZdG-8NJ=KA= nĘ i]u%>Ԗɴhs[{[Ј,1߼0i))CT]US1`}i}B&8Q_:c}ՠ_غ:Z7$yFooݯw[;mȰ<;(*Q}|t-.Ǵ 0⑊3R~E,1x{ҽuwh?Ժ F +Nzyg2?5?P)7 PuaND௶`JL?jkBmMoi}TwWk +a*ɽKK"Ѕ,6 iR/C89L0E 3p}}z9!x|iZ=+?a3GO/}'F YI)FKeR"=(绊{F8\u X̍RͽEc79%TZ΀RB5ZXiEڣ8R,0'M9ܷR)6_Ʈ&UTNp%9@U27Dk?U`xB=YfwJR4-c$ %O @,sa&Řd6XC^1-L =N;yǓ!4swءgNjF9g;wԷȃ +ˁFgx 7H ŴG{R-C4nY 31l.ϳza=wP~0f60 ovcxC[̡G,iDX֘fb83Xĺ*0 cKހҋ<3h4(`uN *>C:L͗opWT8?&!]?;\(#/az$TBE6׽Si8oWfʵ]QY#~c֤WΜ]_yVg<|cܫx[*1~J#).;pz]n`0}EܻM>Wu@dg +$Cy/:P#{PP-J [(#pU#Kdں\0AhÀTGp 9aDЖ 3J9;H禩`?KWMSfy1?R0mC2C!|_ +<4ŤR^J?zZq"\:v$jz˗A|u I u^7@6S!ϧҜ,d:Y75bFa͇QqD1Up;h9ۙag0dQK``ۢd>Rd̫#t:Wк%s`Mz71ey+,ybm7R k{Noo5#vGk\2p $G㘯s;?k +myM72<*<~h,>(B D(7vz&62\06QS4zC\&lvfpUsF0~;.-xk'AOl,Ray;U<3kwa{VV3 YJ,<N1@OUb"-LxU~J_7GM¹=骫PX0P+–,d\$&cď rCBΘ_9> jClHkpd cG@z_3&q.Ū*rQ%PZoכ^.W8DDuNx廹E[=p`wez*7u ^'*Y3"鋭.ӆDFo IXuHfp^{):pآ~Еrv'QpE3%tA*FU2 + ۬aPlMQ@ n4ň6=: +|7P" F`-Aa.&]ɂVɋyz ';pqEH:167v\' +&h<" ډ"wPKiJP8//s\{m)]ݼ\BN;SZa&t"G\0#Lq XTX&lzf,yڱ󷎲;<׉_Y!LwR᱊qHA|M.`Jw J"jR4, +endstream +endobj +1243 0 obj +<< +/R7 305 0 R +>> +endobj +1244 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1245 0 obj +<< +/Filter /FlateDecode +/Length 3251 +>> +stream +>>kAK3U`^o-Iby gO`b3<NyL=NqwŽyNQ@BlW5ʵgH;.XgǮѷAŒ| @Lcr/!0\bGV ]T_R,졒W;zTB^W,_0V(zJ]}%NRev?;P~q,-SZry/t5iUΗM*OLf*qlec,a' 2ɖm֨Bn\Oohn9{:XcP?N7.\oeL&VLޟ69Agnܺ2oDWjtWg2Yn+|fpjΎz?; ' qf $&Z ~eB? +R !DF<"3bn9`^){:z&QL-g$Xo ~Fp~j&b+|NjV J7!f"rRv2(tҳ + %7H;}DOiS brit?YK%HGtɣB|j +QbJ_;z׻#1Lz(>nRMXh#naJ|$cihLL ą WN>#"vpK\ o0k<"zDEּYͷXAKAeNƊH~Qo}丁()6t'2qa=s%X  zWϢPΨqX 2g!E;1\ItmCH$iP)vLLV I9:uO96յ# +̬f[{4}Y0<#-ګMUolӌ%{H0h;-'ö /ZIT»@oF)JЪmN$JͿV]m OIi*lմeش*/$'!uZ3jz䂡9o換kMԕT&n~A/;IN铚oz +, :m[YRhZ+][.t<)X911@pTp}2}w2a4&[P }88OV$RXΕ3m]0C< v0jpLd~ +8+3Y{l69ڟןzT\SAS1la7Kz"\1BH܄!q1֋]I +!=F3~ѝLn}w&WI_#"R)kX46yۿ \_w+iDvoIֈo5ؗUCq->ϔnjlz䯟Bs>^Q;/$bC L +c p_؃O ΍&S +L#&'+_jn.J*7Zgs~GhF|q 2vF4PgJ񯧇ߝljvbG)RDUFOg_qB\/~li>Ux̆ 9t["~kqma_Ji;gO~GC(mCv9v r:i^=-ZbEjX~8 ~/vgYS[7}r~Y7tX5B>$}[>&c/&@>w2{%:XKF$jh \~521׸ z6خ]`X +1>uXe/a(sjvf_=g4.% rդ&.!q'5W~ƕچm:DU,ё.Gm$ۛ6ߡ=}5ªfDgnH!eAlw\>*s}||B<ƠeRwl)?Ƌ̭qmLvLQ4o<;QЬ_p'\J'O~g[͎ +p^0N +<5vq!HǬL7JqtLL!9{fr_i@~yVHV/ Ǘ7~8Ӄ({:7D+} w6Xf {F.-8\4lbLX_ VA礮a+aբƠ$rR/(0,F6MCSTt7~` r)w_)LQ,)qORZ7`v)ì{Lҥ ( ߥRO}^(פ/xk * anjVwK>1,havhJ7u4Hd_-Zl+TcҪ,}dh)q#vC1>Ԉwߙʯm7eB@2`di If²bqοfD*n5gp +endstream +endobj +1246 0 obj +<< +/R7 305 0 R +>> +endobj +1247 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1248 0 obj +<< +/Filter /FlateDecode +/Length 2224 +>> +stream +sLB(>@ϼ9 ґe +8l/w^$Y),Z rJRʢRDa~qpIF_:I5Wzj~}8{LFǟHl|,0iO6(Oy +="tqrJM]eL762} 6J{-a,j'9t sGJ{U(ǪԷ02`ZnOkS&%2Ei>^dAҬ"1L B. -!jUf(:*{ȓ]!4lчo/T`䖹^C?(AޮcdO\ٵhkrYzQd@jew .Fc-A;U:wH|`TC4U"Mf8^{ ;j (gFᚙn(՟s0or A"-Pr|ЂfMKLjbEUb3m(LI@NEãaC{%ߚn\޼w*raeY mP^hj0ᝇO,&I*EAD'  &`+G܂,5v 2h%5hݽo͗/hBG"יVhZ!K?mGS$mºG=QR^ OPnr| 6H:-}7dy;vׁ9>C^I'(FyZYF28 7B'-'iLBk$x'NtQ IWHf2EDcpqڞRCeL6D8fo/3K6`kU0F?!DIG"=oȧ?}#wLUpNnCJߎtP2`-AlPsYbwD "UtnSeѱNT 1.k +endstream +endobj +1249 0 obj +<< +/R7 305 0 R +>> +endobj +1250 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1251 0 obj +<< +/Filter /FlateDecode +/Length 3366 +>> +stream +(DD5Wr {׋ 3J!v.\XOCr 4dAd!Qa̞T"М:N'nVjtseAvc*}G"4S9-cwhF%'10+$* +)r_DW::lH9tl ff"^0>Ղ x,0i;s'ד듈!^bSr遪va'6_X|BEkIDiײ,HN +a6\!/ɨRf~uxkVx2}r5#}3$-hrюۦE+CM\ ;q +FUiNg̸7Wxx1K@}3'"g|qsA o̖^(L2|t9Wz@'[(*UqiVRN~'-':y1*KE#.\ }% p盪R+g^뜩w~[W YZTK&4FN =})3p +Ʀ+mLPz`fr7i| ++wYXHAEt +6ϵm1P NdІ6ҒzB,p* QHcMj/ K}uؔ5ⓥg/gWվ +J-YDqO{ʎr B')FgPpZU:=?<' 7//tun{1mcȓRR06jgS/_I SFG92G!fYᄾeGpN=GkSXh5 -6Q$?b"`zƥdA>ć<6kHUKY4 !Q~uZMK^U<_FK# +B˃i'bhotJ`L(=뿮%C0FMUwIQ7d5;c!Zc}uvuW\ii7/D=%bIsȢ00t6:9Y⬟kYqC<5.nMLK9ڲt";;!Њa[%>^Yqvڦ]Z5l+"-D_oI5 Q]@PevqnTS s@M0x)fu#jl4^]tyZƫwߵ[ +'~~;f]Jl +1A1gOӸDFW7I/*qꝮo:D≮n7d0-xmK'lJ7e#fRRY 8YIҴqm䯟6[~ =ҷjOw_%a;(wɟC? ErV(noϝ\XC"̊!(xfL{Sh}Ң3(RiT#\z_E8_ ]}9ZIk'Oםc]Ppi97<%R7=/dίXxfճ ߏM!CV:K-EaTY8O , VF(o%JEL¢i”C5}),J&binޣMU&MUcΔuqNN'Eлlfm[ "SKbnz[[A8zT4yJ"@mH8dxsXRr-!JH|qOa!*I X1Ja@,3~#> +endobj +1253 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1254 0 obj +<< +/Filter /FlateDecode +/Length 2036 +>> +stream ++U*If +*NP~OeMba-B}`hxx)j]1s詃T06џSY 䉾$oj@q + !$*.%WIHE?5LJL㡬q @J#حMR$n`@Bvwց_ΠpY&Ty^ܦ8,ʭ*C8~>мCdM<찺:zb0/]E!_bje1\kvT*ѱ.yHg+OikM!=GRgZu` +C42d-ߦ.u/I:'Nhٚ!g{k<} n6OiRAݿ\5Tv$څʬcKZ)CiS'hJ@ߩOPsj(j (H[]aΡБ==[L ͙-<ɏo?uz~Hk DIs, f)=QM}0T1.Gmw6y!'vM6-} D$>fi{%ioYl"HCNH#W/KB\g0 WAԙ!yyfoӷeT`L_Lw,7]2 2ۑA(B'g|yaťԼ8WN ҋaoڊݽdm a"yv}^;6?vᤆE5K>:#RëgqbVn%#'%bھQPu87p֐ZbX1~AĒĻw=R;l?Tm_PhjQG8OIYP4Ȇ'+n H_݈_O⼊"|B]3bk̿N_)Wܿ1Az-Qw@bv,xQ'8 $KS9ǂI|q_֖[[ĥdxܑ>yoEv0~+4qcVZd41+79GT`x+TkuJ _Wʂ,> ԔUO +0e>i|y +l[;{(]Si8%1YB71YWQ̈́4>P߽i)ҫBiA]W!$"ܫcaA:w1U繡*HkBٔS* e8ƉoExHV56[aPkj@}{qx͡Տ,Sji=)7ѻ\l&xl n-?s8d7 B-Zγ Gھ6ˮ0b"zS-(^}@Tʴt_f")ֹ1rёcw85tgfEP3(x|X%_Eyu7CG@gL 3]WcVv{[L/C0M˓k6WD :!¯OU؂A$=rmL~|$r[өP?ӟ)l|Kr^(:y3۫}KoѲ%|UKsT%{,lM 4=9YVtOa聒ODUIFesCw.JsdD)ԋ'6GSC=M +zn.7hN$BQ51ԟ5wQ0S +endstream +endobj +1255 0 obj +<< +/R7 305 0 R +>> +endobj +1256 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1257 0 obj +<< +/Filter /FlateDecode +/Length 2310 +>> +stream +/H9BH$$SӸpTDBQ0Va^O#Yc Qvʜ}ʵ[ j:f. <%463\ݴ/|:.iľ[7Q{aT+w޳>d`\7 ثպ];E?Qx6ma , b1 @jALVUq4@[i/x$h=k~9sy%ZvCN<qqMdZɛEew~r{Rz.gXeTU6߷$p>LS11&k=K'T!ޙđ}9?eq喀+2Ygljdi|qo?b)cPؒF+mɿ^ 93Ƨ` 9-m_08-ADi&,dM'i 1M!vն,[2ٙqnE`8"_0ٲQRFARp6Ūs?6PءfXU?*({HfQ FHk +Yr4xr9#6,H@l<[ć"ʅ<5ѳ Yބaw Gϒ;)A $QO k]_[ORkOQOT2z\PXznDu0E4u5dvs0ہ'^0Ykz@Jrʺbq]SPZ-Y8pLHv6B8д߉*2rSП[]鬀I:R{OFY6&⪼3[m'sq?.w})xϘGトicd 8B`t✣j0Hv]RMWޮ@PQnLFDJ-`@ ~SNalE`/?dDם1E_U)g/D-`P+ޯUޕyr|@âLJ5w+vpI1X$z S8;S |2 ӎ4n1hS]XY;?L.Gip=k?8,?7NN 'uA8b;jݯAkB +ЕRaq20f~ +3m}Nfi-*䀫51h!u9Xj1#τc1Z*(~ZEN/,o&WC>æPFj6v%|>`qx76BVi<x{4I߀1dvtFmZmCc "0AC@>bI|,Mҙ$x\Y}9'u=/2 +4f׆efC9pWՓ]* }ڽ'kplMpGzO@`zthAq^(b ٟBH"orh, F|Dv/4203vξdouu! +Ot=-7}[cvϱNOhQݞ,*TuꌺqynB"IE5R^* +!l7Jb݅brܕx +vB A{\TG{|~A2:VJ-2cl@k>.[d}>S bFSt#Wo +endstream +endobj +1258 0 obj +<< +/R7 305 0 R +>> +endobj +1259 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1260 0 obj +<< +/Filter /FlateDecode +/Length 2766 +>> +stream +Z1\֩ ۩HtaF'`Ub=ctu4TdCG>DGD}Dɯ6R,vz} ޗqVXHA5 jѰl<f>́p M񡲧kmetz 1AI1'ШreJi4iE +x,:ċ"/HabLKق/y# iOwRte^ +[$Y84P% )Z}SQR#;.n7a=lmeJ1RkS3KS^rm˞rbّmhT$dl&vi dX/::G53[4&ۮY2V3*2g+]Ǜ`ŐLv-u9BAE7NsQ+c_[ u/C`%(~ _{G*NAPQ⛫ܭ]Tbsv1Ń`ŢE ;T +vٍM3wҚ#91-="妈Ө|ƀ*"Нu 3HUpM$t#@EqKj)"n'FryI{'bS*Dɟ1QȲS/ԑJFm<]@i(1VKTc^CaV-g%`#̹;kl5r]LDpnb2b> +endobj +1262 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1263 0 obj +<< +/Filter /FlateDecode +/Length 2712 +>> +stream +Yje)n2Cq0vͣ>h_ߠ/HSAgFD_B^lևXgrsM7|ixA1]IK 3 嬘Х[!|WTs[qeWCj>։8{9ctP4EPj<8N.AT{:ED%[WbNksjLs;|U%e \?Ūqpxpk&h` tٲ +f(oJ𛕥13 i$]tԫu/.4TAF;CG^ k;[(jлA,R_x6kX\TJJ--RGh&96y<%*?u|np({8/-$O31-t@PTpb(]gT/vqp}‰mB +*YWw&M|dmJDb^9rbhz&'H^cũC w7 uW6'[OYȧz;J~鞟?}_Hz_40A!7A` Ȱ*GwAnfEtRvP6 )/ +{d`}piwТg4y + ,FKvni)npG^D"D:Ҧ=揶~< ï\~J0o < +nrAmV!+"#~޲EwJ\&U텓RC֗kiePS_jffL]i-D3Ss8RUnwiq!|O2;8NUu~T8Z&Dx#}Hڣ{YN($]IE'ḶmKkC\EcJݒ%jA= .ww,V&Jk.* [Q9sS]70sks_A齽d9'd BVu#a8M]m:vyQ +1 uxZ6j$_bm#(&s9 +)( +M=x<=;l!6^QQ#yq)50`E}=CTvCZ>ᘲTxq_ t:T@DЈ~i(~ՏiEtUy:ojËtLpb2cQҝ%S^Y\Bh:Z.agZ)H*W(LhZQM SDE_֘[4>KĕvB3ZI4uy8Bƛֱ Qq=)b~Bo9M| J_Sm-3.p,ɟoФ&pLAfm + ż9ҐJ]MJNtcѹۥ.Q1ėrY׵羡o&i:uNnX Gz]$~EDuḻg+3޳76KH9u${d,Oret* g!6Oߎ} JRQxsD/Q +݋KmjB!w6$\$0<ȞLM?v_Au/ H'i#j¬hC28!EY@' ح|qu0u,'fSC4;^iq&C.z˹3F6\iC#.[5K-KuG H1ؔ(S +덶-&Ṛu6:%@&!mWknC;W]$2+} $/@ظj C|!%){R(9Үtk-jPZ{v s6܈?SUʅ\>\]6%]/!)ٝL!IѢ+n;7<eoJb__9tB/mm Isp#"DIp=PdfD/V$S0Ro"N6,:Rӗ'v;k3MHЍ 42LUe8y }f|]!c4Ī 'YhDFx070WQޠÑ`Nk,Wdg}ޛDq})`%o9+~ΎYHBϑG%Em~fQFANS@5Ȏ wȐfV +4Yd +SzɿMΐϖ DyF鶆Q? cQu{.iRY1UdPs +b>niު@jkDߚI_վ8rMJ88v- ʂhѝkf\v`D4|u&rښ1>Ta\c38:`֊1N8c!+ŮQ^(ɹ +endstream +endobj +1264 0 obj +<< +/R7 305 0 R +>> +endobj +1265 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1266 0 obj +<< +/Filter /FlateDecode +/Length 3062 +>> +stream +ubIkG*RBzEJE7tY+ٌVRi"Td!xG/D& =bo nҽ$"`biqd(ZR "S?P#qJTA5H;0CC~F7 /20R)ӅY(Z5C B;.R0#llƂq)VVj;5kE/>#|@RD5)UxKdAq5L$7 .}H N$PVgMmHϗ@cKOGt#2+fmRm'/LnrV/B',)"ȟ> `Ѡ +eg3e%8 zֻrE )&8γ?h&iWI5Z:GkҰB.5_[Rl18 DA.u]8O %n2Ҋ^[xS{ ΎJ@iKs!q7R+2ξbǂNڼAjO5>YI-N,-!-5,(]{HqP.ġhab;j59w G&}]叩8@^]#qo,>kEP_tvVYNeΔ@D;-Ӊ4΋¢J>qWPg ˙ <˚xȘXQއ&:-9.'֣lUUƟW V>I|]qfY/8 U +8dA +1m|>R Q؃Xh[]pp:)aiٕ6 F uI a@zؚ9?~cHHR vIzlOgx +䚉 %z*:Vlic(ZҺ(؏IyE0ͰJS6wD8l@EpN"0wJq9!ԂOY⛟Mf?W-ጮpol!} [쮂N_CW9](>2Ջxx>*7LJLQ IC!sz]}B?s#Pֳ+ߥJGRS ܖCMZk!o/n:0 vk)nZW#Jjk~yq'vb"18)p蚯P9+E[2IJN[v9jv#_aԱ +h8 +cP)̃ɉ15'DHA]AB!=r@[0&n#, +TկZ?]e>/G>tm nrJ|yjnf߈cZtnO<.|vI;n^KpD(MATŷ#VwpE6

    mBNʥ>v3͊< xd&9C<)obl6 FT: +`W$̮5A ȉ!`~'[Y$0M +&g;8< DsЀ&o)!앁EJycN#>̓ +#hvK<);SS2<5WRυAgD=lAg?O#h~M8e"ToP,dѯ`286I"ULu0z02ř &fcID.fUo,\{.DH;. vB{OËUl^.+zLY込N"tSmo QM:ksI:ꩄVU~*CYHaBcd,񕐧ᷝγoǴW $<a&BW$A_Ǥ_աȁfq4p9"YZL0= #QS{;HqU oA@{EWx=C^k`[[ Kxz* /sw* <R;FzQ EU%肌FMс*;9!<57p RN+1z>Pi,Ei2Vb)}墲M[:X1$sz@4Q;y'g}ѭxwS6lDoE^T}o3v46\?8B"t$9-q)oFFS +#Y&Tu/9fyqۗٿ+mex f>$lDgN)_A0YЪZ\c3XY`xV,i|OCi//pš얖X^K'KAhܽiK{Ì~.h'5کMk}I"~R b(teHצ {d`['Ҋ=v Q_XXgi?>1`nz {beZI,miU@N^1H$fx< B.Qj^kLB |1F*k)D޼Y[#zRZg=>K(G<CBś/k=aLUT}gFHA +endstream +endobj +1267 0 obj +<< +/R7 305 0 R +>> +endobj +1268 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1269 0 obj +<< +/Filter /FlateDecode +/Length 2657 +>> +stream +CUA|)}f8kW63mn%fqsJq6D_$,?7B(tTk!5Sq!>( ߗq-p)sD$r0F&[fʵ'1/y}+Wwi2Lg/DCj ~|NT+@m8?͘!l.FG~(©'l+%$N}j8;\6KٗXV05|3 8L{8 +&yW:N# (1uiY0њ)w#@$b `s ]F0fK3$ApB,ҷѱ(B9[3'ufMjk>s̘ƲOZ6tW.=Z cⴤ2"@l?G"M}آƁd)f +WʟbdAM{Bp@}xWϰ70Y@uQ]7l 91$Py'IËh!sIG,Dr*KZ.(-Y]& ^2%nL^6\s,v=bDJC;>jaFrub}ِÓ,;MfM v">3b>xQ,X__ #=A[D;̌ȝ#!yLE7lۢf?&\M8awM ,`)>}-bBO^ЁY! yO0cR/p;F E9Y˫y3ic3%@-ұ@ˬ7YH-sDzr*3)|LB6bt0n]$[7b|oc|SN: qyo{$eSol aK<02 ; V!mdw&mEawREwIO쿺= +QE>%PX i)bA)'"DsL9AfTC" ⰝR +ŋW̘?7g(ذߴ XOa$m}uM glyU0Mȸ`9ayX39]* MGu/@ՍjY +'6]XJ!lhV㹬vO<΢w Eꋠ8N40&[<'SHQ7N<]QA&&ً{EYEV;!҅=[=+el?ݓ8hYE.Zb h.gvvæ4yI>s ܽ `՚_qU3Y8,*z%~2CL Pyr->km!:N"m&#OXOV=TkwnjuT]r\ª:=on?J6ΛzI[z\WE41PuTC4%+Ez牄EToCal!"D?f 0d &" k3QG,C.,KJp3M +HE +e;@6_Fzl +< C X3tA:ij 6tKuzƒ&.a_BqHK +)? C]c1h 8z8)[yˈ!3 DV[ d =>u>T7cz_f!F$R='7u!3"MA % ,XzL=I`?h5Z>%P^ǫf\Q5.d$jN]|MzI"`}nçz2PEY\uF2NJڽRcfɹC\gHFvjҊ6+˷2"wf# RA]}7 sa'aspJ$ 7 +endstream +endobj +1270 0 obj +<< +/R7 305 0 R +>> +endobj +1271 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1272 0 obj +<< +/Filter /FlateDecode +/Length 2842 +>> +stream +ơ1b(M\EKu/ 𓨾:A c}(ur$lA#JS-v^s`E(X+.<21:rIE8v\Fn  @B;' ], Q~L ;@c:@ێ%}fAKϖVG4]͞4kAN S>=jt&دJDT#+<̝,!ۖ!T4TYsψHkAo rk.1u m܈<"wNAQaU Y@&(nJ~iρx"]u[7*v(0$pp>X .WUl}\FBtY , a6jDںvq{)N+[M\u!c̖7mu٥43qsakqD+{x[& rP;Mv^{^1h3)lxA9ܳqY[EH";ӎ~21Y!bZ҂8V"R yo0'˭O㢒\aoR) E @32۳bB Y9=E AY[Ow9(<a%$y(<ڊQ@*KxMm5^4:݁4[]iKa'P+"^Z`_uiUp" {=˾U+O\ G&zh#Bgg.fK`THGHtd.4IilBW#1z%OQJ>nh)ˆ7>flCQH=Ӆrcl +кMX8Nο DN鈷]7g9ҾD(X ܸ 0˨u%/Ll 2Fc;*gQ$2Qnd?k/!zdHξS h3gic7#CG)zOmV'`^)|hz1y{Qd`U^1[&v3E_hQw |yW?[nb[q* '+DۃKUve+iحphMeKRFIOn,Y/P}6F:a70/HF +Uӽ}\<pk ä#&\z<mmW +i)&e7>k%G)|| iS1SsEajy3x{Κu#ޝ| hκ)B'sJt3AGR)w2$bjܡ}lΫ)#J$eioQG!(%A5 lkv#95a= bؖJK{ϑՓA5XQm3FPkQȔ?گ4ZPA~wPG~hr*@ +̧hk~joɬLjgXw xn1shs4U>~lhJyr--`Jqu%&*+#.QReW BBg2uD +)FS-@Ģ p>Xp oz/Yq$߄ {NuRf~q-~sͦB O ٛLO~9ߋP1H+L܄ʁ~Ĵ{ K={h)$5ːvi 7T/-Ӱ꣮(B> +endobj +1274 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1275 0 obj +<< +/Filter /FlateDecode +/Length 2653 +>> +stream +yzQ:s":}ͫ"f>#usW2|7- 2Y#cGYry +v.oӹ48OՋ8*)\vi-=5yW׹JsG늰̐u!Hy"%ݺ[{+4 +v$hYVi0"gj<=ZUa/ϗ1j3q`kWs|gP9r|_'cUFgm-+upe&DN=ˆxL(³IiL +>!yy ǴA~PZms~̝ +"YM Ps0z!,\:_\حX#ēWC lKh6繬95{bYC_uΘ5%]TEF]cSE28pw$$>x1!10P^)24%U(wc25FopS9*5M00u5ӭΠWI;⊟DPxmZgb{ڱL@r=NWY|»+mKx/;}=AÃ).^v'4#9ѵަVnFb1'"Jܧ !(@0(683tFiொr<+I +M:oX7 Lw&3tW1d(]W"cd+|Q*-bh tjsy_JiJ#s$44jfex|c{ID$ٵk>9|!Q6g%$:or8!oO9,WDMAK/L|A[(O<4ߣ&K mՄ]}&`0_M'RupD+LOPÏElG iFVt}R/?!m;6 ̬g)C0' + J/!Z:SܗU 6 ,ilrpx{Rf,@n+ bX=u͈84kIJiQ, +WDZymjEBmV"* MieMpXΐ'f.c);':$6GعE!ev&hmq1*W8;X9E޳oLNl q9Wdd<3gÏ_'6{xh;umK[._ޝݨ +)ᖕ K/kUH:~nz&YdԸVil1 +`1XA&tɝWt%B^,OHO^,حUh`Do|,cWyΎ@_Z]8хZzP +mL&ٚC.rUCg?КbSB7\p8EސOЇH %i=Eu18>nDWs7sPeP7Pشc7蜵9~5~\qG'ؘSmC wdː +endstream +endobj +1276 0 obj +<< +/R7 305 0 R +>> +endobj +1277 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1278 0 obj +<< +/Filter /FlateDecode +/Length 2595 +>> +stream +N#jJ8hGQ? $3iE2l^Y-R}O^mwL麕zff ?bk\cf͙:jq0a[*~f46Xxì8EEPЂ`Rdp<3NDfOQOJ /+c:ǎPBS%7@]N%TB&ӂ!'1NL6IT>A%6cb_p)^ +Hƫy,mk.(@\= +^H6h+AG i2^ $;TjiIx$.9 )zcIݕMU,U[̷\%^r:@1:L# >n&z>%rPvt WSetRǮyA=8aMnm6 +%ֿJhN`NBy2TP bsYKۯ5I5SLslgT:GVg}? %!~v07s/aSl`__9ȢEkf0]q?e2{]2Ix?K ̰=5SJ!ɟ1&I_tZb:' +IBGç{X +oȗ=rFfrm| ?MmξyJk(?mVmƉtKrz4e$?>l\b$`l?/GhZN1 +:_C:~Nv1u<~Bnڪ@͵6VcK\*e"l$_R +uM +j>gtq~%(ʎz\Ө;+}I MYUf2:dZ)V[p[5&θՆO!'_g|ȡ8UOV)#@o!W-JU"]C {xXJ +?l3)P9EvheeK#%c;8c=Ecny*H:஢Rkg,)<ˈ]FpdD]^PMޘtTLGssD)ī*5{,,0fxI |%=֍2Xe0 J:}T! Р2U8OLƋD-GI:d|d*׷pWsDk;XJo.Hn~e$Ǧ~6-M] ^!!ʓ]ũ8r+k^DBVZ?eh?-l70<8?.! 夁/us kl +EwWAs\ٳ{)ij ~+f` +endstream +endobj +1279 0 obj +<< +/R7 305 0 R +>> +endobj +1280 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1281 0 obj +<< +/Filter /FlateDecode +/Length 2494 +>> +stream +_f<Ð`1?]]}Xv;mdȒPɃ0+)LiӪ7J˗bBU/U՘-"2ۃXJl*?gW1&3%H9TBއN8VQ$`di`t-eEyښ+~*} S:4BW_"p}(P#]$llMN‚,+Npp9crspx7pEU&u*A0|b{LYc͈R]n׮LV(߱1(B"x!/VZ?Jm +2&9,]0Ejy?+WVb'YO#%n7s4UNlrwAK:tS + +YɮؕRʃJ( +ٓ5Z8 "&19X9l,66pDx鄡3jOG6T%Q=x/u%k֘}Wr4cS{ syOl3- +q*f׵9lj)ghFU%4'=Yh +O8r~cWacVlf :l'jT靐id #aܢkÕu\qM,=) zbL;W_QXbξH=k=.Q$˂$<êdHH*Fҿ])3{夯Ay۟Dq9FG=Ҍ9tGؠ%=Ẓ[d{JtS`n.?a+ H|s=-.HBBiWQ!axBmVL_m B.+JU=etd`hq]6Q#oS Ad6|F s3"AH.$sao9ycţNۇ5Du"hh4Ҭ+1 CO!2zIU/DDR}箽4 TMy5x3q+%89Iлx #ԅ9B7e=->c41l0.+ )cr;0\;oXs Ո @Wtpl:YK7{7F2Y4˰v v1.tR^hT,f!s&;/a2IR M p"!kz'!-b8IoTĖ!4"Sn*Sר/8kڦT!oV \Z/Ps $_]݊;\ +L@Ϡz\PZ%b(x;pd۞No$NT¤3D'"gHXR3tAWqD +ȡn:ۥcƘ~;RԘ_N)nIF#&%ghx!c05AGn~Kxͻrp|Wjov\v?|3OlНrؔ8X^Unt%)gqޘ)ϐ#ibtOTf@LM"`&; +ZxU5LA +^|!-u௸#:49t";mDPT-^am̚S8%rXNa 6Ѳ$QRÛ{/yV +g(!oW4dZwH';Xs' +CpYQ9Uqrq?uˊxǥyGK[j +endstream +endobj +1282 0 obj +<< +/R7 305 0 R +>> +endobj +1283 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1284 0 obj +<< +/Filter /FlateDecode +/Length 2872 +>> +stream + ']E+&vz{TX-^W +NQn纰7oL,[ZµfT6=: +WݲW3ex*\15/Ds'|s:Lؚګ؆2sjWGD0:5!?65SFBS \cU.%fԶƤm20`ԍ.[5[jˠfwU[^Nu4nmJ})\9Zv5AE"<3ݜ_Yf,ׯfD~/k9@+@_awIx+IWekx IaPfmiy0)Ɠ@l^>9< L0a6cz3=Iu?c|&2a6˄ps0V<2t,:s?%!-ϵn[u+=GE-.AXO9`^.HxoQ,Cm4zO=[CoiRvhC)-e8Q >X4z\t~UA fP_QW~YN^bP fAW$R~pHwPzH_( ZLl.Q/)~`nmP޹;?$^ը8aMٝ\vMZocs[eɶ3ٰ@ď%x秘]zB:/#=7I[.L~\#nn?V8Ou}6_ n՛|ԼNf5j +cLi.&JhGˁ|stU'[3Gm(* ٝk̽ZkC>H~/ QÛ6-taGD :]0zij>(,wN"TEuIr8cYݲu̓=)`+5H8=Pf%j3d6d!*ɾlƃc +a +c+,6*cwDl a)R (N2dʵoŠ@pfdGh(c980W3kꂖ_g!IXVUf=Иe-O0,q˼\@6p}Y3 /8 ߐa?T-fۚkx(d[jawn ^'rHW 1t-}fJ ?=!ϖ<9;]Vԁ Oਬyr6ӍB0! ?nS1sn%y񂶭z%pK#U<`?s/yiGRlʓ kF*und<+avZ +&.˹JQ +ʌ?9gBf\IKx,8\p|F,U.k^w~f)Ьo&LdZ_C/ +R*:gª@X;Եrg=&v @X4ݨVE2KvmRnx$u^ m61Vai>`ǀLj5a||)W ƌ:azmQtMb טgw +N.ȸW:鑏XIE G̤nom7 \Z=&Hf xrhX<N];CUchQm/y}#nE+?0qmoPu&v,NL0aԠlNxGj;0l5 Dƕuo7|3HzC'> +endobj +1286 0 obj +<< +/R201 362 0 R +/R137 315 0 R +>> +endobj +1287 0 obj +<< +/Filter /FlateDecode +/Length 971 +>> +stream +n&˧sبTK{L/|$3"+pHHd F+Z~Y JwUϺ @;K~MV/Ss')r05 [B\"/"hEygr: ElCve  ֯PYԝ6l'97#]X P[Akz $įI?@ @\]Ƽ8U+46p9%Ċx1U)E6rPvGV:؝S2j{FsH;8kR`'‡m)7x~o6$kݙ>6^C`{Q2I> {|k24:IMKκ܎=Ѳ0źgHzO.Kn6ſHpAONںݨT垘1&ѲI$?0@UU19+ +_] N '~ j?9=͘!J5QԎ%}|u b}^xrN|H& +S;u2࿉O 5tmb ma6ގ,,G5*r%̴<^(P*D.O>,=2b=pL}U9!Q'`O֦4s4gQ~b.TtsY!!^R[lyD@[US v?Jv{"K |+Ƃq'0/J̰ {&#a6FWA$4E+k((YahpV'@&қ|&X^ ܴX;9\ޕַNz%]k~nEfUBsbBu"1Pk1/Ү&s +endstream +endobj +1288 0 obj +<< +/R7 305 0 R +>> +endobj +1289 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1290 0 obj +<< +/Filter /FlateDecode +/Length 3042 +>> +stream +&/QYٍBnlR9Q*q%l1q K;}PIQ,h=[]z7JШxЏN⑀%IK} U#C6>:{N4^tʆ'=Yw&ATPh1Gj8;][žy);|Cݷok/ P>5|P`s evP&j񞇿+:<QanrY3'b4Pު"IuVpp I$kA/kk + [PtIeEO߸&͉"+gX6Lݥ8'Ke勤B.׭BXp/MX +>\9xnuW±NAy.I o# RL`L +<6"˗[©Ghh?{<}EÇ&5.?^1p3<ۛwS(Yޜͯqث$MBN%vD|g|;Nubs!a[ NH>p}בoo$i,\O ̌SfM1nԦ E[EɆU,'ܴ9O_UEOs~ĭ+ڳ3ɑo` o^y{`e~+]I%I!U T.Nr0@~gAo>J:Dyx¶~.vųðJ<3Q@*aO~ `>$HJqҷY;"R3sqӉ K<Jl(C_W2 5[YѠQS?bT=r赪]q@gg*B>`dx 5ZŘ]k89cB{;(H| :BLdfy =:EK Uʿ鯒("3V!lu5Sf= '6Gt鳛\-"QTAOȊ62oOo I^[tb(/;. Cx[a(]h.^ C6#H3먜k_17) -&(ᣓƆa8/k[ +S7|$lϠd'L? +-ϐs;gK&cb:]I =p% ++|]6U[Io,9G-A~v7w|Fΐc 2aw":\c@S#'I/{^;jC4Qbݔh_&@ ?dz?e/$j +!6b^4k y{B}QQCu{Z6 mMJ6 4b ^ KI?" VL2~3Y(QX [6W$ێE7T)FP#L!P.gt0d:J K=uvx .@O W,͏UY1*RZ+gRMTnY4q DUb6*JrvI66KEaH!/xb?xM4VH )}$衩fA䞿칁T,g`"p?P/d +<#@-|\g/z{*=H]<ʵ;FlK%w6Lp$? zÚ~a Z `k(8 FQ gW`dJVӢ+`ֳdx 4L+!FSL +MEnq-mѴpD8LhUOȡ2`@`KTC(~S >0yqlg"MS C%h{F9NZ+͊#5W@= ?efmNL?7D8mcRDeLRT%PS Jejף)#|֒ZEeO ϥA`QN9 [{? FKN +/b)bK~ɑW$]#H:Y!F5-~U;Gqgr,tzJaTx80YT8Dd!(BCt %6BWZDRc&v`3Ot.1tm4ۄ0> 5ou+.7+UҬ'lMݗxu$ k a&>Mnid[#@aKw:rG?hAkHZeGƛ^q`1!NeP Nˠly&'L2h`Q| +vŽ',^!] d>jhc4 -d>戒f Fyh) ƚ6}XEYmEc X$ϴf婢PaI/+Vz eCwsnZ`W*iV bP˷A܅ۅ;0hOZ6XgjdBjYdݬrS;['F wJeӚ<0~ϥ)*M`caNUZ&9 >bŗbB[f)lP)̂Jo]ܢPihp~mأo=3Ƹ0ӵ4ڬ}HˢMx=Oi4#kak"y(ތ=CpY'0_ׅ7|B^ +endstream +endobj +1291 0 obj +<< +/R7 305 0 R +>> +endobj +1292 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1293 0 obj +<< +/Filter /FlateDecode +/Length 2711 +>> +stream +jJ(,sqdFq+q1CzikzU#g=ڕן8nzC;*hDt:@qŦj dCC_F N_buf.͟vP~[xVaJ/6=tס9 +tJTdMnCGw_&ޑA2Q3% H_; 0v[` R'9+AePVrHetlVQ/BpQ@f%is$%=7(Vp&BsnW'9.up0>(9=vAӢm>_Tm> B!`ygxglB<_T_ԉx&Ftdi= RW>hhinyXQ8d>~2`An16S0 +O( p_2G7 I +&& tw/HXu@*1G!Xh,Jg` ۿY1NY?5 S$5izym1:1#4^?%ZU/)4u8s6=Ҙ$3|_#&Ȍ#O&^{ {׭+l!68 +:N54ufwYGųBNR)COݸŗВ`(J!Pw!a%E[ۺFmc[#B{U=c1R Zhb_оr'Θ?cUES~z]Z>7 +QIN֚^r&ӅK>t& Ȍ +#ͦbeDF7n9iK+d~bIh svJ]+/kM}S|| mVgOOy4z^h64F`_Kr;eܶ`_10!GPN՟ N9(DKUwTHj0PTf|ô% Bٹwo" +n6dqT41GQZ9}p|FB"1(sF$zvmߜXmQdD*=0zJ1G۪xU\_z:jn*x8͑yC_E"@,JG8s܌cSZ@?L?K 6 DH;%T*n:S~|1,&7 HwqN|igFM'E6f5N +r>F}rS63VWw} :C +p2mDd12^WZu[Ճt9)}Ȏsݟ3M*~J)RFc|sȅxH;fJ@G.k~P (:yq$?2vG' v +ͅC**D5=NQt=S?R:@^7 7:]5WIh[GPᶇ |VT2l2Lɣ?J,t3X;%q.<2HO_ S&#'aSV]vV0.*Tp +UT?3/oahxIedbB~n]n܁U +#ZGN_~~o}s\}f+Q~ ,c8DN! ^L +[ T35 }{rwf6$3>I1.}OE5fez,y"NY{XP6Ve^9upurGOf #:ԇ)?VXDA[g")] +1c\gX7O: 2Ò(r;#}B+-kUΕk~Gqr}kVdX a^]02KR[Ipo6[Q :QHT}\VJ'vS3< Q{clf5cmꎀן~X.|N}“*ڻ|b1e҂û&ΖzdB$U2 D!W@ _LK5-]px.3 KB]h>B/lؖV&lK +[L;~MAG +[x.DhfBr^|NkS +FAU^lnJ!QOk'Օv m]7Y (Lzm(/STN?p<9z=>L&u8d@5V|BwoYY ^aԶvG* ?ʦsR +w◬O GU+TRY_7'fdrQPOTWv+<_6eU߯ Y> +endobj +1295 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1296 0 obj +<< +/Filter /FlateDecode +/Length 2282 +>> +stream +v|nЌL^F!rݖ! !E>XCsKXr/!8Οi"~ +z*֓[ Wx?L&+ '‡-ULOn~ӥzv;"=iܾ^6YgHwgGsl ʘf)0 dd_`KJC:W;+ѦaHA&H(R9<Ă +ޏ'\YŪˈ乽(5%~[p?MP_F,[qɍNM2T^AΣ>nW 16!W`(r*Je=}Htp E4;̠y3"zn e qgثbݴdB,%5K9f')?_ 9m !/u9F5Le Rit@nfGRWD3VYB-%a. F`{}vt? w!Ņ[?jm¯\N/+NzFʖ +tQrZ)C:Gp>@0Z=` ճU5՗U,2#|M6HQ\FD. :>6\tQN"Byn/+4`z.pxC"P"0;sNGj[mנHVi@:c/=CFyoZ!"˝@ :v-*nx1*\F6 0i~]GhkwoJnW<IRu S^s~cSNGl~ {qo7;B$\KU:gÂe_uĻ対`okK ϕon _4 AFL-0VK$jOwɴ[=4NM̟kǓ.<.p2lB&ӌT}\`ӎ*6RUk1r=-ۅ+NLi\qBӳ4GXЃH=AsSY9}]8Yb9_=Ң 'z%G϶ ӏP68< GԾCHG l=&~lB6Bh\3o@v#e,5V&6Ÿ[kjߘ%%چd! zLVRL[/ +0.U >Q3|w.Y&?G2-:'yXqw?Y΢ ?e*ͮLѩlm()X"|B5֏އL|zV6[6v0$v]ˍR,?qFn0^1./_. ±3}fHI1CNhP-+2k{1\{Gƍ .\i?14ޓ lI$qHb[&rUΰ8 ޲SJKϒIghW|fD%PIɫt9ztܝIәE!PlqׇOLoyv[b_)KLx@UG \\mlaU'1*@ 9V7~;xۇVzs{b"왂 +p[j^nT Kdb4'18耨[ufjTb4u+llBEYmbB6a@l\î{\-p>xO%BPšQIcd Ӗ(G|aG +endstream +endobj +1297 0 obj +<< +/R7 305 0 R +>> +endobj +1298 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1299 0 obj +<< +/Filter /FlateDecode +/Length 2745 +>> +stream +Sz;Kt?~Z*B! =>Y0~>֣Z@oqCp!MO *)d味4uSѮcIfzy'Q~lk\=RO7p?m +gʏF2xįzQ㎾Zc~+qn'}nAt4L_ߋ`=c.@&aԲԞP. i_k +nwnϖNtSVZx`2K.xqȰJMIm{Aw)_ET:}PyIͦ^,Ubw$xhM$~-f?jViL'(eu91D2D;Ohch0j-8\7(>0R4%3}@dUcrhyh=EG,$ML$/Ŭ?v* SH >;dFRphM3#7D;E %0],n fT|9,M\`cWN歨9,EQ^ᱲ[C2EDgeNykS!)ƸHT_M /ڻH4K0;ie.-`~*aҞq +WOõ/ >hoB}{^vz4i]m ղ. xfF9Ziwcpj*6A9;A&to_Z2r蚷UktȊsxk^h[E=Тn4R3 ]ds muXMwG]v8eRRyx!ViƷ+K5!M M:(SKv'S=>Hf]NO{AWL@ziwF=D?#s r =fq%1a @dMЧu1ɠZ3~Ԧ|aMω)|}nOqg>$([Qq4SJ@1D ?f;)('-_ܵeԱz PW" +=뫭Zx(2T2d",! S6˜"ByC.Hgm|36 M&ȝ/BR x5xβV:bgj\թޯ%_nq1_BI u'uV!T=^XSDOa4*b^.ZT(W=D?/Ct  +9Hi{;3 נ-?*:\?wx_]FR'v1} va7%jކ!hX$yeaS'd@#CgiK٢I/?FCڪКFjRkzPVwO!?COhVH/7=GWlE9!:wV9iMpW{CVAT1 EJu'[Afe˚D' 4)s +ۻ~^DTWv5|6M鱹LB"ǹ8,Ʃ5x"JNނFbXCȮF̩Y&<+l82e0x*d=O15ih԰=?v.Σ7ApkLH@~`f2S (\'we\blF\t\f[$PQT73/!XL3DHJvo5*bz4Bnm_Jɢ6LOD A,ZV<37B z)ghI;fn~=yP +ṶEΚ}7S@6 :3bIw)iRր-L-p1YژΛtCUVԏEf9;mrŻ(Q`1/n{C ;ۤD=jY+N>'hOHT+TFH%Dž g Fht4~ًnj)`U>0a?.w;Gڈa"6UGţغ|0\a1}PϞ\nJD9@n:w p{纍Ş?yrPt=qܘ RyY_wXˎiwՄi'`t0iP Y%W~ɩ=̐gS> wܟ \@ik6m!w=Jxum*.!17-`\bɟQԌpm`̒8y~'|AgJ_t ߃p>DLUNmwS%XLD(x%N9`H&ѱ4=ނ]_dőpo~s椶U=6f9lW[C. ۋZ +endstream +endobj +1300 0 obj +<< +/R7 305 0 R +>> +endobj +1301 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1302 0 obj +<< +/Filter /FlateDecode +/Length 2457 +>> +stream +u$`O뫹L:I+C0,!iYvSk2Yrzi:Ί{} +VRC+IB_ECqӁos/S# yV%⫙+$_Q&ɫ 3 }|䧄TRP":fO+ ]#C=7ZYxMP5cA-S +`Jzdm|s !,ג)Ņ(*兢?@sda-6`G{Kqidk6˔İpV}TQLƓ F`AW=V|;ZP8g>e5tS+w!S=dZh6(q(7PẠ4tMlH6UiEqe.GXEpMJB^ߤU%0[B8t[xd@yv+  SlfE ~,)Ttx|0j]GlJ&piϹ瓻o(:D(լDJIHbɁl_RBɣ\Z|zA(jצy¬vMUS4MZ,GOڸo!&ov= U 7O_!{P X Q\gёlpK|堊^yk/0{߫f8=!%e +bPޞKSe/Rʲ |vvijR@*XU\eVi=H}0 !Y+{:#A.9uFOn^z(EA`O)Ks6Qৗ_}Ϗ!ԭÆ9I%v 7cU[K8Ht2l \H)o4FaVf}WR f'pJxGվW$8w[Y-ڭ :t1/*u[-])?hU-ț:9S #B:UB4-KDdG:ۡL_=ُdDmaoC^홟s %Wq~!H5D7iMj5뢎B!@Yϙ ^vhbnM2>2h9! |ii1|Fz +endstream +endobj +1303 0 obj +<< +/R7 305 0 R +>> +endobj +1304 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1305 0 obj +<< +/Filter /FlateDecode +/Length 2274 +>> +stream +$Zz4 uF7{Fvlgem9D,]7͋v`.zȨT2 Ե谨Wr'w@ٷ!7I&2Ƅ9 dfI˧^2=Bwth&{J.7eR{Pdt?@(oq jBݡڥ^`ٴ q[402Gll~rb?/l6])]QclLG{"^.M.KhY$fC|}@*a[X@u5~C,{K4+<( 񢬞7S7#;sc㍵`/8yÒpJWxK\rm`eVCOaԙAQj4\`wxT50[{\'R!C L Kkj z.$,+CjSӺL` T27|dOCM@'C%BD`v n +?rVz#ZΫ\,(+pMX"'3V#ټqj)W܄vA+EbEa6͊z*7vpC-{3ͅޯC1ʁNVRG*auo,!%%s#EZ1dFndtLbT2]nXMcri'/z/ D +qD5p׶vb5euݤO'hGg;bFڕ2W]S6ԐFG ;Qj *C'{"hhwj2&PGUq\9aױiFpZ0w1"^XۗnA+u0nU`9/rz GOt4җAFH 8[ߖNx9yR㰅23 > gLA~/` ;TE~ ֨C4+r~/'RgtPa(ۑ/yDn?ߧ(=8b]Xk @^5\Z)vi*}jwǚ:S.|P#:DLFzUBWS3(@2F?:kZ*m=fH,[!iRb@eVlT*:o$0>RwoU)Pf] +!CsL8Xb<~eRB&!] ^:%d}ZQVBB8rajɿ|[-_ţqJ%ݲwb\3&7 ~Q!*=\bm3*@:0`w9[~x|{z&p[<'J;jJVP#ta=5-5EƂrpQFAsG2 Μ{MR&OFeC~#nO=>at(x B}'dUxt $hL8pT}tJEz[]t-m͛s-vn0EZCR=eN6I4P4@B]Q)B݀h"d}w]# qxS>` {&*3u(1ZϹIl8!ӍK=ݴGKw])퍮'ƃ(`B 3[dhYݨ㝖x4c{LYrOvv" +)H +ࣉcA&nf$l + O2HW'h:VҜZ4z%F(bUY0nWPpmP ڴuC2.k (y!BM珂g[8p|sPX9;~xbIqő-ّ<8iWst#ir8٩s65 +"R-VzW2".XS)zXBkd49[_An?:Lt9=SMS24[*u_b<0Z2AȄhiqAM6hjޓd>ȇE#,Axr7Fqg".C%dx! ~4Ee i/%)r/cp0hP+ܣm[׭D +S(_8,tyeHkЬL0O)z/w@i{v,:_,.{+ju:vGT7, Rіo45{( {׷ O u)Io 9ouADi +endstream +endobj +1306 0 obj +<< +/R7 305 0 R +>> +endobj +1307 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1308 0 obj +<< +/Filter /FlateDecode +/Length 2669 +>> +stream +:cDhot\bɽOp_E -.2nP:; jm5Õ+Kkq{Y +v,FwTJj{AAOJ#N9ʏ>ebn|ua$V\Gq\W Y;RhS[íƻ:h rF!:TyGK%XJd ZL&ӁzĂ/O(5:-O}= ++VѼ[,1 y}C=VDirX 2D<]l`Z>j)|IF9ެgK oÂ_"K|%#bmӡ!x%=]KU4Wݮ?v{|8 9;O||ԪZg +Y_^m # @{t֯Ի psc2.ZUIUG"J|T $؋?f_m9/x]=)ɚ#=[{%M&,2"6Q'h*Be&Yī.97"⩧( :ٗQ楶SwvnJa{N9* 'Ak5)Uݒ :U'Y/vm1){g >]az/ߑVmm7{k0BNeṆ^kN]LKE$Ƃ%: ~\V!|E7Ol/3taE)H{O݆Qcɺ dOOM{{\@`tlcB:iѶirhzsGb{!b6(Pf&8o*Apl# }}s +Q0녱[VW2qduRIoR4H%DJnܴG>M7Έ!\ᅂ?4L, H +m1ʯP9FˍSPdG/ 95K<,3)^ppb, +{ɣ]`@3ǪLyjf9R ymСxcͪl(Plr*ѩ_ !$؉D6M'q<8{~H먭0`c8`3R5;' ~d}4ɔ +9[gLgP/;pɇPT725ջ8twIU7B``4ݯ1`!y}S%ř}USI+M0mL.۽?I_1}ig3*t݄tFT +~+\p]xl3cLK-JK@L$,'xY5Wx{XQ;A :A@(̉G7W$X d6islLmy6S +oɉnXb;gZ] +\HS_>$ǯN>'(y'f})ld:izN\Ž;-b`  pރ$QZ_{:j@1~sBL'Jt R â \s3'8)VѿRYiBU @L6[g'Ab8hQX( UQMc"7 ִĊ:'v*n+8+0؟m@e2Û=.sisp[{r3 +miJ<5݈%n6 "}Wh;uʢQP4 : l@<ܮh'B6Cj׉y j.Ⱥ4/!YsTA  +j-]y8M7%._8O!`XO2hP xHISL+ q;wdDpsiw[<jbLjUQ^HilsOq=Q9<-ToNyPAג"U6'T4PlJjرy&1QW\4ldW1iYּ>siQ{GrIFb- Z#Yo6݌0l7izr;k3_ys3 0W@/,*j-`/Ԉg1reml_8?ӳMGVF=9r;n]| +2?2Yn?i_. _Dhj/Ess>F_Khs<k\f' +Fx]ǃl ݦy~7{TfFZqZ9@;9V߻n.G7Hxpܽ=?lAȐC HwĖFAH^m/BT]܎)4)3jkmOEz:rc8փL6m&"'ՠzBSgZK+7TQ +Uub%v,WA3paS rb̤IAT$ Xb_Rw_hB[Ί(NSRdVWn"% + \#%6c lU?hO,o3h`9W'0> +endobj +1310 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1311 0 obj +<< +/Filter /FlateDecode +/Length 3118 +>> +stream +|WNZu5 Hl䗕_죓D8>y8|xrD$ۥďdҾ_F'(>c[|II &(# fFMoヺmt=/SQD`鈶ǒ&,8Na3t#Vd%`p(wJ)0;e~c~X]%L_.)It`Ӻ +;ߩs/9pe54F:.Azc JL\k ) `n][ V ='ش.ѺHkաBQ}8[3^*l욚9G|'{wz{TXrUx6s)R~ᒲ}zyjr)wXvy' +VXwR8b{ `(y yݛzb1ź7އ9y.U}tv\c@R7jo(űa}??%p|r)"|+T~Idpů{*P@xX@ +P\?5$T((.qs,~ +gA$ִ2roC!%y7Z_u +js ac[&\ЌWŐe ,( %o4wp߽\g+,>U} MWNI.@4g+Tϭ &7ɣ@1e9~7&@LnaN {ļuXT̏@Wz{J8}I7}%Az;9 f^m\HbsgLMu?P]d~&eCV8GAʀw!]ׅ[.yb3Ű48_¡lv +.f'zJj-[2K gb!}PCĖ [dU :TZHL +𳀗^7 IŽL$Ƚ!d $Cp@-]m*Y/4pqNh.ՏaW"Gcxf5נv7GC ^wN9/$Z6gu3!ku#κhc嫎blW+x-j et=9'B74FS*+݀@Bpb۷eȑ,/X(+M1G*7+}.!M a8Qxc̯a'+c;!a?9PidfC)r* @h=?h{"MzyrEPт85esP(NO%׿}/gyFhl1\8)z:N5)nm^!!ol&8/? F5)H.4>B3+ć ¯)At紧<*n߰8z 1eSg+DĘyUY`f;E-)*]1*!?&eq@hɥ:p_MO*~iV pqQ`FA*33euNaۜnA:TZk5#HjvJ& 1ADA"6ZueWxOzpf}#Xs]zS*E;9)zKDPxz&Ps*[eą &0Xo&ro5"w"J.%3)d\ҷVNB{ta807N+{W/<46 B>Vy3^5MM/HY:&ԌixeGϓֺ lU7jw*TUN]~.ۿ!bnaކBm~|z[Z +endstream +endobj +1312 0 obj +<< +/R7 305 0 R +>> +endobj +1313 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1314 0 obj +<< +/Filter /FlateDecode +/Length 2618 +>> +stream +V` +7":==L!W8r(eE\˿/3?9(BYJU%!km&w*y9 +k`tU +Bgz@iDc!@&dNo ]'ra|AGb  dSBn딟)SRH(Yctx #nWDW_s`z:n9z3+Vm?+<3XM9c|~M8Y7,HabJ.R}ua d?O>=&E^bxM]op>f%?RG*A^v y) `Rp@W"P ߋU{֯.R/iXi ɨяu6%}ʨvW,.C|#\I$x4$Vjoi\̎dUa#6;&;Xؚ#8+}o=J/uܗR"& ra>O"Bu3m.+)]:&YAeSD;)G{%^^m> +#0nٍnrv|2d)&IH8}/@r+{fg} +]!UʙEqt"Hu "2-F|G=y":yC>z[(6JT|\F~H+NȥRZ#~3*`? QWUkxWuGb27#~sPkǂ=HQJc2 +n&*`T[PՆMMc3ֆ!pц 6-.?Gzcbh,Dթ#YVÓv? rkdZ/8ɮ?rF8U@x_mw^ Fz44]#جŕ{wIz쀢4t(jd4u7Ze4'YPm; | 6yv*H;9~9O/_ IqAX,iUg#PnV50Zo}"O)V˙rtx@HDyZÀbN-&桭m:s^U IhPeɛHtEp?)alR!~98ɥmRh3׈i&n(V$.'v zi;wMw8^z6Ɣ0h\pM.r54,aDɋT-odd?AM(*NV!jN;  +Xn~:;Jλm[SǑpZE񈪰T#ć 9+ޓbk'lH p~+{p@qjy@2}DN0bamrtF#ۼ瑖jNSeP"GJJ_1-vQBPI'i7U5xb2]?ғzԍ:x#_lpj *G6omPZ.AtБEl7jqˢ$bThaw*8r Z,`!l&U4mx Vr{܂M.;G29C0 %QONP3e TaG=~ F3[WG0scձgFaRN?,d!>lR.,ra ~+`^8&*~beѺ dKGVBnd'2Ο"Z2b( 90$;ǟ(BPp$vA*I8*sCNP!-m'4އ.(TKhb cf6Vr%e}f-GxVZD(LT}_(\6RfLU +mD&eD/SpV濵f2]~dEN_oLaԿuX.Le+.mStrmH3H,|]<'(U3)UYkK;D1c'iKka 28zHC0Lo ^zZK?~JxxjE삹g##,>\Hf♷Eos'K:4Ϭ@1}fC3&U%uקۮIq' +endstream +endobj +1315 0 obj +<< +/R7 305 0 R +>> +endobj +1316 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1317 0 obj +<< +/Filter /FlateDecode +/Length 3076 +>> +stream + JfUce1I.k-&i7?TؔlrzG"CLvOޖt2sVrDW1LcuyJ)- +e/]ϕڞ1X@hE.+rÏ BU17VY]VȑIŽNpi#q7-.q_g!6K6eOä ?f +J+'0\P2vLNYq"G4mPnw/ Q=+ `'s|zM[Kb:&2԰d3-FqduR'XɅYNMS#1Rd-wy3g%U˗BJ80Swa1%B?uGo|I&@G-fsG2hîH5@} R?b35/#g4R=xX\*GZma}ZPҺeGmnENʤ6,g=ilVr(5'&ؓ]#*BN@!]HTP6V8bv k)8o!v i h'9* I 2aSeeaGw +JJaL F`ljKja8AR qi_A_B [26ᶳVP !8uk{+Pf6×4?mb +H-ڠy^du?0=hjz7n0k\y=,5Qw: ڛ%!Xe-mJ֪TKꡆNïʖ 68 w8L}?~zyo*|FB- FwJCC-wad28>vq? +tm;ѣhӈ+qڠ0e# Ht,#ho|x2f/Lװӵ^,KըMC_gźMzJ$5kRϿ.dݘ0xo?z*'h"%nR4^+Js͌˙q/P"()lx4ڋw. t̥-("\>cep"bA- +~)Fb߉=+6^* wy}*UB6WYUd.JML`U(rmdl>(I< [rlƸQ~'SErB;ި=Cne^_ 3Gfq31yڑz,'?x*}O3*GAb?i0<#D~ig ӑ3!'wVF".,az":LS>$Udsl䱺@òT^zay<'t'`(K`XΣ ȍ4[œ:j!.[OH(3K?0_Eql!0]]U-ڲyw=R2<ڨBlJ7R]IL +K,1GӰ$.d,N5f.Fe䪸Or0J ?Wh}X^0zQdrOk363%E >o@$Vo}}V(Wm5')H$Jxꄍ˯_ {Q3Y|rx&S:{Y9&ѲvdyБRp)PG #Wڐ`prW/߂Wi73ݒ.qX]*dshlY +K9EЁ,InW>~me TõASy~vnz(@0ur,+bPL#wcg:dݖ_ WC0_H$_#a+XyV*y kGhD/}Q- v?l Qӵ3Xlm|i3~1myCqA=S,g4/E'O¤m̟vVbvTN/KBW#:Hh|s+i[j8^dOiGS#C@K{9_5ELi+z _Og'܈rvPd f7Hs랩j{'} +JN f}N6;%a!Fj3sjj) vO/ Ƭ` ' 0J@P4J LJll:l퉶u5fE`TR1!MXlGW" 4'_Y I@wrT;}HͰ,Vzb8!Zmt˜~?Tv)%{?qәcC@ +>_N(sI:)mCUW H.?2A|>nP8$e\N}ҋ)F꤫5r2q# fujV!CيX5]> +endobj +1319 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1320 0 obj +<< +/Filter /FlateDecode +/Length 1978 +>> +stream +q\W$Kh% c4-fL q>d{˅NTP478+_Ox VyC|=ZoI{b$QS_X&rr%C+eKo!pL.ddxfGC +fT<0EYS/mU_g]?6LBNVo'. Y_h-E=GP1gzޘ{}xݝ@vzooXI>O7nh;jXRNT\"ͮ+@/K8G%!􊟭nT$M&r8~nס_Pi}*_.ruѝwCg̳5\C-^KX d/we_g?E4=ى7O e)aZNI +'a{;B!IX¡QNqB|?[c#i{m7$"c7=BHgU(mFz m8)T]Vo5N&y,.|,va{x +.kYfeA(l1N8M_(Nz[3gqě!*1xfk|7.jֿ̑[UMNJQ q3?T#WXCWKh=4b9",QT_05.r+ڃW +\z'9Un@gvש}o|/J@O]i|L7gm, );ͭW9E:Ked //4/9{[YZit$ xD2gm@`sMWK3k#:Ⱥ[׃VH-Vt7zTWɹpE,w޴K rW2S?*YqFqf?7Kk+l_K(>3^C5}7Q[#A-ac?vAY_ +D55k2u#?x-y]uAANs0k_Fg>5}!<#[׈C-+&YlcMe0[АLD%V>`ZRB%y!K]5PcH\~,ل02 +NQ&~)&?~W9 䛦0Ljv#ZnóϋL1Jq˄pdoiMs/O%_!+<pFqurQw+? zH)gl$+r +TOt,_k(yޒYs`bhf2,!~.@Wp6nvh ws)zL|ηJlR tE(0$,D;ĹZΖ.Rf7'*!3KP{^Ɗo)+璂HK}3 s*+y jMOtUQaͲϹp$HNAcY/ML\W)0*U#VQ͙Q~>[PE^z?uRZK=3ڥb\{]UOq遞ȣd7r3v:$\#aɧ[u:5|3mW4ӣriß!u뚥)>`;6ቺ~hrRˣ/?7V,\8˜rf[,ѻ5bOoU{D*Ɓmxr"Xd{̅> +endobj +1322 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +1323 0 obj +<< +/Filter /FlateDecode +/Length 234 +>> +stream +t5V.,?kT,Q?9r'k8OOР_"07_ +ڥ" *p(1ŽϢP 暻CMW|!&ӿU)< st˓u4yyV֔,7B4'ŖRC V<9%87s&56qMRӐ8~ٵr%Qd1Y{cp_[X̰ϊ§KD"ڑq: +endstream +endobj +1324 0 obj +<< +/R7 305 0 R +>> +endobj +1325 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1326 0 obj +<< +/Filter /FlateDecode +/Length 2826 +>> +stream +S$jiNvH4A3lj'ソJȞ!G-N'xoM"D=NxIQrĒ#˸;GMFS`4U6)RO4E<&XP\Y<>ϖUtjTy`d61Jcdzx~`%S`\@? ޓ/1c@F1ǘtF4%;?>a+LCˤdz>|Cc*߅Kk^X玸""a|nZ{f %@,=iϼl/zO,/9+B%eAMBIHc 9=@B;O}S 2~β7)l_%̑Oook.k _뼬ZX+y@ -P$}Î&oCjDZvԨ!418bԈ(9Bʷ:=A FHVEE}AG&~ГsPWhpOeF*gFDff(U/V>!Z4RF5N4} DƾC7n0 uΚwfR_9sU.;O4 _16Vnu!5iЛ_&7YeW 3/;c}uNAQ͇}lrNNQՋRJ(F2،7S Nj$ِj:b+HͯJ0+jTl̃"@GlR j:Q.eyڤAz2jƨuh>F: rE;<1A_+}b6.59 +!fDOKu\ H.k)?9RBquKH?ݢ+CO!9 H!h=sb^dNNbvyO:lX<;ƒ;q,KЉLi4aM?kC^E X GwEqj7~vRL"3KY*D*@ +V%ܑo\`/{ 3huu$}5G+2@஬cF ),ϩ6vs(r28፭ؗQELS| ƻEB+ҞJi!J<1?QO볽pI؜Uځzo;m[# ԞP*? ]rL F x"RaQ %NTf.r:ŕl087%uoir{NiVec/k$r\/;P7USg+{H:GjJ6vCctV(Fuިw;ٿ<Ζļk}gJd  %D]ðSU&qS pԤT"8GFhG>3_U\]Fp1rcMLylq 5[ՌQJ䖐khwenTw[sx Bӏ;ks"!ɾk҄ZO~U{VCJ5|V.3pu_h̻`]v12oBG|^oj:7m5׉-i̼ "N2 ]D7.B0D Զr*uԂ¯\ 7R@L?1ؑg*q謂uY l|NFMV* nr&ӌVX_]6D\「Y6ّ.P#ge`)Fwf$^zoa@I-sie;R9(4?r7GgUY+RH/oORJ2C]6W v03_5[ ҜS"w-a-b¢q;"}1ɖ)zND<gWbN~MqyL8{etZ\>9GJAe޲% JJŊ['>(P}.zR&/Z(=3Ӈq˕{;8$\uE{,=WJbi(?aMkgY !O'Qz.H6 ["|p5QFlDAư DT;Sډy:M<' nCeK1O]?^9LYj#&`SMJ12UCwCκVBL+"÷22|H.uJ$=DPzZ&*-|xCqz!ΜƢ-l=ĘV9epF'HѰ!|N7aM 8Vp_?/Ҡ(5iT&2ڑXx__$>y徣KBTRVҌM =x +—C?i1HZ #%[d9J|MUԈ-k1:KTV o 2[N-TuB@ [̅-܆+}HΖ:kG;^ ]y~Ę2uF1v4i|q> +endobj +1328 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1329 0 obj +<< +/Filter /FlateDecode +/Length 2635 +>> +stream +Ԫ)g)5}e{v꼭S'j sOIL0jJi{1) + 60Z-SiK(c{y?׶,w %)It8D +Qt* +9=B/@0K)D60 eӐMjf$HXZ1b'-2M>a0NLi:˕Nt.83 {^!f% P3]sW`)]6f0=0Cm&S-܋/ߟ;b̥fk1 x7VUWn;GϔS]cףգw +s@OBIγ1ɾ$[CMṠ _;^~l)6ũ ^Vo< >iTu/6"d\ y =Ux5!;Ձuա!2'-?e, s?ɱ8.â(4dʱخ]̔ږr{7a e470=59tY9|,"?`>E_(D[%ڍ%`J34 + p y_ V+_dPb:Z4gszUt4C m$ +${j킅~@RW:H%4 C`)Lz:ʍ.1sNc\Qp"vpC'9! t[o`G@Stʪh?>4ݿ0#f9ùoqǗM>x0FQ)`~ٖ+NMꝳ2/!k+.^8BA8dU4.T-}jMFlb32+٪Ď8\QgjUV],zˍ| %h&7B;bwz$5ﮗiCiW%;F4ث090K=<ֵ2jg7oƯ9j;fn(do=/;}I_'f@S$8'ѓY9ҁ?)z- Qt s="pD&㝑qJ+"GtjDHriʠ g앵ц$.S as\-eRsw芒 h۸O(xFXX!5sў kmJحfPlxy(SU7fEUmT*#1#߲~cW!hȄǘ&҉,_^̇;p~޻;kO}7SB'9,yCt!-'G2_61R|D\Yvgkj逜9mDJS1/Y!%*ZK Bu=!÷tsN"t#H <)| њGz_ffi*ΣПLaS3i^}18qHg\`,EhVB|,7DFD|\6(o 0p'v|Z(ni4ގ‡Vbo+@cd@Y&p`T*]lw Wd5m ^Y[>CB!Uj *\Uw|1Qux˃!3w) /~+R* G)f3I \ tO"3k0f0q +[ +`4\5la Y11:毚gu\?9zy^P+ZZ7L"" ISeHY= 2ƒzy6.hMTy0yh ^)S1;嘪pC~b1pGٷgH:sMfCɲ-vo= d6l t; }n\.'/HD^qE8<_|"~GKv(fg3{U4zdmn O|M`zÎܹ1ۆ.Ra6YB+s=s0g=i'P'f%@p$PؤN^f~6 lJV3aKc(u ,_&(Emވ_9ceBx"lvK|Xq,D#ʺz(o_}e쁠<~DwcΛ06Z嫏̼XwP PM&J =ky>Ϩp%>×kHK[$t Zds%Y(; KU +y0{ AZsq_'94gGzKݺVfsfTLc0LB<2cȫ\زyټdvh_ĩu/YgB{\(RݽJT9.Q5N9gp!`EPsiw4x 3jS|Wŏ]Q~oR8oX?ǝa6Fy@JA)8{p"Rh{CO۱(?:?%*vir{@}wvhN-tvV +endstream +endobj +1330 0 obj +<< +/R7 305 0 R +>> +endobj +1331 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1332 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 231.58 537.927 234.646 546.034 ] +/Border [ 0 0 0 ] +/Dest [ 256 0 R /XYZ 75.52 81.46 null ] +/Subtype /Link +>> +endobj +1333 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 353.089 278.652 357.075 286.759 ] +/Border [ 0 0 0 ] +/Dest [ 256 0 R /XYZ 75.52 69.5 null ] +/Subtype /Link +>> +endobj +1334 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 67.547 186.989 77.681 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <1f43b13cee1a31b72be4fe4936b07cf6438764eb45efd4a629793134f5429351f67b9c9d75e805> +>> +/Subtype /Link +>> +endobj +1335 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 55.592 222.637 65.726 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <3e8424b2edc58af992bafca228e62429d6f9d7207f233a0060c0b1d0822bd225d5b72a277c80edd3a91ecde29ed96bdd9bc7d57fc1f2ae53> +>> +/Subtype /Link +>> +endobj +1336 0 obj +<< +/Filter /FlateDecode +/Length 3037 +>> +stream +`óӳjB OwT껧jݺv#7*H| +݈L2VsrC`Y֜srH3Y/Ze+k NDu!ВgZ!9Sg  F_xmM^𗩼-ۥsL0]MʤN >_K/5.0߅o3&CX&z3l낲mLH]F}6͒,e#”q` d$0kã}\{d,I 0uÀ0v1- "t wBa_). |gd,|2+k?8g;Uuuvz1iuM.EQ[?lD4dIn/{%b":cPPܫcOSJHgnaR"EB +"'5)D> +wS9(i(j_M-8ʓ%b)5/pO21_6&EvDz(Dg Ãc;3r d+Jh]]liw-.dNp֓8&诂^F_2٦kL} TlKT"6^T8+~OA Mol~P#!ٻ\ ܰs8JO8u!ɈY406Ӌ\ [Yql4B&(h,L NZogd*SiBxtZ aNTzjqgHUu`J}at@X;$Xft7A丹zK ]/mjp6rqvrxS;l_ ?ݾT,Yu12P<9G54]l u?woAAv0Oikp:@չ;Ė&eZCAAPF08!p dsM]X woNPٌПnFtR[·J$ϡcٗژz; Dp^2 3уl؝ f<'G d~ IuKjE;6W1-n3 _U:Ǻ=i$k$ۀ#8 t<\cb=TKb=5ã*SG2Kۭ]~*k6G,]7uZ={/ɉG{=Z\U$g2كtpoLXEn>&Q2Ld4GndMCA' l}{Iq(ME?)9FW]oqCyZx;k7@Zr}8"/o;үdAR ^셟E9 +l8ouEm6_0fv$kO`6nkM;Hx@w^x~:}#P/i]VÒuL8RxfqpF< +ch^s;\HnVD܆/>>2UFӚ@˹3(~%Gs:>QEMkQS"H"^! (F&l=QOw6S꓅Tbl5u8jsON;C{5gj}{|ziEvщ8eOZb'z6,ǭe;B(y0F +zo6Y6~/ tp!D2Z.f?ht_ r b|!O4f<%pp7*Q0{K. .1lp"aF-H:allUF\ 6[PQSM|oWҦibgсpBA۽%63$}gb +endstream +endobj +1337 0 obj +<< +/R7 305 0 R +>> +endobj +1338 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1339 0 obj +<< +/Filter /FlateDecode +/Length 1466 +>> +stream +$L =xi֋^nGi^idD]тeROW{T24eT&0‹D |ު%/A~qRAN"3HZn;!}sf,.{F&;ι"9<`G 9Rg~R  +iL@ Y43+ܱEw_.zy,D+!Yq,Q2~pՋ +N7҂ %v@1)8uG8:D-&HXj̕C)WFq(;UĿ$4PCX% 2lj [25]DJHڭM={e U&@( +{m Ͻi#|>8S]H +pH.נr8ɾ,tWke?27c +=`}-R*ghZ"2?VN}+,FJv3E~yE.K +@,/`,Wzޭ2R^&Y`@ttZ` *zOc%N5cK//dl:+ +ӭfٛ0Nj8e$3m%ꁥOBA+uѼ> +endobj +1341 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1342 0 obj +<< +/Filter /FlateDecode +/Length 3171 +>> +stream +%? v@FoyKsW |Bs嬺S>FGS1JGnFܧ(: +TfHyfue@ZǶ:Ef_e~z2:1D:/ Ov>8>'joX}̵&hS]_nXVwvLCN?C͆By෇S2k}\c3ޖTQd0K9ÜlW +HΣz\3{,ӟif.rbbqFz:S}|v?oʙzहJ+QB9BrowLFUƔH [\&MLpkJ(<PXD 4`*óu#Z^Vx +7!|tB:SҤ&l6+fO,m.J],F"b9v T}i?^Dmg=rӧᶜ ӠU,?͌\$S߾Əh9͂4 qg#rETx5+2XE1G^k*8$Nv$pDjep@zCig:ja^vUQmGɺ i "` 8$,rjw7R?S'd}Cgz0D3{h`\]UwZ.y I% x$2XΫKa^G+$RpMh_ǟ0\^jؗ|/TjbKXm=U-/a鲿ݖ#>*ToѺ88$ k6l7܆Q~ j6="ѿl +4(s +T Nޕ5F!"He&Е +L׆,=tyQ14 gͱ|gZjC(}=SI'IQ >t:I!wF O:9N2 Ic6ۍ50W|@`o 8WK=~˲)46ZP`jBpB^*Y2:.A޿L]|<۰Rג/hi7-0MxxM(B`H# tx($ esfɾ|o3 ="bq귑N9u]soVnIr1^`.sa~imQbɼBYR衢j`b%*<'L[ WYNӒ*yOSUk掘+osf~@\(7 |!>p2^aZy <M>ߛ+JV㍼ *g#莣4JYPBIo䃽F|ħz/3YGÃ6MM{T`[+[ Bg^U, {fߨ +r۟g/[4Qoo6pD=T@Rס?ZÚ04}zšO٭NO/3fK\9$BɎz'+n,MƧC8D22zAP]d5wv hnVtr /ZTa$]H*tL_".S\|O?Xa.7ѠCzV;9U_KK u qopF{vzv[Ql+6cT12Зkؾu?XC)Ьծ@ŔY>GF6ޗ"!9"Q?Fa5}- ~-38ydAm(@$` ή{0 cG.qרtYz.K¯W1 JnVd>yu0qURڙ?i9+^qʨRteM켖ࡔ`dcddWq~QoJ=j+֢$ Ek+jfik0aTG  [+q=}ei Zf`e v4E2gyn9L̆7r ԠSpf +i91bbh;li['c +r4!qχB %plfbB|/nk8wcP'FZƳs\lch#"(r $Q]l(Q*Nr}kp1;pz^tUSr.}O !lL8:d:Zϛ)_eX+)""r>Bm h1&:` +k/ы4\crci=lxdsgI>!% XScߋuޕt'w[zrvA*‚y]|=D'4D#,egV,Vβ:JgeIT[3Q0|B1u`v 4z,ȑz}(`^GC}UVv@0E]u1A*.U> +endobj +1344 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1345 0 obj +<< +/Filter /FlateDecode +/Length 3478 +>> +stream +ŕ'g;0]Y$|h#Hꂬ r^6֥ٚmT`.'NE"?ԤWZĎ>+]wCSGOYK^;)+-Kf/Jְ@hds̯鳿dH[d[F j6BOQ[qgi`"ULq!pJ /{V,I3 GԐqLHk5&fYj*7\VGԉ#zS-a%7&%ZO(x4\0+LbvN(]PPw7lm7 %Du.)RC*ȬIJyaZ`EMa'K\j$j[WiI1d: Z5kc9(&`711EFk9|qiIPHtd# A{NDя48b4[xP˞W۞PGUAȽJ"_18zz*1lwA-W뵺kyA gWpAA_`~c)/#)*Y2]S|Q eGGݴf+ ]Wυ`ƚo2/~=?e 6a +RMj +߽nOvKۧǧ饃~ \EAP7I/%~2G4·0tI;8fx#5BJI3`iΤt![D8W`YI9~390;B-z| ZSNY1s&Ί@uiw;2jLNҠmɵBR$F`Y3 +,1G@5OM%$EDEq!һm0ūuwX?35LG2?+B4MG>RbN+Rt$4t`P' I;Ų5fVeH}I4)L/JVKip)w&Jg5jґ凬'ӆGsZEW4͘IbV}tLje)f`J E >*8EL̐L{vʤ"_JeU_# _[ja_8DQj9SmRük{=/t"ecqG^/v9 +eka/2A;Xr8QF9c8:u2ɡVCkb;Տ k u1O,:OnmJ_JtxDd]>*E}?Jn@5,2ͅ3a פVSs (UU*}S Fg{\W%E傡Epi(W3pTfD}əݬ̿jP%<8>[fƪ|\kl2莆 㱤_DNg>Om*f!Mى {Oȏ +icJ[VY;a:]fSڈOt,oYRG+u +K*~+v3y29<Rv9¦-䀀<`}!msElL] wetE*ʶ!Owfmy⋫K@'iSȶiv{'d4#=)Ō{g +*)^,W+P=3urJNh3Q٢d18"t􁹴P9 Yl'X>`1 6)zk! 9!51ӟ#_6^+e@-UD>wdy% svlkK*NA"vw O\uf$gU @:.ȫƺe/ɇ +IѢ U}\*\Y*Xʁn3RJv4p/\8Je+={xo_K1np?>6e ɆJ$Mjh,h(HE$|4jҔXd;3"Rb0 q:! ;LL<'aOͥHv_~N'Z|&x|P*ܜ<-1ǀs? +CaM|J/ZAYs!](Cmm:y,\qrF|gsE[Uip&E{|P"K*- ~%)-l` +Tv$V1Hѭm>0 A}z@DNwM7ҝ_T r[,:C͚(+e8PLYrC1Tg4V% hdžX +᳛MRC;l~a]L㍳*`$izxa&X P(4F@1HaLZivڣTJxr3Քk8uwd;H8NFS<=GG?`/X7T+* fLB-g5OfŔBp +_Sv3dr;iY,ʃFRmj!sKWo6 ֆC۽dCo[˳ +,O$~/_=-}PF9Q8BztJ鑳_P 73fsUHxnܠť2cP5jFLj`0'V]hZpf9 +endstream +endobj +1346 0 obj +<< +/R7 305 0 R +>> +endobj +1347 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1348 0 obj +<< +/Filter /FlateDecode +/Length 3109 +>> +stream +ްOBуwvD]XG0,9pˆޝfZXzvd[>A%}t +[^KL#홈7ϥW_zKZ(#3P8i_! yoǼw1{pksF__#wt'- +?S+|zKS)}mDAx,íZŵ7>C\ ץc V eXKǃAcq*:;>Cw==vΎyXbxk[u"y-H0!Cu(b<55i[*vrI}o鵃ӲXR._4џÅpłQɢH~sXM!@=O&whM9{V_8Pq`bX) +C=-k( B5dU/jw.`1Z=kPڭN@^;OF~kEyF)sz{6Z +>/[ +9E܋.U$K +AodD^)3[CH컪wYUd%+((鴲{fc.7ܹOʍJ:}Եd#"iL(Mݐ6ߪ]vc>~ U-h$F:m).DŸ$DJ}G`xA\^]RKU$6ZD\Q/r%.vj)}4şdr @ԜŧxCQir\:yogذog0 /5F;k9wK5QF!TѨVhs/ah`Cdq>T*K:C;QfnZ##i T8u)A_P8kޟi2!?Eq拂0`m__̚+kL;3R0gΘ[꥖g?c'dsutcɤe۔WƊ%K!)!LJu939Y; nRT(׆Z{6ru!B)ώ&bަiRk5ElSş~8\0:"R1Ωf>f{=`&jx״8|_h9'y`!%EQRZ%j{h!C&n1"Uw8:9-W`X//VF['@vm` W7߉~RpqCOݷa8EiAiMpEGƁG}ϑiސ=u:߹`r=A㤊SKX8=f, ?}Kohrd, H•O$jv4xԦ$P-3#GywN}v6(<:J_¸=US?opą.ʸ;Su{]/ +)2洃r^nٿDn0r]tHח M| JӢY3F*uCoPkQ^4^ j*iGF +q6(gX@2pCV<&)yoy:"'?4Ʃ%(C;Ij>XKmV%h0QQ CBXѪ '߮pmgߨ;ϐlA3n w06'@B(iVwDPBEefa') ƢJ ?TwvխYE(v[$,,B#7b 1!w |zŊt\<ٙLV@jPSiPʆ,VAp +נ+sl:., hLE@f%'+JxS|p Ч5Ö=y@8 U7pA@ Vl$(>y)54(}ܿa}QT=cd;:m:ytS{!ѫr3Ry~p >}i5❉HVxfV)SP@`@]STM C.#{xa+xWMKR]~wDe$Z]m[oK"P ʫ)c+E Kn_)Nfb +endstream +endobj +1349 0 obj +<< +/R7 305 0 R +>> +endobj +1350 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1351 0 obj +<< +/Filter /FlateDecode +/Length 866 +>> +stream + i6dG䔲;|r-֗>3ƗWH~;'vFqRܺTatʂlJHݵyG&^u|V07b!gh+Y<ܳrOPBݵ%a]i_TjWIKy?ȼU9=va%T~ ETf@64fSn_-<_|#89 ^ɫjM!fόK<=Gh{NtL:7*N^ +%}^3=.7bœWgڦ>SÔiie$WDwru +D8|c0Lr;n)WnBEȚ 2D$0*Q.mLO1< IF/h%0D%|/×d>)q٬%ⷀ=B[oXnLe[$rBvz7 iT9נ'Ǿ Ƿ5q Ŋj:G ҋP|;o GcAvzwHwR ip )"ñ +endstream +endobj +1352 0 obj +<< +/R7 305 0 R +>> +endobj +1353 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1354 0 obj +<< +/Filter /FlateDecode +/Length 2855 +>> +stream +y7vj +urMa~3i*u7cU9NoXj9=hb|ow)p**^*暈`)Ɩ2Y6WFV~ IFN}<|o/V:!e8F@hE.}}3Fv,-u Y+ }A ZCFy .^SgnɑTA)&]2cE'j1ꆫcT$ILAdI+Ki4\Zj;ƅ[ιN]Oa^1W ^ M/9_)NaܤvE2}9?T"ƅ˙uX\x{nEx=/YnK.BdGՅ;tQ$wŽX'?:($bEh4WK_Cql^ %ʆ>b^'TN^ENGWnjd:ϟ5R!y`]'=dqdkӑ;Ĝ͐˲7//?90j}}=I%zͲ F' Y%nķCtBCHvxfYH +4a$/_\sW swqXV3#]} \LԢi40ՓAYz\-^d儇_? |I`+glls8 +=}T1Ukzo~)s".jSv#g;\e^oA@ +x??2)p͜%'hCu~{d:fnfuaT׿lu6@'.a|, +8 +I y3\m*yrpܫ8#~hZ)n=_2lS$3ւl.CRIa7S*H03 6 1/Muc_l`q֯nUX̰7x@Ld-SPK{Jb~WL-Č>k: 7eN+׉+Ɉ \}VJJJʴ>Tvߧ{kS' f x0FM*Zko4d> +endobj +1356 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1357 0 obj +<< +/Filter /FlateDecode +/Length 2586 +>> +stream +T~؀ +9#ayfr+X̑GėcGoGE/:rt޼x{9k%}BާS;aB6~kT 7'ED0U|<,I剙4sԮ joFqTn/,oGxb̛|Y+ɺęgy,{%TQx*ܚ@"^UΪ+}[>EN On\;~@nyn0aAhػל-V۶C;s(*%##Gv3?&PYE$D(Jq/ZRk +`fnP2; m@msv?x uOҿe {F +1ms  NiB"4<|MgYm 3z"]QTxwHBuaEU-j /%3ׄl\{9 +l,{(=^.Uox=)#ӺMzUDWfeo5-zztȳNvP*7unm)K%AY9c +da$L]|{"_9aM<DRSY#hY[6:n ok袛;+Y \30m2bjwkPewW@~OЁ'4S=fAS4+K'j&N%Kԗ!zhlV Z3݆0gR␙ѠYM ч6+@kl#gBS w$9S|WHɾ3(&6o& vo+'% ],"k[btl]O󄏯̠b`g8JEet~.LǓ P8ŧdHd2:4&\Ԗ`F)zTb& &In~{MqIZo(^ew8Ȁx]3z|Xopv) H=&\I+D(r~d9NDidLFaj:g#%/hz),|v:2[2,5s,9bQ?si[11I.w:奱b}Ygk4>NTUK{4vney&$`0V6jӀ6Y"(T'/b\d? +|0~-r}X#2qğ"ǂF;ga*NzNQL`K^:0O~ ;Na* +T<"X#eqUkO+o4P+w4oÿ->dh&QL*+@,b,kbFdw& iC<,ˤ`ARng9UNtrPpN?׈0?pN" m'q eBU~?Z䳦C2wlA-Wc'CGafY'_0f'H#D,!J+3TCVSCɾ䫭> _ޖ/Q[XK7QV56(.RuxOljϠ∠%LJɯ%tISVsׂ'3`;|j/2`3Mp5Cg'~re. SV}lBnW"iW-aQ|@zşGY =[_Hl]iTf"8g8dž?RVkt';B[ؒj 4}q[K׋Z-}u.uYYLʪeO(z*^,^K{=q:yHސ͊ʹĘ zv|͗ؕOy:J)WR\YeCF/~10>LkԂm-)MHk1&2^n ˣ řIs?_1ӘȦ,BIzq=NjMT611Zu>`<E%" ^G5wť-dlHٖ {#-X9I.Sፊ *.>[Y} п y: +Ӯb5 +endstream +endobj +1358 0 obj +<< +/R7 305 0 R +>> +endobj +1359 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1360 0 obj +<< +/Filter /FlateDecode +/Length 3408 +>> +stream +=r-]vzP$<\|$O{6 tTQ +M.G$ݹzLoa $*!+E%5&C$.::`dh]kQUmX@ׄ +BbWE Qҋ1fəWH4fnjSQ|UtAuJOr]~Pד_Cso8ٱ|\G40P8Zo2uۢ6\bi9XERE4 E@lb) c+NN %[_f7a 8/BȺ'dA^eo, +t5}ae׼fuXޚgȼU|3 b(-2qD4O){Wmtt:}f_YzLX,K3i|[L@%f`ːhwēŗțQPMk"h86xڥH Hv~ߥOeEW}pWFT_܊)dPpclvj A(@*!WR3c:yQ%TYa޿iPqhz2OESE[_`sd"c_')CY &ښUI‘v(}6JL'=vvBEh1U}\uYSlpTe=Lr}ןI><^?38 >7BZBw"-.M75ĮmlDKC$IqX(xXN[u=˓EVT7g􌐓'RY69ʮts[K<#'_Qi6ORI 'P⏠D}JK7;[Yv4]8'GC-}I$zM`f"6DrTrH]Q…$ +F3cL l@ s,d'ʷ$"1`_3hSU cFs97(1׻/EV~HYs8%qϒ6pGG{/ ׎!@nK\UOͿZP ƿg8ՒTVR1Ħ8F)1p}q;:aR=rg13َYଷ;qȍH1yǠL ^z5ŸkjgUY{@ 'OjƴEGtHCpI~PIsoqwΈc cf:Q Ns T&"4 /ncr&! DDWcW}˓hne|ť' žo\2H|̲Aæ?! @Y}Ѽ:C/ ϑdG3r3)b }E3դev?imͼ0fi|?jV5uEZ~%}`x5C8xpe$9ժ{ˋ I97Ik\s8߅"D[J`mҲԂ\kl$>WIH!ԤܝJTSυx.lgrqH ?ǛC-\Sm x4%˶Njo~rPw_v}uXIni͡@~?^ :Up8NB?u&z vY$%HYo+0z˛(4>8%:<$[ !r1EbUD+%e)GX͓k_8뵑 ϸ%E hRLp=lFQ,L_| ևg[9RK5c{)ep\d>LJ6f4y ݉N}NmZ҆v qJ[8\-g+9X^ FΊcЎFVڈL)P#(">&}5? Y!Zg-(!VBL`SHVvqAy>6aFA}Pc|sn53hn]3I +6~zdhl'!h'my_w`>0癀0o )TcO@a ?k\AOsӞ'YRЋMHP8,·bz@*]s>5߫ +endstream +endobj +1361 0 obj +<< +/R7 305 0 R +>> +endobj +1362 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1363 0 obj +<< +/Filter /FlateDecode +/Length 2718 +>> +stream +KKO0S(Q[OʭKŁK,誏!W{9M N)R$"p(-om^czDI~lDv)jyb0E>5 <^HQخ'L[)gJ>SpG6b%_ / (ڮ(jZ4siEnXM!o/Eb@..GP!qDA8`+[ ?3(;Otf7/q0y-4{/ѮytF6aW9"gԘ]{ TQ*3Ԅ)S'vlbM2%It!\;|znp=2 +͎M&asj@Ϳ\$AlQE%X?R|,vgrfPM|fPR([xu3g51iHi%-+h8PqeaTmgJ?bQ'm݄BjbiDC +4DO5/4t.T=EyT"KhZFwM'0eŸ]e(x*L1JYuoehjsVΧSwb.k싶QRLi +cr~lUJ (xSlX/zʧ8 +jT@ڦ-!cJNG?DHֲ:GJg)ƀ@c{W"sb}FU3_t tG!ͭ-M +^,ln3Js>wkX Fv7FnLRcʬSQcۑmvZG>@7dPע/DZ1[@|tS<˓9'`ڬ& @9H. 8%@yF.hOl^t =/.u jqyBȏ~L/_='hϺ3hJiݠBXqv4LމP^1KF(W-bPҶÈUj Eq{>Tz|^P4DAz.t֦I\+։xYՓ9vMqԚZM/)f2؏0 o]ZriiA-8Z}r11W[)=сR 0ߍ_KiS=a`aMu0Ikj[Bw 0h*yN᳇Et}S1c_ԅbjnւB;Jnk0V-.0G\);u2G[fc_\q8x6SMU[9|PAXck$e8|«I#C%<[JcQ +VG ֙tSҞazCх`\3(l.)yThm^ij.h>&ԗ/Mj"x;W\^έHi/b P xh $,Uxw&a̭ -{;Rڎ5~ w2ҪiQcy͍?nXHC[J'RYԫO1{/+ƸO(1gIyw8|r?84vj)g.7ek֬DE(Q{mEy:`2Wi6.>\ly886ΎHb#9~=5sJz`W令v,=vA n_"Ub`F$i6?ŕ `ܕq5@q> +9I0@%k!"MN;ٲqAWZ +endstream +endobj +1364 0 obj +<< +/R7 305 0 R +>> +endobj +1365 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1366 0 obj +<< +/Filter /FlateDecode +/Length 3002 +>> +stream +jy;Ϧ1ul=@Z|'bA%s2*k+QCi5B(5ztk`g"AHM@S˺J;4gLeh .hsW^-t頣70P5[~8g"U zPIp)v~Ӛӄ(Zo]H;y,@,_LSE~ +.QXb},_-\{NۃeSYwoeh^NE7[Iݏ0엾cZsi~Yhc&&TCwtz]#utw^m<)8k %虮깆\E ZLZ#ifI_@./mʼ-+H +-u|X1a\XmJfqpڤ*ߍˑ֥xQA:va"@ώqܼC&Ė%1UU=wxhno#j -73fugDT{v'0-ܧV D/L9ƹԴdkmx=IVw+HR~o&͠״\ 0xW>_%l;*#<[:x6X14H> uOu`4ky V2*D%/C4%,c0C_%m5z}Q1~D0peiGo3w6W1[.(5[Tr1.ܚ^{]YZJdq꣙}D#2ShI tHv +EPRXzu#:\V'#%hD2̱ mϭ"`w%c ڤ:Dy}GPn!&(F}MX!htQwD"{ +>_gFKyG ]V&Ш^\ч1{9J[ӏew(HhX6[]npݹav'l/ͪ ,;ų3I\ +E?D.FUMH|/6;Ҏ#0t(2 py^ZoA]ZfnElf%]l ILj|:d됮vV߽>9ׁ_$n^1 *ޚipP䱔d& /M$$UKmR֟6Stb@zt@S nVRD*y=FͲ5Ij΀D"#Bӑ$EihXQ}"&~-TޞVV@w?w%!d JTq/j#F)ܹ`tNߣkoR\Ќ8&ɯF"v?7JXl9&qH'g敀AKǟ@Sq(b[h_8*pdCDL._9(Ap $je1/*c]ƣɡ6gW\k7SS{۾0fY)Y +И)'{SCKfxv=*D`oTVA<YHf8,鉑;łT=#CH!j7JF \e!K>2> +endstream +endobj +1367 0 obj +<< +/R7 305 0 R +>> +endobj +1368 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1369 0 obj +<< +/Filter /FlateDecode +/Length 2944 +>> +stream +.IFnFJYp5A8rQje] + "Ȉ. 3)}ucQRV!h-uO 7mkƿ:Nk0ZI@A.V 0L[)&֨uSuN2Xw>hKǹ`Wz'dЁ:J8֧鉑˻zj{lTbgÈ\{Dž:=?oȸF?#f[.aUg* ܋,A+He@ ejXHX_&`3qlots8>Z`4/%QdtD2@jPo{|' MCvkF0ţRbmlU7ihfzLp0Fܽ C '+<]vF1NTmnn+o{VL dJd{>yRFh+_uS' 8 ZQN.lTg S\l)*r-jl 3kZmc^흚lrGWKrDIp Y䯂J]?VV}zdІfWK<╪M_\a9VX( +-qMRRv."ٻeдk|ӍKVrlh-rDbC`]xp֢ͦ|:^qiɏpZTtbr$88{nj2?nZ-A#|Sj \d!b@(13iwPK =`on?ʴ$ȟ2NKQB3t)f=a6;Rۈ\ B'YqI u|HFa2\妃OEjۘSu.!`D/"GgHBT(rs$~ 1<xx +o؍1P{dn<Wt`F\k;A%"9VC!0d!y ؔ*fo%64:wĻJZq`A.8j]3]ܢy8-.šdFNm0^6[iSs"b;C1 L37C9l֏B3qFl G=Ām$Tr BAKX&]Zw4JHf6-cvu] ;q(ƌ$1qPpؗ) + YZtZm@E3ޥ,Nw[O=fKOzUNgs] * @揳Mi;iS|~SXIjiUv9:ޗٟsxg2tSPPG'RG"aBAQ}l݁zwe~[O6'QX4N*G?:UН\7tJS'nhnY %Gh#uz (Z_A7LTlsS? RY:ÑD&/nnKzeBi tտ|asaS;icNɽ$51WF9^SU~SB$-w΢=-?yEցNՌ#.'ix|I"Uӗ~bv/q?x +>:3rY -/CʋkaBDebE }GtlUe]1s>6 Udm"E6Fc77~e+uW HFdOZ`DZZ+Veb^H-UBS?b c+6.CpRRv_ZL9Xr/r,^VT9-t/Hsԣ^E45jxNz#uH5I~+Sr3L̦"O-gZ- +PYzvocN82YRjq]~)J 7 +endstream +endobj +1370 0 obj +<< +/R7 305 0 R +>> +endobj +1371 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1372 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 211.576 74.032 215.512 82.139 ] +/Border [ 0 0 0 ] +/Dest [ 268 0 R /XYZ 75.52 62.89 null ] +/Subtype /Link +>> +endobj +1373 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 48.978 266.365 59.112 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <328076e0d03cc39ec5f4a110bfd30fd11ad3b7afb160353be5b96c9960d152d88651a3566d5d4eee0c919a8cbf6e22ddf8a408b59293c6bddb5ae471a3e84e9baed9e87fc43838a27202b0a36a20> +>> +/Subtype /Link +>> +endobj +1374 0 obj +<< +/Filter /FlateDecode +/Length 3000 +>> +stream + u;7, $z3gXL9S"6Lk&qP*.(K^G) SG9_\0L }K>'k@8u1S{ܤrI)_XSb6<Έ3F7 ]CRnt9X(ZpQ Ԏ$cB7 <`Κ6޽Ł98wH/,=l<6NnCm/*p"B{(N)IhGY~Yhbv(>M,ʶjV!?QXcDq=mXT(y鼏c<f<%SV g#`jW4׏52ܽYJƎ˵)YEN&͘xЁag@;vwXnj BRXLȄ &^~D8mb]vz*?#rU7fzIw?9N4lUɦphNƌA\A083EU[2`1_mLN=_(x}x` y:5>FЙ] ]&?HƐ rRy(ߡԕ͸A;Xٝ ӽAS=|aσTkW/s% +6iw;A^17+*Iz̀8T~gBV'PRB0/FJq|#zp`Br} sE;KШ^۟N&)aw $ \ju ' +bL l7 U@xn%qL-Ha)i!?*04jKk$a_&z(8SrqQ0؃M p Nϔm uEs8)t8;x:V","\*og+Vw]5"'_=@_qX>K>n&K-U8%v$o$pLG=pΔٮ-?]6Jw1l&"'>rnα+l;8a_Z:dnVM H Vs4f"TOrwXGs,Fٽ Wh> +ߎ"ʭHewYM͈W46RH,$'l!K^lKDfWbU=eiVrƜ.]HhqEږss@*E9S pO8 +c/)wor2!?4]jaaAPtyu(k}_L>j`5݊ouYg<^?-lHٔ >D>5ſ[B{8ZSb#e̷6 b + rf@D!jJ1;n*Sx +rDRuj`10*wk5Ƕ8&ҷ[3aI>=tplÖP7goK&"ݦw݂UK(Ifº0Ḁ̆]z\XMS-@E6@(ƀ'-FS@ͫkd5 TܹE9UKU5Ix68>r;;:̱GϨ&ڧy{Ӑ7v1_|o+͢KCS Д3le +6Cʱ@ct1?0Yy30܇֣40Un:!wN4 w@TuهtX8 y`!45L.p͇$f7g UE{ֳќ؃Rjnl>wSºzg  @ܠkĒ1C;-e nLeHNXO fR>)։wqPhLNqI +(L 8 pgJKgW?[Ƕ0Րmw9;U7M.0p=n ?:ln0k②28mت ʎǜ hzR~Uh{lǵB2}}!$JOsQlB-i'`q~Hug$Mz tMnf+LnKȦRw +.ժ5,/tuNmĈ3 }| +ܭӲ7i-cG0,-q)y9TL}\S9 M> +endobj +1376 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1377 0 obj +<< +/Filter /FlateDecode +/Length 2979 +>> +stream +\"˨ +M$Pk +rD 8$cwPq& IUFǨ8> h~C7t Q|rQ_MpE4lmhq/žQf6ehJaת?;b8A፣taX7yG;C WBJKv?ɢ%Gfi?QtFz`Sp%SJmNl$)˙NS:WY vl +Go yRnHCݟz?NkOx.# +Hܾ +yM}D5\) ԘS]ѭ* R\j"Fm;^nİDBe!·Lg7+WQX e"k ^3׮n'8765<27&XC'\X\9P,:걉6!Ni*Y/kV01ɭUT'MARDTUf+2ߺnj좪<< +8TF{,8;wэB֊C[ ۤeU&%{{A;gz:N14 + s6BC\PlBXgǚr(C]t<íPP8緈35=@P06<(x#4;a>n 㐇 2ϼѵj`Xvz>paQ!dgvGuU획Ԡw2ޣ{<-e#ޚ9mdd^Ci]n >st>ih U2zyΦٰN#:'P]ojHu+)cJQ K=[ƃV2/nv;sj6j}$hL#Q&]H8~~:*n@Yg륤ڸnzZO\5nwVAlXxBr  CzM-&RO@u d5@ʍf{?W[Nid5y Q>6HʈUQ"ˆ,aؙ'/vY8Ҩnmԟmo\vI Bnm>[JO@˶4Gdr*ͽN{_Ze}uN=8b +o- P^DʟTu3WASPm𕧫i_8B4@Ұ<:qo]` h8 A ٛe'AƎ8%Pb۩9|o<y5p .*`]>ҍgu:L)Oꦭ\FJXBrX$3b%sW̏*m.c z, Uq\?3Z}\W`,Q3H,DɨilJq6yF9=OQϕ GwB_7+o\>ȴIϔk@قZ N(~/b1Fo4]^`?hPKN +u%Qޠcܨa/ 3ꁗyy`/ :z3I.Ȏʎ}F x-&݁I F#u 2k"/@Z)T9IHա]Y{A6Jwݱ\Dž~NyRfm "7~!MN3Zu5q_]>e baW`㌉y¼E$GK2$H[_vO mR]r~՝X ?/ Zj产J) +w3n;b[< +\((NvbbOVA׭Ej4w.]rJҚʿk ;Iorl=#0wR_ ĕ z"f^n1w$ƋTP_ɤsφ_ErcX0ݭ.!Z} ,>h)y~tWA9h]:&.ӚZp/>pom]b ë_a]S4p@d0)<-Q5-?E8^[C,#Ǯt BlWڜ׎G9 O4_2hυFS5<2Dnʑ~<khӕ UTQRx׻;~,Գ)<;BKpg.kck P]PznWz IF],0!j +kAGz?<#mOH}\lhws⊬:lR|/>ţ(45&b\Xڹ CeHXQWX]R|Z_ z|%?(Hb_jxʕ'lzc=7~FP[o, jqH&-|`cRuu pTn|ɘQ2,W,Ila> +endobj +1379 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1380 0 obj +<< +/Filter /FlateDecode +/Length 3015 +>> +stream +rMjHoSg&Z3,>IE^AW=sbnhqGG;U +#}V5I)/Rk6-+G ʩf %r-&< ltv9;AC)+,B )J&*+Jsf9JXR~81)Xq4O1 SeDLVq).ˆ3UH$7%@Ez 1%@1. _C~nw6K#&eϋbQ1.;쫰1 |IB|>T}2Dt3uvE/&=$!{Bo#F4ӬIlHn Z 1>Mg[K^K"dB4R#:: Q] "C'3K5:8s؍X>?QG0o8Zf̐U3^c'~9˝3SɇgK$H6b "t$˛lH{czf(> +z'@Al\6Fq==)9@t?&n ʞsC89[zO>)e_^F@e{eCp韤1~c`6쵵'lJ:dW; l p~M7 b,4YzP?nCч\^,1 ͡6ʷʫqjl_.YME 3mNԛ*IcjY4gA(gY+h7}Շ1[=ڋqZ~k&lD}`-A2d"eVXTZ"&&L# ܨL,3α6dEևOʺ@nNsTztmfD=<.s&4{k|seǬ41=H;dA1WE/Z;-gHi]4+t&ԩWd!\$|8e[sveـGet<'K`D\{QșDqdH[N;d\&YHF1tk:mi{sn} pW("{BS%De4s;J,#A)y fX x;鼚($VD -Ħ!iSXDRyV hL '5T㷎 p|;j(<:Ɨ5Wzopq@*G_ύTrּoU _O/ODejc!_P8F)Ŕ!;ޠ]w3n:WϬ|g=ín{˾ʁ|0 X2on)2 &Y9[Y8fB3)ld+4«IOU"&LLiؚ)/E/9A;WSc+C+F{͓}h2;`GWe^.C2$Di]tXrG25y=oVĹ K^'F`Hq;E +endstream +endobj +1381 0 obj +<< +/R7 305 0 R +>> +endobj +1382 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1383 0 obj +<< +/Filter /FlateDecode +/Length 2555 +>> +stream +ˋg?ݬQΦ˕v>kγoBN/^[11AWkpjzZ4/։" $:;{@}Q+A%{n5+N0z*ijЉC-k8^~scX1]Q0.EQJ&%ܵW^z +Yꡘ :[*v֟ ;b^M&y'!~"'"* DGj%q$/4< #Gd@#p,={,M[mJfNG$zzF[-KhV^Ʌp8-L^pӄD) )Ϛf__Oqc +u9YmXUʑ-%$TM]AJf=e6+B >_38ko+ +%":~8.5Xƨ{n&FOB{ sB *;K12: |+͵dz|~OY?|(^MK%W'rj: JQ>=:@ 3Q>Bt@+&*IAY屫4Gr:B +w;-8emj:揚rHIh3SIG3qx~OlJX=-7.+gV5sÔ~ +بNx'q}dN/8'4 (l`IpVneţk~Aޗex]~_Sm$-.CWбua zPQ"}9=TtB9սYJV'YOȥ 28. +_i 5x@|aw& Jj\P%2x KɸlݮUMvK- Gi$OAe/!ɤ%KKPa*N) b jXÚP3G= +{CJGw7DcU]YNx:l-Nmacե ޸ڸy%'7ӮٴHknr-|L}Cns.bPkP'P* +Alat/yL7['ee5`=dta#-F~wa`$B;79*ӽ%{آc4@"?< WM)Sվ'9y>,nw9B (өK\ {N?X857 9;ƠܗYV M0Ծ,)q 7. +ǜ0T3,72Э:4T6qb>D2hN8BoVHmp%3d7,l-CmCuPj} }?VY9!1I|^ zl7۟1+*ґF O$1)6Ws!Un=d)stOu훅ր8Fd +5ngLX vA>gU}LqUcKe%BG8|R.n ԓBy80OidFmƲ%DL*MJ4h[q&UL>U4$Zf})Ѻ +endstream +endobj +1384 0 obj +<< +/R7 305 0 R +>> +endobj +1385 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1386 0 obj +<< +/Filter /FlateDecode +/Length 2680 +>> +stream +r}.<ߋQ-E]q]䌭0SឱC \I?Ux70xrV*_,:MW3mޫiV7ǰA/cPMZGYЍY]j$~ )w[ G]!2'5&Ao/GCHd!r/SEǻ{\aY=A?Dɿ;G*,M>M*yގf`L4J2GKkT caVMS1B4|31- aq],yKbhQŐ/%3 XBr'8!4 `m߻_*{Yo ŠFbXؿjH2 +a|飮RolߋDg{5n$K%pt=ےr"_O  +Yuf8Ԗ ^ (`㏗آl>j Q}`k꧉9#dPOD m5=?qW A:h~'yBhx?!Fd6^9 W m=x_D f1^;S׏<u䘡`N2`)jѸrZ4qp.Oݝ6ANpLZ + ++ TMаX[$*I[Ln8u1fy{ņr;7a`%ᢔ+;F{Vn/zB1rqz>m}l1h~f '1QKas3NmTS oMtYO܊;Bo]V>Uth~Yia'ƋREpOFά쯚ɹUvWMN1CR b )x8SA?3Bi);96__3C#'JطEvrB1b84-R4b5SӪ{V>EGo٘2! +dbk1z*KaszN>@P/b.UBJi ‡=H"88꺚FIKrV;*N1(q=Sbid2ZZgz;!G9c^A2/{LXwD ٲȁȻ⧬B݌1YJo ]"/>K2fWG9F!%YD2Pj,.o@tsQھLt^ak> * D;4E0\IbNsլ^^,AlJx)FL*nuuR nX3BlEҜR*znWv5"!}U؃F)w~q4M k6O>y#.uK'\>ZL-I\I]17SQ;+II->XI:)5 1( fpծoobIc܊-W]G~Qb#oub]c~r&B>axs7ѱGi=+FPp={ɮRKͳwgFq*8nS ({SG8&˞#΀ +![IԎRo{ *6dꠡI:&^Ofx/ENX_26MzrizmZovozaꌺyTߐڍ tQE+J MBY +GAZs9AHLj +8 +r3G@:T\kG"_bw B#lqOJ[{7U E9fM B=⮎C0 +endstream +endobj +1387 0 obj +<< +/R7 305 0 R +>> +endobj +1388 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1389 0 obj +<< +/Filter /FlateDecode +/Length 2955 +>> +stream +}k gT@*[ڹ 9F^*,B!t.ccd@eQ3`mF + [ىn +GU%R\XnQ~u-L ,֮nUu>z8!f;zm-5KNV5'A_=O^оmAһ/Pk4|2U@)MMֿo^~4^V^VP1D# 狘w[GJ7FQt71\ۍSlN8D()>KXq{x~2_FQǾM ڙ?hzza,3`FZcg=C~9ke`p]ir.8U5@/UnWwuN4ǚjZ??a#Jռ|^ĂDm +ZPd ) +٥'I,fDdZjKg$ԅWP?!/3 *П=du*"Xtw[o#C!0Jq{S ]퀤Ae-;&Yiܛ2Ҁ XF#O,ΩI 5Mېh[(6Ϯ( jYꈈy ip2؆c 73ˬU)D>J l]wt,AX&Z+LvNlOv۽8äO7/+/PlD[Ưb5?H{Pg=P(b#\XƊ(!C@Xڧ9שMNrnQ&s^@OuYr@0ވ#}}vnO WcOdkd.!WGu~ (,XA3g.9*" :3ݽcdwט/ +x罐 +h)o.cF3+Ho-{V`OG: $p$ODW}*/ 4#F{6)0elԟqg7<ۊzEz\mr1H`BxG |͠R%Ud#]J0O +=59pڎ>VvN~o\sVObkMrUE@ͬ`T/Q]0XԳS,jȬ:]KB?S +L%Q5?̪A__l?s2Z #ӓ.;)-f`N$?ͨ0g\-` ?ݰv^|/?K駋>Xfw]ڝDݖV. +[HKσqDϷNy gqb +Ԝ}FVb1[x xկ{>= flqZa5HYԪcD?B҇ߩLZ5=Rg9[`?xxDTEHeb,9CUq9LM{U/K/TGX 6-Vg6o_Gh"VzpD]xdʧQM:] ]Yt5c',UD6pz& ݫ{|CP]C##Кۅ6 -ldn;S݃|.ڬʧDY&ذ{Cv %2ʦ lnvMY'|5#y.w ,VQ0\J 0Čؠ`qgnN6~c~\"s!ܭ:yy1hW(x>pr Zw \> 'M=Ҙ?4OKN׽|X݉E⼆  {Hžn2Szvj5_*ѡ? x^Gw_POv͍`JZEl,@v8x]v~zEi׃/%%Ѻ,ax8ia*LUb2%b|UFDpH8uC72ʜQYV+s6>"=#٭!0 gghURן2Zu}\M*ΉQТne[sw%<[Iy>VM M|>6߽g/Pud"u:P@#Es8=]BIwp{(_} $xӭph\>MYՁzpnto7 ފ'N'E[:*Heo֬4Wblj(E5!Β@!z5 +0 3hZ? >Cb,3>y,P[OVQVY.sWE)mU9k]L| F_;Z V> TL1/HMm&*.\p͓oƮP(0Β |'u 0W5ʷK~~NQO#/Bsd<[ [r^<@#-@_{[aDžO?ogM/q%<3 \+7:B +endstream +endobj +1390 0 obj +<< +/R7 305 0 R +>> +endobj +1391 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1392 0 obj +<< +/Filter /FlateDecode +/Length 3145 +>> +stream +\$9?_ m8xY7p17n˧O>6u+}Y:z1 O9leh?:V2:"b?\qD.B1GX{"Kk47HFWjFi=JV~:T}q|Cnt3DYl*7ӳ|f +_gO!y2#~}sنd|f <.(Sx_/ShY^uN;atkL**'z+!k H%ǂT^g%Pg=,w=Oq>$C?>|O۹oDU fZu/丑ӹ[mu̡VUd ܮxޏ3gy3XP9"dٕɕ9^}qRoNcA@#M u* G<^"#VֿEbkDz +QBoGSBh.|J, =h۸HBx~'E;AopQ:Mhg3$uJs Wo6uc3ƶ>GjBeay̑@Xw#pR&;i)=[i+ӚvqL}- +^xAhM7c_q n,EZFb6<]\\ 6sYkפ+$%M@oINWk.*LTVefPbfPw`a~x#wؿ V>E5t/{$Lڒstm<Zu;q.~$ӧ *3%U>$)y?>="wZ*FYeIEU8x*{W)hPՈ +#Y,V1-EPܵ4a\qWݒF2 WhrHu9畍۩_z1{Kw"x sp + X%dJdٲihI8|٧uz9yѧVDi~L7{]R{3ZtW4mƌA^.aѐ'|.yqq/ +̓[/[/EN!cuct +endstream +endobj +1393 0 obj +<< +/R7 305 0 R +>> +endobj +1394 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1395 0 obj +<< +/Filter /FlateDecode +/Length 3129 +>> +stream +Tk +Ʒpyz=8i~Mq*.k' +3lje,%u3-VDѨcY.v,vo.ӡpP(TqĎDiv>l;/J`xS/m+1>J<3JɄd`^uI^YT$-p~^9t&X) *d%| -DHjPgd!lڍz%6;?g)+v˳l,ȲGD3Pvx*Nȫ|E0I0Nd /*Vh;_c~6 byޜF]:DSVfBQώOH) ?E1Ji7%j?-,/$-HLt(QӠ09ݟ'K7Fu7 1/-?nA}? (*5,aGȈ#Jw9.Ek ѦT+V-Wn퐑QuZ7F9lڬVҭi"V?'!(!F ~R(+* .7a<,TI;i C`O;1˚$H@Iy'vF(,)߁G&ڌJ =aיzw.b6ao}̙^DKj(")hPGJCm ,uCjhR-Os"QUAjdz l H@_EV9&<´-d/5[=ͽg1)AWԀds'fYaF!,!h#7i, !E' +}+)Ӹk:SnQ@VPl< _-f,6->]0Yƒ:I\#RPK3Ts3L 7Y-[eq`Cю/W69" LTH~p:G nn:%pEseoyk]wuI{VOC빱Ѥ\ytwR9N>gQ=k%OKO3+}Wd #J}NeMxIy*_3M(4 n7ak?Iyp sw|{ّ já *_09DG&R(cZK М$MLG}ڸ,G 7;)=StSX}t#H1מ2%{ j?U>\7xr]0ѾCv!=O|ecJ訽#PrsV xCtx&QHT3TGg;DW֣eэO [AZfGSWϤ?Z(bC(ۯSnJI͚b+8$rrق@oĠm:YB% 1(n{fp oo(]րyFR5EC6RGǜOZ%"/g^@4 'RSnT>a};D_) ׂF$O&gnaԵq1)`+h2‡;)^LqL)r0]#Srr'JA%8 oCk7w2kVH2olEOK&D"SO[Z`ˠin ZN'Ov;IK=~y~e>ByODZU|9'N.ŢYsI]>Z^Xj +!R`=^{%LiS!|jEfx' *ۆTAf " ^7eiNA +sK{+KsV9L>Һ6N @ _ku h`]*A/w b.!”$: +rHv#*0H~19MߣwaȌЫZw▩Nn_ ͒ҽPUo @eV $9f*yHiIi>~ȤCܫb~Y)W?ȘNkeE%FZX#ӠJ"18_iY`-;e[hcސcHk  @`Ă^ĩmSD76wdUifeje^W쮺F RHrkACYyVQ,#s*)%i +/ohLf"CV 4F̻/6Z+jdZȣ*x.Kɣ "n~b9j>Ź;j׆Qou7 s\ +N'u̔th/>^䙸60I!7FZ=69u Mk9xq1Y0im^~ut@(?e'1dU^u~x^ .E5d=kˉU0Wd¦qsQFJDž1f7s$!+}&l]+ㅘnzXP6`:݅@(VUX2qe>E-e_-"?4ʘ2cXwu fb +T;<f@&"}}U5db qs.w\!E +#x`VOE*!) =dӷW]  A}9E r,- ~63!w}clAOśoܳ20]GjRӄ;X-YI/$y td^TӰа+h4@.5&=G(iSXsnbt r9b _]"_'3Xa'HMģzTgzdTeq91 Ŵ(=R +aE +endstream +endobj +1396 0 obj +<< +/R7 305 0 R +>> +endobj +1397 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1398 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 357.175 566.819 361.206 574.926 ] +/Border [ 0 0 0 ] +/Dest [ 276 0 R /XYZ 75.52 79.1 null ] +/Subtype /Link +>> +endobj +1399 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 75.519 65.189 284.808 75.322 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1400 0 obj +<< +/Filter /FlateDecode +/Length 3120 +>> +stream +>ȭN{C{]Ԟ@pNbgehu{qj`~YoreB9Rkwcvdz'U/J.i4+Z³č&6Q.m4f>eXڀV7̨F +)uºGW˔m7R cTinRX)HzYN7x2Z݌XY6)K%XMK_^o8=?G4,zbd&0F.#b0;ͷ%D n԰Q%duvV&`G5KMB  (>J 2\̋(h};XLSք*׵'jԽ}Ѫ$ƛ:T,=Fi{Eˋ=?Ƌ^a%T@ꡥ|C2PBKsðQ{c;zeX|*)G,ZC`OUP, w<;o ȈQ;<ڎPs9gU׾+EXOi"@glj#)'! Kב8{*[u:6\PĹY@IOԍ?Ky!m/w3w9۟+e$ud wWHVaas4LVe4YZxg<:ZI^L%=v_YơnCrU~U7wm+2;pۙzb[Bȓ'ú6TFnA1sCYsVt@h4֢u{rs90lO<J߹[+V]& ufE^Jv懩ڂrX0z@@x0Gnwoekd)e,BuQEPMr +04L!SQUӚ4)kz˟1KV mEWX ɐW[wU;ֺG<0P +N>ndpaNR>پh᯹L%-:nP}6>_Z:QZaA$"RYm+2G# k'q98)߮YsO) M߂w᝵ +iC:&is"n7˦Xvps +^mZ3 ?Q8[Bzazq> +|Nf$["iJX%k N{Uxqk%fVÝ3gCI#΅l _2P=sm=[fќK+nF8/(*l 4OF!jqdXqX{t1\Ґ_RjW9 +N&լyyFz(֠hWCAf``%jtukz+`tz"ac4#̩.%8[2>W0&zF8ۭnn+&K_fD99$U l,jo g8c l!ccȇN0OeWBjPtNqLƠE +2Ӗ.}l83aqh#sZO3.䨛-_È>ny~Xn#dmQ-YFW)6Vd;szG}e~(2{YO1}(BefxfWe?W'd #!b2#>/;gJc/l#e}_7liGq+f;/ g6&#oX v[V3 ؁70IQ7uydX)H'c;$ 3q8{)LBO5Vʂ-%_sɇLlL\^G9hsyjÔ!"j?04cXMd.RkLbg~> +endobj +1402 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1403 0 obj +<< +/Filter /FlateDecode +/Length 3159 +>> +stream +Zf>WM\dlfHng`!!ʔTaY@plȁ%=k7Y,[5=? w{hn)4b X;uUVC<(Qčh}Pvճ$?Glp'TRc48tPYWΉ|{ ',9>/\+*P/Xm=W" c[vrʕoZH[n/DsL;m䚴-,jzc +65vCSC/Upy=0VrE>[J9i!S0L1WU{[p#m7w}`sdu⪶A"^^kWĬd5 +#l ,mqMgzST +B-JzC'THgf@HoS eY~r,~ +N\sb؉pF<}&agSk1 ܮy]U=OUDλÛMu)VJXr:P߯w|ipȨVn'Q&c>'#̏|Oz%'a>œDZKb HV%7αsbp76ֆh,=p8'"=(Ë@®v"s6{\3`9i?HBvM>~q =>+R|zXz.uNEEJ)di:vt~/(`엻Si}j'wb-*D&H2 :^Ҍ~\YTTdǍSW|7iƉ F\{R:/RmqOnZkr??VD`9fNx6(xpQb;=>mzs,<Cm!0MC^=^̦i_Io̱::6@t/k͇grG6=@x te Bm&ɤa3]BrNE0)3\U> ~EU<19荌P% +uS˪_ {{Y{&CkQhaduE]GK _!z$0Epltg?)>A=xosБpc{h;! E paq k)Wa@_ctLLeP̩-nKEߒ]kmh*Ši,?rŢ됑χ&%s5o~R(@uKo`-_uVVWGURz2Mw],;[w}Nc ؏c3[thF"TUnt6]X^gW,C4٠N(DxR +8b&'0PY;68q~o#4teZhiޓ;'g3}@saB$C*~Cu<=8'--V4S[E/k!OZ_,rAT^_ Oyz4R!޵F{x#L|garPIRi4r&6>9y5g#x;{.Y%@P$)+<6jJkgUL~>,Lŏ{M&N,9|H>jfH[CMcH +G| Yj?)]-%$kpTλGIcw[1wϬdsLH Z}Y :NSO'GVewA35%D)$epE"vxɎ0?34; ~!÷Evn/)萕R(H}dt5Exű- ~z>D$?Bi- t>b;+*d<hr>Y4 IORt;Ṵ> +endobj +1405 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1406 0 obj +<< +/Filter /FlateDecode +/Length 3335 +>> +stream +Mp@3^ct-G\X&0"utNAIydW u3Z=ka+\R=ӷ?:PϹ(5<9 9(?33}!R`aSR۶D or'>j$>Dyt+FŐ3L>!J0îv ("uðE~n{tOS!9xdV̿ +x5*[6_sq]0{5EFB(ѴH?w Vc̾{\mrnNWXA:R=,K]If]jJVB&^ro&Vjmm$Ea, evٿFAz/{u MbyMR" `8eRu*sGrWn\c~Fc'>jT;"(oB%{1ix6Q H6d)CVJ֨o|Xld^w=i*]7" Zl_( +=2whUҊ`)X?DqPGy%1oPAm~AC4Ј wbr@E3^9 ~]A9CɊ𓨑X#3vio l>wTvBȼR^X6$!utl!PlK-/P@vmyG]'$R.3gO7ЙF._[I dIk>4bk?՗NEcK>ųC*BEְv"(L0~MHP9<}\;xCvޢƘ;ȓj{m>h+1As6`y\N,FP4n4T`@ SA=T-LEs^"CYG/pWX}t|%|]N lyŶbz \\w|?eۉdK#e1$d}i%<>oq\fοbrۮDX'/ld0c!卌$0#rpq⧜g]~ dý%5#ZU7NrΚr01wqG7Xr"Ԍs:-S /{,~ZYS],;3ʼna벵mPo&iv'`b_K_,,P=X;oh5&~:]:&dJv A1H=F\ıO+;Q(p- X@B3 9ep^HW6T霻ˊʒ46Ei@ee9$^30Sa},_xIqX*[sKee^^x^B`ŲYU'v-%0BL\b^w5Q~MN*adFTrn0*1ҧ0Yr#erm:4pN] 7DzPw9(v 􀈐MOdiVz FSS«:߬=N/5?3#"- U3<I['9eМخb~yt1F(ekܟgx7_]l$)_OO T&kUlpyU r?(806'n*pDbiboW?ԀLlg<|^骇BAEeǷ +muw:=Cn/xSI}VU퓨(_'+t]/f]!O> XA2 99h6lׅ%5"w茖ɋax$4[9.̭9\}2 |!?o}zNCm&? F|O,^'F'gf`}R#st~9@ ;V[Kߩqh=m}MYTnܗx]c{2xf.hX!pg7Ѳrk :IWf4 aũgA +`lysLlDL\Ŧub>їٹp̰WF9磅gծ\Gfٜc~dH8u]ïTf4)02 ),(rWlDe58fb,z*d^7,R˼ +~T\vsj{쬵va;]fdn_ԑz ,ab#q䶠N=> +endobj +1408 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1409 0 obj +<< +/Filter /FlateDecode +/Length 996 +>> +stream +g%zJ- +ZA)VvjNxEgYO>w!('}(^.0H?0lN <**⡭5Z/elUN)P[ֈũ;TX"kPd?F/sC+ `E +ς_e?NI73,H~p +(b9R'u>U<,S!Ω=D][)g?*wY<" )fnKA~0J*#Ln!Qݏd +>l'`B).49x(*uV@QRXu8\Y5ˆcO}gzE)8Զ+9@f'8wr>ck50 υh"+pǫv@ %<yD#L,P Zȋ]v1V>NLoU*S;]N-ew>'&>fX"^Ӄ攳M~ff) 6#G>VN7lO`71'wh DYWwq#$c_Va{?*$zu +[&WKnT}l/%/d|[D\|L8p^QMi? EB=f9}5 ӊF@q<\oٓ yq)pD R7ʘ4;}U yv> +endobj +1411 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +1412 0 obj +<< +/Filter /FlateDecode +/Length 269 +>> +stream +KEfpĄwd0ggc ؁ì_TtH Agx C֗Ա6k;Vt_]ȋ>B.N_ũr2EHKV,:`ʃʕO+(nWZO#:⏞N;a"(Y@Ltr~|IJ2i2޲Oh!^6\0HgD2hRė)Ń 'Fq6ѿ"|5zO6CpcHCb +endstream +endobj +1413 0 obj +<< +/R7 305 0 R +>> +endobj +1414 0 obj +<< +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1415 0 obj +<< +/Filter /FlateDecode +/Length 2965 +>> +stream +*+<<n-^.ȗ[|\|ö$ц"Zy`Pp +2oDA:֗m #{xh6v073K`\ yE16a_E;rq3,'0àqWlΗ/R@F6vCj́TɡaU޾BRD5|= 1m 諓UAɕ|!gꅱ6߲Xj8C*(xўr)vcXIP?6n@φbcܾNѡ اߦDJ]RD 9wm4HHF G#<#Av[+ N`b~ta 7W@cyMU\0)\HjRG*_p`%BD'$RPò42O[CJ6 zAzaG>h *5%|pMFXmU`Ś<5I tƵBfڻȊĊ͆ t)aeq3/p[RɃռ*2I\4.w~T5[usX$\r_#To#ŰE^!csxa X{I N:0YQbiNryʤP3+ՈDGgH> IԇHP^zG U1,wׂP|up!L XUg鉪#6-|NX%l0.V,1黰Gn|w ~<'9DYlt,n%DOMʲS~9Ò#Td`BXzP8D NCZGfk X kNobMJ_EaX[}x0h}Y㘎S=g{ )L +" *+KKQQoŀJb"ݐ, 44ZvPI򈫋8υ^.IA!53QvuF~ {DFdLc^gG/EMGZ(oF!Uo`hs;V~ l!NV+2+P2|y$D<(?rPP;;2h*a:*jgq.78FmAx=z4DeI.3KX%uFoƒYCm,.=A]gxV Eah˒E^dG(y뉻-^S>VAJhYnj8 !6zƖ`a<<4GÄ7"U#k)r[熎NC`L4 SN% U)}ەvi*nߧ@KNQ 5?=xuiړ,נ-DYv1WyYiN\5} \f !b"SHVO&uV6?u '"9K&*%c4-ݞ|`~wĢ%@XCdk#t>qց)%iW>c? ӶVL-]Vňå<;=&nB1u빆lrq/E (߼֚b=kd%h~V?B>vI J8`-\f "V Dz|FZՎ-=-.gܷ.h >̖WHnUMdJJ9^a.,@A3l Ҝ2O}J*UN;hah4;";7euiWh٘ђ;~9Ee hZSM_pf:h4 h1 qZ­EP;5"!xg)iRQ&$) 5z8Ɨk?GAw`+k=ek?_OS|,d6`';avd'BPxdjsDT +<+`ƁȭP_g迥##AA W،cXB?s5. +/ +qoKHjqZY#dF%\@N-O{接5|uBCtLB"iyW~@29d b5@LD4 BL;Iqק30?F^"+ZuJTU e'p4&%}^ɝf|u+ ĤĠ#֞Y3 Nn}:}떱G%H +^l:O +Db +D]yM75܋y4(qވR +n:T+kX'6Om1;( +endstream +endobj +1416 0 obj +<< +/R7 305 0 R +>> +endobj +1417 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1418 0 obj +<< +/Filter /FlateDecode +/Length 3711 +>> +stream +*Ɇ }nÝi}~*b.8Ǻw(ǜyc@#s ZU5.xᙆ-x5΀$a[u4AJ˟錰BqB)3ltR1$*nQלAG|Ha4+*zTj?ݔbL; s&u`9OQRjwmf$8 dS>φ]~xK IJ" rQϬP@TRհf "#KG^PbG?ݭ?û3,wdPRh65<'D<-^ +* sÆ%7I sN|-2gj sztS<87o_OiuQdTוFa +NA2_2JUVPT&lT64 +A@HWlGNQiaƎ$ݙ{qBG@DqiSRok@DxSa͌4 drPK!y)kpe]xbW1өsJZK%:k$1PVlj^B䞽W.Q.1_mi bHݽj潞5aHxhX:2b=[@#ޞ)\'Kp~=x3aKZq;Vgpy>@_\ݫG']``,o2_+]#{]HӮrsrmlkgD,ī# yl]]I( x}k*tT% iC=c +=_Fp/0ot۽]kZGv\J4 +'kZE,udS*Vm?5ji-!qSTp;Y@Cqг|lPniw)ƳhݗxQ-\' p֖*Gl2[S|ӹ[QyW%kۜGiig8y&Lͣ|q Rn/0-8E +ayKUM;A}E&#XiLc6нȍp,"eC&<.l;;bW:r6b…8rcX3DuW2ΓJpG=+b1cڮܸ% +O&f`5+!9Ү +D*:j6:#:!kZЫʽyD +Z23 +!_v#7x]aLvC)f0v:jL,DY=:Z4;"`/0xk߽%GV>J]Jj7] f0:Fz`^ [3dI 6$EP%H@{ #p2bCUYHҏM)>+a~-0O;2FdvړrN;$h#vU$`&7Hs"5Ca H!}A44ht"f8F\h3|2A:9Ax#Ϻ4Г]A`7 ތY l 4VgϬڧ"?ݻp..@C?pPWc(EtzFT~EpG1teTdD} FW{ GyRPʅދ߲[ B!vX'WF +Zw]Ibl>c|_=h54w%N ҉m0;y |,Uq^'?,"'P1CNb!zjhdz˨mobˆ0W5Rr]_"qh*(cVHywAS) +dEra#P)s5{G ~KrQԪJ-o +O~KFNl]#mbEQ+b19K^RP<:;dSgޞG֌!~OSv<2Up@˞W>`:@.@sN?L*C6C_|xZ#)l!a?%Gn"ʒG 1brs/[EI6*> +endobj +1420 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1421 0 obj +<< +/Filter /FlateDecode +/Length 2815 +>> +stream +>+;w0 RP:YEoMxS_46e%6H}Yo_Y4LZ0nf}$1 +2EB2fg* 2sl55ԒZӰw#=3$4@CTNh$wt@9@ +*=پ7Wc!( }lS*$veoR"v-R8D6IppiS{\ǟNa[z+;\л'ܒ4)1%=VyBFߩ~{D 'A Ww쇦_X'℆Z y +q`̇1KyȌ|Wt>5NF;>zKAhJi2k5U7yV ,MvzUA^AK>jG%*VԸNT KytzB,{լuݤKrXm[}z)">.>LZK0 5^Y9&H|,Լ9Ud%r:iXJq7rJra1p }fzjc _tbpQ*iHzKgH痒[qvcI-VDa"}NXtRoDg)MK.cMmQ%vBk%_܏| +M *:<}e 45ָ\cǚÈ|<ܒ\u|?`GWF}vfFᶋ~IK$b5{B82p{,%V`aj*^_YMsz NOgJs +@a57p2*(4@`CN bA[z£a,;"RY 7D3͛ʰv JѺ-+&KfP/7Ib$emP|0.छlƼn-TU]h$l?:eQ}CZ*}3HlOXm-9勡1{f〨F٫lছ'LB3sZ2g"geONWibM">Q;?‚&L>6J5\<ޛzX?{ \Z4!;v q/L`@Ɛw*oVq!mZxdܺL ~}d?*[ӮZN.Ġ9Dfnҭ"w7($ёwM\:Q+cHY)Qq6chqAd¶[-PdH kEb'^%5сm$jK["GfÎVI`ʉQk虈XJ:6^":&j*{cbHMh+e$c7i6"y9-0c~/~xT6g64ܬ] 1M>{ˬgfڜ:N*kV~\ްE(E%f|q#:|rbђ +e)\w?5V}jfDؖoP#삉(TUD ˱yZ X{>$,gApXIxvӔa&i$I mEy} gaI +V)0(P Tuq iy p3e" Ɩ9;YKRiO +Z < LDIb$P4MD' P ̉B?2䛖q..C[T"y閺r4)ZIzaT܄V*Cdr"D(YY#f?7uT!><>3Vtno7~ģ}: T9aa],LVJd\&d/*@BUzJ#'6GiȇD~SWqEP(WtG9b]1٦2`i,Ri6˓s4J3x#Ѷ,WY4Qq~{dx~CeVe85&l}+ A+/d H1-'gGR0H(s^dks3 Eڲ,94w&="`PZz!98a,r3ۭ[8yԴf()hN +endstream +endobj +1422 0 obj +<< +/R7 305 0 R +>> +endobj +1423 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1424 0 obj +<< +/Filter /FlateDecode +/Length 2433 +>> +stream +cRB/*+wfQIc v'FE9N z5D^pA۫f'd(?n4M77Rx3hQc|\OGiq}R)!SHeC"nbxTb }:c18 .%Py4sA(kblY;K]YON !_ZCvh4]/|T=ln,3DŽ^`1B+3oݺ8p׭>ť.ͦa8zURYwtaMEr5>2BQV͓ U-n 9IY4,oZ&1Eހ)& v#eH.c҄Rd`AȚx,uy?qx}Jt LAƳlnıdQOO#5C~u=]}ٙ* -lN-D\.Hz!n1@Kݩk0]rğ*jSS*`ݫuZs*%:JCs_"bK2[k=ΨKO*(I4&|@GN@hqfSnO~[ʻjPXJEg$Zؖ"婿LyE+S_ gDPq,`W|jm8tġ4?JSCE2CߪF|,thh5v{+ 1sd8]DX/Ov߅&[\PP2Ήn ݶ߄s-83r;"6HKno+/elv~:iAxW*s]w}_S~n@9gˤΡp5^X&9 R2fȏw<^G*SyhFrF;xc"x)]9:Si3o8'uK)4Rƅ;JhD>Z"r||6!28vhu߱~Ŋf^WDX=-iOHUG3a¿Bﯾ?7i=BR5Hީa%g9殥mY#O?,CwzT5գf<<={*y+M6gP"N&i$TZVߌͫD~IVW PdnMF8iX9ls7C_$`\w= B,ٴ{\]8o;7 ц"Qz1>`g7"l $b|KCt,bhf"7&+Se%C_G Mbכb{LywOڒ/4!(y몜q^_`9jINoM=wN^]#WMN 3\OG(]4 +<(nRWm3d 3$= %azqA{ҼKe3; 1dIU, mqǼQBe {I5TM"&> +endobj +1426 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1427 0 obj +<< +/Filter /FlateDecode +/Length 3063 +>> +stream +'FsTM]tؼQ"S +h>:43$ ( x`z ++15dިzjMz%jO`"mGPD΂dLZ;eOo7cօKMQFh*g,i `WTD̿ ahRRI-Z}ƼSP,#3rϘ eI<U2) mƢ81fSYP`S IwR1؀5.]ػ\[/#2G O2}1ִH`+bj.apSdH{ %3 &%\fRZڗjyzM ;5t4Bu%ZJ<,6z=S^_3.o%:![Pԧ'ΧCE[1ҳ%}K&4i?:( زnY U7X-+_t+V/c>?GRSjc?厌b>7R9P$L%{vDSc\ v7q,̓;Tcϳx8jWLM=MA_Ü Ll'arE~[F +|WDK60]>!cU 󟗬tPur@'#qJ>Xb[+wO~l:?U]'?yWؤN-yc3P?(z|!t\'aq!Qf9M 5{Ra}%fIsu bcCS*5p W,_MU4QQ']{d4^oyi]5yHђ<(jz6Bq6R5lCXž"$ݠ_RJMMD6Y37 +HJ$]Il  Ip&ۆE&d.*m' *kUk#.C 8;詴MB.s91%6+C:E;~m < tΚLp ݄ʑv򁡧;*_`SMJbτ+  Kw3R:oKg\퐪4$35e?1+9'%i04\ѷO񾦹RBuи_ldSM_Pܨh@Gi }1 xun騞3:s s W_\MoY` rXҁmr ϚA 6:|D-Lt7nTKeTB" `ҷ>wPZB_(j a9+;47o8`9ȳjЫ.M軭:BEȊ ]K^fU=tMT_"vQ14mZ2P*pP8 c0sQkB"_BLH% ԼH]AU< +vtde[!;`=zb`>Q?… z j!ezGͷ;Äl1>yqΛ\6V QYs1D|c0L?p9uԝݴ(UCQ꒢CYαPMٱۦvO b{hn_8{At|hoVb:˾˒>cB$z\S0]:̱g7k,@lHQ46>ܸ\4NUß"U);i1ޮ|F~b QVHi󁥜 Ho0}2Tvwy"`wtIe@mTn|_[Z~ WsVpwNNcSX]Al?v0c\{Kߗ"5#h @c]g&6ZY:~* 6%?=,iAEϵYUpܬySgjy57QK e4E(BCYNKFtq +L"{$-Upe{m^fN7)g¹uqyQuC0:?`Nag-l"Qv]EC}|t +N?{J``Gd W0 vÂX2) g`BO9_[ |lqwֈ `GS:-*VUQ7N-1O=R_w|y^Jеk%oTM*D #U Qu\b_h.vw躥l/6 + }$H dÜ(}`ܕ&_=.;E'k5~Q5Y$_gEI:-cQm b,j D;FppVۏ-xRHG } $+5P\ |4Av}_ա;%M1Ϻ =0w#}*ftHf2]c5dxQQ9QtX|*q#@F`DJykGpt;X!r;lMo;|RO!j,Uwq?&Yw1"2`EL lCEpL>"KM ]#ђal c\46[w0 +endstream +endobj +1428 0 obj +<< +/R7 305 0 R +>> +endobj +1429 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1430 0 obj +<< +/Filter /FlateDecode +/Length 2967 +>> +stream +*13T΃d?K@^]*(4[_Ƥ;"oG1mbڲ&W/JX߄l+&gG~rr$//B..LMf8sgx"6JTjNv]g%x\K2x}8F3x/jiUe4 Wy|J 5Oj3d6vt% c iH8!V"7S[ ؛l"c֠b>G98DŠm2d݅I#"7}J>#fmLę|ϊp6?䂠W X+C¥FCgAycqY%0fd'J_ +ʴ?einI/?3}n(>12'^uWȻK.'v{7Zuƺ|؀N+0Jrj܀+_^w#$pZVBN:w4|nEIư>Jo rd&^!!Rnt>s/~Pg^`n-KvqU%iT@huf(pBa͒ +g{>M3kX6ph5`:V]YL6 Σ|TńžG-tN/R}krSn@55>:uY,v6s +7&/2sh,cy' 2g]5"ZPVbG}{~^3ޝױ |7jh3ˏjpxI(-fp6SW o `c^'fZ[IOL7{Lnj?mN1*DQϐӷ-ɏŖ::|c{7tP#2}eP^s_z[PeE}g/P%ZpjjN*3uZ02RBNd==>sKgw0H=B_ i8}fEyʣ4!pXZZu)_56,wבSt[ȥtH3nՠHEIm&:C[!Y_`N0~/ů3de|toVȬNsܪ ?C: N\sܧOxԵRv߾6s#Iz@0rEpjL[=U4 ઋvsWF2~ C#"a/iԚHه[oدUpSXU*h|As@ʧg;{g#]o7:!Q:6o]RJ D([i |ʯ$ǘ`*<MÛ߻9s8bZ_e ZCQUp0@{QL-8ik3EZolq vn@x0抸IJ g gimCѲE1Ə&}ЌYOb 'Hע*ɶ)_i=7i7Upg'*R +\mbC:畾X)Ys +"TY&/VBEb ԔS;Im s`SdGZhO 3\,tfLb4!DZ N]:!lhxYox&-GX}ROb7;=5*D˼W߶[+Lo/ vg 0N\mI1ngt"8` +endstream +endobj +1431 0 obj +<< +/R7 305 0 R +>> +endobj +1432 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1433 0 obj +<< +/Type /Annot +/C [ 1 0 0 ] +/Rect [ 118.575 242.271 121.641 250.378 ] +/Border [ 0 0 0 ] +/Dest [ 287 0 R /XYZ 75.52 79.91 null ] +/Subtype /Link +>> +endobj +1434 0 obj +<< +/Filter /FlateDecode +/Length 2844 +>> +stream +#X4B\〹w}c6=˲۰h%0,U,֜. %݀&q9Yl22eh-[ͭW2~ɏSŗfm"EHafܪ%KsǛJ2Jt7_(S%ZS]DȆyf]/cOXk!^aRe"{3"AvFG^Ui?gHCcdlG⋹-K4n` +˹X sB _XD%yƂ%[_dpZ{m˚`~jРo}̏="L dpE92/LOq0za7㧫4i(+[:9ʳ NzHAh%i_TjLMbKs)<}31cM9n gjɛ?/I5t#AlZ7@g\Y|15FV[A6?lae Rn""sJQ/+l;]sήqZJ V>S~n:Xf7r9n3v/ d=6^y ׎u 8$hOH%%Q%rh1t\պ;[B$SS]rz''3Vfr_ڃcO!`-N[eHgYZމhYo]S/ھ:M,Đc=:{._gd4l1 Cݞ9؆ 5ga;p8@4Ik+#ωDEw +e,vΘPƕ™rU7}%]ΟbsJ4R˅~9QiEd,qun>{Cp«9m) r'_vE)5 {vB'pOuR >pd)95΂oڹD*֒fS1~/<}`hPƀm#ۻD2шFcvB:"wBhT)W;%jvx` >ZZ^I,W֘*r*>pΑ',ZQi:em r5+ $t5jUNlYӖR94?,_.1Y旣{7UQd'*9Rb HM0Ai!xoY'l!C. a8KanjܟeVnNWf7TR{M +87ufϥ`YC=Xjwt2cIJlC]yU ^$&,br:P cתZB+kr/-DŽgҁhɴ$P!.}e7 t|/tr1J{$:Qx/`+LRk?0*qRu~s; :|)?`i4I7rUnBf0^:" +V.&eWTO_*l>{ߪsO``>KE:VP6\/Q؃'dRZ_.5I56Ui~rrY00G^BCL8Oa.;a|NT܈n4`KJA~Z:/$DH Qxzj_{>'Ȝov#R;y72 Z9E81/&֦GD5Blo·>"urKnNT|[V:|%! +)1.b()|s0*,( 8_ z_Uf -[51YXd9Tq;]> +endobj +1436 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1437 0 obj +<< +/Filter /FlateDecode +/Length 2737 +>> +stream +^|0x1UJ(&֝5v4Bh}FX;Cmm{6r>#dGvr,uc;LWA|;ޟm e,/%P=ZpA"!Z .VN4& +Tksn +TiIچ`Je \1u<o_JċVL-XS|IENn Λ阘씚P`)ڣ)'hnVό]e/:UV2uR‡F}'`.ά`,^19ϟEF˼= #vgd**I9ga7npE0^uɳ]{5ݽs.N q[Q(ޥjo|T߫:- JazV!ߪZG6qޣHJ0j eO߈ 2럟(f3Z"OnS |13yn &L;K*Fgӧy"3+GZ&Lw(J0LV?89]u|u]È|`HsQ42?^Z@QRkY]7v%nGs$toZZ;u:5j1䑀q=`mrCEPJt>`1 Z-HEPDA{_AJ:('K +Pb\WCPQ58C; Dd/ud82vā'2?' 1xWHkgMx2`JNq|w6A9] GR*" +g!OsLlR,+q+$cnp~e+ +e[&tbrUo&3>\[f9.yj=>3D8Ǧ60< _N̚)?.z$ ETDX L;[VWDZA˒{# 4@"Xtm9EFgˮ 0}Z ̲Qߢ)v];buvSۮRJ_޳7q4c9NYyջ8Zխ24 sqwYq?R PGsxO]k'Ns[ۡgjޟ %!gN[#tPo?Pjy+Ą] w0F}!0S'K=&6mTR> +endobj +1439 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R137 315 0 R +>> +endobj +1440 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 223.853 65.201 378 77.361 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <3d07a534107b7cdffbff0ff8c9d2a92995448728cde7f69e310cec5778236e27be736ced57f8574bb98ebaf7674edc2ec1b8206d128a068483f0b0300834d094e2bb67ee2ad4393310d161263c43d2fa9f557e3a21ee262b5357b6db298ac0091398449d79f284720133513f51dadc83b68fb65f67e98a918ae4ed6dc588f225c3> +>> +/Subtype /Link +>> +endobj +1441 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 54 50.755 198.452 62.915 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <4d45fe0de2ca23afdfbd6194132d80a6534b207cb02a155248320ffcb3027c4020446e224f727bdf5b0e4224f0bfd69f932d15707c4d23ae593fa8430ce7ff535462b1b95f258b39ce9fe5e40292302f6767f934ff7877c56b9ae3740a62220acca14323b306fb95c8069f8c2f3d8ad3786a900103d119a355b98a093d3ab206ee> +>> +/Subtype /Link +>> +endobj +1442 0 obj +<< +/Filter /FlateDecode +/Length 2868 +>> +stream +L}RF#Ġz (!+cžp;BB#'Ҙ"dgԒ"_\PHR3VR_'ȂG (6W)ui! "epX=hc>9=~]i,C} •f¼*|BdXk}fJWط#4p*D0z{16bꝥ"G T̽X%+Դ|H]j?Dy)&׏߿/X{kҋ\9Öb́^{9gf aeO.côrvͤUl +`.#5jr>'6- _ZR.4’g" OqWHCDq+ %~<FA@O[ꈦ ^x{O" %hK_X<8R67,I-^[ e¿4{꺑\|Q)M7r]zOvȜ;7 ʾcWnXt,uq41f?*,7DRkiTVLސ`%,ϼmGl(QʧS҇%2[( +ć0n.h8=R,UL"vY\a[/v OQ$n1F7CZ N+edlGZ)zדisO#SAw'gH*{hhGtI7l;=u5ıeǕ4ieyq8ds5BNv*n{y0$љ8J{uX|UN-ҒG^Td(D["J bl4EΜYNgUc]h>d2ϐӯ8d53C_s_ŭ y;zQ"O>=lv$8sTYٽc,:#a*v{Kmt@7OGɅcuj3nPzo2cn:6Vޮ{D71 U2}-\9ЀX&R[]P\7oT﫨zN=p+ +Q~('ư/WЪyG1ϒ)mlhw]A'LGUa`B{E-iΤV-.^_8PK?:/myK_G&D|yJH{[&>k7&E==eK,3zNhH^>i݂1>a =نo6>0:e_X%Q}+pǓ:xl@pM]&t_*:2b~U^l^M:'1i<5 ]W Jb,n%3{J]lHY˽rAcWë]!NJsz U +ۖ#EɁ376{G@\9 7z d6(&Uw +P=`Y2d r iYK{:, cbMx [~^V'cٍi sd#!&XpMZ{"z~Ԗ `as7qUfD]F90ԋfSo +Fs&'VB6P?zCq(;~@ஜ$bqƃ$(o#߮IUpJ8#O߾fnmk:%Ztdz枍cB{TNkMdnW=|E{-t%ʨϞv9Xֱ8X t׿y%ӭN?!qӷ[}cj +endstream +endobj +1443 0 obj +<< +/R7 305 0 R +>> +endobj +1444 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +1445 0 obj +<< +/Filter /FlateDecode +/Length 885 +>> +stream ++vQc͹Y*$ݐ>.vMّeȇeD=NcwHP3T=Y@8o ?l5M?\&cp +DZ"řs +\fُilotmӊ[:3 &=3PRhoҖ}> +)>aX4LLSm`btxHe!j}峥o- c4Lwث 8S// jnXc1~NMjۑQXU;([zYZ(vZ[Is޵WUD3KήzJVsEvA(#B(k/XP㧨Ug𭬻Mb"?~ +pHhȭ8'-> $bȗ +endstream +endobj +1446 0 obj +<< +/R7 305 0 R +>> +endobj +1447 0 obj +<< +/R299 470 0 R +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1448 0 obj +<< +/Filter /FlateDecode +/Length 3131 +>> +stream +GKf+ftEPS8 %'n: '4.%?SȩC-h2?GYG+"Pc Qoc4:h0VC`4"/H#TA[HJLQ济#\ Zp9 2LpEd?biaԹ3{͗"!ڰQJNj-(N$$3{pPAn[ڊaIWǡ |S6@$1{R!ĬM'ZTFM\_ _2=&fn'[XxSKRpF0E<3ʄRkJʴuC`ˆ\Joq6ELȓL[ gNAvkU0MJ*A3kĢ5\4d5 ,-:m=<Л S~MS+wQ=`bۯ3BN4"1ޏS-?_[AƏ`VCd! +7J1^{ vQ>;wzl!duTjQ #μTCaC`uUnW릚8'd읰pn.hlpWUl7WR*S,P^4=:(F +K!oXIF~o,4fF]~i}ۛlkJ{zR'7Tj|m۶]1sm_h @/h^b0;JOcp&*o2>Тb0ZӆqM* OGYYڡ@4M4α+7aGo7-U]YT-#ktFyD>qc#k4,s&\ +gboYZ6yΐ97~kR$TZ@ 3BO:Cjw]k\ 0ܑJ aBu=`7H+6yKy1  Ux &H#/N 7 h!)o@1 ǭ,nOrbČ@b:Ȳ2)ǷΤl^ >T<᾵cLGD^PbjFJfDz3#..b#?UjP-]6 gJ>r@w]ϡQ6;rM3o(Ы?'3*lB V[0}&n:jqWhV ,~&]hYst.|k$x3߿gB\?S(e|џ pWw7TCYFETupɦ) oſ 1 ^{5Rޢs@1[QdȟL+@^ +.09#5a^K|fmdNgQer`j)M,_v0-cux=EHt+CDk?ݧ`.\s%]HJE! 釉0QC;Wa.P}"W+ 4EN.?ϛ$Blx \Gv]?]nkg@Y†8i j/CD 0GWc>Sݦx143HS"C, ~2s" ?( +xWWrnu:suhv}5Ax]1Ұa$ +N +Z]OBX oID=ǕˣdD 7Ks _q@E0)1.OTBQcj'QG)d/IZ1W.%vL*BUUC +nI{% +;ȶ=t4oq3fNzٔ\:L[{ǙVNڨ%#x?QWkb?@ˊ#BҝȎ_n;NrڂP-ZЮ^V*wGlZB2LvWM'f+3)d^~7r~/l#TI-vUi1V[IK8~\qd1׺4!f=mхkoeL&)\z$=Ik"$OIA 7ʞI\Ɠ?VR\O.- 6UW= +eFQ)r$}KzA~PM +4[ZKՋٰڜ zٙ8aӨ]|ʷ }_꛷ĆЭ'a$_>h!fs0vqkg:ELIwTKd4/4OYi҇G;- n89U,zyEV -n:lBy_|jfq6sj*T˵ӇBrjiVI4'HV^r 0()g 4]A[fY`!Z}vTŖ +1^D<2E O'[5j jaЧuW]?kD' X}(:l]M;'kɋҡ)?cTW|=Wz 6vh pd:ߙׄ+c ,B%uaڲ2llwZ{%R8^NN{Qi+uKmO/m+S j{v@31E $r#~訯a37 }46$N ]xk$XâH 0^7Ϸ%#N2|"!lL\kdjTh*`Fytj4y4 +endstream +endobj +1449 0 obj +<< +/R7 305 0 R +>> +endobj +1450 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1451 0 obj +<< +/Filter /FlateDecode +/Length 3097 +>> +stream +Qr90b ; fhU W8(>XXh2{d'>է0!'Xo:Z\/U6!EeO'VC%+s.U0KzЊPhAkCMc hG]1!f.. o_!0:G!Z,f=񟬴`?Y ?;iiXSYar̎ &Dl}%M}$>R/.אt]<8[J3m:ixk~ZhXFj) OΌ1Q \~L;cѺ198ǨҒ&[t2R/_VI=]cvKVlB6rXH]42o8]v%Vu!~Ӎڙ>QhN7a.Fmdknc nIf2 +]9GLjrvWYl~? +LuGgj6eoV3꾀( 8%8EA۹,T۝ڼWfϋ2wOifF< +Z&CP&P6PR|n. ]n{!i5Q u*"fb<=dlAa ؋$'!b"jצ+@DR)k _Ðǜ)[ݶѴλrb&:H_GKKlhP)@ HI߇'Dcsmx`g'=ܵRpY}ySڃPx3/LVVVEoWtD|>GbZS̉rCZў+EB(h+`i˿z *"OEԍ{_3(JIa^P (<5'ȎU Lj=|d +ە~/G}b]477xR)yR +ם'phbNKK\Nf.;FYp(jWr%F+sEDx Z4TTbgOC\PMi4|/#IBc/S'n2+`V$4+@湃s/3ǖ {OpFH\i&p)n浐#ZJNVbƁ=qˮGݯż[PCc.P"~\@Z)I.=GF!, +FYV8ZSКiH4nf_ɥ^-rI]g k􋤾xea>У|>e\mLh+boX;lL0YsܼXC\rbyKb݋_eTEEuw[c=o;p~oD'j7饀@NQ}ߟ.{Z`_w[2È7-+5 +O4"kA|uBg3ϧbUOQD&f&4h̐C +,$PFsF]9kFOH*[0Iw•lfue} 0sV,Mqn3V$%&&拧 2,rEmt(={6+`#z0-pВ(:d]GNn Xإcmb+gV k!i'H'yy]FvFF=,Ě4"pR(s(?&7'13FMEGG5^jӉ2 ԇ8qF5q\L0Wg;cѫq=)L>y L]`%y;uI:Y_rᮎL[1 u +[`]CuAȆGF$q6tQ}[HwҳJ&&p͉2πǂ +mxp 7$m/O5.,)2nTԛRhJ-{;$ߏC.#675=wKd2|B|W޺+@ZS5ypW)S;y3Ku #| ߖnyr +>`r} m;W`>3 Cy>:Cc9Tk3y!)F<쟶h:Z;hȡiUǦSmDw8/7U6VXYǸ_M?=SYs.1Zb;0w+8Sx|U#hgjY +endstream +endobj +1452 0 obj +<< +/R7 305 0 R +>> +endobj +1453 0 obj +<< +/R290 460 0 R +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1454 0 obj +<< +/Filter /FlateDecode +/Length 3256 +>> +stream +|٫dr#Hf8%/?a85ݚ)}cXu\pޕѺ\AIkB/B{҃uVlH7Du>-S!}$(1C `1>V23pO&nWr @*D4lUc+1b.̲rc+cbǷ >Ĥ5aDzjqZM`7 aUi + m4n7шy3/f9[-VQ\0 ܠfӡJu3p*_q%w4z>,'9}@ΙRcauT/_`XMS~z_-Ԏ?d?x))Ttr0puB1dpVc%{;KYS@N +׃+Ĺq#٫}S 3Ғto;[3 +whWh8H# B}yn-JKAhr-H硘ؔh F ϭ۠oWaTb|,FQQ*Qx /C'ݧ6j7jWmʑ&LvQqK X]=3k6 ݜ,͘?d Hg + kZͬX0KAX]?k 56Ϡ;СmX<<K /S=Fx( U.SW{$6U\/WKuFi)$b2G7LJk ]˃L N3O̰2*E7Z}2Qv#YY*}͢TL'4E6A+ഷF2 +ROBIΦtbX$|E-S@h[wL~VLI+)v'9Uz-qcqOVb\-MݗT$un%}!͎D\aWL&bow Y զk_c7FnotB$>uJ AGaXqT+S:TΙA:tdC$:Zѓ}eyi dL4 y3;%ԫZDR62꠯cmDqj-w!|BkyuJ$LЧӡЅNU''p{z(;J h34xX@3GڊO!txx5e_/P74[ ]PR)RK"'!1yIN\>jiWX~ԦX.9jtjO+vӄXIm0%36_bsĩ/#푕PXEZ­CSpr Ј_oh]GDzH~~`7V21~G*6r,(c )U\bLӄ`t&2б`I#^_&ݭF&{8/=$mN?!F0a:7 *j<^ΈD=HCǝ.{۵IQ677F/.A*#8<i3~Q\NSͧ@Kcx&u +֒YFAJG0PbׄwƘz熪c) QO>VAlܛl oOw]<47;ZX2(B<|UXBAP%A$,EKW[кȊr&ke&1iTWVl/H_΁e%u*jḙ}F,􂰜oȹcTm*XĸL9dyݒ[1 ?]8X_m_O% tͰJH3c  +> +A*:Y>ȌMo0e!wzCȴYwÌU+}Ey~4]=AbV^0L76vXV#.cn]Lx9n#W d.p@k,,喊 UXnTlfUS'ylЏو 1uM~,/M~nd@QWQQsQ1ŗwzGsNF^c?3Kz]Ew6EWL bD] bζ"'pFcqkZ2J{=*56&P9da^ccxR7 = UA~_^{2>5s;wo/_#E2aB9p{4;"HI{'ֽI*,΁kr_!QAB%ߪ,v&J?@Z*ܔ5=5-,-:{#NA"Ϣj(-7(>|S@S;6I`D?łWDWT& l"S0"<2@l|MWyikMx1.~}^)R ?W|Zׄ(q(^jIh3 Q*&x%ɹ챍B\PՌقǦv^eWwa] (gU%;oe<:*[qqG4M9ITW \I*"tWC$#\Y$k_ =1qE##|b=es™V7>vhCumD58R,f|ڪ[n,T ݘ)T{3 ,Aomʈ}c< +endstream +endobj +1455 0 obj +<< +/R7 305 0 R +>> +endobj +1456 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R137 315 0 R +>> +endobj +1457 0 obj +<< +/Filter /FlateDecode +/Length 2573 +>> +stream +\dٳ3f4ӹujEFZPfRˡ/u.|=x +,bD2JGpŸTrcH\[<{R9UƓ8an.U8{J0'wAEyt48?ODr;Db +/7V@&ȰFaB|+R`YzO.9o˼PSOGտ!u6"=5Λ4CgӺ:wBa%mjd 2IlߦC#`\u +;xk!s`Cof7*knD]:Z7,ĘloXx_8sKMXeN.kQQxlsW NO4j<6+ z8\u҈TZcƺnJSr۝ +:B.}Ɏ +M,R.3"D7;͖ Aد9<+!o85U +$~{%[>0~tnaog.h^Wb1 3Dsϛq>D#V'W_M\M^jfK`jUVaNAO 微V}٬wW*;G#ᙦʼnk5Z}L$EsfsBt}; a,& Oc2"1epKoz}W_ci5cr|yY}'Co8X,rc[MT !K(1 .{ =A@/n}z3vdޖeRg +ɯ*vZ3Mz +*Lmi8-[Y+ZG +x ifHE50]v/hz2B$r_?]sջݝ iI2U%\NIuc\A~IhV8d\^eڪE:n>(rNh_(82`R_jt&&p?̷aF= m`hC$8\35T ;bMp @N]r^z7GH[qA)!hvswlffh_#uL,3U*hǩ1tcYa_*F"Ngf"x붒Uk!͒DjWhϢ>޼NH#:*}hNƵ+4 ^.XR +(`빠]t9X*+X%ٮPYXF9| 8ZnXs8p}ĒJdT0+ 8WᥜaO{Gb+=/LVe,SEdJ ίK'2GzvE>(&5${ZLUԠЋɊ:?J(oWq΢<~c],MXՅ^dyGT]'q~88m,` +5AƦ>s,bq0YY![lv8b|J6%۸J7֕EGP d7aϾK]WZPi[CcМ*}-fXw*H"\(ls/;L62t{).Xw> +endobj +1459 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1460 0 obj +<< +/Filter /FlateDecode +/Length 2352 +>> +stream +{o)Ho/xm\9.;"Lu Sesv\nγ9ޗE]z.s +!i?ۀF-}?:UhI?;^FBI *-N +ˣڭvOW s]ytt,0߿G h'ښ=8a|*w''B}nn̠v/ '2:K>K`jw^8^ȣVu1cbUh=,*{x0F>','v?֍)~pcJM^gRA@hШVb<X.U_4&vf/xؙa6 gc +93 l}H;o@IcлW`kLc9KQh4ܤ 0Oe+K`E$eƇ?>]l4,|}VLgW=AvEqZ.I[`J@Ōq.E'=g fe^btd[|0"N^ [I;7sW,> n7.,>@|Q7F]d;Rvk v7 D!{}$SrfΒ<99̓t㬛aU8Gppj2eWG .h1@U*6XAt%O8 ]@>M/f~O^~PqN%[b҆BNZ]pQΣDQ-, y͍Wy9Xն7hWxeEQ瘼_ kiKd&[ Eˌb}ocilu<#RڼfMYvkGC("Ky71sRvI3Ql*>N:,hܜu@v9]Je~H6 +˅%q VI[{fL𗓶?'"F7Z)7pN-M)7nsBޘգ:;,Wwoߒ:4fMw#{*B-0#Hu~X˲(s; 5lox݆@(y) +|yU/9n2ʜ{G,=cB?j RzqZ?xN}Z(hwAI;eHxg5~F$C|p|D|tQ)7yc>iz|"H{t%T}{R  #BstѤCZ7 p̡LuzhFBihlnH4(RL;2FˉG_1j1v4C:KJsT Ղ) +KW'AiC6M&'V y\ C GrH17Q_0i6Ē)nWxMW{_έ{t4ztѵ:6uy{7Q-HV}B7kvjQ_/\g!wb> + d/ןY?!%ċr}AE nzءOD'V>Yai h^PG~Rx[úB&7:>͌uq{猣Z_(2]"߇yHtP!XynbXh2 AO`$ʜm oS#6epzA91ӱ+w/4RaAG$Y\,`b낄5xhGRAO#Tp=Gl'}l8#qJ |$Hc94E ^;:fZv,&te9|;pi̬OfeXMMb`>ͬUd'vK+tGKz(zS| aʸ7 ~M7DBϝ̍EM4+E  z3dTh13qv ?=Ѱ:vS HY8sĐiIY7:{olUGSi# 8ۆ?Q,S +}^'fICQ`?l. `BYpG8nWm/K1ޣw+וGQޫ6$Ikx268q1:pd=Gc_J +endstream +endobj +1461 0 obj +<< +/R7 305 0 R +>> +endobj +1462 0 obj +<< +/R201 362 0 R +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1463 0 obj +<< +/Filter /FlateDecode +/Length 2427 +>> +stream +]ޝZXTӤ/sfكvKtfx=i +y,L~@D_֠%Xo;D55ö\yyj\n[Y|}мv?jNPz$1BrgU-ϝH9 ] aXzO>Ja|z{Zqso ͌CIWr*I2vLpzq9ށ̇p$8L>H +-CWxU>g;^7ljj ;ϯ Xfs!𝯕K &B泩vԇ2^&5p[iKzk% PI#-< Bk6m'=o5u>hRQOs~TvW&-=D4zjAoC(ĚžZI w낱*褀32D%ϩ: +Fmu|D]pT\(BA S)^CeNLi ҮDHC,eB菔s6{xVCWs5?2t:;A5d8n'].Ajo5e~aʛۨ<5.% Abr ~HLl,L+aD#*W0%L?BlOATi5^r…orq 30 {N6ϛқڸ +pgrQOJ2,,J=8i畐b Zf'ˀu!'\b&:O[P;>s|ap:T#}Bvq/l}ZQ0Fzy|Zm< _zA א?緲bb(YTsƋZYkIynJa0H{! @6T7 zCuZ OL5mD5l+II䧑E@D#<v 4oq5_DtPSs h˵pC98gԣH~Q@jIw(LF/'㑩'gv>.7~* \Ϙ,b%>RS2 +y5J}_^a;WRݻ#…AaLBT{o[Gft lP@DbbH`jh:Ŀ)A("K3J?{n+ސI#[~^_lLx&i!Zj{mm4wC>0dc<6 +~ c;ìLRP1ϖE֏ 5~`%{i Oe: l'J9)Y0??@179]vӈt :rD~M l ld6*U|v_и픊͕K%fA"7 R+D8\ZJ I-SyERr؆Q +endstream +endobj +1464 0 obj +<< +/R7 305 0 R +>> +endobj +1465 0 obj +<< +/R163 332 0 R +/R137 315 0 R +>> +endobj +1466 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 167.75 435.429 250.433 447.59 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <0703c7e2a5f56d479ff6338b8276bba8c93fcabf5fa3> +>> +/Subtype /Link +>> +endobj +1467 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 54 345.539 105.725 357.699 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1468 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 160.701 345.539 243.102 357.699 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI +>> +/Subtype /Link +>> +endobj +1469 0 obj +<< +/Filter /FlateDecode +/Length 1591 +>> +stream +ߨ?p71A\D#|*;CDD"`3r> h/(\&KS#_5ZLZTN:M`IccQU"JnX!E:W5 0`tj9Uw|ph૾yj H`yJeu|X[(T+"N~?%=~l, sY븀%$wJT')e(@:Cʹ}Hn(10 Ow 6D-hr *E$dXY `YP%c'6{A5Y.a g0vAzŦzWuI= }\jw!A[Ă#F Gֿ 8uWuc^dEZ@QYYYTA9-I-b3iQ"hBaH;&ZFU•| xu=j4aD2t:IV7\E95(O2̓ F[fϭ Y=TI5׎KS_" 8Hҏ>$k:SΈAPQ+0dS5 ӀdE`Z3$8כxZLn#[w\b72*[ MdG +p׆>=^] vWbT%#_ 0T KV#$DB&[Ske/_wwQ3\n#(%Ҋ>iC-Akm4‚\RٝQ&xe{.G郤"k> xH?,8M&(*rsJ %,d;5~_}NBuw]D B=)($Svft {nrm )R7Oa++o=tӢuU§.Z J>Oq="D&ȓŃYdu3}4ֆ ]AE- 羡:F)'1J+#L%XzR3m >s4%ϬˆLfTte1wJ̣;'-)|^I/ CcΓʽ +endstream +endobj +1470 0 obj +<< +/R7 305 0 R +>> +endobj +1471 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +1472 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 54 376.512 159.938 388.673 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <5d0db2ae25ab97aa8e406c3ff40762d921a9d7c79665e67df376d0e87a5a52d96c2be56f7df2d40c24736cdb547a677bb81a068fe755462d2c8e83b1d92b557142fcc4ddda61c93e907a555dfa0254d10cbf87ad4545608d2c9d52425fe50ddcbbcc2dfbbd> +>> +/Subtype /Link +>> +endobj +1473 0 obj +<< +/Filter /FlateDecode +/Length 1533 +>> +stream +:Da&49# |9I&L^ "RUJ^-Mv'(s}vQv]blZ5d 爙Rr u]控ZAM6E?Hw|{z Q KG:> KCE7g%N$% +RE=R1~¤JO#&-vOAhtU&d_'{ X=ɥO?M>MoLk7%HoqWрٕDزKy3]lj4'>%Nql}D[eZu+`1J <ܱm_It! s\PG)fzU5Bϫ~հDft-vKK@3PJ`6j`l7'إ-UVUdRJ Ep#T,f&[p}: MF%F"բ +"UIam/dCkkxr?[)@(D:&+@:Bf!z DERb湗pUz @)8!`;*8lVwc? JmXWέ;۲|<8x fچ ~I +~2<"Y+͛ZZ;%2>M0-1d]?O}y=!h#ڰPp˙bO7?tL[]eT{h +~Cߌ3G'IRZSC}ECNP@heq?nhYop5n8 {(di p:j1 ԣ5鞈u\['0+r3U9֣S7הN:^O\ǏB˺""BMN>y3#V!{mP%BgLyٹ<(LI#ȭ xhV aܿ(_ +{Ym4>fc7H/w{넃LOxw!1e6U2>|/"^bxNٷnj%ƻ֔AU + d A?t$i'$j`f +~q_Qafΐnޔ|7m1NP, 4+^1jHDͷ鷥po@tAL60O7!J^uu{%,<@i|HuɻmPWk0O{ۧ'失 +'T"z0ȀᓦS BG BiNGH +endstream +endobj +1474 0 obj +<< +/R7 305 0 R +>> +endobj +1475 0 obj +<< +/R163 332 0 R +/R156 346 0 R +/R137 315 0 R +>> +endobj +1476 0 obj +<< +/Filter /FlateDecode +/Length 3173 +>> +stream +qW]/aG}{x4)7fR}*k; /0'| +\E ":(= @S!.T;(D]S p޿ڸ=E@i%>H(B#oMD 0%8ҺiI4p7)$^hn +K̳ݭI%y_X_,G6Wt.(&@XTd{u1ߣ4I|o r(CAcPܺ=}p0 ]p=.;sw)L^ `j)+LjbI ܝEȪnbTE{[ _>~0jYjF` \8>^S/yuվ+MZO|}"MHɑ*Dds4ZS,pfWE*\q jw([Blͣx-K Qv2f#%(5Ő£nn.WBN +7CC# 6c%[\ K{%& 0҉)8SOt':8<*ASޕ7|ІӲ8\vCEuoyϊZC;ɂWeGQ =xv闫Р4[qIkQhSˉ\K}:#G8vc<BrV-Ld5f[JS͝Ń^.9II1 85y m_5Rl(K1+$ KEWC$xRMtB72 2 ROELC'U5ֽ7RgMd3 @ts<:ܻw`V@}"wZi֡5-u.IqM6gyF@;hrnma5=ѭ%T + B]lyA.d,)CO[Trd +1ޝ $BI"gGi%^ͻ(iR{ϩYADYHtp2s -P^ɚ5pd+gviF2FYdx(Un(H ˊ'_RDN/ڎ;|PsDt7Iho`po(y7i8vg:lJʆWIV:?HzzWS+CwR&3ᕇ+,U[*#D{QQ(b6>$!}V(@Lj&_m,(0fRS~9"nkqV.WFOR^{]&_U qBo3;̘F1H +`.T sRgN +_3fxg,5;j'fAˢCc2"pwA1JxXeOX5&t|L&4wny}wO`, ;y&^2Mt awUt>82"YL")W3kW9E@/Lɐ1ؠ; :#&iW0gvemH 0sWaYSW#sc8 kPߪ@$,'^X$Ys30Si>l3)^3@*곺7 u'wNtTa!xI`Muhbv_ 칹CEJQ(?Ĕoq~FA  \nKYa,F D['XQshĜ"R=4-1أ7Q@Êf&djѶ:' rWH\:!~'/eY3s>UʩkBozg+ /.K4ȳ7N&@W>OQӶ1} z,zx.0*h$6Hך90#=aa+>u*tw+?S>YGxCRV*gÔbjC9ٿox&(s ?XR=Lj\J3Aad$S;H6uj y?XIX03q0zf-e4KxAw +MN(hY seCW+ +U;ۯT l(A35̎.s> +endobj +1478 0 obj +<< +/Type /ExtGState +/TR /Identity +>> +endobj +1479 0 obj +<< +/R1816 1480 0 R +/R1815 1481 0 R +>> +endobj +1480 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 1095 +/Height 144 +/BitsPerComponent 8 +/Filter /FlateDecode +/DecodeParms << +/Predictor 15 +/Columns 1095 +/Colors 3 +>> +/SMask 1481 0 R +/Length 3644 +>> +stream +"sW -H;$x~fMDꄟh^Pb\BAs+ԮAHY- + =Euv0*:]XNe9 R¶#[hY8Q**}@zJV ӰlHf y+'V$EyY4`$PrieC៊ZYB*v=4ك×_ ʂTG7*@{ +-2;u&PXG`s5@xr_Ɏӟ (Fk.,+7!$с#E ++یN@$7rhiHI(Z\1rzna_$D7\r"ͳ &yɊ4k  2|eyʇ}].]jMX"1@HȎc6)vBdU7AJ#tŵID@4aarGHx!s@ +!@:Ӂs^*ʤRw6f-'6xry#bŕ4IRX@TF[9c}]@ٗl׍ +c>吵9cF'lDy烁#цMvzh&U:D-euk$p66oAlN69!%Z:ït=UIh^At(N,]AK0}\1Zo*9ԡ=JM2uc& 3yzdy bИL_|Z^T+7Z~7狅ŽOw1SEDn{pK '7C)_FxZ5$'s[C 0z05:ɪRloƷXw'C'9BM'F}!;zQA ع_u`t:Wʣ)^v\@, AT? +)IZm[S,+eU/Trg%B~j0Y`-¨뽏~l9ï[G$Y9Y!F+ +C_/ E`?pղQ״\=׹Xx\QYXۯa.M[K,٭j!-ӡ=D?ߟ`Fnۯd՞of#2VTp%յkAKJ*jAce(kwWukғH*eO؀\C⍃JO@ i~ EkPGr`oiQT+(MU#Y[.55! ba[FG^NCRªp.oKd"gS]q[ĘuW1~C^~SΡ&i KkdXFμTLhލ;ezB@(M= ':0/[jVrfu0cUy؄e0z+]a-jkAt +u٥¶0%5-A9W7)+: dTМ9ߩu T<@ic={=@) SdH?m1泛+fopNF*"'dw5,y8& -(4UY(dF 1MJYv')XBn~HkQ,vC b7\]q-#? Pl%Z?J`@HLe>6dž%QJ M/AONMݛͱHE~AǛ} 0Bv3,(%:lH&}QJ+vdQDFT6jqsfLst&A`|@0ONbDIJ"n3(+8d#5>"ٶ587 %1J ՈF\Ή!p!Z5AdƝ50O`4d|@"1U$/Y>ϕ#Ô+;+xbى2V^1KYs!<#`|I@ru7jm"r`R؎{'cA3c s\O7Iҝ }3Ju L[1vW皎T]="OÇD?;Ty޶|+Q +[K)o訃mg˱IVqTm}(5b8ϨsԊ!XZ>UA%B!g\ Tts`kf8(ANPl秽V;tF[ > +/Length 7872 +>> +stream +]6 }ݜߒ+'%KSKiN0PvFB2VX* ꯿$a4 XJ*{' +!ibL;[7| 5rcp)w1[[bFT1 +(m#Ygg~]!H/#pR|Rb~K4rVɩu-ت>J $ +ex (S$Hl5!z8}Lz ZݑeԫN+?l%)hL +VP4QOF92"?@5U6ehR< +pu{ʴlɃ (13&%8L౜ }u,N +8MT?tv! yw8x`++RVnu_rΨ9G`^Y3/^_ʵR›ޱ={3$/RM;V=!#:ECΦ:&?}% QN +)n`b],D+mbui)ꈭ^g=|f:pTVW_m7Y}$'%ć9Nl;4b1SH a,Z^pc2y.:CUe7 tS @S6E5}\feU3 ;?1]D |b{HKo.}Zc]ʈIOũ}ΒZQD`ж5UlNP̟p@6㈏/!9^07Gs8r:C?Xʦd8$鱐<S+qKd}]S@YSѵM5VsܖԹSLJB,Mۢh?3w*pq*Q'?!FP"82ff7plPl ҔCZjZTIF|&ℿWBY#jl($haGwssݣ0u]ԩL:r0pTQR7R\yK |RŻK UOS&\ 1NL dK6p;Rʢ?lvGzrݜV6ɍZ\{f(@Is!io;s< m\gZaf1I |NBdhR"UۭӴtx/Q$(k@'fOQ`f+EhȻܿ/aTb[o; vPHvLL@/aΒP酖OH9|Q7G5PH{mFmaU5Ѫ C5ү͐-=!W5F%r|ټk[X +.Y0^)FuzI1Mn(K%翑T{4E{gɽwb PiW5Nd fEs(й>jz ?VJi xAb0^)~)/}}'z9u>>lh{UBچwA QK2zl/rtͭU2:msyWquh.V3׬~\kẹPzMΆAXiDT01``4Dy{b0dA§6NKϑ @1l>tLL2~hb 23;R.HJ!hq >kO;c]j~kq75E$Y[DO?o{ Ty˙:,ꎈrTCئNmzP1T{drLH+J~`7ΘD6y. bVA8\.\YT9 +y1"~K>hϿ8@r`\tI( ʉo3#/[SbNӧWg oN;:G ̀;.DoMmby#ocIwRc".9/8g/~BX#|WzXue>+8ZR[z]{ o~Џilǝyw$eB W~VCmjaC,c5Drj[ 8/L_"ć4$je#Gʡdp(wkTMzdLjEj᳡nI.̽Qy] ` +^9%r>;gbjbqTdyTdۉi ]1|vv\yǁ1G_Ijgsgҵl/ \F'lyJLEo֫Ž\3_C !:g]#r'/Md#̤\EPdn<4JV*u:y&/z>!@[}B%+v $-2$"1rjIJWZ)]{ s7M5'u_.|s;8i!;R0 s +#:#qqjb:E4.w0%6iƈΒu'gp.eU>VbkFFC! +&X'^NI`?| sME?k#Z>,+m_rkRat)WlSe^C\MzEIHɖuBEYhF7>*MS9r4Yn~l=xF1^旙 :.V Aq<2_^j, OȜH0c@] 尹JWx=A$"JT=, $V}:MqlR/IjN}JU(r"EF9)4՛㌆76{ত[o=E d`ՉD .Ga6y,C x%PT)RC=EY vnppH`?&x&SvOՃ*]|hVlDyL7pF֥ލq#ֽ.$=3'i{Oo).W@{ gݡ,d uB5- h[M<xE:ZDg}Lv_ pT@k\XteORZ52{6^vt<UXI\m8<lo|رH 80 Al:7W@ab3:FpF$Ӛ <~޼ڻg^1{s~wNU،ㅤՓ'~W ݑ\@6m 7l_N(-;~\Ӷ-_džnTjBƩ(h5AHaD+_4/$_tO̸[, cl3hzv.$S]t1j2P`wI_3!EC4)O6yKw\[>~KtydbѴ*zB׷ER}H !*Mo?ԴóXǐa!޼et 8~`6ئeN|O`Ay$rЪ%.+07N",Π oOV`3Xzl{VlV!&xҡ!f .N^̨3[ғ=DGNztYup>&zxnW)Rk +_Qrs*Uj_SϯicFHZ6f*v/á?䉚ȶzAiSr+w,81KֿgCHPzg3=XNH|͘[QYLxXgOTvobcg :]?)e(= #k=[oˍ[Ņ偔dg(|~QqG- 5D ʶL6rc^wEOCR`܍D ?2&@_츃g. =Ȥ*d PJS[a.6d{G&kj.qm#z˼fUp{@Ș^7y)BW{D>FႡ P6Lt{OV6HzIأr59x~Fӿ>! ~a+htg͌P҇z>z6mkz Ńc0L{H/Zn]P=ME +>1>,;$=3( 4I?Ƒ:chy:<*(ǎHU%ġ˷l}J{Yo;0[D0xH$yr;4qgz + ETќ/YwH횒Gn-PjU@珴:1>32( MBbIU:Kz60 < "LxNBǾ$zAa7T0w| hW3u? άfdn&>$H Ϋ6xB}D; {[Q9a7|uNǛKѥˁan>aIA fOBԃLA3" k|Q0ji߀7}Bgv,u &_a eB\pnu2$IF.m Q9oNմsC}Ь@<]1mnr'+n$.V 8Dn4sD^ltUo9R٨4k0΄!%/Cjf`\^j8dFrڶvhy]` 0sTtQ"ö.Fi_Ijl*D6y!EdWY@{X#Y+pdv?͸Ǎ,$~&M6]hO\AT(}5/d;ph5^JQϸ-.,jBgoA|3gH,]4BI ov 5 }N×}P ,_|-FT2k!z'IrI 2҇1F q܆~c ]o+)t}n y}%VYʩE~GzW[Vg]u > +endobj +1483 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 128.865 316.975 200.443 329.136 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <50343d63eb5ce210e8f51ddf80c880ac4b049c7314b3a62e75a7b5cda2e3577efc4b7dc9ba353271c134e67987e2e187ede62ce6b5af420a7b44176f97c3ea80bc31f249f7cb201b6733511472aafa7101a62dbbb1a74ce3691cf9bbbbf9c9c2f99bfd792161> +>> +/Subtype /Link +>> +endobj +1484 0 obj +<< +/Filter /FlateDecode +/Length 2719 +>> +stream +DFU_YAZY^Bή!1\) XHΎ߽ȉTeF9G{_9t3jR&Ž.G=gp ] H8Y7<"?.kPǴԇEcV:d|Ksxgӟp$9:5XlлZ87EW}v"EN<7K`Wɸ1WNpC% +c+1!c;gѽJA3MJgYM1xe3WdR̅\bv3NAkJ9ڎcm{>@7KD;+NQdl LDdKǬ.[d(YX\pZ >eK_ jȫ&S Ʒ +M[C-oOkw +CY-fԃy?b\VPTdP6|Q@Zi%&W0s'@Pf)򇶗R[P]4oo l?|omujԬSvQuQ.̺M@V-J,2OYwLd؍p" +۞gH7Ց83aEؚ65&>ۖT\Z_rHumTH~"y7l"o6L'򅁄n֡pa#9JsL(ͩVoLI+Q ̚u|eYXDNK@Ë+wg\ ԍи:S(D- u3$lA!f3ZVɔ_ ~D$҂'kesxSfWX'YE[5ʧ%%J+)}_hBT^td/ +d^BqM@j3Pa;D_.5ZB>^B-&uT(I to,^( y +t߄SdσoBzIՁF7D@~ M&pyg U~BQG(n|ř=Ɵ?7zeۺZ8 37ښ?BLAf-lgWن0У&GO'&{#]A59^PC'0r +ѡE}r.mIA<,3s[SF@ƀi |V5`7FO% eTݢ~d#1BZ(1tVSB4AΗT-ҧ>|$6Uة1&E-T"IM*_)dȁa]^y`&w\(a { zML{ G ZPv1~'uG0G=Qz;1&7<=6_ XH"{Dv\Dk YYנ,gMˈPb*3Pr P\u]QJϦ10uNn?la)Z݃-Z{wW+Rhva + #> $DCQG̘zwõC=o:8:C{CnE1پ-1|RÝ W(h7u8qt ) xar/=4.&Y|Л.>̯qQg א &&@Pu-qe+1a˞#$قU+c +؄;ř Oޗgf:{pMz#55q(A-[[~u7d7Hy*ڌBM)'P?Ѡ >9 ={omqLR +"61tbߢ6ϙ63aѻ<qnՓC%%Pa.LѾMVyMZF]DX"GjK6]ӓ>zQ;kfm6"iEpr8l@?NDk¯V1D?1@Id|Cdr%ag\:*9vpBYO7pq7g|ܔP5\wVNE:];lѾH41ZiaN\!ym 9nf7';/%yk>ʌC7PzʭEr7w-vz>ٛBh >GP> +endobj +1486 0 obj +<< +/R156 346 0 R +/R137 315 0 R +>> +endobj +1487 0 obj +<< +/Type /Annot +/C [ 0 1 1 ] +/Rect [ 162.379 356.255 300.696 368.342 ] +/Border [ 0 0 0 ] +/A << +/S /URI +/URI <861fdaba646a51a277ca752c011aaa7e9db2b461c7d47821fac992f3c6c28f3d16387cf37a85c62b347fafedc69627d3506c2887125f5f579b6ef0bac6f62830e25c6839938aa7008d93d75d46cfce02d0b6863cd94a5701a47ad126ad65e18a5017df370f6a> +>> +/Subtype /Link +>> +endobj +1488 0 obj +<< +/Filter /FlateDecode +/Length 1756 +>> +stream +y1؁3#ϴVi4/$E%mxC>bqAI.MAbcb뻹RHWD:y1wIS\&LJx Ps~rO3ׄz|׾hc/bqu瞵pVϒ"^3+g@''q(sr_۩\3d⻰`BFm@} +ʡw >W2N` $@2k@ +*aGތ>iV/r.# ɝ(85Xgi%b~- )W\Rpg.Ȍ2S=sOҜ!_F:fتk;(s\ nXi1 +,dfohOlQ*n'Iօy|?zNXim)?E1ANi  e߻@W"et'B0 )E.,h4P+X +4,0Wd=S+Bg q 9'=Ve̚8ET,|{ !H4i˻eSzs?s(2iudI]F!&;%bAٸ=0`sUfoSiRjKxf'&s0OBx,[au9sLZ&yÿf~c%1\)JhH!ϙ 38)`j6Fu`='*vI;Fop ].//ߠx>2ș}'emEL6%M5@5B@9lGIOO=o7NgG潧XQMeuU 'u/No C=u޽w$*+Ҏ=e6 dWk/4 MNMHRFRjk_^uH4fvW*it"/fJJ85lKAHq.Y <38587d0060b717bcd207ebec4c66bd60> ] +/Encrypt 302 0 R +>> +startxref +1320654 +%%EOF diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/dictionary.txt b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/dictionary.txt new file mode 100644 index 0000000..6132ba4 --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/dictionary.txt @@ -0,0 +1,45333 @@ +AARHUS +AARON +ABABA +ABACK +ABAFT +ABANDON +ABANDONED +ABANDONING +ABANDONMENT +ABANDONS +ABASE +ABASED +ABASEMENT +ABASEMENTS +ABASES +ABASH +ABASHED +ABASHES +ABASHING +ABASING +ABATE +ABATED +ABATEMENT +ABATEMENTS +ABATER +ABATES +ABATING +ABBA +ABBE +ABBEY +ABBEYS +ABBOT +ABBOTS +ABBOTT +ABBREVIATE +ABBREVIATED +ABBREVIATES +ABBREVIATING +ABBREVIATION +ABBREVIATIONS +ABBY +ABDOMEN +ABDOMENS +ABDOMINAL +ABDUCT +ABDUCTED +ABDUCTION +ABDUCTIONS +ABDUCTOR +ABDUCTORS +ABDUCTS +ABE +ABED +ABEL +ABELIAN +ABELSON +ABERDEEN +ABERNATHY +ABERRANT +ABERRATION +ABERRATIONS +ABET +ABETS +ABETTED +ABETTER +ABETTING +ABEYANCE +ABHOR +ABHORRED +ABHORRENT +ABHORRER +ABHORRING +ABHORS +ABIDE +ABIDED +ABIDES +ABIDING +ABIDJAN +ABIGAIL +ABILENE +ABILITIES +ABILITY +ABJECT +ABJECTION +ABJECTIONS +ABJECTLY +ABJECTNESS +ABJURE +ABJURED +ABJURES +ABJURING +ABLATE +ABLATED +ABLATES +ABLATING +ABLATION +ABLATIVE +ABLAZE +ABLE +ABLER +ABLEST +ABLY +ABNER +ABNORMAL +ABNORMALITIES +ABNORMALITY +ABNORMALLY +ABO +ABOARD +ABODE +ABODES +ABOLISH +ABOLISHED +ABOLISHER +ABOLISHERS +ABOLISHES +ABOLISHING +ABOLISHMENT +ABOLISHMENTS +ABOLITION +ABOLITIONIST +ABOLITIONISTS +ABOMINABLE +ABOMINATE +ABORIGINAL +ABORIGINE +ABORIGINES +ABORT +ABORTED +ABORTING +ABORTION +ABORTIONS +ABORTIVE +ABORTIVELY +ABORTS +ABOS +ABOUND +ABOUNDED +ABOUNDING +ABOUNDS +ABOUT +ABOVE +ABOVEBOARD +ABOVEGROUND +ABOVEMENTIONED +ABRADE +ABRADED +ABRADES +ABRADING +ABRAHAM +ABRAM +ABRAMS +ABRAMSON +ABRASION +ABRASIONS +ABRASIVE +ABREACTION +ABREACTIONS +ABREAST +ABRIDGE +ABRIDGED +ABRIDGES +ABRIDGING +ABRIDGMENT +ABROAD +ABROGATE +ABROGATED +ABROGATES +ABROGATING +ABRUPT +ABRUPTLY +ABRUPTNESS +ABSCESS +ABSCESSED +ABSCESSES +ABSCISSA +ABSCISSAS +ABSCOND +ABSCONDED +ABSCONDING +ABSCONDS +ABSENCE +ABSENCES +ABSENT +ABSENTED +ABSENTEE +ABSENTEEISM +ABSENTEES +ABSENTIA +ABSENTING +ABSENTLY +ABSENTMINDED +ABSENTS +ABSINTHE +ABSOLUTE +ABSOLUTELY +ABSOLUTENESS +ABSOLUTES +ABSOLUTION +ABSOLVE +ABSOLVED +ABSOLVES +ABSOLVING +ABSORB +ABSORBED +ABSORBENCY +ABSORBENT +ABSORBER +ABSORBING +ABSORBS +ABSORPTION +ABSORPTIONS +ABSORPTIVE +ABSTAIN +ABSTAINED +ABSTAINER +ABSTAINING +ABSTAINS +ABSTENTION +ABSTENTIONS +ABSTINENCE +ABSTRACT +ABSTRACTED +ABSTRACTING +ABSTRACTION +ABSTRACTIONISM +ABSTRACTIONIST +ABSTRACTIONS +ABSTRACTLY +ABSTRACTNESS +ABSTRACTOR +ABSTRACTORS +ABSTRACTS +ABSTRUSE +ABSTRUSENESS +ABSURD +ABSURDITIES +ABSURDITY +ABSURDLY +ABU +ABUNDANCE +ABUNDANT +ABUNDANTLY +ABUSE +ABUSED +ABUSES +ABUSING +ABUSIVE +ABUT +ABUTMENT +ABUTS +ABUTTED +ABUTTER +ABUTTERS +ABUTTING +ABYSMAL +ABYSMALLY +ABYSS +ABYSSES +ABYSSINIA +ABYSSINIAN +ABYSSINIANS +ACACIA +ACADEMIA +ACADEMIC +ACADEMICALLY +ACADEMICS +ACADEMIES +ACADEMY +ACADIA +ACAPULCO +ACCEDE +ACCEDED +ACCEDES +ACCELERATE +ACCELERATED +ACCELERATES +ACCELERATING +ACCELERATION +ACCELERATIONS +ACCELERATOR +ACCELERATORS +ACCELEROMETER +ACCELEROMETERS +ACCENT +ACCENTED +ACCENTING +ACCENTS +ACCENTUAL +ACCENTUATE +ACCENTUATED +ACCENTUATES +ACCENTUATING +ACCENTUATION +ACCEPT +ACCEPTABILITY +ACCEPTABLE +ACCEPTABLY +ACCEPTANCE +ACCEPTANCES +ACCEPTED +ACCEPTER +ACCEPTERS +ACCEPTING +ACCEPTOR +ACCEPTORS +ACCEPTS +ACCESS +ACCESSED +ACCESSES +ACCESSIBILITY +ACCESSIBLE +ACCESSIBLY +ACCESSING +ACCESSION +ACCESSIONS +ACCESSORIES +ACCESSORS +ACCESSORY +ACCIDENT +ACCIDENTAL +ACCIDENTALLY +ACCIDENTLY +ACCIDENTS +ACCLAIM +ACCLAIMED +ACCLAIMING +ACCLAIMS +ACCLAMATION +ACCLIMATE +ACCLIMATED +ACCLIMATES +ACCLIMATING +ACCLIMATIZATION +ACCLIMATIZED +ACCOLADE +ACCOLADES +ACCOMMODATE +ACCOMMODATED +ACCOMMODATES +ACCOMMODATING +ACCOMMODATION +ACCOMMODATIONS +ACCOMPANIED +ACCOMPANIES +ACCOMPANIMENT +ACCOMPANIMENTS +ACCOMPANIST +ACCOMPANISTS +ACCOMPANY +ACCOMPANYING +ACCOMPLICE +ACCOMPLICES +ACCOMPLISH +ACCOMPLISHED +ACCOMPLISHER +ACCOMPLISHERS +ACCOMPLISHES +ACCOMPLISHING +ACCOMPLISHMENT +ACCOMPLISHMENTS +ACCORD +ACCORDANCE +ACCORDED +ACCORDER +ACCORDERS +ACCORDING +ACCORDINGLY +ACCORDION +ACCORDIONS +ACCORDS +ACCOST +ACCOSTED +ACCOSTING +ACCOSTS +ACCOUNT +ACCOUNTABILITY +ACCOUNTABLE +ACCOUNTABLY +ACCOUNTANCY +ACCOUNTANT +ACCOUNTANTS +ACCOUNTED +ACCOUNTING +ACCOUNTS +ACCRA +ACCREDIT +ACCREDITATION +ACCREDITATIONS +ACCREDITED +ACCRETION +ACCRETIONS +ACCRUE +ACCRUED +ACCRUES +ACCRUING +ACCULTURATE +ACCULTURATED +ACCULTURATES +ACCULTURATING +ACCULTURATION +ACCUMULATE +ACCUMULATED +ACCUMULATES +ACCUMULATING +ACCUMULATION +ACCUMULATIONS +ACCUMULATOR +ACCUMULATORS +ACCURACIES +ACCURACY +ACCURATE +ACCURATELY +ACCURATENESS +ACCURSED +ACCUSAL +ACCUSATION +ACCUSATIONS +ACCUSATIVE +ACCUSE +ACCUSED +ACCUSER +ACCUSES +ACCUSING +ACCUSINGLY +ACCUSTOM +ACCUSTOMED +ACCUSTOMING +ACCUSTOMS +ACE +ACES +ACETATE +ACETONE +ACETYLENE +ACHAEAN +ACHAEANS +ACHE +ACHED +ACHES +ACHIEVABLE +ACHIEVE +ACHIEVED +ACHIEVEMENT +ACHIEVEMENTS +ACHIEVER +ACHIEVERS +ACHIEVES +ACHIEVING +ACHILLES +ACHING +ACID +ACIDIC +ACIDITIES +ACIDITY +ACIDLY +ACIDS +ACIDULOUS +ACKERMAN +ACKLEY +ACKNOWLEDGE +ACKNOWLEDGEABLE +ACKNOWLEDGED +ACKNOWLEDGEMENT +ACKNOWLEDGEMENTS +ACKNOWLEDGER +ACKNOWLEDGERS +ACKNOWLEDGES +ACKNOWLEDGING +ACKNOWLEDGMENT +ACKNOWLEDGMENTS +ACME +ACNE +ACOLYTE +ACOLYTES +ACORN +ACORNS +ACOUSTIC +ACOUSTICAL +ACOUSTICALLY +ACOUSTICIAN +ACOUSTICS +ACQUAINT +ACQUAINTANCE +ACQUAINTANCES +ACQUAINTED +ACQUAINTING +ACQUAINTS +ACQUIESCE +ACQUIESCED +ACQUIESCENCE +ACQUIESCENT +ACQUIESCES +ACQUIESCING +ACQUIRABLE +ACQUIRE +ACQUIRED +ACQUIRES +ACQUIRING +ACQUISITION +ACQUISITIONS +ACQUISITIVE +ACQUISITIVENESS +ACQUIT +ACQUITS +ACQUITTAL +ACQUITTED +ACQUITTER +ACQUITTING +ACRE +ACREAGE +ACRES +ACRID +ACRIMONIOUS +ACRIMONY +ACROBAT +ACROBATIC +ACROBATICS +ACROBATS +ACRONYM +ACRONYMS +ACROPOLIS +ACROSS +ACRYLIC +ACT +ACTA +ACTAEON +ACTED +ACTING +ACTINIUM +ACTINOMETER +ACTINOMETERS +ACTION +ACTIONS +ACTIVATE +ACTIVATED +ACTIVATES +ACTIVATING +ACTIVATION +ACTIVATIONS +ACTIVATOR +ACTIVATORS +ACTIVE +ACTIVELY +ACTIVISM +ACTIVIST +ACTIVISTS +ACTIVITIES +ACTIVITY +ACTON +ACTOR +ACTORS +ACTRESS +ACTRESSES +ACTS +ACTUAL +ACTUALITIES +ACTUALITY +ACTUALIZATION +ACTUALLY +ACTUALS +ACTUARIAL +ACTUARIALLY +ACTUATE +ACTUATED +ACTUATES +ACTUATING +ACTUATOR +ACTUATORS +ACUITY +ACUMEN +ACUTE +ACUTELY +ACUTENESS +ACYCLIC +ACYCLICALLY +ADA +ADAGE +ADAGES +ADAGIO +ADAGIOS +ADAIR +ADAM +ADAMANT +ADAMANTLY +ADAMS +ADAMSON +ADAPT +ADAPTABILITY +ADAPTABLE +ADAPTATION +ADAPTATIONS +ADAPTED +ADAPTER +ADAPTERS +ADAPTING +ADAPTIVE +ADAPTIVELY +ADAPTOR +ADAPTORS +ADAPTS +ADD +ADDED +ADDEND +ADDENDA +ADDENDUM +ADDER +ADDERS +ADDICT +ADDICTED +ADDICTING +ADDICTION +ADDICTIONS +ADDICTS +ADDING +ADDIS +ADDISON +ADDITION +ADDITIONAL +ADDITIONALLY +ADDITIONS +ADDITIVE +ADDITIVES +ADDITIVITY +ADDRESS +ADDRESSABILITY +ADDRESSABLE +ADDRESSED +ADDRESSEE +ADDRESSEES +ADDRESSER +ADDRESSERS +ADDRESSES +ADDRESSING +ADDRESSOGRAPH +ADDS +ADDUCE +ADDUCED +ADDUCES +ADDUCIBLE +ADDUCING +ADDUCT +ADDUCTED +ADDUCTING +ADDUCTION +ADDUCTOR +ADDUCTS +ADELAIDE +ADELE +ADELIA +ADEN +ADEPT +ADEQUACIES +ADEQUACY +ADEQUATE +ADEQUATELY +ADHERE +ADHERED +ADHERENCE +ADHERENT +ADHERENTS +ADHERER +ADHERERS +ADHERES +ADHERING +ADHESION +ADHESIONS +ADHESIVE +ADHESIVES +ADIABATIC +ADIABATICALLY +ADIEU +ADIRONDACK +ADIRONDACKS +ADJACENCY +ADJACENT +ADJECTIVE +ADJECTIVES +ADJOIN +ADJOINED +ADJOINING +ADJOINS +ADJOURN +ADJOURNED +ADJOURNING +ADJOURNMENT +ADJOURNS +ADJUDGE +ADJUDGED +ADJUDGES +ADJUDGING +ADJUDICATE +ADJUDICATED +ADJUDICATES +ADJUDICATING +ADJUDICATION +ADJUDICATIONS +ADJUNCT +ADJUNCTS +ADJURE +ADJURED +ADJURES +ADJURING +ADJUST +ADJUSTABLE +ADJUSTABLY +ADJUSTED +ADJUSTER +ADJUSTERS +ADJUSTING +ADJUSTMENT +ADJUSTMENTS +ADJUSTOR +ADJUSTORS +ADJUSTS +ADJUTANT +ADJUTANTS +ADKINS +ADLER +ADLERIAN +ADMINISTER +ADMINISTERED +ADMINISTERING +ADMINISTERINGS +ADMINISTERS +ADMINISTRABLE +ADMINISTRATE +ADMINISTRATION +ADMINISTRATIONS +ADMINISTRATIVE +ADMINISTRATIVELY +ADMINISTRATOR +ADMINISTRATORS +ADMIRABLE +ADMIRABLY +ADMIRAL +ADMIRALS +ADMIRALTY +ADMIRATION +ADMIRATIONS +ADMIRE +ADMIRED +ADMIRER +ADMIRERS +ADMIRES +ADMIRING +ADMIRINGLY +ADMISSIBILITY +ADMISSIBLE +ADMISSION +ADMISSIONS +ADMIT +ADMITS +ADMITTANCE +ADMITTED +ADMITTEDLY +ADMITTER +ADMITTERS +ADMITTING +ADMIX +ADMIXED +ADMIXES +ADMIXTURE +ADMONISH +ADMONISHED +ADMONISHES +ADMONISHING +ADMONISHMENT +ADMONISHMENTS +ADMONITION +ADMONITIONS +ADO +ADOBE +ADOLESCENCE +ADOLESCENT +ADOLESCENTS +ADOLPH +ADOLPHUS +ADONIS +ADOPT +ADOPTED +ADOPTER +ADOPTERS +ADOPTING +ADOPTION +ADOPTIONS +ADOPTIVE +ADOPTS +ADORABLE +ADORATION +ADORE +ADORED +ADORES +ADORN +ADORNED +ADORNMENT +ADORNMENTS +ADORNS +ADRENAL +ADRENALINE +ADRIAN +ADRIATIC +ADRIENNE +ADRIFT +ADROIT +ADROITNESS +ADS +ADSORB +ADSORBED +ADSORBING +ADSORBS +ADSORPTION +ADULATE +ADULATING +ADULATION +ADULT +ADULTERATE +ADULTERATED +ADULTERATES +ADULTERATING +ADULTERER +ADULTERERS +ADULTEROUS +ADULTEROUSLY +ADULTERY +ADULTHOOD +ADULTS +ADUMBRATE +ADUMBRATED +ADUMBRATES +ADUMBRATING +ADUMBRATION +ADVANCE +ADVANCED +ADVANCEMENT +ADVANCEMENTS +ADVANCES +ADVANCING +ADVANTAGE +ADVANTAGED +ADVANTAGEOUS +ADVANTAGEOUSLY +ADVANTAGES +ADVENT +ADVENTIST +ADVENTISTS +ADVENTITIOUS +ADVENTURE +ADVENTURED +ADVENTURER +ADVENTURERS +ADVENTURES +ADVENTURING +ADVENTUROUS +ADVERB +ADVERBIAL +ADVERBS +ADVERSARIES +ADVERSARY +ADVERSE +ADVERSELY +ADVERSITIES +ADVERSITY +ADVERT +ADVERTISE +ADVERTISED +ADVERTISEMENT +ADVERTISEMENTS +ADVERTISER +ADVERTISERS +ADVERTISES +ADVERTISING +ADVICE +ADVISABILITY +ADVISABLE +ADVISABLY +ADVISE +ADVISED +ADVISEDLY +ADVISEE +ADVISEES +ADVISEMENT +ADVISEMENTS +ADVISER +ADVISERS +ADVISES +ADVISING +ADVISOR +ADVISORS +ADVISORY +ADVOCACY +ADVOCATE +ADVOCATED +ADVOCATES +ADVOCATING +AEGEAN +AEGIS +AENEAS +AENEID +AEOLUS +AERATE +AERATED +AERATES +AERATING +AERATION +AERATOR +AERATORS +AERIAL +AERIALS +AEROACOUSTIC +AEROBACTER +AEROBIC +AEROBICS +AERODYNAMIC +AERODYNAMICS +AERONAUTIC +AERONAUTICAL +AERONAUTICS +AEROSOL +AEROSOLIZE +AEROSOLS +AEROSPACE +AESCHYLUS +AESOP +AESTHETIC +AESTHETICALLY +AESTHETICS +AFAR +AFFABLE +AFFAIR +AFFAIRS +AFFECT +AFFECTATION +AFFECTATIONS +AFFECTED +AFFECTING +AFFECTINGLY +AFFECTION +AFFECTIONATE +AFFECTIONATELY +AFFECTIONS +AFFECTIVE +AFFECTS +AFFERENT +AFFIANCED +AFFIDAVIT +AFFIDAVITS +AFFILIATE +AFFILIATED +AFFILIATES +AFFILIATING +AFFILIATION +AFFILIATIONS +AFFINITIES +AFFINITY +AFFIRM +AFFIRMATION +AFFIRMATIONS +AFFIRMATIVE +AFFIRMATIVELY +AFFIRMED +AFFIRMING +AFFIRMS +AFFIX +AFFIXED +AFFIXES +AFFIXING +AFFLICT +AFFLICTED +AFFLICTING +AFFLICTION +AFFLICTIONS +AFFLICTIVE +AFFLICTS +AFFLUENCE +AFFLUENT +AFFORD +AFFORDABLE +AFFORDED +AFFORDING +AFFORDS +AFFRICATE +AFFRICATES +AFFRIGHT +AFFRONT +AFFRONTED +AFFRONTING +AFFRONTS +AFGHAN +AFGHANISTAN +AFGHANS +AFICIONADO +AFIELD +AFIRE +AFLAME +AFLOAT +AFOOT +AFORE +AFOREMENTIONED +AFORESAID +AFORETHOUGHT +AFOUL +AFRAID +AFRESH +AFRICA +AFRICAN +AFRICANIZATION +AFRICANIZATIONS +AFRICANIZE +AFRICANIZED +AFRICANIZES +AFRICANIZING +AFRICANS +AFRIKAANS +AFRIKANER +AFRIKANERS +AFT +AFTER +AFTEREFFECT +AFTERGLOW +AFTERIMAGE +AFTERLIFE +AFTERMATH +AFTERMOST +AFTERNOON +AFTERNOONS +AFTERSHOCK +AFTERSHOCKS +AFTERTHOUGHT +AFTERTHOUGHTS +AFTERWARD +AFTERWARDS +AGAIN +AGAINST +AGAMEMNON +AGAPE +AGAR +AGATE +AGATES +AGATHA +AGE +AGED +AGEE +AGELESS +AGENCIES +AGENCY +AGENDA +AGENDAS +AGENT +AGENTS +AGER +AGERS +AGES +AGGIE +AGGIES +AGGLOMERATE +AGGLOMERATED +AGGLOMERATES +AGGLOMERATION +AGGLUTINATE +AGGLUTINATED +AGGLUTINATES +AGGLUTINATING +AGGLUTINATION +AGGLUTININ +AGGLUTININS +AGGRANDIZE +AGGRAVATE +AGGRAVATED +AGGRAVATES +AGGRAVATION +AGGREGATE +AGGREGATED +AGGREGATELY +AGGREGATES +AGGREGATING +AGGREGATION +AGGREGATIONS +AGGRESSION +AGGRESSIONS +AGGRESSIVE +AGGRESSIVELY +AGGRESSIVENESS +AGGRESSOR +AGGRESSORS +AGGRIEVE +AGGRIEVED +AGGRIEVES +AGGRIEVING +AGHAST +AGILE +AGILELY +AGILITY +AGING +AGITATE +AGITATED +AGITATES +AGITATING +AGITATION +AGITATIONS +AGITATOR +AGITATORS +AGLEAM +AGLOW +AGNES +AGNEW +AGNOSTIC +AGNOSTICS +AGO +AGOG +AGONIES +AGONIZE +AGONIZED +AGONIZES +AGONIZING +AGONIZINGLY +AGONY +AGRARIAN +AGREE +AGREEABLE +AGREEABLY +AGREED +AGREEING +AGREEMENT +AGREEMENTS +AGREER +AGREERS +AGREES +AGRICOLA +AGRICULTURAL +AGRICULTURALLY +AGRICULTURE +AGUE +AGWAY +AHEAD +AHMADABAD +AHMEDABAD +AID +AIDA +AIDE +AIDED +AIDES +AIDING +AIDS +AIKEN +AIL +AILEEN +AILERON +AILERONS +AILING +AILMENT +AILMENTS +AIM +AIMED +AIMER +AIMERS +AIMING +AIMLESS +AIMLESSLY +AIMS +AINU +AINUS +AIR +AIRBAG +AIRBAGS +AIRBORNE +AIRBUS +AIRCRAFT +AIRDROP +AIRDROPS +AIRED +AIREDALE +AIRER +AIRERS +AIRES +AIRFARE +AIRFIELD +AIRFIELDS +AIRFLOW +AIRFOIL +AIRFOILS +AIRFRAME +AIRFRAMES +AIRILY +AIRING +AIRINGS +AIRLESS +AIRLIFT +AIRLIFTS +AIRLINE +AIRLINER +AIRLINES +AIRLOCK +AIRLOCKS +AIRMAIL +AIRMAILS +AIRMAN +AIRMEN +AIRPLANE +AIRPLANES +AIRPORT +AIRPORTS +AIRS +AIRSHIP +AIRSHIPS +AIRSPACE +AIRSPEED +AIRSTRIP +AIRSTRIPS +AIRTIGHT +AIRWAY +AIRWAYS +AIRY +AISLE +AITKEN +AJAR +AJAX +AKERS +AKIMBO +AKIN +AKRON +ALABAMA +ALABAMANS +ALABAMIAN +ALABASTER +ALACRITY +ALADDIN +ALAMEDA +ALAMO +ALAMOS +ALAN +ALAR +ALARM +ALARMED +ALARMING +ALARMINGLY +ALARMIST +ALARMS +ALAS +ALASKA +ALASKAN +ALASTAIR +ALBA +ALBACORE +ALBANIA +ALBANIAN +ALBANIANS +ALBANY +ALBATROSS +ALBEIT +ALBERICH +ALBERT +ALBERTA +ALBERTO +ALBRECHT +ALBRIGHT +ALBUM +ALBUMIN +ALBUMS +ALBUQUERQUE +ALCESTIS +ALCHEMY +ALCIBIADES +ALCMENA +ALCOA +ALCOHOL +ALCOHOLIC +ALCOHOLICS +ALCOHOLISM +ALCOHOLS +ALCOTT +ALCOVE +ALCOVES +ALDEBARAN +ALDEN +ALDER +ALDERMAN +ALDERMEN +ALDRICH +ALE +ALEC +ALECK +ALEE +ALERT +ALERTED +ALERTEDLY +ALERTER +ALERTERS +ALERTING +ALERTLY +ALERTNESS +ALERTS +ALEUT +ALEUTIAN +ALEX +ALEXANDER +ALEXANDRA +ALEXANDRE +ALEXANDRIA +ALEXANDRINE +ALEXEI +ALEXIS +ALFA +ALFALFA +ALFONSO +ALFRED +ALFREDO +ALFRESCO +ALGA +ALGAE +ALGAECIDE +ALGEBRA +ALGEBRAIC +ALGEBRAICALLY +ALGEBRAS +ALGENIB +ALGER +ALGERIA +ALGERIAN +ALGIERS +ALGINATE +ALGOL +ALGOL +ALGONQUIAN +ALGONQUIN +ALGORITHM +ALGORITHMIC +ALGORITHMICALLY +ALGORITHMS +ALHAMBRA +ALI +ALIAS +ALIASED +ALIASES +ALIASING +ALIBI +ALIBIS +ALICE +ALICIA +ALIEN +ALIENATE +ALIENATED +ALIENATES +ALIENATING +ALIENATION +ALIENS +ALIGHT +ALIGN +ALIGNED +ALIGNING +ALIGNMENT +ALIGNMENTS +ALIGNS +ALIKE +ALIMENT +ALIMENTS +ALIMONY +ALISON +ALISTAIR +ALIVE +ALKALI +ALKALINE +ALKALIS +ALKALOID +ALKALOIDS +ALKYL +ALL +ALLAH +ALLAN +ALLAY +ALLAYED +ALLAYING +ALLAYS +ALLEGATION +ALLEGATIONS +ALLEGE +ALLEGED +ALLEGEDLY +ALLEGES +ALLEGHENIES +ALLEGHENY +ALLEGIANCE +ALLEGIANCES +ALLEGING +ALLEGORIC +ALLEGORICAL +ALLEGORICALLY +ALLEGORIES +ALLEGORY +ALLEGRA +ALLEGRETTO +ALLEGRETTOS +ALLELE +ALLELES +ALLEMANDE +ALLEN +ALLENDALE +ALLENTOWN +ALLERGIC +ALLERGIES +ALLERGY +ALLEVIATE +ALLEVIATED +ALLEVIATES +ALLEVIATING +ALLEVIATION +ALLEY +ALLEYS +ALLEYWAY +ALLEYWAYS +ALLIANCE +ALLIANCES +ALLIED +ALLIES +ALLIGATOR +ALLIGATORS +ALLIS +ALLISON +ALLITERATION +ALLITERATIONS +ALLITERATIVE +ALLOCATABLE +ALLOCATE +ALLOCATED +ALLOCATES +ALLOCATING +ALLOCATION +ALLOCATIONS +ALLOCATOR +ALLOCATORS +ALLOPHONE +ALLOPHONES +ALLOPHONIC +ALLOT +ALLOTMENT +ALLOTMENTS +ALLOTS +ALLOTTED +ALLOTTER +ALLOTTING +ALLOW +ALLOWABLE +ALLOWABLY +ALLOWANCE +ALLOWANCES +ALLOWED +ALLOWING +ALLOWS +ALLOY +ALLOYS +ALLSTATE +ALLUDE +ALLUDED +ALLUDES +ALLUDING +ALLURE +ALLUREMENT +ALLURING +ALLUSION +ALLUSIONS +ALLUSIVE +ALLUSIVENESS +ALLY +ALLYING +ALLYN +ALMA +ALMADEN +ALMANAC +ALMANACS +ALMIGHTY +ALMOND +ALMONDS +ALMONER +ALMOST +ALMS +ALMSMAN +ALNICO +ALOE +ALOES +ALOFT +ALOHA +ALONE +ALONENESS +ALONG +ALONGSIDE +ALOOF +ALOOFNESS +ALOUD +ALPERT +ALPHA +ALPHABET +ALPHABETIC +ALPHABETICAL +ALPHABETICALLY +ALPHABETICS +ALPHABETIZE +ALPHABETIZED +ALPHABETIZES +ALPHABETIZING +ALPHABETS +ALPHANUMERIC +ALPHERATZ +ALPHONSE +ALPINE +ALPS +ALREADY +ALSATIAN +ALSATIANS +ALSO +ALSOP +ALTAIR +ALTAR +ALTARS +ALTER +ALTERABLE +ALTERATION +ALTERATIONS +ALTERCATION +ALTERCATIONS +ALTERED +ALTERER +ALTERERS +ALTERING +ALTERNATE +ALTERNATED +ALTERNATELY +ALTERNATES +ALTERNATING +ALTERNATION +ALTERNATIONS +ALTERNATIVE +ALTERNATIVELY +ALTERNATIVES +ALTERNATOR +ALTERNATORS +ALTERS +ALTHAEA +ALTHOUGH +ALTITUDE +ALTITUDES +ALTOGETHER +ALTON +ALTOS +ALTRUISM +ALTRUIST +ALTRUISTIC +ALTRUISTICALLY +ALUM +ALUMINUM +ALUMNA +ALUMNAE +ALUMNI +ALUMNUS +ALUNDUM +ALVA +ALVAREZ +ALVEOLAR +ALVEOLI +ALVEOLUS +ALVIN +ALWAYS +ALYSSA +AMADEUS +AMAIN +AMALGAM +AMALGAMATE +AMALGAMATED +AMALGAMATES +AMALGAMATING +AMALGAMATION +AMALGAMS +AMANDA +AMANUENSIS +AMARETTO +AMARILLO +AMASS +AMASSED +AMASSES +AMASSING +AMATEUR +AMATEURISH +AMATEURISHNESS +AMATEURISM +AMATEURS +AMATORY +AMAZE +AMAZED +AMAZEDLY +AMAZEMENT +AMAZER +AMAZERS +AMAZES +AMAZING +AMAZINGLY +AMAZON +AMAZONS +AMBASSADOR +AMBASSADORS +AMBER +AMBIANCE +AMBIDEXTROUS +AMBIDEXTROUSLY +AMBIENT +AMBIGUITIES +AMBIGUITY +AMBIGUOUS +AMBIGUOUSLY +AMBITION +AMBITIONS +AMBITIOUS +AMBITIOUSLY +AMBIVALENCE +AMBIVALENT +AMBIVALENTLY +AMBLE +AMBLED +AMBLER +AMBLES +AMBLING +AMBROSIAL +AMBULANCE +AMBULANCES +AMBULATORY +AMBUSCADE +AMBUSH +AMBUSHED +AMBUSHES +AMDAHL +AMELIA +AMELIORATE +AMELIORATED +AMELIORATING +AMELIORATION +AMEN +AMENABLE +AMEND +AMENDED +AMENDING +AMENDMENT +AMENDMENTS +AMENDS +AMENITIES +AMENITY +AMENORRHEA +AMERADA +AMERICA +AMERICAN +AMERICANA +AMERICANISM +AMERICANIZATION +AMERICANIZATIONS +AMERICANIZE +AMERICANIZER +AMERICANIZERS +AMERICANIZES +AMERICANS +AMERICAS +AMERICIUM +AMES +AMHARIC +AMHERST +AMIABLE +AMICABLE +AMICABLY +AMID +AMIDE +AMIDST +AMIGA +AMIGO +AMINO +AMISS +AMITY +AMMAN +AMMERMAN +AMMO +AMMONIA +AMMONIAC +AMMONIUM +AMMUNITION +AMNESTY +AMOCO +AMOEBA +AMOEBAE +AMOEBAS +AMOK +AMONG +AMONGST +AMONTILLADO +AMORAL +AMORALITY +AMORIST +AMOROUS +AMORPHOUS +AMORPHOUSLY +AMORTIZE +AMORTIZED +AMORTIZES +AMORTIZING +AMOS +AMOUNT +AMOUNTED +AMOUNTER +AMOUNTERS +AMOUNTING +AMOUNTS +AMOUR +AMPERAGE +AMPERE +AMPERES +AMPERSAND +AMPERSANDS +AMPEX +AMPHETAMINE +AMPHETAMINES +AMPHIBIAN +AMPHIBIANS +AMPHIBIOUS +AMPHIBIOUSLY +AMPHIBOLOGY +AMPHITHEATER +AMPHITHEATERS +AMPLE +AMPLIFICATION +AMPLIFIED +AMPLIFIER +AMPLIFIERS +AMPLIFIES +AMPLIFY +AMPLIFYING +AMPLITUDE +AMPLITUDES +AMPLY +AMPOULE +AMPOULES +AMPUTATE +AMPUTATED +AMPUTATES +AMPUTATING +AMSTERDAM +AMTRAK +AMULET +AMULETS +AMUSE +AMUSED +AMUSEDLY +AMUSEMENT +AMUSEMENTS +AMUSER +AMUSERS +AMUSES +AMUSING +AMUSINGLY +AMY +AMYL +ANABAPTIST +ANABAPTISTS +ANABEL +ANACHRONISM +ANACHRONISMS +ANACHRONISTICALLY +ANACONDA +ANACONDAS +ANACREON +ANAEROBIC +ANAGRAM +ANAGRAMS +ANAHEIM +ANAL +ANALECTS +ANALOG +ANALOGICAL +ANALOGIES +ANALOGOUS +ANALOGOUSLY +ANALOGUE +ANALOGUES +ANALOGY +ANALYSES +ANALYSIS +ANALYST +ANALYSTS +ANALYTIC +ANALYTICAL +ANALYTICALLY +ANALYTICITIES +ANALYTICITY +ANALYZABLE +ANALYZE +ANALYZED +ANALYZER +ANALYZERS +ANALYZES +ANALYZING +ANAPHORA +ANAPHORIC +ANAPHORICALLY +ANAPLASMOSIS +ANARCHIC +ANARCHICAL +ANARCHISM +ANARCHIST +ANARCHISTS +ANARCHY +ANASTASIA +ANASTOMOSES +ANASTOMOSIS +ANASTOMOTIC +ANATHEMA +ANATOLE +ANATOLIA +ANATOLIAN +ANATOMIC +ANATOMICAL +ANATOMICALLY +ANATOMY +ANCESTOR +ANCESTORS +ANCESTRAL +ANCESTRY +ANCHOR +ANCHORAGE +ANCHORAGES +ANCHORED +ANCHORING +ANCHORITE +ANCHORITISM +ANCHORS +ANCHOVIES +ANCHOVY +ANCIENT +ANCIENTLY +ANCIENTS +ANCILLARY +AND +ANDALUSIA +ANDALUSIAN +ANDALUSIANS +ANDEAN +ANDERS +ANDERSEN +ANDERSON +ANDES +ANDING +ANDORRA +ANDOVER +ANDRE +ANDREA +ANDREI +ANDREW +ANDREWS +ANDROMACHE +ANDROMEDA +ANDY +ANECDOTAL +ANECDOTE +ANECDOTES +ANECHOIC +ANEMIA +ANEMIC +ANEMOMETER +ANEMOMETERS +ANEMOMETRY +ANEMONE +ANESTHESIA +ANESTHETIC +ANESTHETICALLY +ANESTHETICS +ANESTHETIZE +ANESTHETIZED +ANESTHETIZES +ANESTHETIZING +ANEW +ANGEL +ANGELA +ANGELENO +ANGELENOS +ANGELES +ANGELIC +ANGELICA +ANGELINA +ANGELINE +ANGELO +ANGELS +ANGER +ANGERED +ANGERING +ANGERS +ANGIE +ANGIOGRAPHY +ANGLE +ANGLED +ANGLER +ANGLERS +ANGLES +ANGLIA +ANGLICAN +ANGLICANISM +ANGLICANIZE +ANGLICANIZES +ANGLICANS +ANGLING +ANGLO +ANGLOPHILIA +ANGLOPHOBIA +ANGOLA +ANGORA +ANGRIER +ANGRIEST +ANGRILY +ANGRY +ANGST +ANGSTROM +ANGUISH +ANGUISHED +ANGULAR +ANGULARLY +ANGUS +ANHEUSER +ANHYDROUS +ANHYDROUSLY +ANILINE +ANIMAL +ANIMALS +ANIMATE +ANIMATED +ANIMATEDLY +ANIMATELY +ANIMATENESS +ANIMATES +ANIMATING +ANIMATION +ANIMATIONS +ANIMATOR +ANIMATORS +ANIMISM +ANIMIZED +ANIMOSITY +ANION +ANIONIC +ANIONS +ANISE +ANISEIKONIC +ANISOTROPIC +ANISOTROPY +ANITA +ANKARA +ANKLE +ANKLES +ANN +ANNA +ANNAL +ANNALIST +ANNALISTIC +ANNALS +ANNAPOLIS +ANNE +ANNETTE +ANNEX +ANNEXATION +ANNEXED +ANNEXES +ANNEXING +ANNIE +ANNIHILATE +ANNIHILATED +ANNIHILATES +ANNIHILATING +ANNIHILATION +ANNIVERSARIES +ANNIVERSARY +ANNOTATE +ANNOTATED +ANNOTATES +ANNOTATING +ANNOTATION +ANNOTATIONS +ANNOUNCE +ANNOUNCED +ANNOUNCEMENT +ANNOUNCEMENTS +ANNOUNCER +ANNOUNCERS +ANNOUNCES +ANNOUNCING +ANNOY +ANNOYANCE +ANNOYANCES +ANNOYED +ANNOYER +ANNOYERS +ANNOYING +ANNOYINGLY +ANNOYS +ANNUAL +ANNUALLY +ANNUALS +ANNUITY +ANNUL +ANNULAR +ANNULI +ANNULLED +ANNULLING +ANNULMENT +ANNULMENTS +ANNULS +ANNULUS +ANNUM +ANNUNCIATE +ANNUNCIATED +ANNUNCIATES +ANNUNCIATING +ANNUNCIATOR +ANNUNCIATORS +ANODE +ANODES +ANODIZE +ANODIZED +ANODIZES +ANOINT +ANOINTED +ANOINTING +ANOINTS +ANOMALIES +ANOMALOUS +ANOMALOUSLY +ANOMALY +ANOMIC +ANOMIE +ANON +ANONYMITY +ANONYMOUS +ANONYMOUSLY +ANOREXIA +ANOTHER +ANSELM +ANSELMO +ANSI +ANSWER +ANSWERABLE +ANSWERED +ANSWERER +ANSWERERS +ANSWERING +ANSWERS +ANT +ANTAEUS +ANTAGONISM +ANTAGONISMS +ANTAGONIST +ANTAGONISTIC +ANTAGONISTICALLY +ANTAGONISTS +ANTAGONIZE +ANTAGONIZED +ANTAGONIZES +ANTAGONIZING +ANTARCTIC +ANTARCTICA +ANTARES +ANTE +ANTEATER +ANTEATERS +ANTECEDENT +ANTECEDENTS +ANTEDATE +ANTELOPE +ANTELOPES +ANTENNA +ANTENNAE +ANTENNAS +ANTERIOR +ANTHEM +ANTHEMS +ANTHER +ANTHOLOGIES +ANTHOLOGY +ANTHONY +ANTHRACITE +ANTHROPOLOGICAL +ANTHROPOLOGICALLY +ANTHROPOLOGIST +ANTHROPOLOGISTS +ANTHROPOLOGY +ANTHROPOMORPHIC +ANTHROPOMORPHICALLY +ANTI +ANTIBACTERIAL +ANTIBIOTIC +ANTIBIOTICS +ANTIBODIES +ANTIBODY +ANTIC +ANTICIPATE +ANTICIPATED +ANTICIPATES +ANTICIPATING +ANTICIPATION +ANTICIPATIONS +ANTICIPATORY +ANTICOAGULATION +ANTICOMPETITIVE +ANTICS +ANTIDISESTABLISHMENTARIANISM +ANTIDOTE +ANTIDOTES +ANTIETAM +ANTIFORMANT +ANTIFUNDAMENTALIST +ANTIGEN +ANTIGENS +ANTIGONE +ANTIHISTORICAL +ANTILLES +ANTIMICROBIAL +ANTIMONY +ANTINOMIAN +ANTINOMY +ANTIOCH +ANTIPATHY +ANTIPHONAL +ANTIPODE +ANTIPODES +ANTIQUARIAN +ANTIQUARIANS +ANTIQUATE +ANTIQUATED +ANTIQUE +ANTIQUES +ANTIQUITIES +ANTIQUITY +ANTIREDEPOSITION +ANTIRESONANCE +ANTIRESONATOR +ANTISEMITIC +ANTISEMITISM +ANTISEPTIC +ANTISERA +ANTISERUM +ANTISLAVERY +ANTISOCIAL +ANTISUBMARINE +ANTISYMMETRIC +ANTISYMMETRY +ANTITHESIS +ANTITHETICAL +ANTITHYROID +ANTITOXIN +ANTITOXINS +ANTITRUST +ANTLER +ANTLERED +ANTOINE +ANTOINETTE +ANTON +ANTONIO +ANTONOVICS +ANTONY +ANTS +ANTWERP +ANUS +ANVIL +ANVILS +ANXIETIES +ANXIETY +ANXIOUS +ANXIOUSLY +ANY +ANYBODY +ANYHOW +ANYMORE +ANYONE +ANYPLACE +ANYTHING +ANYTIME +ANYWAY +ANYWHERE +AORTA +APACE +APACHES +APALACHICOLA +APART +APARTMENT +APARTMENTS +APATHETIC +APATHY +APE +APED +APERIODIC +APERIODICITY +APERTURE +APES +APETALOUS +APEX +APHASIA +APHASIC +APHELION +APHID +APHIDS +APHONIC +APHORISM +APHORISMS +APHRODITE +APIARIES +APIARY +APICAL +APIECE +APING +APISH +APLENTY +APLOMB +APOCALYPSE +APOCALYPTIC +APOCRYPHA +APOCRYPHAL +APOGEE +APOGEES +APOLLINAIRE +APOLLO +APOLLONIAN +APOLOGETIC +APOLOGETICALLY +APOLOGIA +APOLOGIES +APOLOGIST +APOLOGISTS +APOLOGIZE +APOLOGIZED +APOLOGIZES +APOLOGIZING +APOLOGY +APOSTATE +APOSTLE +APOSTLES +APOSTOLIC +APOSTROPHE +APOSTROPHES +APOTHECARY +APOTHEGM +APOTHEOSES +APOTHEOSIS +APPALACHIA +APPALACHIAN +APPALACHIANS +APPALL +APPALLED +APPALLING +APPALLINGLY +APPALOOSAS +APPANAGE +APPARATUS +APPAREL +APPARELED +APPARENT +APPARENTLY +APPARITION +APPARITIONS +APPEAL +APPEALED +APPEALER +APPEALERS +APPEALING +APPEALINGLY +APPEALS +APPEAR +APPEARANCE +APPEARANCES +APPEARED +APPEARER +APPEARERS +APPEARING +APPEARS +APPEASE +APPEASED +APPEASEMENT +APPEASES +APPEASING +APPELLANT +APPELLANTS +APPELLATE +APPELLATION +APPEND +APPENDAGE +APPENDAGES +APPENDED +APPENDER +APPENDERS +APPENDICES +APPENDICITIS +APPENDING +APPENDIX +APPENDIXES +APPENDS +APPERTAIN +APPERTAINS +APPETITE +APPETITES +APPETIZER +APPETIZING +APPIA +APPIAN +APPLAUD +APPLAUDED +APPLAUDING +APPLAUDS +APPLAUSE +APPLE +APPLEBY +APPLEJACK +APPLES +APPLETON +APPLIANCE +APPLIANCES +APPLICABILITY +APPLICABLE +APPLICANT +APPLICANTS +APPLICATION +APPLICATIONS +APPLICATIVE +APPLICATIVELY +APPLICATOR +APPLICATORS +APPLIED +APPLIER +APPLIERS +APPLIES +APPLIQUE +APPLY +APPLYING +APPOINT +APPOINTED +APPOINTEE +APPOINTEES +APPOINTER +APPOINTERS +APPOINTING +APPOINTIVE +APPOINTMENT +APPOINTMENTS +APPOINTS +APPOMATTOX +APPORTION +APPORTIONED +APPORTIONING +APPORTIONMENT +APPORTIONMENTS +APPORTIONS +APPOSITE +APPRAISAL +APPRAISALS +APPRAISE +APPRAISED +APPRAISER +APPRAISERS +APPRAISES +APPRAISING +APPRAISINGLY +APPRECIABLE +APPRECIABLY +APPRECIATE +APPRECIATED +APPRECIATES +APPRECIATING +APPRECIATION +APPRECIATIONS +APPRECIATIVE +APPRECIATIVELY +APPREHEND +APPREHENDED +APPREHENSIBLE +APPREHENSION +APPREHENSIONS +APPREHENSIVE +APPREHENSIVELY +APPREHENSIVENESS +APPRENTICE +APPRENTICED +APPRENTICES +APPRENTICESHIP +APPRISE +APPRISED +APPRISES +APPRISING +APPROACH +APPROACHABILITY +APPROACHABLE +APPROACHED +APPROACHER +APPROACHERS +APPROACHES +APPROACHING +APPROBATE +APPROBATION +APPROPRIATE +APPROPRIATED +APPROPRIATELY +APPROPRIATENESS +APPROPRIATES +APPROPRIATING +APPROPRIATION +APPROPRIATIONS +APPROPRIATOR +APPROPRIATORS +APPROVAL +APPROVALS +APPROVE +APPROVED +APPROVER +APPROVERS +APPROVES +APPROVING +APPROVINGLY +APPROXIMATE +APPROXIMATED +APPROXIMATELY +APPROXIMATES +APPROXIMATING +APPROXIMATION +APPROXIMATIONS +APPURTENANCE +APPURTENANCES +APRICOT +APRICOTS +APRIL +APRILS +APRON +APRONS +APROPOS +APSE +APSIS +APT +APTITUDE +APTITUDES +APTLY +APTNESS +AQUA +AQUARIA +AQUARIUM +AQUARIUS +AQUATIC +AQUEDUCT +AQUEDUCTS +AQUEOUS +AQUIFER +AQUIFERS +AQUILA +AQUINAS +ARAB +ARABESQUE +ARABIA +ARABIAN +ARABIANIZE +ARABIANIZES +ARABIANS +ARABIC +ARABICIZE +ARABICIZES +ARABLE +ARABS +ARABY +ARACHNE +ARACHNID +ARACHNIDS +ARAMCO +ARAPAHO +ARBITER +ARBITERS +ARBITRARILY +ARBITRARINESS +ARBITRARY +ARBITRATE +ARBITRATED +ARBITRATES +ARBITRATING +ARBITRATION +ARBITRATOR +ARBITRATORS +ARBOR +ARBOREAL +ARBORS +ARC +ARCADE +ARCADED +ARCADES +ARCADIA +ARCADIAN +ARCANE +ARCED +ARCH +ARCHAIC +ARCHAICALLY +ARCHAICNESS +ARCHAISM +ARCHAIZE +ARCHANGEL +ARCHANGELS +ARCHBISHOP +ARCHDIOCESE +ARCHDIOCESES +ARCHED +ARCHENEMY +ARCHEOLOGICAL +ARCHEOLOGIST +ARCHEOLOGY +ARCHER +ARCHERS +ARCHERY +ARCHES +ARCHETYPE +ARCHFOOL +ARCHIBALD +ARCHIE +ARCHIMEDES +ARCHING +ARCHIPELAGO +ARCHIPELAGOES +ARCHITECT +ARCHITECTONIC +ARCHITECTS +ARCHITECTURAL +ARCHITECTURALLY +ARCHITECTURE +ARCHITECTURES +ARCHIVAL +ARCHIVE +ARCHIVED +ARCHIVER +ARCHIVERS +ARCHIVES +ARCHIVING +ARCHIVIST +ARCHLY +ARCING +ARCLIKE +ARCO +ARCS +ARCSINE +ARCTANGENT +ARCTIC +ARCTURUS +ARDEN +ARDENT +ARDENTLY +ARDOR +ARDUOUS +ARDUOUSLY +ARDUOUSNESS +ARE +AREA +AREAS +ARENA +ARENAS +AREQUIPA +ARES +ARGENTINA +ARGENTINIAN +ARGIVE +ARGO +ARGON +ARGONAUT +ARGONAUTS +ARGONNE +ARGOS +ARGOT +ARGUABLE +ARGUABLY +ARGUE +ARGUED +ARGUER +ARGUERS +ARGUES +ARGUING +ARGUMENT +ARGUMENTATION +ARGUMENTATIVE +ARGUMENTS +ARGUS +ARIADNE +ARIANISM +ARIANIST +ARIANISTS +ARID +ARIDITY +ARIES +ARIGHT +ARISE +ARISEN +ARISER +ARISES +ARISING +ARISINGS +ARISTOCRACY +ARISTOCRAT +ARISTOCRATIC +ARISTOCRATICALLY +ARISTOCRATS +ARISTOTELIAN +ARISTOTLE +ARITHMETIC +ARITHMETICAL +ARITHMETICALLY +ARITHMETICS +ARITHMETIZE +ARITHMETIZED +ARITHMETIZES +ARIZONA +ARK +ARKANSAN +ARKANSAS +ARLEN +ARLENE +ARLINGTON +ARM +ARMADA +ARMADILLO +ARMADILLOS +ARMAGEDDON +ARMAGNAC +ARMAMENT +ARMAMENTS +ARMATA +ARMCHAIR +ARMCHAIRS +ARMCO +ARMED +ARMENIA +ARMENIAN +ARMER +ARMERS +ARMFUL +ARMHOLE +ARMIES +ARMING +ARMISTICE +ARMLOAD +ARMONK +ARMOR +ARMORED +ARMORER +ARMORY +ARMOUR +ARMPIT +ARMPITS +ARMS +ARMSTRONG +ARMY +ARNOLD +AROMA +AROMAS +AROMATIC +AROSE +AROUND +AROUSAL +AROUSE +AROUSED +AROUSES +AROUSING +ARPA +ARPANET +ARPANET +ARPEGGIO +ARPEGGIOS +ARRACK +ARRAGON +ARRAIGN +ARRAIGNED +ARRAIGNING +ARRAIGNMENT +ARRAIGNMENTS +ARRAIGNS +ARRANGE +ARRANGED +ARRANGEMENT +ARRANGEMENTS +ARRANGER +ARRANGERS +ARRANGES +ARRANGING +ARRANT +ARRAY +ARRAYED +ARRAYS +ARREARS +ARREST +ARRESTED +ARRESTER +ARRESTERS +ARRESTING +ARRESTINGLY +ARRESTOR +ARRESTORS +ARRESTS +ARRHENIUS +ARRIVAL +ARRIVALS +ARRIVE +ARRIVED +ARRIVES +ARRIVING +ARROGANCE +ARROGANT +ARROGANTLY +ARROGATE +ARROGATED +ARROGATES +ARROGATING +ARROGATION +ARROW +ARROWED +ARROWHEAD +ARROWHEADS +ARROWS +ARROYO +ARROYOS +ARSENAL +ARSENALS +ARSENIC +ARSINE +ARSON +ART +ARTEMIA +ARTEMIS +ARTERIAL +ARTERIES +ARTERIOLAR +ARTERIOLE +ARTERIOLES +ARTERIOSCLEROSIS +ARTERY +ARTFUL +ARTFULLY +ARTFULNESS +ARTHRITIS +ARTHROPOD +ARTHROPODS +ARTHUR +ARTICHOKE +ARTICHOKES +ARTICLE +ARTICLES +ARTICULATE +ARTICULATED +ARTICULATELY +ARTICULATENESS +ARTICULATES +ARTICULATING +ARTICULATION +ARTICULATIONS +ARTICULATOR +ARTICULATORS +ARTICULATORY +ARTIE +ARTIFACT +ARTIFACTS +ARTIFICE +ARTIFICER +ARTIFICES +ARTIFICIAL +ARTIFICIALITIES +ARTIFICIALITY +ARTIFICIALLY +ARTIFICIALNESS +ARTILLERIST +ARTILLERY +ARTISAN +ARTISANS +ARTIST +ARTISTIC +ARTISTICALLY +ARTISTRY +ARTISTS +ARTLESS +ARTS +ARTURO +ARTWORK +ARUBA +ARYAN +ARYANS +ASBESTOS +ASCEND +ASCENDANCY +ASCENDANT +ASCENDED +ASCENDENCY +ASCENDENT +ASCENDER +ASCENDERS +ASCENDING +ASCENDS +ASCENSION +ASCENSIONS +ASCENT +ASCERTAIN +ASCERTAINABLE +ASCERTAINED +ASCERTAINING +ASCERTAINS +ASCETIC +ASCETICISM +ASCETICS +ASCII +ASCOT +ASCRIBABLE +ASCRIBE +ASCRIBED +ASCRIBES +ASCRIBING +ASCRIPTION +ASEPTIC +ASH +ASHAMED +ASHAMEDLY +ASHEN +ASHER +ASHES +ASHEVILLE +ASHLAND +ASHLEY +ASHMAN +ASHMOLEAN +ASHORE +ASHTRAY +ASHTRAYS +ASIA +ASIAN +ASIANS +ASIATIC +ASIATICIZATION +ASIATICIZATIONS +ASIATICIZE +ASIATICIZES +ASIATICS +ASIDE +ASILOMAR +ASININE +ASK +ASKANCE +ASKED +ASKER +ASKERS +ASKEW +ASKING +ASKS +ASLEEP +ASOCIAL +ASP +ASPARAGUS +ASPECT +ASPECTS +ASPEN +ASPERSION +ASPERSIONS +ASPHALT +ASPHYXIA +ASPIC +ASPIRANT +ASPIRANTS +ASPIRATE +ASPIRATED +ASPIRATES +ASPIRATING +ASPIRATION +ASPIRATIONS +ASPIRATOR +ASPIRATORS +ASPIRE +ASPIRED +ASPIRES +ASPIRIN +ASPIRING +ASPIRINS +ASS +ASSAIL +ASSAILANT +ASSAILANTS +ASSAILED +ASSAILING +ASSAILS +ASSAM +ASSASSIN +ASSASSINATE +ASSASSINATED +ASSASSINATES +ASSASSINATING +ASSASSINATION +ASSASSINATIONS +ASSASSINS +ASSAULT +ASSAULTED +ASSAULTING +ASSAULTS +ASSAY +ASSAYED +ASSAYING +ASSEMBLAGE +ASSEMBLAGES +ASSEMBLE +ASSEMBLED +ASSEMBLER +ASSEMBLERS +ASSEMBLES +ASSEMBLIES +ASSEMBLING +ASSEMBLY +ASSENT +ASSENTED +ASSENTER +ASSENTING +ASSENTS +ASSERT +ASSERTED +ASSERTER +ASSERTERS +ASSERTING +ASSERTION +ASSERTIONS +ASSERTIVE +ASSERTIVELY +ASSERTIVENESS +ASSERTS +ASSES +ASSESS +ASSESSED +ASSESSES +ASSESSING +ASSESSMENT +ASSESSMENTS +ASSESSOR +ASSESSORS +ASSET +ASSETS +ASSIDUITY +ASSIDUOUS +ASSIDUOUSLY +ASSIGN +ASSIGNABLE +ASSIGNED +ASSIGNEE +ASSIGNEES +ASSIGNER +ASSIGNERS +ASSIGNING +ASSIGNMENT +ASSIGNMENTS +ASSIGNS +ASSIMILATE +ASSIMILATED +ASSIMILATES +ASSIMILATING +ASSIMILATION +ASSIMILATIONS +ASSIST +ASSISTANCE +ASSISTANCES +ASSISTANT +ASSISTANTS +ASSISTANTSHIP +ASSISTANTSHIPS +ASSISTED +ASSISTING +ASSISTS +ASSOCIATE +ASSOCIATED +ASSOCIATES +ASSOCIATING +ASSOCIATION +ASSOCIATIONAL +ASSOCIATIONS +ASSOCIATIVE +ASSOCIATIVELY +ASSOCIATIVITY +ASSOCIATOR +ASSOCIATORS +ASSONANCE +ASSONANT +ASSORT +ASSORTED +ASSORTMENT +ASSORTMENTS +ASSORTS +ASSUAGE +ASSUAGED +ASSUAGES +ASSUME +ASSUMED +ASSUMES +ASSUMING +ASSUMPTION +ASSUMPTIONS +ASSURANCE +ASSURANCES +ASSURE +ASSURED +ASSUREDLY +ASSURER +ASSURERS +ASSURES +ASSURING +ASSURINGLY +ASSYRIA +ASSYRIAN +ASSYRIANIZE +ASSYRIANIZES +ASSYRIOLOGY +ASTAIRE +ASTAIRES +ASTARTE +ASTATINE +ASTER +ASTERISK +ASTERISKS +ASTEROID +ASTEROIDAL +ASTEROIDS +ASTERS +ASTHMA +ASTON +ASTONISH +ASTONISHED +ASTONISHES +ASTONISHING +ASTONISHINGLY +ASTONISHMENT +ASTOR +ASTORIA +ASTOUND +ASTOUNDED +ASTOUNDING +ASTOUNDS +ASTRAL +ASTRAY +ASTRIDE +ASTRINGENCY +ASTRINGENT +ASTROLOGY +ASTRONAUT +ASTRONAUTICS +ASTRONAUTS +ASTRONOMER +ASTRONOMERS +ASTRONOMICAL +ASTRONOMICALLY +ASTRONOMY +ASTROPHYSICAL +ASTROPHYSICS +ASTUTE +ASTUTELY +ASTUTENESS +ASUNCION +ASUNDER +ASYLUM +ASYMMETRIC +ASYMMETRICALLY +ASYMMETRY +ASYMPTOMATICALLY +ASYMPTOTE +ASYMPTOTES +ASYMPTOTIC +ASYMPTOTICALLY +ASYNCHRONISM +ASYNCHRONOUS +ASYNCHRONOUSLY +ASYNCHRONY +ATALANTA +ATARI +ATAVISTIC +ATCHISON +ATE +ATEMPORAL +ATHABASCAN +ATHEISM +ATHEIST +ATHEISTIC +ATHEISTS +ATHENA +ATHENIAN +ATHENIANS +ATHENS +ATHEROSCLEROSIS +ATHLETE +ATHLETES +ATHLETIC +ATHLETICISM +ATHLETICS +ATKINS +ATKINSON +ATLANTA +ATLANTIC +ATLANTICA +ATLANTIS +ATLAS +ATMOSPHERE +ATMOSPHERES +ATMOSPHERIC +ATOLL +ATOLLS +ATOM +ATOMIC +ATOMICALLY +ATOMICS +ATOMIZATION +ATOMIZE +ATOMIZED +ATOMIZES +ATOMIZING +ATOMS +ATONAL +ATONALLY +ATONE +ATONED +ATONEMENT +ATONES +ATOP +ATREUS +ATROCIOUS +ATROCIOUSLY +ATROCITIES +ATROCITY +ATROPHIC +ATROPHIED +ATROPHIES +ATROPHY +ATROPHYING +ATROPOS +ATTACH +ATTACHE +ATTACHED +ATTACHER +ATTACHERS +ATTACHES +ATTACHING +ATTACHMENT +ATTACHMENTS +ATTACK +ATTACKABLE +ATTACKED +ATTACKER +ATTACKERS +ATTACKING +ATTACKS +ATTAIN +ATTAINABLE +ATTAINABLY +ATTAINED +ATTAINER +ATTAINERS +ATTAINING +ATTAINMENT +ATTAINMENTS +ATTAINS +ATTEMPT +ATTEMPTED +ATTEMPTER +ATTEMPTERS +ATTEMPTING +ATTEMPTS +ATTEND +ATTENDANCE +ATTENDANCES +ATTENDANT +ATTENDANTS +ATTENDED +ATTENDEE +ATTENDEES +ATTENDER +ATTENDERS +ATTENDING +ATTENDS +ATTENTION +ATTENTIONAL +ATTENTIONALITY +ATTENTIONS +ATTENTIVE +ATTENTIVELY +ATTENTIVENESS +ATTENUATE +ATTENUATED +ATTENUATES +ATTENUATING +ATTENUATION +ATTENUATOR +ATTENUATORS +ATTEST +ATTESTED +ATTESTING +ATTESTS +ATTIC +ATTICA +ATTICS +ATTIRE +ATTIRED +ATTIRES +ATTIRING +ATTITUDE +ATTITUDES +ATTITUDINAL +ATTLEE +ATTORNEY +ATTORNEYS +ATTRACT +ATTRACTED +ATTRACTING +ATTRACTION +ATTRACTIONS +ATTRACTIVE +ATTRACTIVELY +ATTRACTIVENESS +ATTRACTOR +ATTRACTORS +ATTRACTS +ATTRIBUTABLE +ATTRIBUTE +ATTRIBUTED +ATTRIBUTES +ATTRIBUTING +ATTRIBUTION +ATTRIBUTIONS +ATTRIBUTIVE +ATTRIBUTIVELY +ATTRITION +ATTUNE +ATTUNED +ATTUNES +ATTUNING +ATWATER +ATWOOD +ATYPICAL +ATYPICALLY +AUBERGE +AUBREY +AUBURN +AUCKLAND +AUCTION +AUCTIONEER +AUCTIONEERS +AUDACIOUS +AUDACIOUSLY +AUDACIOUSNESS +AUDACITY +AUDIBLE +AUDIBLY +AUDIENCE +AUDIENCES +AUDIO +AUDIOGRAM +AUDIOGRAMS +AUDIOLOGICAL +AUDIOLOGIST +AUDIOLOGISTS +AUDIOLOGY +AUDIOMETER +AUDIOMETERS +AUDIOMETRIC +AUDIOMETRY +AUDIT +AUDITED +AUDITING +AUDITION +AUDITIONED +AUDITIONING +AUDITIONS +AUDITOR +AUDITORIUM +AUDITORS +AUDITORY +AUDITS +AUDREY +AUDUBON +AUERBACH +AUGEAN +AUGER +AUGERS +AUGHT +AUGMENT +AUGMENTATION +AUGMENTED +AUGMENTING +AUGMENTS +AUGUR +AUGURS +AUGUST +AUGUSTA +AUGUSTAN +AUGUSTINE +AUGUSTLY +AUGUSTNESS +AUGUSTUS +AUNT +AUNTS +AURA +AURAL +AURALLY +AURAS +AURELIUS +AUREOLE +AUREOMYCIN +AURIGA +AURORA +AUSCHWITZ +AUSCULTATE +AUSCULTATED +AUSCULTATES +AUSCULTATING +AUSCULTATION +AUSCULTATIONS +AUSPICE +AUSPICES +AUSPICIOUS +AUSPICIOUSLY +AUSTERE +AUSTERELY +AUSTERITY +AUSTIN +AUSTRALIA +AUSTRALIAN +AUSTRALIANIZE +AUSTRALIANIZES +AUSTRALIS +AUSTRIA +AUSTRIAN +AUSTRIANIZE +AUSTRIANIZES +AUTHENTIC +AUTHENTICALLY +AUTHENTICATE +AUTHENTICATED +AUTHENTICATES +AUTHENTICATING +AUTHENTICATION +AUTHENTICATIONS +AUTHENTICATOR +AUTHENTICATORS +AUTHENTICITY +AUTHOR +AUTHORED +AUTHORING +AUTHORITARIAN +AUTHORITARIANISM +AUTHORITATIVE +AUTHORITATIVELY +AUTHORITIES +AUTHORITY +AUTHORIZATION +AUTHORIZATIONS +AUTHORIZE +AUTHORIZED +AUTHORIZER +AUTHORIZERS +AUTHORIZES +AUTHORIZING +AUTHORS +AUTHORSHIP +AUTISM +AUTISTIC +AUTO +AUTOBIOGRAPHIC +AUTOBIOGRAPHICAL +AUTOBIOGRAPHIES +AUTOBIOGRAPHY +AUTOCOLLIMATOR +AUTOCORRELATE +AUTOCORRELATION +AUTOCRACIES +AUTOCRACY +AUTOCRAT +AUTOCRATIC +AUTOCRATICALLY +AUTOCRATS +AUTODECREMENT +AUTODECREMENTED +AUTODECREMENTS +AUTODIALER +AUTOFLUORESCENCE +AUTOGRAPH +AUTOGRAPHED +AUTOGRAPHING +AUTOGRAPHS +AUTOINCREMENT +AUTOINCREMENTED +AUTOINCREMENTS +AUTOINDEX +AUTOINDEXING +AUTOMATA +AUTOMATE +AUTOMATED +AUTOMATES +AUTOMATIC +AUTOMATICALLY +AUTOMATING +AUTOMATION +AUTOMATON +AUTOMOBILE +AUTOMOBILES +AUTOMOTIVE +AUTONAVIGATOR +AUTONAVIGATORS +AUTONOMIC +AUTONOMOUS +AUTONOMOUSLY +AUTONOMY +AUTOPILOT +AUTOPILOTS +AUTOPSIED +AUTOPSIES +AUTOPSY +AUTOREGRESSIVE +AUTOS +AUTOSUGGESTIBILITY +AUTOTRANSFORMER +AUTUMN +AUTUMNAL +AUTUMNS +AUXILIARIES +AUXILIARY +AVAIL +AVAILABILITIES +AVAILABILITY +AVAILABLE +AVAILABLY +AVAILED +AVAILER +AVAILERS +AVAILING +AVAILS +AVALANCHE +AVALANCHED +AVALANCHES +AVALANCHING +AVANT +AVARICE +AVARICIOUS +AVARICIOUSLY +AVENGE +AVENGED +AVENGER +AVENGES +AVENGING +AVENTINE +AVENTINO +AVENUE +AVENUES +AVER +AVERAGE +AVERAGED +AVERAGES +AVERAGING +AVERNUS +AVERRED +AVERRER +AVERRING +AVERS +AVERSE +AVERSION +AVERSIONS +AVERT +AVERTED +AVERTING +AVERTS +AVERY +AVESTA +AVIAN +AVIARIES +AVIARY +AVIATION +AVIATOR +AVIATORS +AVID +AVIDITY +AVIDLY +AVIGNON +AVIONIC +AVIONICS +AVIS +AVIV +AVOCADO +AVOCADOS +AVOCATION +AVOCATIONS +AVOGADRO +AVOID +AVOIDABLE +AVOIDABLY +AVOIDANCE +AVOIDED +AVOIDER +AVOIDERS +AVOIDING +AVOIDS +AVON +AVOUCH +AVOW +AVOWAL +AVOWED +AVOWS +AWAIT +AWAITED +AWAITING +AWAITS +AWAKE +AWAKEN +AWAKENED +AWAKENING +AWAKENS +AWAKES +AWAKING +AWARD +AWARDED +AWARDER +AWARDERS +AWARDING +AWARDS +AWARE +AWARENESS +AWASH +AWAY +AWE +AWED +AWESOME +AWFUL +AWFULLY +AWFULNESS +AWHILE +AWKWARD +AWKWARDLY +AWKWARDNESS +AWL +AWLS +AWNING +AWNINGS +AWOKE +AWRY +AXED +AXEL +AXER +AXERS +AXES +AXIAL +AXIALLY +AXING +AXIOLOGICAL +AXIOM +AXIOMATIC +AXIOMATICALLY +AXIOMATIZATION +AXIOMATIZATIONS +AXIOMATIZE +AXIOMATIZED +AXIOMATIZES +AXIOMATIZING +AXIOMS +AXIS +AXLE +AXLES +AXOLOTL +AXOLOTLS +AXON +AXONS +AYE +AYERS +AYES +AYLESBURY +AZALEA +AZALEAS +AZERBAIJAN +AZIMUTH +AZIMUTHS +AZORES +AZTEC +AZTECAN +AZURE +BABBAGE +BABBLE +BABBLED +BABBLES +BABBLING +BABCOCK +BABE +BABEL +BABELIZE +BABELIZES +BABES +BABIED +BABIES +BABKA +BABOON +BABOONS +BABUL +BABY +BABYHOOD +BABYING +BABYISH +BABYLON +BABYLONIAN +BABYLONIANS +BABYLONIZE +BABYLONIZES +BABYSIT +BABYSITTING +BACCALAUREATE +BACCHUS +BACH +BACHELOR +BACHELORS +BACILLI +BACILLUS +BACK +BACKACHE +BACKACHES +BACKARROW +BACKBEND +BACKBENDS +BACKBOARD +BACKBONE +BACKBONES +BACKDROP +BACKDROPS +BACKED +BACKER +BACKERS +BACKFILL +BACKFIRING +BACKGROUND +BACKGROUNDS +BACKHAND +BACKING +BACKLASH +BACKLOG +BACKLOGGED +BACKLOGS +BACKORDER +BACKPACK +BACKPACKS +BACKPLANE +BACKPLANES +BACKPLATE +BACKS +BACKSCATTER +BACKSCATTERED +BACKSCATTERING +BACKSCATTERS +BACKSIDE +BACKSLASH +BACKSLASHES +BACKSPACE +BACKSPACED +BACKSPACES +BACKSPACING +BACKSTAGE +BACKSTAIRS +BACKSTITCH +BACKSTITCHED +BACKSTITCHES +BACKSTITCHING +BACKSTOP +BACKTRACK +BACKTRACKED +BACKTRACKER +BACKTRACKERS +BACKTRACKING +BACKTRACKS +BACKUP +BACKUPS +BACKUS +BACKWARD +BACKWARDNESS +BACKWARDS +BACKWATER +BACKWATERS +BACKWOODS +BACKYARD +BACKYARDS +BACON +BACTERIA +BACTERIAL +BACTERIUM +BAD +BADE +BADEN +BADGE +BADGER +BADGERED +BADGERING +BADGERS +BADGES +BADLANDS +BADLY +BADMINTON +BADNESS +BAFFIN +BAFFLE +BAFFLED +BAFFLER +BAFFLERS +BAFFLING +BAG +BAGATELLE +BAGATELLES +BAGEL +BAGELS +BAGGAGE +BAGGED +BAGGER +BAGGERS +BAGGING +BAGGY +BAGHDAD +BAGLEY +BAGPIPE +BAGPIPES +BAGRODIA +BAGRODIAS +BAGS +BAH +BAHAMA +BAHAMAS +BAHREIN +BAIL +BAILEY +BAILEYS +BAILIFF +BAILIFFS +BAILING +BAIRD +BAIRDI +BAIRN +BAIT +BAITED +BAITER +BAITING +BAITS +BAJA +BAKE +BAKED +BAKELITE +BAKER +BAKERIES +BAKERS +BAKERSFIELD +BAKERY +BAKES +BAKHTIARI +BAKING +BAKLAVA +BAKU +BALALAIKA +BALALAIKAS +BALANCE +BALANCED +BALANCER +BALANCERS +BALANCES +BALANCING +BALBOA +BALCONIES +BALCONY +BALD +BALDING +BALDLY +BALDNESS +BALDWIN +BALE +BALEFUL +BALER +BALES +BALFOUR +BALI +BALINESE +BALK +BALKAN +BALKANIZATION +BALKANIZATIONS +BALKANIZE +BALKANIZED +BALKANIZES +BALKANIZING +BALKANS +BALKED +BALKINESS +BALKING +BALKS +BALKY +BALL +BALLAD +BALLADS +BALLARD +BALLARDS +BALLAST +BALLASTS +BALLED +BALLER +BALLERINA +BALLERINAS +BALLERS +BALLET +BALLETS +BALLGOWN +BALLING +BALLISTIC +BALLISTICS +BALLOON +BALLOONED +BALLOONER +BALLOONERS +BALLOONING +BALLOONS +BALLOT +BALLOTS +BALLPARK +BALLPARKS +BALLPLAYER +BALLPLAYERS +BALLROOM +BALLROOMS +BALLS +BALLYHOO +BALM +BALMS +BALMY +BALSA +BALSAM +BALTIC +BALTIMORE +BALTIMOREAN +BALUSTRADE +BALUSTRADES +BALZAC +BAMAKO +BAMBERGER +BAMBI +BAMBOO +BAN +BANACH +BANAL +BANALLY +BANANA +BANANAS +BANBURY +BANCROFT +BAND +BANDAGE +BANDAGED +BANDAGES +BANDAGING +BANDED +BANDIED +BANDIES +BANDING +BANDIT +BANDITS +BANDPASS +BANDS +BANDSTAND +BANDSTANDS +BANDWAGON +BANDWAGONS +BANDWIDTH +BANDWIDTHS +BANDY +BANDYING +BANE +BANEFUL +BANG +BANGED +BANGING +BANGLADESH +BANGLE +BANGLES +BANGOR +BANGS +BANGUI +BANISH +BANISHED +BANISHES +BANISHING +BANISHMENT +BANISTER +BANISTERS +BANJO +BANJOS +BANK +BANKED +BANKER +BANKERS +BANKING +BANKRUPT +BANKRUPTCIES +BANKRUPTCY +BANKRUPTED +BANKRUPTING +BANKRUPTS +BANKS +BANNED +BANNER +BANNERS +BANNING +BANQUET +BANQUETING +BANQUETINGS +BANQUETS +BANS +BANSHEE +BANSHEES +BANTAM +BANTER +BANTERED +BANTERING +BANTERS +BANTU +BANTUS +BAPTISM +BAPTISMAL +BAPTISMS +BAPTIST +BAPTISTE +BAPTISTERY +BAPTISTRIES +BAPTISTRY +BAPTISTS +BAPTIZE +BAPTIZED +BAPTIZES +BAPTIZING +BAR +BARB +BARBADOS +BARBARA +BARBARIAN +BARBARIANS +BARBARIC +BARBARISM +BARBARITIES +BARBARITY +BARBAROUS +BARBAROUSLY +BARBECUE +BARBECUED +BARBECUES +BARBED +BARBELL +BARBELLS +BARBER +BARBITAL +BARBITURATE +BARBITURATES +BARBOUR +BARBS +BARCELONA +BARCLAY +BARD +BARDS +BARE +BARED +BAREFACED +BAREFOOT +BAREFOOTED +BARELY +BARENESS +BARER +BARES +BAREST +BARFLIES +BARFLY +BARGAIN +BARGAINED +BARGAINING +BARGAINS +BARGE +BARGES +BARGING +BARHOP +BARING +BARITONE +BARITONES +BARIUM +BARK +BARKED +BARKER +BARKERS +BARKING +BARKS +BARLEY +BARLOW +BARN +BARNABAS +BARNARD +BARNES +BARNET +BARNETT +BARNEY +BARNHARD +BARNS +BARNSTORM +BARNSTORMED +BARNSTORMING +BARNSTORMS +BARNUM +BARNYARD +BARNYARDS +BAROMETER +BAROMETERS +BAROMETRIC +BARON +BARONESS +BARONIAL +BARONIES +BARONS +BARONY +BAROQUE +BAROQUENESS +BARR +BARRACK +BARRACKS +BARRAGE +BARRAGES +BARRED +BARREL +BARRELLED +BARRELLING +BARRELS +BARREN +BARRENNESS +BARRETT +BARRICADE +BARRICADES +BARRIER +BARRIERS +BARRING +BARRINGER +BARRINGTON +BARRON +BARROW +BARRY +BARRYMORE +BARRYMORES +BARS +BARSTOW +BART +BARTENDER +BARTENDERS +BARTER +BARTERED +BARTERING +BARTERS +BARTH +BARTHOLOMEW +BARTLETT +BARTOK +BARTON +BASAL +BASALT +BASCOM +BASE +BASEBALL +BASEBALLS +BASEBAND +BASEBOARD +BASEBOARDS +BASED +BASEL +BASELESS +BASELINE +BASELINES +BASELY +BASEMAN +BASEMENT +BASEMENTS +BASENESS +BASER +BASES +BASH +BASHED +BASHES +BASHFUL +BASHFULNESS +BASHING +BASIC +BASIC +BASIC +BASICALLY +BASICS +BASIE +BASIL +BASIN +BASING +BASINS +BASIS +BASK +BASKED +BASKET +BASKETBALL +BASKETBALLS +BASKETS +BASKING +BASQUE +BASS +BASSES +BASSET +BASSETT +BASSINET +BASSINETS +BASTARD +BASTARDS +BASTE +BASTED +BASTES +BASTING +BASTION +BASTIONS +BAT +BATAVIA +BATCH +BATCHED +BATCHELDER +BATCHES +BATEMAN +BATES +BATH +BATHE +BATHED +BATHER +BATHERS +BATHES +BATHING +BATHOS +BATHROBE +BATHROBES +BATHROOM +BATHROOMS +BATHS +BATHTUB +BATHTUBS +BATHURST +BATISTA +BATON +BATONS +BATOR +BATS +BATTALION +BATTALIONS +BATTED +BATTELLE +BATTEN +BATTENS +BATTER +BATTERED +BATTERIES +BATTERING +BATTERS +BATTERY +BATTING +BATTLE +BATTLED +BATTLEFIELD +BATTLEFIELDS +BATTLEFRONT +BATTLEFRONTS +BATTLEGROUND +BATTLEGROUNDS +BATTLEMENT +BATTLEMENTS +BATTLER +BATTLERS +BATTLES +BATTLESHIP +BATTLESHIPS +BATTLING +BAUBLE +BAUBLES +BAUD +BAUDELAIRE +BAUER +BAUHAUS +BAUSCH +BAUXITE +BAVARIA +BAVARIAN +BAWDY +BAWL +BAWLED +BAWLING +BAWLS +BAXTER +BAY +BAYDA +BAYED +BAYES +BAYESIAN +BAYING +BAYLOR +BAYONET +BAYONETS +BAYONNE +BAYOU +BAYOUS +BAYPORT +BAYREUTH +BAYS +BAZAAR +BAZAARS +BEACH +BEACHED +BEACHES +BEACHHEAD +BEACHHEADS +BEACHING +BEACON +BEACONS +BEAD +BEADED +BEADING +BEADLE +BEADLES +BEADS +BEADY +BEAGLE +BEAGLES +BEAK +BEAKED +BEAKER +BEAKERS +BEAKS +BEAM +BEAMED +BEAMER +BEAMERS +BEAMING +BEAMS +BEAN +BEANBAG +BEANED +BEANER +BEANERS +BEANING +BEANS +BEAR +BEARABLE +BEARABLY +BEARD +BEARDED +BEARDLESS +BEARDS +BEARDSLEY +BEARER +BEARERS +BEARING +BEARINGS +BEARISH +BEARS +BEAST +BEASTLY +BEASTS +BEAT +BEATABLE +BEATABLY +BEATEN +BEATER +BEATERS +BEATIFIC +BEATIFICATION +BEATIFY +BEATING +BEATINGS +BEATITUDE +BEATITUDES +BEATNIK +BEATNIKS +BEATRICE +BEATS +BEAU +BEAUCHAMPS +BEAUJOLAIS +BEAUMONT +BEAUREGARD +BEAUS +BEAUTEOUS +BEAUTEOUSLY +BEAUTIES +BEAUTIFICATIONS +BEAUTIFIED +BEAUTIFIER +BEAUTIFIERS +BEAUTIFIES +BEAUTIFUL +BEAUTIFULLY +BEAUTIFY +BEAUTIFYING +BEAUTY +BEAVER +BEAVERS +BEAVERTON +BECALM +BECALMED +BECALMING +BECALMS +BECAME +BECAUSE +BECHTEL +BECK +BECKER +BECKMAN +BECKON +BECKONED +BECKONING +BECKONS +BECKY +BECOME +BECOMES +BECOMING +BECOMINGLY +BED +BEDAZZLE +BEDAZZLED +BEDAZZLEMENT +BEDAZZLES +BEDAZZLING +BEDBUG +BEDBUGS +BEDDED +BEDDER +BEDDERS +BEDDING +BEDEVIL +BEDEVILED +BEDEVILING +BEDEVILS +BEDFAST +BEDFORD +BEDLAM +BEDPOST +BEDPOSTS +BEDRAGGLE +BEDRAGGLED +BEDRIDDEN +BEDROCK +BEDROOM +BEDROOMS +BEDS +BEDSIDE +BEDSPREAD +BEDSPREADS +BEDSPRING +BEDSPRINGS +BEDSTEAD +BEDSTEADS +BEDTIME +BEE +BEEBE +BEECH +BEECHAM +BEECHEN +BEECHER +BEEF +BEEFED +BEEFER +BEEFERS +BEEFING +BEEFS +BEEFSTEAK +BEEFY +BEEHIVE +BEEHIVES +BEEN +BEEP +BEEPS +BEER +BEERS +BEES +BEET +BEETHOVEN +BEETLE +BEETLED +BEETLES +BEETLING +BEETS +BEFALL +BEFALLEN +BEFALLING +BEFALLS +BEFELL +BEFIT +BEFITS +BEFITTED +BEFITTING +BEFOG +BEFOGGED +BEFOGGING +BEFORE +BEFOREHAND +BEFOUL +BEFOULED +BEFOULING +BEFOULS +BEFRIEND +BEFRIENDED +BEFRIENDING +BEFRIENDS +BEFUDDLE +BEFUDDLED +BEFUDDLES +BEFUDDLING +BEG +BEGAN +BEGET +BEGETS +BEGETTING +BEGGAR +BEGGARLY +BEGGARS +BEGGARY +BEGGED +BEGGING +BEGIN +BEGINNER +BEGINNERS +BEGINNING +BEGINNINGS +BEGINS +BEGOT +BEGOTTEN +BEGRUDGE +BEGRUDGED +BEGRUDGES +BEGRUDGING +BEGRUDGINGLY +BEGS +BEGUILE +BEGUILED +BEGUILES +BEGUILING +BEGUN +BEHALF +BEHAVE +BEHAVED +BEHAVES +BEHAVING +BEHAVIOR +BEHAVIORAL +BEHAVIORALLY +BEHAVIORISM +BEHAVIORISTIC +BEHAVIORS +BEHEAD +BEHEADING +BEHELD +BEHEMOTH +BEHEMOTHS +BEHEST +BEHIND +BEHOLD +BEHOLDEN +BEHOLDER +BEHOLDERS +BEHOLDING +BEHOLDS +BEHOOVE +BEHOOVES +BEIGE +BEIJING +BEING +BEINGS +BEIRUT +BELA +BELABOR +BELABORED +BELABORING +BELABORS +BELATED +BELATEDLY +BELAY +BELAYED +BELAYING +BELAYS +BELCH +BELCHED +BELCHES +BELCHING +BELFAST +BELFRIES +BELFRY +BELGIAN +BELGIANS +BELGIUM +BELGRADE +BELIE +BELIED +BELIEF +BELIEFS +BELIES +BELIEVABLE +BELIEVABLY +BELIEVE +BELIEVED +BELIEVER +BELIEVERS +BELIEVES +BELIEVING +BELITTLE +BELITTLED +BELITTLES +BELITTLING +BELIZE +BELL +BELLA +BELLAMY +BELLATRIX +BELLBOY +BELLBOYS +BELLE +BELLES +BELLEVILLE +BELLHOP +BELLHOPS +BELLICOSE +BELLICOSITY +BELLIES +BELLIGERENCE +BELLIGERENT +BELLIGERENTLY +BELLIGERENTS +BELLINGHAM +BELLINI +BELLMAN +BELLMEN +BELLOVIN +BELLOW +BELLOWED +BELLOWING +BELLOWS +BELLS +BELLUM +BELLWETHER +BELLWETHERS +BELLWOOD +BELLY +BELLYACHE +BELLYFULL +BELMONT +BELOIT +BELONG +BELONGED +BELONGING +BELONGINGS +BELONGS +BELOVED +BELOW +BELSHAZZAR +BELT +BELTED +BELTING +BELTON +BELTS +BELTSVILLE +BELUSHI +BELY +BELYING +BEMOAN +BEMOANED +BEMOANING +BEMOANS +BEN +BENARES +BENCH +BENCHED +BENCHES +BENCHMARK +BENCHMARKING +BENCHMARKS +BEND +BENDABLE +BENDER +BENDERS +BENDING +BENDIX +BENDS +BENEATH +BENEDICT +BENEDICTINE +BENEDICTION +BENEDICTIONS +BENEDIKT +BENEFACTOR +BENEFACTORS +BENEFICENCE +BENEFICENCES +BENEFICENT +BENEFICIAL +BENEFICIALLY +BENEFICIARIES +BENEFICIARY +BENEFIT +BENEFITED +BENEFITING +BENEFITS +BENEFITTED +BENEFITTING +BENELUX +BENEVOLENCE +BENEVOLENT +BENGAL +BENGALI +BENIGHTED +BENIGN +BENIGNLY +BENJAMIN +BENNETT +BENNINGTON +BENNY +BENSON +BENT +BENTHAM +BENTLEY +BENTLEYS +BENTON +BENZ +BENZEDRINE +BENZENE +BEOGRAD +BEOWULF +BEQUEATH +BEQUEATHAL +BEQUEATHED +BEQUEATHING +BEQUEATHS +BEQUEST +BEQUESTS +BERATE +BERATED +BERATES +BERATING +BEREA +BEREAVE +BEREAVED +BEREAVEMENT +BEREAVEMENTS +BEREAVES +BEREAVING +BEREFT +BERENICES +BERESFORD +BERET +BERETS +BERGEN +BERGLAND +BERGLUND +BERGMAN +BERGSON +BERGSTEN +BERGSTROM +BERIBBONED +BERIBERI +BERINGER +BERKELEY +BERKELIUM +BERKOWITZ +BERKSHIRE +BERKSHIRES +BERLIN +BERLINER +BERLINERS +BERLINIZE +BERLINIZES +BERLIOZ +BERLITZ +BERMAN +BERMUDA +BERN +BERNADINE +BERNARD +BERNARDINE +BERNARDINO +BERNARDO +BERNE +BERNET +BERNHARD +BERNICE +BERNIE +BERNIECE +BERNINI +BERNOULLI +BERNSTEIN +BERRA +BERRIES +BERRY +BERSERK +BERT +BERTH +BERTHA +BERTHS +BERTIE +BERTRAM +BERTRAND +BERWICK +BERYL +BERYLLIUM +BESEECH +BESEECHES +BESEECHING +BESET +BESETS +BESETTING +BESIDE +BESIDES +BESIEGE +BESIEGED +BESIEGER +BESIEGERS +BESIEGING +BESMIRCH +BESMIRCHED +BESMIRCHES +BESMIRCHING +BESOTTED +BESOTTER +BESOTTING +BESOUGHT +BESPEAK +BESPEAKS +BESPECTACLED +BESPOKE +BESS +BESSEL +BESSEMER +BESSEMERIZE +BESSEMERIZES +BESSIE +BEST +BESTED +BESTIAL +BESTING +BESTIR +BESTIRRING +BESTOW +BESTOWAL +BESTOWED +BESTS +BESTSELLER +BESTSELLERS +BESTSELLING +BET +BETA +BETATRON +BETEL +BETELGEUSE +BETHESDA +BETHLEHEM +BETIDE +BETRAY +BETRAYAL +BETRAYED +BETRAYER +BETRAYING +BETRAYS +BETROTH +BETROTHAL +BETROTHED +BETS +BETSEY +BETSY +BETTE +BETTER +BETTERED +BETTERING +BETTERMENT +BETTERMENTS +BETTERS +BETTIES +BETTING +BETTY +BETWEEN +BETWIXT +BEVEL +BEVELED +BEVELING +BEVELS +BEVERAGE +BEVERAGES +BEVERLY +BEVY +BEWAIL +BEWAILED +BEWAILING +BEWAILS +BEWARE +BEWHISKERED +BEWILDER +BEWILDERED +BEWILDERING +BEWILDERINGLY +BEWILDERMENT +BEWILDERS +BEWITCH +BEWITCHED +BEWITCHES +BEWITCHING +BEYOND +BHUTAN +BIALYSTOK +BIANCO +BIANNUAL +BIAS +BIASED +BIASES +BIASING +BIB +BIBBED +BIBBING +BIBLE +BIBLES +BIBLICAL +BIBLICALLY +BIBLIOGRAPHIC +BIBLIOGRAPHICAL +BIBLIOGRAPHIES +BIBLIOGRAPHY +BIBLIOPHILE +BIBS +BICAMERAL +BICARBONATE +BICENTENNIAL +BICEP +BICEPS +BICKER +BICKERED +BICKERING +BICKERS +BICONCAVE +BICONNECTED +BICONVEX +BICYCLE +BICYCLED +BICYCLER +BICYCLERS +BICYCLES +BICYCLING +BID +BIDDABLE +BIDDEN +BIDDER +BIDDERS +BIDDIES +BIDDING +BIDDLE +BIDDY +BIDE +BIDIRECTIONAL +BIDS +BIEN +BIENNIAL +BIENNIUM +BIENVILLE +BIER +BIERCE +BIFOCAL +BIFOCALS +BIFURCATE +BIG +BIGELOW +BIGGER +BIGGEST +BIGGS +BIGHT +BIGHTS +BIGNESS +BIGOT +BIGOTED +BIGOTRY +BIGOTS +BIHARMONIC +BIJECTION +BIJECTIONS +BIJECTIVE +BIJECTIVELY +BIKE +BIKES +BIKING +BIKINI +BIKINIS +BILABIAL +BILATERAL +BILATERALLY +BILBAO +BILBO +BILE +BILGE +BILGES +BILINEAR +BILINGUAL +BILK +BILKED +BILKING +BILKS +BILL +BILLBOARD +BILLBOARDS +BILLED +BILLER +BILLERS +BILLET +BILLETED +BILLETING +BILLETS +BILLIARD +BILLIARDS +BILLIE +BILLIKEN +BILLIKENS +BILLING +BILLINGS +BILLION +BILLIONS +BILLIONTH +BILLOW +BILLOWED +BILLOWS +BILLS +BILTMORE +BIMETALLIC +BIMETALLISM +BIMINI +BIMODAL +BIMOLECULAR +BIMONTHLIES +BIMONTHLY +BIN +BINARIES +BINARY +BINAURAL +BIND +BINDER +BINDERS +BINDING +BINDINGS +BINDS +BING +BINGE +BINGES +BINGHAM +BINGHAMTON +BINGO +BINI +BINOCULAR +BINOCULARS +BINOMIAL +BINS +BINUCLEAR +BIOCHEMICAL +BIOCHEMIST +BIOCHEMISTRY +BIOFEEDBACK +BIOGRAPHER +BIOGRAPHERS +BIOGRAPHIC +BIOGRAPHICAL +BIOGRAPHICALLY +BIOGRAPHIES +BIOGRAPHY +BIOLOGICAL +BIOLOGICALLY +BIOLOGIST +BIOLOGISTS +BIOLOGY +BIOMEDICAL +BIOMEDICINE +BIOPHYSICAL +BIOPHYSICIST +BIOPHYSICS +BIOPSIES +BIOPSY +BIOSCIENCE +BIOSPHERE +BIOSTATISTIC +BIOSYNTHESIZE +BIOTA +BIOTIC +BIPARTISAN +BIPARTITE +BIPED +BIPEDS +BIPLANE +BIPLANES +BIPOLAR +BIRACIAL +BIRCH +BIRCHEN +BIRCHES +BIRD +BIRDBATH +BIRDBATHS +BIRDIE +BIRDIED +BIRDIES +BIRDLIKE +BIRDS +BIREFRINGENCE +BIREFRINGENT +BIRGIT +BIRMINGHAM +BIRMINGHAMIZE +BIRMINGHAMIZES +BIRTH +BIRTHDAY +BIRTHDAYS +BIRTHED +BIRTHPLACE +BIRTHPLACES +BIRTHRIGHT +BIRTHRIGHTS +BIRTHS +BISCAYNE +BISCUIT +BISCUITS +BISECT +BISECTED +BISECTING +BISECTION +BISECTIONS +BISECTOR +BISECTORS +BISECTS +BISHOP +BISHOPS +BISMARCK +BISMARK +BISMUTH +BISON +BISONS +BISQUE +BISQUES +BISSAU +BISTABLE +BISTATE +BIT +BITCH +BITCHES +BITE +BITER +BITERS +BITES +BITING +BITINGLY +BITMAP +BITNET +BITS +BITTEN +BITTER +BITTERER +BITTEREST +BITTERLY +BITTERNESS +BITTERNUT +BITTERROOT +BITTERS +BITTERSWEET +BITUMEN +BITUMINOUS +BITWISE +BIVALVE +BIVALVES +BIVARIATE +BIVOUAC +BIVOUACS +BIWEEKLY +BIZARRE +BIZET +BLAB +BLABBED +BLABBERMOUTH +BLABBERMOUTHS +BLABBING +BLABS +BLACK +BLACKBERRIES +BLACKBERRY +BLACKBIRD +BLACKBIRDS +BLACKBOARD +BLACKBOARDS +BLACKBURN +BLACKED +BLACKEN +BLACKENED +BLACKENING +BLACKENS +BLACKER +BLACKEST +BLACKFEET +BLACKFOOT +BLACKFOOTS +BLACKING +BLACKJACK +BLACKJACKS +BLACKLIST +BLACKLISTED +BLACKLISTING +BLACKLISTS +BLACKLY +BLACKMAIL +BLACKMAILED +BLACKMAILER +BLACKMAILERS +BLACKMAILING +BLACKMAILS +BLACKMAN +BLACKMER +BLACKNESS +BLACKOUT +BLACKOUTS +BLACKS +BLACKSMITH +BLACKSMITHS +BLACKSTONE +BLACKWELL +BLACKWELLS +BLADDER +BLADDERS +BLADE +BLADES +BLAINE +BLAIR +BLAKE +BLAKEY +BLAMABLE +BLAME +BLAMED +BLAMELESS +BLAMELESSNESS +BLAMER +BLAMERS +BLAMES +BLAMEWORTHY +BLAMING +BLANCH +BLANCHARD +BLANCHE +BLANCHED +BLANCHES +BLANCHING +BLAND +BLANDLY +BLANDNESS +BLANK +BLANKED +BLANKER +BLANKEST +BLANKET +BLANKETED +BLANKETER +BLANKETERS +BLANKETING +BLANKETS +BLANKING +BLANKLY +BLANKNESS +BLANKS +BLANTON +BLARE +BLARED +BLARES +BLARING +BLASE +BLASPHEME +BLASPHEMED +BLASPHEMES +BLASPHEMIES +BLASPHEMING +BLASPHEMOUS +BLASPHEMOUSLY +BLASPHEMOUSNESS +BLASPHEMY +BLAST +BLASTED +BLASTER +BLASTERS +BLASTING +BLASTS +BLATANT +BLATANTLY +BLATZ +BLAZE +BLAZED +BLAZER +BLAZERS +BLAZES +BLAZING +BLEACH +BLEACHED +BLEACHER +BLEACHERS +BLEACHES +BLEACHING +BLEAK +BLEAKER +BLEAKLY +BLEAKNESS +BLEAR +BLEARY +BLEAT +BLEATING +BLEATS +BLED +BLEED +BLEEDER +BLEEDING +BLEEDINGS +BLEEDS +BLEEKER +BLEMISH +BLEMISHES +BLEND +BLENDED +BLENDER +BLENDING +BLENDS +BLENHEIM +BLESS +BLESSED +BLESSING +BLESSINGS +BLEW +BLIGHT +BLIGHTED +BLIMP +BLIMPS +BLIND +BLINDED +BLINDER +BLINDERS +BLINDFOLD +BLINDFOLDED +BLINDFOLDING +BLINDFOLDS +BLINDING +BLINDINGLY +BLINDLY +BLINDNESS +BLINDS +BLINK +BLINKED +BLINKER +BLINKERS +BLINKING +BLINKS +BLINN +BLIP +BLIPS +BLISS +BLISSFUL +BLISSFULLY +BLISTER +BLISTERED +BLISTERING +BLISTERS +BLITHE +BLITHELY +BLITZ +BLITZES +BLITZKRIEG +BLIZZARD +BLIZZARDS +BLOAT +BLOATED +BLOATER +BLOATING +BLOATS +BLOB +BLOBS +BLOC +BLOCH +BLOCK +BLOCKADE +BLOCKADED +BLOCKADES +BLOCKADING +BLOCKAGE +BLOCKAGES +BLOCKED +BLOCKER +BLOCKERS +BLOCKHOUSE +BLOCKHOUSES +BLOCKING +BLOCKS +BLOCS +BLOKE +BLOKES +BLOMBERG +BLOMQUIST +BLOND +BLONDE +BLONDES +BLONDS +BLOOD +BLOODBATH +BLOODED +BLOODHOUND +BLOODHOUNDS +BLOODIED +BLOODIEST +BLOODLESS +BLOODS +BLOODSHED +BLOODSHOT +BLOODSTAIN +BLOODSTAINED +BLOODSTAINS +BLOODSTREAM +BLOODY +BLOOM +BLOOMED +BLOOMERS +BLOOMFIELD +BLOOMING +BLOOMINGTON +BLOOMS +BLOOPER +BLOSSOM +BLOSSOMED +BLOSSOMS +BLOT +BLOTS +BLOTTED +BLOTTING +BLOUSE +BLOUSES +BLOW +BLOWER +BLOWERS +BLOWFISH +BLOWING +BLOWN +BLOWOUT +BLOWS +BLOWUP +BLUBBER +BLUDGEON +BLUDGEONED +BLUDGEONING +BLUDGEONS +BLUE +BLUEBERRIES +BLUEBERRY +BLUEBIRD +BLUEBIRDS +BLUEBONNET +BLUEBONNETS +BLUEFISH +BLUENESS +BLUEPRINT +BLUEPRINTS +BLUER +BLUES +BLUEST +BLUESTOCKING +BLUFF +BLUFFING +BLUFFS +BLUING +BLUISH +BLUM +BLUMENTHAL +BLUNDER +BLUNDERBUSS +BLUNDERED +BLUNDERING +BLUNDERINGS +BLUNDERS +BLUNT +BLUNTED +BLUNTER +BLUNTEST +BLUNTING +BLUNTLY +BLUNTNESS +BLUNTS +BLUR +BLURB +BLURRED +BLURRING +BLURRY +BLURS +BLURT +BLURTED +BLURTING +BLURTS +BLUSH +BLUSHED +BLUSHES +BLUSHING +BLUSTER +BLUSTERED +BLUSTERING +BLUSTERS +BLUSTERY +BLYTHE +BOA +BOAR +BOARD +BOARDED +BOARDER +BOARDERS +BOARDING +BOARDINGHOUSE +BOARDINGHOUSES +BOARDS +BOARSH +BOAST +BOASTED +BOASTER +BOASTERS +BOASTFUL +BOASTFULLY +BOASTING +BOASTINGS +BOASTS +BOAT +BOATER +BOATERS +BOATHOUSE +BOATHOUSES +BOATING +BOATLOAD +BOATLOADS +BOATMAN +BOATMEN +BOATS +BOATSMAN +BOATSMEN +BOATSWAIN +BOATSWAINS +BOATYARD +BOATYARDS +BOB +BOBBED +BOBBIE +BOBBIN +BOBBING +BOBBINS +BOBBSEY +BOBBY +BOBOLINK +BOBOLINKS +BOBROW +BOBS +BOBWHITE +BOBWHITES +BOCA +BODE +BODENHEIM +BODES +BODICE +BODIED +BODIES +BODILY +BODLEIAN +BODY +BODYBUILDER +BODYBUILDERS +BODYBUILDING +BODYGUARD +BODYGUARDS +BODYWEIGHT +BOEING +BOEOTIA +BOEOTIAN +BOER +BOERS +BOG +BOGART +BOGARTIAN +BOGEYMEN +BOGGED +BOGGLE +BOGGLED +BOGGLES +BOGGLING +BOGOTA +BOGS +BOGUS +BOHEME +BOHEMIA +BOHEMIAN +BOHEMIANISM +BOHR +BOIL +BOILED +BOILER +BOILERPLATE +BOILERS +BOILING +BOILS +BOIS +BOISE +BOISTEROUS +BOISTEROUSLY +BOLD +BOLDER +BOLDEST +BOLDFACE +BOLDLY +BOLDNESS +BOLIVIA +BOLIVIAN +BOLL +BOLOGNA +BOLSHEVIK +BOLSHEVIKS +BOLSHEVISM +BOLSHEVIST +BOLSHEVISTIC +BOLSHOI +BOLSTER +BOLSTERED +BOLSTERING +BOLSTERS +BOLT +BOLTED +BOLTING +BOLTON +BOLTS +BOLTZMANN +BOMB +BOMBARD +BOMBARDED +BOMBARDING +BOMBARDMENT +BOMBARDS +BOMBAST +BOMBASTIC +BOMBAY +BOMBED +BOMBER +BOMBERS +BOMBING +BOMBINGS +BOMBPROOF +BOMBS +BONANZA +BONANZAS +BONAPARTE +BONAVENTURE +BOND +BONDAGE +BONDED +BONDER +BONDERS +BONDING +BONDS +BONDSMAN +BONDSMEN +BONE +BONED +BONER +BONERS +BONES +BONFIRE +BONFIRES +BONG +BONHAM +BONIFACE +BONING +BONN +BONNET +BONNETED +BONNETS +BONNEVILLE +BONNIE +BONNY +BONTEMPO +BONUS +BONUSES +BONY +BOO +BOOB +BOOBOO +BOOBY +BOOK +BOOKCASE +BOOKCASES +BOOKED +BOOKER +BOOKERS +BOOKIE +BOOKIES +BOOKING +BOOKINGS +BOOKISH +BOOKKEEPER +BOOKKEEPERS +BOOKKEEPING +BOOKLET +BOOKLETS +BOOKMARK +BOOKS +BOOKSELLER +BOOKSELLERS +BOOKSHELF +BOOKSHELVES +BOOKSTORE +BOOKSTORES +BOOKWORM +BOOLEAN +BOOLEANS +BOOM +BOOMED +BOOMERANG +BOOMERANGS +BOOMING +BOOMS +BOON +BOONE +BOONTON +BOOR +BOORISH +BOORS +BOOS +BOOST +BOOSTED +BOOSTER +BOOSTING +BOOSTS +BOOT +BOOTABLE +BOOTED +BOOTES +BOOTH +BOOTHS +BOOTING +BOOTLE +BOOTLEG +BOOTLEGGED +BOOTLEGGER +BOOTLEGGERS +BOOTLEGGING +BOOTLEGS +BOOTS +BOOTSTRAP +BOOTSTRAPPED +BOOTSTRAPPING +BOOTSTRAPS +BOOTY +BOOZE +BORATE +BORATES +BORAX +BORDEAUX +BORDELLO +BORDELLOS +BORDEN +BORDER +BORDERED +BORDERING +BORDERINGS +BORDERLAND +BORDERLANDS +BORDERLINE +BORDERS +BORE +BOREALIS +BOREAS +BORED +BOREDOM +BORER +BORES +BORG +BORIC +BORING +BORIS +BORN +BORNE +BORNEO +BORON +BOROUGH +BOROUGHS +BORROUGHS +BORROW +BORROWED +BORROWER +BORROWERS +BORROWING +BORROWS +BOSCH +BOSE +BOSOM +BOSOMS +BOSPORUS +BOSS +BOSSED +BOSSES +BOSTITCH +BOSTON +BOSTONIAN +BOSTONIANS +BOSUN +BOSWELL +BOSWELLIZE +BOSWELLIZES +BOTANICAL +BOTANIST +BOTANISTS +BOTANY +BOTCH +BOTCHED +BOTCHER +BOTCHERS +BOTCHES +BOTCHING +BOTH +BOTHER +BOTHERED +BOTHERING +BOTHERS +BOTHERSOME +BOTSWANA +BOTTLE +BOTTLED +BOTTLENECK +BOTTLENECKS +BOTTLER +BOTTLERS +BOTTLES +BOTTLING +BOTTOM +BOTTOMED +BOTTOMING +BOTTOMLESS +BOTTOMS +BOTULINUS +BOTULISM +BOUCHER +BOUFFANT +BOUGH +BOUGHS +BOUGHT +BOULDER +BOULDERS +BOULEVARD +BOULEVARDS +BOUNCE +BOUNCED +BOUNCER +BOUNCES +BOUNCING +BOUNCY +BOUND +BOUNDARIES +BOUNDARY +BOUNDED +BOUNDEN +BOUNDING +BOUNDLESS +BOUNDLESSNESS +BOUNDS +BOUNTEOUS +BOUNTEOUSLY +BOUNTIES +BOUNTIFUL +BOUNTY +BOUQUET +BOUQUETS +BOURBAKI +BOURBON +BOURGEOIS +BOURGEOISIE +BOURNE +BOUSTROPHEDON +BOUSTROPHEDONIC +BOUT +BOUTIQUE +BOUTS +BOUVIER +BOVINE +BOVINES +BOW +BOWDITCH +BOWDLERIZE +BOWDLERIZED +BOWDLERIZES +BOWDLERIZING +BOWDOIN +BOWED +BOWEL +BOWELS +BOWEN +BOWER +BOWERS +BOWES +BOWING +BOWL +BOWLED +BOWLER +BOWLERS +BOWLINE +BOWLINES +BOWLING +BOWLS +BOWMAN +BOWS +BOWSTRING +BOWSTRINGS +BOX +BOXCAR +BOXCARS +BOXED +BOXER +BOXERS +BOXES +BOXFORD +BOXING +BOXTOP +BOXTOPS +BOXWOOD +BOY +BOYCE +BOYCOTT +BOYCOTTED +BOYCOTTS +BOYD +BOYFRIEND +BOYFRIENDS +BOYHOOD +BOYISH +BOYISHNESS +BOYLE +BOYLSTON +BOYS +BRA +BRACE +BRACED +BRACELET +BRACELETS +BRACES +BRACING +BRACKET +BRACKETED +BRACKETING +BRACKETS +BRACKISH +BRADBURY +BRADFORD +BRADLEY +BRADSHAW +BRADY +BRAE +BRAES +BRAG +BRAGG +BRAGGED +BRAGGER +BRAGGING +BRAGS +BRAHMAPUTRA +BRAHMS +BRAHMSIAN +BRAID +BRAIDED +BRAIDING +BRAIDS +BRAILLE +BRAIN +BRAINARD +BRAINARDS +BRAINCHILD +BRAINED +BRAINING +BRAINS +BRAINSTEM +BRAINSTEMS +BRAINSTORM +BRAINSTORMS +BRAINWASH +BRAINWASHED +BRAINWASHES +BRAINWASHING +BRAINY +BRAKE +BRAKED +BRAKEMAN +BRAKES +BRAKING +BRAMBLE +BRAMBLES +BRAMBLY +BRAN +BRANCH +BRANCHED +BRANCHES +BRANCHING +BRANCHINGS +BRANCHVILLE +BRAND +BRANDED +BRANDEIS +BRANDEL +BRANDENBURG +BRANDING +BRANDISH +BRANDISHES +BRANDISHING +BRANDON +BRANDS +BRANDT +BRANDY +BRANDYWINE +BRANIFF +BRANNON +BRAS +BRASH +BRASHLY +BRASHNESS +BRASILIA +BRASS +BRASSES +BRASSIERE +BRASSTOWN +BRASSY +BRAT +BRATS +BRAUN +BRAVADO +BRAVE +BRAVED +BRAVELY +BRAVENESS +BRAVER +BRAVERY +BRAVES +BRAVEST +BRAVING +BRAVO +BRAVOS +BRAWL +BRAWLER +BRAWLING +BRAWN +BRAY +BRAYED +BRAYER +BRAYING +BRAYS +BRAZE +BRAZED +BRAZEN +BRAZENLY +BRAZENNESS +BRAZES +BRAZIER +BRAZIERS +BRAZIL +BRAZILIAN +BRAZING +BRAZZAVILLE +BREACH +BREACHED +BREACHER +BREACHERS +BREACHES +BREACHING +BREAD +BREADBOARD +BREADBOARDS +BREADBOX +BREADBOXES +BREADED +BREADING +BREADS +BREADTH +BREADWINNER +BREADWINNERS +BREAK +BREAKABLE +BREAKABLES +BREAKAGE +BREAKAWAY +BREAKDOWN +BREAKDOWNS +BREAKER +BREAKERS +BREAKFAST +BREAKFASTED +BREAKFASTER +BREAKFASTERS +BREAKFASTING +BREAKFASTS +BREAKING +BREAKPOINT +BREAKPOINTS +BREAKS +BREAKTHROUGH +BREAKTHROUGHES +BREAKTHROUGHS +BREAKUP +BREAKWATER +BREAKWATERS +BREAST +BREASTED +BREASTS +BREASTWORK +BREASTWORKS +BREATH +BREATHABLE +BREATHE +BREATHED +BREATHER +BREATHERS +BREATHES +BREATHING +BREATHLESS +BREATHLESSLY +BREATHS +BREATHTAKING +BREATHTAKINGLY +BREATHY +BRED +BREECH +BREECHES +BREED +BREEDER +BREEDING +BREEDS +BREEZE +BREEZES +BREEZILY +BREEZY +BREMEN +BREMSSTRAHLUNG +BRENDA +BRENDAN +BRENNAN +BRENNER +BRENT +BRESENHAM +BREST +BRETHREN +BRETON +BRETONS +BRETT +BREVE +BREVET +BREVETED +BREVETING +BREVETS +BREVITY +BREW +BREWED +BREWER +BREWERIES +BREWERS +BREWERY +BREWING +BREWS +BREWSTER +BRIAN +BRIAR +BRIARS +BRIBE +BRIBED +BRIBER +BRIBERS +BRIBERY +BRIBES +BRIBING +BRICE +BRICK +BRICKBAT +BRICKED +BRICKER +BRICKLAYER +BRICKLAYERS +BRICKLAYING +BRICKS +BRIDAL +BRIDE +BRIDEGROOM +BRIDES +BRIDESMAID +BRIDESMAIDS +BRIDEWELL +BRIDGE +BRIDGEABLE +BRIDGED +BRIDGEHEAD +BRIDGEHEADS +BRIDGEPORT +BRIDGES +BRIDGET +BRIDGETOWN +BRIDGEWATER +BRIDGEWORK +BRIDGING +BRIDLE +BRIDLED +BRIDLES +BRIDLING +BRIE +BRIEF +BRIEFCASE +BRIEFCASES +BRIEFED +BRIEFER +BRIEFEST +BRIEFING +BRIEFINGS +BRIEFLY +BRIEFNESS +BRIEFS +BRIEN +BRIER +BRIG +BRIGADE +BRIGADES +BRIGADIER +BRIGADIERS +BRIGADOON +BRIGANTINE +BRIGGS +BRIGHAM +BRIGHT +BRIGHTEN +BRIGHTENED +BRIGHTENER +BRIGHTENERS +BRIGHTENING +BRIGHTENS +BRIGHTER +BRIGHTEST +BRIGHTLY +BRIGHTNESS +BRIGHTON +BRIGS +BRILLIANCE +BRILLIANCY +BRILLIANT +BRILLIANTLY +BRILLOUIN +BRIM +BRIMFUL +BRIMMED +BRIMMING +BRIMSTONE +BRINDISI +BRINDLE +BRINDLED +BRINE +BRING +BRINGER +BRINGERS +BRINGING +BRINGS +BRINK +BRINKLEY +BRINKMANSHIP +BRINY +BRISBANE +BRISK +BRISKER +BRISKLY +BRISKNESS +BRISTLE +BRISTLED +BRISTLES +BRISTLING +BRISTOL +BRITAIN +BRITANNIC +BRITANNICA +BRITCHES +BRITISH +BRITISHER +BRITISHLY +BRITON +BRITONS +BRITTANY +BRITTEN +BRITTLE +BRITTLENESS +BROACH +BROACHED +BROACHES +BROACHING +BROAD +BROADBAND +BROADCAST +BROADCASTED +BROADCASTER +BROADCASTERS +BROADCASTING +BROADCASTINGS +BROADCASTS +BROADEN +BROADENED +BROADENER +BROADENERS +BROADENING +BROADENINGS +BROADENS +BROADER +BROADEST +BROADLY +BROADNESS +BROADSIDE +BROADWAY +BROCADE +BROCADED +BROCCOLI +BROCHURE +BROCHURES +BROCK +BROGLIE +BROIL +BROILED +BROILER +BROILERS +BROILING +BROILS +BROKE +BROKEN +BROKENLY +BROKENNESS +BROKER +BROKERAGE +BROKERS +BROMFIELD +BROMIDE +BROMIDES +BROMINE +BROMLEY +BRONCHI +BRONCHIAL +BRONCHIOLE +BRONCHIOLES +BRONCHITIS +BRONCHUS +BRONTOSAURUS +BRONX +BRONZE +BRONZED +BRONZES +BROOCH +BROOCHES +BROOD +BROODER +BROODING +BROODS +BROOK +BROOKDALE +BROOKE +BROOKED +BROOKFIELD +BROOKHAVEN +BROOKLINE +BROOKLYN +BROOKMONT +BROOKS +BROOM +BROOMS +BROOMSTICK +BROOMSTICKS +BROTH +BROTHEL +BROTHELS +BROTHER +BROTHERHOOD +BROTHERLINESS +BROTHERLY +BROTHERS +BROUGHT +BROW +BROWBEAT +BROWBEATEN +BROWBEATING +BROWBEATS +BROWN +BROWNE +BROWNED +BROWNELL +BROWNER +BROWNEST +BROWNIAN +BROWNIE +BROWNIES +BROWNING +BROWNISH +BROWNNESS +BROWNS +BROWS +BROWSE +BROWSING +BRUCE +BRUCKNER +BRUEGEL +BRUISE +BRUISED +BRUISES +BRUISING +BRUMIDI +BRUNCH +BRUNCHES +BRUNETTE +BRUNHILDE +BRUNO +BRUNSWICK +BRUNT +BRUSH +BRUSHED +BRUSHES +BRUSHFIRE +BRUSHFIRES +BRUSHING +BRUSHLIKE +BRUSHY +BRUSQUE +BRUSQUELY +BRUSSELS +BRUTAL +BRUTALITIES +BRUTALITY +BRUTALIZE +BRUTALIZED +BRUTALIZES +BRUTALIZING +BRUTALLY +BRUTE +BRUTES +BRUTISH +BRUXELLES +BRYAN +BRYANT +BRYCE +BRYN +BUBBLE +BUBBLED +BUBBLES +BUBBLING +BUBBLY +BUCHANAN +BUCHAREST +BUCHENWALD +BUCHWALD +BUCK +BUCKBOARD +BUCKBOARDS +BUCKED +BUCKET +BUCKETS +BUCKING +BUCKLE +BUCKLED +BUCKLER +BUCKLES +BUCKLEY +BUCKLING +BUCKNELL +BUCKS +BUCKSHOT +BUCKSKIN +BUCKSKINS +BUCKWHEAT +BUCKY +BUCOLIC +BUD +BUDAPEST +BUDD +BUDDED +BUDDHA +BUDDHISM +BUDDHIST +BUDDHISTS +BUDDIES +BUDDING +BUDDY +BUDGE +BUDGED +BUDGES +BUDGET +BUDGETARY +BUDGETED +BUDGETER +BUDGETERS +BUDGETING +BUDGETS +BUDGING +BUDS +BUDWEISER +BUDWEISERS +BUEHRING +BUENA +BUENOS +BUFF +BUFFALO +BUFFALOES +BUFFER +BUFFERED +BUFFERING +BUFFERS +BUFFET +BUFFETED +BUFFETING +BUFFETINGS +BUFFETS +BUFFOON +BUFFOONS +BUFFS +BUG +BUGABOO +BUGATTI +BUGEYED +BUGGED +BUGGER +BUGGERS +BUGGIES +BUGGING +BUGGY +BUGLE +BUGLED +BUGLER +BUGLES +BUGLING +BUGS +BUICK +BUILD +BUILDER +BUILDERS +BUILDING +BUILDINGS +BUILDS +BUILDUP +BUILDUPS +BUILT +BUILTIN +BUJUMBURA +BULB +BULBA +BULBS +BULGARIA +BULGARIAN +BULGE +BULGED +BULGING +BULK +BULKED +BULKHEAD +BULKHEADS +BULKS +BULKY +BULL +BULLDOG +BULLDOGS +BULLDOZE +BULLDOZED +BULLDOZER +BULLDOZES +BULLDOZING +BULLED +BULLET +BULLETIN +BULLETINS +BULLETS +BULLFROG +BULLIED +BULLIES +BULLING +BULLION +BULLISH +BULLOCK +BULLS +BULLSEYE +BULLY +BULLYING +BULWARK +BUM +BUMBLE +BUMBLEBEE +BUMBLEBEES +BUMBLED +BUMBLER +BUMBLERS +BUMBLES +BUMBLING +BUMBRY +BUMMED +BUMMING +BUMP +BUMPED +BUMPER +BUMPERS +BUMPING +BUMPS +BUMPTIOUS +BUMPTIOUSLY +BUMPTIOUSNESS +BUMS +BUN +BUNCH +BUNCHED +BUNCHES +BUNCHING +BUNDESTAG +BUNDLE +BUNDLED +BUNDLES +BUNDLING +BUNDOORA +BUNDY +BUNGALOW +BUNGALOWS +BUNGLE +BUNGLED +BUNGLER +BUNGLERS +BUNGLES +BUNGLING +BUNION +BUNIONS +BUNK +BUNKER +BUNKERED +BUNKERS +BUNKHOUSE +BUNKHOUSES +BUNKMATE +BUNKMATES +BUNKS +BUNNIES +BUNNY +BUNS +BUNSEN +BUNT +BUNTED +BUNTER +BUNTERS +BUNTING +BUNTS +BUNYAN +BUOY +BUOYANCY +BUOYANT +BUOYED +BUOYS +BURBANK +BURCH +BURDEN +BURDENED +BURDENING +BURDENS +BURDENSOME +BUREAU +BUREAUCRACIES +BUREAUCRACY +BUREAUCRAT +BUREAUCRATIC +BUREAUCRATS +BUREAUS +BURGEON +BURGEONED +BURGEONING +BURGESS +BURGESSES +BURGHER +BURGHERS +BURGLAR +BURGLARIES +BURGLARIZE +BURGLARIZED +BURGLARIZES +BURGLARIZING +BURGLARPROOF +BURGLARPROOFED +BURGLARPROOFING +BURGLARPROOFS +BURGLARS +BURGLARY +BURGUNDIAN +BURGUNDIES +BURGUNDY +BURIAL +BURIED +BURIES +BURKE +BURKES +BURL +BURLESQUE +BURLESQUES +BURLINGAME +BURLINGTON +BURLY +BURMA +BURMESE +BURN +BURNE +BURNED +BURNER +BURNERS +BURNES +BURNETT +BURNHAM +BURNING +BURNINGLY +BURNINGS +BURNISH +BURNISHED +BURNISHES +BURNISHING +BURNS +BURNSIDE +BURNSIDES +BURNT +BURNTLY +BURNTNESS +BURP +BURPED +BURPING +BURPS +BURR +BURROUGHS +BURROW +BURROWED +BURROWER +BURROWING +BURROWS +BURRS +BURSA +BURSITIS +BURST +BURSTINESS +BURSTING +BURSTS +BURSTY +BURT +BURTON +BURTT +BURUNDI +BURY +BURYING +BUS +BUSBOY +BUSBOYS +BUSCH +BUSED +BUSES +BUSH +BUSHEL +BUSHELS +BUSHES +BUSHING +BUSHNELL +BUSHWHACK +BUSHWHACKED +BUSHWHACKING +BUSHWHACKS +BUSHY +BUSIED +BUSIER +BUSIEST +BUSILY +BUSINESS +BUSINESSES +BUSINESSLIKE +BUSINESSMAN +BUSINESSMEN +BUSING +BUSS +BUSSED +BUSSES +BUSSING +BUST +BUSTARD +BUSTARDS +BUSTED +BUSTER +BUSTLE +BUSTLING +BUSTS +BUSY +BUT +BUTANE +BUTCHER +BUTCHERED +BUTCHERS +BUTCHERY +BUTLER +BUTLERS +BUTT +BUTTE +BUTTED +BUTTER +BUTTERBALL +BUTTERCUP +BUTTERED +BUTTERER +BUTTERERS +BUTTERFAT +BUTTERFIELD +BUTTERFLIES +BUTTERFLY +BUTTERING +BUTTERMILK +BUTTERNUT +BUTTERS +BUTTERY +BUTTES +BUTTING +BUTTOCK +BUTTOCKS +BUTTON +BUTTONED +BUTTONHOLE +BUTTONHOLES +BUTTONING +BUTTONS +BUTTRESS +BUTTRESSED +BUTTRESSES +BUTTRESSING +BUTTRICK +BUTTS +BUTYL +BUTYRATE +BUXOM +BUXTEHUDE +BUXTON +BUY +BUYER +BUYERS +BUYING +BUYS +BUZZ +BUZZARD +BUZZARDS +BUZZED +BUZZER +BUZZES +BUZZING +BUZZWORD +BUZZWORDS +BUZZY +BYE +BYERS +BYGONE +BYLAW +BYLAWS +BYLINE +BYLINES +BYPASS +BYPASSED +BYPASSES +BYPASSING +BYPRODUCT +BYPRODUCTS +BYRD +BYRNE +BYRON +BYRONIC +BYRONISM +BYRONIZE +BYRONIZES +BYSTANDER +BYSTANDERS +BYTE +BYTES +BYWAY +BYWAYS +BYWORD +BYWORDS +BYZANTINE +BYZANTINIZE +BYZANTINIZES +BYZANTIUM +CAB +CABAL +CABANA +CABARET +CABBAGE +CABBAGES +CABDRIVER +CABIN +CABINET +CABINETS +CABINS +CABLE +CABLED +CABLES +CABLING +CABOOSE +CABOT +CABS +CACHE +CACHED +CACHES +CACHING +CACKLE +CACKLED +CACKLER +CACKLES +CACKLING +CACTI +CACTUS +CADAVER +CADENCE +CADENCED +CADILLAC +CADILLACS +CADRES +CADY +CAESAR +CAESARIAN +CAESARIZE +CAESARIZES +CAFE +CAFES +CAFETERIA +CAGE +CAGED +CAGER +CAGERS +CAGES +CAGING +CAHILL +CAIMAN +CAIN +CAINE +CAIRN +CAIRO +CAJOLE +CAJOLED +CAJOLES +CAJOLING +CAJUN +CAJUNS +CAKE +CAKED +CAKES +CAKING +CALAIS +CALAMITIES +CALAMITOUS +CALAMITY +CALCEOLARIA +CALCIFY +CALCIUM +CALCOMP +CALCOMP +CALCOMP +CALCULATE +CALCULATED +CALCULATES +CALCULATING +CALCULATION +CALCULATIONS +CALCULATIVE +CALCULATOR +CALCULATORS +CALCULI +CALCULUS +CALCUTTA +CALDER +CALDERA +CALDWELL +CALEB +CALENDAR +CALENDARS +CALF +CALFSKIN +CALGARY +CALHOUN +CALIBER +CALIBERS +CALIBRATE +CALIBRATED +CALIBRATES +CALIBRATING +CALIBRATION +CALIBRATIONS +CALICO +CALIFORNIA +CALIFORNIAN +CALIFORNIANS +CALIGULA +CALIPH +CALIPHS +CALKINS +CALL +CALLABLE +CALLAGHAN +CALLAHAN +CALLAN +CALLED +CALLER +CALLERS +CALLING +CALLIOPE +CALLISTO +CALLOUS +CALLOUSED +CALLOUSLY +CALLOUSNESS +CALLS +CALLUS +CALM +CALMED +CALMER +CALMEST +CALMING +CALMINGLY +CALMLY +CALMNESS +CALMS +CALORIC +CALORIE +CALORIES +CALORIMETER +CALORIMETRIC +CALORIMETRY +CALTECH +CALUMNY +CALVARY +CALVE +CALVERT +CALVES +CALVIN +CALVINIST +CALVINIZE +CALVINIZES +CALYPSO +CAM +CAMBODIA +CAMBRIAN +CAMBRIDGE +CAMDEN +CAME +CAMEL +CAMELOT +CAMELS +CAMEMBERT +CAMERA +CAMERAMAN +CAMERAMEN +CAMERAS +CAMERON +CAMEROON +CAMEROUN +CAMILLA +CAMILLE +CAMINO +CAMOUFLAGE +CAMOUFLAGED +CAMOUFLAGES +CAMOUFLAGING +CAMP +CAMPAIGN +CAMPAIGNED +CAMPAIGNER +CAMPAIGNERS +CAMPAIGNING +CAMPAIGNS +CAMPBELL +CAMPBELLSPORT +CAMPED +CAMPER +CAMPERS +CAMPFIRE +CAMPGROUND +CAMPING +CAMPS +CAMPSITE +CAMPUS +CAMPUSES +CAN +CANAAN +CANADA +CANADIAN +CANADIANIZATION +CANADIANIZATIONS +CANADIANIZE +CANADIANIZES +CANADIANS +CANAL +CANALS +CANARIES +CANARY +CANAVERAL +CANBERRA +CANCEL +CANCELED +CANCELING +CANCELLATION +CANCELLATIONS +CANCELS +CANCER +CANCEROUS +CANCERS +CANDACE +CANDID +CANDIDACY +CANDIDATE +CANDIDATES +CANDIDE +CANDIDLY +CANDIDNESS +CANDIED +CANDIES +CANDLE +CANDLELIGHT +CANDLER +CANDLES +CANDLESTICK +CANDLESTICKS +CANDLEWICK +CANDOR +CANDY +CANE +CANER +CANFIELD +CANINE +CANIS +CANISTER +CANKER +CANKERWORM +CANNABIS +CANNED +CANNEL +CANNER +CANNERS +CANNERY +CANNIBAL +CANNIBALIZE +CANNIBALIZED +CANNIBALIZES +CANNIBALIZING +CANNIBALS +CANNING +CANNISTER +CANNISTERS +CANNON +CANNONBALL +CANNONS +CANNOT +CANNY +CANOE +CANOES +CANOGA +CANON +CANONIC +CANONICAL +CANONICALIZATION +CANONICALIZE +CANONICALIZED +CANONICALIZES +CANONICALIZING +CANONICALLY +CANONICALS +CANONS +CANOPUS +CANOPY +CANS +CANT +CANTABRIGIAN +CANTALOUPE +CANTANKEROUS +CANTANKEROUSLY +CANTEEN +CANTERBURY +CANTILEVER +CANTO +CANTON +CANTONESE +CANTONS +CANTOR +CANTORS +CANUTE +CANVAS +CANVASES +CANVASS +CANVASSED +CANVASSER +CANVASSERS +CANVASSES +CANVASSING +CANYON +CANYONS +CAP +CAPABILITIES +CAPABILITY +CAPABLE +CAPABLY +CAPACIOUS +CAPACIOUSLY +CAPACIOUSNESS +CAPACITANCE +CAPACITANCES +CAPACITIES +CAPACITIVE +CAPACITOR +CAPACITORS +CAPACITY +CAPE +CAPER +CAPERS +CAPES +CAPET +CAPETOWN +CAPILLARY +CAPISTRANO +CAPITA +CAPITAL +CAPITALISM +CAPITALIST +CAPITALISTS +CAPITALIZATION +CAPITALIZATIONS +CAPITALIZE +CAPITALIZED +CAPITALIZER +CAPITALIZERS +CAPITALIZES +CAPITALIZING +CAPITALLY +CAPITALS +CAPITAN +CAPITOL +CAPITOLINE +CAPITOLS +CAPPED +CAPPING +CAPPY +CAPRICE +CAPRICIOUS +CAPRICIOUSLY +CAPRICIOUSNESS +CAPRICORN +CAPS +CAPSICUM +CAPSTAN +CAPSTONE +CAPSULE +CAPTAIN +CAPTAINED +CAPTAINING +CAPTAINS +CAPTION +CAPTIONS +CAPTIVATE +CAPTIVATED +CAPTIVATES +CAPTIVATING +CAPTIVATION +CAPTIVE +CAPTIVES +CAPTIVITY +CAPTOR +CAPTORS +CAPTURE +CAPTURED +CAPTURER +CAPTURERS +CAPTURES +CAPTURING +CAPUTO +CAPYBARA +CAR +CARACAS +CARAMEL +CARAVAN +CARAVANS +CARAWAY +CARBOHYDRATE +CARBOLIC +CARBOLOY +CARBON +CARBONATE +CARBONATES +CARBONATION +CARBONDALE +CARBONE +CARBONES +CARBONIC +CARBONIZATION +CARBONIZE +CARBONIZED +CARBONIZER +CARBONIZERS +CARBONIZES +CARBONIZING +CARBONS +CARBORUNDUM +CARBUNCLE +CARCASS +CARCASSES +CARCINOGEN +CARCINOGENIC +CARCINOMA +CARD +CARDBOARD +CARDER +CARDIAC +CARDIFF +CARDINAL +CARDINALITIES +CARDINALITY +CARDINALLY +CARDINALS +CARDIOD +CARDIOLOGY +CARDIOVASCULAR +CARDS +CARE +CARED +CAREEN +CAREER +CAREERS +CAREFREE +CAREFUL +CAREFULLY +CAREFULNESS +CARELESS +CARELESSLY +CARELESSNESS +CARES +CARESS +CARESSED +CARESSER +CARESSES +CARESSING +CARET +CARETAKER +CAREY +CARGILL +CARGO +CARGOES +CARIB +CARIBBEAN +CARIBOU +CARICATURE +CARING +CARL +CARLA +CARLETON +CARLETONIAN +CARLIN +CARLISLE +CARLO +CARLOAD +CARLSBAD +CARLSBADS +CARLSON +CARLTON +CARLYLE +CARMELA +CARMEN +CARMICHAEL +CARNAGE +CARNAL +CARNATION +CARNEGIE +CARNIVAL +CARNIVALS +CARNIVOROUS +CARNIVOROUSLY +CAROL +CAROLINA +CAROLINAS +CAROLINE +CAROLINGIAN +CAROLINIAN +CAROLINIANS +CAROLS +CAROLYN +CARP +CARPATHIA +CARPATHIANS +CARPENTER +CARPENTERS +CARPENTRY +CARPET +CARPETED +CARPETING +CARPETS +CARPORT +CARR +CARRARA +CARRIAGE +CARRIAGES +CARRIE +CARRIED +CARRIER +CARRIERS +CARRIES +CARRION +CARROLL +CARROT +CARROTS +CARRUTHERS +CARRY +CARRYING +CARRYOVER +CARRYOVERS +CARS +CARSON +CART +CARTED +CARTEL +CARTER +CARTERS +CARTESIAN +CARTHAGE +CARTHAGINIAN +CARTILAGE +CARTING +CARTOGRAPHER +CARTOGRAPHIC +CARTOGRAPHY +CARTON +CARTONS +CARTOON +CARTOONS +CARTRIDGE +CARTRIDGES +CARTS +CARTWHEEL +CARTY +CARUSO +CARVE +CARVED +CARVER +CARVES +CARVING +CARVINGS +CASANOVA +CASCADABLE +CASCADE +CASCADED +CASCADES +CASCADING +CASE +CASED +CASEMENT +CASEMENTS +CASES +CASEWORK +CASEY +CASH +CASHED +CASHER +CASHERS +CASHES +CASHEW +CASHIER +CASHIERS +CASHING +CASHMERE +CASING +CASINGS +CASINO +CASK +CASKET +CASKETS +CASKS +CASPIAN +CASSANDRA +CASSEROLE +CASSEROLES +CASSETTE +CASSIOPEIA +CASSITE +CASSITES +CASSIUS +CASSOCK +CAST +CASTE +CASTER +CASTERS +CASTES +CASTIGATE +CASTILLO +CASTING +CASTLE +CASTLED +CASTLES +CASTOR +CASTRO +CASTROISM +CASTS +CASUAL +CASUALLY +CASUALNESS +CASUALS +CASUALTIES +CASUALTY +CAT +CATACLYSMIC +CATALAN +CATALINA +CATALOG +CATALOGED +CATALOGER +CATALOGING +CATALOGS +CATALONIA +CATALYST +CATALYSTS +CATALYTIC +CATAPULT +CATARACT +CATASTROPHE +CATASTROPHES +CATASTROPHIC +CATAWBA +CATCH +CATCHABLE +CATCHER +CATCHERS +CATCHES +CATCHING +CATEGORICAL +CATEGORICALLY +CATEGORIES +CATEGORIZATION +CATEGORIZE +CATEGORIZED +CATEGORIZER +CATEGORIZERS +CATEGORIZES +CATEGORIZING +CATEGORY +CATER +CATERED +CATERER +CATERING +CATERPILLAR +CATERPILLARS +CATERS +CATHEDRAL +CATHEDRALS +CATHERINE +CATHERWOOD +CATHETER +CATHETERS +CATHODE +CATHODES +CATHOLIC +CATHOLICISM +CATHOLICISMS +CATHOLICS +CATHY +CATLIKE +CATNIP +CATS +CATSKILL +CATSKILLS +CATSUP +CATTAIL +CATTLE +CATTLEMAN +CATTLEMEN +CAUCASIAN +CAUCASIANS +CAUCASUS +CAUCHY +CAUCUS +CAUGHT +CAULDRON +CAULDRONS +CAULIFLOWER +CAULK +CAUSAL +CAUSALITY +CAUSALLY +CAUSATION +CAUSATIONS +CAUSE +CAUSED +CAUSER +CAUSES +CAUSEWAY +CAUSEWAYS +CAUSING +CAUSTIC +CAUSTICLY +CAUSTICS +CAUTION +CAUTIONED +CAUTIONER +CAUTIONERS +CAUTIONING +CAUTIONINGS +CAUTIONS +CAUTIOUS +CAUTIOUSLY +CAUTIOUSNESS +CAVALIER +CAVALIERLY +CAVALIERNESS +CAVALRY +CAVE +CAVEAT +CAVEATS +CAVED +CAVEMAN +CAVEMEN +CAVENDISH +CAVERN +CAVERNOUS +CAVERNS +CAVES +CAVIAR +CAVIL +CAVINESS +CAVING +CAVITIES +CAVITY +CAW +CAWING +CAYLEY +CAYUGA +CEASE +CEASED +CEASELESS +CEASELESSLY +CEASELESSNESS +CEASES +CEASING +CECIL +CECILIA +CECROPIA +CEDAR +CEDE +CEDED +CEDING +CEDRIC +CEILING +CEILINGS +CELANESE +CELEBES +CELEBRATE +CELEBRATED +CELEBRATES +CELEBRATING +CELEBRATION +CELEBRATIONS +CELEBRITIES +CELEBRITY +CELERITY +CELERY +CELESTE +CELESTIAL +CELESTIALLY +CELIA +CELL +CELLAR +CELLARS +CELLED +CELLIST +CELLISTS +CELLOPHANE +CELLS +CELLULAR +CELLULOSE +CELSIUS +CELT +CELTIC +CELTICIZE +CELTICIZES +CEMENT +CEMENTED +CEMENTING +CEMENTS +CEMETERIES +CEMETERY +CENOZOIC +CENSOR +CENSORED +CENSORING +CENSORS +CENSORSHIP +CENSURE +CENSURED +CENSURER +CENSURES +CENSUS +CENSUSES +CENT +CENTAUR +CENTENARY +CENTENNIAL +CENTER +CENTERED +CENTERING +CENTERPIECE +CENTERPIECES +CENTERS +CENTIGRADE +CENTIMETER +CENTIMETERS +CENTIPEDE +CENTIPEDES +CENTRAL +CENTRALIA +CENTRALISM +CENTRALIST +CENTRALIZATION +CENTRALIZE +CENTRALIZED +CENTRALIZES +CENTRALIZING +CENTRALLY +CENTREX +CENTREX +CENTRIFUGAL +CENTRIFUGE +CENTRIPETAL +CENTRIST +CENTROID +CENTS +CENTURIES +CENTURY +CEPHEUS +CERAMIC +CERBERUS +CEREAL +CEREALS +CEREBELLUM +CEREBRAL +CEREMONIAL +CEREMONIALLY +CEREMONIALNESS +CEREMONIES +CEREMONY +CERES +CERN +CERTAIN +CERTAINLY +CERTAINTIES +CERTAINTY +CERTIFIABLE +CERTIFICATE +CERTIFICATES +CERTIFICATION +CERTIFICATIONS +CERTIFIED +CERTIFIER +CERTIFIERS +CERTIFIES +CERTIFY +CERTIFYING +CERVANTES +CESARE +CESSATION +CESSATIONS +CESSNA +CETUS +CEYLON +CEZANNE +CEZANNES +CHABLIS +CHABLISES +CHAD +CHADWICK +CHAFE +CHAFER +CHAFF +CHAFFER +CHAFFEY +CHAFFING +CHAFING +CHAGRIN +CHAIN +CHAINED +CHAINING +CHAINS +CHAIR +CHAIRED +CHAIRING +CHAIRLADY +CHAIRMAN +CHAIRMEN +CHAIRPERSON +CHAIRPERSONS +CHAIRS +CHAIRWOMAN +CHAIRWOMEN +CHALICE +CHALICES +CHALK +CHALKED +CHALKING +CHALKS +CHALLENGE +CHALLENGED +CHALLENGER +CHALLENGERS +CHALLENGES +CHALLENGING +CHALMERS +CHAMBER +CHAMBERED +CHAMBERLAIN +CHAMBERLAINS +CHAMBERMAID +CHAMBERS +CHAMELEON +CHAMPAGNE +CHAMPAIGN +CHAMPION +CHAMPIONED +CHAMPIONING +CHAMPIONS +CHAMPIONSHIP +CHAMPIONSHIPS +CHAMPLAIN +CHANCE +CHANCED +CHANCELLOR +CHANCELLORSVILLE +CHANCERY +CHANCES +CHANCING +CHANDELIER +CHANDELIERS +CHANDIGARH +CHANG +CHANGE +CHANGEABILITY +CHANGEABLE +CHANGEABLY +CHANGED +CHANGEOVER +CHANGER +CHANGERS +CHANGES +CHANGING +CHANNEL +CHANNELED +CHANNELING +CHANNELLED +CHANNELLER +CHANNELLERS +CHANNELLING +CHANNELS +CHANNING +CHANT +CHANTED +CHANTER +CHANTICLEER +CHANTICLEERS +CHANTILLY +CHANTING +CHANTS +CHAO +CHAOS +CHAOTIC +CHAP +CHAPEL +CHAPELS +CHAPERON +CHAPERONE +CHAPERONED +CHAPLAIN +CHAPLAINS +CHAPLIN +CHAPMAN +CHAPS +CHAPTER +CHAPTERS +CHAR +CHARACTER +CHARACTERISTIC +CHARACTERISTICALLY +CHARACTERISTICS +CHARACTERIZABLE +CHARACTERIZATION +CHARACTERIZATIONS +CHARACTERIZE +CHARACTERIZED +CHARACTERIZER +CHARACTERIZERS +CHARACTERIZES +CHARACTERIZING +CHARACTERS +CHARCOAL +CHARCOALED +CHARGE +CHARGEABLE +CHARGED +CHARGER +CHARGERS +CHARGES +CHARGING +CHARIOT +CHARIOTS +CHARISMA +CHARISMATIC +CHARITABLE +CHARITABLENESS +CHARITIES +CHARITY +CHARLEMAGNE +CHARLEMAGNES +CHARLES +CHARLESTON +CHARLEY +CHARLIE +CHARLOTTE +CHARLOTTESVILLE +CHARM +CHARMED +CHARMER +CHARMERS +CHARMING +CHARMINGLY +CHARMS +CHARON +CHARS +CHART +CHARTA +CHARTABLE +CHARTED +CHARTER +CHARTERED +CHARTERING +CHARTERS +CHARTING +CHARTINGS +CHARTRES +CHARTREUSE +CHARTS +CHARYBDIS +CHASE +CHASED +CHASER +CHASERS +CHASES +CHASING +CHASM +CHASMS +CHASSIS +CHASTE +CHASTELY +CHASTENESS +CHASTISE +CHASTISED +CHASTISER +CHASTISERS +CHASTISES +CHASTISING +CHASTITY +CHAT +CHATEAU +CHATEAUS +CHATHAM +CHATTAHOOCHEE +CHATTANOOGA +CHATTEL +CHATTER +CHATTERED +CHATTERER +CHATTERING +CHATTERS +CHATTING +CHATTY +CHAUCER +CHAUFFEUR +CHAUFFEURED +CHAUNCEY +CHAUTAUQUA +CHEAP +CHEAPEN +CHEAPENED +CHEAPENING +CHEAPENS +CHEAPER +CHEAPEST +CHEAPLY +CHEAPNESS +CHEAT +CHEATED +CHEATER +CHEATERS +CHEATING +CHEATS +CHECK +CHECKABLE +CHECKBOOK +CHECKBOOKS +CHECKED +CHECKER +CHECKERBOARD +CHECKERBOARDED +CHECKERBOARDING +CHECKERS +CHECKING +CHECKLIST +CHECKOUT +CHECKPOINT +CHECKPOINTS +CHECKS +CHECKSUM +CHECKSUMMED +CHECKSUMMING +CHECKSUMS +CHECKUP +CHEEK +CHEEKBONE +CHEEKS +CHEEKY +CHEER +CHEERED +CHEERER +CHEERFUL +CHEERFULLY +CHEERFULNESS +CHEERILY +CHEERINESS +CHEERING +CHEERLEADER +CHEERLESS +CHEERLESSLY +CHEERLESSNESS +CHEERS +CHEERY +CHEESE +CHEESECLOTH +CHEESES +CHEESY +CHEETAH +CHEF +CHEFS +CHEKHOV +CHELSEA +CHEMICAL +CHEMICALLY +CHEMICALS +CHEMISE +CHEMIST +CHEMISTRIES +CHEMISTRY +CHEMISTS +CHEN +CHENEY +CHENG +CHERISH +CHERISHED +CHERISHES +CHERISHING +CHERITON +CHEROKEE +CHEROKEES +CHERRIES +CHERRY +CHERUB +CHERUBIM +CHERUBS +CHERYL +CHESAPEAKE +CHESHIRE +CHESS +CHEST +CHESTER +CHESTERFIELD +CHESTERTON +CHESTNUT +CHESTNUTS +CHESTS +CHEVROLET +CHEVY +CHEW +CHEWED +CHEWER +CHEWERS +CHEWING +CHEWS +CHEYENNE +CHEYENNES +CHIANG +CHIC +CHICAGO +CHICAGOAN +CHICAGOANS +CHICANA +CHICANAS +CHICANERY +CHICANO +CHICANOS +CHICK +CHICKADEE +CHICKADEES +CHICKASAWS +CHICKEN +CHICKENS +CHICKS +CHIDE +CHIDED +CHIDES +CHIDING +CHIEF +CHIEFLY +CHIEFS +CHIEFTAIN +CHIEFTAINS +CHIFFON +CHILD +CHILDBIRTH +CHILDHOOD +CHILDISH +CHILDISHLY +CHILDISHNESS +CHILDLIKE +CHILDREN +CHILE +CHILEAN +CHILES +CHILI +CHILL +CHILLED +CHILLER +CHILLERS +CHILLIER +CHILLINESS +CHILLING +CHILLINGLY +CHILLS +CHILLY +CHIME +CHIMERA +CHIMES +CHIMNEY +CHIMNEYS +CHIMPANZEE +CHIN +CHINA +CHINAMAN +CHINAMEN +CHINAS +CHINATOWN +CHINESE +CHING +CHINK +CHINKED +CHINKS +CHINNED +CHINNER +CHINNERS +CHINNING +CHINOOK +CHINS +CHINTZ +CHIP +CHIPMUNK +CHIPMUNKS +CHIPPENDALE +CHIPPEWA +CHIPS +CHIROPRACTOR +CHIRP +CHIRPED +CHIRPING +CHIRPS +CHISEL +CHISELED +CHISELER +CHISELS +CHISHOLM +CHIT +CHIVALROUS +CHIVALROUSLY +CHIVALROUSNESS +CHIVALRY +CHLOE +CHLORINE +CHLOROFORM +CHLOROPHYLL +CHLOROPLAST +CHLOROPLASTS +CHOCK +CHOCKS +CHOCOLATE +CHOCOLATES +CHOCTAW +CHOCTAWS +CHOICE +CHOICES +CHOICEST +CHOIR +CHOIRS +CHOKE +CHOKED +CHOKER +CHOKERS +CHOKES +CHOKING +CHOLERA +CHOMSKY +CHOOSE +CHOOSER +CHOOSERS +CHOOSES +CHOOSING +CHOP +CHOPIN +CHOPPED +CHOPPER +CHOPPERS +CHOPPING +CHOPPY +CHOPS +CHORAL +CHORD +CHORDATE +CHORDED +CHORDING +CHORDS +CHORE +CHOREOGRAPH +CHOREOGRAPHY +CHORES +CHORING +CHORTLE +CHORUS +CHORUSED +CHORUSES +CHOSE +CHOSEN +CHOU +CHOWDER +CHRIS +CHRIST +CHRISTEN +CHRISTENDOM +CHRISTENED +CHRISTENING +CHRISTENS +CHRISTENSEN +CHRISTENSON +CHRISTIAN +CHRISTIANA +CHRISTIANITY +CHRISTIANIZATION +CHRISTIANIZATIONS +CHRISTIANIZE +CHRISTIANIZER +CHRISTIANIZERS +CHRISTIANIZES +CHRISTIANIZING +CHRISTIANS +CHRISTIANSEN +CHRISTIANSON +CHRISTIE +CHRISTINA +CHRISTINE +CHRISTLIKE +CHRISTMAS +CHRISTOFFEL +CHRISTOPH +CHRISTOPHER +CHRISTY +CHROMATOGRAM +CHROMATOGRAPH +CHROMATOGRAPHY +CHROME +CHROMIUM +CHROMOSPHERE +CHRONIC +CHRONICLE +CHRONICLED +CHRONICLER +CHRONICLERS +CHRONICLES +CHRONOGRAPH +CHRONOGRAPHY +CHRONOLOGICAL +CHRONOLOGICALLY +CHRONOLOGIES +CHRONOLOGY +CHRYSANTHEMUM +CHRYSLER +CHUBBIER +CHUBBIEST +CHUBBINESS +CHUBBY +CHUCK +CHUCKLE +CHUCKLED +CHUCKLES +CHUCKS +CHUM +CHUNGKING +CHUNK +CHUNKS +CHUNKY +CHURCH +CHURCHES +CHURCHGOER +CHURCHGOING +CHURCHILL +CHURCHILLIAN +CHURCHLY +CHURCHMAN +CHURCHMEN +CHURCHWOMAN +CHURCHWOMEN +CHURCHYARD +CHURCHYARDS +CHURN +CHURNED +CHURNING +CHURNS +CHUTE +CHUTES +CHUTZPAH +CICADA +CICERO +CICERONIAN +CICERONIANIZE +CICERONIANIZES +CIDER +CIGAR +CIGARETTE +CIGARETTES +CIGARS +CILIA +CINCINNATI +CINDER +CINDERELLA +CINDERS +CINDY +CINEMA +CINEMATIC +CINERAMA +CINNAMON +CIPHER +CIPHERS +CIPHERTEXT +CIPHERTEXTS +CIRCA +CIRCE +CIRCLE +CIRCLED +CIRCLES +CIRCLET +CIRCLING +CIRCUIT +CIRCUITOUS +CIRCUITOUSLY +CIRCUITRY +CIRCUITS +CIRCULANT +CIRCULAR +CIRCULARITY +CIRCULARLY +CIRCULATE +CIRCULATED +CIRCULATES +CIRCULATING +CIRCULATION +CIRCUMCISE +CIRCUMCISION +CIRCUMFERENCE +CIRCUMFLEX +CIRCUMLOCUTION +CIRCUMLOCUTIONS +CIRCUMNAVIGATE +CIRCUMNAVIGATED +CIRCUMNAVIGATES +CIRCUMPOLAR +CIRCUMSCRIBE +CIRCUMSCRIBED +CIRCUMSCRIBING +CIRCUMSCRIPTION +CIRCUMSPECT +CIRCUMSPECTION +CIRCUMSPECTLY +CIRCUMSTANCE +CIRCUMSTANCED +CIRCUMSTANCES +CIRCUMSTANTIAL +CIRCUMSTANTIALLY +CIRCUMVENT +CIRCUMVENTABLE +CIRCUMVENTED +CIRCUMVENTING +CIRCUMVENTS +CIRCUS +CIRCUSES +CISTERN +CISTERNS +CITADEL +CITADELS +CITATION +CITATIONS +CITE +CITED +CITES +CITIES +CITING +CITIZEN +CITIZENS +CITIZENSHIP +CITROEN +CITRUS +CITY +CITYSCAPE +CITYWIDE +CIVET +CIVIC +CIVICS +CIVIL +CIVILIAN +CIVILIANS +CIVILITY +CIVILIZATION +CIVILIZATIONS +CIVILIZE +CIVILIZED +CIVILIZES +CIVILIZING +CIVILLY +CLAD +CLADDING +CLAIM +CLAIMABLE +CLAIMANT +CLAIMANTS +CLAIMED +CLAIMING +CLAIMS +CLAIRE +CLAIRVOYANT +CLAIRVOYANTLY +CLAM +CLAMBER +CLAMBERED +CLAMBERING +CLAMBERS +CLAMOR +CLAMORED +CLAMORING +CLAMOROUS +CLAMORS +CLAMP +CLAMPED +CLAMPING +CLAMPS +CLAMS +CLAN +CLANDESTINE +CLANG +CLANGED +CLANGING +CLANGS +CLANK +CLANNISH +CLAP +CLAPBOARD +CLAPEYRON +CLAPPING +CLAPS +CLARA +CLARE +CLAREMONT +CLARENCE +CLARENDON +CLARIFICATION +CLARIFICATIONS +CLARIFIED +CLARIFIES +CLARIFY +CLARIFYING +CLARINET +CLARITY +CLARK +CLARKE +CLARRIDGE +CLASH +CLASHED +CLASHES +CLASHING +CLASP +CLASPED +CLASPING +CLASPS +CLASS +CLASSED +CLASSES +CLASSIC +CLASSICAL +CLASSICALLY +CLASSICS +CLASSIFIABLE +CLASSIFICATION +CLASSIFICATIONS +CLASSIFIED +CLASSIFIER +CLASSIFIERS +CLASSIFIES +CLASSIFY +CLASSIFYING +CLASSMATE +CLASSMATES +CLASSROOM +CLASSROOMS +CLASSY +CLATTER +CLATTERED +CLATTERING +CLAUDE +CLAUDIA +CLAUDIO +CLAUS +CLAUSE +CLAUSEN +CLAUSES +CLAUSIUS +CLAUSTROPHOBIA +CLAUSTROPHOBIC +CLAW +CLAWED +CLAWING +CLAWS +CLAY +CLAYS +CLAYTON +CLEAN +CLEANED +CLEANER +CLEANERS +CLEANEST +CLEANING +CLEANLINESS +CLEANLY +CLEANNESS +CLEANS +CLEANSE +CLEANSED +CLEANSER +CLEANSERS +CLEANSES +CLEANSING +CLEANUP +CLEAR +CLEARANCE +CLEARANCES +CLEARED +CLEARER +CLEAREST +CLEARING +CLEARINGS +CLEARLY +CLEARNESS +CLEARS +CLEARWATER +CLEAVAGE +CLEAVE +CLEAVED +CLEAVER +CLEAVERS +CLEAVES +CLEAVING +CLEFT +CLEFTS +CLEMENCY +CLEMENS +CLEMENT +CLEMENTE +CLEMSON +CLENCH +CLENCHED +CLENCHES +CLERGY +CLERGYMAN +CLERGYMEN +CLERICAL +CLERK +CLERKED +CLERKING +CLERKS +CLEVELAND +CLEVER +CLEVERER +CLEVEREST +CLEVERLY +CLEVERNESS +CLICHE +CLICHES +CLICK +CLICKED +CLICKING +CLICKS +CLIENT +CLIENTELE +CLIENTS +CLIFF +CLIFFORD +CLIFFS +CLIFTON +CLIMATE +CLIMATES +CLIMATIC +CLIMATICALLY +CLIMATOLOGY +CLIMAX +CLIMAXED +CLIMAXES +CLIMB +CLIMBED +CLIMBER +CLIMBERS +CLIMBING +CLIMBS +CLIME +CLIMES +CLINCH +CLINCHED +CLINCHER +CLINCHES +CLING +CLINGING +CLINGS +CLINIC +CLINICAL +CLINICALLY +CLINICIAN +CLINICS +CLINK +CLINKED +CLINKER +CLINT +CLINTON +CLIO +CLIP +CLIPBOARD +CLIPPED +CLIPPER +CLIPPERS +CLIPPING +CLIPPINGS +CLIPS +CLIQUE +CLIQUES +CLITORIS +CLIVE +CLOAK +CLOAKROOM +CLOAKS +CLOBBER +CLOBBERED +CLOBBERING +CLOBBERS +CLOCK +CLOCKED +CLOCKER +CLOCKERS +CLOCKING +CLOCKINGS +CLOCKS +CLOCKWATCHER +CLOCKWISE +CLOCKWORK +CLOD +CLODS +CLOG +CLOGGED +CLOGGING +CLOGS +CLOISTER +CLOISTERS +CLONE +CLONED +CLONES +CLONING +CLOSE +CLOSED +CLOSELY +CLOSENESS +CLOSENESSES +CLOSER +CLOSERS +CLOSES +CLOSEST +CLOSET +CLOSETED +CLOSETS +CLOSEUP +CLOSING +CLOSURE +CLOSURES +CLOT +CLOTH +CLOTHE +CLOTHED +CLOTHES +CLOTHESHORSE +CLOTHESLINE +CLOTHING +CLOTHO +CLOTTING +CLOTURE +CLOUD +CLOUDBURST +CLOUDED +CLOUDIER +CLOUDIEST +CLOUDINESS +CLOUDING +CLOUDLESS +CLOUDS +CLOUDY +CLOUT +CLOVE +CLOVER +CLOVES +CLOWN +CLOWNING +CLOWNS +CLUB +CLUBBED +CLUBBING +CLUBHOUSE +CLUBROOM +CLUBS +CLUCK +CLUCKED +CLUCKING +CLUCKS +CLUE +CLUES +CLUJ +CLUMP +CLUMPED +CLUMPING +CLUMPS +CLUMSILY +CLUMSINESS +CLUMSY +CLUNG +CLUSTER +CLUSTERED +CLUSTERING +CLUSTERINGS +CLUSTERS +CLUTCH +CLUTCHED +CLUTCHES +CLUTCHING +CLUTTER +CLUTTERED +CLUTTERING +CLUTTERS +CLYDE +CLYTEMNESTRA +COACH +COACHED +COACHER +COACHES +COACHING +COACHMAN +COACHMEN +COAGULATE +COAL +COALESCE +COALESCED +COALESCES +COALESCING +COALITION +COALS +COARSE +COARSELY +COARSEN +COARSENED +COARSENESS +COARSER +COARSEST +COAST +COASTAL +COASTED +COASTER +COASTERS +COASTING +COASTLINE +COASTS +COAT +COATED +COATES +COATING +COATINGS +COATS +COATTAIL +COAUTHOR +COAX +COAXED +COAXER +COAXES +COAXIAL +COAXING +COBALT +COBB +COBBLE +COBBLER +COBBLERS +COBBLESTONE +COBOL +COBOL +COBRA +COBWEB +COBWEBS +COCA +COCAINE +COCHISE +COCHRAN +COCHRANE +COCK +COCKED +COCKING +COCKPIT +COCKROACH +COCKS +COCKTAIL +COCKTAILS +COCKY +COCO +COCOA +COCONUT +COCONUTS +COCOON +COCOONS +COD +CODDINGTON +CODDLE +CODE +CODED +CODEINE +CODER +CODERS +CODES +CODEWORD +CODEWORDS +CODFISH +CODICIL +CODIFICATION +CODIFICATIONS +CODIFIED +CODIFIER +CODIFIERS +CODIFIES +CODIFY +CODIFYING +CODING +CODINGS +CODPIECE +CODY +COED +COEDITOR +COEDUCATION +COEFFICIENT +COEFFICIENTS +COEQUAL +COERCE +COERCED +COERCES +COERCIBLE +COERCING +COERCION +COERCIVE +COEXIST +COEXISTED +COEXISTENCE +COEXISTING +COEXISTS +COFACTOR +COFFEE +COFFEECUP +COFFEEPOT +COFFEES +COFFER +COFFERS +COFFEY +COFFIN +COFFINS +COFFMAN +COG +COGENT +COGENTLY +COGITATE +COGITATED +COGITATES +COGITATING +COGITATION +COGNAC +COGNITION +COGNITIVE +COGNITIVELY +COGNIZANCE +COGNIZANT +COGS +COHABITATION +COHABITATIONS +COHEN +COHERE +COHERED +COHERENCE +COHERENT +COHERENTLY +COHERES +COHERING +COHESION +COHESIVE +COHESIVELY +COHESIVENESS +COHN +COHORT +COIL +COILED +COILING +COILS +COIN +COINAGE +COINCIDE +COINCIDED +COINCIDENCE +COINCIDENCES +COINCIDENT +COINCIDENTAL +COINCIDES +COINCIDING +COINED +COINER +COINING +COINS +COKE +COKES +COLANDER +COLBY +COLD +COLDER +COLDEST +COLDLY +COLDNESS +COLDS +COLE +COLEMAN +COLERIDGE +COLETTE +COLGATE +COLICKY +COLIFORM +COLISEUM +COLLABORATE +COLLABORATED +COLLABORATES +COLLABORATING +COLLABORATION +COLLABORATIONS +COLLABORATIVE +COLLABORATOR +COLLABORATORS +COLLAGEN +COLLAPSE +COLLAPSED +COLLAPSES +COLLAPSIBLE +COLLAPSING +COLLAR +COLLARBONE +COLLARED +COLLARING +COLLARS +COLLATE +COLLATERAL +COLLEAGUE +COLLEAGUES +COLLECT +COLLECTED +COLLECTIBLE +COLLECTING +COLLECTION +COLLECTIONS +COLLECTIVE +COLLECTIVELY +COLLECTIVES +COLLECTOR +COLLECTORS +COLLECTS +COLLEGE +COLLEGES +COLLEGIAN +COLLEGIATE +COLLIDE +COLLIDED +COLLIDES +COLLIDING +COLLIE +COLLIER +COLLIES +COLLINS +COLLISION +COLLISIONS +COLLOIDAL +COLLOQUIA +COLLOQUIAL +COLLOQUIUM +COLLOQUY +COLLUSION +COLOGNE +COLOMBIA +COLOMBIAN +COLOMBIANS +COLOMBO +COLON +COLONEL +COLONELS +COLONIAL +COLONIALLY +COLONIALS +COLONIES +COLONIST +COLONISTS +COLONIZATION +COLONIZE +COLONIZED +COLONIZER +COLONIZERS +COLONIZES +COLONIZING +COLONS +COLONY +COLOR +COLORADO +COLORED +COLORER +COLORERS +COLORFUL +COLORING +COLORINGS +COLORLESS +COLORS +COLOSSAL +COLOSSEUM +COLT +COLTS +COLUMBIA +COLUMBIAN +COLUMBUS +COLUMN +COLUMNIZE +COLUMNIZED +COLUMNIZES +COLUMNIZING +COLUMNS +COMANCHE +COMB +COMBAT +COMBATANT +COMBATANTS +COMBATED +COMBATING +COMBATIVE +COMBATS +COMBED +COMBER +COMBERS +COMBINATION +COMBINATIONAL +COMBINATIONS +COMBINATOR +COMBINATORIAL +COMBINATORIALLY +COMBINATORIC +COMBINATORICS +COMBINATORS +COMBINE +COMBINED +COMBINES +COMBING +COMBINGS +COMBINING +COMBS +COMBUSTIBLE +COMBUSTION +COMDEX +COME +COMEBACK +COMEDIAN +COMEDIANS +COMEDIC +COMEDIES +COMEDY +COMELINESS +COMELY +COMER +COMERS +COMES +COMESTIBLE +COMET +COMETARY +COMETS +COMFORT +COMFORTABILITIES +COMFORTABILITY +COMFORTABLE +COMFORTABLY +COMFORTED +COMFORTER +COMFORTERS +COMFORTING +COMFORTINGLY +COMFORTS +COMIC +COMICAL +COMICALLY +COMICS +COMINFORM +COMING +COMINGS +COMMA +COMMAND +COMMANDANT +COMMANDANTS +COMMANDED +COMMANDEER +COMMANDER +COMMANDERS +COMMANDING +COMMANDINGLY +COMMANDMENT +COMMANDMENTS +COMMANDO +COMMANDS +COMMAS +COMMEMORATE +COMMEMORATED +COMMEMORATES +COMMEMORATING +COMMEMORATION +COMMEMORATIVE +COMMENCE +COMMENCED +COMMENCEMENT +COMMENCEMENTS +COMMENCES +COMMENCING +COMMEND +COMMENDATION +COMMENDATIONS +COMMENDED +COMMENDING +COMMENDS +COMMENSURATE +COMMENT +COMMENTARIES +COMMENTARY +COMMENTATOR +COMMENTATORS +COMMENTED +COMMENTING +COMMENTS +COMMERCE +COMMERCIAL +COMMERCIALLY +COMMERCIALNESS +COMMERCIALS +COMMISSION +COMMISSIONED +COMMISSIONER +COMMISSIONERS +COMMISSIONING +COMMISSIONS +COMMIT +COMMITMENT +COMMITMENTS +COMMITS +COMMITTED +COMMITTEE +COMMITTEEMAN +COMMITTEEMEN +COMMITTEES +COMMITTEEWOMAN +COMMITTEEWOMEN +COMMITTING +COMMODITIES +COMMODITY +COMMODORE +COMMODORES +COMMON +COMMONALITIES +COMMONALITY +COMMONER +COMMONERS +COMMONEST +COMMONLY +COMMONNESS +COMMONPLACE +COMMONPLACES +COMMONS +COMMONWEALTH +COMMONWEALTHS +COMMOTION +COMMUNAL +COMMUNALLY +COMMUNE +COMMUNES +COMMUNICANT +COMMUNICANTS +COMMUNICATE +COMMUNICATED +COMMUNICATES +COMMUNICATING +COMMUNICATION +COMMUNICATIONS +COMMUNICATIVE +COMMUNICATOR +COMMUNICATORS +COMMUNION +COMMUNIST +COMMUNISTS +COMMUNITIES +COMMUNITY +COMMUTATIVE +COMMUTATIVITY +COMMUTE +COMMUTED +COMMUTER +COMMUTERS +COMMUTES +COMMUTING +COMPACT +COMPACTED +COMPACTER +COMPACTEST +COMPACTING +COMPACTION +COMPACTLY +COMPACTNESS +COMPACTOR +COMPACTORS +COMPACTS +COMPANIES +COMPANION +COMPANIONABLE +COMPANIONS +COMPANIONSHIP +COMPANY +COMPARABILITY +COMPARABLE +COMPARABLY +COMPARATIVE +COMPARATIVELY +COMPARATIVES +COMPARATOR +COMPARATORS +COMPARE +COMPARED +COMPARES +COMPARING +COMPARISON +COMPARISONS +COMPARTMENT +COMPARTMENTALIZE +COMPARTMENTALIZED +COMPARTMENTALIZES +COMPARTMENTALIZING +COMPARTMENTED +COMPARTMENTS +COMPASS +COMPASSION +COMPASSIONATE +COMPASSIONATELY +COMPATIBILITIES +COMPATIBILITY +COMPATIBLE +COMPATIBLES +COMPATIBLY +COMPEL +COMPELLED +COMPELLING +COMPELLINGLY +COMPELS +COMPENDIUM +COMPENSATE +COMPENSATED +COMPENSATES +COMPENSATING +COMPENSATION +COMPENSATIONS +COMPENSATORY +COMPETE +COMPETED +COMPETENCE +COMPETENCY +COMPETENT +COMPETENTLY +COMPETES +COMPETING +COMPETITION +COMPETITIONS +COMPETITIVE +COMPETITIVELY +COMPETITOR +COMPETITORS +COMPILATION +COMPILATIONS +COMPILE +COMPILED +COMPILER +COMPILERS +COMPILES +COMPILING +COMPLACENCY +COMPLAIN +COMPLAINED +COMPLAINER +COMPLAINERS +COMPLAINING +COMPLAINS +COMPLAINT +COMPLAINTS +COMPLEMENT +COMPLEMENTARY +COMPLEMENTED +COMPLEMENTER +COMPLEMENTERS +COMPLEMENTING +COMPLEMENTS +COMPLETE +COMPLETED +COMPLETELY +COMPLETENESS +COMPLETES +COMPLETING +COMPLETION +COMPLETIONS +COMPLEX +COMPLEXES +COMPLEXION +COMPLEXITIES +COMPLEXITY +COMPLEXLY +COMPLIANCE +COMPLIANT +COMPLICATE +COMPLICATED +COMPLICATES +COMPLICATING +COMPLICATION +COMPLICATIONS +COMPLICATOR +COMPLICATORS +COMPLICITY +COMPLIED +COMPLIMENT +COMPLIMENTARY +COMPLIMENTED +COMPLIMENTER +COMPLIMENTERS +COMPLIMENTING +COMPLIMENTS +COMPLY +COMPLYING +COMPONENT +COMPONENTRY +COMPONENTS +COMPONENTWISE +COMPOSE +COMPOSED +COMPOSEDLY +COMPOSER +COMPOSERS +COMPOSES +COMPOSING +COMPOSITE +COMPOSITES +COMPOSITION +COMPOSITIONAL +COMPOSITIONS +COMPOST +COMPOSURE +COMPOUND +COMPOUNDED +COMPOUNDING +COMPOUNDS +COMPREHEND +COMPREHENDED +COMPREHENDING +COMPREHENDS +COMPREHENSIBILITY +COMPREHENSIBLE +COMPREHENSION +COMPREHENSIVE +COMPREHENSIVELY +COMPRESS +COMPRESSED +COMPRESSES +COMPRESSIBLE +COMPRESSING +COMPRESSION +COMPRESSIVE +COMPRESSOR +COMPRISE +COMPRISED +COMPRISES +COMPRISING +COMPROMISE +COMPROMISED +COMPROMISER +COMPROMISERS +COMPROMISES +COMPROMISING +COMPROMISINGLY +COMPTON +COMPTROLLER +COMPTROLLERS +COMPULSION +COMPULSIONS +COMPULSIVE +COMPULSORY +COMPUNCTION +COMPUSERVE +COMPUTABILITY +COMPUTABLE +COMPUTATION +COMPUTATIONAL +COMPUTATIONALLY +COMPUTATIONS +COMPUTE +COMPUTED +COMPUTER +COMPUTERIZE +COMPUTERIZED +COMPUTERIZES +COMPUTERIZING +COMPUTERS +COMPUTES +COMPUTING +COMRADE +COMRADELY +COMRADES +COMRADESHIP +CON +CONAKRY +CONANT +CONCATENATE +CONCATENATED +CONCATENATES +CONCATENATING +CONCATENATION +CONCATENATIONS +CONCAVE +CONCEAL +CONCEALED +CONCEALER +CONCEALERS +CONCEALING +CONCEALMENT +CONCEALS +CONCEDE +CONCEDED +CONCEDES +CONCEDING +CONCEIT +CONCEITED +CONCEITS +CONCEIVABLE +CONCEIVABLY +CONCEIVE +CONCEIVED +CONCEIVES +CONCEIVING +CONCENTRATE +CONCENTRATED +CONCENTRATES +CONCENTRATING +CONCENTRATION +CONCENTRATIONS +CONCENTRATOR +CONCENTRATORS +CONCENTRIC +CONCEPT +CONCEPTION +CONCEPTIONS +CONCEPTS +CONCEPTUAL +CONCEPTUALIZATION +CONCEPTUALIZATIONS +CONCEPTUALIZE +CONCEPTUALIZED +CONCEPTUALIZES +CONCEPTUALIZING +CONCEPTUALLY +CONCERN +CONCERNED +CONCERNEDLY +CONCERNING +CONCERNS +CONCERT +CONCERTED +CONCERTMASTER +CONCERTO +CONCERTS +CONCESSION +CONCESSIONS +CONCILIATE +CONCILIATORY +CONCISE +CONCISELY +CONCISENESS +CONCLAVE +CONCLUDE +CONCLUDED +CONCLUDES +CONCLUDING +CONCLUSION +CONCLUSIONS +CONCLUSIVE +CONCLUSIVELY +CONCOCT +CONCOMITANT +CONCORD +CONCORDANT +CONCORDE +CONCORDIA +CONCOURSE +CONCRETE +CONCRETELY +CONCRETENESS +CONCRETES +CONCRETION +CONCUBINE +CONCUR +CONCURRED +CONCURRENCE +CONCURRENCIES +CONCURRENCY +CONCURRENT +CONCURRENTLY +CONCURRING +CONCURS +CONCUSSION +CONDEMN +CONDEMNATION +CONDEMNATIONS +CONDEMNED +CONDEMNER +CONDEMNERS +CONDEMNING +CONDEMNS +CONDENSATION +CONDENSE +CONDENSED +CONDENSER +CONDENSES +CONDENSING +CONDESCEND +CONDESCENDING +CONDITION +CONDITIONAL +CONDITIONALLY +CONDITIONALS +CONDITIONED +CONDITIONER +CONDITIONERS +CONDITIONING +CONDITIONS +CONDOM +CONDONE +CONDONED +CONDONES +CONDONING +CONDUCE +CONDUCIVE +CONDUCIVENESS +CONDUCT +CONDUCTANCE +CONDUCTED +CONDUCTING +CONDUCTION +CONDUCTIVE +CONDUCTIVITY +CONDUCTOR +CONDUCTORS +CONDUCTS +CONDUIT +CONE +CONES +CONESTOGA +CONFECTIONERY +CONFEDERACY +CONFEDERATE +CONFEDERATES +CONFEDERATION +CONFEDERATIONS +CONFER +CONFEREE +CONFERENCE +CONFERENCES +CONFERRED +CONFERRER +CONFERRERS +CONFERRING +CONFERS +CONFESS +CONFESSED +CONFESSES +CONFESSING +CONFESSION +CONFESSIONS +CONFESSOR +CONFESSORS +CONFIDANT +CONFIDANTS +CONFIDE +CONFIDED +CONFIDENCE +CONFIDENCES +CONFIDENT +CONFIDENTIAL +CONFIDENTIALITY +CONFIDENTIALLY +CONFIDENTLY +CONFIDES +CONFIDING +CONFIDINGLY +CONFIGURABLE +CONFIGURATION +CONFIGURATIONS +CONFIGURE +CONFIGURED +CONFIGURES +CONFIGURING +CONFINE +CONFINED +CONFINEMENT +CONFINEMENTS +CONFINER +CONFINES +CONFINING +CONFIRM +CONFIRMATION +CONFIRMATIONS +CONFIRMATORY +CONFIRMED +CONFIRMING +CONFIRMS +CONFISCATE +CONFISCATED +CONFISCATES +CONFISCATING +CONFISCATION +CONFISCATIONS +CONFLAGRATION +CONFLICT +CONFLICTED +CONFLICTING +CONFLICTS +CONFLUENT +CONFOCAL +CONFORM +CONFORMAL +CONFORMANCE +CONFORMED +CONFORMING +CONFORMITY +CONFORMS +CONFOUND +CONFOUNDED +CONFOUNDING +CONFOUNDS +CONFRONT +CONFRONTATION +CONFRONTATIONS +CONFRONTED +CONFRONTER +CONFRONTERS +CONFRONTING +CONFRONTS +CONFUCIAN +CONFUCIANISM +CONFUCIUS +CONFUSE +CONFUSED +CONFUSER +CONFUSERS +CONFUSES +CONFUSING +CONFUSINGLY +CONFUSION +CONFUSIONS +CONGENIAL +CONGENIALLY +CONGENITAL +CONGEST +CONGESTED +CONGESTION +CONGESTIVE +CONGLOMERATE +CONGO +CONGOLESE +CONGRATULATE +CONGRATULATED +CONGRATULATION +CONGRATULATIONS +CONGRATULATORY +CONGREGATE +CONGREGATED +CONGREGATES +CONGREGATING +CONGREGATION +CONGREGATIONS +CONGRESS +CONGRESSES +CONGRESSIONAL +CONGRESSIONALLY +CONGRESSMAN +CONGRESSMEN +CONGRESSWOMAN +CONGRESSWOMEN +CONGRUENCE +CONGRUENT +CONIC +CONIFER +CONIFEROUS +CONJECTURE +CONJECTURED +CONJECTURES +CONJECTURING +CONJOINED +CONJUGAL +CONJUGATE +CONJUNCT +CONJUNCTED +CONJUNCTION +CONJUNCTIONS +CONJUNCTIVE +CONJUNCTIVELY +CONJUNCTS +CONJUNCTURE +CONJURE +CONJURED +CONJURER +CONJURES +CONJURING +CONKLIN +CONLEY +CONNALLY +CONNECT +CONNECTED +CONNECTEDNESS +CONNECTICUT +CONNECTING +CONNECTION +CONNECTIONLESS +CONNECTIONS +CONNECTIVE +CONNECTIVES +CONNECTIVITY +CONNECTOR +CONNECTORS +CONNECTS +CONNELLY +CONNER +CONNIE +CONNIVANCE +CONNIVE +CONNOISSEUR +CONNOISSEURS +CONNORS +CONNOTATION +CONNOTATIVE +CONNOTE +CONNOTED +CONNOTES +CONNOTING +CONNUBIAL +CONQUER +CONQUERABLE +CONQUERED +CONQUERER +CONQUERERS +CONQUERING +CONQUEROR +CONQUERORS +CONQUERS +CONQUEST +CONQUESTS +CONRAD +CONRAIL +CONSCIENCE +CONSCIENCES +CONSCIENTIOUS +CONSCIENTIOUSLY +CONSCIOUS +CONSCIOUSLY +CONSCIOUSNESS +CONSCRIPT +CONSCRIPTION +CONSECRATE +CONSECRATION +CONSECUTIVE +CONSECUTIVELY +CONSENSUAL +CONSENSUS +CONSENT +CONSENTED +CONSENTER +CONSENTERS +CONSENTING +CONSENTS +CONSEQUENCE +CONSEQUENCES +CONSEQUENT +CONSEQUENTIAL +CONSEQUENTIALITIES +CONSEQUENTIALITY +CONSEQUENTLY +CONSEQUENTS +CONSERVATION +CONSERVATIONIST +CONSERVATIONISTS +CONSERVATIONS +CONSERVATISM +CONSERVATIVE +CONSERVATIVELY +CONSERVATIVES +CONSERVATOR +CONSERVE +CONSERVED +CONSERVES +CONSERVING +CONSIDER +CONSIDERABLE +CONSIDERABLY +CONSIDERATE +CONSIDERATELY +CONSIDERATION +CONSIDERATIONS +CONSIDERED +CONSIDERING +CONSIDERS +CONSIGN +CONSIGNED +CONSIGNING +CONSIGNS +CONSIST +CONSISTED +CONSISTENCY +CONSISTENT +CONSISTENTLY +CONSISTING +CONSISTS +CONSOLABLE +CONSOLATION +CONSOLATIONS +CONSOLE +CONSOLED +CONSOLER +CONSOLERS +CONSOLES +CONSOLIDATE +CONSOLIDATED +CONSOLIDATES +CONSOLIDATING +CONSOLIDATION +CONSOLING +CONSOLINGLY +CONSONANT +CONSONANTS +CONSORT +CONSORTED +CONSORTING +CONSORTIUM +CONSORTS +CONSPICUOUS +CONSPICUOUSLY +CONSPIRACIES +CONSPIRACY +CONSPIRATOR +CONSPIRATORS +CONSPIRE +CONSPIRED +CONSPIRES +CONSPIRING +CONSTABLE +CONSTABLES +CONSTANCE +CONSTANCY +CONSTANT +CONSTANTINE +CONSTANTINOPLE +CONSTANTLY +CONSTANTS +CONSTELLATION +CONSTELLATIONS +CONSTERNATION +CONSTITUENCIES +CONSTITUENCY +CONSTITUENT +CONSTITUENTS +CONSTITUTE +CONSTITUTED +CONSTITUTES +CONSTITUTING +CONSTITUTION +CONSTITUTIONAL +CONSTITUTIONALITY +CONSTITUTIONALLY +CONSTITUTIONS +CONSTITUTIVE +CONSTRAIN +CONSTRAINED +CONSTRAINING +CONSTRAINS +CONSTRAINT +CONSTRAINTS +CONSTRICT +CONSTRUCT +CONSTRUCTED +CONSTRUCTIBILITY +CONSTRUCTIBLE +CONSTRUCTING +CONSTRUCTION +CONSTRUCTIONS +CONSTRUCTIVE +CONSTRUCTIVELY +CONSTRUCTOR +CONSTRUCTORS +CONSTRUCTS +CONSTRUE +CONSTRUED +CONSTRUING +CONSUL +CONSULAR +CONSULATE +CONSULATES +CONSULS +CONSULT +CONSULTANT +CONSULTANTS +CONSULTATION +CONSULTATIONS +CONSULTATIVE +CONSULTED +CONSULTING +CONSULTS +CONSUMABLE +CONSUME +CONSUMED +CONSUMER +CONSUMERS +CONSUMES +CONSUMING +CONSUMMATE +CONSUMMATED +CONSUMMATELY +CONSUMMATION +CONSUMPTION +CONSUMPTIONS +CONSUMPTIVE +CONSUMPTIVELY +CONTACT +CONTACTED +CONTACTING +CONTACTS +CONTAGION +CONTAGIOUS +CONTAGIOUSLY +CONTAIN +CONTAINABLE +CONTAINED +CONTAINER +CONTAINERS +CONTAINING +CONTAINMENT +CONTAINMENTS +CONTAINS +CONTAMINATE +CONTAMINATED +CONTAMINATES +CONTAMINATING +CONTAMINATION +CONTEMPLATE +CONTEMPLATED +CONTEMPLATES +CONTEMPLATING +CONTEMPLATION +CONTEMPLATIONS +CONTEMPLATIVE +CONTEMPORARIES +CONTEMPORARINESS +CONTEMPORARY +CONTEMPT +CONTEMPTIBLE +CONTEMPTUOUS +CONTEMPTUOUSLY +CONTEND +CONTENDED +CONTENDER +CONTENDERS +CONTENDING +CONTENDS +CONTENT +CONTENTED +CONTENTING +CONTENTION +CONTENTIONS +CONTENTLY +CONTENTMENT +CONTENTS +CONTEST +CONTESTABLE +CONTESTANT +CONTESTED +CONTESTER +CONTESTERS +CONTESTING +CONTESTS +CONTEXT +CONTEXTS +CONTEXTUAL +CONTEXTUALLY +CONTIGUITY +CONTIGUOUS +CONTIGUOUSLY +CONTINENT +CONTINENTAL +CONTINENTALLY +CONTINENTS +CONTINGENCIES +CONTINGENCY +CONTINGENT +CONTINGENTS +CONTINUAL +CONTINUALLY +CONTINUANCE +CONTINUANCES +CONTINUATION +CONTINUATIONS +CONTINUE +CONTINUED +CONTINUES +CONTINUING +CONTINUITIES +CONTINUITY +CONTINUOUS +CONTINUOUSLY +CONTINUUM +CONTORTIONS +CONTOUR +CONTOURED +CONTOURING +CONTOURS +CONTRABAND +CONTRACEPTION +CONTRACEPTIVE +CONTRACT +CONTRACTED +CONTRACTING +CONTRACTION +CONTRACTIONS +CONTRACTOR +CONTRACTORS +CONTRACTS +CONTRACTUAL +CONTRACTUALLY +CONTRADICT +CONTRADICTED +CONTRADICTING +CONTRADICTION +CONTRADICTIONS +CONTRADICTORY +CONTRADICTS +CONTRADISTINCTION +CONTRADISTINCTIONS +CONTRAPOSITIVE +CONTRAPOSITIVES +CONTRAPTION +CONTRAPTIONS +CONTRARINESS +CONTRARY +CONTRAST +CONTRASTED +CONTRASTER +CONTRASTERS +CONTRASTING +CONTRASTINGLY +CONTRASTS +CONTRIBUTE +CONTRIBUTED +CONTRIBUTES +CONTRIBUTING +CONTRIBUTION +CONTRIBUTIONS +CONTRIBUTOR +CONTRIBUTORILY +CONTRIBUTORS +CONTRIBUTORY +CONTRITE +CONTRITION +CONTRIVANCE +CONTRIVANCES +CONTRIVE +CONTRIVED +CONTRIVER +CONTRIVES +CONTRIVING +CONTROL +CONTROLLABILITY +CONTROLLABLE +CONTROLLABLY +CONTROLLED +CONTROLLER +CONTROLLERS +CONTROLLING +CONTROLS +CONTROVERSIAL +CONTROVERSIES +CONTROVERSY +CONTROVERTIBLE +CONTUMACIOUS +CONTUMACY +CONUNDRUM +CONUNDRUMS +CONVAIR +CONVALESCENT +CONVECT +CONVENE +CONVENED +CONVENES +CONVENIENCE +CONVENIENCES +CONVENIENT +CONVENIENTLY +CONVENING +CONVENT +CONVENTION +CONVENTIONAL +CONVENTIONALLY +CONVENTIONS +CONVENTS +CONVERGE +CONVERGED +CONVERGENCE +CONVERGENT +CONVERGES +CONVERGING +CONVERSANT +CONVERSANTLY +CONVERSATION +CONVERSATIONAL +CONVERSATIONALLY +CONVERSATIONS +CONVERSE +CONVERSED +CONVERSELY +CONVERSES +CONVERSING +CONVERSION +CONVERSIONS +CONVERT +CONVERTED +CONVERTER +CONVERTERS +CONVERTIBILITY +CONVERTIBLE +CONVERTING +CONVERTS +CONVEX +CONVEY +CONVEYANCE +CONVEYANCES +CONVEYED +CONVEYER +CONVEYERS +CONVEYING +CONVEYOR +CONVEYS +CONVICT +CONVICTED +CONVICTING +CONVICTION +CONVICTIONS +CONVICTS +CONVINCE +CONVINCED +CONVINCER +CONVINCERS +CONVINCES +CONVINCING +CONVINCINGLY +CONVIVIAL +CONVOKE +CONVOLUTED +CONVOLUTION +CONVOY +CONVOYED +CONVOYING +CONVOYS +CONVULSE +CONVULSION +CONVULSIONS +CONWAY +COO +COOING +COOK +COOKBOOK +COOKE +COOKED +COOKERY +COOKIE +COOKIES +COOKING +COOKS +COOKY +COOL +COOLED +COOLER +COOLERS +COOLEST +COOLEY +COOLIDGE +COOLIE +COOLIES +COOLING +COOLLY +COOLNESS +COOLS +COON +COONS +COOP +COOPED +COOPER +COOPERATE +COOPERATED +COOPERATES +COOPERATING +COOPERATION +COOPERATIONS +COOPERATIVE +COOPERATIVELY +COOPERATIVES +COOPERATOR +COOPERATORS +COOPERS +COOPS +COORDINATE +COORDINATED +COORDINATES +COORDINATING +COORDINATION +COORDINATIONS +COORDINATOR +COORDINATORS +COORS +COP +COPE +COPED +COPELAND +COPENHAGEN +COPERNICAN +COPERNICUS +COPES +COPIED +COPIER +COPIERS +COPIES +COPING +COPINGS +COPIOUS +COPIOUSLY +COPIOUSNESS +COPLANAR +COPPER +COPPERFIELD +COPPERHEAD +COPPERS +COPRA +COPROCESSOR +COPS +COPSE +COPY +COPYING +COPYRIGHT +COPYRIGHTABLE +COPYRIGHTED +COPYRIGHTS +COPYWRITER +COQUETTE +CORAL +CORBETT +CORCORAN +CORD +CORDED +CORDER +CORDIAL +CORDIALITY +CORDIALLY +CORDS +CORE +CORED +CORER +CORERS +CORES +COREY +CORIANDER +CORING +CORINTH +CORINTHIAN +CORINTHIANIZE +CORINTHIANIZES +CORINTHIANS +CORIOLANUS +CORK +CORKED +CORKER +CORKERS +CORKING +CORKS +CORKSCREW +CORMORANT +CORN +CORNEA +CORNELIA +CORNELIAN +CORNELIUS +CORNELL +CORNER +CORNERED +CORNERS +CORNERSTONE +CORNERSTONES +CORNET +CORNFIELD +CORNFIELDS +CORNING +CORNISH +CORNMEAL +CORNS +CORNSTARCH +CORNUCOPIA +CORNWALL +CORNWALLIS +CORNY +COROLLARIES +COROLLARY +CORONADO +CORONARIES +CORONARY +CORONATION +CORONER +CORONET +CORONETS +COROUTINE +COROUTINES +CORPORAL +CORPORALS +CORPORATE +CORPORATELY +CORPORATION +CORPORATIONS +CORPS +CORPSE +CORPSES +CORPULENT +CORPUS +CORPUSCULAR +CORRAL +CORRECT +CORRECTABLE +CORRECTED +CORRECTING +CORRECTION +CORRECTIONS +CORRECTIVE +CORRECTIVELY +CORRECTIVES +CORRECTLY +CORRECTNESS +CORRECTOR +CORRECTS +CORRELATE +CORRELATED +CORRELATES +CORRELATING +CORRELATION +CORRELATIONS +CORRELATIVE +CORRESPOND +CORRESPONDED +CORRESPONDENCE +CORRESPONDENCES +CORRESPONDENT +CORRESPONDENTS +CORRESPONDING +CORRESPONDINGLY +CORRESPONDS +CORRIDOR +CORRIDORS +CORRIGENDA +CORRIGENDUM +CORRIGIBLE +CORROBORATE +CORROBORATED +CORROBORATES +CORROBORATING +CORROBORATION +CORROBORATIONS +CORROBORATIVE +CORRODE +CORROSION +CORROSIVE +CORRUGATE +CORRUPT +CORRUPTED +CORRUPTER +CORRUPTIBLE +CORRUPTING +CORRUPTION +CORRUPTIONS +CORRUPTS +CORSET +CORSICA +CORSICAN +CORTEX +CORTEZ +CORTICAL +CORTLAND +CORVALLIS +CORVUS +CORYDORAS +COSGROVE +COSINE +COSINES +COSMETIC +COSMETICS +COSMIC +COSMOLOGY +COSMOPOLITAN +COSMOS +COSPONSOR +COSSACK +COST +COSTA +COSTED +COSTELLO +COSTING +COSTLY +COSTS +COSTUME +COSTUMED +COSTUMER +COSTUMES +COSTUMING +COSY +COT +COTANGENT +COTILLION +COTS +COTTAGE +COTTAGER +COTTAGES +COTTON +COTTONMOUTH +COTTONS +COTTONSEED +COTTONWOOD +COTTRELL +COTYLEDON +COTYLEDONS +COUCH +COUCHED +COUCHES +COUCHING +COUGAR +COUGH +COUGHED +COUGHING +COUGHS +COULD +COULOMB +COULTER +COUNCIL +COUNCILLOR +COUNCILLORS +COUNCILMAN +COUNCILMEN +COUNCILS +COUNCILWOMAN +COUNCILWOMEN +COUNSEL +COUNSELED +COUNSELING +COUNSELLED +COUNSELLING +COUNSELLOR +COUNSELLORS +COUNSELOR +COUNSELORS +COUNSELS +COUNT +COUNTABLE +COUNTABLY +COUNTED +COUNTENANCE +COUNTER +COUNTERACT +COUNTERACTED +COUNTERACTING +COUNTERACTIVE +COUNTERARGUMENT +COUNTERATTACK +COUNTERBALANCE +COUNTERCLOCKWISE +COUNTERED +COUNTEREXAMPLE +COUNTEREXAMPLES +COUNTERFEIT +COUNTERFEITED +COUNTERFEITER +COUNTERFEITING +COUNTERFLOW +COUNTERING +COUNTERINTUITIVE +COUNTERMAN +COUNTERMEASURE +COUNTERMEASURES +COUNTERMEN +COUNTERPART +COUNTERPARTS +COUNTERPOINT +COUNTERPOINTING +COUNTERPOISE +COUNTERPRODUCTIVE +COUNTERPROPOSAL +COUNTERREVOLUTION +COUNTERS +COUNTERSINK +COUNTERSUNK +COUNTESS +COUNTIES +COUNTING +COUNTLESS +COUNTRIES +COUNTRY +COUNTRYMAN +COUNTRYMEN +COUNTRYSIDE +COUNTRYWIDE +COUNTS +COUNTY +COUNTYWIDE +COUPLE +COUPLED +COUPLER +COUPLERS +COUPLES +COUPLING +COUPLINGS +COUPON +COUPONS +COURAGE +COURAGEOUS +COURAGEOUSLY +COURIER +COURIERS +COURSE +COURSED +COURSER +COURSES +COURSING +COURT +COURTED +COURTEOUS +COURTEOUSLY +COURTER +COURTERS +COURTESAN +COURTESIES +COURTESY +COURTHOUSE +COURTHOUSES +COURTIER +COURTIERS +COURTING +COURTLY +COURTNEY +COURTROOM +COURTROOMS +COURTS +COURTSHIP +COURTYARD +COURTYARDS +COUSIN +COUSINS +COVALENT +COVARIANT +COVE +COVENANT +COVENANTS +COVENT +COVENTRY +COVER +COVERABLE +COVERAGE +COVERED +COVERING +COVERINGS +COVERLET +COVERLETS +COVERS +COVERT +COVERTLY +COVES +COVET +COVETED +COVETING +COVETOUS +COVETOUSNESS +COVETS +COW +COWAN +COWARD +COWARDICE +COWARDLY +COWBOY +COWBOYS +COWED +COWER +COWERED +COWERER +COWERERS +COWERING +COWERINGLY +COWERS +COWHERD +COWHIDE +COWING +COWL +COWLICK +COWLING +COWLS +COWORKER +COWS +COWSLIP +COWSLIPS +COYOTE +COYOTES +COYPU +COZIER +COZINESS +COZY +CRAB +CRABAPPLE +CRABS +CRACK +CRACKED +CRACKER +CRACKERS +CRACKING +CRACKLE +CRACKLED +CRACKLES +CRACKLING +CRACKPOT +CRACKS +CRADLE +CRADLED +CRADLES +CRAFT +CRAFTED +CRAFTER +CRAFTINESS +CRAFTING +CRAFTS +CRAFTSMAN +CRAFTSMEN +CRAFTSPEOPLE +CRAFTSPERSON +CRAFTY +CRAG +CRAGGY +CRAGS +CRAIG +CRAM +CRAMER +CRAMMING +CRAMP +CRAMPS +CRAMS +CRANBERRIES +CRANBERRY +CRANDALL +CRANE +CRANES +CRANFORD +CRANIA +CRANIUM +CRANK +CRANKCASE +CRANKED +CRANKIER +CRANKIEST +CRANKILY +CRANKING +CRANKS +CRANKSHAFT +CRANKY +CRANNY +CRANSTON +CRASH +CRASHED +CRASHER +CRASHERS +CRASHES +CRASHING +CRASS +CRATE +CRATER +CRATERS +CRATES +CRAVAT +CRAVATS +CRAVE +CRAVED +CRAVEN +CRAVES +CRAVING +CRAWFORD +CRAWL +CRAWLED +CRAWLER +CRAWLERS +CRAWLING +CRAWLS +CRAY +CRAYON +CRAYS +CRAZE +CRAZED +CRAZES +CRAZIER +CRAZIEST +CRAZILY +CRAZINESS +CRAZING +CRAZY +CREAK +CREAKED +CREAKING +CREAKS +CREAKY +CREAM +CREAMED +CREAMER +CREAMERS +CREAMERY +CREAMING +CREAMS +CREAMY +CREASE +CREASED +CREASES +CREASING +CREATE +CREATED +CREATES +CREATING +CREATION +CREATIONS +CREATIVE +CREATIVELY +CREATIVENESS +CREATIVITY +CREATOR +CREATORS +CREATURE +CREATURES +CREDENCE +CREDENTIAL +CREDIBILITY +CREDIBLE +CREDIBLY +CREDIT +CREDITABLE +CREDITABLY +CREDITED +CREDITING +CREDITOR +CREDITORS +CREDITS +CREDULITY +CREDULOUS +CREDULOUSNESS +CREE +CREED +CREEDS +CREEK +CREEKS +CREEP +CREEPER +CREEPERS +CREEPING +CREEPS +CREEPY +CREIGHTON +CREMATE +CREMATED +CREMATES +CREMATING +CREMATION +CREMATIONS +CREMATORY +CREOLE +CREON +CREPE +CREPT +CRESCENT +CRESCENTS +CREST +CRESTED +CRESTFALLEN +CRESTS +CRESTVIEW +CRETACEOUS +CRETACEOUSLY +CRETAN +CRETE +CRETIN +CREVICE +CREVICES +CREW +CREWCUT +CREWED +CREWING +CREWS +CRIB +CRIBS +CRICKET +CRICKETS +CRIED +CRIER +CRIERS +CRIES +CRIME +CRIMEA +CRIMEAN +CRIMES +CRIMINAL +CRIMINALLY +CRIMINALS +CRIMINATE +CRIMSON +CRIMSONING +CRINGE +CRINGED +CRINGES +CRINGING +CRIPPLE +CRIPPLED +CRIPPLES +CRIPPLING +CRISES +CRISIS +CRISP +CRISPIN +CRISPLY +CRISPNESS +CRISSCROSS +CRITERIA +CRITERION +CRITIC +CRITICAL +CRITICALLY +CRITICISM +CRITICISMS +CRITICIZE +CRITICIZED +CRITICIZES +CRITICIZING +CRITICS +CRITIQUE +CRITIQUES +CRITIQUING +CRITTER +CROAK +CROAKED +CROAKING +CROAKS +CROATIA +CROATIAN +CROCHET +CROCHETS +CROCK +CROCKERY +CROCKETT +CROCKS +CROCODILE +CROCUS +CROFT +CROIX +CROMWELL +CROMWELLIAN +CROOK +CROOKED +CROOKS +CROP +CROPPED +CROPPER +CROPPERS +CROPPING +CROPS +CROSBY +CROSS +CROSSABLE +CROSSBAR +CROSSBARS +CROSSED +CROSSER +CROSSERS +CROSSES +CROSSING +CROSSINGS +CROSSLY +CROSSOVER +CROSSOVERS +CROSSPOINT +CROSSROAD +CROSSTALK +CROSSWALK +CROSSWORD +CROSSWORDS +CROTCH +CROTCHETY +CROUCH +CROUCHED +CROUCHING +CROW +CROWD +CROWDED +CROWDER +CROWDING +CROWDS +CROWED +CROWING +CROWLEY +CROWN +CROWNED +CROWNING +CROWNS +CROWS +CROYDON +CRUCIAL +CRUCIALLY +CRUCIBLE +CRUCIFIED +CRUCIFIES +CRUCIFIX +CRUCIFIXION +CRUCIFY +CRUCIFYING +CRUD +CRUDDY +CRUDE +CRUDELY +CRUDENESS +CRUDER +CRUDEST +CRUEL +CRUELER +CRUELEST +CRUELLY +CRUELTY +CRUICKSHANK +CRUISE +CRUISER +CRUISERS +CRUISES +CRUISING +CRUMB +CRUMBLE +CRUMBLED +CRUMBLES +CRUMBLING +CRUMBLY +CRUMBS +CRUMMY +CRUMPLE +CRUMPLED +CRUMPLES +CRUMPLING +CRUNCH +CRUNCHED +CRUNCHES +CRUNCHIER +CRUNCHIEST +CRUNCHING +CRUNCHY +CRUSADE +CRUSADER +CRUSADERS +CRUSADES +CRUSADING +CRUSH +CRUSHABLE +CRUSHED +CRUSHER +CRUSHERS +CRUSHES +CRUSHING +CRUSHINGLY +CRUSOE +CRUST +CRUSTACEAN +CRUSTACEANS +CRUSTS +CRUTCH +CRUTCHES +CRUX +CRUXES +CRUZ +CRY +CRYING +CRYOGENIC +CRYPT +CRYPTANALYSIS +CRYPTANALYST +CRYPTANALYTIC +CRYPTIC +CRYPTOGRAM +CRYPTOGRAPHER +CRYPTOGRAPHIC +CRYPTOGRAPHICALLY +CRYPTOGRAPHY +CRYPTOLOGIST +CRYPTOLOGY +CRYSTAL +CRYSTALLINE +CRYSTALLIZE +CRYSTALLIZED +CRYSTALLIZES +CRYSTALLIZING +CRYSTALS +CUB +CUBA +CUBAN +CUBANIZE +CUBANIZES +CUBANS +CUBBYHOLE +CUBE +CUBED +CUBES +CUBIC +CUBS +CUCKOO +CUCKOOS +CUCUMBER +CUCUMBERS +CUDDLE +CUDDLED +CUDDLY +CUDGEL +CUDGELS +CUE +CUED +CUES +CUFF +CUFFLINK +CUFFS +CUISINE +CULBERTSON +CULINARY +CULL +CULLED +CULLER +CULLING +CULLS +CULMINATE +CULMINATED +CULMINATES +CULMINATING +CULMINATION +CULPA +CULPABLE +CULPRIT +CULPRITS +CULT +CULTIVABLE +CULTIVATE +CULTIVATED +CULTIVATES +CULTIVATING +CULTIVATION +CULTIVATIONS +CULTIVATOR +CULTIVATORS +CULTS +CULTURAL +CULTURALLY +CULTURE +CULTURED +CULTURES +CULTURING +CULVER +CULVERS +CUMBERLAND +CUMBERSOME +CUMMINGS +CUMMINS +CUMULATIVE +CUMULATIVELY +CUNARD +CUNNILINGUS +CUNNING +CUNNINGHAM +CUNNINGLY +CUP +CUPBOARD +CUPBOARDS +CUPERTINO +CUPFUL +CUPID +CUPPED +CUPPING +CUPS +CURABLE +CURABLY +CURB +CURBING +CURBS +CURD +CURDLE +CURE +CURED +CURES +CURFEW +CURFEWS +CURING +CURIOSITIES +CURIOSITY +CURIOUS +CURIOUSER +CURIOUSEST +CURIOUSLY +CURL +CURLED +CURLER +CURLERS +CURLICUE +CURLING +CURLS +CURLY +CURRAN +CURRANT +CURRANTS +CURRENCIES +CURRENCY +CURRENT +CURRENTLY +CURRENTNESS +CURRENTS +CURRICULAR +CURRICULUM +CURRICULUMS +CURRIED +CURRIES +CURRY +CURRYING +CURS +CURSE +CURSED +CURSES +CURSING +CURSIVE +CURSOR +CURSORILY +CURSORS +CURSORY +CURT +CURTAIL +CURTAILED +CURTAILS +CURTAIN +CURTAINED +CURTAINS +CURTATE +CURTIS +CURTLY +CURTNESS +CURTSIES +CURTSY +CURVACEOUS +CURVATURE +CURVE +CURVED +CURVES +CURVILINEAR +CURVING +CUSHING +CUSHION +CUSHIONED +CUSHIONING +CUSHIONS +CUSHMAN +CUSP +CUSPS +CUSTARD +CUSTER +CUSTODIAL +CUSTODIAN +CUSTODIANS +CUSTODY +CUSTOM +CUSTOMARILY +CUSTOMARY +CUSTOMER +CUSTOMERS +CUSTOMIZABLE +CUSTOMIZATION +CUSTOMIZATIONS +CUSTOMIZE +CUSTOMIZED +CUSTOMIZER +CUSTOMIZERS +CUSTOMIZES +CUSTOMIZING +CUSTOMS +CUT +CUTANEOUS +CUTBACK +CUTE +CUTEST +CUTLASS +CUTLET +CUTOFF +CUTOUT +CUTOVER +CUTS +CUTTER +CUTTERS +CUTTHROAT +CUTTING +CUTTINGLY +CUTTINGS +CUTTLEFISH +CUVIER +CUZCO +CYANAMID +CYANIDE +CYBERNETIC +CYBERNETICS +CYBERSPACE +CYCLADES +CYCLE +CYCLED +CYCLES +CYCLIC +CYCLICALLY +CYCLING +CYCLOID +CYCLOIDAL +CYCLOIDS +CYCLONE +CYCLONES +CYCLOPS +CYCLOTRON +CYCLOTRONS +CYGNUS +CYLINDER +CYLINDERS +CYLINDRICAL +CYMBAL +CYMBALS +CYNIC +CYNICAL +CYNICALLY +CYNTHIA +CYPRESS +CYPRIAN +CYPRIOT +CYPRUS +CYRIL +CYRILLIC +CYRUS +CYST +CYSTS +CYTOLOGY +CYTOPLASM +CZAR +CZECH +CZECHIZATION +CZECHIZATIONS +CZECHOSLOVAKIA +CZERNIAK +DABBLE +DABBLED +DABBLER +DABBLES +DABBLING +DACCA +DACRON +DACTYL +DACTYLIC +DAD +DADA +DADAISM +DADAIST +DADAISTIC +DADDY +DADE +DADS +DAEDALUS +DAEMON +DAEMONS +DAFFODIL +DAFFODILS +DAGGER +DAHL +DAHLIA +DAHOMEY +DAILEY +DAILIES +DAILY +DAIMLER +DAINTILY +DAINTINESS +DAINTY +DAIRY +DAIRYLEA +DAISIES +DAISY +DAKAR +DAKOTA +DALE +DALES +DALEY +DALHOUSIE +DALI +DALLAS +DALTON +DALY +DALZELL +DAM +DAMAGE +DAMAGED +DAMAGER +DAMAGERS +DAMAGES +DAMAGING +DAMASCUS +DAMASK +DAME +DAMMING +DAMN +DAMNATION +DAMNED +DAMNING +DAMNS +DAMOCLES +DAMON +DAMP +DAMPEN +DAMPENS +DAMPER +DAMPING +DAMPNESS +DAMS +DAMSEL +DAMSELS +DAN +DANA +DANBURY +DANCE +DANCED +DANCER +DANCERS +DANCES +DANCING +DANDELION +DANDELIONS +DANDY +DANE +DANES +DANGER +DANGEROUS +DANGEROUSLY +DANGERS +DANGLE +DANGLED +DANGLES +DANGLING +DANIEL +DANIELS +DANIELSON +DANISH +DANIZATION +DANIZATIONS +DANIZE +DANIZES +DANNY +DANTE +DANUBE +DANUBIAN +DANVILLE +DANZIG +DAPHNE +DAR +DARE +DARED +DARER +DARERS +DARES +DARESAY +DARING +DARINGLY +DARIUS +DARK +DARKEN +DARKER +DARKEST +DARKLY +DARKNESS +DARKROOM +DARLENE +DARLING +DARLINGS +DARLINGTON +DARN +DARNED +DARNER +DARNING +DARNS +DARPA +DARRELL +DARROW +DARRY +DART +DARTED +DARTER +DARTING +DARTMOUTH +DARTS +DARWIN +DARWINIAN +DARWINISM +DARWINISTIC +DARWINIZE +DARWINIZES +DASH +DASHBOARD +DASHED +DASHER +DASHERS +DASHES +DASHING +DASHINGLY +DATA +DATABASE +DATABASES +DATAGRAM +DATAGRAMS +DATAMATION +DATAMEDIA +DATE +DATED +DATELINE +DATER +DATES +DATING +DATIVE +DATSUN +DATUM +DAUGHERTY +DAUGHTER +DAUGHTERLY +DAUGHTERS +DAUNT +DAUNTED +DAUNTLESS +DAVE +DAVID +DAVIDSON +DAVIE +DAVIES +DAVINICH +DAVIS +DAVISON +DAVY +DAWN +DAWNED +DAWNING +DAWNS +DAWSON +DAY +DAYBREAK +DAYDREAM +DAYDREAMING +DAYDREAMS +DAYLIGHT +DAYLIGHTS +DAYS +DAYTIME +DAYTON +DAYTONA +DAZE +DAZED +DAZZLE +DAZZLED +DAZZLER +DAZZLES +DAZZLING +DAZZLINGLY +DEACON +DEACONS +DEACTIVATE +DEAD +DEADEN +DEADLINE +DEADLINES +DEADLOCK +DEADLOCKED +DEADLOCKING +DEADLOCKS +DEADLY +DEADNESS +DEADWOOD +DEAF +DEAFEN +DEAFER +DEAFEST +DEAFNESS +DEAL +DEALER +DEALERS +DEALERSHIP +DEALING +DEALINGS +DEALLOCATE +DEALLOCATED +DEALLOCATING +DEALLOCATION +DEALLOCATIONS +DEALS +DEALT +DEAN +DEANE +DEANNA +DEANS +DEAR +DEARBORN +DEARER +DEAREST +DEARLY +DEARNESS +DEARTH +DEARTHS +DEATH +DEATHBED +DEATHLY +DEATHS +DEBACLE +DEBAR +DEBASE +DEBATABLE +DEBATE +DEBATED +DEBATER +DEBATERS +DEBATES +DEBATING +DEBAUCH +DEBAUCHERY +DEBBIE +DEBBY +DEBILITATE +DEBILITATED +DEBILITATES +DEBILITATING +DEBILITY +DEBIT +DEBITED +DEBORAH +DEBRA +DEBRIEF +DEBRIS +DEBT +DEBTOR +DEBTS +DEBUG +DEBUGGED +DEBUGGER +DEBUGGERS +DEBUGGING +DEBUGS +DEBUNK +DEBUSSY +DEBUTANTE +DEC +DECADE +DECADENCE +DECADENT +DECADENTLY +DECADES +DECAL +DECATHLON +DECATUR +DECAY +DECAYED +DECAYING +DECAYS +DECCA +DECEASE +DECEASED +DECEASES +DECEASING +DECEDENT +DECEIT +DECEITFUL +DECEITFULLY +DECEITFULNESS +DECEIVE +DECEIVED +DECEIVER +DECEIVERS +DECEIVES +DECEIVING +DECELERATE +DECELERATED +DECELERATES +DECELERATING +DECELERATION +DECEMBER +DECEMBERS +DECENCIES +DECENCY +DECENNIAL +DECENT +DECENTLY +DECENTRALIZATION +DECENTRALIZED +DECEPTION +DECEPTIONS +DECEPTIVE +DECEPTIVELY +DECERTIFY +DECIBEL +DECIDABILITY +DECIDABLE +DECIDE +DECIDED +DECIDEDLY +DECIDES +DECIDING +DECIDUOUS +DECIMAL +DECIMALS +DECIMATE +DECIMATED +DECIMATES +DECIMATING +DECIMATION +DECIPHER +DECIPHERED +DECIPHERER +DECIPHERING +DECIPHERS +DECISION +DECISIONS +DECISIVE +DECISIVELY +DECISIVENESS +DECK +DECKED +DECKER +DECKING +DECKINGS +DECKS +DECLARATION +DECLARATIONS +DECLARATIVE +DECLARATIVELY +DECLARATIVES +DECLARATOR +DECLARATORY +DECLARE +DECLARED +DECLARER +DECLARERS +DECLARES +DECLARING +DECLASSIFY +DECLINATION +DECLINATIONS +DECLINE +DECLINED +DECLINER +DECLINERS +DECLINES +DECLINING +DECNET +DECODE +DECODED +DECODER +DECODERS +DECODES +DECODING +DECODINGS +DECOLLETAGE +DECOLLIMATE +DECOMPILE +DECOMPOSABILITY +DECOMPOSABLE +DECOMPOSE +DECOMPOSED +DECOMPOSES +DECOMPOSING +DECOMPOSITION +DECOMPOSITIONS +DECOMPRESS +DECOMPRESSION +DECORATE +DECORATED +DECORATES +DECORATING +DECORATION +DECORATIONS +DECORATIVE +DECORUM +DECOUPLE +DECOUPLED +DECOUPLES +DECOUPLING +DECOY +DECOYS +DECREASE +DECREASED +DECREASES +DECREASING +DECREASINGLY +DECREE +DECREED +DECREEING +DECREES +DECREMENT +DECREMENTED +DECREMENTING +DECREMENTS +DECRYPT +DECRYPTED +DECRYPTING +DECRYPTION +DECRYPTS +DECSTATION +DECSYSTEM +DECTAPE +DEDICATE +DEDICATED +DEDICATES +DEDICATING +DEDICATION +DEDUCE +DEDUCED +DEDUCER +DEDUCES +DEDUCIBLE +DEDUCING +DEDUCT +DEDUCTED +DEDUCTIBLE +DEDUCTING +DEDUCTION +DEDUCTIONS +DEDUCTIVE +DEE +DEED +DEEDED +DEEDING +DEEDS +DEEM +DEEMED +DEEMING +DEEMPHASIZE +DEEMPHASIZED +DEEMPHASIZES +DEEMPHASIZING +DEEMS +DEEP +DEEPEN +DEEPENED +DEEPENING +DEEPENS +DEEPER +DEEPEST +DEEPLY +DEEPS +DEER +DEERE +DEFACE +DEFAULT +DEFAULTED +DEFAULTER +DEFAULTING +DEFAULTS +DEFEAT +DEFEATED +DEFEATING +DEFEATS +DEFECATE +DEFECT +DEFECTED +DEFECTING +DEFECTION +DEFECTIONS +DEFECTIVE +DEFECTS +DEFEND +DEFENDANT +DEFENDANTS +DEFENDED +DEFENDER +DEFENDERS +DEFENDING +DEFENDS +DEFENESTRATE +DEFENESTRATED +DEFENESTRATES +DEFENESTRATING +DEFENESTRATION +DEFENSE +DEFENSELESS +DEFENSES +DEFENSIBLE +DEFENSIVE +DEFER +DEFERENCE +DEFERMENT +DEFERMENTS +DEFERRABLE +DEFERRED +DEFERRER +DEFERRERS +DEFERRING +DEFERS +DEFIANCE +DEFIANT +DEFIANTLY +DEFICIENCIES +DEFICIENCY +DEFICIENT +DEFICIT +DEFICITS +DEFIED +DEFIES +DEFILE +DEFILING +DEFINABLE +DEFINE +DEFINED +DEFINER +DEFINES +DEFINING +DEFINITE +DEFINITELY +DEFINITENESS +DEFINITION +DEFINITIONAL +DEFINITIONS +DEFINITIVE +DEFLATE +DEFLATER +DEFLECT +DEFOCUS +DEFOE +DEFOREST +DEFORESTATION +DEFORM +DEFORMATION +DEFORMATIONS +DEFORMED +DEFORMITIES +DEFORMITY +DEFRAUD +DEFRAY +DEFROST +DEFTLY +DEFUNCT +DEFY +DEFYING +DEGENERACY +DEGENERATE +DEGENERATED +DEGENERATES +DEGENERATING +DEGENERATION +DEGENERATIVE +DEGRADABLE +DEGRADATION +DEGRADATIONS +DEGRADE +DEGRADED +DEGRADES +DEGRADING +DEGREE +DEGREES +DEHUMIDIFY +DEHYDRATE +DEIFY +DEIGN +DEIGNED +DEIGNING +DEIGNS +DEIMOS +DEIRDRE +DEIRDRES +DEITIES +DEITY +DEJECTED +DEJECTEDLY +DEKALB +DEKASTERE +DEL +DELANEY +DELANO +DELAWARE +DELAY +DELAYED +DELAYING +DELAYS +DELEGATE +DELEGATED +DELEGATES +DELEGATING +DELEGATION +DELEGATIONS +DELETE +DELETED +DELETER +DELETERIOUS +DELETES +DELETING +DELETION +DELETIONS +DELFT +DELHI +DELIA +DELIBERATE +DELIBERATED +DELIBERATELY +DELIBERATENESS +DELIBERATES +DELIBERATING +DELIBERATION +DELIBERATIONS +DELIBERATIVE +DELIBERATOR +DELIBERATORS +DELICACIES +DELICACY +DELICATE +DELICATELY +DELICATESSEN +DELICIOUS +DELICIOUSLY +DELIGHT +DELIGHTED +DELIGHTEDLY +DELIGHTFUL +DELIGHTFULLY +DELIGHTING +DELIGHTS +DELILAH +DELIMIT +DELIMITATION +DELIMITED +DELIMITER +DELIMITERS +DELIMITING +DELIMITS +DELINEAMENT +DELINEATE +DELINEATED +DELINEATES +DELINEATING +DELINEATION +DELINQUENCY +DELINQUENT +DELIRIOUS +DELIRIOUSLY +DELIRIUM +DELIVER +DELIVERABLE +DELIVERABLES +DELIVERANCE +DELIVERED +DELIVERER +DELIVERERS +DELIVERIES +DELIVERING +DELIVERS +DELIVERY +DELL +DELLA +DELLS +DELLWOOD +DELMARVA +DELPHI +DELPHIC +DELPHICALLY +DELPHINUS +DELTA +DELTAS +DELUDE +DELUDED +DELUDES +DELUDING +DELUGE +DELUGED +DELUGES +DELUSION +DELUSIONS +DELUXE +DELVE +DELVES +DELVING +DEMAGNIFY +DEMAGOGUE +DEMAND +DEMANDED +DEMANDER +DEMANDING +DEMANDINGLY +DEMANDS +DEMARCATE +DEMEANOR +DEMENTED +DEMERIT +DEMETER +DEMIGOD +DEMISE +DEMO +DEMOCRACIES +DEMOCRACY +DEMOCRAT +DEMOCRATIC +DEMOCRATICALLY +DEMOCRATS +DEMODULATE +DEMODULATOR +DEMOGRAPHIC +DEMOLISH +DEMOLISHED +DEMOLISHES +DEMOLITION +DEMON +DEMONIAC +DEMONIC +DEMONS +DEMONSTRABLE +DEMONSTRATE +DEMONSTRATED +DEMONSTRATES +DEMONSTRATING +DEMONSTRATION +DEMONSTRATIONS +DEMONSTRATIVE +DEMONSTRATIVELY +DEMONSTRATOR +DEMONSTRATORS +DEMORALIZE +DEMORALIZED +DEMORALIZES +DEMORALIZING +DEMORGAN +DEMOTE +DEMOUNTABLE +DEMPSEY +DEMULTIPLEX +DEMULTIPLEXED +DEMULTIPLEXER +DEMULTIPLEXERS +DEMULTIPLEXING +DEMUR +DEMYTHOLOGIZE +DEN +DENATURE +DENEB +DENEBOLA +DENEEN +DENIABLE +DENIAL +DENIALS +DENIED +DENIER +DENIES +DENIGRATE +DENIGRATED +DENIGRATES +DENIGRATING +DENIZEN +DENMARK +DENNIS +DENNY +DENOMINATE +DENOMINATION +DENOMINATIONS +DENOMINATOR +DENOMINATORS +DENOTABLE +DENOTATION +DENOTATIONAL +DENOTATIONALLY +DENOTATIONS +DENOTATIVE +DENOTE +DENOTED +DENOTES +DENOTING +DENOUNCE +DENOUNCED +DENOUNCES +DENOUNCING +DENS +DENSE +DENSELY +DENSENESS +DENSER +DENSEST +DENSITIES +DENSITY +DENT +DENTAL +DENTALLY +DENTED +DENTING +DENTIST +DENTISTRY +DENTISTS +DENTON +DENTS +DENTURE +DENUDE +DENUMERABLE +DENUNCIATE +DENUNCIATION +DENVER +DENY +DENYING +DEODORANT +DEOXYRIBONUCLEIC +DEPART +DEPARTED +DEPARTING +DEPARTMENT +DEPARTMENTAL +DEPARTMENTS +DEPARTS +DEPARTURE +DEPARTURES +DEPEND +DEPENDABILITY +DEPENDABLE +DEPENDABLY +DEPENDED +DEPENDENCE +DEPENDENCIES +DEPENDENCY +DEPENDENT +DEPENDENTLY +DEPENDENTS +DEPENDING +DEPENDS +DEPICT +DEPICTED +DEPICTING +DEPICTS +DEPLETE +DEPLETED +DEPLETES +DEPLETING +DEPLETION +DEPLETIONS +DEPLORABLE +DEPLORE +DEPLORED +DEPLORES +DEPLORING +DEPLOY +DEPLOYED +DEPLOYING +DEPLOYMENT +DEPLOYMENTS +DEPLOYS +DEPORT +DEPORTATION +DEPORTEE +DEPORTMENT +DEPOSE +DEPOSED +DEPOSES +DEPOSIT +DEPOSITARY +DEPOSITED +DEPOSITING +DEPOSITION +DEPOSITIONS +DEPOSITOR +DEPOSITORS +DEPOSITORY +DEPOSITS +DEPOT +DEPOTS +DEPRAVE +DEPRAVED +DEPRAVITY +DEPRECATE +DEPRECIATE +DEPRECIATED +DEPRECIATES +DEPRECIATION +DEPRESS +DEPRESSED +DEPRESSES +DEPRESSING +DEPRESSION +DEPRESSIONS +DEPRIVATION +DEPRIVATIONS +DEPRIVE +DEPRIVED +DEPRIVES +DEPRIVING +DEPTH +DEPTHS +DEPUTIES +DEPUTY +DEQUEUE +DEQUEUED +DEQUEUES +DEQUEUING +DERAIL +DERAILED +DERAILING +DERAILS +DERBY +DERBYSHIRE +DEREFERENCE +DEREGULATE +DEREGULATED +DEREK +DERIDE +DERISION +DERIVABLE +DERIVATION +DERIVATIONS +DERIVATIVE +DERIVATIVES +DERIVE +DERIVED +DERIVES +DERIVING +DEROGATORY +DERRICK +DERRIERE +DERVISH +DES +DESCARTES +DESCEND +DESCENDANT +DESCENDANTS +DESCENDED +DESCENDENT +DESCENDER +DESCENDERS +DESCENDING +DESCENDS +DESCENT +DESCENTS +DESCRIBABLE +DESCRIBE +DESCRIBED +DESCRIBER +DESCRIBES +DESCRIBING +DESCRIPTION +DESCRIPTIONS +DESCRIPTIVE +DESCRIPTIVELY +DESCRIPTIVES +DESCRIPTOR +DESCRIPTORS +DESCRY +DESECRATE +DESEGREGATE +DESERT +DESERTED +DESERTER +DESERTERS +DESERTING +DESERTION +DESERTIONS +DESERTS +DESERVE +DESERVED +DESERVES +DESERVING +DESERVINGLY +DESERVINGS +DESIDERATA +DESIDERATUM +DESIGN +DESIGNATE +DESIGNATED +DESIGNATES +DESIGNATING +DESIGNATION +DESIGNATIONS +DESIGNATOR +DESIGNATORS +DESIGNED +DESIGNER +DESIGNERS +DESIGNING +DESIGNS +DESIRABILITY +DESIRABLE +DESIRABLY +DESIRE +DESIRED +DESIRES +DESIRING +DESIROUS +DESIST +DESK +DESKS +DESKTOP +DESMOND +DESOLATE +DESOLATELY +DESOLATION +DESOLATIONS +DESPAIR +DESPAIRED +DESPAIRING +DESPAIRINGLY +DESPAIRS +DESPATCH +DESPATCHED +DESPERADO +DESPERATE +DESPERATELY +DESPERATION +DESPICABLE +DESPISE +DESPISED +DESPISES +DESPISING +DESPITE +DESPOIL +DESPONDENT +DESPOT +DESPOTIC +DESPOTISM +DESPOTS +DESSERT +DESSERTS +DESSICATE +DESTABILIZE +DESTINATION +DESTINATIONS +DESTINE +DESTINED +DESTINIES +DESTINY +DESTITUTE +DESTITUTION +DESTROY +DESTROYED +DESTROYER +DESTROYERS +DESTROYING +DESTROYS +DESTRUCT +DESTRUCTION +DESTRUCTIONS +DESTRUCTIVE +DESTRUCTIVELY +DESTRUCTIVENESS +DESTRUCTOR +DESTUFF +DESTUFFING +DESTUFFS +DESUETUDE +DESULTORY +DESYNCHRONIZE +DETACH +DETACHED +DETACHER +DETACHES +DETACHING +DETACHMENT +DETACHMENTS +DETAIL +DETAILED +DETAILING +DETAILS +DETAIN +DETAINED +DETAINING +DETAINS +DETECT +DETECTABLE +DETECTABLY +DETECTED +DETECTING +DETECTION +DETECTIONS +DETECTIVE +DETECTIVES +DETECTOR +DETECTORS +DETECTS +DETENTE +DETENTION +DETER +DETERGENT +DETERIORATE +DETERIORATED +DETERIORATES +DETERIORATING +DETERIORATION +DETERMINABLE +DETERMINACY +DETERMINANT +DETERMINANTS +DETERMINATE +DETERMINATELY +DETERMINATION +DETERMINATIONS +DETERMINATIVE +DETERMINE +DETERMINED +DETERMINER +DETERMINERS +DETERMINES +DETERMINING +DETERMINISM +DETERMINISTIC +DETERMINISTICALLY +DETERRED +DETERRENT +DETERRING +DETEST +DETESTABLE +DETESTED +DETOUR +DETRACT +DETRACTOR +DETRACTORS +DETRACTS +DETRIMENT +DETRIMENTAL +DETROIT +DEUCE +DEUS +DEUTERIUM +DEUTSCH +DEVASTATE +DEVASTATED +DEVASTATES +DEVASTATING +DEVASTATION +DEVELOP +DEVELOPED +DEVELOPER +DEVELOPERS +DEVELOPING +DEVELOPMENT +DEVELOPMENTAL +DEVELOPMENTS +DEVELOPS +DEVIANT +DEVIANTS +DEVIATE +DEVIATED +DEVIATES +DEVIATING +DEVIATION +DEVIATIONS +DEVICE +DEVICES +DEVIL +DEVILISH +DEVILISHLY +DEVILS +DEVIOUS +DEVISE +DEVISED +DEVISES +DEVISING +DEVISINGS +DEVOID +DEVOLVE +DEVON +DEVONSHIRE +DEVOTE +DEVOTED +DEVOTEDLY +DEVOTEE +DEVOTEES +DEVOTES +DEVOTING +DEVOTION +DEVOTIONS +DEVOUR +DEVOURED +DEVOURER +DEVOURS +DEVOUT +DEVOUTLY +DEVOUTNESS +DEW +DEWDROP +DEWDROPS +DEWEY +DEWITT +DEWY +DEXEDRINE +DEXTERITY +DHABI +DIABETES +DIABETIC +DIABOLIC +DIACHRONIC +DIACRITICAL +DIADEM +DIAGNOSABLE +DIAGNOSE +DIAGNOSED +DIAGNOSES +DIAGNOSING +DIAGNOSIS +DIAGNOSTIC +DIAGNOSTICIAN +DIAGNOSTICS +DIAGONAL +DIAGONALLY +DIAGONALS +DIAGRAM +DIAGRAMMABLE +DIAGRAMMATIC +DIAGRAMMATICALLY +DIAGRAMMED +DIAGRAMMER +DIAGRAMMERS +DIAGRAMMING +DIAGRAMS +DIAL +DIALECT +DIALECTIC +DIALECTS +DIALED +DIALER +DIALERS +DIALING +DIALOG +DIALOGS +DIALOGUE +DIALOGUES +DIALS +DIALUP +DIALYSIS +DIAMAGNETIC +DIAMETER +DIAMETERS +DIAMETRIC +DIAMETRICALLY +DIAMOND +DIAMONDS +DIANA +DIANE +DIANNE +DIAPER +DIAPERS +DIAPHRAGM +DIAPHRAGMS +DIARIES +DIARRHEA +DIARY +DIATRIBE +DIATRIBES +DIBBLE +DICE +DICHOTOMIZE +DICHOTOMY +DICKENS +DICKERSON +DICKINSON +DICKSON +DICKY +DICTATE +DICTATED +DICTATES +DICTATING +DICTATION +DICTATIONS +DICTATOR +DICTATORIAL +DICTATORS +DICTATORSHIP +DICTION +DICTIONARIES +DICTIONARY +DICTUM +DICTUMS +DID +DIDACTIC +DIDDLE +DIDO +DIE +DIEBOLD +DIED +DIEGO +DIEHARD +DIELECTRIC +DIELECTRICS +DIEM +DIES +DIESEL +DIET +DIETARY +DIETER +DIETERS +DIETETIC +DIETICIAN +DIETITIAN +DIETITIANS +DIETRICH +DIETS +DIETZ +DIFFER +DIFFERED +DIFFERENCE +DIFFERENCES +DIFFERENT +DIFFERENTIABLE +DIFFERENTIAL +DIFFERENTIALS +DIFFERENTIATE +DIFFERENTIATED +DIFFERENTIATES +DIFFERENTIATING +DIFFERENTIATION +DIFFERENTIATIONS +DIFFERENTIATORS +DIFFERENTLY +DIFFERER +DIFFERERS +DIFFERING +DIFFERS +DIFFICULT +DIFFICULTIES +DIFFICULTLY +DIFFICULTY +DIFFRACT +DIFFUSE +DIFFUSED +DIFFUSELY +DIFFUSER +DIFFUSERS +DIFFUSES +DIFFUSIBLE +DIFFUSING +DIFFUSION +DIFFUSIONS +DIFFUSIVE +DIG +DIGEST +DIGESTED +DIGESTIBLE +DIGESTING +DIGESTION +DIGESTIVE +DIGESTS +DIGGER +DIGGERS +DIGGING +DIGGINGS +DIGIT +DIGITAL +DIGITALIS +DIGITALLY +DIGITIZATION +DIGITIZE +DIGITIZED +DIGITIZES +DIGITIZING +DIGITS +DIGNIFIED +DIGNIFY +DIGNITARY +DIGNITIES +DIGNITY +DIGRAM +DIGRESS +DIGRESSED +DIGRESSES +DIGRESSING +DIGRESSION +DIGRESSIONS +DIGRESSIVE +DIGS +DIHEDRAL +DIJKSTRA +DIJON +DIKE +DIKES +DILAPIDATE +DILATATION +DILATE +DILATED +DILATES +DILATING +DILATION +DILDO +DILEMMA +DILEMMAS +DILIGENCE +DILIGENT +DILIGENTLY +DILL +DILLON +DILOGARITHM +DILUTE +DILUTED +DILUTES +DILUTING +DILUTION +DIM +DIMAGGIO +DIME +DIMENSION +DIMENSIONAL +DIMENSIONALITY +DIMENSIONALLY +DIMENSIONED +DIMENSIONING +DIMENSIONS +DIMES +DIMINISH +DIMINISHED +DIMINISHES +DIMINISHING +DIMINUTION +DIMINUTIVE +DIMLY +DIMMED +DIMMER +DIMMERS +DIMMEST +DIMMING +DIMNESS +DIMPLE +DIMS +DIN +DINAH +DINE +DINED +DINER +DINERS +DINES +DING +DINGHY +DINGINESS +DINGO +DINGY +DINING +DINNER +DINNERS +DINNERTIME +DINNERWARE +DINOSAUR +DINT +DIOCLETIAN +DIODE +DIODES +DIOGENES +DION +DIONYSIAN +DIONYSUS +DIOPHANTINE +DIOPTER +DIORAMA +DIOXIDE +DIP +DIPHTHERIA +DIPHTHONG +DIPLOMA +DIPLOMACY +DIPLOMAS +DIPLOMAT +DIPLOMATIC +DIPLOMATS +DIPOLE +DIPPED +DIPPER +DIPPERS +DIPPING +DIPPINGS +DIPS +DIRAC +DIRE +DIRECT +DIRECTED +DIRECTING +DIRECTION +DIRECTIONAL +DIRECTIONALITY +DIRECTIONALLY +DIRECTIONS +DIRECTIVE +DIRECTIVES +DIRECTLY +DIRECTNESS +DIRECTOR +DIRECTORATE +DIRECTORIES +DIRECTORS +DIRECTORY +DIRECTRICES +DIRECTRIX +DIRECTS +DIRGE +DIRGES +DIRICHLET +DIRT +DIRTIER +DIRTIEST +DIRTILY +DIRTINESS +DIRTS +DIRTY +DIS +DISABILITIES +DISABILITY +DISABLE +DISABLED +DISABLER +DISABLERS +DISABLES +DISABLING +DISADVANTAGE +DISADVANTAGEOUS +DISADVANTAGES +DISAFFECTED +DISAFFECTION +DISAGREE +DISAGREEABLE +DISAGREED +DISAGREEING +DISAGREEMENT +DISAGREEMENTS +DISAGREES +DISALLOW +DISALLOWED +DISALLOWING +DISALLOWS +DISAMBIGUATE +DISAMBIGUATED +DISAMBIGUATES +DISAMBIGUATING +DISAMBIGUATION +DISAMBIGUATIONS +DISAPPEAR +DISAPPEARANCE +DISAPPEARANCES +DISAPPEARED +DISAPPEARING +DISAPPEARS +DISAPPOINT +DISAPPOINTED +DISAPPOINTING +DISAPPOINTMENT +DISAPPOINTMENTS +DISAPPROVAL +DISAPPROVE +DISAPPROVED +DISAPPROVES +DISARM +DISARMAMENT +DISARMED +DISARMING +DISARMS +DISASSEMBLE +DISASSEMBLED +DISASSEMBLES +DISASSEMBLING +DISASSEMBLY +DISASTER +DISASTERS +DISASTROUS +DISASTROUSLY +DISBAND +DISBANDED +DISBANDING +DISBANDS +DISBURSE +DISBURSED +DISBURSEMENT +DISBURSEMENTS +DISBURSES +DISBURSING +DISC +DISCARD +DISCARDED +DISCARDING +DISCARDS +DISCERN +DISCERNED +DISCERNIBILITY +DISCERNIBLE +DISCERNIBLY +DISCERNING +DISCERNINGLY +DISCERNMENT +DISCERNS +DISCHARGE +DISCHARGED +DISCHARGES +DISCHARGING +DISCIPLE +DISCIPLES +DISCIPLINARY +DISCIPLINE +DISCIPLINED +DISCIPLINES +DISCIPLINING +DISCLAIM +DISCLAIMED +DISCLAIMER +DISCLAIMS +DISCLOSE +DISCLOSED +DISCLOSES +DISCLOSING +DISCLOSURE +DISCLOSURES +DISCOMFORT +DISCONCERT +DISCONCERTING +DISCONCERTINGLY +DISCONNECT +DISCONNECTED +DISCONNECTING +DISCONNECTION +DISCONNECTS +DISCONTENT +DISCONTENTED +DISCONTINUANCE +DISCONTINUE +DISCONTINUED +DISCONTINUES +DISCONTINUITIES +DISCONTINUITY +DISCONTINUOUS +DISCORD +DISCORDANT +DISCOUNT +DISCOUNTED +DISCOUNTING +DISCOUNTS +DISCOURAGE +DISCOURAGED +DISCOURAGEMENT +DISCOURAGES +DISCOURAGING +DISCOURSE +DISCOURSES +DISCOVER +DISCOVERED +DISCOVERER +DISCOVERERS +DISCOVERIES +DISCOVERING +DISCOVERS +DISCOVERY +DISCREDIT +DISCREDITED +DISCREET +DISCREETLY +DISCREPANCIES +DISCREPANCY +DISCRETE +DISCRETELY +DISCRETENESS +DISCRETION +DISCRETIONARY +DISCRIMINANT +DISCRIMINATE +DISCRIMINATED +DISCRIMINATES +DISCRIMINATING +DISCRIMINATION +DISCRIMINATORY +DISCS +DISCUSS +DISCUSSANT +DISCUSSED +DISCUSSES +DISCUSSING +DISCUSSION +DISCUSSIONS +DISDAIN +DISDAINING +DISDAINS +DISEASE +DISEASED +DISEASES +DISEMBOWEL +DISENGAGE +DISENGAGED +DISENGAGES +DISENGAGING +DISENTANGLE +DISENTANGLING +DISFIGURE +DISFIGURED +DISFIGURES +DISFIGURING +DISGORGE +DISGRACE +DISGRACED +DISGRACEFUL +DISGRACEFULLY +DISGRACES +DISGRUNTLE +DISGRUNTLED +DISGUISE +DISGUISED +DISGUISES +DISGUST +DISGUSTED +DISGUSTEDLY +DISGUSTFUL +DISGUSTING +DISGUSTINGLY +DISGUSTS +DISH +DISHEARTEN +DISHEARTENING +DISHED +DISHES +DISHEVEL +DISHING +DISHONEST +DISHONESTLY +DISHONESTY +DISHONOR +DISHONORABLE +DISHONORED +DISHONORING +DISHONORS +DISHWASHER +DISHWASHERS +DISHWASHING +DISHWATER +DISILLUSION +DISILLUSIONED +DISILLUSIONING +DISILLUSIONMENT +DISILLUSIONMENTS +DISINCLINED +DISINGENUOUS +DISINTERESTED +DISINTERESTEDNESS +DISJOINT +DISJOINTED +DISJOINTLY +DISJOINTNESS +DISJUNCT +DISJUNCTION +DISJUNCTIONS +DISJUNCTIVE +DISJUNCTIVELY +DISJUNCTS +DISK +DISKETTE +DISKETTES +DISKS +DISLIKE +DISLIKED +DISLIKES +DISLIKING +DISLOCATE +DISLOCATED +DISLOCATES +DISLOCATING +DISLOCATION +DISLOCATIONS +DISLODGE +DISLODGED +DISMAL +DISMALLY +DISMAY +DISMAYED +DISMAYING +DISMEMBER +DISMEMBERED +DISMEMBERMENT +DISMEMBERS +DISMISS +DISMISSAL +DISMISSALS +DISMISSED +DISMISSER +DISMISSERS +DISMISSES +DISMISSING +DISMOUNT +DISMOUNTED +DISMOUNTING +DISMOUNTS +DISNEY +DISNEYLAND +DISOBEDIENCE +DISOBEDIENT +DISOBEY +DISOBEYED +DISOBEYING +DISOBEYS +DISORDER +DISORDERED +DISORDERLY +DISORDERS +DISORGANIZED +DISOWN +DISOWNED +DISOWNING +DISOWNS +DISPARAGE +DISPARATE +DISPARITIES +DISPARITY +DISPASSIONATE +DISPATCH +DISPATCHED +DISPATCHER +DISPATCHERS +DISPATCHES +DISPATCHING +DISPEL +DISPELL +DISPELLED +DISPELLING +DISPELS +DISPENSARY +DISPENSATION +DISPENSE +DISPENSED +DISPENSER +DISPENSERS +DISPENSES +DISPENSING +DISPERSAL +DISPERSE +DISPERSED +DISPERSES +DISPERSING +DISPERSION +DISPERSIONS +DISPLACE +DISPLACED +DISPLACEMENT +DISPLACEMENTS +DISPLACES +DISPLACING +DISPLAY +DISPLAYABLE +DISPLAYED +DISPLAYER +DISPLAYING +DISPLAYS +DISPLEASE +DISPLEASED +DISPLEASES +DISPLEASING +DISPLEASURE +DISPOSABLE +DISPOSAL +DISPOSALS +DISPOSE +DISPOSED +DISPOSER +DISPOSES +DISPOSING +DISPOSITION +DISPOSITIONS +DISPOSSESSED +DISPROPORTIONATE +DISPROVE +DISPROVED +DISPROVES +DISPROVING +DISPUTE +DISPUTED +DISPUTER +DISPUTERS +DISPUTES +DISPUTING +DISQUALIFICATION +DISQUALIFIED +DISQUALIFIES +DISQUALIFY +DISQUALIFYING +DISQUIET +DISQUIETING +DISRAELI +DISREGARD +DISREGARDED +DISREGARDING +DISREGARDS +DISRESPECTFUL +DISRUPT +DISRUPTED +DISRUPTING +DISRUPTION +DISRUPTIONS +DISRUPTIVE +DISRUPTS +DISSATISFACTION +DISSATISFACTIONS +DISSATISFACTORY +DISSATISFIED +DISSECT +DISSECTS +DISSEMBLE +DISSEMINATE +DISSEMINATED +DISSEMINATES +DISSEMINATING +DISSEMINATION +DISSENSION +DISSENSIONS +DISSENT +DISSENTED +DISSENTER +DISSENTERS +DISSENTING +DISSENTS +DISSERTATION +DISSERTATIONS +DISSERVICE +DISSIDENT +DISSIDENTS +DISSIMILAR +DISSIMILARITIES +DISSIMILARITY +DISSIPATE +DISSIPATED +DISSIPATES +DISSIPATING +DISSIPATION +DISSOCIATE +DISSOCIATED +DISSOCIATES +DISSOCIATING +DISSOCIATION +DISSOLUTION +DISSOLUTIONS +DISSOLVE +DISSOLVED +DISSOLVES +DISSOLVING +DISSONANT +DISSUADE +DISTAFF +DISTAL +DISTALLY +DISTANCE +DISTANCES +DISTANT +DISTANTLY +DISTASTE +DISTASTEFUL +DISTASTEFULLY +DISTASTES +DISTEMPER +DISTEMPERED +DISTEMPERS +DISTILL +DISTILLATION +DISTILLED +DISTILLER +DISTILLERS +DISTILLERY +DISTILLING +DISTILLS +DISTINCT +DISTINCTION +DISTINCTIONS +DISTINCTIVE +DISTINCTIVELY +DISTINCTIVENESS +DISTINCTLY +DISTINCTNESS +DISTINGUISH +DISTINGUISHABLE +DISTINGUISHED +DISTINGUISHES +DISTINGUISHING +DISTORT +DISTORTED +DISTORTING +DISTORTION +DISTORTIONS +DISTORTS +DISTRACT +DISTRACTED +DISTRACTING +DISTRACTION +DISTRACTIONS +DISTRACTS +DISTRAUGHT +DISTRESS +DISTRESSED +DISTRESSES +DISTRESSING +DISTRIBUTE +DISTRIBUTED +DISTRIBUTES +DISTRIBUTING +DISTRIBUTION +DISTRIBUTIONAL +DISTRIBUTIONS +DISTRIBUTIVE +DISTRIBUTIVITY +DISTRIBUTOR +DISTRIBUTORS +DISTRICT +DISTRICTS +DISTRUST +DISTRUSTED +DISTURB +DISTURBANCE +DISTURBANCES +DISTURBED +DISTURBER +DISTURBING +DISTURBINGLY +DISTURBS +DISUSE +DITCH +DITCHES +DITHER +DITTO +DITTY +DITZEL +DIURNAL +DIVAN +DIVANS +DIVE +DIVED +DIVER +DIVERGE +DIVERGED +DIVERGENCE +DIVERGENCES +DIVERGENT +DIVERGES +DIVERGING +DIVERS +DIVERSE +DIVERSELY +DIVERSIFICATION +DIVERSIFIED +DIVERSIFIES +DIVERSIFY +DIVERSIFYING +DIVERSION +DIVERSIONARY +DIVERSIONS +DIVERSITIES +DIVERSITY +DIVERT +DIVERTED +DIVERTING +DIVERTS +DIVES +DIVEST +DIVESTED +DIVESTING +DIVESTITURE +DIVESTS +DIVIDE +DIVIDED +DIVIDEND +DIVIDENDS +DIVIDER +DIVIDERS +DIVIDES +DIVIDING +DIVINE +DIVINELY +DIVINER +DIVING +DIVINING +DIVINITIES +DIVINITY +DIVISIBILITY +DIVISIBLE +DIVISION +DIVISIONAL +DIVISIONS +DIVISIVE +DIVISOR +DIVISORS +DIVORCE +DIVORCED +DIVORCEE +DIVULGE +DIVULGED +DIVULGES +DIVULGING +DIXIE +DIXIECRATS +DIXIELAND +DIXON +DIZZINESS +DIZZY +DJAKARTA +DMITRI +DNIEPER +DOBBIN +DOBBS +DOBERMAN +DOC +DOCILE +DOCK +DOCKED +DOCKET +DOCKS +DOCKSIDE +DOCKYARD +DOCTOR +DOCTORAL +DOCTORATE +DOCTORATES +DOCTORED +DOCTORS +DOCTRINAIRE +DOCTRINAL +DOCTRINE +DOCTRINES +DOCUMENT +DOCUMENTARIES +DOCUMENTARY +DOCUMENTATION +DOCUMENTATIONS +DOCUMENTED +DOCUMENTER +DOCUMENTERS +DOCUMENTING +DOCUMENTS +DODD +DODECAHEDRA +DODECAHEDRAL +DODECAHEDRON +DODGE +DODGED +DODGER +DODGERS +DODGING +DODINGTON +DODSON +DOE +DOER +DOERS +DOES +DOG +DOGE +DOGGED +DOGGEDLY +DOGGEDNESS +DOGGING +DOGHOUSE +DOGMA +DOGMAS +DOGMATIC +DOGMATISM +DOGS +DOGTOWN +DOHERTY +DOING +DOINGS +DOLAN +DOLDRUM +DOLE +DOLED +DOLEFUL +DOLEFULLY +DOLES +DOLL +DOLLAR +DOLLARS +DOLLIES +DOLLS +DOLLY +DOLORES +DOLPHIN +DOLPHINS +DOMAIN +DOMAINS +DOME +DOMED +DOMENICO +DOMES +DOMESDAY +DOMESTIC +DOMESTICALLY +DOMESTICATE +DOMESTICATED +DOMESTICATES +DOMESTICATING +DOMESTICATION +DOMICILE +DOMINANCE +DOMINANT +DOMINANTLY +DOMINATE +DOMINATED +DOMINATES +DOMINATING +DOMINATION +DOMINEER +DOMINEERING +DOMINGO +DOMINIC +DOMINICAN +DOMINICANS +DOMINICK +DOMINION +DOMINIQUE +DOMINO +DON +DONAHUE +DONALD +DONALDSON +DONATE +DONATED +DONATES +DONATING +DONATION +DONE +DONECK +DONKEY +DONKEYS +DONNA +DONNELLY +DONNER +DONNYBROOK +DONOR +DONOVAN +DONS +DOODLE +DOOLEY +DOOLITTLE +DOOM +DOOMED +DOOMING +DOOMS +DOOMSDAY +DOOR +DOORBELL +DOORKEEPER +DOORMAN +DOORMEN +DOORS +DOORSTEP +DOORSTEPS +DOORWAY +DOORWAYS +DOPE +DOPED +DOPER +DOPERS +DOPES +DOPING +DOPPLER +DORA +DORADO +DORCAS +DORCHESTER +DOREEN +DORIA +DORIC +DORICIZE +DORICIZES +DORIS +DORMANT +DORMITORIES +DORMITORY +DOROTHEA +DOROTHY +DORSET +DORTMUND +DOSAGE +DOSE +DOSED +DOSES +DOSSIER +DOSSIERS +DOSTOEVSKY +DOT +DOTE +DOTED +DOTES +DOTING +DOTINGLY +DOTS +DOTTED +DOTTING +DOUBLE +DOUBLED +DOUBLEDAY +DOUBLEHEADER +DOUBLER +DOUBLERS +DOUBLES +DOUBLET +DOUBLETON +DOUBLETS +DOUBLING +DOUBLOON +DOUBLY +DOUBT +DOUBTABLE +DOUBTED +DOUBTER +DOUBTERS +DOUBTFUL +DOUBTFULLY +DOUBTING +DOUBTLESS +DOUBTLESSLY +DOUBTS +DOUG +DOUGH +DOUGHERTY +DOUGHNUT +DOUGHNUTS +DOUGLAS +DOUGLASS +DOVE +DOVER +DOVES +DOVETAIL +DOW +DOWAGER +DOWEL +DOWLING +DOWN +DOWNCAST +DOWNED +DOWNERS +DOWNEY +DOWNFALL +DOWNFALLEN +DOWNGRADE +DOWNHILL +DOWNING +DOWNLINK +DOWNLINKS +DOWNLOAD +DOWNLOADED +DOWNLOADING +DOWNLOADS +DOWNPLAY +DOWNPLAYED +DOWNPLAYING +DOWNPLAYS +DOWNPOUR +DOWNRIGHT +DOWNS +DOWNSIDE +DOWNSTAIRS +DOWNSTREAM +DOWNTOWN +DOWNTOWNS +DOWNTRODDEN +DOWNTURN +DOWNWARD +DOWNWARDS +DOWNY +DOWRY +DOYLE +DOZE +DOZED +DOZEN +DOZENS +DOZENTH +DOZES +DOZING +DRAB +DRACO +DRACONIAN +DRAFT +DRAFTED +DRAFTEE +DRAFTER +DRAFTERS +DRAFTING +DRAFTS +DRAFTSMAN +DRAFTSMEN +DRAFTY +DRAG +DRAGGED +DRAGGING +DRAGNET +DRAGON +DRAGONFLY +DRAGONHEAD +DRAGONS +DRAGOON +DRAGOONED +DRAGOONS +DRAGS +DRAIN +DRAINAGE +DRAINED +DRAINER +DRAINING +DRAINS +DRAKE +DRAM +DRAMA +DRAMAMINE +DRAMAS +DRAMATIC +DRAMATICALLY +DRAMATICS +DRAMATIST +DRAMATISTS +DRANK +DRAPE +DRAPED +DRAPER +DRAPERIES +DRAPERS +DRAPERY +DRAPES +DRASTIC +DRASTICALLY +DRAUGHT +DRAUGHTS +DRAVIDIAN +DRAW +DRAWBACK +DRAWBACKS +DRAWBRIDGE +DRAWBRIDGES +DRAWER +DRAWERS +DRAWING +DRAWINGS +DRAWL +DRAWLED +DRAWLING +DRAWLS +DRAWN +DRAWNLY +DRAWNNESS +DRAWS +DREAD +DREADED +DREADFUL +DREADFULLY +DREADING +DREADNOUGHT +DREADS +DREAM +DREAMBOAT +DREAMED +DREAMER +DREAMERS +DREAMILY +DREAMING +DREAMLIKE +DREAMS +DREAMT +DREAMY +DREARINESS +DREARY +DREDGE +DREGS +DRENCH +DRENCHED +DRENCHES +DRENCHING +DRESS +DRESSED +DRESSER +DRESSERS +DRESSES +DRESSING +DRESSINGS +DRESSMAKER +DRESSMAKERS +DREW +DREXEL +DREYFUSS +DRIED +DRIER +DRIERS +DRIES +DRIEST +DRIFT +DRIFTED +DRIFTER +DRIFTERS +DRIFTING +DRIFTS +DRILL +DRILLED +DRILLER +DRILLING +DRILLS +DRILY +DRINK +DRINKABLE +DRINKER +DRINKERS +DRINKING +DRINKS +DRIP +DRIPPING +DRIPPY +DRIPS +DRISCOLL +DRIVE +DRIVEN +DRIVER +DRIVERS +DRIVES +DRIVEWAY +DRIVEWAYS +DRIVING +DRIZZLE +DRIZZLY +DROLL +DROMEDARY +DRONE +DRONES +DROOL +DROOP +DROOPED +DROOPING +DROOPS +DROOPY +DROP +DROPLET +DROPOUT +DROPPED +DROPPER +DROPPERS +DROPPING +DROPPINGS +DROPS +DROSOPHILA +DROUGHT +DROUGHTS +DROVE +DROVER +DROVERS +DROVES +DROWN +DROWNED +DROWNING +DROWNINGS +DROWNS +DROWSINESS +DROWSY +DRUBBING +DRUDGE +DRUDGERY +DRUG +DRUGGIST +DRUGGISTS +DRUGS +DRUGSTORE +DRUM +DRUMHEAD +DRUMMED +DRUMMER +DRUMMERS +DRUMMING +DRUMMOND +DRUMS +DRUNK +DRUNKARD +DRUNKARDS +DRUNKEN +DRUNKENNESS +DRUNKER +DRUNKLY +DRUNKS +DRURY +DRY +DRYDEN +DRYING +DRYLY +DUAL +DUALISM +DUALITIES +DUALITY +DUANE +DUB +DUBBED +DUBHE +DUBIOUS +DUBIOUSLY +DUBIOUSNESS +DUBLIN +DUBS +DUBUQUE +DUCHESS +DUCHESSES +DUCHY +DUCK +DUCKED +DUCKING +DUCKLING +DUCKS +DUCT +DUCTS +DUD +DUDLEY +DUE +DUEL +DUELING +DUELS +DUES +DUET +DUFFY +DUG +DUGAN +DUKE +DUKES +DULL +DULLED +DULLER +DULLES +DULLEST +DULLING +DULLNESS +DULLS +DULLY +DULUTH +DULY +DUMB +DUMBBELL +DUMBBELLS +DUMBER +DUMBEST +DUMBLY +DUMBNESS +DUMMIES +DUMMY +DUMP +DUMPED +DUMPER +DUMPING +DUMPS +DUMPTY +DUNBAR +DUNCAN +DUNCE +DUNCES +DUNDEE +DUNE +DUNEDIN +DUNES +DUNG +DUNGEON +DUNGEONS +DUNHAM +DUNK +DUNKIRK +DUNLAP +DUNLOP +DUNN +DUNNE +DUPE +DUPLEX +DUPLICABLE +DUPLICATE +DUPLICATED +DUPLICATES +DUPLICATING +DUPLICATION +DUPLICATIONS +DUPLICATOR +DUPLICATORS +DUPLICITY +DUPONT +DUPONT +DUPONTS +DUPONTS +DUQUESNE +DURABILITIES +DURABILITY +DURABLE +DURABLY +DURANGO +DURATION +DURATIONS +DURER +DURERS +DURESS +DURHAM +DURING +DURKEE +DURKIN +DURRELL +DURWARD +DUSENBERG +DUSENBURY +DUSK +DUSKINESS +DUSKY +DUSSELDORF +DUST +DUSTBIN +DUSTED +DUSTER +DUSTERS +DUSTIER +DUSTIEST +DUSTIN +DUSTING +DUSTS +DUSTY +DUTCH +DUTCHESS +DUTCHMAN +DUTCHMEN +DUTIES +DUTIFUL +DUTIFULLY +DUTIFULNESS +DUTTON +DUTY +DVORAK +DWARF +DWARFED +DWARFS +DWARVES +DWELL +DWELLED +DWELLER +DWELLERS +DWELLING +DWELLINGS +DWELLS +DWELT +DWIGHT +DWINDLE +DWINDLED +DWINDLING +DWYER +DYAD +DYADIC +DYE +DYED +DYEING +DYER +DYERS +DYES +DYING +DYKE +DYLAN +DYNAMIC +DYNAMICALLY +DYNAMICS +DYNAMISM +DYNAMITE +DYNAMITED +DYNAMITES +DYNAMITING +DYNAMO +DYNASTIC +DYNASTIES +DYNASTY +DYNE +DYSENTERY +DYSPEPTIC +DYSTROPHY +EACH +EAGAN +EAGER +EAGERLY +EAGERNESS +EAGLE +EAGLES +EAR +EARDRUM +EARED +EARL +EARLIER +EARLIEST +EARLINESS +EARLS +EARLY +EARMARK +EARMARKED +EARMARKING +EARMARKINGS +EARMARKS +EARN +EARNED +EARNER +EARNERS +EARNEST +EARNESTLY +EARNESTNESS +EARNING +EARNINGS +EARNS +EARP +EARPHONE +EARRING +EARRINGS +EARS +EARSPLITTING +EARTH +EARTHEN +EARTHENWARE +EARTHLINESS +EARTHLING +EARTHLY +EARTHMAN +EARTHMEN +EARTHMOVER +EARTHQUAKE +EARTHQUAKES +EARTHS +EARTHWORM +EARTHWORMS +EARTHY +EASE +EASED +EASEL +EASEMENT +EASEMENTS +EASES +EASIER +EASIEST +EASILY +EASINESS +EASING +EAST +EASTBOUND +EASTER +EASTERN +EASTERNER +EASTERNERS +EASTERNMOST +EASTHAMPTON +EASTLAND +EASTMAN +EASTWARD +EASTWARDS +EASTWICK +EASTWOOD +EASY +EASYGOING +EAT +EATEN +EATER +EATERS +EATING +EATINGS +EATON +EATS +EAVES +EAVESDROP +EAVESDROPPED +EAVESDROPPER +EAVESDROPPERS +EAVESDROPPING +EAVESDROPS +EBB +EBBING +EBBS +EBEN +EBONY +ECCENTRIC +ECCENTRICITIES +ECCENTRICITY +ECCENTRICS +ECCLES +ECCLESIASTICAL +ECHELON +ECHO +ECHOED +ECHOES +ECHOING +ECLECTIC +ECLIPSE +ECLIPSED +ECLIPSES +ECLIPSING +ECLIPTIC +ECOLE +ECOLOGY +ECONOMETRIC +ECONOMETRICA +ECONOMIC +ECONOMICAL +ECONOMICALLY +ECONOMICS +ECONOMIES +ECONOMIST +ECONOMISTS +ECONOMIZE +ECONOMIZED +ECONOMIZER +ECONOMIZERS +ECONOMIZES +ECONOMIZING +ECONOMY +ECOSYSTEM +ECSTASY +ECSTATIC +ECUADOR +ECUADORIAN +EDDIE +EDDIES +EDDY +EDEN +EDENIZATION +EDENIZATIONS +EDENIZE +EDENIZES +EDGAR +EDGE +EDGED +EDGERTON +EDGES +EDGEWATER +EDGEWOOD +EDGING +EDIBLE +EDICT +EDICTS +EDIFICE +EDIFICES +EDINBURGH +EDISON +EDIT +EDITED +EDITH +EDITING +EDITION +EDITIONS +EDITOR +EDITORIAL +EDITORIALLY +EDITORIALS +EDITORS +EDITS +EDMONDS +EDMONDSON +EDMONTON +EDMUND +EDNA +EDSGER +EDUARD +EDUARDO +EDUCABLE +EDUCATE +EDUCATED +EDUCATES +EDUCATING +EDUCATION +EDUCATIONAL +EDUCATIONALLY +EDUCATIONS +EDUCATOR +EDUCATORS +EDWARD +EDWARDIAN +EDWARDINE +EDWARDS +EDWIN +EDWINA +EEL +EELGRASS +EELS +EERIE +EERILY +EFFECT +EFFECTED +EFFECTING +EFFECTIVE +EFFECTIVELY +EFFECTIVENESS +EFFECTOR +EFFECTORS +EFFECTS +EFFECTUALLY +EFFECTUATE +EFFEMINATE +EFFICACY +EFFICIENCIES +EFFICIENCY +EFFICIENT +EFFICIENTLY +EFFIE +EFFIGY +EFFORT +EFFORTLESS +EFFORTLESSLY +EFFORTLESSNESS +EFFORTS +EGALITARIAN +EGAN +EGG +EGGED +EGGHEAD +EGGING +EGGPLANT +EGGS +EGGSHELL +EGO +EGOCENTRIC +EGOS +EGOTISM +EGOTIST +EGYPT +EGYPTIAN +EGYPTIANIZATION +EGYPTIANIZATIONS +EGYPTIANIZE +EGYPTIANIZES +EGYPTIANS +EGYPTIZE +EGYPTIZES +EGYPTOLOGY +EHRLICH +EICHMANN +EIFFEL +EIGENFUNCTION +EIGENSTATE +EIGENVALUE +EIGENVALUES +EIGENVECTOR +EIGHT +EIGHTEEN +EIGHTEENS +EIGHTEENTH +EIGHTFOLD +EIGHTH +EIGHTHES +EIGHTIES +EIGHTIETH +EIGHTS +EIGHTY +EILEEN +EINSTEIN +EINSTEINIAN +EIRE +EISENHOWER +EISNER +EITHER +EJACULATE +EJACULATED +EJACULATES +EJACULATING +EJACULATION +EJACULATIONS +EJECT +EJECTED +EJECTING +EJECTS +EKBERG +EKE +EKED +EKES +EKSTROM +EKTACHROME +ELABORATE +ELABORATED +ELABORATELY +ELABORATENESS +ELABORATES +ELABORATING +ELABORATION +ELABORATIONS +ELABORATORS +ELAINE +ELAPSE +ELAPSED +ELAPSES +ELAPSING +ELASTIC +ELASTICALLY +ELASTICITY +ELBA +ELBOW +ELBOWING +ELBOWS +ELDER +ELDERLY +ELDERS +ELDEST +ELDON +ELEANOR +ELEAZAR +ELECT +ELECTED +ELECTING +ELECTION +ELECTIONS +ELECTIVE +ELECTIVES +ELECTOR +ELECTORAL +ELECTORATE +ELECTORS +ELECTRA +ELECTRIC +ELECTRICAL +ELECTRICALLY +ELECTRICALNESS +ELECTRICIAN +ELECTRICITY +ELECTRIFICATION +ELECTRIFY +ELECTRIFYING +ELECTRO +ELECTROCARDIOGRAM +ELECTROCARDIOGRAPH +ELECTROCUTE +ELECTROCUTED +ELECTROCUTES +ELECTROCUTING +ELECTROCUTION +ELECTROCUTIONS +ELECTRODE +ELECTRODES +ELECTROENCEPHALOGRAM +ELECTROENCEPHALOGRAPH +ELECTROENCEPHALOGRAPHY +ELECTROLYSIS +ELECTROLYTE +ELECTROLYTES +ELECTROLYTIC +ELECTROMAGNETIC +ELECTROMECHANICAL +ELECTRON +ELECTRONIC +ELECTRONICALLY +ELECTRONICS +ELECTRONS +ELECTROPHORESIS +ELECTROPHORUS +ELECTS +ELEGANCE +ELEGANT +ELEGANTLY +ELEGY +ELEMENT +ELEMENTAL +ELEMENTALS +ELEMENTARY +ELEMENTS +ELENA +ELEPHANT +ELEPHANTS +ELEVATE +ELEVATED +ELEVATES +ELEVATION +ELEVATOR +ELEVATORS +ELEVEN +ELEVENS +ELEVENTH +ELF +ELGIN +ELI +ELICIT +ELICITED +ELICITING +ELICITS +ELIDE +ELIGIBILITY +ELIGIBLE +ELIJAH +ELIMINATE +ELIMINATED +ELIMINATES +ELIMINATING +ELIMINATION +ELIMINATIONS +ELIMINATOR +ELIMINATORS +ELINOR +ELIOT +ELISABETH +ELISHA +ELISION +ELITE +ELITIST +ELIZABETH +ELIZABETHAN +ELIZABETHANIZE +ELIZABETHANIZES +ELIZABETHANS +ELK +ELKHART +ELKS +ELLA +ELLEN +ELLIE +ELLIOT +ELLIOTT +ELLIPSE +ELLIPSES +ELLIPSIS +ELLIPSOID +ELLIPSOIDAL +ELLIPSOIDS +ELLIPTIC +ELLIPTICAL +ELLIPTICALLY +ELLIS +ELLISON +ELLSWORTH +ELLWOOD +ELM +ELMER +ELMHURST +ELMIRA +ELMS +ELMSFORD +ELOISE +ELOPE +ELOQUENCE +ELOQUENT +ELOQUENTLY +ELROY +ELSE +ELSEVIER +ELSEWHERE +ELSIE +ELSINORE +ELTON +ELUCIDATE +ELUCIDATED +ELUCIDATES +ELUCIDATING +ELUCIDATION +ELUDE +ELUDED +ELUDES +ELUDING +ELUSIVE +ELUSIVELY +ELUSIVENESS +ELVES +ELVIS +ELY +ELYSEE +ELYSEES +ELYSIUM +EMACIATE +EMACIATED +EMACS +EMANATE +EMANATING +EMANCIPATE +EMANCIPATION +EMANUEL +EMASCULATE +EMBALM +EMBARGO +EMBARGOES +EMBARK +EMBARKED +EMBARKS +EMBARRASS +EMBARRASSED +EMBARRASSES +EMBARRASSING +EMBARRASSMENT +EMBASSIES +EMBASSY +EMBED +EMBEDDED +EMBEDDING +EMBEDS +EMBELLISH +EMBELLISHED +EMBELLISHES +EMBELLISHING +EMBELLISHMENT +EMBELLISHMENTS +EMBER +EMBEZZLE +EMBLEM +EMBODIED +EMBODIES +EMBODIMENT +EMBODIMENTS +EMBODY +EMBODYING +EMBOLDEN +EMBRACE +EMBRACED +EMBRACES +EMBRACING +EMBROIDER +EMBROIDERED +EMBROIDERIES +EMBROIDERS +EMBROIDERY +EMBROIL +EMBRYO +EMBRYOLOGY +EMBRYOS +EMERALD +EMERALDS +EMERGE +EMERGED +EMERGENCE +EMERGENCIES +EMERGENCY +EMERGENT +EMERGES +EMERGING +EMERITUS +EMERSON +EMERY +EMIGRANT +EMIGRANTS +EMIGRATE +EMIGRATED +EMIGRATES +EMIGRATING +EMIGRATION +EMIL +EMILE +EMILIO +EMILY +EMINENCE +EMINENT +EMINENTLY +EMISSARY +EMISSION +EMIT +EMITS +EMITTED +EMITTER +EMITTING +EMMA +EMMANUEL +EMMETT +EMORY +EMOTION +EMOTIONAL +EMOTIONALLY +EMOTIONS +EMPATHY +EMPEROR +EMPERORS +EMPHASES +EMPHASIS +EMPHASIZE +EMPHASIZED +EMPHASIZES +EMPHASIZING +EMPHATIC +EMPHATICALLY +EMPIRE +EMPIRES +EMPIRICAL +EMPIRICALLY +EMPIRICIST +EMPIRICISTS +EMPLOY +EMPLOYABLE +EMPLOYED +EMPLOYEE +EMPLOYEES +EMPLOYER +EMPLOYERS +EMPLOYING +EMPLOYMENT +EMPLOYMENTS +EMPLOYS +EMPORIUM +EMPOWER +EMPOWERED +EMPOWERING +EMPOWERS +EMPRESS +EMPTIED +EMPTIER +EMPTIES +EMPTIEST +EMPTILY +EMPTINESS +EMPTY +EMPTYING +EMULATE +EMULATED +EMULATES +EMULATING +EMULATION +EMULATIONS +EMULATOR +EMULATORS +ENABLE +ENABLED +ENABLER +ENABLERS +ENABLES +ENABLING +ENACT +ENACTED +ENACTING +ENACTMENT +ENACTS +ENAMEL +ENAMELED +ENAMELING +ENAMELS +ENCAMP +ENCAMPED +ENCAMPING +ENCAMPS +ENCAPSULATE +ENCAPSULATED +ENCAPSULATES +ENCAPSULATING +ENCAPSULATION +ENCASED +ENCHANT +ENCHANTED +ENCHANTER +ENCHANTING +ENCHANTMENT +ENCHANTRESS +ENCHANTS +ENCIPHER +ENCIPHERED +ENCIPHERING +ENCIPHERS +ENCIRCLE +ENCIRCLED +ENCIRCLES +ENCLOSE +ENCLOSED +ENCLOSES +ENCLOSING +ENCLOSURE +ENCLOSURES +ENCODE +ENCODED +ENCODER +ENCODERS +ENCODES +ENCODING +ENCODINGS +ENCOMPASS +ENCOMPASSED +ENCOMPASSES +ENCOMPASSING +ENCORE +ENCOUNTER +ENCOUNTERED +ENCOUNTERING +ENCOUNTERS +ENCOURAGE +ENCOURAGED +ENCOURAGEMENT +ENCOURAGEMENTS +ENCOURAGES +ENCOURAGING +ENCOURAGINGLY +ENCROACH +ENCRUST +ENCRYPT +ENCRYPTED +ENCRYPTING +ENCRYPTION +ENCRYPTIONS +ENCRYPTS +ENCUMBER +ENCUMBERED +ENCUMBERING +ENCUMBERS +ENCYCLOPEDIA +ENCYCLOPEDIAS +ENCYCLOPEDIC +END +ENDANGER +ENDANGERED +ENDANGERING +ENDANGERS +ENDEAR +ENDEARED +ENDEARING +ENDEARS +ENDEAVOR +ENDEAVORED +ENDEAVORING +ENDEAVORS +ENDED +ENDEMIC +ENDER +ENDERS +ENDGAME +ENDICOTT +ENDING +ENDINGS +ENDLESS +ENDLESSLY +ENDLESSNESS +ENDORSE +ENDORSED +ENDORSEMENT +ENDORSES +ENDORSING +ENDOW +ENDOWED +ENDOWING +ENDOWMENT +ENDOWMENTS +ENDOWS +ENDPOINT +ENDS +ENDURABLE +ENDURABLY +ENDURANCE +ENDURE +ENDURED +ENDURES +ENDURING +ENDURINGLY +ENEMA +ENEMAS +ENEMIES +ENEMY +ENERGETIC +ENERGIES +ENERGIZE +ENERGY +ENERVATE +ENFEEBLE +ENFIELD +ENFORCE +ENFORCEABLE +ENFORCED +ENFORCEMENT +ENFORCER +ENFORCERS +ENFORCES +ENFORCING +ENFRANCHISE +ENG +ENGAGE +ENGAGED +ENGAGEMENT +ENGAGEMENTS +ENGAGES +ENGAGING +ENGAGINGLY +ENGEL +ENGELS +ENGENDER +ENGENDERED +ENGENDERING +ENGENDERS +ENGINE +ENGINEER +ENGINEERED +ENGINEERING +ENGINEERS +ENGINES +ENGLAND +ENGLANDER +ENGLANDERS +ENGLE +ENGLEWOOD +ENGLISH +ENGLISHIZE +ENGLISHIZES +ENGLISHMAN +ENGLISHMEN +ENGRAVE +ENGRAVED +ENGRAVER +ENGRAVES +ENGRAVING +ENGRAVINGS +ENGROSS +ENGROSSED +ENGROSSING +ENGULF +ENHANCE +ENHANCED +ENHANCEMENT +ENHANCEMENTS +ENHANCES +ENHANCING +ENID +ENIGMA +ENIGMATIC +ENJOIN +ENJOINED +ENJOINING +ENJOINS +ENJOY +ENJOYABLE +ENJOYABLY +ENJOYED +ENJOYING +ENJOYMENT +ENJOYS +ENLARGE +ENLARGED +ENLARGEMENT +ENLARGEMENTS +ENLARGER +ENLARGERS +ENLARGES +ENLARGING +ENLIGHTEN +ENLIGHTENED +ENLIGHTENING +ENLIGHTENMENT +ENLIST +ENLISTED +ENLISTMENT +ENLISTS +ENLIVEN +ENLIVENED +ENLIVENING +ENLIVENS +ENMITIES +ENMITY +ENNOBLE +ENNOBLED +ENNOBLES +ENNOBLING +ENNUI +ENOCH +ENORMITIES +ENORMITY +ENORMOUS +ENORMOUSLY +ENOS +ENOUGH +ENQUEUE +ENQUEUED +ENQUEUES +ENQUIRE +ENQUIRED +ENQUIRER +ENQUIRES +ENQUIRY +ENRAGE +ENRAGED +ENRAGES +ENRAGING +ENRAPTURE +ENRICH +ENRICHED +ENRICHES +ENRICHING +ENRICO +ENROLL +ENROLLED +ENROLLING +ENROLLMENT +ENROLLMENTS +ENROLLS +ENSEMBLE +ENSEMBLES +ENSIGN +ENSIGNS +ENSLAVE +ENSLAVED +ENSLAVES +ENSLAVING +ENSNARE +ENSNARED +ENSNARES +ENSNARING +ENSOLITE +ENSUE +ENSUED +ENSUES +ENSUING +ENSURE +ENSURED +ENSURER +ENSURERS +ENSURES +ENSURING +ENTAIL +ENTAILED +ENTAILING +ENTAILS +ENTANGLE +ENTER +ENTERED +ENTERING +ENTERPRISE +ENTERPRISES +ENTERPRISING +ENTERS +ENTERTAIN +ENTERTAINED +ENTERTAINER +ENTERTAINERS +ENTERTAINING +ENTERTAININGLY +ENTERTAINMENT +ENTERTAINMENTS +ENTERTAINS +ENTHUSIASM +ENTHUSIASMS +ENTHUSIAST +ENTHUSIASTIC +ENTHUSIASTICALLY +ENTHUSIASTS +ENTICE +ENTICED +ENTICER +ENTICERS +ENTICES +ENTICING +ENTIRE +ENTIRELY +ENTIRETIES +ENTIRETY +ENTITIES +ENTITLE +ENTITLED +ENTITLES +ENTITLING +ENTITY +ENTOMB +ENTRANCE +ENTRANCED +ENTRANCES +ENTRAP +ENTREAT +ENTREATED +ENTREATY +ENTREE +ENTRENCH +ENTRENCHED +ENTRENCHES +ENTRENCHING +ENTREPRENEUR +ENTREPRENEURIAL +ENTREPRENEURS +ENTRIES +ENTROPY +ENTRUST +ENTRUSTED +ENTRUSTING +ENTRUSTS +ENTRY +ENUMERABLE +ENUMERATE +ENUMERATED +ENUMERATES +ENUMERATING +ENUMERATION +ENUMERATIVE +ENUMERATOR +ENUMERATORS +ENUNCIATION +ENVELOP +ENVELOPE +ENVELOPED +ENVELOPER +ENVELOPES +ENVELOPING +ENVELOPS +ENVIED +ENVIES +ENVIOUS +ENVIOUSLY +ENVIOUSNESS +ENVIRON +ENVIRONING +ENVIRONMENT +ENVIRONMENTAL +ENVIRONMENTS +ENVIRONS +ENVISAGE +ENVISAGED +ENVISAGES +ENVISION +ENVISIONED +ENVISIONING +ENVISIONS +ENVOY +ENVOYS +ENVY +ENZYME +EOCENE +EPAULET +EPAULETS +EPHEMERAL +EPHESIAN +EPHESIANS +EPHESUS +EPHRAIM +EPIC +EPICENTER +EPICS +EPICUREAN +EPICURIZE +EPICURIZES +EPICURUS +EPIDEMIC +EPIDEMICS +EPIDERMIS +EPIGRAM +EPILEPTIC +EPILOGUE +EPIPHANY +EPISCOPAL +EPISCOPALIAN +EPISCOPALIANIZE +EPISCOPALIANIZES +EPISODE +EPISODES +EPISTEMOLOGICAL +EPISTEMOLOGY +EPISTLE +EPISTLES +EPITAPH +EPITAPHS +EPITAXIAL +EPITAXIALLY +EPITHET +EPITHETS +EPITOMIZE +EPITOMIZED +EPITOMIZES +EPITOMIZING +EPOCH +EPOCHS +EPSILON +EPSOM +EPSTEIN +EQUAL +EQUALED +EQUALING +EQUALITIES +EQUALITY +EQUALIZATION +EQUALIZE +EQUALIZED +EQUALIZER +EQUALIZERS +EQUALIZES +EQUALIZING +EQUALLY +EQUALS +EQUATE +EQUATED +EQUATES +EQUATING +EQUATION +EQUATIONS +EQUATOR +EQUATORIAL +EQUATORS +EQUESTRIAN +EQUIDISTANT +EQUILATERAL +EQUILIBRATE +EQUILIBRIA +EQUILIBRIUM +EQUILIBRIUMS +EQUINOX +EQUIP +EQUIPMENT +EQUIPOISE +EQUIPPED +EQUIPPING +EQUIPS +EQUITABLE +EQUITABLY +EQUITY +EQUIVALENCE +EQUIVALENCES +EQUIVALENT +EQUIVALENTLY +EQUIVALENTS +EQUIVOCAL +EQUIVOCALLY +ERA +ERADICATE +ERADICATED +ERADICATES +ERADICATING +ERADICATION +ERAS +ERASABLE +ERASE +ERASED +ERASER +ERASERS +ERASES +ERASING +ERASMUS +ERASTUS +ERASURE +ERATO +ERATOSTHENES +ERE +ERECT +ERECTED +ERECTING +ERECTION +ERECTIONS +ERECTOR +ERECTORS +ERECTS +ERG +ERGO +ERGODIC +ERIC +ERICH +ERICKSON +ERICSSON +ERIE +ERIK +ERIKSON +ERIS +ERLANG +ERLENMEYER +ERLENMEYERS +ERMINE +ERMINES +ERNE +ERNEST +ERNESTINE +ERNIE +ERNST +ERODE +EROS +EROSION +EROTIC +EROTICA +ERR +ERRAND +ERRANT +ERRATA +ERRATIC +ERRATUM +ERRED +ERRING +ERRINGLY +ERROL +ERRONEOUS +ERRONEOUSLY +ERRONEOUSNESS +ERROR +ERRORS +ERRS +ERSATZ +ERSKINE +ERUDITE +ERUPT +ERUPTION +ERVIN +ERWIN +ESCALATE +ESCALATED +ESCALATES +ESCALATING +ESCALATION +ESCAPABLE +ESCAPADE +ESCAPADES +ESCAPE +ESCAPED +ESCAPEE +ESCAPEES +ESCAPES +ESCAPING +ESCHERICHIA +ESCHEW +ESCHEWED +ESCHEWING +ESCHEWS +ESCORT +ESCORTED +ESCORTING +ESCORTS +ESCROW +ESKIMO +ESKIMOIZED +ESKIMOIZEDS +ESKIMOS +ESMARK +ESOTERIC +ESPAGNOL +ESPECIAL +ESPECIALLY +ESPIONAGE +ESPOSITO +ESPOUSE +ESPOUSED +ESPOUSES +ESPOUSING +ESPRIT +ESPY +ESQUIRE +ESQUIRES +ESSAY +ESSAYED +ESSAYS +ESSEN +ESSENCE +ESSENCES +ESSENIZE +ESSENIZES +ESSENTIAL +ESSENTIALLY +ESSENTIALS +ESSEX +ESTABLISH +ESTABLISHED +ESTABLISHES +ESTABLISHING +ESTABLISHMENT +ESTABLISHMENTS +ESTATE +ESTATES +ESTEEM +ESTEEMED +ESTEEMING +ESTEEMS +ESTELLA +ESTES +ESTHER +ESTHETICS +ESTIMATE +ESTIMATED +ESTIMATES +ESTIMATING +ESTIMATION +ESTIMATIONS +ESTONIA +ESTONIAN +ETCH +ETCHING +ETERNAL +ETERNALLY +ETERNITIES +ETERNITY +ETHAN +ETHEL +ETHER +ETHEREAL +ETHEREALLY +ETHERNET +ETHERNETS +ETHERS +ETHIC +ETHICAL +ETHICALLY +ETHICS +ETHIOPIA +ETHIOPIANS +ETHNIC +ETIQUETTE +ETRURIA +ETRUSCAN +ETYMOLOGY +EUCALYPTUS +EUCHARIST +EUCLID +EUCLIDEAN +EUGENE +EUGENIA +EULER +EULERIAN +EUMENIDES +EUNICE +EUNUCH +EUNUCHS +EUPHEMISM +EUPHEMISMS +EUPHORIA +EUPHORIC +EUPHRATES +EURASIA +EURASIAN +EUREKA +EURIPIDES +EUROPA +EUROPE +EUROPEAN +EUROPEANIZATION +EUROPEANIZATIONS +EUROPEANIZE +EUROPEANIZED +EUROPEANIZES +EUROPEANS +EURYDICE +EUTERPE +EUTHANASIA +EVA +EVACUATE +EVACUATED +EVACUATION +EVADE +EVADED +EVADES +EVADING +EVALUATE +EVALUATED +EVALUATES +EVALUATING +EVALUATION +EVALUATIONS +EVALUATIVE +EVALUATOR +EVALUATORS +EVANGELINE +EVANS +EVANSTON +EVANSVILLE +EVAPORATE +EVAPORATED +EVAPORATING +EVAPORATION +EVAPORATIVE +EVASION +EVASIVE +EVE +EVELYN +EVEN +EVENED +EVENHANDED +EVENHANDEDLY +EVENHANDEDNESS +EVENING +EVENINGS +EVENLY +EVENNESS +EVENS +EVENSEN +EVENT +EVENTFUL +EVENTFULLY +EVENTS +EVENTUAL +EVENTUALITIES +EVENTUALITY +EVENTUALLY +EVER +EVEREADY +EVEREST +EVERETT +EVERGLADE +EVERGLADES +EVERGREEN +EVERHART +EVERLASTING +EVERLASTINGLY +EVERMORE +EVERY +EVERYBODY +EVERYDAY +EVERYONE +EVERYTHING +EVERYWHERE +EVICT +EVICTED +EVICTING +EVICTION +EVICTIONS +EVICTS +EVIDENCE +EVIDENCED +EVIDENCES +EVIDENCING +EVIDENT +EVIDENTLY +EVIL +EVILLER +EVILLY +EVILS +EVINCE +EVINCED +EVINCES +EVOKE +EVOKED +EVOKES +EVOKING +EVOLUTE +EVOLUTES +EVOLUTION +EVOLUTIONARY +EVOLUTIONS +EVOLVE +EVOLVED +EVOLVES +EVOLVING +EWE +EWEN +EWES +EWING +EXACERBATE +EXACERBATED +EXACERBATES +EXACERBATING +EXACERBATION +EXACERBATIONS +EXACT +EXACTED +EXACTING +EXACTINGLY +EXACTION +EXACTIONS +EXACTITUDE +EXACTLY +EXACTNESS +EXACTS +EXAGGERATE +EXAGGERATED +EXAGGERATES +EXAGGERATING +EXAGGERATION +EXAGGERATIONS +EXALT +EXALTATION +EXALTED +EXALTING +EXALTS +EXAM +EXAMINATION +EXAMINATIONS +EXAMINE +EXAMINED +EXAMINER +EXAMINERS +EXAMINES +EXAMINING +EXAMPLE +EXAMPLES +EXAMS +EXASPERATE +EXASPERATED +EXASPERATES +EXASPERATING +EXASPERATION +EXCAVATE +EXCAVATED +EXCAVATES +EXCAVATING +EXCAVATION +EXCAVATIONS +EXCEED +EXCEEDED +EXCEEDING +EXCEEDINGLY +EXCEEDS +EXCEL +EXCELLED +EXCELLENCE +EXCELLENCES +EXCELLENCY +EXCELLENT +EXCELLENTLY +EXCELLING +EXCELS +EXCEPT +EXCEPTED +EXCEPTING +EXCEPTION +EXCEPTIONABLE +EXCEPTIONAL +EXCEPTIONALLY +EXCEPTIONS +EXCEPTS +EXCERPT +EXCERPTED +EXCERPTS +EXCESS +EXCESSES +EXCESSIVE +EXCESSIVELY +EXCHANGE +EXCHANGEABLE +EXCHANGED +EXCHANGES +EXCHANGING +EXCHEQUER +EXCHEQUERS +EXCISE +EXCISED +EXCISES +EXCISING +EXCISION +EXCITABLE +EXCITATION +EXCITATIONS +EXCITE +EXCITED +EXCITEDLY +EXCITEMENT +EXCITES +EXCITING +EXCITINGLY +EXCITON +EXCLAIM +EXCLAIMED +EXCLAIMER +EXCLAIMERS +EXCLAIMING +EXCLAIMS +EXCLAMATION +EXCLAMATIONS +EXCLAMATORY +EXCLUDE +EXCLUDED +EXCLUDES +EXCLUDING +EXCLUSION +EXCLUSIONARY +EXCLUSIONS +EXCLUSIVE +EXCLUSIVELY +EXCLUSIVENESS +EXCLUSIVITY +EXCOMMUNICATE +EXCOMMUNICATED +EXCOMMUNICATES +EXCOMMUNICATING +EXCOMMUNICATION +EXCRETE +EXCRETED +EXCRETES +EXCRETING +EXCRETION +EXCRETIONS +EXCRETORY +EXCRUCIATE +EXCURSION +EXCURSIONS +EXCUSABLE +EXCUSABLY +EXCUSE +EXCUSED +EXCUSES +EXCUSING +EXEC +EXECUTABLE +EXECUTE +EXECUTED +EXECUTES +EXECUTING +EXECUTION +EXECUTIONAL +EXECUTIONER +EXECUTIONS +EXECUTIVE +EXECUTIVES +EXECUTOR +EXECUTORS +EXEMPLAR +EXEMPLARY +EXEMPLIFICATION +EXEMPLIFIED +EXEMPLIFIER +EXEMPLIFIERS +EXEMPLIFIES +EXEMPLIFY +EXEMPLIFYING +EXEMPT +EXEMPTED +EXEMPTING +EXEMPTION +EXEMPTS +EXERCISE +EXERCISED +EXERCISER +EXERCISERS +EXERCISES +EXERCISING +EXERT +EXERTED +EXERTING +EXERTION +EXERTIONS +EXERTS +EXETER +EXHALE +EXHALED +EXHALES +EXHALING +EXHAUST +EXHAUSTED +EXHAUSTEDLY +EXHAUSTING +EXHAUSTION +EXHAUSTIVE +EXHAUSTIVELY +EXHAUSTS +EXHIBIT +EXHIBITED +EXHIBITING +EXHIBITION +EXHIBITIONS +EXHIBITOR +EXHIBITORS +EXHIBITS +EXHILARATE +EXHORT +EXHORTATION +EXHORTATIONS +EXHUME +EXIGENCY +EXILE +EXILED +EXILES +EXILING +EXIST +EXISTED +EXISTENCE +EXISTENT +EXISTENTIAL +EXISTENTIALISM +EXISTENTIALIST +EXISTENTIALISTS +EXISTENTIALLY +EXISTING +EXISTS +EXIT +EXITED +EXITING +EXITS +EXODUS +EXORBITANT +EXORBITANTLY +EXORCISM +EXORCIST +EXOSKELETON +EXOTIC +EXPAND +EXPANDABLE +EXPANDED +EXPANDER +EXPANDERS +EXPANDING +EXPANDS +EXPANSE +EXPANSES +EXPANSIBLE +EXPANSION +EXPANSIONISM +EXPANSIONS +EXPANSIVE +EXPECT +EXPECTANCY +EXPECTANT +EXPECTANTLY +EXPECTATION +EXPECTATIONS +EXPECTED +EXPECTEDLY +EXPECTING +EXPECTINGLY +EXPECTS +EXPEDIENCY +EXPEDIENT +EXPEDIENTLY +EXPEDITE +EXPEDITED +EXPEDITES +EXPEDITING +EXPEDITION +EXPEDITIONS +EXPEDITIOUS +EXPEDITIOUSLY +EXPEL +EXPELLED +EXPELLING +EXPELS +EXPEND +EXPENDABLE +EXPENDED +EXPENDING +EXPENDITURE +EXPENDITURES +EXPENDS +EXPENSE +EXPENSES +EXPENSIVE +EXPENSIVELY +EXPERIENCE +EXPERIENCED +EXPERIENCES +EXPERIENCING +EXPERIMENT +EXPERIMENTAL +EXPERIMENTALLY +EXPERIMENTATION +EXPERIMENTATIONS +EXPERIMENTED +EXPERIMENTER +EXPERIMENTERS +EXPERIMENTING +EXPERIMENTS +EXPERT +EXPERTISE +EXPERTLY +EXPERTNESS +EXPERTS +EXPIRATION +EXPIRATIONS +EXPIRE +EXPIRED +EXPIRES +EXPIRING +EXPLAIN +EXPLAINABLE +EXPLAINED +EXPLAINER +EXPLAINERS +EXPLAINING +EXPLAINS +EXPLANATION +EXPLANATIONS +EXPLANATORY +EXPLETIVE +EXPLICIT +EXPLICITLY +EXPLICITNESS +EXPLODE +EXPLODED +EXPLODES +EXPLODING +EXPLOIT +EXPLOITABLE +EXPLOITATION +EXPLOITATIONS +EXPLOITED +EXPLOITER +EXPLOITERS +EXPLOITING +EXPLOITS +EXPLORATION +EXPLORATIONS +EXPLORATORY +EXPLORE +EXPLORED +EXPLORER +EXPLORERS +EXPLORES +EXPLORING +EXPLOSION +EXPLOSIONS +EXPLOSIVE +EXPLOSIVELY +EXPLOSIVES +EXPONENT +EXPONENTIAL +EXPONENTIALLY +EXPONENTIALS +EXPONENTIATE +EXPONENTIATED +EXPONENTIATES +EXPONENTIATING +EXPONENTIATION +EXPONENTIATIONS +EXPONENTS +EXPORT +EXPORTATION +EXPORTED +EXPORTER +EXPORTERS +EXPORTING +EXPORTS +EXPOSE +EXPOSED +EXPOSER +EXPOSERS +EXPOSES +EXPOSING +EXPOSITION +EXPOSITIONS +EXPOSITORY +EXPOSURE +EXPOSURES +EXPOUND +EXPOUNDED +EXPOUNDER +EXPOUNDING +EXPOUNDS +EXPRESS +EXPRESSED +EXPRESSES +EXPRESSIBILITY +EXPRESSIBLE +EXPRESSIBLY +EXPRESSING +EXPRESSION +EXPRESSIONS +EXPRESSIVE +EXPRESSIVELY +EXPRESSIVENESS +EXPRESSLY +EXPULSION +EXPUNGE +EXPUNGED +EXPUNGES +EXPUNGING +EXPURGATE +EXQUISITE +EXQUISITELY +EXQUISITENESS +EXTANT +EXTEMPORANEOUS +EXTEND +EXTENDABLE +EXTENDED +EXTENDING +EXTENDS +EXTENSIBILITY +EXTENSIBLE +EXTENSION +EXTENSIONS +EXTENSIVE +EXTENSIVELY +EXTENT +EXTENTS +EXTENUATE +EXTENUATED +EXTENUATING +EXTENUATION +EXTERIOR +EXTERIORS +EXTERMINATE +EXTERMINATED +EXTERMINATES +EXTERMINATING +EXTERMINATION +EXTERNAL +EXTERNALLY +EXTINCT +EXTINCTION +EXTINGUISH +EXTINGUISHED +EXTINGUISHER +EXTINGUISHES +EXTINGUISHING +EXTIRPATE +EXTOL +EXTORT +EXTORTED +EXTORTION +EXTRA +EXTRACT +EXTRACTED +EXTRACTING +EXTRACTION +EXTRACTIONS +EXTRACTOR +EXTRACTORS +EXTRACTS +EXTRACURRICULAR +EXTRAMARITAL +EXTRANEOUS +EXTRANEOUSLY +EXTRANEOUSNESS +EXTRAORDINARILY +EXTRAORDINARINESS +EXTRAORDINARY +EXTRAPOLATE +EXTRAPOLATED +EXTRAPOLATES +EXTRAPOLATING +EXTRAPOLATION +EXTRAPOLATIONS +EXTRAS +EXTRATERRESTRIAL +EXTRAVAGANCE +EXTRAVAGANT +EXTRAVAGANTLY +EXTRAVAGANZA +EXTREMAL +EXTREME +EXTREMELY +EXTREMES +EXTREMIST +EXTREMISTS +EXTREMITIES +EXTREMITY +EXTRICATE +EXTRINSIC +EXTROVERT +EXUBERANCE +EXULT +EXULTATION +EXXON +EYE +EYEBALL +EYEBROW +EYEBROWS +EYED +EYEFUL +EYEGLASS +EYEGLASSES +EYEING +EYELASH +EYELID +EYELIDS +EYEPIECE +EYEPIECES +EYER +EYERS +EYES +EYESIGHT +EYEWITNESS +EYEWITNESSES +EYING +EZEKIEL +EZRA +FABER +FABIAN +FABLE +FABLED +FABLES +FABRIC +FABRICATE +FABRICATED +FABRICATES +FABRICATING +FABRICATION +FABRICS +FABULOUS +FABULOUSLY +FACADE +FACADED +FACADES +FACE +FACED +FACES +FACET +FACETED +FACETS +FACIAL +FACILE +FACILELY +FACILITATE +FACILITATED +FACILITATES +FACILITATING +FACILITIES +FACILITY +FACING +FACINGS +FACSIMILE +FACSIMILES +FACT +FACTION +FACTIONS +FACTIOUS +FACTO +FACTOR +FACTORED +FACTORIAL +FACTORIES +FACTORING +FACTORIZATION +FACTORIZATIONS +FACTORS +FACTORY +FACTS +FACTUAL +FACTUALLY +FACULTIES +FACULTY +FADE +FADED +FADEOUT +FADER +FADERS +FADES +FADING +FAFNIR +FAG +FAGIN +FAGS +FAHEY +FAHRENHEIT +FAHRENHEITS +FAIL +FAILED +FAILING +FAILINGS +FAILS +FAILSOFT +FAILURE +FAILURES +FAIN +FAINT +FAINTED +FAINTER +FAINTEST +FAINTING +FAINTLY +FAINTNESS +FAINTS +FAIR +FAIRBANKS +FAIRCHILD +FAIRER +FAIREST +FAIRFAX +FAIRFIELD +FAIRIES +FAIRING +FAIRLY +FAIRMONT +FAIRNESS +FAIRPORT +FAIRS +FAIRVIEW +FAIRY +FAIRYLAND +FAITH +FAITHFUL +FAITHFULLY +FAITHFULNESS +FAITHLESS +FAITHLESSLY +FAITHLESSNESS +FAITHS +FAKE +FAKED +FAKER +FAKES +FAKING +FALCON +FALCONER +FALCONS +FALK +FALKLAND +FALKLANDS +FALL +FALLACIES +FALLACIOUS +FALLACY +FALLEN +FALLIBILITY +FALLIBLE +FALLING +FALLOPIAN +FALLOUT +FALLOW +FALLS +FALMOUTH +FALSE +FALSEHOOD +FALSEHOODS +FALSELY +FALSENESS +FALSIFICATION +FALSIFIED +FALSIFIES +FALSIFY +FALSIFYING +FALSITY +FALSTAFF +FALTER +FALTERED +FALTERS +FAME +FAMED +FAMES +FAMILIAL +FAMILIAR +FAMILIARITIES +FAMILIARITY +FAMILIARIZATION +FAMILIARIZE +FAMILIARIZED +FAMILIARIZES +FAMILIARIZING +FAMILIARLY +FAMILIARNESS +FAMILIES +FAMILISM +FAMILY +FAMINE +FAMINES +FAMISH +FAMOUS +FAMOUSLY +FAN +FANATIC +FANATICISM +FANATICS +FANCIED +FANCIER +FANCIERS +FANCIES +FANCIEST +FANCIFUL +FANCIFULLY +FANCILY +FANCINESS +FANCY +FANCYING +FANFARE +FANFOLD +FANG +FANGLED +FANGS +FANNED +FANNIES +FANNING +FANNY +FANOUT +FANS +FANTASIES +FANTASIZE +FANTASTIC +FANTASY +FAQ +FAR +FARAD +FARADAY +FARAWAY +FARBER +FARCE +FARCES +FARE +FARED +FARES +FAREWELL +FAREWELLS +FARFETCHED +FARGO +FARINA +FARING +FARKAS +FARLEY +FARM +FARMED +FARMER +FARMERS +FARMHOUSE +FARMHOUSES +FARMING +FARMINGTON +FARMLAND +FARMS +FARMYARD +FARMYARDS +FARNSWORTH +FARRELL +FARSIGHTED +FARTHER +FARTHEST +FARTHING +FASCICLE +FASCINATE +FASCINATED +FASCINATES +FASCINATING +FASCINATION +FASCISM +FASCIST +FASHION +FASHIONABLE +FASHIONABLY +FASHIONED +FASHIONING +FASHIONS +FAST +FASTED +FASTEN +FASTENED +FASTENER +FASTENERS +FASTENING +FASTENINGS +FASTENS +FASTER +FASTEST +FASTIDIOUS +FASTING +FASTNESS +FASTS +FAT +FATAL +FATALITIES +FATALITY +FATALLY +FATALS +FATE +FATED +FATEFUL +FATES +FATHER +FATHERED +FATHERLAND +FATHERLY +FATHERS +FATHOM +FATHOMED +FATHOMING +FATHOMS +FATIGUE +FATIGUED +FATIGUES +FATIGUING +FATIMA +FATNESS +FATS +FATTEN +FATTENED +FATTENER +FATTENERS +FATTENING +FATTENS +FATTER +FATTEST +FATTY +FAUCET +FAULKNER +FAULKNERIAN +FAULT +FAULTED +FAULTING +FAULTLESS +FAULTLESSLY +FAULTS +FAULTY +FAUN +FAUNA +FAUNTLEROY +FAUST +FAUSTIAN +FAUSTUS +FAVOR +FAVORABLE +FAVORABLY +FAVORED +FAVORER +FAVORING +FAVORITE +FAVORITES +FAVORITISM +FAVORS +FAWKES +FAWN +FAWNED +FAWNING +FAWNS +FAYETTE +FAYETTEVILLE +FAZE +FEAR +FEARED +FEARFUL +FEARFULLY +FEARING +FEARLESS +FEARLESSLY +FEARLESSNESS +FEARS +FEARSOME +FEASIBILITY +FEASIBLE +FEAST +FEASTED +FEASTING +FEASTS +FEAT +FEATHER +FEATHERBED +FEATHERBEDDING +FEATHERED +FEATHERER +FEATHERERS +FEATHERING +FEATHERMAN +FEATHERS +FEATHERWEIGHT +FEATHERY +FEATS +FEATURE +FEATURED +FEATURES +FEATURING +FEBRUARIES +FEBRUARY +FECUND +FED +FEDDERS +FEDERAL +FEDERALIST +FEDERALLY +FEDERALS +FEDERATION +FEDORA +FEE +FEEBLE +FEEBLENESS +FEEBLER +FEEBLEST +FEEBLY +FEED +FEEDBACK +FEEDER +FEEDERS +FEEDING +FEEDINGS +FEEDS +FEEL +FEELER +FEELERS +FEELING +FEELINGLY +FEELINGS +FEELS +FEENEY +FEES +FEET +FEIGN +FEIGNED +FEIGNING +FELDER +FELDMAN +FELICE +FELICIA +FELICITIES +FELICITY +FELINE +FELIX +FELL +FELLATIO +FELLED +FELLING +FELLINI +FELLOW +FELLOWS +FELLOWSHIP +FELLOWSHIPS +FELON +FELONIOUS +FELONY +FELT +FELTS +FEMALE +FEMALES +FEMININE +FEMININITY +FEMINISM +FEMINIST +FEMUR +FEMURS +FEN +FENCE +FENCED +FENCER +FENCERS +FENCES +FENCING +FEND +FENTON +FENWICK +FERBER +FERDINAND +FERDINANDO +FERGUSON +FERMAT +FERMENT +FERMENTATION +FERMENTATIONS +FERMENTED +FERMENTING +FERMENTS +FERMI +FERN +FERNANDO +FERNS +FEROCIOUS +FEROCIOUSLY +FEROCIOUSNESS +FEROCITY +FERREIRA +FERRER +FERRET +FERRIED +FERRIES +FERRITE +FERRY +FERTILE +FERTILELY +FERTILITY +FERTILIZATION +FERTILIZE +FERTILIZED +FERTILIZER +FERTILIZERS +FERTILIZES +FERTILIZING +FERVENT +FERVENTLY +FERVOR +FERVORS +FESS +FESTIVAL +FESTIVALS +FESTIVE +FESTIVELY +FESTIVITIES +FESTIVITY +FETAL +FETCH +FETCHED +FETCHES +FETCHING +FETCHINGLY +FETID +FETISH +FETTER +FETTERED +FETTERS +FETTLE +FETUS +FEUD +FEUDAL +FEUDALISM +FEUDS +FEVER +FEVERED +FEVERISH +FEVERISHLY +FEVERS +FEW +FEWER +FEWEST +FEWNESS +FIANCE +FIANCEE +FIASCO +FIAT +FIB +FIBBING +FIBER +FIBERGLAS +FIBERS +FIBONACCI +FIBROSITIES +FIBROSITY +FIBROUS +FIBROUSLY +FICKLE +FICKLENESS +FICTION +FICTIONAL +FICTIONALLY +FICTIONS +FICTITIOUS +FICTITIOUSLY +FIDDLE +FIDDLED +FIDDLER +FIDDLES +FIDDLESTICK +FIDDLESTICKS +FIDDLING +FIDEL +FIDELITY +FIDGET +FIDUCIAL +FIEF +FIEFDOM +FIELD +FIELDED +FIELDER +FIELDERS +FIELDING +FIELDS +FIELDWORK +FIEND +FIENDISH +FIERCE +FIERCELY +FIERCENESS +FIERCER +FIERCEST +FIERY +FIFE +FIFTEEN +FIFTEENS +FIFTEENTH +FIFTH +FIFTIES +FIFTIETH +FIFTY +FIG +FIGARO +FIGHT +FIGHTER +FIGHTERS +FIGHTING +FIGHTS +FIGS +FIGURATIVE +FIGURATIVELY +FIGURE +FIGURED +FIGURES +FIGURING +FIGURINGS +FIJI +FIJIAN +FIJIANS +FILAMENT +FILAMENTS +FILE +FILED +FILENAME +FILENAMES +FILER +FILES +FILIAL +FILIBUSTER +FILING +FILINGS +FILIPINO +FILIPINOS +FILIPPO +FILL +FILLABLE +FILLED +FILLER +FILLERS +FILLING +FILLINGS +FILLMORE +FILLS +FILLY +FILM +FILMED +FILMING +FILMS +FILTER +FILTERED +FILTERING +FILTERS +FILTH +FILTHIER +FILTHIEST +FILTHINESS +FILTHY +FIN +FINAL +FINALITY +FINALIZATION +FINALIZE +FINALIZED +FINALIZES +FINALIZING +FINALLY +FINALS +FINANCE +FINANCED +FINANCES +FINANCIAL +FINANCIALLY +FINANCIER +FINANCIERS +FINANCING +FIND +FINDER +FINDERS +FINDING +FINDINGS +FINDS +FINE +FINED +FINELY +FINENESS +FINER +FINES +FINESSE +FINESSED +FINESSING +FINEST +FINGER +FINGERED +FINGERING +FINGERINGS +FINGERNAIL +FINGERPRINT +FINGERPRINTS +FINGERS +FINGERTIP +FINICKY +FINING +FINISH +FINISHED +FINISHER +FINISHERS +FINISHES +FINISHING +FINITE +FINITELY +FINITENESS +FINK +FINLAND +FINLEY +FINN +FINNEGAN +FINNISH +FINNS +FINNY +FINS +FIORELLO +FIORI +FIR +FIRE +FIREARM +FIREARMS +FIREBOAT +FIREBREAK +FIREBUG +FIRECRACKER +FIRED +FIREFLIES +FIREFLY +FIREHOUSE +FIRELIGHT +FIREMAN +FIREMEN +FIREPLACE +FIREPLACES +FIREPOWER +FIREPROOF +FIRER +FIRERS +FIRES +FIRESIDE +FIRESTONE +FIREWALL +FIREWOOD +FIREWORKS +FIRING +FIRINGS +FIRM +FIRMAMENT +FIRMED +FIRMER +FIRMEST +FIRMING +FIRMLY +FIRMNESS +FIRMS +FIRMWARE +FIRST +FIRSTHAND +FIRSTLY +FIRSTS +FISCAL +FISCALLY +FISCHBEIN +FISCHER +FISH +FISHED +FISHER +FISHERMAN +FISHERMEN +FISHERS +FISHERY +FISHES +FISHING +FISHKILL +FISHMONGER +FISHPOND +FISHY +FISK +FISKE +FISSION +FISSURE +FISSURED +FIST +FISTED +FISTICUFF +FISTS +FIT +FITCH +FITCHBURG +FITFUL +FITFULLY +FITLY +FITNESS +FITS +FITTED +FITTER +FITTERS +FITTING +FITTINGLY +FITTINGS +FITZGERALD +FITZPATRICK +FITZROY +FIVE +FIVEFOLD +FIVES +FIX +FIXATE +FIXATED +FIXATES +FIXATING +FIXATION +FIXATIONS +FIXED +FIXEDLY +FIXEDNESS +FIXER +FIXERS +FIXES +FIXING +FIXINGS +FIXTURE +FIXTURES +FIZEAU +FIZZLE +FIZZLED +FLABBERGAST +FLABBERGASTED +FLACK +FLAG +FLAGELLATE +FLAGGED +FLAGGING +FLAGLER +FLAGPOLE +FLAGRANT +FLAGRANTLY +FLAGS +FLAGSTAFF +FLAIL +FLAIR +FLAK +FLAKE +FLAKED +FLAKES +FLAKING +FLAKY +FLAM +FLAMBOYANT +FLAME +FLAMED +FLAMER +FLAMERS +FLAMES +FLAMING +FLAMMABLE +FLANAGAN +FLANDERS +FLANK +FLANKED +FLANKER +FLANKING +FLANKS +FLANNEL +FLANNELS +FLAP +FLAPS +FLARE +FLARED +FLARES +FLARING +FLASH +FLASHBACK +FLASHED +FLASHER +FLASHERS +FLASHES +FLASHING +FLASHLIGHT +FLASHLIGHTS +FLASHY +FLASK +FLAT +FLATBED +FLATLY +FLATNESS +FLATS +FLATTEN +FLATTENED +FLATTENING +FLATTER +FLATTERED +FLATTERER +FLATTERING +FLATTERY +FLATTEST +FLATULENT +FLATUS +FLATWORM +FLAUNT +FLAUNTED +FLAUNTING +FLAUNTS +FLAVOR +FLAVORED +FLAVORING +FLAVORINGS +FLAVORS +FLAW +FLAWED +FLAWLESS +FLAWLESSLY +FLAWS +FLAX +FLAXEN +FLEA +FLEAS +FLED +FLEDERMAUS +FLEDGED +FLEDGLING +FLEDGLINGS +FLEE +FLEECE +FLEECES +FLEECY +FLEEING +FLEES +FLEET +FLEETEST +FLEETING +FLEETLY +FLEETNESS +FLEETS +FLEISCHMAN +FLEISHER +FLEMING +FLEMINGS +FLEMISH +FLEMISHED +FLEMISHES +FLEMISHING +FLESH +FLESHED +FLESHES +FLESHING +FLESHLY +FLESHY +FLETCHER +FLETCHERIZE +FLETCHERIZES +FLEW +FLEX +FLEXIBILITIES +FLEXIBILITY +FLEXIBLE +FLEXIBLY +FLICK +FLICKED +FLICKER +FLICKERING +FLICKING +FLICKS +FLIER +FLIERS +FLIES +FLIGHT +FLIGHTS +FLIMSY +FLINCH +FLINCHED +FLINCHES +FLINCHING +FLING +FLINGS +FLINT +FLINTY +FLIP +FLIPFLOP +FLIPPED +FLIPS +FLIRT +FLIRTATION +FLIRTATIOUS +FLIRTED +FLIRTING +FLIRTS +FLIT +FLITTING +FLO +FLOAT +FLOATED +FLOATER +FLOATING +FLOATS +FLOCK +FLOCKED +FLOCKING +FLOCKS +FLOG +FLOGGING +FLOOD +FLOODED +FLOODING +FLOODLIGHT +FLOODLIT +FLOODS +FLOOR +FLOORED +FLOORING +FLOORINGS +FLOORS +FLOP +FLOPPIES +FLOPPILY +FLOPPING +FLOPPY +FLOPS +FLORA +FLORAL +FLORENCE +FLORENTINE +FLORID +FLORIDA +FLORIDIAN +FLORIDIANS +FLORIN +FLORIST +FLOSS +FLOSSED +FLOSSES +FLOSSING +FLOTATION +FLOTILLA +FLOUNDER +FLOUNDERED +FLOUNDERING +FLOUNDERS +FLOUR +FLOURED +FLOURISH +FLOURISHED +FLOURISHES +FLOURISHING +FLOW +FLOWCHART +FLOWCHARTING +FLOWCHARTS +FLOWED +FLOWER +FLOWERED +FLOWERINESS +FLOWERING +FLOWERPOT +FLOWERS +FLOWERY +FLOWING +FLOWN +FLOWS +FLOYD +FLU +FLUCTUATE +FLUCTUATES +FLUCTUATING +FLUCTUATION +FLUCTUATIONS +FLUE +FLUENCY +FLUENT +FLUENTLY +FLUFF +FLUFFIER +FLUFFIEST +FLUFFY +FLUID +FLUIDITY +FLUIDLY +FLUIDS +FLUKE +FLUNG +FLUNKED +FLUORESCE +FLUORESCENT +FLURRIED +FLURRY +FLUSH +FLUSHED +FLUSHES +FLUSHING +FLUTE +FLUTED +FLUTING +FLUTTER +FLUTTERED +FLUTTERING +FLUTTERS +FLUX +FLY +FLYABLE +FLYER +FLYERS +FLYING +FLYNN +FOAL +FOAM +FOAMED +FOAMING +FOAMS +FOAMY +FOB +FOBBING +FOCAL +FOCALLY +FOCI +FOCUS +FOCUSED +FOCUSES +FOCUSING +FOCUSSED +FODDER +FOE +FOES +FOG +FOGARTY +FOGGED +FOGGIER +FOGGIEST +FOGGILY +FOGGING +FOGGY +FOGS +FOGY +FOIBLE +FOIL +FOILED +FOILING +FOILS +FOIST +FOLD +FOLDED +FOLDER +FOLDERS +FOLDING +FOLDOUT +FOLDS +FOLEY +FOLIAGE +FOLK +FOLKLORE +FOLKS +FOLKSONG +FOLKSY +FOLLIES +FOLLOW +FOLLOWED +FOLLOWER +FOLLOWERS +FOLLOWING +FOLLOWINGS +FOLLOWS +FOLLY +FOLSOM +FOMALHAUT +FOND +FONDER +FONDLE +FONDLED +FONDLES +FONDLING +FONDLY +FONDNESS +FONT +FONTAINE +FONTAINEBLEAU +FONTANA +FONTS +FOOD +FOODS +FOODSTUFF +FOODSTUFFS +FOOL +FOOLED +FOOLHARDY +FOOLING +FOOLISH +FOOLISHLY +FOOLISHNESS +FOOLPROOF +FOOLS +FOOT +FOOTAGE +FOOTBALL +FOOTBALLS +FOOTBRIDGE +FOOTE +FOOTED +FOOTER +FOOTERS +FOOTFALL +FOOTHILL +FOOTHOLD +FOOTING +FOOTMAN +FOOTNOTE +FOOTNOTES +FOOTPATH +FOOTPRINT +FOOTPRINTS +FOOTSTEP +FOOTSTEPS +FOR +FORAGE +FORAGED +FORAGES +FORAGING +FORAY +FORAYS +FORBADE +FORBEAR +FORBEARANCE +FORBEARS +FORBES +FORBID +FORBIDDEN +FORBIDDING +FORBIDS +FORCE +FORCED +FORCEFUL +FORCEFULLY +FORCEFULNESS +FORCER +FORCES +FORCIBLE +FORCIBLY +FORCING +FORD +FORDHAM +FORDS +FORE +FOREARM +FOREARMS +FOREBODING +FORECAST +FORECASTED +FORECASTER +FORECASTERS +FORECASTING +FORECASTLE +FORECASTS +FOREFATHER +FOREFATHERS +FOREFINGER +FOREFINGERS +FOREGO +FOREGOES +FOREGOING +FOREGONE +FOREGROUND +FOREHEAD +FOREHEADS +FOREIGN +FOREIGNER +FOREIGNERS +FOREIGNS +FOREMAN +FOREMOST +FORENOON +FORENSIC +FORERUNNERS +FORESEE +FORESEEABLE +FORESEEN +FORESEES +FORESIGHT +FORESIGHTED +FOREST +FORESTALL +FORESTALLED +FORESTALLING +FORESTALLMENT +FORESTALLS +FORESTED +FORESTER +FORESTERS +FORESTRY +FORESTS +FORETELL +FORETELLING +FORETELLS +FORETOLD +FOREVER +FOREWARN +FOREWARNED +FOREWARNING +FOREWARNINGS +FOREWARNS +FORFEIT +FORFEITED +FORFEITURE +FORGAVE +FORGE +FORGED +FORGER +FORGERIES +FORGERY +FORGES +FORGET +FORGETFUL +FORGETFULNESS +FORGETS +FORGETTABLE +FORGETTABLY +FORGETTING +FORGING +FORGIVABLE +FORGIVABLY +FORGIVE +FORGIVEN +FORGIVENESS +FORGIVES +FORGIVING +FORGIVINGLY +FORGOT +FORGOTTEN +FORK +FORKED +FORKING +FORKLIFT +FORKS +FORLORN +FORLORNLY +FORM +FORMAL +FORMALISM +FORMALISMS +FORMALITIES +FORMALITY +FORMALIZATION +FORMALIZATIONS +FORMALIZE +FORMALIZED +FORMALIZES +FORMALIZING +FORMALLY +FORMANT +FORMANTS +FORMAT +FORMATION +FORMATIONS +FORMATIVE +FORMATIVELY +FORMATS +FORMATTED +FORMATTER +FORMATTERS +FORMATTING +FORMED +FORMER +FORMERLY +FORMICA +FORMICAS +FORMIDABLE +FORMING +FORMOSA +FORMOSAN +FORMS +FORMULA +FORMULAE +FORMULAS +FORMULATE +FORMULATED +FORMULATES +FORMULATING +FORMULATION +FORMULATIONS +FORMULATOR +FORMULATORS +FORNICATION +FORREST +FORSAKE +FORSAKEN +FORSAKES +FORSAKING +FORSYTHE +FORT +FORTE +FORTESCUE +FORTH +FORTHCOMING +FORTHRIGHT +FORTHWITH +FORTIER +FORTIES +FORTIETH +FORTIFICATION +FORTIFICATIONS +FORTIFIED +FORTIFIES +FORTIFY +FORTIFYING +FORTIORI +FORTITUDE +FORTNIGHT +FORTNIGHTLY +FORTRAN +FORTRAN +FORTRESS +FORTRESSES +FORTS +FORTUITOUS +FORTUITOUSLY +FORTUNATE +FORTUNATELY +FORTUNE +FORTUNES +FORTY +FORUM +FORUMS +FORWARD +FORWARDED +FORWARDER +FORWARDING +FORWARDNESS +FORWARDS +FOSS +FOSSIL +FOSTER +FOSTERED +FOSTERING +FOSTERS +FOUGHT +FOUL +FOULED +FOULEST +FOULING +FOULLY +FOULMOUTH +FOULNESS +FOULS +FOUND +FOUNDATION +FOUNDATIONS +FOUNDED +FOUNDER +FOUNDERED +FOUNDERS +FOUNDING +FOUNDLING +FOUNDRIES +FOUNDRY +FOUNDS +FOUNT +FOUNTAIN +FOUNTAINS +FOUNTS +FOUR +FOURFOLD +FOURIER +FOURS +FOURSCORE +FOURSOME +FOURSQUARE +FOURTEEN +FOURTEENS +FOURTEENTH +FOURTH +FOWL +FOWLER +FOWLS +FOX +FOXES +FOXHALL +FRACTION +FRACTIONAL +FRACTIONALLY +FRACTIONS +FRACTURE +FRACTURED +FRACTURES +FRACTURING +FRAGILE +FRAGMENT +FRAGMENTARY +FRAGMENTATION +FRAGMENTED +FRAGMENTING +FRAGMENTS +FRAGRANCE +FRAGRANCES +FRAGRANT +FRAGRANTLY +FRAIL +FRAILEST +FRAILTY +FRAME +FRAMED +FRAMER +FRAMES +FRAMEWORK +FRAMEWORKS +FRAMING +FRAN +FRANC +FRANCAISE +FRANCE +FRANCES +FRANCESCA +FRANCESCO +FRANCHISE +FRANCHISES +FRANCIE +FRANCINE +FRANCIS +FRANCISCAN +FRANCISCANS +FRANCISCO +FRANCIZE +FRANCIZES +FRANCO +FRANCOIS +FRANCOISE +FRANCS +FRANK +FRANKED +FRANKEL +FRANKER +FRANKEST +FRANKFORT +FRANKFURT +FRANKIE +FRANKING +FRANKLINIZATION +FRANKLINIZATIONS +FRANKLY +FRANKNESS +FRANKS +FRANNY +FRANTIC +FRANTICALLY +FRANZ +FRASER +FRATERNAL +FRATERNALLY +FRATERNITIES +FRATERNITY +FRAU +FRAUD +FRAUDS +FRAUDULENT +FRAUGHT +FRAY +FRAYED +FRAYING +FRAYNE +FRAYS +FRAZIER +FRAZZLE +FREAK +FREAKISH +FREAKS +FRECKLE +FRECKLED +FRECKLES +FRED +FREDDIE +FREDDY +FREDERIC +FREDERICK +FREDERICKS +FREDERICKSBURG +FREDERICO +FREDERICTON +FREDHOLM +FREDRICK +FREDRICKSON +FREE +FREED +FREEDMAN +FREEDOM +FREEDOMS +FREEING +FREEINGS +FREELY +FREEMAN +FREEMASON +FREEMASONRY +FREEMASONS +FREENESS +FREEPORT +FREER +FREES +FREEST +FREESTYLE +FREETOWN +FREEWAY +FREEWHEEL +FREEZE +FREEZER +FREEZERS +FREEZES +FREEZING +FREIDA +FREIGHT +FREIGHTED +FREIGHTER +FREIGHTERS +FREIGHTING +FREIGHTS +FRENCH +FRENCHIZE +FRENCHIZES +FRENCHMAN +FRENCHMEN +FRENETIC +FRENZIED +FRENZY +FREON +FREQUENCIES +FREQUENCY +FREQUENT +FREQUENTED +FREQUENTER +FREQUENTERS +FREQUENTING +FREQUENTLY +FREQUENTS +FRESCO +FRESCOES +FRESH +FRESHEN +FRESHENED +FRESHENER +FRESHENERS +FRESHENING +FRESHENS +FRESHER +FRESHEST +FRESHLY +FRESHMAN +FRESHMEN +FRESHNESS +FRESHWATER +FRESNEL +FRESNO +FRET +FRETFUL +FRETFULLY +FRETFULNESS +FREUD +FREUDIAN +FREUDIANISM +FREUDIANISMS +FREUDIANS +FREY +FREYA +FRIAR +FRIARS +FRICATIVE +FRICATIVES +FRICK +FRICTION +FRICTIONLESS +FRICTIONS +FRIDAY +FRIDAYS +FRIED +FRIEDMAN +FRIEDRICH +FRIEND +FRIENDLESS +FRIENDLIER +FRIENDLIEST +FRIENDLINESS +FRIENDLY +FRIENDS +FRIENDSHIP +FRIENDSHIPS +FRIES +FRIESLAND +FRIEZE +FRIEZES +FRIGATE +FRIGATES +FRIGGA +FRIGHT +FRIGHTEN +FRIGHTENED +FRIGHTENING +FRIGHTENINGLY +FRIGHTENS +FRIGHTFUL +FRIGHTFULLY +FRIGHTFULNESS +FRIGID +FRIGIDAIRE +FRILL +FRILLS +FRINGE +FRINGED +FRISBEE +FRISIA +FRISIAN +FRISK +FRISKED +FRISKING +FRISKS +FRISKY +FRITO +FRITTER +FRITZ +FRIVOLITY +FRIVOLOUS +FRIVOLOUSLY +FRO +FROCK +FROCKS +FROG +FROGS +FROLIC +FROLICS +FROM +FRONT +FRONTAGE +FRONTAL +FRONTED +FRONTIER +FRONTIERS +FRONTIERSMAN +FRONTIERSMEN +FRONTING +FRONTS +FROST +FROSTBELT +FROSTBITE +FROSTBITTEN +FROSTED +FROSTING +FROSTS +FROSTY +FROTH +FROTHING +FROTHY +FROWN +FROWNED +FROWNING +FROWNS +FROZE +FROZEN +FROZENLY +FRUEHAUF +FRUGAL +FRUGALLY +FRUIT +FRUITFUL +FRUITFULLY +FRUITFULNESS +FRUITION +FRUITLESS +FRUITLESSLY +FRUITS +FRUSTRATE +FRUSTRATED +FRUSTRATES +FRUSTRATING +FRUSTRATION +FRUSTRATIONS +FRY +FRYE +FUCHS +FUCHSIA +FUDGE +FUEL +FUELED +FUELING +FUELS +FUGITIVE +FUGITIVES +FUGUE +FUJI +FUJITSU +FULBRIGHT +FULBRIGHTS +FULCRUM +FULFILL +FULFILLED +FULFILLING +FULFILLMENT +FULFILLMENTS +FULFILLS +FULL +FULLER +FULLERTON +FULLEST +FULLNESS +FULLY +FULMINATE +FULTON +FUMBLE +FUMBLED +FUMBLING +FUME +FUMED +FUMES +FUMING +FUN +FUNCTION +FUNCTIONAL +FUNCTIONALITIES +FUNCTIONALITY +FUNCTIONALLY +FUNCTIONALS +FUNCTIONARY +FUNCTIONED +FUNCTIONING +FUNCTIONS +FUNCTOR +FUNCTORS +FUND +FUNDAMENTAL +FUNDAMENTALLY +FUNDAMENTALS +FUNDED +FUNDER +FUNDERS +FUNDING +FUNDS +FUNERAL +FUNERALS +FUNEREAL +FUNGAL +FUNGI +FUNGIBLE +FUNGICIDE +FUNGUS +FUNK +FUNNEL +FUNNELED +FUNNELING +FUNNELS +FUNNIER +FUNNIEST +FUNNILY +FUNNINESS +FUNNY +FUR +FURIES +FURIOUS +FURIOUSER +FURIOUSLY +FURLONG +FURLOUGH +FURMAN +FURNACE +FURNACES +FURNISH +FURNISHED +FURNISHES +FURNISHING +FURNISHINGS +FURNITURE +FURRIER +FURROW +FURROWED +FURROWS +FURRY +FURS +FURTHER +FURTHERED +FURTHERING +FURTHERMORE +FURTHERMOST +FURTHERS +FURTHEST +FURTIVE +FURTIVELY +FURTIVENESS +FURY +FUSE +FUSED +FUSES +FUSING +FUSION +FUSS +FUSSING +FUSSY +FUTILE +FUTILITY +FUTURE +FUTURES +FUTURISTIC +FUZZ +FUZZIER +FUZZINESS +FUZZY +GAB +GABARDINE +GABBING +GABERONES +GABLE +GABLED +GABLER +GABLES +GABON +GABORONE +GABRIEL +GABRIELLE +GAD +GADFLY +GADGET +GADGETRY +GADGETS +GAELIC +GAELICIZATION +GAELICIZATIONS +GAELICIZE +GAELICIZES +GAG +GAGGED +GAGGING +GAGING +GAGS +GAIETIES +GAIETY +GAIL +GAILY +GAIN +GAINED +GAINER +GAINERS +GAINES +GAINESVILLE +GAINFUL +GAINING +GAINS +GAIT +GAITED +GAITER +GAITERS +GAITHERSBURG +GALACTIC +GALAHAD +GALAPAGOS +GALATEA +GALATEAN +GALATEANS +GALATIA +GALATIANS +GALAXIES +GALAXY +GALBREATH +GALE +GALEN +GALILEAN +GALILEE +GALILEO +GALL +GALLAGHER +GALLANT +GALLANTLY +GALLANTRY +GALLANTS +GALLED +GALLERIED +GALLERIES +GALLERY +GALLEY +GALLEYS +GALLING +GALLON +GALLONS +GALLOP +GALLOPED +GALLOPER +GALLOPING +GALLOPS +GALLOWAY +GALLOWS +GALLS +GALLSTONE +GALLUP +GALOIS +GALT +GALVESTON +GALVIN +GALWAY +GAMBIA +GAMBIT +GAMBLE +GAMBLED +GAMBLER +GAMBLERS +GAMBLES +GAMBLING +GAMBOL +GAME +GAMED +GAMELY +GAMENESS +GAMES +GAMING +GAMMA +GANDER +GANDHI +GANDHIAN +GANG +GANGES +GANGLAND +GANGLING +GANGPLANK +GANGRENE +GANGS +GANGSTER +GANGSTERS +GANNETT +GANTRY +GANYMEDE +GAP +GAPE +GAPED +GAPES +GAPING +GAPS +GARAGE +GARAGED +GARAGES +GARB +GARBAGE +GARBAGES +GARBED +GARBLE +GARBLED +GARCIA +GARDEN +GARDENED +GARDENER +GARDENERS +GARDENING +GARDENS +GARDNER +GARFIELD +GARFUNKEL +GARGANTUAN +GARGLE +GARGLED +GARGLES +GARGLING +GARIBALDI +GARLAND +GARLANDED +GARLIC +GARMENT +GARMENTS +GARNER +GARNERED +GARNETT +GARNISH +GARRETT +GARRISON +GARRISONED +GARRISONIAN +GARRY +GARTER +GARTERS +GARTH +GARVEY +GARY +GAS +GASCONY +GASEOUS +GASEOUSLY +GASES +GASH +GASHES +GASKET +GASLIGHT +GASOLINE +GASP +GASPED +GASPEE +GASPING +GASPS +GASSED +GASSER +GASSET +GASSING +GASSINGS +GASSY +GASTON +GASTRIC +GASTROINTESTINAL +GASTRONOME +GASTRONOMY +GATE +GATED +GATES +GATEWAY +GATEWAYS +GATHER +GATHERED +GATHERER +GATHERERS +GATHERING +GATHERINGS +GATHERS +GATING +GATLINBURG +GATOR +GATSBY +GAUCHE +GAUDINESS +GAUDY +GAUGE +GAUGED +GAUGES +GAUGUIN +GAUL +GAULLE +GAULS +GAUNT +GAUNTLEY +GAUNTNESS +GAUSSIAN +GAUTAMA +GAUZE +GAVE +GAVEL +GAVIN +GAWK +GAWKY +GAY +GAYER +GAYEST +GAYETY +GAYLOR +GAYLORD +GAYLY +GAYNESS +GAYNOR +GAZE +GAZED +GAZELLE +GAZER +GAZERS +GAZES +GAZETTE +GAZING +GEAR +GEARED +GEARING +GEARS +GEARY +GECKO +GEESE +GEHRIG +GEIGER +GEIGY +GEISHA +GEL +GELATIN +GELATINE +GELATINOUS +GELD +GELLED +GELLING +GELS +GEM +GEMINI +GEMINID +GEMMA +GEMS +GENDER +GENDERS +GENE +GENEALOGY +GENERAL +GENERALIST +GENERALISTS +GENERALITIES +GENERALITY +GENERALIZATION +GENERALIZATIONS +GENERALIZE +GENERALIZED +GENERALIZER +GENERALIZERS +GENERALIZES +GENERALIZING +GENERALLY +GENERALS +GENERATE +GENERATED +GENERATES +GENERATING +GENERATION +GENERATIONS +GENERATIVE +GENERATOR +GENERATORS +GENERIC +GENERICALLY +GENEROSITIES +GENEROSITY +GENEROUS +GENEROUSLY +GENEROUSNESS +GENES +GENESCO +GENESIS +GENETIC +GENETICALLY +GENEVA +GENEVIEVE +GENIAL +GENIALLY +GENIE +GENIUS +GENIUSES +GENOA +GENRE +GENRES +GENT +GENTEEL +GENTILE +GENTLE +GENTLEMAN +GENTLEMANLY +GENTLEMEN +GENTLENESS +GENTLER +GENTLEST +GENTLEWOMAN +GENTLY +GENTRY +GENUINE +GENUINELY +GENUINENESS +GENUS +GEOCENTRIC +GEODESIC +GEODESY +GEODETIC +GEOFF +GEOFFREY +GEOGRAPHER +GEOGRAPHIC +GEOGRAPHICAL +GEOGRAPHICALLY +GEOGRAPHY +GEOLOGICAL +GEOLOGIST +GEOLOGISTS +GEOLOGY +GEOMETRIC +GEOMETRICAL +GEOMETRICALLY +GEOMETRICIAN +GEOMETRIES +GEOMETRY +GEOPHYSICAL +GEOPHYSICS +GEORGE +GEORGES +GEORGETOWN +GEORGIA +GEORGIAN +GEORGIANS +GEOSYNCHRONOUS +GERALD +GERALDINE +GERANIUM +GERARD +GERBER +GERBIL +GERHARD +GERHARDT +GERIATRIC +GERM +GERMAN +GERMANE +GERMANIA +GERMANIC +GERMANS +GERMANTOWN +GERMANY +GERMICIDE +GERMINAL +GERMINATE +GERMINATED +GERMINATES +GERMINATING +GERMINATION +GERMS +GEROME +GERRY +GERSHWIN +GERSHWINS +GERTRUDE +GERUND +GESTAPO +GESTURE +GESTURED +GESTURES +GESTURING +GET +GETAWAY +GETS +GETTER +GETTERS +GETTING +GETTY +GETTYSBURG +GEYSER +GHANA +GHANIAN +GHASTLY +GHENT +GHETTO +GHOST +GHOSTED +GHOSTLY +GHOSTS +GIACOMO +GIANT +GIANTS +GIBBERISH +GIBBONS +GIBBS +GIBBY +GIBRALTAR +GIBSON +GIDDINESS +GIDDINGS +GIDDY +GIDEON +GIFFORD +GIFT +GIFTED +GIFTS +GIG +GIGABIT +GIGABITS +GIGABYTE +GIGABYTES +GIGACYCLE +GIGAHERTZ +GIGANTIC +GIGAVOLT +GIGAWATT +GIGGLE +GIGGLED +GIGGLES +GIGGLING +GIL +GILBERTSON +GILCHRIST +GILD +GILDED +GILDING +GILDS +GILEAD +GILES +GILKSON +GILL +GILLESPIE +GILLETTE +GILLIGAN +GILLS +GILMORE +GILT +GIMBEL +GIMMICK +GIMMICKS +GIN +GINA +GINGER +GINGERBREAD +GINGERLY +GINGHAM +GINGHAMS +GINN +GINO +GINS +GINSBERG +GINSBURG +GIOCONDA +GIORGIO +GIOVANNI +GIPSIES +GIPSY +GIRAFFE +GIRAFFES +GIRD +GIRDER +GIRDERS +GIRDLE +GIRL +GIRLFRIEND +GIRLIE +GIRLISH +GIRLS +GIRT +GIRTH +GIST +GIULIANO +GIUSEPPE +GIVE +GIVEAWAY +GIVEN +GIVER +GIVERS +GIVES +GIVING +GLACIAL +GLACIER +GLACIERS +GLAD +GLADDEN +GLADDER +GLADDEST +GLADE +GLADIATOR +GLADLY +GLADNESS +GLADSTONE +GLADYS +GLAMOR +GLAMOROUS +GLAMOUR +GLANCE +GLANCED +GLANCES +GLANCING +GLAND +GLANDS +GLANDULAR +GLARE +GLARED +GLARES +GLARING +GLARINGLY +GLASGOW +GLASS +GLASSED +GLASSES +GLASSY +GLASWEGIAN +GLAUCOMA +GLAZE +GLAZED +GLAZER +GLAZES +GLAZING +GLEAM +GLEAMED +GLEAMING +GLEAMS +GLEAN +GLEANED +GLEANER +GLEANING +GLEANINGS +GLEANS +GLEASON +GLEE +GLEEFUL +GLEEFULLY +GLEES +GLEN +GLENDA +GLENDALE +GLENN +GLENS +GLIDDEN +GLIDE +GLIDED +GLIDER +GLIDERS +GLIDES +GLIMMER +GLIMMERED +GLIMMERING +GLIMMERS +GLIMPSE +GLIMPSED +GLIMPSES +GLINT +GLINTED +GLINTING +GLINTS +GLISTEN +GLISTENED +GLISTENING +GLISTENS +GLITCH +GLITTER +GLITTERED +GLITTERING +GLITTERS +GLOAT +GLOBAL +GLOBALLY +GLOBE +GLOBES +GLOBULAR +GLOBULARITY +GLOOM +GLOOMILY +GLOOMY +GLORIA +GLORIANA +GLORIES +GLORIFICATION +GLORIFIED +GLORIFIES +GLORIFY +GLORIOUS +GLORIOUSLY +GLORY +GLORYING +GLOSS +GLOSSARIES +GLOSSARY +GLOSSED +GLOSSES +GLOSSING +GLOSSY +GLOTTAL +GLOUCESTER +GLOVE +GLOVED +GLOVER +GLOVERS +GLOVES +GLOVING +GLOW +GLOWED +GLOWER +GLOWERS +GLOWING +GLOWINGLY +GLOWS +GLUE +GLUED +GLUES +GLUING +GLUT +GLUTTON +GLYNN +GNASH +GNAT +GNATS +GNAW +GNAWED +GNAWING +GNAWS +GNOME +GNOMON +GNU +GOA +GOAD +GOADED +GOAL +GOALS +GOAT +GOATEE +GOATEES +GOATS +GOBBLE +GOBBLED +GOBBLER +GOBBLERS +GOBBLES +GOBI +GOBLET +GOBLETS +GOBLIN +GOBLINS +GOD +GODDARD +GODDESS +GODDESSES +GODFATHER +GODFREY +GODHEAD +GODLIKE +GODLY +GODMOTHER +GODMOTHERS +GODOT +GODPARENT +GODS +GODSEND +GODSON +GODWIN +GODZILLA +GOES +GOETHE +GOFF +GOGGLES +GOGH +GOING +GOINGS +GOLD +GOLDA +GOLDBERG +GOLDEN +GOLDENLY +GOLDENNESS +GOLDENROD +GOLDFIELD +GOLDFISH +GOLDING +GOLDMAN +GOLDS +GOLDSMITH +GOLDSTEIN +GOLDSTINE +GOLDWATER +GOLETA +GOLF +GOLFER +GOLFERS +GOLFING +GOLIATH +GOLLY +GOMEZ +GONDOLA +GONE +GONER +GONG +GONGS +GONZALES +GONZALEZ +GOOD +GOODBY +GOODBYE +GOODE +GOODIES +GOODLY +GOODMAN +GOODNESS +GOODRICH +GOODS +GOODWILL +GOODWIN +GOODY +GOODYEAR +GOOF +GOOFED +GOOFS +GOOFY +GOOSE +GOPHER +GORDIAN +GORDON +GORE +GOREN +GORGE +GORGEOUS +GORGEOUSLY +GORGES +GORGING +GORHAM +GORILLA +GORILLAS +GORKY +GORTON +GORY +GOSH +GOSPEL +GOSPELERS +GOSPELS +GOSSIP +GOSSIPED +GOSSIPING +GOSSIPS +GOT +GOTHAM +GOTHIC +GOTHICALLY +GOTHICISM +GOTHICIZE +GOTHICIZED +GOTHICIZER +GOTHICIZERS +GOTHICIZES +GOTHICIZING +GOTO +GOTOS +GOTTEN +GOTTFRIED +GOUCHER +GOUDA +GOUGE +GOUGED +GOUGES +GOUGING +GOULD +GOURD +GOURMET +GOUT +GOVERN +GOVERNANCE +GOVERNED +GOVERNESS +GOVERNING +GOVERNMENT +GOVERNMENTAL +GOVERNMENTALLY +GOVERNMENTS +GOVERNOR +GOVERNORS +GOVERNS +GOWN +GOWNED +GOWNS +GRAB +GRABBED +GRABBER +GRABBERS +GRABBING +GRABBINGS +GRABS +GRACE +GRACED +GRACEFUL +GRACEFULLY +GRACEFULNESS +GRACES +GRACIE +GRACING +GRACIOUS +GRACIOUSLY +GRACIOUSNESS +GRAD +GRADATION +GRADATIONS +GRADE +GRADED +GRADER +GRADERS +GRADES +GRADIENT +GRADIENTS +GRADING +GRADINGS +GRADUAL +GRADUALLY +GRADUATE +GRADUATED +GRADUATES +GRADUATING +GRADUATION +GRADUATIONS +GRADY +GRAFF +GRAFT +GRAFTED +GRAFTER +GRAFTING +GRAFTON +GRAFTS +GRAHAM +GRAHAMS +GRAIL +GRAIN +GRAINED +GRAINING +GRAINS +GRAM +GRAMMAR +GRAMMARIAN +GRAMMARS +GRAMMATIC +GRAMMATICAL +GRAMMATICALLY +GRAMS +GRANARIES +GRANARY +GRAND +GRANDCHILD +GRANDCHILDREN +GRANDDAUGHTER +GRANDER +GRANDEST +GRANDEUR +GRANDFATHER +GRANDFATHERS +GRANDIOSE +GRANDLY +GRANDMA +GRANDMOTHER +GRANDMOTHERS +GRANDNEPHEW +GRANDNESS +GRANDNIECE +GRANDPA +GRANDPARENT +GRANDS +GRANDSON +GRANDSONS +GRANDSTAND +GRANGE +GRANITE +GRANNY +GRANOLA +GRANT +GRANTED +GRANTEE +GRANTER +GRANTING +GRANTOR +GRANTS +GRANULARITY +GRANULATE +GRANULATED +GRANULATES +GRANULATING +GRANVILLE +GRAPE +GRAPEFRUIT +GRAPES +GRAPEVINE +GRAPH +GRAPHED +GRAPHIC +GRAPHICAL +GRAPHICALLY +GRAPHICS +GRAPHING +GRAPHITE +GRAPHS +GRAPPLE +GRAPPLED +GRAPPLING +GRASP +GRASPABLE +GRASPED +GRASPING +GRASPINGLY +GRASPS +GRASS +GRASSED +GRASSERS +GRASSES +GRASSIER +GRASSIEST +GRASSLAND +GRASSY +GRATE +GRATED +GRATEFUL +GRATEFULLY +GRATEFULNESS +GRATER +GRATES +GRATIFICATION +GRATIFIED +GRATIFY +GRATIFYING +GRATING +GRATINGS +GRATIS +GRATITUDE +GRATUITIES +GRATUITOUS +GRATUITOUSLY +GRATUITOUSNESS +GRATUITY +GRAVE +GRAVEL +GRAVELLY +GRAVELY +GRAVEN +GRAVENESS +GRAVER +GRAVES +GRAVEST +GRAVESTONE +GRAVEYARD +GRAVITATE +GRAVITATION +GRAVITATIONAL +GRAVITY +GRAVY +GRAY +GRAYED +GRAYER +GRAYEST +GRAYING +GRAYNESS +GRAYSON +GRAZE +GRAZED +GRAZER +GRAZING +GREASE +GREASED +GREASES +GREASY +GREAT +GREATER +GREATEST +GREATLY +GREATNESS +GRECIAN +GRECIANIZE +GRECIANIZES +GREECE +GREED +GREEDILY +GREEDINESS +GREEDY +GREEK +GREEKIZE +GREEKIZES +GREEKS +GREEN +GREENBELT +GREENBERG +GREENBLATT +GREENBRIAR +GREENE +GREENER +GREENERY +GREENEST +GREENFELD +GREENFIELD +GREENGROCER +GREENHOUSE +GREENHOUSES +GREENING +GREENISH +GREENLAND +GREENLY +GREENNESS +GREENS +GREENSBORO +GREENSVILLE +GREENTREE +GREENVILLE +GREENWARE +GREENWICH +GREER +GREET +GREETED +GREETER +GREETING +GREETINGS +GREETS +GREG +GREGARIOUS +GREGG +GREGORIAN +GREGORY +GRENADE +GRENADES +GRENDEL +GRENIER +GRENOBLE +GRENVILLE +GRESHAM +GRETA +GRETCHEN +GREW +GREY +GREYEST +GREYHOUND +GREYING +GRID +GRIDDLE +GRIDIRON +GRIDS +GRIEF +GRIEFS +GRIEVANCE +GRIEVANCES +GRIEVE +GRIEVED +GRIEVER +GRIEVERS +GRIEVES +GRIEVING +GRIEVINGLY +GRIEVOUS +GRIEVOUSLY +GRIFFITH +GRILL +GRILLED +GRILLING +GRILLS +GRIM +GRIMACE +GRIMALDI +GRIME +GRIMED +GRIMES +GRIMLY +GRIMM +GRIMNESS +GRIN +GRIND +GRINDER +GRINDERS +GRINDING +GRINDINGS +GRINDS +GRINDSTONE +GRINDSTONES +GRINNING +GRINS +GRIP +GRIPE +GRIPED +GRIPES +GRIPING +GRIPPED +GRIPPING +GRIPPINGLY +GRIPS +GRIS +GRISLY +GRIST +GRISWOLD +GRIT +GRITS +GRITTY +GRIZZLY +GROAN +GROANED +GROANER +GROANERS +GROANING +GROANS +GROCER +GROCERIES +GROCERS +GROCERY +GROGGY +GROIN +GROOM +GROOMED +GROOMING +GROOMS +GROOT +GROOVE +GROOVED +GROOVES +GROPE +GROPED +GROPES +GROPING +GROSS +GROSSED +GROSSER +GROSSES +GROSSEST +GROSSET +GROSSING +GROSSLY +GROSSMAN +GROSSNESS +GROSVENOR +GROTESQUE +GROTESQUELY +GROTESQUES +GROTON +GROTTO +GROTTOS +GROUND +GROUNDED +GROUNDER +GROUNDERS +GROUNDING +GROUNDS +GROUNDWORK +GROUP +GROUPED +GROUPING +GROUPINGS +GROUPS +GROUSE +GROVE +GROVEL +GROVELED +GROVELING +GROVELS +GROVER +GROVERS +GROVES +GROW +GROWER +GROWERS +GROWING +GROWL +GROWLED +GROWLING +GROWLS +GROWN +GROWNUP +GROWNUPS +GROWS +GROWTH +GROWTHS +GRUB +GRUBBY +GRUBS +GRUDGE +GRUDGES +GRUDGINGLY +GRUESOME +GRUFF +GRUFFLY +GRUMBLE +GRUMBLED +GRUMBLES +GRUMBLING +GRUMMAN +GRUNT +GRUNTED +GRUNTING +GRUNTS +GRUSKY +GRUYERE +GUADALUPE +GUAM +GUANO +GUARANTEE +GUARANTEED +GUARANTEEING +GUARANTEER +GUARANTEERS +GUARANTEES +GUARANTY +GUARD +GUARDED +GUARDEDLY +GUARDHOUSE +GUARDIA +GUARDIAN +GUARDIANS +GUARDIANSHIP +GUARDING +GUARDS +GUATEMALA +GUATEMALAN +GUBERNATORIAL +GUELPH +GUENTHER +GUERRILLA +GUERRILLAS +GUESS +GUESSED +GUESSES +GUESSING +GUESSWORK +GUEST +GUESTS +GUGGENHEIM +GUHLEMAN +GUIANA +GUIDANCE +GUIDE +GUIDEBOOK +GUIDEBOOKS +GUIDED +GUIDELINE +GUIDELINES +GUIDES +GUIDING +GUILD +GUILDER +GUILDERS +GUILE +GUILFORD +GUILT +GUILTIER +GUILTIEST +GUILTILY +GUILTINESS +GUILTLESS +GUILTLESSLY +GUILTY +GUINEA +GUINEVERE +GUISE +GUISES +GUITAR +GUITARS +GUJARAT +GUJARATI +GULCH +GULCHES +GULF +GULFS +GULL +GULLAH +GULLED +GULLIES +GULLING +GULLS +GULLY +GULP +GULPED +GULPS +GUM +GUMMING +GUMPTION +GUMS +GUN +GUNDERSON +GUNFIRE +GUNMAN +GUNMEN +GUNNAR +GUNNED +GUNNER +GUNNERS +GUNNERY +GUNNING +GUNNY +GUNPLAY +GUNPOWDER +GUNS +GUNSHOT +GUNTHER +GURGLE +GURKHA +GURU +GUS +GUSH +GUSHED +GUSHER +GUSHES +GUSHING +GUST +GUSTAFSON +GUSTAV +GUSTAVE +GUSTAVUS +GUSTO +GUSTS +GUSTY +GUT +GUTENBERG +GUTHRIE +GUTS +GUTSY +GUTTER +GUTTERED +GUTTERS +GUTTING +GUTTURAL +GUY +GUYANA +GUYED +GUYER +GUYERS +GUYING +GUYS +GWEN +GWYN +GYMNASIUM +GYMNASIUMS +GYMNAST +GYMNASTIC +GYMNASTICS +GYMNASTS +GYPSIES +GYPSY +GYRO +GYROCOMPASS +GYROSCOPE +GYROSCOPES +HAAG +HAAS +HABEAS +HABERMAN +HABIB +HABIT +HABITAT +HABITATION +HABITATIONS +HABITATS +HABITS +HABITUAL +HABITUALLY +HABITUALNESS +HACK +HACKED +HACKER +HACKERS +HACKETT +HACKING +HACKNEYED +HACKS +HACKSAW +HAD +HADAMARD +HADDAD +HADDOCK +HADES +HADLEY +HADRIAN +HAFIZ +HAG +HAGEN +HAGER +HAGGARD +HAGGARDLY +HAGGLE +HAGSTROM +HAGUE +HAHN +HAIFA +HAIL +HAILED +HAILING +HAILS +HAILSTONE +HAILSTORM +HAINES +HAIR +HAIRCUT +HAIRCUTS +HAIRIER +HAIRINESS +HAIRLESS +HAIRPIN +HAIRS +HAIRY +HAITI +HAITIAN +HAL +HALCYON +HALE +HALER +HALEY +HALF +HALFHEARTED +HALFWAY +HALIFAX +HALL +HALLEY +HALLINAN +HALLMARK +HALLMARKS +HALLOW +HALLOWED +HALLOWEEN +HALLS +HALLUCINATE +HALLWAY +HALLWAYS +HALOGEN +HALPERN +HALSEY +HALSTEAD +HALT +HALTED +HALTER +HALTERS +HALTING +HALTINGLY +HALTS +HALVE +HALVED +HALVERS +HALVERSON +HALVES +HALVING +HAM +HAMAL +HAMBURG +HAMBURGER +HAMBURGERS +HAMEY +HAMILTON +HAMILTONIAN +HAMILTONIANS +HAMLET +HAMLETS +HAMLIN +HAMMER +HAMMERED +HAMMERING +HAMMERS +HAMMETT +HAMMING +HAMMOCK +HAMMOCKS +HAMMOND +HAMPER +HAMPERED +HAMPERS +HAMPSHIRE +HAMPTON +HAMS +HAMSTER +HAN +HANCOCK +HAND +HANDBAG +HANDBAGS +HANDBOOK +HANDBOOKS +HANDCUFF +HANDCUFFED +HANDCUFFING +HANDCUFFS +HANDED +HANDEL +HANDFUL +HANDFULS +HANDGUN +HANDICAP +HANDICAPPED +HANDICAPS +HANDIER +HANDIEST +HANDILY +HANDINESS +HANDING +HANDIWORK +HANDKERCHIEF +HANDKERCHIEFS +HANDLE +HANDLED +HANDLER +HANDLERS +HANDLES +HANDLING +HANDMAID +HANDOUT +HANDS +HANDSHAKE +HANDSHAKES +HANDSHAKING +HANDSOME +HANDSOMELY +HANDSOMENESS +HANDSOMER +HANDSOMEST +HANDWRITING +HANDWRITTEN +HANDY +HANEY +HANFORD +HANG +HANGAR +HANGARS +HANGED +HANGER +HANGERS +HANGING +HANGMAN +HANGMEN +HANGOUT +HANGOVER +HANGOVERS +HANGS +HANKEL +HANLEY +HANLON +HANNA +HANNAH +HANNIBAL +HANOI +HANOVER +HANOVERIAN +HANOVERIANIZE +HANOVERIANIZES +HANOVERIZE +HANOVERIZES +HANS +HANSEL +HANSEN +HANSON +HANUKKAH +HAP +HAPGOOD +HAPHAZARD +HAPHAZARDLY +HAPHAZARDNESS +HAPLESS +HAPLESSLY +HAPLESSNESS +HAPLY +HAPPEN +HAPPENED +HAPPENING +HAPPENINGS +HAPPENS +HAPPIER +HAPPIEST +HAPPILY +HAPPINESS +HAPPY +HAPSBURG +HARASS +HARASSED +HARASSES +HARASSING +HARASSMENT +HARBIN +HARBINGER +HARBOR +HARBORED +HARBORING +HARBORS +HARCOURT +HARD +HARDBOILED +HARDCOPY +HARDEN +HARDER +HARDEST +HARDHAT +HARDIN +HARDINESS +HARDING +HARDLY +HARDNESS +HARDSCRABBLE +HARDSHIP +HARDSHIPS +HARDWARE +HARDWIRED +HARDWORKING +HARDY +HARE +HARELIP +HAREM +HARES +HARK +HARKEN +HARLAN +HARLEM +HARLEY +HARLOT +HARLOTS +HARM +HARMED +HARMFUL +HARMFULLY +HARMFULNESS +HARMING +HARMLESS +HARMLESSLY +HARMLESSNESS +HARMON +HARMONIC +HARMONICS +HARMONIES +HARMONIOUS +HARMONIOUSLY +HARMONIOUSNESS +HARMONIST +HARMONISTIC +HARMONISTICALLY +HARMONIZE +HARMONY +HARMS +HARNESS +HARNESSED +HARNESSING +HAROLD +HARP +HARPER +HARPERS +HARPING +HARPY +HARRIED +HARRIER +HARRIET +HARRIMAN +HARRINGTON +HARRIS +HARRISBURG +HARRISON +HARRISONBURG +HARROW +HARROWED +HARROWING +HARROWS +HARRY +HARSH +HARSHER +HARSHLY +HARSHNESS +HART +HARTFORD +HARTLEY +HARTMAN +HARVARD +HARVARDIZE +HARVARDIZES +HARVEST +HARVESTED +HARVESTER +HARVESTING +HARVESTS +HARVEY +HARVEYIZE +HARVEYIZES +HARVEYS +HAS +HASH +HASHED +HASHER +HASHES +HASHING +HASHISH +HASKELL +HASKINS +HASSLE +HASTE +HASTEN +HASTENED +HASTENING +HASTENS +HASTILY +HASTINESS +HASTINGS +HASTY +HAT +HATCH +HATCHED +HATCHET +HATCHETS +HATCHING +HATCHURE +HATE +HATED +HATEFUL +HATEFULLY +HATEFULNESS +HATER +HATES +HATFIELD +HATHAWAY +HATING +HATRED +HATS +HATTERAS +HATTIE +HATTIESBURG +HATTIZE +HATTIZES +HAUGEN +HAUGHTILY +HAUGHTINESS +HAUGHTY +HAUL +HAULED +HAULER +HAULING +HAULS +HAUNCH +HAUNCHES +HAUNT +HAUNTED +HAUNTER +HAUNTING +HAUNTS +HAUSA +HAUSDORFF +HAUSER +HAVANA +HAVE +HAVEN +HAVENS +HAVES +HAVILLAND +HAVING +HAVOC +HAWAII +HAWAIIAN +HAWK +HAWKED +HAWKER +HAWKERS +HAWKINS +HAWKS +HAWLEY +HAWTHORNE +HAY +HAYDEN +HAYDN +HAYES +HAYING +HAYNES +HAYS +HAYSTACK +HAYWARD +HAYWOOD +HAZARD +HAZARDOUS +HAZARDS +HAZE +HAZEL +HAZES +HAZINESS +HAZY +HEAD +HEADACHE +HEADACHES +HEADED +HEADER +HEADERS +HEADGEAR +HEADING +HEADINGS +HEADLAND +HEADLANDS +HEADLIGHT +HEADLINE +HEADLINED +HEADLINES +HEADLINING +HEADLONG +HEADMASTER +HEADPHONE +HEADQUARTERS +HEADROOM +HEADS +HEADSET +HEADWAY +HEAL +HEALED +HEALER +HEALERS +HEALEY +HEALING +HEALS +HEALTH +HEALTHFUL +HEALTHFULLY +HEALTHFULNESS +HEALTHIER +HEALTHIEST +HEALTHILY +HEALTHINESS +HEALTHY +HEALY +HEAP +HEAPED +HEAPING +HEAPS +HEAR +HEARD +HEARER +HEARERS +HEARING +HEARINGS +HEARKEN +HEARS +HEARSAY +HEARST +HEART +HEARTBEAT +HEARTBREAK +HEARTEN +HEARTIEST +HEARTILY +HEARTINESS +HEARTLESS +HEARTS +HEARTWOOD +HEARTY +HEAT +HEATABLE +HEATED +HEATEDLY +HEATER +HEATERS +HEATH +HEATHEN +HEATHER +HEATHKIT +HEATHMAN +HEATING +HEATS +HEAVE +HEAVED +HEAVEN +HEAVENLY +HEAVENS +HEAVER +HEAVERS +HEAVES +HEAVIER +HEAVIEST +HEAVILY +HEAVINESS +HEAVING +HEAVY +HEAVYWEIGHT +HEBE +HEBRAIC +HEBRAICIZE +HEBRAICIZES +HEBREW +HEBREWS +HEBRIDES +HECATE +HECK +HECKLE +HECKMAN +HECTIC +HECUBA +HEDDA +HEDGE +HEDGED +HEDGEHOG +HEDGEHOGS +HEDGES +HEDONISM +HEDONIST +HEED +HEEDED +HEEDLESS +HEEDLESSLY +HEEDLESSNESS +HEEDS +HEEL +HEELED +HEELERS +HEELING +HEELS +HEFTY +HEGEL +HEGELIAN +HEGELIANIZE +HEGELIANIZES +HEGEMONY +HEIDEGGER +HEIDELBERG +HEIFER +HEIGHT +HEIGHTEN +HEIGHTENED +HEIGHTENING +HEIGHTENS +HEIGHTS +HEINE +HEINLEIN +HEINOUS +HEINOUSLY +HEINRICH +HEINZ +HEINZE +HEIR +HEIRESS +HEIRESSES +HEIRS +HEISENBERG +HEISER +HELD +HELEN +HELENA +HELENE +HELGA +HELICAL +HELICOPTER +HELIOCENTRIC +HELIOPOLIS +HELIUM +HELIX +HELL +HELLENIC +HELLENIZATION +HELLENIZATIONS +HELLENIZE +HELLENIZED +HELLENIZES +HELLENIZING +HELLESPONT +HELLFIRE +HELLISH +HELLMAN +HELLO +HELLS +HELM +HELMET +HELMETS +HELMHOLTZ +HELMSMAN +HELMUT +HELP +HELPED +HELPER +HELPERS +HELPFUL +HELPFULLY +HELPFULNESS +HELPING +HELPLESS +HELPLESSLY +HELPLESSNESS +HELPMATE +HELPS +HELSINKI +HELVETICA +HEM +HEMINGWAY +HEMISPHERE +HEMISPHERES +HEMLOCK +HEMLOCKS +HEMOGLOBIN +HEMORRHOID +HEMOSTAT +HEMOSTATS +HEMP +HEMPEN +HEMPSTEAD +HEMS +HEN +HENCE +HENCEFORTH +HENCHMAN +HENCHMEN +HENDERSON +HENDRICK +HENDRICKS +HENDRICKSON +HENDRIX +HENLEY +HENNESSEY +HENNESSY +HENNING +HENPECK +HENRI +HENRIETTA +HENS +HEPATITIS +HEPBURN +HER +HERA +HERACLITUS +HERALD +HERALDED +HERALDING +HERALDS +HERB +HERBERT +HERBIVORE +HERBIVOROUS +HERBS +HERCULEAN +HERCULES +HERD +HERDED +HERDER +HERDING +HERDS +HERE +HEREABOUT +HEREABOUTS +HEREAFTER +HEREBY +HEREDITARY +HEREDITY +HEREFORD +HEREIN +HEREINAFTER +HEREOF +HERES +HERESY +HERETIC +HERETICS +HERETO +HERETOFORE +HEREUNDER +HEREWITH +HERITAGE +HERITAGES +HERKIMER +HERMAN +HERMANN +HERMES +HERMETIC +HERMETICALLY +HERMIT +HERMITE +HERMITIAN +HERMITS +HERMOSA +HERNANDEZ +HERO +HERODOTUS +HEROES +HEROIC +HEROICALLY +HEROICS +HEROIN +HEROINE +HEROINES +HEROISM +HERON +HERONS +HERPES +HERR +HERRING +HERRINGS +HERRINGTON +HERS +HERSCHEL +HERSELF +HERSEY +HERSHEL +HERSHEY +HERTZ +HERTZOG +HESITANT +HESITANTLY +HESITATE +HESITATED +HESITATES +HESITATING +HESITATINGLY +HESITATION +HESITATIONS +HESPERUS +HESS +HESSE +HESSIAN +HESSIANS +HESTER +HETEROGENEITY +HETEROGENEOUS +HETEROGENEOUSLY +HETEROGENEOUSNESS +HETEROGENOUS +HETEROSEXUAL +HETMAN +HETTIE +HETTY +HEUBLEIN +HEURISTIC +HEURISTICALLY +HEURISTICS +HEUSEN +HEUSER +HEW +HEWED +HEWER +HEWETT +HEWITT +HEWLETT +HEWS +HEX +HEXADECIMAL +HEXAGON +HEXAGONAL +HEXAGONALLY +HEXAGONS +HEY +HEYWOOD +HIATT +HIAWATHA +HIBBARD +HIBERNATE +HIBERNIA +HICK +HICKEY +HICKEYS +HICKMAN +HICKOK +HICKORY +HICKS +HID +HIDDEN +HIDE +HIDEOUS +HIDEOUSLY +HIDEOUSNESS +HIDEOUT +HIDEOUTS +HIDES +HIDING +HIERARCHAL +HIERARCHIC +HIERARCHICAL +HIERARCHICALLY +HIERARCHIES +HIERARCHY +HIERONYMUS +HIGGINS +HIGH +HIGHER +HIGHEST +HIGHFIELD +HIGHLAND +HIGHLANDER +HIGHLANDS +HIGHLIGHT +HIGHLIGHTED +HIGHLIGHTING +HIGHLIGHTS +HIGHLY +HIGHNESS +HIGHNESSES +HIGHWAY +HIGHWAYMAN +HIGHWAYMEN +HIGHWAYS +HIJACK +HIJACKED +HIKE +HIKED +HIKER +HIKES +HIKING +HILARIOUS +HILARIOUSLY +HILARITY +HILBERT +HILDEBRAND +HILL +HILLARY +HILLBILLY +HILLCREST +HILLEL +HILLOCK +HILLS +HILLSBORO +HILLSDALE +HILLSIDE +HILLSIDES +HILLTOP +HILLTOPS +HILT +HILTON +HILTS +HIM +HIMALAYA +HIMALAYAS +HIMMLER +HIMSELF +HIND +HINDER +HINDERED +HINDERING +HINDERS +HINDI +HINDRANCE +HINDRANCES +HINDSIGHT +HINDU +HINDUISM +HINDUS +HINDUSTAN +HINES +HINGE +HINGED +HINGES +HINKLE +HINMAN +HINSDALE +HINT +HINTED +HINTING +HINTS +HIP +HIPPO +HIPPOCRATES +HIPPOCRATIC +HIPPOPOTAMUS +HIPS +HIRAM +HIRE +HIRED +HIRER +HIRERS +HIRES +HIREY +HIRING +HIRINGS +HIROSHI +HIROSHIMA +HIRSCH +HIS +HISPANIC +HISPANICIZE +HISPANICIZES +HISPANICS +HISS +HISSED +HISSES +HISSING +HISTOGRAM +HISTOGRAMS +HISTORIAN +HISTORIANS +HISTORIC +HISTORICAL +HISTORICALLY +HISTORIES +HISTORY +HIT +HITACHI +HITCH +HITCHCOCK +HITCHED +HITCHHIKE +HITCHHIKED +HITCHHIKER +HITCHHIKERS +HITCHHIKES +HITCHHIKING +HITCHING +HITHER +HITHERTO +HITLER +HITLERIAN +HITLERISM +HITLERITE +HITLERITES +HITS +HITTER +HITTERS +HITTING +HIVE +HOAGLAND +HOAR +HOARD +HOARDER +HOARDING +HOARINESS +HOARSE +HOARSELY +HOARSENESS +HOARY +HOBART +HOBBES +HOBBIES +HOBBLE +HOBBLED +HOBBLES +HOBBLING +HOBBS +HOBBY +HOBBYHORSE +HOBBYIST +HOBBYISTS +HOBDAY +HOBOKEN +HOCKEY +HODGEPODGE +HODGES +HODGKIN +HOE +HOES +HOFF +HOFFMAN +HOG +HOGGING +HOGS +HOIST +HOISTED +HOISTING +HOISTS +HOKAN +HOLBROOK +HOLCOMB +HOLD +HOLDEN +HOLDER +HOLDERS +HOLDING +HOLDINGS +HOLDS +HOLE +HOLED +HOLES +HOLIDAY +HOLIDAYS +HOLIES +HOLINESS +HOLISTIC +HOLLAND +HOLLANDAISE +HOLLANDER +HOLLERITH +HOLLINGSWORTH +HOLLISTER +HOLLOW +HOLLOWAY +HOLLOWED +HOLLOWING +HOLLOWLY +HOLLOWNESS +HOLLOWS +HOLLY +HOLLYWOOD +HOLLYWOODIZE +HOLLYWOODIZES +HOLM +HOLMAN +HOLMDEL +HOLMES +HOLOCAUST +HOLOCENE +HOLOGRAM +HOLOGRAMS +HOLST +HOLSTEIN +HOLY +HOLYOKE +HOLZMAN +HOM +HOMAGE +HOME +HOMED +HOMELESS +HOMELY +HOMEMADE +HOMEMAKER +HOMEMAKERS +HOMEOMORPHIC +HOMEOMORPHISM +HOMEOMORPHISMS +HOMEOPATH +HOMEOWNER +HOMER +HOMERIC +HOMERS +HOMES +HOMESICK +HOMESICKNESS +HOMESPUN +HOMESTEAD +HOMESTEADER +HOMESTEADERS +HOMESTEADS +HOMEWARD +HOMEWARDS +HOMEWORK +HOMICIDAL +HOMICIDE +HOMING +HOMO +HOMOGENEITIES +HOMOGENEITY +HOMOGENEOUS +HOMOGENEOUSLY +HOMOGENEOUSNESS +HOMOMORPHIC +HOMOMORPHISM +HOMOMORPHISMS +HOMOSEXUAL +HONDA +HONDO +HONDURAS +HONE +HONED +HONER +HONES +HONEST +HONESTLY +HONESTY +HONEY +HONEYBEE +HONEYCOMB +HONEYCOMBED +HONEYDEW +HONEYMOON +HONEYMOONED +HONEYMOONER +HONEYMOONERS +HONEYMOONING +HONEYMOONS +HONEYSUCKLE +HONEYWELL +HONING +HONOLULU +HONOR +HONORABLE +HONORABLENESS +HONORABLY +HONORARIES +HONORARIUM +HONORARY +HONORED +HONORER +HONORING +HONORS +HONSHU +HOOD +HOODED +HOODLUM +HOODS +HOODWINK +HOODWINKED +HOODWINKING +HOODWINKS +HOOF +HOOFS +HOOK +HOOKED +HOOKER +HOOKERS +HOOKING +HOOKS +HOOKUP +HOOKUPS +HOOP +HOOPER +HOOPS +HOOSIER +HOOSIERIZE +HOOSIERIZES +HOOT +HOOTED +HOOTER +HOOTING +HOOTS +HOOVER +HOOVERIZE +HOOVERIZES +HOOVES +HOP +HOPE +HOPED +HOPEFUL +HOPEFULLY +HOPEFULNESS +HOPEFULS +HOPELESS +HOPELESSLY +HOPELESSNESS +HOPES +HOPI +HOPING +HOPKINS +HOPKINSIAN +HOPPER +HOPPERS +HOPPING +HOPS +HORACE +HORATIO +HORDE +HORDES +HORIZON +HORIZONS +HORIZONTAL +HORIZONTALLY +HORMONE +HORMONES +HORN +HORNBLOWER +HORNED +HORNET +HORNETS +HORNS +HORNY +HOROWITZ +HORRENDOUS +HORRENDOUSLY +HORRIBLE +HORRIBLENESS +HORRIBLY +HORRID +HORRIDLY +HORRIFIED +HORRIFIES +HORRIFY +HORRIFYING +HORROR +HORRORS +HORSE +HORSEBACK +HORSEFLESH +HORSEFLY +HORSEMAN +HORSEPLAY +HORSEPOWER +HORSES +HORSESHOE +HORSESHOER +HORTICULTURE +HORTON +HORUS +HOSE +HOSES +HOSPITABLE +HOSPITABLY +HOSPITAL +HOSPITALITY +HOSPITALIZE +HOSPITALIZED +HOSPITALIZES +HOSPITALIZING +HOSPITALS +HOST +HOSTAGE +HOSTAGES +HOSTED +HOSTESS +HOSTESSES +HOSTILE +HOSTILELY +HOSTILITIES +HOSTILITY +HOSTING +HOSTS +HOT +HOTEL +HOTELS +HOTLY +HOTNESS +HOTTENTOT +HOTTER +HOTTEST +HOUDAILLE +HOUDINI +HOUGHTON +HOUND +HOUNDED +HOUNDING +HOUNDS +HOUR +HOURGLASS +HOURLY +HOURS +HOUSE +HOUSEBOAT +HOUSEBROKEN +HOUSED +HOUSEFLIES +HOUSEFLY +HOUSEHOLD +HOUSEHOLDER +HOUSEHOLDERS +HOUSEHOLDS +HOUSEKEEPER +HOUSEKEEPERS +HOUSEKEEPING +HOUSES +HOUSETOP +HOUSETOPS +HOUSEWIFE +HOUSEWIFELY +HOUSEWIVES +HOUSEWORK +HOUSING +HOUSTON +HOVEL +HOVELS +HOVER +HOVERED +HOVERING +HOVERS +HOW +HOWARD +HOWE +HOWELL +HOWEVER +HOWL +HOWLED +HOWLER +HOWLING +HOWLS +HOYT +HROTHGAR +HUB +HUBBARD +HUBBELL +HUBER +HUBERT +HUBRIS +HUBS +HUCK +HUDDLE +HUDDLED +HUDDLING +HUDSON +HUE +HUES +HUEY +HUFFMAN +HUG +HUGE +HUGELY +HUGENESS +HUGGING +HUGGINS +HUGH +HUGHES +HUGO +HUH +HULL +HULLS +HUM +HUMAN +HUMANE +HUMANELY +HUMANENESS +HUMANITARIAN +HUMANITIES +HUMANITY +HUMANLY +HUMANNESS +HUMANS +HUMBLE +HUMBLED +HUMBLENESS +HUMBLER +HUMBLEST +HUMBLING +HUMBLY +HUMBOLDT +HUMBUG +HUME +HUMERUS +HUMID +HUMIDIFICATION +HUMIDIFIED +HUMIDIFIER +HUMIDIFIERS +HUMIDIFIES +HUMIDIFY +HUMIDIFYING +HUMIDITY +HUMIDLY +HUMILIATE +HUMILIATED +HUMILIATES +HUMILIATING +HUMILIATION +HUMILIATIONS +HUMILITY +HUMMED +HUMMEL +HUMMING +HUMMINGBIRD +HUMOR +HUMORED +HUMORER +HUMORERS +HUMORING +HUMOROUS +HUMOROUSLY +HUMOROUSNESS +HUMORS +HUMP +HUMPBACK +HUMPED +HUMPHREY +HUMPTY +HUMS +HUN +HUNCH +HUNCHED +HUNCHES +HUNDRED +HUNDREDFOLD +HUNDREDS +HUNDREDTH +HUNG +HUNGARIAN +HUNGARY +HUNGER +HUNGERED +HUNGERING +HUNGERS +HUNGRIER +HUNGRIEST +HUNGRILY +HUNGRY +HUNK +HUNKS +HUNS +HUNT +HUNTED +HUNTER +HUNTERS +HUNTING +HUNTINGTON +HUNTLEY +HUNTS +HUNTSMAN +HUNTSVILLE +HURD +HURDLE +HURL +HURLED +HURLER +HURLERS +HURLING +HURON +HURONS +HURRAH +HURRICANE +HURRICANES +HURRIED +HURRIEDLY +HURRIES +HURRY +HURRYING +HURST +HURT +HURTING +HURTLE +HURTLING +HURTS +HURWITZ +HUSBAND +HUSBANDRY +HUSBANDS +HUSH +HUSHED +HUSHES +HUSHING +HUSK +HUSKED +HUSKER +HUSKINESS +HUSKING +HUSKS +HUSKY +HUSTLE +HUSTLED +HUSTLER +HUSTLES +HUSTLING +HUSTON +HUT +HUTCH +HUTCHINS +HUTCHINSON +HUTCHISON +HUTS +HUXLEY +HUXTABLE +HYACINTH +HYADES +HYANNIS +HYBRID +HYDE +HYDRA +HYDRANT +HYDRAULIC +HYDRO +HYDRODYNAMIC +HYDRODYNAMICS +HYDROGEN +HYDROGENS +HYENA +HYGIENE +HYMAN +HYMEN +HYMN +HYMNS +HYPER +HYPERBOLA +HYPERBOLIC +HYPERTEXT +HYPHEN +HYPHENATE +HYPHENS +HYPNOSIS +HYPNOTIC +HYPOCRISIES +HYPOCRISY +HYPOCRITE +HYPOCRITES +HYPODERMIC +HYPODERMICS +HYPOTHESES +HYPOTHESIS +HYPOTHESIZE +HYPOTHESIZED +HYPOTHESIZER +HYPOTHESIZES +HYPOTHESIZING +HYPOTHETICAL +HYPOTHETICALLY +HYSTERESIS +HYSTERICAL +HYSTERICALLY +IAN +IBERIA +IBERIAN +IBEX +IBID +IBIS +IBN +IBSEN +ICARUS +ICE +ICEBERG +ICEBERGS +ICEBOX +ICED +ICELAND +ICELANDIC +ICES +ICICLE +ICINESS +ICING +ICINGS +ICON +ICONOCLASM +ICONOCLAST +ICONS +ICOSAHEDRA +ICOSAHEDRAL +ICOSAHEDRON +ICY +IDA +IDAHO +IDEA +IDEAL +IDEALISM +IDEALISTIC +IDEALIZATION +IDEALIZATIONS +IDEALIZE +IDEALIZED +IDEALIZES +IDEALIZING +IDEALLY +IDEALS +IDEAS +IDEM +IDEMPOTENCY +IDEMPOTENT +IDENTICAL +IDENTICALLY +IDENTIFIABLE +IDENTIFIABLY +IDENTIFICATION +IDENTIFICATIONS +IDENTIFIED +IDENTIFIER +IDENTIFIERS +IDENTIFIES +IDENTIFY +IDENTIFYING +IDENTITIES +IDENTITY +IDEOLOGICAL +IDEOLOGICALLY +IDEOLOGY +IDIOCY +IDIOM +IDIOSYNCRASIES +IDIOSYNCRASY +IDIOSYNCRATIC +IDIOT +IDIOTIC +IDIOTS +IDLE +IDLED +IDLENESS +IDLER +IDLERS +IDLES +IDLEST +IDLING +IDLY +IDOL +IDOLATRY +IDOLS +IFNI +IGLOO +IGNITE +IGNITION +IGNOBLE +IGNOMINIOUS +IGNORAMUS +IGNORANCE +IGNORANT +IGNORANTLY +IGNORE +IGNORED +IGNORES +IGNORING +IGOR +IKE +ILIAD +ILIADIZE +ILIADIZES +ILL +ILLEGAL +ILLEGALITIES +ILLEGALITY +ILLEGALLY +ILLEGITIMATE +ILLICIT +ILLICITLY +ILLINOIS +ILLITERACY +ILLITERATE +ILLNESS +ILLNESSES +ILLOGICAL +ILLOGICALLY +ILLS +ILLUMINATE +ILLUMINATED +ILLUMINATES +ILLUMINATING +ILLUMINATION +ILLUMINATIONS +ILLUSION +ILLUSIONS +ILLUSIVE +ILLUSIVELY +ILLUSORY +ILLUSTRATE +ILLUSTRATED +ILLUSTRATES +ILLUSTRATING +ILLUSTRATION +ILLUSTRATIONS +ILLUSTRATIVE +ILLUSTRATIVELY +ILLUSTRATOR +ILLUSTRATORS +ILLUSTRIOUS +ILLUSTRIOUSNESS +ILLY +ILONA +ILYUSHIN +IMAGE +IMAGEN +IMAGERY +IMAGES +IMAGINABLE +IMAGINABLY +IMAGINARY +IMAGINATION +IMAGINATIONS +IMAGINATIVE +IMAGINATIVELY +IMAGINE +IMAGINED +IMAGINES +IMAGING +IMAGINING +IMAGININGS +IMBALANCE +IMBALANCES +IMBECILE +IMBIBE +IMBRIUM +IMITATE +IMITATED +IMITATES +IMITATING +IMITATION +IMITATIONS +IMITATIVE +IMMACULATE +IMMACULATELY +IMMATERIAL +IMMATERIALLY +IMMATURE +IMMATURITY +IMMEDIACIES +IMMEDIACY +IMMEDIATE +IMMEDIATELY +IMMEMORIAL +IMMENSE +IMMENSELY +IMMERSE +IMMERSED +IMMERSES +IMMERSION +IMMIGRANT +IMMIGRANTS +IMMIGRATE +IMMIGRATED +IMMIGRATES +IMMIGRATING +IMMIGRATION +IMMINENT +IMMINENTLY +IMMODERATE +IMMODEST +IMMORAL +IMMORTAL +IMMORTALITY +IMMORTALLY +IMMOVABILITY +IMMOVABLE +IMMOVABLY +IMMUNE +IMMUNITIES +IMMUNITY +IMMUNIZATION +IMMUTABLE +IMP +IMPACT +IMPACTED +IMPACTING +IMPACTION +IMPACTOR +IMPACTORS +IMPACTS +IMPAIR +IMPAIRED +IMPAIRING +IMPAIRS +IMPALE +IMPART +IMPARTED +IMPARTIAL +IMPARTIALLY +IMPARTS +IMPASSE +IMPASSIVE +IMPATIENCE +IMPATIENT +IMPATIENTLY +IMPEACH +IMPEACHABLE +IMPEACHED +IMPEACHMENT +IMPECCABLE +IMPEDANCE +IMPEDANCES +IMPEDE +IMPEDED +IMPEDES +IMPEDIMENT +IMPEDIMENTS +IMPEDING +IMPEL +IMPELLED +IMPELLING +IMPEND +IMPENDING +IMPENETRABILITY +IMPENETRABLE +IMPENETRABLY +IMPERATIVE +IMPERATIVELY +IMPERATIVES +IMPERCEIVABLE +IMPERCEPTIBLE +IMPERFECT +IMPERFECTION +IMPERFECTIONS +IMPERFECTLY +IMPERIAL +IMPERIALISM +IMPERIALIST +IMPERIALISTS +IMPERIL +IMPERILED +IMPERIOUS +IMPERIOUSLY +IMPERMANENCE +IMPERMANENT +IMPERMEABLE +IMPERMISSIBLE +IMPERSONAL +IMPERSONALLY +IMPERSONATE +IMPERSONATED +IMPERSONATES +IMPERSONATING +IMPERSONATION +IMPERSONATIONS +IMPERTINENT +IMPERTINENTLY +IMPERVIOUS +IMPERVIOUSLY +IMPETUOUS +IMPETUOUSLY +IMPETUS +IMPINGE +IMPINGED +IMPINGES +IMPINGING +IMPIOUS +IMPLACABLE +IMPLANT +IMPLANTED +IMPLANTING +IMPLANTS +IMPLAUSIBLE +IMPLEMENT +IMPLEMENTABLE +IMPLEMENTATION +IMPLEMENTATIONS +IMPLEMENTED +IMPLEMENTER +IMPLEMENTING +IMPLEMENTOR +IMPLEMENTORS +IMPLEMENTS +IMPLICANT +IMPLICANTS +IMPLICATE +IMPLICATED +IMPLICATES +IMPLICATING +IMPLICATION +IMPLICATIONS +IMPLICIT +IMPLICITLY +IMPLICITNESS +IMPLIED +IMPLIES +IMPLORE +IMPLORED +IMPLORING +IMPLY +IMPLYING +IMPOLITE +IMPORT +IMPORTANCE +IMPORTANT +IMPORTANTLY +IMPORTATION +IMPORTED +IMPORTER +IMPORTERS +IMPORTING +IMPORTS +IMPOSE +IMPOSED +IMPOSES +IMPOSING +IMPOSITION +IMPOSITIONS +IMPOSSIBILITIES +IMPOSSIBILITY +IMPOSSIBLE +IMPOSSIBLY +IMPOSTOR +IMPOSTORS +IMPOTENCE +IMPOTENCY +IMPOTENT +IMPOUND +IMPOVERISH +IMPOVERISHED +IMPOVERISHMENT +IMPRACTICABLE +IMPRACTICAL +IMPRACTICALITY +IMPRACTICALLY +IMPRECISE +IMPRECISELY +IMPRECISION +IMPREGNABLE +IMPREGNATE +IMPRESS +IMPRESSED +IMPRESSER +IMPRESSES +IMPRESSIBLE +IMPRESSING +IMPRESSION +IMPRESSIONABLE +IMPRESSIONIST +IMPRESSIONISTIC +IMPRESSIONS +IMPRESSIVE +IMPRESSIVELY +IMPRESSIVENESS +IMPRESSMENT +IMPRIMATUR +IMPRINT +IMPRINTED +IMPRINTING +IMPRINTS +IMPRISON +IMPRISONED +IMPRISONING +IMPRISONMENT +IMPRISONMENTS +IMPRISONS +IMPROBABILITY +IMPROBABLE +IMPROMPTU +IMPROPER +IMPROPERLY +IMPROPRIETY +IMPROVE +IMPROVED +IMPROVEMENT +IMPROVEMENTS +IMPROVES +IMPROVING +IMPROVISATION +IMPROVISATIONAL +IMPROVISATIONS +IMPROVISE +IMPROVISED +IMPROVISER +IMPROVISERS +IMPROVISES +IMPROVISING +IMPRUDENT +IMPS +IMPUDENT +IMPUDENTLY +IMPUGN +IMPULSE +IMPULSES +IMPULSION +IMPULSIVE +IMPUNITY +IMPURE +IMPURITIES +IMPURITY +IMPUTE +IMPUTED +INABILITY +INACCESSIBLE +INACCURACIES +INACCURACY +INACCURATE +INACTION +INACTIVATE +INACTIVE +INACTIVITY +INADEQUACIES +INADEQUACY +INADEQUATE +INADEQUATELY +INADEQUATENESS +INADMISSIBILITY +INADMISSIBLE +INADVERTENT +INADVERTENTLY +INADVISABLE +INALIENABLE +INALTERABLE +INANE +INANIMATE +INANIMATELY +INANNA +INAPPLICABLE +INAPPROACHABLE +INAPPROPRIATE +INAPPROPRIATENESS +INASMUCH +INATTENTION +INAUDIBLE +INAUGURAL +INAUGURATE +INAUGURATED +INAUGURATING +INAUGURATION +INAUSPICIOUS +INBOARD +INBOUND +INBREED +INCA +INCALCULABLE +INCANDESCENT +INCANTATION +INCAPABLE +INCAPACITATE +INCAPACITATING +INCARCERATE +INCARNATION +INCARNATIONS +INCAS +INCENDIARIES +INCENDIARY +INCENSE +INCENSED +INCENSES +INCENTIVE +INCENTIVES +INCEPTION +INCESSANT +INCESSANTLY +INCEST +INCESTUOUS +INCH +INCHED +INCHES +INCHING +INCIDENCE +INCIDENT +INCIDENTAL +INCIDENTALLY +INCIDENTALS +INCIDENTS +INCINERATE +INCIPIENT +INCISIVE +INCITE +INCITED +INCITEMENT +INCITES +INCITING +INCLEMENT +INCLINATION +INCLINATIONS +INCLINE +INCLINED +INCLINES +INCLINING +INCLOSE +INCLOSED +INCLOSES +INCLOSING +INCLUDE +INCLUDED +INCLUDES +INCLUDING +INCLUSION +INCLUSIONS +INCLUSIVE +INCLUSIVELY +INCLUSIVENESS +INCOHERENCE +INCOHERENT +INCOHERENTLY +INCOME +INCOMES +INCOMING +INCOMMENSURABLE +INCOMMENSURATE +INCOMMUNICABLE +INCOMPARABLE +INCOMPARABLY +INCOMPATIBILITIES +INCOMPATIBILITY +INCOMPATIBLE +INCOMPATIBLY +INCOMPETENCE +INCOMPETENT +INCOMPETENTS +INCOMPLETE +INCOMPLETELY +INCOMPLETENESS +INCOMPREHENSIBILITY +INCOMPREHENSIBLE +INCOMPREHENSIBLY +INCOMPREHENSION +INCOMPRESSIBLE +INCOMPUTABLE +INCONCEIVABLE +INCONCLUSIVE +INCONGRUITY +INCONGRUOUS +INCONSEQUENTIAL +INCONSEQUENTIALLY +INCONSIDERABLE +INCONSIDERATE +INCONSIDERATELY +INCONSIDERATENESS +INCONSISTENCIES +INCONSISTENCY +INCONSISTENT +INCONSISTENTLY +INCONSPICUOUS +INCONTESTABLE +INCONTROVERTIBLE +INCONTROVERTIBLY +INCONVENIENCE +INCONVENIENCED +INCONVENIENCES +INCONVENIENCING +INCONVENIENT +INCONVENIENTLY +INCONVERTIBLE +INCORPORATE +INCORPORATED +INCORPORATES +INCORPORATING +INCORPORATION +INCORRECT +INCORRECTLY +INCORRECTNESS +INCORRIGIBLE +INCREASE +INCREASED +INCREASES +INCREASING +INCREASINGLY +INCREDIBLE +INCREDIBLY +INCREDULITY +INCREDULOUS +INCREDULOUSLY +INCREMENT +INCREMENTAL +INCREMENTALLY +INCREMENTED +INCREMENTER +INCREMENTING +INCREMENTS +INCRIMINATE +INCUBATE +INCUBATED +INCUBATES +INCUBATING +INCUBATION +INCUBATOR +INCUBATORS +INCULCATE +INCUMBENT +INCUR +INCURABLE +INCURRED +INCURRING +INCURS +INCURSION +INDEBTED +INDEBTEDNESS +INDECENT +INDECIPHERABLE +INDECISION +INDECISIVE +INDEED +INDEFATIGABLE +INDEFENSIBLE +INDEFINITE +INDEFINITELY +INDEFINITENESS +INDELIBLE +INDEMNIFY +INDEMNITY +INDENT +INDENTATION +INDENTATIONS +INDENTED +INDENTING +INDENTS +INDENTURE +INDEPENDENCE +INDEPENDENT +INDEPENDENTLY +INDESCRIBABLE +INDESTRUCTIBLE +INDETERMINACIES +INDETERMINACY +INDETERMINATE +INDETERMINATELY +INDEX +INDEXABLE +INDEXED +INDEXES +INDEXING +INDIA +INDIAN +INDIANA +INDIANAPOLIS +INDIANS +INDICATE +INDICATED +INDICATES +INDICATING +INDICATION +INDICATIONS +INDICATIVE +INDICATOR +INDICATORS +INDICES +INDICT +INDICTMENT +INDICTMENTS +INDIES +INDIFFERENCE +INDIFFERENT +INDIFFERENTLY +INDIGENOUS +INDIGENOUSLY +INDIGENOUSNESS +INDIGESTIBLE +INDIGESTION +INDIGNANT +INDIGNANTLY +INDIGNATION +INDIGNITIES +INDIGNITY +INDIGO +INDIRA +INDIRECT +INDIRECTED +INDIRECTING +INDIRECTION +INDIRECTIONS +INDIRECTLY +INDIRECTS +INDISCREET +INDISCRETION +INDISCRIMINATE +INDISCRIMINATELY +INDISPENSABILITY +INDISPENSABLE +INDISPENSABLY +INDISPUTABLE +INDISTINCT +INDISTINGUISHABLE +INDIVIDUAL +INDIVIDUALISM +INDIVIDUALISTIC +INDIVIDUALITY +INDIVIDUALIZE +INDIVIDUALIZED +INDIVIDUALIZES +INDIVIDUALIZING +INDIVIDUALLY +INDIVIDUALS +INDIVISIBILITY +INDIVISIBLE +INDO +INDOCHINA +INDOCHINESE +INDOCTRINATE +INDOCTRINATED +INDOCTRINATES +INDOCTRINATING +INDOCTRINATION +INDOEUROPEAN +INDOLENT +INDOLENTLY +INDOMITABLE +INDONESIA +INDONESIAN +INDOOR +INDOORS +INDUBITABLE +INDUCE +INDUCED +INDUCEMENT +INDUCEMENTS +INDUCER +INDUCES +INDUCING +INDUCT +INDUCTANCE +INDUCTANCES +INDUCTED +INDUCTEE +INDUCTING +INDUCTION +INDUCTIONS +INDUCTIVE +INDUCTIVELY +INDUCTOR +INDUCTORS +INDUCTS +INDULGE +INDULGED +INDULGENCE +INDULGENCES +INDULGENT +INDULGING +INDUS +INDUSTRIAL +INDUSTRIALISM +INDUSTRIALIST +INDUSTRIALISTS +INDUSTRIALIZATION +INDUSTRIALIZED +INDUSTRIALLY +INDUSTRIALS +INDUSTRIES +INDUSTRIOUS +INDUSTRIOUSLY +INDUSTRIOUSNESS +INDUSTRY +INDY +INEFFECTIVE +INEFFECTIVELY +INEFFECTIVENESS +INEFFECTUAL +INEFFICIENCIES +INEFFICIENCY +INEFFICIENT +INEFFICIENTLY +INELEGANT +INELIGIBLE +INEPT +INEQUALITIES +INEQUALITY +INEQUITABLE +INEQUITY +INERT +INERTIA +INERTIAL +INERTLY +INERTNESS +INESCAPABLE +INESCAPABLY +INESSENTIAL +INESTIMABLE +INEVITABILITIES +INEVITABILITY +INEVITABLE +INEVITABLY +INEXACT +INEXCUSABLE +INEXCUSABLY +INEXHAUSTIBLE +INEXORABLE +INEXORABLY +INEXPENSIVE +INEXPENSIVELY +INEXPERIENCE +INEXPERIENCED +INEXPLICABLE +INFALLIBILITY +INFALLIBLE +INFALLIBLY +INFAMOUS +INFAMOUSLY +INFAMY +INFANCY +INFANT +INFANTILE +INFANTRY +INFANTRYMAN +INFANTRYMEN +INFANTS +INFARCT +INFATUATE +INFEASIBLE +INFECT +INFECTED +INFECTING +INFECTION +INFECTIONS +INFECTIOUS +INFECTIOUSLY +INFECTIVE +INFECTS +INFER +INFERENCE +INFERENCES +INFERENTIAL +INFERIOR +INFERIORITY +INFERIORS +INFERNAL +INFERNALLY +INFERNO +INFERNOS +INFERRED +INFERRING +INFERS +INFERTILE +INFEST +INFESTED +INFESTING +INFESTS +INFIDEL +INFIDELITY +INFIDELS +INFIGHTING +INFILTRATE +INFINITE +INFINITELY +INFINITENESS +INFINITESIMAL +INFINITIVE +INFINITIVES +INFINITUDE +INFINITUM +INFINITY +INFIRM +INFIRMARY +INFIRMITY +INFIX +INFLAME +INFLAMED +INFLAMMABLE +INFLAMMATION +INFLAMMATORY +INFLATABLE +INFLATE +INFLATED +INFLATER +INFLATES +INFLATING +INFLATION +INFLATIONARY +INFLEXIBILITY +INFLEXIBLE +INFLICT +INFLICTED +INFLICTING +INFLICTS +INFLOW +INFLUENCE +INFLUENCED +INFLUENCES +INFLUENCING +INFLUENTIAL +INFLUENTIALLY +INFLUENZA +INFORM +INFORMAL +INFORMALITY +INFORMALLY +INFORMANT +INFORMANTS +INFORMATICA +INFORMATION +INFORMATIONAL +INFORMATIVE +INFORMATIVELY +INFORMED +INFORMER +INFORMERS +INFORMING +INFORMS +INFRA +INFRARED +INFRASTRUCTURE +INFREQUENT +INFREQUENTLY +INFRINGE +INFRINGED +INFRINGEMENT +INFRINGEMENTS +INFRINGES +INFRINGING +INFURIATE +INFURIATED +INFURIATES +INFURIATING +INFURIATION +INFUSE +INFUSED +INFUSES +INFUSING +INFUSION +INFUSIONS +INGENIOUS +INGENIOUSLY +INGENIOUSNESS +INGENUITY +INGENUOUS +INGERSOLL +INGEST +INGESTION +INGLORIOUS +INGOT +INGRAM +INGRATE +INGRATIATE +INGRATITUDE +INGREDIENT +INGREDIENTS +INGROWN +INHABIT +INHABITABLE +INHABITANCE +INHABITANT +INHABITANTS +INHABITED +INHABITING +INHABITS +INHALE +INHALED +INHALER +INHALES +INHALING +INHERE +INHERENT +INHERENTLY +INHERES +INHERIT +INHERITABLE +INHERITANCE +INHERITANCES +INHERITED +INHERITING +INHERITOR +INHERITORS +INHERITRESS +INHERITRESSES +INHERITRICES +INHERITRIX +INHERITS +INHIBIT +INHIBITED +INHIBITING +INHIBITION +INHIBITIONS +INHIBITOR +INHIBITORS +INHIBITORY +INHIBITS +INHOMOGENEITIES +INHOMOGENEITY +INHOMOGENEOUS +INHOSPITABLE +INHUMAN +INHUMANE +INIMICAL +INIMITABLE +INIQUITIES +INIQUITY +INITIAL +INITIALED +INITIALING +INITIALIZATION +INITIALIZATIONS +INITIALIZE +INITIALIZED +INITIALIZER +INITIALIZERS +INITIALIZES +INITIALIZING +INITIALLY +INITIALS +INITIATE +INITIATED +INITIATES +INITIATING +INITIATION +INITIATIONS +INITIATIVE +INITIATIVES +INITIATOR +INITIATORS +INJECT +INJECTED +INJECTING +INJECTION +INJECTIONS +INJECTIVE +INJECTS +INJUDICIOUS +INJUN +INJUNCTION +INJUNCTIONS +INJUNS +INJURE +INJURED +INJURES +INJURIES +INJURING +INJURIOUS +INJURY +INJUSTICE +INJUSTICES +INK +INKED +INKER +INKERS +INKING +INKINGS +INKLING +INKLINGS +INKS +INLAID +INLAND +INLAY +INLET +INLETS +INLINE +INMAN +INMATE +INMATES +INN +INNARDS +INNATE +INNATELY +INNER +INNERMOST +INNING +INNINGS +INNOCENCE +INNOCENT +INNOCENTLY +INNOCENTS +INNOCUOUS +INNOCUOUSLY +INNOCUOUSNESS +INNOVATE +INNOVATION +INNOVATIONS +INNOVATIVE +INNS +INNUENDO +INNUMERABILITY +INNUMERABLE +INNUMERABLY +INOCULATE +INOPERABLE +INOPERATIVE +INOPPORTUNE +INORDINATE +INORDINATELY +INORGANIC +INPUT +INPUTS +INQUEST +INQUIRE +INQUIRED +INQUIRER +INQUIRERS +INQUIRES +INQUIRIES +INQUIRING +INQUIRY +INQUISITION +INQUISITIONS +INQUISITIVE +INQUISITIVELY +INQUISITIVENESS +INROAD +INROADS +INSANE +INSANELY +INSANITY +INSATIABLE +INSCRIBE +INSCRIBED +INSCRIBES +INSCRIBING +INSCRIPTION +INSCRIPTIONS +INSCRUTABLE +INSECT +INSECTICIDE +INSECTS +INSECURE +INSECURELY +INSEMINATE +INSENSIBLE +INSENSITIVE +INSENSITIVELY +INSENSITIVITY +INSEPARABLE +INSERT +INSERTED +INSERTING +INSERTION +INSERTIONS +INSERTS +INSET +INSIDE +INSIDER +INSIDERS +INSIDES +INSIDIOUS +INSIDIOUSLY +INSIDIOUSNESS +INSIGHT +INSIGHTFUL +INSIGHTS +INSIGNIA +INSIGNIFICANCE +INSIGNIFICANT +INSINCERE +INSINCERITY +INSINUATE +INSINUATED +INSINUATES +INSINUATING +INSINUATION +INSINUATIONS +INSIPID +INSIST +INSISTED +INSISTENCE +INSISTENT +INSISTENTLY +INSISTING +INSISTS +INSOFAR +INSOLENCE +INSOLENT +INSOLENTLY +INSOLUBLE +INSOLVABLE +INSOLVENT +INSOMNIA +INSOMNIAC +INSPECT +INSPECTED +INSPECTING +INSPECTION +INSPECTIONS +INSPECTOR +INSPECTORS +INSPECTS +INSPIRATION +INSPIRATIONS +INSPIRE +INSPIRED +INSPIRER +INSPIRES +INSPIRING +INSTABILITIES +INSTABILITY +INSTALL +INSTALLATION +INSTALLATIONS +INSTALLED +INSTALLER +INSTALLERS +INSTALLING +INSTALLMENT +INSTALLMENTS +INSTALLS +INSTANCE +INSTANCES +INSTANT +INSTANTANEOUS +INSTANTANEOUSLY +INSTANTER +INSTANTIATE +INSTANTIATED +INSTANTIATES +INSTANTIATING +INSTANTIATION +INSTANTIATIONS +INSTANTLY +INSTANTS +INSTEAD +INSTIGATE +INSTIGATED +INSTIGATES +INSTIGATING +INSTIGATOR +INSTIGATORS +INSTILL +INSTINCT +INSTINCTIVE +INSTINCTIVELY +INSTINCTS +INSTINCTUAL +INSTITUTE +INSTITUTED +INSTITUTER +INSTITUTERS +INSTITUTES +INSTITUTING +INSTITUTION +INSTITUTIONAL +INSTITUTIONALIZE +INSTITUTIONALIZED +INSTITUTIONALIZES +INSTITUTIONALIZING +INSTITUTIONALLY +INSTITUTIONS +INSTRUCT +INSTRUCTED +INSTRUCTING +INSTRUCTION +INSTRUCTIONAL +INSTRUCTIONS +INSTRUCTIVE +INSTRUCTIVELY +INSTRUCTOR +INSTRUCTORS +INSTRUCTS +INSTRUMENT +INSTRUMENTAL +INSTRUMENTALIST +INSTRUMENTALISTS +INSTRUMENTALLY +INSTRUMENTALS +INSTRUMENTATION +INSTRUMENTED +INSTRUMENTING +INSTRUMENTS +INSUBORDINATE +INSUFFERABLE +INSUFFICIENT +INSUFFICIENTLY +INSULAR +INSULATE +INSULATED +INSULATES +INSULATING +INSULATION +INSULATOR +INSULATORS +INSULIN +INSULT +INSULTED +INSULTING +INSULTS +INSUPERABLE +INSUPPORTABLE +INSURANCE +INSURE +INSURED +INSURER +INSURERS +INSURES +INSURGENT +INSURGENTS +INSURING +INSURMOUNTABLE +INSURRECTION +INSURRECTIONS +INTACT +INTANGIBLE +INTANGIBLES +INTEGER +INTEGERS +INTEGRABLE +INTEGRAL +INTEGRALS +INTEGRAND +INTEGRATE +INTEGRATED +INTEGRATES +INTEGRATING +INTEGRATION +INTEGRATIONS +INTEGRATIVE +INTEGRITY +INTEL +INTELLECT +INTELLECTS +INTELLECTUAL +INTELLECTUALLY +INTELLECTUALS +INTELLIGENCE +INTELLIGENT +INTELLIGENTLY +INTELLIGENTSIA +INTELLIGIBILITY +INTELLIGIBLE +INTELLIGIBLY +INTELSAT +INTEMPERATE +INTEND +INTENDED +INTENDING +INTENDS +INTENSE +INTENSELY +INTENSIFICATION +INTENSIFIED +INTENSIFIER +INTENSIFIERS +INTENSIFIES +INTENSIFY +INTENSIFYING +INTENSITIES +INTENSITY +INTENSIVE +INTENSIVELY +INTENT +INTENTION +INTENTIONAL +INTENTIONALLY +INTENTIONED +INTENTIONS +INTENTLY +INTENTNESS +INTENTS +INTER +INTERACT +INTERACTED +INTERACTING +INTERACTION +INTERACTIONS +INTERACTIVE +INTERACTIVELY +INTERACTIVITY +INTERACTS +INTERCEPT +INTERCEPTED +INTERCEPTING +INTERCEPTION +INTERCEPTOR +INTERCEPTS +INTERCHANGE +INTERCHANGEABILITY +INTERCHANGEABLE +INTERCHANGEABLY +INTERCHANGED +INTERCHANGER +INTERCHANGES +INTERCHANGING +INTERCHANGINGS +INTERCHANNEL +INTERCITY +INTERCOM +INTERCOMMUNICATE +INTERCOMMUNICATED +INTERCOMMUNICATES +INTERCOMMUNICATING +INTERCOMMUNICATION +INTERCONNECT +INTERCONNECTED +INTERCONNECTING +INTERCONNECTION +INTERCONNECTIONS +INTERCONNECTS +INTERCONTINENTAL +INTERCOURSE +INTERDATA +INTERDEPENDENCE +INTERDEPENDENCIES +INTERDEPENDENCY +INTERDEPENDENT +INTERDICT +INTERDICTION +INTERDISCIPLINARY +INTEREST +INTERESTED +INTERESTING +INTERESTINGLY +INTERESTS +INTERFACE +INTERFACED +INTERFACER +INTERFACES +INTERFACING +INTERFERE +INTERFERED +INTERFERENCE +INTERFERENCES +INTERFERES +INTERFERING +INTERFERINGLY +INTERFEROMETER +INTERFEROMETRIC +INTERFEROMETRY +INTERFRAME +INTERGROUP +INTERIM +INTERIOR +INTERIORS +INTERJECT +INTERLACE +INTERLACED +INTERLACES +INTERLACING +INTERLEAVE +INTERLEAVED +INTERLEAVES +INTERLEAVING +INTERLINK +INTERLINKED +INTERLINKS +INTERLISP +INTERMEDIARY +INTERMEDIATE +INTERMEDIATES +INTERMINABLE +INTERMINGLE +INTERMINGLED +INTERMINGLES +INTERMINGLING +INTERMISSION +INTERMITTENT +INTERMITTENTLY +INTERMIX +INTERMIXED +INTERMODULE +INTERN +INTERNAL +INTERNALIZE +INTERNALIZED +INTERNALIZES +INTERNALIZING +INTERNALLY +INTERNALS +INTERNATIONAL +INTERNATIONALITY +INTERNATIONALLY +INTERNED +INTERNET +INTERNET +INTERNETWORK +INTERNING +INTERNS +INTERNSHIP +INTEROFFICE +INTERPERSONAL +INTERPLAY +INTERPOL +INTERPOLATE +INTERPOLATED +INTERPOLATES +INTERPOLATING +INTERPOLATION +INTERPOLATIONS +INTERPOSE +INTERPOSED +INTERPOSES +INTERPOSING +INTERPRET +INTERPRETABLE +INTERPRETATION +INTERPRETATIONS +INTERPRETED +INTERPRETER +INTERPRETERS +INTERPRETING +INTERPRETIVE +INTERPRETIVELY +INTERPRETS +INTERPROCESS +INTERRELATE +INTERRELATED +INTERRELATES +INTERRELATING +INTERRELATION +INTERRELATIONS +INTERRELATIONSHIP +INTERRELATIONSHIPS +INTERROGATE +INTERROGATED +INTERROGATES +INTERROGATING +INTERROGATION +INTERROGATIONS +INTERROGATIVE +INTERRUPT +INTERRUPTED +INTERRUPTIBLE +INTERRUPTING +INTERRUPTION +INTERRUPTIONS +INTERRUPTIVE +INTERRUPTS +INTERSECT +INTERSECTED +INTERSECTING +INTERSECTION +INTERSECTIONS +INTERSECTS +INTERSPERSE +INTERSPERSED +INTERSPERSES +INTERSPERSING +INTERSPERSION +INTERSTAGE +INTERSTATE +INTERTWINE +INTERTWINED +INTERTWINES +INTERTWINING +INTERVAL +INTERVALS +INTERVENE +INTERVENED +INTERVENES +INTERVENING +INTERVENTION +INTERVENTIONS +INTERVIEW +INTERVIEWED +INTERVIEWEE +INTERVIEWER +INTERVIEWERS +INTERVIEWING +INTERVIEWS +INTERWOVEN +INTESTATE +INTESTINAL +INTESTINE +INTESTINES +INTIMACY +INTIMATE +INTIMATED +INTIMATELY +INTIMATING +INTIMATION +INTIMATIONS +INTIMIDATE +INTIMIDATED +INTIMIDATES +INTIMIDATING +INTIMIDATION +INTO +INTOLERABLE +INTOLERABLY +INTOLERANCE +INTOLERANT +INTONATION +INTONATIONS +INTONE +INTOXICANT +INTOXICATE +INTOXICATED +INTOXICATING +INTOXICATION +INTRACTABILITY +INTRACTABLE +INTRACTABLY +INTRAGROUP +INTRALINE +INTRAMURAL +INTRAMUSCULAR +INTRANSIGENT +INTRANSITIVE +INTRANSITIVELY +INTRAOFFICE +INTRAPROCESS +INTRASTATE +INTRAVENOUS +INTREPID +INTRICACIES +INTRICACY +INTRICATE +INTRICATELY +INTRIGUE +INTRIGUED +INTRIGUES +INTRIGUING +INTRINSIC +INTRINSICALLY +INTRODUCE +INTRODUCED +INTRODUCES +INTRODUCING +INTRODUCTION +INTRODUCTIONS +INTRODUCTORY +INTROSPECT +INTROSPECTION +INTROSPECTIONS +INTROSPECTIVE +INTROVERT +INTROVERTED +INTRUDE +INTRUDED +INTRUDER +INTRUDERS +INTRUDES +INTRUDING +INTRUSION +INTRUSIONS +INTRUST +INTUBATE +INTUBATED +INTUBATES +INTUBATION +INTUITION +INTUITIONIST +INTUITIONS +INTUITIVE +INTUITIVELY +INUNDATE +INVADE +INVADED +INVADER +INVADERS +INVADES +INVADING +INVALID +INVALIDATE +INVALIDATED +INVALIDATES +INVALIDATING +INVALIDATION +INVALIDATIONS +INVALIDITIES +INVALIDITY +INVALIDLY +INVALIDS +INVALUABLE +INVARIABLE +INVARIABLY +INVARIANCE +INVARIANT +INVARIANTLY +INVARIANTS +INVASION +INVASIONS +INVECTIVE +INVENT +INVENTED +INVENTING +INVENTION +INVENTIONS +INVENTIVE +INVENTIVELY +INVENTIVENESS +INVENTOR +INVENTORIES +INVENTORS +INVENTORY +INVENTS +INVERNESS +INVERSE +INVERSELY +INVERSES +INVERSION +INVERSIONS +INVERT +INVERTEBRATE +INVERTEBRATES +INVERTED +INVERTER +INVERTERS +INVERTIBLE +INVERTING +INVERTS +INVEST +INVESTED +INVESTIGATE +INVESTIGATED +INVESTIGATES +INVESTIGATING +INVESTIGATION +INVESTIGATIONS +INVESTIGATIVE +INVESTIGATOR +INVESTIGATORS +INVESTIGATORY +INVESTING +INVESTMENT +INVESTMENTS +INVESTOR +INVESTORS +INVESTS +INVETERATE +INVIGORATE +INVINCIBLE +INVISIBILITY +INVISIBLE +INVISIBLY +INVITATION +INVITATIONS +INVITE +INVITED +INVITES +INVITING +INVOCABLE +INVOCATION +INVOCATIONS +INVOICE +INVOICED +INVOICES +INVOICING +INVOKE +INVOKED +INVOKER +INVOKES +INVOKING +INVOLUNTARILY +INVOLUNTARY +INVOLVE +INVOLVED +INVOLVEMENT +INVOLVEMENTS +INVOLVES +INVOLVING +INWARD +INWARDLY +INWARDNESS +INWARDS +IODINE +ION +IONIAN +IONIANS +IONICIZATION +IONICIZATIONS +IONICIZE +IONICIZES +IONOSPHERE +IONOSPHERIC +IONS +IOTA +IOWA +IRA +IRAN +IRANIAN +IRANIANS +IRANIZE +IRANIZES +IRAQ +IRAQI +IRAQIS +IRATE +IRATELY +IRATENESS +IRE +IRELAND +IRENE +IRES +IRIS +IRISH +IRISHIZE +IRISHIZES +IRISHMAN +IRISHMEN +IRK +IRKED +IRKING +IRKS +IRKSOME +IRMA +IRON +IRONED +IRONIC +IRONICAL +IRONICALLY +IRONIES +IRONING +IRONINGS +IRONS +IRONY +IROQUOIS +IRRADIATE +IRRATIONAL +IRRATIONALLY +IRRATIONALS +IRRAWADDY +IRRECONCILABLE +IRRECOVERABLE +IRREDUCIBLE +IRREDUCIBLY +IRREFLEXIVE +IRREFUTABLE +IRREGULAR +IRREGULARITIES +IRREGULARITY +IRREGULARLY +IRREGULARS +IRRELEVANCE +IRRELEVANCES +IRRELEVANT +IRRELEVANTLY +IRREPLACEABLE +IRREPRESSIBLE +IRREPRODUCIBILITY +IRREPRODUCIBLE +IRRESISTIBLE +IRRESPECTIVE +IRRESPECTIVELY +IRRESPONSIBLE +IRRESPONSIBLY +IRRETRIEVABLY +IRREVERENT +IRREVERSIBILITY +IRREVERSIBLE +IRREVERSIBLY +IRREVOCABLE +IRREVOCABLY +IRRIGATE +IRRIGATED +IRRIGATES +IRRIGATING +IRRIGATION +IRRITABLE +IRRITANT +IRRITATE +IRRITATED +IRRITATES +IRRITATING +IRRITATION +IRRITATIONS +IRVIN +IRVINE +IRVING +IRWIN +ISAAC +ISAACS +ISAACSON +ISABEL +ISABELLA +ISADORE +ISAIAH +ISFAHAN +ISING +ISIS +ISLAM +ISLAMABAD +ISLAMIC +ISLAMIZATION +ISLAMIZATIONS +ISLAMIZE +ISLAMIZES +ISLAND +ISLANDER +ISLANDERS +ISLANDIA +ISLANDS +ISLE +ISLES +ISLET +ISLETS +ISOLATE +ISOLATED +ISOLATES +ISOLATING +ISOLATION +ISOLATIONS +ISOLDE +ISOMETRIC +ISOMORPHIC +ISOMORPHICALLY +ISOMORPHISM +ISOMORPHISMS +ISOTOPE +ISOTOPES +ISRAEL +ISRAELI +ISRAELIS +ISRAELITE +ISRAELITES +ISRAELITIZE +ISRAELITIZES +ISSUANCE +ISSUE +ISSUED +ISSUER +ISSUERS +ISSUES +ISSUING +ISTANBUL +ISTHMUS +ISTVAN +ITALIAN +ITALIANIZATION +ITALIANIZATIONS +ITALIANIZE +ITALIANIZER +ITALIANIZERS +ITALIANIZES +ITALIANS +ITALIC +ITALICIZE +ITALICIZED +ITALICS +ITALY +ITCH +ITCHES +ITCHING +ITEL +ITEM +ITEMIZATION +ITEMIZATIONS +ITEMIZE +ITEMIZED +ITEMIZES +ITEMIZING +ITEMS +ITERATE +ITERATED +ITERATES +ITERATING +ITERATION +ITERATIONS +ITERATIVE +ITERATIVELY +ITERATOR +ITERATORS +ITHACA +ITHACAN +ITINERARIES +ITINERARY +ITO +ITS +ITSELF +IVAN +IVANHOE +IVERSON +IVIES +IVORY +IVY +IZAAK +IZVESTIA +JAB +JABBED +JABBING +JABLONSKY +JABS +JACK +JACKASS +JACKET +JACKETED +JACKETS +JACKIE +JACKING +JACKKNIFE +JACKMAN +JACKPOT +JACKSON +JACKSONIAN +JACKSONS +JACKSONVILLE +JACKY +JACOB +JACOBEAN +JACOBI +JACOBIAN +JACOBINIZE +JACOBITE +JACOBS +JACOBSEN +JACOBSON +JACOBUS +JACOBY +JACQUELINE +JACQUES +JADE +JADED +JAEGER +JAGUAR +JAIL +JAILED +JAILER +JAILERS +JAILING +JAILS +JAIME +JAKARTA +JAKE +JAKES +JAM +JAMAICA +JAMAICAN +JAMES +JAMESON +JAMESTOWN +JAMMED +JAMMING +JAMS +JANE +JANEIRO +JANESVILLE +JANET +JANICE +JANIS +JANITOR +JANITORS +JANOS +JANSEN +JANSENIST +JANUARIES +JANUARY +JANUS +JAPAN +JAPANESE +JAPANIZATION +JAPANIZATIONS +JAPANIZE +JAPANIZED +JAPANIZES +JAPANIZING +JAR +JARGON +JARRED +JARRING +JARRINGLY +JARS +JARVIN +JASON +JASTROW +JAUNDICE +JAUNT +JAUNTINESS +JAUNTS +JAUNTY +JAVA +JAVANESE +JAVELIN +JAVELINS +JAW +JAWBONE +JAWS +JAY +JAYCEE +JAYCEES +JAZZ +JAZZY +JEALOUS +JEALOUSIES +JEALOUSLY +JEALOUSY +JEAN +JEANNE +JEANNIE +JEANS +JED +JEEP +JEEPS +JEER +JEERS +JEFF +JEFFERSON +JEFFERSONIAN +JEFFERSONIANS +JEFFREY +JEHOVAH +JELLIES +JELLO +JELLY +JELLYFISH +JENKINS +JENNIE +JENNIFER +JENNINGS +JENNY +JENSEN +JEOPARDIZE +JEOPARDIZED +JEOPARDIZES +JEOPARDIZING +JEOPARDY +JEREMIAH +JEREMY +JERES +JERICHO +JERK +JERKED +JERKINESS +JERKING +JERKINGS +JERKS +JERKY +JEROBOAM +JEROME +JERRY +JERSEY +JERSEYS +JERUSALEM +JESSE +JESSICA +JESSIE +JESSY +JEST +JESTED +JESTER +JESTING +JESTS +JESUIT +JESUITISM +JESUITIZE +JESUITIZED +JESUITIZES +JESUITIZING +JESUITS +JESUS +JET +JETLINER +JETS +JETTED +JETTING +JEW +JEWEL +JEWELED +JEWELER +JEWELL +JEWELLED +JEWELRIES +JEWELRY +JEWELS +JEWETT +JEWISH +JEWISHNESS +JEWS +JIFFY +JIG +JIGS +JIGSAW +JILL +JIM +JIMENEZ +JIMMIE +JINGLE +JINGLED +JINGLING +JINNY +JITTER +JITTERBUG +JITTERY +JOAN +JOANNA +JOANNE +JOAQUIN +JOB +JOBREL +JOBS +JOCKEY +JOCKSTRAP +JOCUND +JODY +JOE +JOEL +JOES +JOG +JOGGING +JOGS +JOHANN +JOHANNA +JOHANNES +JOHANNESBURG +JOHANSEN +JOHANSON +JOHN +JOHNNIE +JOHNNY +JOHNS +JOHNSEN +JOHNSON +JOHNSTON +JOHNSTOWN +JOIN +JOINED +JOINER +JOINERS +JOINING +JOINS +JOINT +JOINTLY +JOINTS +JOKE +JOKED +JOKER +JOKERS +JOKES +JOKING +JOKINGLY +JOLIET +JOLLA +JOLLY +JOLT +JOLTED +JOLTING +JOLTS +JON +JONAS +JONATHAN +JONATHANIZATION +JONATHANIZATIONS +JONES +JONESES +JONQUIL +JOPLIN +JORDAN +JORDANIAN +JORGE +JORGENSEN +JORGENSON +JOSE +JOSEF +JOSEPH +JOSEPHINE +JOSEPHSON +JOSEPHUS +JOSHUA +JOSIAH +JOSTLE +JOSTLED +JOSTLES +JOSTLING +JOT +JOTS +JOTTED +JOTTING +JOULE +JOURNAL +JOURNALISM +JOURNALIST +JOURNALISTS +JOURNALIZE +JOURNALIZED +JOURNALIZES +JOURNALIZING +JOURNALS +JOURNEY +JOURNEYED +JOURNEYING +JOURNEYINGS +JOURNEYMAN +JOURNEYMEN +JOURNEYS +JOUST +JOUSTED +JOUSTING +JOUSTS +JOVANOVICH +JOVE +JOVIAL +JOVIAN +JOY +JOYCE +JOYFUL +JOYFULLY +JOYOUS +JOYOUSLY +JOYOUSNESS +JOYRIDE +JOYS +JOYSTICK +JUAN +JUANITA +JUBAL +JUBILEE +JUDAICA +JUDAISM +JUDAS +JUDD +JUDDER +JUDDERED +JUDDERING +JUDDERS +JUDE +JUDEA +JUDGE +JUDGED +JUDGES +JUDGING +JUDGMENT +JUDGMENTS +JUDICIAL +JUDICIARY +JUDICIOUS +JUDICIOUSLY +JUDITH +JUDO +JUDSON +JUDY +JUG +JUGGLE +JUGGLER +JUGGLERS +JUGGLES +JUGGLING +JUGOSLAVIA +JUGS +JUICE +JUICES +JUICIEST +JUICY +JUKES +JULES +JULIA +JULIAN +JULIE +JULIES +JULIET +JULIO +JULIUS +JULY +JUMBLE +JUMBLED +JUMBLES +JUMBO +JUMP +JUMPED +JUMPER +JUMPERS +JUMPING +JUMPS +JUMPY +JUNCTION +JUNCTIONS +JUNCTURE +JUNCTURES +JUNE +JUNEAU +JUNES +JUNG +JUNGIAN +JUNGLE +JUNGLES +JUNIOR +JUNIORS +JUNIPER +JUNK +JUNKER +JUNKERS +JUNKS +JUNKY +JUNO +JUNTA +JUPITER +JURA +JURAS +JURASSIC +JURE +JURIES +JURISDICTION +JURISDICTIONS +JURISPRUDENCE +JURIST +JUROR +JURORS +JURY +JUST +JUSTICE +JUSTICES +JUSTIFIABLE +JUSTIFIABLY +JUSTIFICATION +JUSTIFICATIONS +JUSTIFIED +JUSTIFIER +JUSTIFIERS +JUSTIFIES +JUSTIFY +JUSTIFYING +JUSTINE +JUSTINIAN +JUSTLY +JUSTNESS +JUT +JUTISH +JUTLAND +JUTTING +JUVENILE +JUVENILES +JUXTAPOSE +JUXTAPOSED +JUXTAPOSES +JUXTAPOSING +KABUKI +KABUL +KADDISH +KAFKA +KAFKAESQUE +KAHN +KAJAR +KALAMAZOO +KALI +KALMUK +KAMCHATKA +KAMIKAZE +KAMIKAZES +KAMPALA +KAMPUCHEA +KANARESE +KANE +KANGAROO +KANJI +KANKAKEE +KANNADA +KANSAS +KANT +KANTIAN +KAPLAN +KAPPA +KARACHI +KARAMAZOV +KARATE +KAREN +KARL +KAROL +KARP +KASHMIR +KASKASKIA +KATE +KATHARINE +KATHERINE +KATHLEEN +KATHY +KATIE +KATMANDU +KATOWICE +KATZ +KAUFFMAN +KAUFMAN +KAY +KEATON +KEATS +KEEGAN +KEEL +KEELED +KEELING +KEELS +KEEN +KEENAN +KEENER +KEENEST +KEENLY +KEENNESS +KEEP +KEEPER +KEEPERS +KEEPING +KEEPS +KEITH +KELLER +KELLEY +KELLOGG +KELLY +KELSEY +KELVIN +KEMP +KEN +KENDALL +KENILWORTH +KENNAN +KENNECOTT +KENNEDY +KENNEL +KENNELS +KENNETH +KENNEY +KENNING +KENNY +KENOSHA +KENSINGTON +KENT +KENTON +KENTUCKY +KENYA +KENYON +KEPLER +KEPT +KERCHIEF +KERCHIEFS +KERMIT +KERN +KERNEL +KERNELS +KERNIGHAN +KEROSENE +KEROUAC +KERR +KESSLER +KETCHUP +KETTERING +KETTLE +KETTLES +KEVIN +KEWASKUM +KEWAUNEE +KEY +KEYBOARD +KEYBOARDS +KEYED +KEYES +KEYHOLE +KEYING +KEYNES +KEYNESIAN +KEYNOTE +KEYPAD +KEYPADS +KEYS +KEYSTROKE +KEYSTROKES +KEYWORD +KEYWORDS +KHARTOUM +KHMER +KHRUSHCHEV +KHRUSHCHEVS +KICK +KICKAPOO +KICKED +KICKER +KICKERS +KICKING +KICKOFF +KICKS +KID +KIDDE +KIDDED +KIDDIE +KIDDING +KIDNAP +KIDNAPPER +KIDNAPPERS +KIDNAPPING +KIDNAPPINGS +KIDNAPS +KIDNEY +KIDNEYS +KIDS +KIEFFER +KIEL +KIEV +KIEWIT +KIGALI +KIKUYU +KILGORE +KILIMANJARO +KILL +KILLEBREW +KILLED +KILLER +KILLERS +KILLING +KILLINGLY +KILLINGS +KILLJOY +KILLS +KILOBIT +KILOBITS +KILOBLOCK +KILOBYTE +KILOBYTES +KILOGRAM +KILOGRAMS +KILOHERTZ +KILOHM +KILOJOULE +KILOMETER +KILOMETERS +KILOTON +KILOVOLT +KILOWATT +KILOWORD +KIM +KIMBALL +KIMBERLY +KIMONO +KIN +KIND +KINDER +KINDERGARTEN +KINDEST +KINDHEARTED +KINDLE +KINDLED +KINDLES +KINDLING +KINDLY +KINDNESS +KINDRED +KINDS +KINETIC +KING +KINGDOM +KINGDOMS +KINGLY +KINGPIN +KINGS +KINGSBURY +KINGSLEY +KINGSTON +KINGSTOWN +KINGWOOD +KINK +KINKY +KINNEY +KINNICKINNIC +KINSEY +KINSHASHA +KINSHIP +KINSMAN +KIOSK +KIOWA +KIPLING +KIRBY +KIRCHNER +KIRCHOFF +KIRK +KIRKLAND +KIRKPATRICK +KIRKWOOD +KIROV +KISS +KISSED +KISSER +KISSERS +KISSES +KISSING +KIT +KITAKYUSHU +KITCHEN +KITCHENETTE +KITCHENS +KITE +KITED +KITES +KITING +KITS +KITTEN +KITTENISH +KITTENS +KITTY +KIWANIS +KLAN +KLAUS +KLAXON +KLEIN +KLEINROCK +KLINE +KLUDGE +KLUDGES +KLUX +KLYSTRON +KNACK +KNAPP +KNAPSACK +KNAPSACKS +KNAUER +KNAVE +KNAVES +KNEAD +KNEADS +KNEE +KNEECAP +KNEED +KNEEING +KNEEL +KNEELED +KNEELING +KNEELS +KNEES +KNELL +KNELLS +KNELT +KNEW +KNICKERBOCKER +KNICKERBOCKERS +KNIFE +KNIFED +KNIFES +KNIFING +KNIGHT +KNIGHTED +KNIGHTHOOD +KNIGHTING +KNIGHTLY +KNIGHTS +KNIGHTSBRIDGE +KNIT +KNITS +KNIVES +KNOB +KNOBELOCH +KNOBS +KNOCK +KNOCKDOWN +KNOCKED +KNOCKER +KNOCKERS +KNOCKING +KNOCKOUT +KNOCKS +KNOLL +KNOLLS +KNOSSOS +KNOT +KNOTS +KNOTT +KNOTTED +KNOTTING +KNOW +KNOWABLE +KNOWER +KNOWHOW +KNOWING +KNOWINGLY +KNOWLEDGE +KNOWLEDGEABLE +KNOWLES +KNOWLTON +KNOWN +KNOWS +KNOX +KNOXVILLE +KNUCKLE +KNUCKLED +KNUCKLES +KNUDSEN +KNUDSON +KNUTH +KNUTSEN +KNUTSON +KOALA +KOBAYASHI +KOCH +KOCHAB +KODACHROME +KODAK +KODIAK +KOENIG +KOENIGSBERG +KOHLER +KONG +KONRAD +KOPPERS +KORAN +KOREA +KOREAN +KOREANS +KOSHER +KOVACS +KOWALEWSKI +KOWALSKI +KOWLOON +KOWTOW +KRAEMER +KRAKATOA +KRAKOW +KRAMER +KRAUSE +KREBS +KREMLIN +KRESGE +KRIEGER +KRISHNA +KRISTIN +KRONECKER +KRUEGER +KRUGER +KRUSE +KUALA +KUDO +KUENNING +KUHN +KUMAR +KURD +KURDISH +KURT +KUWAIT +KUWAITI +KYOTO +LAB +LABAN +LABEL +LABELED +LABELING +LABELLED +LABELLER +LABELLERS +LABELLING +LABELS +LABOR +LABORATORIES +LABORATORY +LABORED +LABORER +LABORERS +LABORING +LABORINGS +LABORIOUS +LABORIOUSLY +LABORS +LABRADOR +LABS +LABYRINTH +LABYRINTHS +LAC +LACE +LACED +LACERATE +LACERATED +LACERATES +LACERATING +LACERATION +LACERATIONS +LACERTA +LACES +LACEY +LACHESIS +LACING +LACK +LACKAWANNA +LACKED +LACKEY +LACKING +LACKS +LACQUER +LACQUERED +LACQUERS +LACROSSE +LACY +LAD +LADDER +LADEN +LADIES +LADING +LADLE +LADS +LADY +LADYLIKE +LAFAYETTE +LAG +LAGER +LAGERS +LAGOON +LAGOONS +LAGOS +LAGRANGE +LAGRANGIAN +LAGS +LAGUERRE +LAGUNA +LAHORE +LAID +LAIDLAW +LAIN +LAIR +LAIRS +LAISSEZ +LAKE +LAKEHURST +LAKES +LAKEWOOD +LAMAR +LAMARCK +LAMB +LAMBDA +LAMBDAS +LAMBERT +LAMBS +LAME +LAMED +LAMELY +LAMENESS +LAMENT +LAMENTABLE +LAMENTATION +LAMENTATIONS +LAMENTED +LAMENTING +LAMENTS +LAMES +LAMINAR +LAMING +LAMP +LAMPLIGHT +LAMPOON +LAMPORT +LAMPREY +LAMPS +LANA +LANCASHIRE +LANCASTER +LANCE +LANCED +LANCELOT +LANCER +LANCES +LAND +LANDED +LANDER +LANDERS +LANDFILL +LANDING +LANDINGS +LANDIS +LANDLADIES +LANDLADY +LANDLORD +LANDLORDS +LANDMARK +LANDMARKS +LANDOWNER +LANDOWNERS +LANDS +LANDSCAPE +LANDSCAPED +LANDSCAPES +LANDSCAPING +LANDSLIDE +LANDWEHR +LANE +LANES +LANG +LANGE +LANGELAND +LANGFORD +LANGLEY +LANGMUIR +LANGUAGE +LANGUAGES +LANGUID +LANGUIDLY +LANGUIDNESS +LANGUISH +LANGUISHED +LANGUISHES +LANGUISHING +LANKA +LANSING +LANTERN +LANTERNS +LAO +LAOCOON +LAOS +LAOTIAN +LAOTIANS +LAP +LAPEL +LAPELS +LAPLACE +LAPLACIAN +LAPPING +LAPS +LAPSE +LAPSED +LAPSES +LAPSING +LARAMIE +LARD +LARDER +LAREDO +LARES +LARGE +LARGELY +LARGENESS +LARGER +LARGEST +LARK +LARKIN +LARKS +LARRY +LARS +LARSEN +LARSON +LARVA +LARVAE +LARYNX +LASCIVIOUS +LASER +LASERS +LASH +LASHED +LASHES +LASHING +LASHINGS +LASS +LASSES +LASSO +LAST +LASTED +LASTING +LASTLY +LASTS +LASZLO +LATCH +LATCHED +LATCHES +LATCHING +LATE +LATELY +LATENCY +LATENESS +LATENT +LATER +LATERAL +LATERALLY +LATERAN +LATEST +LATEX +LATHE +LATHROP +LATIN +LATINATE +LATINITY +LATINIZATION +LATINIZATIONS +LATINIZE +LATINIZED +LATINIZER +LATINIZERS +LATINIZES +LATINIZING +LATITUDE +LATITUDES +LATRINE +LATRINES +LATROBE +LATTER +LATTERLY +LATTICE +LATTICES +LATTIMER +LATVIA +LAUDABLE +LAUDERDALE +LAUE +LAUGH +LAUGHABLE +LAUGHABLY +LAUGHED +LAUGHING +LAUGHINGLY +LAUGHINGSTOCK +LAUGHLIN +LAUGHS +LAUGHTER +LAUNCH +LAUNCHED +LAUNCHER +LAUNCHES +LAUNCHING +LAUNCHINGS +LAUNDER +LAUNDERED +LAUNDERER +LAUNDERING +LAUNDERINGS +LAUNDERS +LAUNDROMAT +LAUNDROMATS +LAUNDRY +LAUREATE +LAUREL +LAURELS +LAUREN +LAURENCE +LAURENT +LAURENTIAN +LAURIE +LAUSANNE +LAVA +LAVATORIES +LAVATORY +LAVENDER +LAVISH +LAVISHED +LAVISHING +LAVISHLY +LAVOISIER +LAW +LAWBREAKER +LAWFORD +LAWFUL +LAWFULLY +LAWGIVER +LAWLESS +LAWLESSNESS +LAWN +LAWNS +LAWRENCE +LAWRENCEVILLE +LAWS +LAWSON +LAWSUIT +LAWSUITS +LAWYER +LAWYERS +LAX +LAXATIVE +LAY +LAYER +LAYERED +LAYERING +LAYERS +LAYING +LAYMAN +LAYMEN +LAYOFF +LAYOFFS +LAYOUT +LAYOUTS +LAYS +LAYTON +LAZARUS +LAZED +LAZIER +LAZIEST +LAZILY +LAZINESS +LAZING +LAZY +LAZYBONES +LEAD +LEADED +LEADEN +LEADER +LEADERS +LEADERSHIP +LEADERSHIPS +LEADING +LEADINGS +LEADS +LEAF +LEAFED +LEAFIEST +LEAFING +LEAFLESS +LEAFLET +LEAFLETS +LEAFY +LEAGUE +LEAGUED +LEAGUER +LEAGUERS +LEAGUES +LEAK +LEAKAGE +LEAKAGES +LEAKED +LEAKING +LEAKS +LEAKY +LEAN +LEANDER +LEANED +LEANER +LEANEST +LEANING +LEANNESS +LEANS +LEAP +LEAPED +LEAPFROG +LEAPING +LEAPS +LEAPT +LEAR +LEARN +LEARNED +LEARNER +LEARNERS +LEARNING +LEARNS +LEARY +LEASE +LEASED +LEASES +LEASH +LEASHES +LEASING +LEAST +LEATHER +LEATHERED +LEATHERN +LEATHERNECK +LEATHERS +LEAVE +LEAVED +LEAVEN +LEAVENED +LEAVENING +LEAVENWORTH +LEAVES +LEAVING +LEAVINGS +LEBANESE +LEBANON +LEBESGUE +LECHERY +LECTURE +LECTURED +LECTURER +LECTURERS +LECTURES +LECTURING +LED +LEDGE +LEDGER +LEDGERS +LEDGES +LEE +LEECH +LEECHES +LEEDS +LEEK +LEER +LEERY +LEES +LEEUWENHOEK +LEEWARD +LEEWAY +LEFT +LEFTIST +LEFTISTS +LEFTMOST +LEFTOVER +LEFTOVERS +LEFTWARD +LEG +LEGACIES +LEGACY +LEGAL +LEGALITY +LEGALIZATION +LEGALIZE +LEGALIZED +LEGALIZES +LEGALIZING +LEGALLY +LEGEND +LEGENDARY +LEGENDRE +LEGENDS +LEGER +LEGERS +LEGGED +LEGGINGS +LEGIBILITY +LEGIBLE +LEGIBLY +LEGION +LEGIONS +LEGISLATE +LEGISLATED +LEGISLATES +LEGISLATING +LEGISLATION +LEGISLATIVE +LEGISLATOR +LEGISLATORS +LEGISLATURE +LEGISLATURES +LEGITIMACY +LEGITIMATE +LEGITIMATELY +LEGS +LEGUME +LEHIGH +LEHMAN +LEIBNIZ +LEIDEN +LEIGH +LEIGHTON +LEILA +LEIPZIG +LEISURE +LEISURELY +LELAND +LEMKE +LEMMA +LEMMAS +LEMMING +LEMMINGS +LEMON +LEMONADE +LEMONS +LEMUEL +LEN +LENA +LEND +LENDER +LENDERS +LENDING +LENDS +LENGTH +LENGTHEN +LENGTHENED +LENGTHENING +LENGTHENS +LENGTHLY +LENGTHS +LENGTHWISE +LENGTHY +LENIENCY +LENIENT +LENIENTLY +LENIN +LENINGRAD +LENINISM +LENINIST +LENNOX +LENNY +LENORE +LENS +LENSES +LENT +LENTEN +LENTIL +LENTILS +LEO +LEON +LEONA +LEONARD +LEONARDO +LEONE +LEONID +LEOPARD +LEOPARDS +LEOPOLD +LEOPOLDVILLE +LEPER +LEPROSY +LEROY +LESBIAN +LESBIANS +LESLIE +LESOTHO +LESS +LESSEN +LESSENED +LESSENING +LESSENS +LESSER +LESSON +LESSONS +LESSOR +LEST +LESTER +LET +LETHAL +LETHE +LETITIA +LETS +LETTER +LETTERED +LETTERER +LETTERHEAD +LETTERING +LETTERS +LETTING +LETTUCE +LEUKEMIA +LEV +LEVEE +LEVEES +LEVEL +LEVELED +LEVELER +LEVELING +LEVELLED +LEVELLER +LEVELLEST +LEVELLING +LEVELLY +LEVELNESS +LEVELS +LEVER +LEVERAGE +LEVERS +LEVI +LEVIABLE +LEVIED +LEVIES +LEVIN +LEVINE +LEVIS +LEVITICUS +LEVITT +LEVITY +LEVY +LEVYING +LEW +LEWD +LEWDLY +LEWDNESS +LEWELLYN +LEXICAL +LEXICALLY +LEXICOGRAPHIC +LEXICOGRAPHICAL +LEXICOGRAPHICALLY +LEXICON +LEXICONS +LEXINGTON +LEYDEN +LIABILITIES +LIABILITY +LIABLE +LIAISON +LIAISONS +LIAR +LIARS +LIBEL +LIBELOUS +LIBERACE +LIBERAL +LIBERALIZE +LIBERALIZED +LIBERALIZES +LIBERALIZING +LIBERALLY +LIBERALS +LIBERATE +LIBERATED +LIBERATES +LIBERATING +LIBERATION +LIBERATOR +LIBERATORS +LIBERIA +LIBERTARIAN +LIBERTIES +LIBERTY +LIBIDO +LIBRARIAN +LIBRARIANS +LIBRARIES +LIBRARY +LIBRETTO +LIBREVILLE +LIBYA +LIBYAN +LICE +LICENSE +LICENSED +LICENSEE +LICENSES +LICENSING +LICENSOR +LICENTIOUS +LICHEN +LICHENS +LICHTER +LICK +LICKED +LICKING +LICKS +LICORICE +LID +LIDS +LIE +LIEBERMAN +LIECHTENSTEIN +LIED +LIEGE +LIEN +LIENS +LIES +LIEU +LIEUTENANT +LIEUTENANTS +LIFE +LIFEBLOOD +LIFEBOAT +LIFEGUARD +LIFELESS +LIFELESSNESS +LIFELIKE +LIFELONG +LIFER +LIFESPAN +LIFESTYLE +LIFESTYLES +LIFETIME +LIFETIMES +LIFT +LIFTED +LIFTER +LIFTERS +LIFTING +LIFTS +LIGAMENT +LIGATURE +LIGGET +LIGGETT +LIGHT +LIGHTED +LIGHTEN +LIGHTENS +LIGHTER +LIGHTERS +LIGHTEST +LIGHTFACE +LIGHTHEARTED +LIGHTHOUSE +LIGHTHOUSES +LIGHTING +LIGHTLY +LIGHTNESS +LIGHTNING +LIGHTNINGS +LIGHTS +LIGHTWEIGHT +LIKE +LIKED +LIKELIER +LIKELIEST +LIKELIHOOD +LIKELIHOODS +LIKELINESS +LIKELY +LIKEN +LIKENED +LIKENESS +LIKENESSES +LIKENING +LIKENS +LIKES +LIKEWISE +LIKING +LILA +LILAC +LILACS +LILIAN +LILIES +LILLIAN +LILLIPUT +LILLIPUTIAN +LILLIPUTIANIZE +LILLIPUTIANIZES +LILLY +LILY +LIMA +LIMAN +LIMB +LIMBER +LIMBO +LIMBS +LIME +LIMELIGHT +LIMERICK +LIMES +LIMESTONE +LIMIT +LIMITABILITY +LIMITABLY +LIMITATION +LIMITATIONS +LIMITED +LIMITER +LIMITERS +LIMITING +LIMITLESS +LIMITS +LIMOUSINE +LIMP +LIMPED +LIMPING +LIMPLY +LIMPNESS +LIMPS +LIN +LINCOLN +LIND +LINDA +LINDBERG +LINDBERGH +LINDEN +LINDHOLM +LINDQUIST +LINDSAY +LINDSEY +LINDSTROM +LINDY +LINE +LINEAR +LINEARITIES +LINEARITY +LINEARIZABLE +LINEARIZE +LINEARIZED +LINEARIZES +LINEARIZING +LINEARLY +LINED +LINEN +LINENS +LINER +LINERS +LINES +LINEUP +LINGER +LINGERED +LINGERIE +LINGERING +LINGERS +LINGO +LINGUA +LINGUIST +LINGUISTIC +LINGUISTICALLY +LINGUISTICS +LINGUISTS +LINING +LININGS +LINK +LINKAGE +LINKAGES +LINKED +LINKER +LINKERS +LINKING +LINKS +LINNAEUS +LINOLEUM +LINOTYPE +LINSEED +LINT +LINTON +LINUS +LINUX +LION +LIONEL +LIONESS +LIONESSES +LIONS +LIP +LIPPINCOTT +LIPS +LIPSCHITZ +LIPSCOMB +LIPSTICK +LIPTON +LIQUID +LIQUIDATE +LIQUIDATION +LIQUIDATIONS +LIQUIDITY +LIQUIDS +LIQUOR +LIQUORS +LISA +LISBON +LISE +LISP +LISPED +LISPING +LISPS +LISS +LISSAJOUS +LIST +LISTED +LISTEN +LISTENED +LISTENER +LISTENERS +LISTENING +LISTENS +LISTER +LISTERIZE +LISTERIZES +LISTERS +LISTING +LISTINGS +LISTLESS +LISTON +LISTS +LIT +LITANY +LITER +LITERACY +LITERAL +LITERALLY +LITERALNESS +LITERALS +LITERARY +LITERATE +LITERATURE +LITERATURES +LITERS +LITHE +LITHOGRAPH +LITHOGRAPHY +LITHUANIA +LITHUANIAN +LITIGANT +LITIGATE +LITIGATION +LITIGIOUS +LITMUS +LITTER +LITTERBUG +LITTERED +LITTERING +LITTERS +LITTLE +LITTLENESS +LITTLER +LITTLEST +LITTLETON +LITTON +LIVABLE +LIVABLY +LIVE +LIVED +LIVELIHOOD +LIVELY +LIVENESS +LIVER +LIVERIED +LIVERMORE +LIVERPOOL +LIVERPUDLIAN +LIVERS +LIVERY +LIVES +LIVESTOCK +LIVID +LIVING +LIVINGSTON +LIZ +LIZARD +LIZARDS +LIZZIE +LIZZY +LLOYD +LOAD +LOADED +LOADER +LOADERS +LOADING +LOADINGS +LOADS +LOAF +LOAFED +LOAFER +LOAN +LOANED +LOANING +LOANS +LOATH +LOATHE +LOATHED +LOATHING +LOATHLY +LOATHSOME +LOAVES +LOBBIED +LOBBIES +LOBBY +LOBBYING +LOBE +LOBES +LOBSTER +LOBSTERS +LOCAL +LOCALITIES +LOCALITY +LOCALIZATION +LOCALIZE +LOCALIZED +LOCALIZES +LOCALIZING +LOCALLY +LOCALS +LOCATE +LOCATED +LOCATES +LOCATING +LOCATION +LOCATIONS +LOCATIVE +LOCATIVES +LOCATOR +LOCATORS +LOCI +LOCK +LOCKE +LOCKED +LOCKER +LOCKERS +LOCKHART +LOCKHEED +LOCKIAN +LOCKING +LOCKINGS +LOCKOUT +LOCKOUTS +LOCKS +LOCKSMITH +LOCKSTEP +LOCKUP +LOCKUPS +LOCKWOOD +LOCOMOTION +LOCOMOTIVE +LOCOMOTIVES +LOCUS +LOCUST +LOCUSTS +LODGE +LODGED +LODGER +LODGES +LODGING +LODGINGS +LODOWICK +LOEB +LOFT +LOFTINESS +LOFTS +LOFTY +LOGAN +LOGARITHM +LOGARITHMIC +LOGARITHMICALLY +LOGARITHMS +LOGGED +LOGGER +LOGGERS +LOGGING +LOGIC +LOGICAL +LOGICALLY +LOGICIAN +LOGICIANS +LOGICS +LOGIN +LOGINS +LOGISTIC +LOGISTICS +LOGJAM +LOGO +LOGS +LOIN +LOINCLOTH +LOINS +LOIRE +LOIS +LOITER +LOITERED +LOITERER +LOITERING +LOITERS +LOKI +LOLA +LOMB +LOMBARD +LOMBARDY +LOME +LONDON +LONDONDERRY +LONDONER +LONDONIZATION +LONDONIZATIONS +LONDONIZE +LONDONIZES +LONE +LONELIER +LONELIEST +LONELINESS +LONELY +LONER +LONERS +LONESOME +LONG +LONGED +LONGER +LONGEST +LONGEVITY +LONGFELLOW +LONGHAND +LONGING +LONGINGS +LONGITUDE +LONGITUDES +LONGS +LONGSTANDING +LONGSTREET +LOOK +LOOKAHEAD +LOOKED +LOOKER +LOOKERS +LOOKING +LOOKOUT +LOOKS +LOOKUP +LOOKUPS +LOOM +LOOMED +LOOMING +LOOMIS +LOOMS +LOON +LOOP +LOOPED +LOOPHOLE +LOOPHOLES +LOOPING +LOOPS +LOOSE +LOOSED +LOOSELEAF +LOOSELY +LOOSEN +LOOSENED +LOOSENESS +LOOSENING +LOOSENS +LOOSER +LOOSES +LOOSEST +LOOSING +LOOT +LOOTED +LOOTER +LOOTING +LOOTS +LOPEZ +LOPSIDED +LORD +LORDLY +LORDS +LORDSHIP +LORE +LORELEI +LOREN +LORENTZIAN +LORENZ +LORETTA +LORINDA +LORRAINE +LORRY +LOS +LOSE +LOSER +LOSERS +LOSES +LOSING +LOSS +LOSSES +LOSSIER +LOSSIEST +LOSSY +LOST +LOT +LOTHARIO +LOTION +LOTS +LOTTE +LOTTERY +LOTTIE +LOTUS +LOU +LOUD +LOUDER +LOUDEST +LOUDLY +LOUDNESS +LOUDSPEAKER +LOUDSPEAKERS +LOUIS +LOUISA +LOUISE +LOUISIANA +LOUISIANAN +LOUISVILLE +LOUNGE +LOUNGED +LOUNGES +LOUNGING +LOUNSBURY +LOURDES +LOUSE +LOUSY +LOUT +LOUVRE +LOVABLE +LOVABLY +LOVE +LOVED +LOVEJOY +LOVELACE +LOVELAND +LOVELIER +LOVELIES +LOVELIEST +LOVELINESS +LOVELORN +LOVELY +LOVER +LOVERS +LOVES +LOVING +LOVINGLY +LOW +LOWE +LOWELL +LOWER +LOWERED +LOWERING +LOWERS +LOWEST +LOWLAND +LOWLANDS +LOWLIEST +LOWLY +LOWNESS +LOWRY +LOWS +LOY +LOYAL +LOYALLY +LOYALTIES +LOYALTY +LOYOLA +LUBBOCK +LUBELL +LUBRICANT +LUBRICATE +LUBRICATION +LUCAS +LUCERNE +LUCIA +LUCIAN +LUCID +LUCIEN +LUCIFER +LUCILLE +LUCIUS +LUCK +LUCKED +LUCKIER +LUCKIEST +LUCKILY +LUCKLESS +LUCKS +LUCKY +LUCRATIVE +LUCRETIA +LUCRETIUS +LUCY +LUDICROUS +LUDICROUSLY +LUDICROUSNESS +LUDLOW +LUDMILLA +LUDWIG +LUFTHANSA +LUFTWAFFE +LUGGAGE +LUIS +LUKE +LUKEWARM +LULL +LULLABY +LULLED +LULLS +LUMBER +LUMBERED +LUMBERING +LUMINOUS +LUMINOUSLY +LUMMOX +LUMP +LUMPED +LUMPING +LUMPS +LUMPUR +LUMPY +LUNAR +LUNATIC +LUNCH +LUNCHED +LUNCHEON +LUNCHEONS +LUNCHES +LUNCHING +LUND +LUNDBERG +LUNDQUIST +LUNG +LUNGED +LUNGS +LURA +LURCH +LURCHED +LURCHES +LURCHING +LURE +LURED +LURES +LURING +LURK +LURKED +LURKING +LURKS +LUSAKA +LUSCIOUS +LUSCIOUSLY +LUSCIOUSNESS +LUSH +LUST +LUSTER +LUSTFUL +LUSTILY +LUSTINESS +LUSTROUS +LUSTS +LUSTY +LUTE +LUTES +LUTHER +LUTHERAN +LUTHERANIZE +LUTHERANIZER +LUTHERANIZERS +LUTHERANIZES +LUTZ +LUXEMBOURG +LUXEMBURG +LUXURIANT +LUXURIANTLY +LUXURIES +LUXURIOUS +LUXURIOUSLY +LUXURY +LUZON +LYDIA +LYING +LYKES +LYLE +LYMAN +LYMPH +LYNCH +LYNCHBURG +LYNCHED +LYNCHER +LYNCHES +LYNDON +LYNN +LYNX +LYNXES +LYON +LYONS +LYRA +LYRE +LYRIC +LYRICS +LYSENKO +MABEL +MAC +MACADAMIA +MACARTHUR +MACARTHUR +MACASSAR +MACAULAY +MACAULAYAN +MACAULAYISM +MACAULAYISMS +MACBETH +MACDONALD +MACDONALD +MACDOUGALL +MACDOUGALL +MACDRAW +MACE +MACED +MACEDON +MACEDONIA +MACEDONIAN +MACES +MACGREGOR +MACGREGOR +MACH +MACHIAVELLI +MACHIAVELLIAN +MACHINATION +MACHINE +MACHINED +MACHINELIKE +MACHINERY +MACHINES +MACHINING +MACHO +MACINTOSH +MACINTOSH +MACINTOSH +MACKENZIE +MACKENZIE +MACKEREL +MACKEY +MACKINAC +MACKINAW +MACMAHON +MACMILLAN +MACMILLAN +MACON +MACPAINT +MACRO +MACROECONOMICS +MACROMOLECULE +MACROMOLECULES +MACROPHAGE +MACROS +MACROSCOPIC +MAD +MADAGASCAR +MADAM +MADAME +MADAMES +MADDEN +MADDENING +MADDER +MADDEST +MADDOX +MADE +MADEIRA +MADELEINE +MADELINE +MADHOUSE +MADHYA +MADISON +MADLY +MADMAN +MADMEN +MADNESS +MADONNA +MADONNAS +MADRAS +MADRID +MADSEN +MAE +MAELSTROM +MAESTRO +MAFIA +MAFIOSI +MAGAZINE +MAGAZINES +MAGDALENE +MAGELLAN +MAGELLANIC +MAGENTA +MAGGIE +MAGGOT +MAGGOTS +MAGIC +MAGICAL +MAGICALLY +MAGICIAN +MAGICIANS +MAGILL +MAGISTRATE +MAGISTRATES +MAGNA +MAGNESIUM +MAGNET +MAGNETIC +MAGNETICALLY +MAGNETISM +MAGNETISMS +MAGNETIZABLE +MAGNETIZED +MAGNETO +MAGNIFICATION +MAGNIFICENCE +MAGNIFICENT +MAGNIFICENTLY +MAGNIFIED +MAGNIFIER +MAGNIFIES +MAGNIFY +MAGNIFYING +MAGNITUDE +MAGNITUDES +MAGNOLIA +MAGNUM +MAGNUSON +MAGOG +MAGPIE +MAGRUDER +MAGUIRE +MAGUIRES +MAHARASHTRA +MAHAYANA +MAHAYANIST +MAHOGANY +MAHONEY +MAID +MAIDEN +MAIDENS +MAIDS +MAIER +MAIL +MAILABLE +MAILBOX +MAILBOXES +MAILED +MAILER +MAILING +MAILINGS +MAILMAN +MAILMEN +MAILS +MAIM +MAIMED +MAIMING +MAIMS +MAIN +MAINE +MAINFRAME +MAINFRAMES +MAINLAND +MAINLINE +MAINLY +MAINS +MAINSTAY +MAINSTREAM +MAINTAIN +MAINTAINABILITY +MAINTAINABLE +MAINTAINED +MAINTAINER +MAINTAINERS +MAINTAINING +MAINTAINS +MAINTENANCE +MAINTENANCES +MAIZE +MAJESTIC +MAJESTIES +MAJESTY +MAJOR +MAJORCA +MAJORED +MAJORING +MAJORITIES +MAJORITY +MAJORS +MAKABLE +MAKE +MAKER +MAKERS +MAKES +MAKESHIFT +MAKEUP +MAKEUPS +MAKING +MAKINGS +MALABAR +MALADIES +MALADY +MALAGASY +MALAMUD +MALARIA +MALAWI +MALAY +MALAYIZE +MALAYIZES +MALAYSIA +MALAYSIAN +MALCOLM +MALCONTENT +MALDEN +MALDIVE +MALE +MALEFACTOR +MALEFACTORS +MALENESS +MALES +MALEVOLENT +MALFORMED +MALFUNCTION +MALFUNCTIONED +MALFUNCTIONING +MALFUNCTIONS +MALI +MALIBU +MALICE +MALICIOUS +MALICIOUSLY +MALICIOUSNESS +MALIGN +MALIGNANT +MALIGNANTLY +MALL +MALLARD +MALLET +MALLETS +MALLORY +MALNUTRITION +MALONE +MALONEY +MALPRACTICE +MALRAUX +MALT +MALTA +MALTED +MALTESE +MALTHUS +MALTHUSIAN +MALTON +MALTS +MAMA +MAMMA +MAMMAL +MAMMALIAN +MAMMALS +MAMMAS +MAMMOTH +MAN +MANAGE +MANAGEABLE +MANAGEABLENESS +MANAGED +MANAGEMENT +MANAGEMENTS +MANAGER +MANAGERIAL +MANAGERS +MANAGES +MANAGING +MANAGUA +MANAMA +MANCHESTER +MANCHURIA +MANDARIN +MANDATE +MANDATED +MANDATES +MANDATING +MANDATORY +MANDELBROT +MANDIBLE +MANE +MANES +MANEUVER +MANEUVERED +MANEUVERING +MANEUVERS +MANFRED +MANGER +MANGERS +MANGLE +MANGLED +MANGLER +MANGLES +MANGLING +MANHATTAN +MANHATTANIZE +MANHATTANIZES +MANHOLE +MANHOOD +MANIA +MANIAC +MANIACAL +MANIACS +MANIC +MANICURE +MANICURED +MANICURES +MANICURING +MANIFEST +MANIFESTATION +MANIFESTATIONS +MANIFESTED +MANIFESTING +MANIFESTLY +MANIFESTS +MANIFOLD +MANIFOLDS +MANILA +MANIPULABILITY +MANIPULABLE +MANIPULATABLE +MANIPULATE +MANIPULATED +MANIPULATES +MANIPULATING +MANIPULATION +MANIPULATIONS +MANIPULATIVE +MANIPULATOR +MANIPULATORS +MANIPULATORY +MANITOBA +MANITOWOC +MANKIND +MANKOWSKI +MANLEY +MANLY +MANN +MANNED +MANNER +MANNERED +MANNERLY +MANNERS +MANNING +MANOMETER +MANOMETERS +MANOR +MANORS +MANPOWER +MANS +MANSFIELD +MANSION +MANSIONS +MANSLAUGHTER +MANTEL +MANTELS +MANTIS +MANTISSA +MANTISSAS +MANTLE +MANTLEPIECE +MANTLES +MANUAL +MANUALLY +MANUALS +MANUEL +MANUFACTURE +MANUFACTURED +MANUFACTURER +MANUFACTURERS +MANUFACTURES +MANUFACTURING +MANURE +MANUSCRIPT +MANUSCRIPTS +MANVILLE +MANY +MAO +MAORI +MAP +MAPLE +MAPLECREST +MAPLES +MAPPABLE +MAPPED +MAPPING +MAPPINGS +MAPS +MARATHON +MARBLE +MARBLES +MARBLING +MARC +MARCEAU +MARCEL +MARCELLO +MARCH +MARCHED +MARCHER +MARCHES +MARCHING +MARCIA +MARCO +MARCOTTE +MARCUS +MARCY +MARDI +MARDIS +MARE +MARES +MARGARET +MARGARINE +MARGERY +MARGIN +MARGINAL +MARGINALLY +MARGINS +MARGO +MARGUERITE +MARIANNE +MARIE +MARIETTA +MARIGOLD +MARIJUANA +MARILYN +MARIN +MARINA +MARINADE +MARINATE +MARINE +MARINER +MARINES +MARINO +MARIO +MARION +MARIONETTE +MARITAL +MARITIME +MARJORIE +MARJORY +MARK +MARKABLE +MARKED +MARKEDLY +MARKER +MARKERS +MARKET +MARKETABILITY +MARKETABLE +MARKETED +MARKETING +MARKETINGS +MARKETPLACE +MARKETPLACES +MARKETS +MARKHAM +MARKING +MARKINGS +MARKISM +MARKOV +MARKOVIAN +MARKOVITZ +MARKS +MARLBORO +MARLBOROUGH +MARLENE +MARLOWE +MARMALADE +MARMOT +MAROON +MARQUETTE +MARQUIS +MARRIAGE +MARRIAGEABLE +MARRIAGES +MARRIED +MARRIES +MARRIOTT +MARROW +MARRY +MARRYING +MARS +MARSEILLES +MARSH +MARSHA +MARSHAL +MARSHALED +MARSHALING +MARSHALL +MARSHALLED +MARSHALLING +MARSHALS +MARSHES +MARSHMALLOW +MART +MARTEN +MARTHA +MARTIAL +MARTIAN +MARTIANS +MARTINEZ +MARTINGALE +MARTINI +MARTINIQUE +MARTINSON +MARTS +MARTY +MARTYR +MARTYRDOM +MARTYRS +MARVEL +MARVELED +MARVELLED +MARVELLING +MARVELOUS +MARVELOUSLY +MARVELOUSNESS +MARVELS +MARVIN +MARX +MARXIAN +MARXISM +MARXISMS +MARXIST +MARY +MARYLAND +MARYLANDERS +MASCARA +MASCULINE +MASCULINELY +MASCULINITY +MASERU +MASH +MASHED +MASHES +MASHING +MASK +MASKABLE +MASKED +MASKER +MASKING +MASKINGS +MASKS +MASOCHIST +MASOCHISTS +MASON +MASONIC +MASONITE +MASONRY +MASONS +MASQUERADE +MASQUERADER +MASQUERADES +MASQUERADING +MASS +MASSACHUSETTS +MASSACRE +MASSACRED +MASSACRES +MASSAGE +MASSAGES +MASSAGING +MASSED +MASSES +MASSEY +MASSING +MASSIVE +MAST +MASTED +MASTER +MASTERED +MASTERFUL +MASTERFULLY +MASTERING +MASTERINGS +MASTERLY +MASTERMIND +MASTERPIECE +MASTERPIECES +MASTERS +MASTERY +MASTODON +MASTS +MASTURBATE +MASTURBATED +MASTURBATES +MASTURBATING +MASTURBATION +MAT +MATCH +MATCHABLE +MATCHED +MATCHER +MATCHERS +MATCHES +MATCHING +MATCHINGS +MATCHLESS +MATE +MATED +MATEO +MATER +MATERIAL +MATERIALIST +MATERIALIZE +MATERIALIZED +MATERIALIZES +MATERIALIZING +MATERIALLY +MATERIALS +MATERNAL +MATERNALLY +MATERNITY +MATES +MATH +MATHEMATICA +MATHEMATICAL +MATHEMATICALLY +MATHEMATICIAN +MATHEMATICIANS +MATHEMATICS +MATHEMATIK +MATHEWSON +MATHIAS +MATHIEU +MATILDA +MATING +MATINGS +MATISSE +MATISSES +MATRIARCH +MATRIARCHAL +MATRICES +MATRICULATE +MATRICULATION +MATRIMONIAL +MATRIMONY +MATRIX +MATROID +MATRON +MATRONLY +MATS +MATSON +MATSUMOTO +MATT +MATTED +MATTER +MATTERED +MATTERS +MATTHEW +MATTHEWS +MATTIE +MATTRESS +MATTRESSES +MATTSON +MATURATION +MATURE +MATURED +MATURELY +MATURES +MATURING +MATURITIES +MATURITY +MAUDE +MAUL +MAUREEN +MAURICE +MAURICIO +MAURINE +MAURITANIA +MAURITIUS +MAUSOLEUM +MAVERICK +MAVIS +MAWR +MAX +MAXIM +MAXIMA +MAXIMAL +MAXIMALLY +MAXIMILIAN +MAXIMIZE +MAXIMIZED +MAXIMIZER +MAXIMIZERS +MAXIMIZES +MAXIMIZING +MAXIMS +MAXIMUM +MAXIMUMS +MAXINE +MAXTOR +MAXWELL +MAXWELLIAN +MAY +MAYA +MAYANS +MAYBE +MAYER +MAYFAIR +MAYFLOWER +MAYHAP +MAYHEM +MAYNARD +MAYO +MAYONNAISE +MAYOR +MAYORAL +MAYORS +MAZDA +MAZE +MAZES +MBABANE +MCADAM +MCADAMS +MCALLISTER +MCBRIDE +MCCABE +MCCALL +MCCALLUM +MCCANN +MCCARTHY +MCCARTY +MCCAULEY +MCCLAIN +MCCLELLAN +MCCLURE +MCCLUSKEY +MCCONNEL +MCCONNELL +MCCORMICK +MCCOY +MCCRACKEN +MCCULLOUGH +MCDANIEL +MCDERMOTT +MCDONALD +MCDONNELL +MCDOUGALL +MCDOWELL +MCELHANEY +MCELROY +MCFADDEN +MCFARLAND +MCGEE +MCGILL +MCGINNIS +MCGOVERN +MCGOWAN +MCGRATH +MCGRAW +MCGREGOR +MCGUIRE +MCHUGH +MCINTOSH +MCINTYRE +MCKAY +MCKEE +MCKENNA +MCKENZIE +MCKEON +MCKESSON +MCKINLEY +MCKINNEY +MCKNIGHT +MCLANAHAN +MCLAUGHLIN +MCLEAN +MCLEOD +MCMAHON +MCMARTIN +MCMILLAN +MCMULLEN +MCNALLY +MCNAUGHTON +MCNEIL +MCNULTY +MCPHERSON +MEAD +MEADOW +MEADOWS +MEAGER +MEAGERLY +MEAGERNESS +MEAL +MEALS +MEALTIME +MEALY +MEAN +MEANDER +MEANDERED +MEANDERING +MEANDERS +MEANER +MEANEST +MEANING +MEANINGFUL +MEANINGFULLY +MEANINGFULNESS +MEANINGLESS +MEANINGLESSLY +MEANINGLESSNESS +MEANINGS +MEANLY +MEANNESS +MEANS +MEANT +MEANTIME +MEANWHILE +MEASLE +MEASLES +MEASURABLE +MEASURABLY +MEASURE +MEASURED +MEASUREMENT +MEASUREMENTS +MEASURER +MEASURES +MEASURING +MEAT +MEATS +MEATY +MECCA +MECHANIC +MECHANICAL +MECHANICALLY +MECHANICS +MECHANISM +MECHANISMS +MECHANIZATION +MECHANIZATIONS +MECHANIZE +MECHANIZED +MECHANIZES +MECHANIZING +MEDAL +MEDALLION +MEDALLIONS +MEDALS +MEDDLE +MEDDLED +MEDDLER +MEDDLES +MEDDLING +MEDEA +MEDFIELD +MEDFORD +MEDIA +MEDIAN +MEDIANS +MEDIATE +MEDIATED +MEDIATES +MEDIATING +MEDIATION +MEDIATIONS +MEDIATOR +MEDIC +MEDICAID +MEDICAL +MEDICALLY +MEDICARE +MEDICI +MEDICINAL +MEDICINALLY +MEDICINE +MEDICINES +MEDICIS +MEDICS +MEDIEVAL +MEDIOCRE +MEDIOCRITY +MEDITATE +MEDITATED +MEDITATES +MEDITATING +MEDITATION +MEDITATIONS +MEDITATIVE +MEDITERRANEAN +MEDITERRANEANIZATION +MEDITERRANEANIZATIONS +MEDITERRANEANIZE +MEDITERRANEANIZES +MEDIUM +MEDIUMS +MEDLEY +MEDUSA +MEDUSAN +MEEK +MEEKER +MEEKEST +MEEKLY +MEEKNESS +MEET +MEETING +MEETINGHOUSE +MEETINGS +MEETS +MEG +MEGABAUD +MEGABIT +MEGABITS +MEGABYTE +MEGABYTES +MEGAHERTZ +MEGALOMANIA +MEGATON +MEGAVOLT +MEGAWATT +MEGAWORD +MEGAWORDS +MEGOHM +MEIER +MEIJI +MEISTER +MEISTERSINGER +MEKONG +MEL +MELAMPUS +MELANCHOLY +MELANESIA +MELANESIAN +MELANIE +MELBOURNE +MELCHER +MELINDA +MELISANDE +MELISSA +MELLON +MELLOW +MELLOWED +MELLOWING +MELLOWNESS +MELLOWS +MELODIES +MELODIOUS +MELODIOUSLY +MELODIOUSNESS +MELODRAMA +MELODRAMAS +MELODRAMATIC +MELODY +MELON +MELONS +MELPOMENE +MELT +MELTED +MELTING +MELTINGLY +MELTS +MELVILLE +MELVIN +MEMBER +MEMBERS +MEMBERSHIP +MEMBERSHIPS +MEMBRANE +MEMENTO +MEMO +MEMOIR +MEMOIRS +MEMORABILIA +MEMORABLE +MEMORABLENESS +MEMORANDA +MEMORANDUM +MEMORIAL +MEMORIALLY +MEMORIALS +MEMORIES +MEMORIZATION +MEMORIZE +MEMORIZED +MEMORIZER +MEMORIZES +MEMORIZING +MEMORY +MEMORYLESS +MEMOS +MEMPHIS +MEN +MENACE +MENACED +MENACING +MENAGERIE +MENARCHE +MENCKEN +MEND +MENDACIOUS +MENDACITY +MENDED +MENDEL +MENDELIAN +MENDELIZE +MENDELIZES +MENDELSSOHN +MENDER +MENDING +MENDOZA +MENDS +MENELAUS +MENIAL +MENIALS +MENLO +MENNONITE +MENNONITES +MENOMINEE +MENORCA +MENS +MENSCH +MENSTRUATE +MENSURABLE +MENSURATION +MENTAL +MENTALITIES +MENTALITY +MENTALLY +MENTION +MENTIONABLE +MENTIONED +MENTIONER +MENTIONERS +MENTIONING +MENTIONS +MENTOR +MENTORS +MENU +MENUS +MENZIES +MEPHISTOPHELES +MERCANTILE +MERCATOR +MERCEDES +MERCENARIES +MERCENARINESS +MERCENARY +MERCHANDISE +MERCHANDISER +MERCHANDISING +MERCHANT +MERCHANTS +MERCIFUL +MERCIFULLY +MERCILESS +MERCILESSLY +MERCK +MERCURIAL +MERCURY +MERCY +MERE +MEREDITH +MERELY +MEREST +MERGE +MERGED +MERGER +MERGERS +MERGES +MERGING +MERIDIAN +MERINGUE +MERIT +MERITED +MERITING +MERITORIOUS +MERITORIOUSLY +MERITORIOUSNESS +MERITS +MERIWETHER +MERLE +MERMAID +MERRIAM +MERRICK +MERRIEST +MERRILL +MERRILY +MERRIMAC +MERRIMACK +MERRIMENT +MERRITT +MERRY +MERRYMAKE +MERVIN +MESCALINE +MESH +MESON +MESOPOTAMIA +MESOZOIC +MESQUITE +MESS +MESSAGE +MESSAGES +MESSED +MESSENGER +MESSENGERS +MESSES +MESSIAH +MESSIAHS +MESSIER +MESSIEST +MESSILY +MESSINESS +MESSING +MESSY +MET +META +METABOLIC +METABOLISM +METACIRCULAR +METACIRCULARITY +METAL +METALANGUAGE +METALLIC +METALLIZATION +METALLIZATIONS +METALLURGY +METALS +METAMATHEMATICAL +METAMORPHOSIS +METAPHOR +METAPHORICAL +METAPHORICALLY +METAPHORS +METAPHYSICAL +METAPHYSICALLY +METAPHYSICS +METAVARIABLE +METCALF +METE +METED +METEOR +METEORIC +METEORITE +METEORITIC +METEOROLOGY +METEORS +METER +METERING +METERS +METES +METHANE +METHOD +METHODICAL +METHODICALLY +METHODICALNESS +METHODISM +METHODIST +METHODISTS +METHODOLOGICAL +METHODOLOGICALLY +METHODOLOGIES +METHODOLOGISTS +METHODOLOGY +METHODS +METHUEN +METHUSELAH +METHUSELAHS +METICULOUSLY +METING +METRECAL +METRIC +METRICAL +METRICS +METRO +METRONOME +METROPOLIS +METROPOLITAN +METS +METTLE +METTLESOME +METZLER +MEW +MEWED +MEWS +MEXICAN +MEXICANIZE +MEXICANIZES +MEXICANS +MEXICO +MEYER +MEYERS +MIAMI +MIASMA +MICA +MICE +MICHAEL +MICHAELS +MICHEL +MICHELANGELO +MICHELE +MICHELIN +MICHELSON +MICHIGAN +MICK +MICKEY +MICKIE +MICKY +MICRO +MICROARCHITECTS +MICROARCHITECTURE +MICROARCHITECTURES +MICROBIAL +MICROBICIDAL +MICROBICIDE +MICROCODE +MICROCODED +MICROCODES +MICROCODING +MICROCOMPUTER +MICROCOMPUTERS +MICROCOSM +MICROCYCLE +MICROCYCLES +MICROECONOMICS +MICROELECTRONICS +MICROFILM +MICROFILMS +MICROGRAMMING +MICROINSTRUCTION +MICROINSTRUCTIONS +MICROJUMP +MICROJUMPS +MICROLEVEL +MICRON +MICRONESIA +MICRONESIAN +MICROOPERATIONS +MICROPHONE +MICROPHONES +MICROPHONING +MICROPORT +MICROPROCEDURE +MICROPROCEDURES +MICROPROCESSING +MICROPROCESSOR +MICROPROCESSORS +MICROPROGRAM +MICROPROGRAMMABLE +MICROPROGRAMMED +MICROPROGRAMMER +MICROPROGRAMMING +MICROPROGRAMS +MICROS +MICROSCOPE +MICROSCOPES +MICROSCOPIC +MICROSCOPY +MICROSECOND +MICROSECONDS +MICROSOFT +MICROSTORE +MICROSYSTEMS +MICROVAX +MICROVAXES +MICROWAVE +MICROWAVES +MICROWORD +MICROWORDS +MID +MIDAS +MIDDAY +MIDDLE +MIDDLEBURY +MIDDLEMAN +MIDDLEMEN +MIDDLES +MIDDLESEX +MIDDLETON +MIDDLETOWN +MIDDLING +MIDGET +MIDLANDIZE +MIDLANDIZES +MIDNIGHT +MIDNIGHTS +MIDPOINT +MIDPOINTS +MIDRANGE +MIDSCALE +MIDSECTION +MIDSHIPMAN +MIDSHIPMEN +MIDST +MIDSTREAM +MIDSTS +MIDSUMMER +MIDWAY +MIDWEEK +MIDWEST +MIDWESTERN +MIDWESTERNER +MIDWESTERNERS +MIDWIFE +MIDWINTER +MIDWIVES +MIEN +MIGHT +MIGHTIER +MIGHTIEST +MIGHTILY +MIGHTINESS +MIGHTY +MIGRANT +MIGRATE +MIGRATED +MIGRATES +MIGRATING +MIGRATION +MIGRATIONS +MIGRATORY +MIGUEL +MIKE +MIKHAIL +MIKOYAN +MILAN +MILD +MILDER +MILDEST +MILDEW +MILDLY +MILDNESS +MILDRED +MILE +MILEAGE +MILES +MILESTONE +MILESTONES +MILITANT +MILITANTLY +MILITARILY +MILITARISM +MILITARY +MILITIA +MILK +MILKED +MILKER +MILKERS +MILKINESS +MILKING +MILKMAID +MILKMAIDS +MILKS +MILKY +MILL +MILLARD +MILLED +MILLENNIUM +MILLER +MILLET +MILLIAMMETER +MILLIAMPERE +MILLIE +MILLIJOULE +MILLIKAN +MILLIMETER +MILLIMETERS +MILLINERY +MILLING +MILLINGTON +MILLION +MILLIONAIRE +MILLIONAIRES +MILLIONS +MILLIONTH +MILLIPEDE +MILLIPEDES +MILLISECOND +MILLISECONDS +MILLIVOLT +MILLIVOLTMETER +MILLIWATT +MILLS +MILLSTONE +MILLSTONES +MILNE +MILQUETOAST +MILQUETOASTS +MILTON +MILTONIAN +MILTONIC +MILTONISM +MILTONIST +MILTONIZE +MILTONIZED +MILTONIZES +MILTONIZING +MILWAUKEE +MIMEOGRAPH +MIMI +MIMIC +MIMICKED +MIMICKING +MIMICS +MINARET +MINCE +MINCED +MINCEMEAT +MINCES +MINCING +MIND +MINDANAO +MINDED +MINDFUL +MINDFULLY +MINDFULNESS +MINDING +MINDLESS +MINDLESSLY +MINDS +MINE +MINED +MINEFIELD +MINER +MINERAL +MINERALS +MINERS +MINERVA +MINES +MINESWEEPER +MINGLE +MINGLED +MINGLES +MINGLING +MINI +MINIATURE +MINIATURES +MINIATURIZATION +MINIATURIZE +MINIATURIZED +MINIATURIZES +MINIATURIZING +MINICOMPUTER +MINICOMPUTERS +MINIMA +MINIMAL +MINIMALLY +MINIMAX +MINIMIZATION +MINIMIZATIONS +MINIMIZE +MINIMIZED +MINIMIZER +MINIMIZERS +MINIMIZES +MINIMIZING +MINIMUM +MINING +MINION +MINIS +MINISTER +MINISTERED +MINISTERING +MINISTERS +MINISTRIES +MINISTRY +MINK +MINKS +MINNEAPOLIS +MINNESOTA +MINNIE +MINNOW +MINNOWS +MINOAN +MINOR +MINORING +MINORITIES +MINORITY +MINORS +MINOS +MINOTAUR +MINSK +MINSKY +MINSTREL +MINSTRELS +MINT +MINTED +MINTER +MINTING +MINTS +MINUEND +MINUET +MINUS +MINUSCULE +MINUTE +MINUTELY +MINUTEMAN +MINUTEMEN +MINUTENESS +MINUTER +MINUTES +MIOCENE +MIPS +MIRA +MIRACLE +MIRACLES +MIRACULOUS +MIRACULOUSLY +MIRAGE +MIRANDA +MIRE +MIRED +MIRES +MIRFAK +MIRIAM +MIRROR +MIRRORED +MIRRORING +MIRRORS +MIRTH +MISANTHROPE +MISBEHAVING +MISCALCULATION +MISCALCULATIONS +MISCARRIAGE +MISCARRY +MISCEGENATION +MISCELLANEOUS +MISCELLANEOUSLY +MISCELLANEOUSNESS +MISCHIEF +MISCHIEVOUS +MISCHIEVOUSLY +MISCHIEVOUSNESS +MISCONCEPTION +MISCONCEPTIONS +MISCONDUCT +MISCONSTRUE +MISCONSTRUED +MISCONSTRUES +MISDEMEANORS +MISER +MISERABLE +MISERABLENESS +MISERABLY +MISERIES +MISERLY +MISERS +MISERY +MISFIT +MISFITS +MISFORTUNE +MISFORTUNES +MISGIVING +MISGIVINGS +MISGUIDED +MISHAP +MISHAPS +MISINFORMED +MISJUDGED +MISJUDGMENT +MISLEAD +MISLEADING +MISLEADS +MISLED +MISMANAGEMENT +MISMATCH +MISMATCHED +MISMATCHES +MISMATCHING +MISNOMER +MISPLACE +MISPLACED +MISPLACES +MISPLACING +MISPRONUNCIATION +MISREPRESENTATION +MISREPRESENTATIONS +MISS +MISSED +MISSES +MISSHAPEN +MISSILE +MISSILES +MISSING +MISSION +MISSIONARIES +MISSIONARY +MISSIONER +MISSIONS +MISSISSIPPI +MISSISSIPPIAN +MISSISSIPPIANS +MISSIVE +MISSOULA +MISSOURI +MISSPELL +MISSPELLED +MISSPELLING +MISSPELLINGS +MISSPELLS +MISSY +MIST +MISTAKABLE +MISTAKE +MISTAKEN +MISTAKENLY +MISTAKES +MISTAKING +MISTED +MISTER +MISTERS +MISTINESS +MISTING +MISTLETOE +MISTRESS +MISTRUST +MISTRUSTED +MISTS +MISTY +MISTYPE +MISTYPED +MISTYPES +MISTYPING +MISUNDERSTAND +MISUNDERSTANDER +MISUNDERSTANDERS +MISUNDERSTANDING +MISUNDERSTANDINGS +MISUNDERSTOOD +MISUSE +MISUSED +MISUSES +MISUSING +MITCH +MITCHELL +MITER +MITIGATE +MITIGATED +MITIGATES +MITIGATING +MITIGATION +MITIGATIVE +MITRE +MITRES +MITTEN +MITTENS +MIX +MIXED +MIXER +MIXERS +MIXES +MIXING +MIXTURE +MIXTURES +MIXUP +MIZAR +MNEMONIC +MNEMONICALLY +MNEMONICS +MOAN +MOANED +MOANS +MOAT +MOATS +MOB +MOBIL +MOBILE +MOBILITY +MOBS +MOBSTER +MOCCASIN +MOCCASINS +MOCK +MOCKED +MOCKER +MOCKERY +MOCKING +MOCKINGBIRD +MOCKS +MOCKUP +MODAL +MODALITIES +MODALITY +MODALLY +MODE +MODEL +MODELED +MODELING +MODELINGS +MODELS +MODEM +MODEMS +MODERATE +MODERATED +MODERATELY +MODERATENESS +MODERATES +MODERATING +MODERATION +MODERN +MODERNITY +MODERNIZE +MODERNIZED +MODERNIZER +MODERNIZING +MODERNLY +MODERNNESS +MODERNS +MODES +MODEST +MODESTLY +MODESTO +MODESTY +MODICUM +MODIFIABILITY +MODIFIABLE +MODIFICATION +MODIFICATIONS +MODIFIED +MODIFIER +MODIFIERS +MODIFIES +MODIFY +MODIFYING +MODULA +MODULAR +MODULARITY +MODULARIZATION +MODULARIZE +MODULARIZED +MODULARIZES +MODULARIZING +MODULARLY +MODULATE +MODULATED +MODULATES +MODULATING +MODULATION +MODULATIONS +MODULATOR +MODULATORS +MODULE +MODULES +MODULI +MODULO +MODULUS +MODUS +MOE +MOEN +MOGADISCIO +MOGADISHU +MOGHUL +MOHAMMED +MOHAMMEDAN +MOHAMMEDANISM +MOHAMMEDANIZATION +MOHAMMEDANIZATIONS +MOHAMMEDANIZE +MOHAMMEDANIZES +MOHAWK +MOHR +MOINES +MOISEYEV +MOIST +MOISTEN +MOISTLY +MOISTNESS +MOISTURE +MOLAR +MOLASSES +MOLD +MOLDAVIA +MOLDED +MOLDER +MOLDING +MOLDS +MOLE +MOLECULAR +MOLECULE +MOLECULES +MOLEHILL +MOLES +MOLEST +MOLESTED +MOLESTING +MOLESTS +MOLIERE +MOLINE +MOLL +MOLLIE +MOLLIFY +MOLLUSK +MOLLY +MOLLYCODDLE +MOLOCH +MOLOCHIZE +MOLOCHIZES +MOLOTOV +MOLTEN +MOLUCCAS +MOMENT +MOMENTARILY +MOMENTARINESS +MOMENTARY +MOMENTOUS +MOMENTOUSLY +MOMENTOUSNESS +MOMENTS +MOMENTUM +MOMMY +MONA +MONACO +MONADIC +MONARCH +MONARCHIES +MONARCHS +MONARCHY +MONASH +MONASTERIES +MONASTERY +MONASTIC +MONDAY +MONDAYS +MONET +MONETARISM +MONETARY +MONEY +MONEYED +MONEYS +MONFORT +MONGOLIA +MONGOLIAN +MONGOLIANISM +MONGOOSE +MONICA +MONITOR +MONITORED +MONITORING +MONITORS +MONK +MONKEY +MONKEYED +MONKEYING +MONKEYS +MONKISH +MONKS +MONMOUTH +MONOALPHABETIC +MONOCEROS +MONOCHROMATIC +MONOCHROME +MONOCOTYLEDON +MONOCULAR +MONOGAMOUS +MONOGAMY +MONOGRAM +MONOGRAMS +MONOGRAPH +MONOGRAPHES +MONOGRAPHS +MONOLITH +MONOLITHIC +MONOLOGUE +MONONGAHELA +MONOPOLIES +MONOPOLIZE +MONOPOLIZED +MONOPOLIZING +MONOPOLY +MONOPROGRAMMED +MONOPROGRAMMING +MONOSTABLE +MONOTHEISM +MONOTONE +MONOTONIC +MONOTONICALLY +MONOTONICITY +MONOTONOUS +MONOTONOUSLY +MONOTONOUSNESS +MONOTONY +MONROE +MONROVIA +MONSANTO +MONSOON +MONSTER +MONSTERS +MONSTROSITY +MONSTROUS +MONSTROUSLY +MONT +MONTAGUE +MONTAIGNE +MONTANA +MONTANAN +MONTCLAIR +MONTENEGRIN +MONTENEGRO +MONTEREY +MONTEVERDI +MONTEVIDEO +MONTGOMERY +MONTH +MONTHLY +MONTHS +MONTICELLO +MONTMARTRE +MONTPELIER +MONTRACHET +MONTREAL +MONTY +MONUMENT +MONUMENTAL +MONUMENTALLY +MONUMENTS +MOO +MOOD +MOODINESS +MOODS +MOODY +MOON +MOONED +MOONEY +MOONING +MOONLIGHT +MOONLIGHTER +MOONLIGHTING +MOONLIKE +MOONLIT +MOONS +MOONSHINE +MOOR +MOORE +MOORED +MOORING +MOORINGS +MOORISH +MOORS +MOOSE +MOOT +MOP +MOPED +MOPS +MORAINE +MORAL +MORALE +MORALITIES +MORALITY +MORALLY +MORALS +MORAN +MORASS +MORATORIUM +MORAVIA +MORAVIAN +MORAVIANIZED +MORAVIANIZEDS +MORBID +MORBIDLY +MORBIDNESS +MORE +MOREHOUSE +MORELAND +MOREOVER +MORES +MORESBY +MORGAN +MORIARTY +MORIBUND +MORLEY +MORMON +MORN +MORNING +MORNINGS +MOROCCAN +MOROCCO +MORON +MOROSE +MORPHINE +MORPHISM +MORPHISMS +MORPHOLOGICAL +MORPHOLOGY +MORRILL +MORRIS +MORRISON +MORRISSEY +MORRISTOWN +MORROW +MORSE +MORSEL +MORSELS +MORTAL +MORTALITY +MORTALLY +MORTALS +MORTAR +MORTARED +MORTARING +MORTARS +MORTEM +MORTGAGE +MORTGAGES +MORTICIAN +MORTIFICATION +MORTIFIED +MORTIFIES +MORTIFY +MORTIFYING +MORTIMER +MORTON +MOSAIC +MOSAICS +MOSCONE +MOSCOW +MOSER +MOSES +MOSLEM +MOSLEMIZE +MOSLEMIZES +MOSLEMS +MOSQUE +MOSQUITO +MOSQUITOES +MOSS +MOSSBERG +MOSSES +MOSSY +MOST +MOSTLY +MOTEL +MOTELS +MOTH +MOTHBALL +MOTHBALLS +MOTHER +MOTHERED +MOTHERER +MOTHERERS +MOTHERHOOD +MOTHERING +MOTHERLAND +MOTHERLY +MOTHERS +MOTIF +MOTIFS +MOTION +MOTIONED +MOTIONING +MOTIONLESS +MOTIONLESSLY +MOTIONLESSNESS +MOTIONS +MOTIVATE +MOTIVATED +MOTIVATES +MOTIVATING +MOTIVATION +MOTIVATIONS +MOTIVE +MOTIVES +MOTLEY +MOTOR +MOTORCAR +MOTORCARS +MOTORCYCLE +MOTORCYCLES +MOTORING +MOTORIST +MOTORISTS +MOTORIZE +MOTORIZED +MOTORIZES +MOTORIZING +MOTOROLA +MOTORS +MOTTO +MOTTOES +MOULD +MOULDING +MOULTON +MOUND +MOUNDED +MOUNDS +MOUNT +MOUNTABLE +MOUNTAIN +MOUNTAINEER +MOUNTAINEERING +MOUNTAINEERS +MOUNTAINOUS +MOUNTAINOUSLY +MOUNTAINS +MOUNTED +MOUNTER +MOUNTING +MOUNTINGS +MOUNTS +MOURN +MOURNED +MOURNER +MOURNERS +MOURNFUL +MOURNFULLY +MOURNFULNESS +MOURNING +MOURNS +MOUSE +MOUSER +MOUSES +MOUSETRAP +MOUSY +MOUTH +MOUTHE +MOUTHED +MOUTHES +MOUTHFUL +MOUTHING +MOUTHPIECE +MOUTHS +MOUTON +MOVABLE +MOVE +MOVED +MOVEMENT +MOVEMENTS +MOVER +MOVERS +MOVES +MOVIE +MOVIES +MOVING +MOVINGS +MOW +MOWED +MOWER +MOWS +MOYER +MOZART +MUCH +MUCK +MUCKER +MUCKING +MUCUS +MUD +MUDD +MUDDIED +MUDDINESS +MUDDLE +MUDDLED +MUDDLEHEAD +MUDDLER +MUDDLERS +MUDDLES +MUDDLING +MUDDY +MUELLER +MUENSTER +MUFF +MUFFIN +MUFFINS +MUFFLE +MUFFLED +MUFFLER +MUFFLES +MUFFLING +MUFFS +MUG +MUGGING +MUGS +MUHAMMAD +MUIR +MUKDEN +MULATTO +MULBERRIES +MULBERRY +MULE +MULES +MULL +MULLAH +MULLEN +MULTI +MULTIBIT +MULTIBUS +MULTIBYTE +MULTICAST +MULTICASTING +MULTICASTS +MULTICELLULAR +MULTICOMPUTER +MULTICS +MULTICS +MULTIDIMENSIONAL +MULTILATERAL +MULTILAYER +MULTILAYERED +MULTILEVEL +MULTIMEDIA +MULTINATIONAL +MULTIPLE +MULTIPLES +MULTIPLEX +MULTIPLEXED +MULTIPLEXER +MULTIPLEXERS +MULTIPLEXES +MULTIPLEXING +MULTIPLEXOR +MULTIPLEXORS +MULTIPLICAND +MULTIPLICANDS +MULTIPLICATION +MULTIPLICATIONS +MULTIPLICATIVE +MULTIPLICATIVES +MULTIPLICITY +MULTIPLIED +MULTIPLIER +MULTIPLIERS +MULTIPLIES +MULTIPLY +MULTIPLYING +MULTIPROCESS +MULTIPROCESSING +MULTIPROCESSOR +MULTIPROCESSORS +MULTIPROGRAM +MULTIPROGRAMMED +MULTIPROGRAMMING +MULTISTAGE +MULTITUDE +MULTITUDES +MULTIUSER +MULTIVARIATE +MULTIWORD +MUMBLE +MUMBLED +MUMBLER +MUMBLERS +MUMBLES +MUMBLING +MUMBLINGS +MUMFORD +MUMMIES +MUMMY +MUNCH +MUNCHED +MUNCHING +MUNCIE +MUNDANE +MUNDANELY +MUNDT +MUNG +MUNICH +MUNICIPAL +MUNICIPALITIES +MUNICIPALITY +MUNICIPALLY +MUNITION +MUNITIONS +MUNROE +MUNSEY +MUNSON +MUONG +MURAL +MURDER +MURDERED +MURDERER +MURDERERS +MURDERING +MURDEROUS +MURDEROUSLY +MURDERS +MURIEL +MURKY +MURMUR +MURMURED +MURMURER +MURMURING +MURMURS +MURPHY +MURRAY +MURROW +MUSCAT +MUSCLE +MUSCLED +MUSCLES +MUSCLING +MUSCOVITE +MUSCOVY +MUSCULAR +MUSCULATURE +MUSE +MUSED +MUSES +MUSEUM +MUSEUMS +MUSH +MUSHROOM +MUSHROOMED +MUSHROOMING +MUSHROOMS +MUSHY +MUSIC +MUSICAL +MUSICALLY +MUSICALS +MUSICIAN +MUSICIANLY +MUSICIANS +MUSICOLOGY +MUSING +MUSINGS +MUSK +MUSKEGON +MUSKET +MUSKETS +MUSKOX +MUSKOXEN +MUSKRAT +MUSKRATS +MUSKS +MUSLIM +MUSLIMS +MUSLIN +MUSSEL +MUSSELS +MUSSOLINI +MUSSOLINIS +MUSSORGSKY +MUST +MUSTACHE +MUSTACHED +MUSTACHES +MUSTARD +MUSTER +MUSTINESS +MUSTS +MUSTY +MUTABILITY +MUTABLE +MUTABLENESS +MUTANDIS +MUTANT +MUTATE +MUTATED +MUTATES +MUTATING +MUTATION +MUTATIONS +MUTATIS +MUTATIVE +MUTE +MUTED +MUTELY +MUTENESS +MUTILATE +MUTILATED +MUTILATES +MUTILATING +MUTILATION +MUTINIES +MUTINY +MUTT +MUTTER +MUTTERED +MUTTERER +MUTTERERS +MUTTERING +MUTTERS +MUTTON +MUTUAL +MUTUALLY +MUZAK +MUZO +MUZZLE +MUZZLES +MYCENAE +MYCENAEAN +MYERS +MYNHEER +MYRA +MYRIAD +MYRON +MYRTLE +MYSELF +MYSORE +MYSTERIES +MYSTERIOUS +MYSTERIOUSLY +MYSTERIOUSNESS +MYSTERY +MYSTIC +MYSTICAL +MYSTICS +MYSTIFY +MYTH +MYTHICAL +MYTHOLOGIES +MYTHOLOGY +NAB +NABISCO +NABLA +NABLAS +NADIA +NADINE +NADIR +NAG +NAGASAKI +NAGGED +NAGGING +NAGOYA +NAGS +NAGY +NAIL +NAILED +NAILING +NAILS +NAIR +NAIROBI +NAIVE +NAIVELY +NAIVENESS +NAIVETE +NAKAMURA +NAKAYAMA +NAKED +NAKEDLY +NAKEDNESS +NAKOMA +NAME +NAMEABLE +NAMED +NAMELESS +NAMELESSLY +NAMELY +NAMER +NAMERS +NAMES +NAMESAKE +NAMESAKES +NAMING +NAN +NANCY +NANETTE +NANKING +NANOINSTRUCTION +NANOINSTRUCTIONS +NANOOK +NANOPROGRAM +NANOPROGRAMMING +NANOSECOND +NANOSECONDS +NANOSTORE +NANOSTORES +NANTUCKET +NAOMI +NAP +NAPKIN +NAPKINS +NAPLES +NAPOLEON +NAPOLEONIC +NAPOLEONIZE +NAPOLEONIZES +NAPS +NARBONNE +NARCISSUS +NARCOTIC +NARCOTICS +NARRAGANSETT +NARRATE +NARRATION +NARRATIVE +NARRATIVES +NARROW +NARROWED +NARROWER +NARROWEST +NARROWING +NARROWLY +NARROWNESS +NARROWS +NARY +NASA +NASAL +NASALLY +NASAS +NASH +NASHUA +NASHVILLE +NASSAU +NASTIER +NASTIEST +NASTILY +NASTINESS +NASTY +NAT +NATAL +NATALIE +NATCHEZ +NATE +NATHAN +NATHANIEL +NATION +NATIONAL +NATIONALIST +NATIONALISTS +NATIONALITIES +NATIONALITY +NATIONALIZATION +NATIONALIZE +NATIONALIZED +NATIONALIZES +NATIONALIZING +NATIONALLY +NATIONALS +NATIONHOOD +NATIONS +NATIONWIDE +NATIVE +NATIVELY +NATIVES +NATIVITY +NATO +NATOS +NATURAL +NATURALISM +NATURALIST +NATURALIZATION +NATURALLY +NATURALNESS +NATURALS +NATURE +NATURED +NATURES +NAUGHT +NAUGHTIER +NAUGHTINESS +NAUGHTY +NAUR +NAUSEA +NAUSEATE +NAUSEUM +NAVAHO +NAVAJO +NAVAL +NAVALLY +NAVEL +NAVIES +NAVIGABLE +NAVIGATE +NAVIGATED +NAVIGATES +NAVIGATING +NAVIGATION +NAVIGATOR +NAVIGATORS +NAVONA +NAVY +NAY +NAZARENE +NAZARETH +NAZI +NAZIS +NAZISM +NDJAMENA +NEAL +NEANDERTHAL +NEAPOLITAN +NEAR +NEARBY +NEARED +NEARER +NEAREST +NEARING +NEARLY +NEARNESS +NEARS +NEARSIGHTED +NEAT +NEATER +NEATEST +NEATLY +NEATNESS +NEBRASKA +NEBRASKAN +NEBUCHADNEZZAR +NEBULA +NEBULAR +NEBULOUS +NECESSARIES +NECESSARILY +NECESSARY +NECESSITATE +NECESSITATED +NECESSITATES +NECESSITATING +NECESSITATION +NECESSITIES +NECESSITY +NECK +NECKING +NECKLACE +NECKLACES +NECKLINE +NECKS +NECKTIE +NECKTIES +NECROSIS +NECTAR +NED +NEED +NEEDED +NEEDFUL +NEEDHAM +NEEDING +NEEDLE +NEEDLED +NEEDLER +NEEDLERS +NEEDLES +NEEDLESS +NEEDLESSLY +NEEDLESSNESS +NEEDLEWORK +NEEDLING +NEEDS +NEEDY +NEFF +NEGATE +NEGATED +NEGATES +NEGATING +NEGATION +NEGATIONS +NEGATIVE +NEGATIVELY +NEGATIVES +NEGATOR +NEGATORS +NEGLECT +NEGLECTED +NEGLECTING +NEGLECTS +NEGLIGEE +NEGLIGENCE +NEGLIGENT +NEGLIGIBLE +NEGOTIABLE +NEGOTIATE +NEGOTIATED +NEGOTIATES +NEGOTIATING +NEGOTIATION +NEGOTIATIONS +NEGRO +NEGROES +NEGROID +NEGROIZATION +NEGROIZATIONS +NEGROIZE +NEGROIZES +NEHRU +NEIGH +NEIGHBOR +NEIGHBORHOOD +NEIGHBORHOODS +NEIGHBORING +NEIGHBORLY +NEIGHBORS +NEIL +NEITHER +NELL +NELLIE +NELSEN +NELSON +NEMESIS +NEOCLASSIC +NEON +NEONATAL +NEOPHYTE +NEOPHYTES +NEPAL +NEPALI +NEPHEW +NEPHEWS +NEPTUNE +NERO +NERVE +NERVES +NERVOUS +NERVOUSLY +NERVOUSNESS +NESS +NEST +NESTED +NESTER +NESTING +NESTLE +NESTLED +NESTLES +NESTLING +NESTOR +NESTS +NET +NETHER +NETHERLANDS +NETS +NETTED +NETTING +NETTLE +NETTLED +NETWORK +NETWORKED +NETWORKING +NETWORKS +NEUMANN +NEURAL +NEURITIS +NEUROLOGICAL +NEUROLOGISTS +NEURON +NEURONS +NEUROSES +NEUROSIS +NEUROTIC +NEUTER +NEUTRAL +NEUTRALITIES +NEUTRALITY +NEUTRALIZE +NEUTRALIZED +NEUTRALIZING +NEUTRALLY +NEUTRINO +NEUTRINOS +NEUTRON +NEVA +NEVADA +NEVER +NEVERTHELESS +NEVINS +NEW +NEWARK +NEWBOLD +NEWBORN +NEWBURY +NEWBURYPORT +NEWCASTLE +NEWCOMER +NEWCOMERS +NEWELL +NEWER +NEWEST +NEWFOUNDLAND +NEWLY +NEWLYWED +NEWMAN +NEWMANIZE +NEWMANIZES +NEWNESS +NEWPORT +NEWS +NEWSCAST +NEWSGROUP +NEWSLETTER +NEWSLETTERS +NEWSMAN +NEWSMEN +NEWSPAPER +NEWSPAPERS +NEWSSTAND +NEWSWEEK +NEWSWEEKLY +NEWT +NEWTON +NEWTONIAN +NEXT +NGUYEN +NIAGARA +NIAMEY +NIBBLE +NIBBLED +NIBBLER +NIBBLERS +NIBBLES +NIBBLING +NIBELUNG +NICARAGUA +NICCOLO +NICE +NICELY +NICENESS +NICER +NICEST +NICHE +NICHOLAS +NICHOLLS +NICHOLS +NICHOLSON +NICK +NICKED +NICKEL +NICKELS +NICKER +NICKING +NICKLAUS +NICKNAME +NICKNAMED +NICKNAMES +NICKS +NICODEMUS +NICOSIA +NICOTINE +NIECE +NIECES +NIELSEN +NIELSON +NIETZSCHE +NIFTY +NIGER +NIGERIA +NIGERIAN +NIGH +NIGHT +NIGHTCAP +NIGHTCLUB +NIGHTFALL +NIGHTGOWN +NIGHTINGALE +NIGHTINGALES +NIGHTLY +NIGHTMARE +NIGHTMARES +NIGHTMARISH +NIGHTS +NIGHTTIME +NIHILISM +NIJINSKY +NIKKO +NIKOLAI +NIL +NILE +NILSEN +NILSSON +NIMBLE +NIMBLENESS +NIMBLER +NIMBLY +NIMBUS +NINA +NINE +NINEFOLD +NINES +NINETEEN +NINETEENS +NINETEENTH +NINETIES +NINETIETH +NINETY +NINEVEH +NINTH +NIOBE +NIP +NIPPLE +NIPPON +NIPPONIZE +NIPPONIZES +NIPS +NITRIC +NITROGEN +NITROUS +NITTY +NIXON +NOAH +NOBEL +NOBILITY +NOBLE +NOBLEMAN +NOBLENESS +NOBLER +NOBLES +NOBLEST +NOBLY +NOBODY +NOCTURNAL +NOCTURNALLY +NOD +NODAL +NODDED +NODDING +NODE +NODES +NODS +NODULAR +NODULE +NOEL +NOETHERIAN +NOISE +NOISELESS +NOISELESSLY +NOISES +NOISIER +NOISILY +NOISINESS +NOISY +NOLAN +NOLL +NOMENCLATURE +NOMINAL +NOMINALLY +NOMINATE +NOMINATED +NOMINATING +NOMINATION +NOMINATIVE +NOMINEE +NON +NONADAPTIVE +NONBIODEGRADABLE +NONBLOCKING +NONCE +NONCHALANT +NONCOMMERCIAL +NONCOMMUNICATION +NONCONSECUTIVELY +NONCONSERVATIVE +NONCRITICAL +NONCYCLIC +NONDECREASING +NONDESCRIPT +NONDESCRIPTLY +NONDESTRUCTIVELY +NONDETERMINACY +NONDETERMINATE +NONDETERMINATELY +NONDETERMINISM +NONDETERMINISTIC +NONDETERMINISTICALLY +NONE +NONEMPTY +NONETHELESS +NONEXISTENCE +NONEXISTENT +NONEXTENSIBLE +NONFUNCTIONAL +NONGOVERNMENTAL +NONIDEMPOTENT +NONINTERACTING +NONINTERFERENCE +NONINTERLEAVED +NONINTRUSIVE +NONINTUITIVE +NONINVERTING +NONLINEAR +NONLINEARITIES +NONLINEARITY +NONLINEARLY +NONLOCAL +NONMASKABLE +NONMATHEMATICAL +NONMILITARY +NONNEGATIVE +NONNEGLIGIBLE +NONNUMERICAL +NONOGENARIAN +NONORTHOGONAL +NONORTHOGONALITY +NONPERISHABLE +NONPERSISTENT +NONPORTABLE +NONPROCEDURAL +NONPROCEDURALLY +NONPROFIT +NONPROGRAMMABLE +NONPROGRAMMER +NONSEGMENTED +NONSENSE +NONSENSICAL +NONSEQUENTIAL +NONSPECIALIST +NONSPECIALISTS +NONSTANDARD +NONSYNCHRONOUS +NONTECHNICAL +NONTERMINAL +NONTERMINALS +NONTERMINATING +NONTERMINATION +NONTHERMAL +NONTRANSPARENT +NONTRIVIAL +NONUNIFORM +NONUNIFORMITY +NONZERO +NOODLE +NOOK +NOOKS +NOON +NOONDAY +NOONS +NOONTIDE +NOONTIME +NOOSE +NOR +NORA +NORDHOFF +NORDIC +NORDSTROM +NOREEN +NORFOLK +NORM +NORMA +NORMAL +NORMALCY +NORMALITY +NORMALIZATION +NORMALIZE +NORMALIZED +NORMALIZES +NORMALIZING +NORMALLY +NORMALS +NORMAN +NORMANDY +NORMANIZATION +NORMANIZATIONS +NORMANIZE +NORMANIZER +NORMANIZERS +NORMANIZES +NORMATIVE +NORMS +NORRIS +NORRISTOWN +NORSE +NORTH +NORTHAMPTON +NORTHBOUND +NORTHEAST +NORTHEASTER +NORTHEASTERN +NORTHERLY +NORTHERN +NORTHERNER +NORTHERNERS +NORTHERNLY +NORTHFIELD +NORTHROP +NORTHRUP +NORTHUMBERLAND +NORTHWARD +NORTHWARDS +NORTHWEST +NORTHWESTERN +NORTON +NORWALK +NORWAY +NORWEGIAN +NORWICH +NOSE +NOSED +NOSES +NOSING +NOSTALGIA +NOSTALGIC +NOSTRADAMUS +NOSTRAND +NOSTRIL +NOSTRILS +NOT +NOTABLE +NOTABLES +NOTABLY +NOTARIZE +NOTARIZED +NOTARIZES +NOTARIZING +NOTARY +NOTATION +NOTATIONAL +NOTATIONS +NOTCH +NOTCHED +NOTCHES +NOTCHING +NOTE +NOTEBOOK +NOTEBOOKS +NOTED +NOTES +NOTEWORTHY +NOTHING +NOTHINGNESS +NOTHINGS +NOTICE +NOTICEABLE +NOTICEABLY +NOTICED +NOTICES +NOTICING +NOTIFICATION +NOTIFICATIONS +NOTIFIED +NOTIFIER +NOTIFIERS +NOTIFIES +NOTIFY +NOTIFYING +NOTING +NOTION +NOTIONS +NOTORIETY +NOTORIOUS +NOTORIOUSLY +NOTRE +NOTTINGHAM +NOTWITHSTANDING +NOUAKCHOTT +NOUN +NOUNS +NOURISH +NOURISHED +NOURISHES +NOURISHING +NOURISHMENT +NOVAK +NOVEL +NOVELIST +NOVELISTS +NOVELS +NOVELTIES +NOVELTY +NOVEMBER +NOVEMBERS +NOVICE +NOVICES +NOVOSIBIRSK +NOW +NOWADAYS +NOWHERE +NOXIOUS +NOYES +NOZZLE +NUANCE +NUANCES +NUBIA +NUBIAN +NUBILE +NUCLEAR +NUCLEI +NUCLEIC +NUCLEOTIDE +NUCLEOTIDES +NUCLEUS +NUCLIDE +NUDE +NUDGE +NUDGED +NUDITY +NUGENT +NUGGET +NUISANCE +NUISANCES +NULL +NULLARY +NULLED +NULLIFIED +NULLIFIERS +NULLIFIES +NULLIFY +NULLIFYING +NULLS +NUMB +NUMBED +NUMBER +NUMBERED +NUMBERER +NUMBERING +NUMBERLESS +NUMBERS +NUMBING +NUMBLY +NUMBNESS +NUMBS +NUMERABLE +NUMERAL +NUMERALS +NUMERATOR +NUMERATORS +NUMERIC +NUMERICAL +NUMERICALLY +NUMERICS +NUMEROUS +NUMISMATIC +NUMISMATIST +NUN +NUNS +NUPTIAL +NURSE +NURSED +NURSERIES +NURSERY +NURSES +NURSING +NURTURE +NURTURED +NURTURES +NURTURING +NUT +NUTATE +NUTRIA +NUTRIENT +NUTRITION +NUTRITIOUS +NUTS +NUTSHELL +NUTSHELLS +NUZZLE +NYLON +NYMPH +NYMPHOMANIA +NYMPHOMANIAC +NYMPHS +NYQUIST +OAF +OAK +OAKEN +OAKLAND +OAKLEY +OAKMONT +OAKS +OAR +OARS +OASES +OASIS +OAT +OATEN +OATH +OATHS +OATMEAL +OATS +OBEDIENCE +OBEDIENCES +OBEDIENT +OBEDIENTLY +OBELISK +OBERLIN +OBERON +OBESE +OBEY +OBEYED +OBEYING +OBEYS +OBFUSCATE +OBFUSCATORY +OBITUARY +OBJECT +OBJECTED +OBJECTING +OBJECTION +OBJECTIONABLE +OBJECTIONS +OBJECTIVE +OBJECTIVELY +OBJECTIVES +OBJECTOR +OBJECTORS +OBJECTS +OBLIGATED +OBLIGATION +OBLIGATIONS +OBLIGATORY +OBLIGE +OBLIGED +OBLIGES +OBLIGING +OBLIGINGLY +OBLIQUE +OBLIQUELY +OBLIQUENESS +OBLITERATE +OBLITERATED +OBLITERATES +OBLITERATING +OBLITERATION +OBLIVION +OBLIVIOUS +OBLIVIOUSLY +OBLIVIOUSNESS +OBLONG +OBNOXIOUS +OBOE +OBSCENE +OBSCURE +OBSCURED +OBSCURELY +OBSCURER +OBSCURES +OBSCURING +OBSCURITIES +OBSCURITY +OBSEQUIOUS +OBSERVABLE +OBSERVANCE +OBSERVANCES +OBSERVANT +OBSERVATION +OBSERVATIONS +OBSERVATORY +OBSERVE +OBSERVED +OBSERVER +OBSERVERS +OBSERVES +OBSERVING +OBSESSION +OBSESSIONS +OBSESSIVE +OBSOLESCENCE +OBSOLESCENT +OBSOLETE +OBSOLETED +OBSOLETES +OBSOLETING +OBSTACLE +OBSTACLES +OBSTINACY +OBSTINATE +OBSTINATELY +OBSTRUCT +OBSTRUCTED +OBSTRUCTING +OBSTRUCTION +OBSTRUCTIONS +OBSTRUCTIVE +OBTAIN +OBTAINABLE +OBTAINABLY +OBTAINED +OBTAINING +OBTAINS +OBVIATE +OBVIATED +OBVIATES +OBVIATING +OBVIATION +OBVIATIONS +OBVIOUS +OBVIOUSLY +OBVIOUSNESS +OCCAM +OCCASION +OCCASIONAL +OCCASIONALLY +OCCASIONED +OCCASIONING +OCCASIONINGS +OCCASIONS +OCCIDENT +OCCIDENTAL +OCCIDENTALIZATION +OCCIDENTALIZATIONS +OCCIDENTALIZE +OCCIDENTALIZED +OCCIDENTALIZES +OCCIDENTALIZING +OCCIDENTALS +OCCIPITAL +OCCLUDE +OCCLUDED +OCCLUDES +OCCLUSION +OCCLUSIONS +OCCULT +OCCUPANCIES +OCCUPANCY +OCCUPANT +OCCUPANTS +OCCUPATION +OCCUPATIONAL +OCCUPATIONALLY +OCCUPATIONS +OCCUPIED +OCCUPIER +OCCUPIES +OCCUPY +OCCUPYING +OCCUR +OCCURRED +OCCURRENCE +OCCURRENCES +OCCURRING +OCCURS +OCEAN +OCEANIA +OCEANIC +OCEANOGRAPHY +OCEANS +OCONOMOWOC +OCTAGON +OCTAGONAL +OCTAHEDRA +OCTAHEDRAL +OCTAHEDRON +OCTAL +OCTANE +OCTAVE +OCTAVES +OCTAVIA +OCTET +OCTETS +OCTOBER +OCTOBERS +OCTOGENARIAN +OCTOPUS +ODD +ODDER +ODDEST +ODDITIES +ODDITY +ODDLY +ODDNESS +ODDS +ODE +ODERBERG +ODERBERGS +ODES +ODESSA +ODIN +ODIOUS +ODIOUSLY +ODIOUSNESS +ODIUM +ODOR +ODOROUS +ODOROUSLY +ODOROUSNESS +ODORS +ODYSSEUS +ODYSSEY +OEDIPAL +OEDIPALLY +OEDIPUS +OFF +OFFENBACH +OFFEND +OFFENDED +OFFENDER +OFFENDERS +OFFENDING +OFFENDS +OFFENSE +OFFENSES +OFFENSIVE +OFFENSIVELY +OFFENSIVENESS +OFFER +OFFERED +OFFERER +OFFERERS +OFFERING +OFFERINGS +OFFERS +OFFHAND +OFFICE +OFFICEMATE +OFFICER +OFFICERS +OFFICES +OFFICIAL +OFFICIALDOM +OFFICIALLY +OFFICIALS +OFFICIATE +OFFICIO +OFFICIOUS +OFFICIOUSLY +OFFICIOUSNESS +OFFING +OFFLOAD +OFFS +OFFSET +OFFSETS +OFFSETTING +OFFSHORE +OFFSPRING +OFT +OFTEN +OFTENTIMES +OGDEN +OHIO +OHM +OHMMETER +OIL +OILCLOTH +OILED +OILER +OILERS +OILIER +OILIEST +OILING +OILS +OILY +OINTMENT +OJIBWA +OKAMOTO +OKAY +OKINAWA +OKLAHOMA +OKLAHOMAN +OLAF +OLAV +OLD +OLDEN +OLDENBURG +OLDER +OLDEST +OLDNESS +OLDSMOBILE +OLDUVAI +OLDY +OLEANDER +OLEG +OLEOMARGARINE +OLGA +OLIGARCHY +OLIGOCENE +OLIN +OLIVE +OLIVER +OLIVERS +OLIVES +OLIVETTI +OLIVIA +OLIVIER +OLSEN +OLSON +OLYMPIA +OLYMPIAN +OLYMPIANIZE +OLYMPIANIZES +OLYMPIC +OLYMPICS +OLYMPUS +OMAHA +OMAN +OMEGA +OMELET +OMEN +OMENS +OMICRON +OMINOUS +OMINOUSLY +OMINOUSNESS +OMISSION +OMISSIONS +OMIT +OMITS +OMITTED +OMITTING +OMNIBUS +OMNIDIRECTIONAL +OMNIPOTENT +OMNIPRESENT +OMNISCIENT +OMNISCIENTLY +OMNIVORE +ONANISM +ONCE +ONCOLOGY +ONE +ONEIDA +ONENESS +ONEROUS +ONES +ONESELF +ONETIME +ONGOING +ONION +ONIONS +ONLINE +ONLOOKER +ONLY +ONONDAGA +ONRUSH +ONSET +ONSETS +ONSLAUGHT +ONTARIO +ONTO +ONTOLOGY +ONUS +ONWARD +ONWARDS +ONYX +OOZE +OOZED +OPACITY +OPAL +OPALS +OPAQUE +OPAQUELY +OPAQUENESS +OPCODE +OPEC +OPEL +OPEN +OPENED +OPENER +OPENERS +OPENING +OPENINGS +OPENLY +OPENNESS +OPENS +OPERA +OPERABLE +OPERAND +OPERANDI +OPERANDS +OPERAS +OPERATE +OPERATED +OPERATES +OPERATING +OPERATION +OPERATIONAL +OPERATIONALLY +OPERATIONS +OPERATIVE +OPERATIVES +OPERATOR +OPERATORS +OPERETTA +OPHIUCHUS +OPHIUCUS +OPIATE +OPINION +OPINIONS +OPIUM +OPOSSUM +OPPENHEIMER +OPPONENT +OPPONENTS +OPPORTUNE +OPPORTUNELY +OPPORTUNISM +OPPORTUNISTIC +OPPORTUNITIES +OPPORTUNITY +OPPOSABLE +OPPOSE +OPPOSED +OPPOSES +OPPOSING +OPPOSITE +OPPOSITELY +OPPOSITENESS +OPPOSITES +OPPOSITION +OPPRESS +OPPRESSED +OPPRESSES +OPPRESSING +OPPRESSION +OPPRESSIVE +OPPRESSOR +OPPRESSORS +OPPROBRIUM +OPT +OPTED +OPTHALMIC +OPTIC +OPTICAL +OPTICALLY +OPTICS +OPTIMA +OPTIMAL +OPTIMALITY +OPTIMALLY +OPTIMISM +OPTIMIST +OPTIMISTIC +OPTIMISTICALLY +OPTIMIZATION +OPTIMIZATIONS +OPTIMIZE +OPTIMIZED +OPTIMIZER +OPTIMIZERS +OPTIMIZES +OPTIMIZING +OPTIMUM +OPTING +OPTION +OPTIONAL +OPTIONALLY +OPTIONS +OPTOACOUSTIC +OPTOMETRIST +OPTOMETRY +OPTS +OPULENCE +OPULENT +OPUS +ORACLE +ORACLES +ORAL +ORALLY +ORANGE +ORANGES +ORANGUTAN +ORATION +ORATIONS +ORATOR +ORATORIES +ORATORS +ORATORY +ORB +ORBIT +ORBITAL +ORBITALLY +ORBITED +ORBITER +ORBITERS +ORBITING +ORBITS +ORCHARD +ORCHARDS +ORCHESTRA +ORCHESTRAL +ORCHESTRAS +ORCHESTRATE +ORCHID +ORCHIDS +ORDAIN +ORDAINED +ORDAINING +ORDAINS +ORDEAL +ORDER +ORDERED +ORDERING +ORDERINGS +ORDERLIES +ORDERLY +ORDERS +ORDINAL +ORDINANCE +ORDINANCES +ORDINARILY +ORDINARINESS +ORDINARY +ORDINATE +ORDINATES +ORDINATION +ORE +OREGANO +OREGON +OREGONIANS +ORES +ORESTEIA +ORESTES +ORGAN +ORGANIC +ORGANISM +ORGANISMS +ORGANIST +ORGANISTS +ORGANIZABLE +ORGANIZATION +ORGANIZATIONAL +ORGANIZATIONALLY +ORGANIZATIONS +ORGANIZE +ORGANIZED +ORGANIZER +ORGANIZERS +ORGANIZES +ORGANIZING +ORGANS +ORGASM +ORGIASTIC +ORGIES +ORGY +ORIENT +ORIENTAL +ORIENTALIZATION +ORIENTALIZATIONS +ORIENTALIZE +ORIENTALIZED +ORIENTALIZES +ORIENTALIZING +ORIENTALS +ORIENTATION +ORIENTATIONS +ORIENTED +ORIENTING +ORIENTS +ORIFICE +ORIFICES +ORIGIN +ORIGINAL +ORIGINALITY +ORIGINALLY +ORIGINALS +ORIGINATE +ORIGINATED +ORIGINATES +ORIGINATING +ORIGINATION +ORIGINATOR +ORIGINATORS +ORIGINS +ORIN +ORINOCO +ORIOLE +ORION +ORKNEY +ORLANDO +ORLEANS +ORLICK +ORLY +ORNAMENT +ORNAMENTAL +ORNAMENTALLY +ORNAMENTATION +ORNAMENTED +ORNAMENTING +ORNAMENTS +ORNATE +ORNERY +ORONO +ORPHAN +ORPHANAGE +ORPHANED +ORPHANS +ORPHEUS +ORPHIC +ORPHICALLY +ORR +ORTEGA +ORTHANT +ORTHODONTIST +ORTHODOX +ORTHODOXY +ORTHOGONAL +ORTHOGONALITY +ORTHOGONALLY +ORTHOPEDIC +ORVILLE +ORWELL +ORWELLIAN +OSAKA +OSBERT +OSBORN +OSBORNE +OSCAR +OSCILLATE +OSCILLATED +OSCILLATES +OSCILLATING +OSCILLATION +OSCILLATIONS +OSCILLATOR +OSCILLATORS +OSCILLATORY +OSCILLOSCOPE +OSCILLOSCOPES +OSGOOD +OSHKOSH +OSIRIS +OSLO +OSMOSIS +OSMOTIC +OSSIFY +OSTENSIBLE +OSTENSIBLY +OSTENTATIOUS +OSTEOPATH +OSTEOPATHIC +OSTEOPATHY +OSTEOPOROSIS +OSTRACISM +OSTRANDER +OSTRICH +OSTRICHES +OSWALD +OTHELLO +OTHER +OTHERS +OTHERWISE +OTHERWORLDLY +OTIS +OTT +OTTAWA +OTTER +OTTERS +OTTO +OTTOMAN +OTTOMANIZATION +OTTOMANIZATIONS +OTTOMANIZE +OTTOMANIZES +OUAGADOUGOU +OUCH +OUGHT +OUNCE +OUNCES +OUR +OURS +OURSELF +OURSELVES +OUST +OUT +OUTBOUND +OUTBREAK +OUTBREAKS +OUTBURST +OUTBURSTS +OUTCAST +OUTCASTS +OUTCOME +OUTCOMES +OUTCRIES +OUTCRY +OUTDATED +OUTDO +OUTDOOR +OUTDOORS +OUTER +OUTERMOST +OUTFIT +OUTFITS +OUTFITTED +OUTGOING +OUTGREW +OUTGROW +OUTGROWING +OUTGROWN +OUTGROWS +OUTGROWTH +OUTING +OUTLANDISH +OUTLAST +OUTLASTS +OUTLAW +OUTLAWED +OUTLAWING +OUTLAWS +OUTLAY +OUTLAYS +OUTLET +OUTLETS +OUTLINE +OUTLINED +OUTLINES +OUTLINING +OUTLIVE +OUTLIVED +OUTLIVES +OUTLIVING +OUTLOOK +OUTLYING +OUTNUMBERED +OUTPERFORM +OUTPERFORMED +OUTPERFORMING +OUTPERFORMS +OUTPOST +OUTPOSTS +OUTPUT +OUTPUTS +OUTPUTTING +OUTRAGE +OUTRAGED +OUTRAGEOUS +OUTRAGEOUSLY +OUTRAGES +OUTRIGHT +OUTRUN +OUTRUNS +OUTS +OUTSET +OUTSIDE +OUTSIDER +OUTSIDERS +OUTSKIRTS +OUTSTANDING +OUTSTANDINGLY +OUTSTRETCHED +OUTSTRIP +OUTSTRIPPED +OUTSTRIPPING +OUTSTRIPS +OUTVOTE +OUTVOTED +OUTVOTES +OUTVOTING +OUTWARD +OUTWARDLY +OUTWEIGH +OUTWEIGHED +OUTWEIGHING +OUTWEIGHS +OUTWIT +OUTWITS +OUTWITTED +OUTWITTING +OVAL +OVALS +OVARIES +OVARY +OVEN +OVENS +OVER +OVERALL +OVERALLS +OVERBOARD +OVERCAME +OVERCOAT +OVERCOATS +OVERCOME +OVERCOMES +OVERCOMING +OVERCROWD +OVERCROWDED +OVERCROWDING +OVERCROWDS +OVERDONE +OVERDOSE +OVERDRAFT +OVERDRAFTS +OVERDUE +OVEREMPHASIS +OVEREMPHASIZED +OVERESTIMATE +OVERESTIMATED +OVERESTIMATES +OVERESTIMATING +OVERESTIMATION +OVERFLOW +OVERFLOWED +OVERFLOWING +OVERFLOWS +OVERGROWN +OVERHANG +OVERHANGING +OVERHANGS +OVERHAUL +OVERHAULING +OVERHEAD +OVERHEADS +OVERHEAR +OVERHEARD +OVERHEARING +OVERHEARS +OVERJOY +OVERJOYED +OVERKILL +OVERLAND +OVERLAP +OVERLAPPED +OVERLAPPING +OVERLAPS +OVERLAY +OVERLAYING +OVERLAYS +OVERLOAD +OVERLOADED +OVERLOADING +OVERLOADS +OVERLOOK +OVERLOOKED +OVERLOOKING +OVERLOOKS +OVERLY +OVERNIGHT +OVERNIGHTER +OVERNIGHTERS +OVERPOWER +OVERPOWERED +OVERPOWERING +OVERPOWERS +OVERPRINT +OVERPRINTED +OVERPRINTING +OVERPRINTS +OVERPRODUCTION +OVERRIDDEN +OVERRIDE +OVERRIDES +OVERRIDING +OVERRODE +OVERRULE +OVERRULED +OVERRULES +OVERRUN +OVERRUNNING +OVERRUNS +OVERSEAS +OVERSEE +OVERSEEING +OVERSEER +OVERSEERS +OVERSEES +OVERSHADOW +OVERSHADOWED +OVERSHADOWING +OVERSHADOWS +OVERSHOOT +OVERSHOT +OVERSIGHT +OVERSIGHTS +OVERSIMPLIFIED +OVERSIMPLIFIES +OVERSIMPLIFY +OVERSIMPLIFYING +OVERSIZED +OVERSTATE +OVERSTATED +OVERSTATEMENT +OVERSTATEMENTS +OVERSTATES +OVERSTATING +OVERSTOCKS +OVERSUBSCRIBED +OVERT +OVERTAKE +OVERTAKEN +OVERTAKER +OVERTAKERS +OVERTAKES +OVERTAKING +OVERTHREW +OVERTHROW +OVERTHROWN +OVERTIME +OVERTLY +OVERTONE +OVERTONES +OVERTOOK +OVERTURE +OVERTURES +OVERTURN +OVERTURNED +OVERTURNING +OVERTURNS +OVERUSE +OVERVIEW +OVERVIEWS +OVERWHELM +OVERWHELMED +OVERWHELMING +OVERWHELMINGLY +OVERWHELMS +OVERWORK +OVERWORKED +OVERWORKING +OVERWORKS +OVERWRITE +OVERWRITES +OVERWRITING +OVERWRITTEN +OVERZEALOUS +OVID +OWE +OWED +OWEN +OWENS +OWES +OWING +OWL +OWLS +OWN +OWNED +OWNER +OWNERS +OWNERSHIP +OWNERSHIPS +OWNING +OWNS +OXEN +OXFORD +OXIDE +OXIDES +OXIDIZE +OXIDIZED +OXNARD +OXONIAN +OXYGEN +OYSTER +OYSTERS +OZARK +OZARKS +OZONE +OZZIE +PABLO +PABST +PACE +PACED +PACEMAKER +PACER +PACERS +PACES +PACIFIC +PACIFICATION +PACIFIED +PACIFIER +PACIFIES +PACIFISM +PACIFIST +PACIFY +PACING +PACK +PACKAGE +PACKAGED +PACKAGER +PACKAGERS +PACKAGES +PACKAGING +PACKAGINGS +PACKARD +PACKARDS +PACKED +PACKER +PACKERS +PACKET +PACKETS +PACKING +PACKS +PACKWOOD +PACT +PACTS +PAD +PADDED +PADDING +PADDLE +PADDOCK +PADDY +PADLOCK +PADS +PAGAN +PAGANINI +PAGANS +PAGE +PAGEANT +PAGEANTRY +PAGEANTS +PAGED +PAGER +PAGERS +PAGES +PAGINATE +PAGINATED +PAGINATES +PAGINATING +PAGINATION +PAGING +PAGODA +PAID +PAIL +PAILS +PAIN +PAINE +PAINED +PAINFUL +PAINFULLY +PAINLESS +PAINS +PAINSTAKING +PAINSTAKINGLY +PAINT +PAINTED +PAINTER +PAINTERS +PAINTING +PAINTINGS +PAINTS +PAIR +PAIRED +PAIRING +PAIRINGS +PAIRS +PAIRWISE +PAJAMA +PAJAMAS +PAKISTAN +PAKISTANI +PAKISTANIS +PAL +PALACE +PALACES +PALATE +PALATES +PALATINE +PALE +PALED +PALELY +PALENESS +PALEOLITHIC +PALEOZOIC +PALER +PALERMO +PALES +PALEST +PALESTINE +PALESTINIAN +PALFREY +PALINDROME +PALINDROMIC +PALING +PALL +PALLADIAN +PALLADIUM +PALLIATE +PALLIATIVE +PALLID +PALM +PALMED +PALMER +PALMING +PALMOLIVE +PALMS +PALMYRA +PALO +PALOMAR +PALPABLE +PALS +PALSY +PAM +PAMELA +PAMPER +PAMPHLET +PAMPHLETS +PAN +PANACEA +PANACEAS +PANAMA +PANAMANIAN +PANCAKE +PANCAKES +PANCHO +PANDA +PANDANUS +PANDAS +PANDEMIC +PANDEMONIUM +PANDER +PANDORA +PANE +PANEL +PANELED +PANELING +PANELIST +PANELISTS +PANELS +PANES +PANG +PANGAEA +PANGS +PANIC +PANICKED +PANICKING +PANICKY +PANICS +PANNED +PANNING +PANORAMA +PANORAMIC +PANS +PANSIES +PANSY +PANT +PANTED +PANTHEISM +PANTHEIST +PANTHEON +PANTHER +PANTHERS +PANTIES +PANTING +PANTOMIME +PANTRIES +PANTRY +PANTS +PANTY +PANTYHOSE +PAOLI +PAPA +PAPAL +PAPER +PAPERBACK +PAPERBACKS +PAPERED +PAPERER +PAPERERS +PAPERING +PAPERINGS +PAPERS +PAPERWEIGHT +PAPERWORK +PAPOOSE +PAPPAS +PAPUA +PAPYRUS +PAR +PARABOLA +PARABOLIC +PARABOLOID +PARABOLOIDAL +PARACHUTE +PARACHUTED +PARACHUTES +PARADE +PARADED +PARADES +PARADIGM +PARADIGMS +PARADING +PARADISE +PARADOX +PARADOXES +PARADOXICAL +PARADOXICALLY +PARAFFIN +PARAGON +PARAGONS +PARAGRAPH +PARAGRAPHING +PARAGRAPHS +PARAGUAY +PARAGUAYAN +PARAGUAYANS +PARAKEET +PARALLAX +PARALLEL +PARALLELED +PARALLELING +PARALLELISM +PARALLELIZE +PARALLELIZED +PARALLELIZES +PARALLELIZING +PARALLELOGRAM +PARALLELOGRAMS +PARALLELS +PARALYSIS +PARALYZE +PARALYZED +PARALYZES +PARALYZING +PARAMETER +PARAMETERIZABLE +PARAMETERIZATION +PARAMETERIZATIONS +PARAMETERIZE +PARAMETERIZED +PARAMETERIZES +PARAMETERIZING +PARAMETERLESS +PARAMETERS +PARAMETRIC +PARAMETRIZED +PARAMILITARY +PARAMOUNT +PARAMUS +PARANOIA +PARANOIAC +PARANOID +PARANORMAL +PARAPET +PARAPETS +PARAPHERNALIA +PARAPHRASE +PARAPHRASED +PARAPHRASES +PARAPHRASING +PARAPSYCHOLOGY +PARASITE +PARASITES +PARASITIC +PARASITICS +PARASOL +PARBOIL +PARC +PARCEL +PARCELED +PARCELING +PARCELS +PARCH +PARCHED +PARCHMENT +PARDON +PARDONABLE +PARDONABLY +PARDONED +PARDONER +PARDONERS +PARDONING +PARDONS +PARE +PAREGORIC +PARENT +PARENTAGE +PARENTAL +PARENTHESES +PARENTHESIS +PARENTHESIZED +PARENTHESIZES +PARENTHESIZING +PARENTHETIC +PARENTHETICAL +PARENTHETICALLY +PARENTHOOD +PARENTS +PARES +PARETO +PARIAH +PARIMUTUEL +PARING +PARINGS +PARIS +PARISH +PARISHES +PARISHIONER +PARISIAN +PARISIANIZATION +PARISIANIZATIONS +PARISIANIZE +PARISIANIZES +PARITY +PARK +PARKE +PARKED +PARKER +PARKERS +PARKERSBURG +PARKHOUSE +PARKING +PARKINSON +PARKINSONIAN +PARKLAND +PARKLIKE +PARKS +PARKWAY +PARLAY +PARLEY +PARLIAMENT +PARLIAMENTARIAN +PARLIAMENTARY +PARLIAMENTS +PARLOR +PARLORS +PARMESAN +PAROCHIAL +PARODY +PAROLE +PAROLED +PAROLES +PAROLING +PARR +PARRIED +PARRISH +PARROT +PARROTING +PARROTS +PARRS +PARRY +PARS +PARSE +PARSED +PARSER +PARSERS +PARSES +PARSI +PARSIFAL +PARSIMONY +PARSING +PARSINGS +PARSLEY +PARSON +PARSONS +PART +PARTAKE +PARTAKER +PARTAKES +PARTAKING +PARTED +PARTER +PARTERS +PARTHENON +PARTHIA +PARTIAL +PARTIALITY +PARTIALLY +PARTICIPANT +PARTICIPANTS +PARTICIPATE +PARTICIPATED +PARTICIPATES +PARTICIPATING +PARTICIPATION +PARTICIPLE +PARTICLE +PARTICLES +PARTICULAR +PARTICULARLY +PARTICULARS +PARTICULATE +PARTIES +PARTING +PARTINGS +PARTISAN +PARTISANS +PARTITION +PARTITIONED +PARTITIONING +PARTITIONS +PARTLY +PARTNER +PARTNERED +PARTNERS +PARTNERSHIP +PARTOOK +PARTRIDGE +PARTRIDGES +PARTS +PARTY +PASADENA +PASCAL +PASCAL +PASO +PASS +PASSAGE +PASSAGES +PASSAGEWAY +PASSAIC +PASSE +PASSED +PASSENGER +PASSENGERS +PASSER +PASSERS +PASSES +PASSING +PASSION +PASSIONATE +PASSIONATELY +PASSIONS +PASSIVATE +PASSIVE +PASSIVELY +PASSIVENESS +PASSIVITY +PASSOVER +PASSPORT +PASSPORTS +PASSWORD +PASSWORDS +PAST +PASTE +PASTED +PASTEL +PASTERNAK +PASTES +PASTEUR +PASTIME +PASTIMES +PASTING +PASTNESS +PASTOR +PASTORAL +PASTORS +PASTRY +PASTS +PASTURE +PASTURES +PAT +PATAGONIA +PATAGONIANS +PATCH +PATCHED +PATCHES +PATCHING +PATCHWORK +PATCHY +PATE +PATEN +PATENT +PATENTABLE +PATENTED +PATENTER +PATENTERS +PATENTING +PATENTLY +PATENTS +PATERNAL +PATERNALLY +PATERNOSTER +PATERSON +PATH +PATHETIC +PATHNAME +PATHNAMES +PATHOGEN +PATHOGENESIS +PATHOLOGICAL +PATHOLOGY +PATHOS +PATHS +PATHWAY +PATHWAYS +PATIENCE +PATIENT +PATIENTLY +PATIENTS +PATINA +PATIO +PATRIARCH +PATRIARCHAL +PATRIARCHS +PATRIARCHY +PATRICE +PATRICIA +PATRICIAN +PATRICIANS +PATRICK +PATRIMONIAL +PATRIMONY +PATRIOT +PATRIOTIC +PATRIOTISM +PATRIOTS +PATROL +PATROLLED +PATROLLING +PATROLMAN +PATROLMEN +PATROLS +PATRON +PATRONAGE +PATRONIZE +PATRONIZED +PATRONIZES +PATRONIZING +PATRONS +PATS +PATSIES +PATSY +PATTER +PATTERED +PATTERING +PATTERINGS +PATTERN +PATTERNED +PATTERNING +PATTERNS +PATTERS +PATTERSON +PATTI +PATTIES +PATTON +PATTY +PAUCITY +PAUL +PAULA +PAULETTE +PAULI +PAULINE +PAULING +PAULINIZE +PAULINIZES +PAULO +PAULSEN +PAULSON +PAULUS +PAUNCH +PAUNCHY +PAUPER +PAUSE +PAUSED +PAUSES +PAUSING +PAVE +PAVED +PAVEMENT +PAVEMENTS +PAVES +PAVILION +PAVILIONS +PAVING +PAVLOV +PAVLOVIAN +PAW +PAWING +PAWN +PAWNS +PAWNSHOP +PAWS +PAWTUCKET +PAY +PAYABLE +PAYCHECK +PAYCHECKS +PAYED +PAYER +PAYERS +PAYING +PAYMENT +PAYMENTS +PAYNE +PAYNES +PAYNIZE +PAYNIZES +PAYOFF +PAYOFFS +PAYROLL +PAYS +PAYSON +PAZ +PEA +PEABODY +PEACE +PEACEABLE +PEACEFUL +PEACEFULLY +PEACEFULNESS +PEACETIME +PEACH +PEACHES +PEACHTREE +PEACOCK +PEACOCKS +PEAK +PEAKED +PEAKS +PEAL +PEALE +PEALED +PEALING +PEALS +PEANUT +PEANUTS +PEAR +PEARCE +PEARL +PEARLS +PEARLY +PEARS +PEARSON +PEAS +PEASANT +PEASANTRY +PEASANTS +PEASE +PEAT +PEBBLE +PEBBLES +PECCARY +PECK +PECKED +PECKING +PECKS +PECOS +PECTORAL +PECULIAR +PECULIARITIES +PECULIARITY +PECULIARLY +PECUNIARY +PEDAGOGIC +PEDAGOGICAL +PEDAGOGICALLY +PEDAGOGY +PEDAL +PEDANT +PEDANTIC +PEDANTRY +PEDDLE +PEDDLER +PEDDLERS +PEDESTAL +PEDESTRIAN +PEDESTRIANS +PEDIATRIC +PEDIATRICIAN +PEDIATRICS +PEDIGREE +PEDRO +PEEK +PEEKED +PEEKING +PEEKS +PEEL +PEELED +PEELING +PEELS +PEEP +PEEPED +PEEPER +PEEPHOLE +PEEPING +PEEPS +PEER +PEERED +PEERING +PEERLESS +PEERS +PEG +PEGASUS +PEGBOARD +PEGGY +PEGS +PEIPING +PEJORATIVE +PEKING +PELHAM +PELICAN +PELLAGRA +PELOPONNESE +PELT +PELTING +PELTS +PELVIC +PELVIS +PEMBROKE +PEN +PENAL +PENALIZE +PENALIZED +PENALIZES +PENALIZING +PENALTIES +PENALTY +PENANCE +PENCE +PENCHANT +PENCIL +PENCILED +PENCILS +PEND +PENDANT +PENDED +PENDING +PENDLETON +PENDS +PENDULUM +PENDULUMS +PENELOPE +PENETRABLE +PENETRATE +PENETRATED +PENETRATES +PENETRATING +PENETRATINGLY +PENETRATION +PENETRATIONS +PENETRATIVE +PENETRATOR +PENETRATORS +PENGUIN +PENGUINS +PENH +PENICILLIN +PENINSULA +PENINSULAS +PENIS +PENISES +PENITENT +PENITENTIARY +PENN +PENNED +PENNIES +PENNILESS +PENNING +PENNSYLVANIA +PENNY +PENROSE +PENS +PENSACOLA +PENSION +PENSIONER +PENSIONS +PENSIVE +PENT +PENTAGON +PENTAGONS +PENTATEUCH +PENTECOST +PENTECOSTAL +PENTHOUSE +PENULTIMATE +PENUMBRA +PEONY +PEOPLE +PEOPLED +PEOPLES +PEORIA +PEP +PEPPER +PEPPERED +PEPPERING +PEPPERMINT +PEPPERONI +PEPPERS +PEPPERY +PEPPY +PEPSI +PEPSICO +PEPSICO +PEPTIDE +PER +PERCEIVABLE +PERCEIVABLY +PERCEIVE +PERCEIVED +PERCEIVER +PERCEIVERS +PERCEIVES +PERCEIVING +PERCENT +PERCENTAGE +PERCENTAGES +PERCENTILE +PERCENTILES +PERCENTS +PERCEPTIBLE +PERCEPTIBLY +PERCEPTION +PERCEPTIONS +PERCEPTIVE +PERCEPTIVELY +PERCEPTUAL +PERCEPTUALLY +PERCH +PERCHANCE +PERCHED +PERCHES +PERCHING +PERCIVAL +PERCUSSION +PERCUTANEOUS +PERCY +PEREMPTORY +PERENNIAL +PERENNIALLY +PEREZ +PERFECT +PERFECTED +PERFECTIBLE +PERFECTING +PERFECTION +PERFECTIONIST +PERFECTIONISTS +PERFECTLY +PERFECTNESS +PERFECTS +PERFORCE +PERFORM +PERFORMANCE +PERFORMANCES +PERFORMED +PERFORMER +PERFORMERS +PERFORMING +PERFORMS +PERFUME +PERFUMED +PERFUMES +PERFUMING +PERFUNCTORY +PERGAMON +PERHAPS +PERICLEAN +PERICLES +PERIHELION +PERIL +PERILLA +PERILOUS +PERILOUSLY +PERILS +PERIMETER +PERIOD +PERIODIC +PERIODICAL +PERIODICALLY +PERIODICALS +PERIODS +PERIPHERAL +PERIPHERALLY +PERIPHERALS +PERIPHERIES +PERIPHERY +PERISCOPE +PERISH +PERISHABLE +PERISHABLES +PERISHED +PERISHER +PERISHERS +PERISHES +PERISHING +PERJURE +PERJURY +PERK +PERKINS +PERKY +PERLE +PERMANENCE +PERMANENT +PERMANENTLY +PERMEABLE +PERMEATE +PERMEATED +PERMEATES +PERMEATING +PERMEATION +PERMIAN +PERMISSIBILITY +PERMISSIBLE +PERMISSIBLY +PERMISSION +PERMISSIONS +PERMISSIVE +PERMISSIVELY +PERMIT +PERMITS +PERMITTED +PERMITTING +PERMUTATION +PERMUTATIONS +PERMUTE +PERMUTED +PERMUTES +PERMUTING +PERNICIOUS +PERNOD +PEROXIDE +PERPENDICULAR +PERPENDICULARLY +PERPENDICULARS +PERPETRATE +PERPETRATED +PERPETRATES +PERPETRATING +PERPETRATION +PERPETRATIONS +PERPETRATOR +PERPETRATORS +PERPETUAL +PERPETUALLY +PERPETUATE +PERPETUATED +PERPETUATES +PERPETUATING +PERPETUATION +PERPETUITY +PERPLEX +PERPLEXED +PERPLEXING +PERPLEXITY +PERRY +PERSECUTE +PERSECUTED +PERSECUTES +PERSECUTING +PERSECUTION +PERSECUTOR +PERSECUTORS +PERSEID +PERSEPHONE +PERSEUS +PERSEVERANCE +PERSEVERE +PERSEVERED +PERSEVERES +PERSEVERING +PERSHING +PERSIA +PERSIAN +PERSIANIZATION +PERSIANIZATIONS +PERSIANIZE +PERSIANIZES +PERSIANS +PERSIST +PERSISTED +PERSISTENCE +PERSISTENT +PERSISTENTLY +PERSISTING +PERSISTS +PERSON +PERSONAGE +PERSONAGES +PERSONAL +PERSONALITIES +PERSONALITY +PERSONALIZATION +PERSONALIZE +PERSONALIZED +PERSONALIZES +PERSONALIZING +PERSONALLY +PERSONIFICATION +PERSONIFIED +PERSONIFIES +PERSONIFY +PERSONIFYING +PERSONNEL +PERSONS +PERSPECTIVE +PERSPECTIVES +PERSPICUOUS +PERSPICUOUSLY +PERSPIRATION +PERSPIRE +PERSUADABLE +PERSUADE +PERSUADED +PERSUADER +PERSUADERS +PERSUADES +PERSUADING +PERSUASION +PERSUASIONS +PERSUASIVE +PERSUASIVELY +PERSUASIVENESS +PERTAIN +PERTAINED +PERTAINING +PERTAINS +PERTH +PERTINENT +PERTURB +PERTURBATION +PERTURBATIONS +PERTURBED +PERU +PERUSAL +PERUSE +PERUSED +PERUSER +PERUSERS +PERUSES +PERUSING +PERUVIAN +PERUVIANIZE +PERUVIANIZES +PERUVIANS +PERVADE +PERVADED +PERVADES +PERVADING +PERVASIVE +PERVASIVELY +PERVERSION +PERVERT +PERVERTED +PERVERTS +PESSIMISM +PESSIMIST +PESSIMISTIC +PEST +PESTER +PESTICIDE +PESTILENCE +PESTILENT +PESTS +PET +PETAL +PETALS +PETE +PETER +PETERS +PETERSBURG +PETERSEN +PETERSON +PETITION +PETITIONED +PETITIONER +PETITIONING +PETITIONS +PETKIEWICZ +PETRI +PETROLEUM +PETS +PETTED +PETTER +PETTERS +PETTIBONE +PETTICOAT +PETTICOATS +PETTINESS +PETTING +PETTY +PETULANCE +PETULANT +PEUGEOT +PEW +PEWAUKEE +PEWS +PEWTER +PFIZER +PHAEDRA +PHANTOM +PHANTOMS +PHARMACEUTIC +PHARMACIST +PHARMACOLOGY +PHARMACOPOEIA +PHARMACY +PHASE +PHASED +PHASER +PHASERS +PHASES +PHASING +PHEASANT +PHEASANTS +PHELPS +PHENOMENA +PHENOMENAL +PHENOMENALLY +PHENOMENOLOGICAL +PHENOMENOLOGICALLY +PHENOMENOLOGIES +PHENOMENOLOGY +PHENOMENON +PHI +PHIGS +PHIL +PHILADELPHIA +PHILANTHROPY +PHILCO +PHILHARMONIC +PHILIP +PHILIPPE +PHILIPPIANS +PHILIPPINE +PHILIPPINES +PHILISTINE +PHILISTINES +PHILISTINIZE +PHILISTINIZES +PHILLIES +PHILLIP +PHILLIPS +PHILLY +PHILOSOPHER +PHILOSOPHERS +PHILOSOPHIC +PHILOSOPHICAL +PHILOSOPHICALLY +PHILOSOPHIES +PHILOSOPHIZE +PHILOSOPHIZED +PHILOSOPHIZER +PHILOSOPHIZERS +PHILOSOPHIZES +PHILOSOPHIZING +PHILOSOPHY +PHIPPS +PHOBOS +PHOENICIA +PHOENIX +PHONE +PHONED +PHONEME +PHONEMES +PHONEMIC +PHONES +PHONETIC +PHONETICS +PHONING +PHONOGRAPH +PHONOGRAPHS +PHONY +PHOSGENE +PHOSPHATE +PHOSPHATES +PHOSPHOR +PHOSPHORESCENT +PHOSPHORIC +PHOSPHORUS +PHOTO +PHOTOCOPIED +PHOTOCOPIER +PHOTOCOPIERS +PHOTOCOPIES +PHOTOCOPY +PHOTOCOPYING +PHOTODIODE +PHOTODIODES +PHOTOGENIC +PHOTOGRAPH +PHOTOGRAPHED +PHOTOGRAPHER +PHOTOGRAPHERS +PHOTOGRAPHIC +PHOTOGRAPHING +PHOTOGRAPHS +PHOTOGRAPHY +PHOTON +PHOTOS +PHOTOSENSITIVE +PHOTOTYPESETTER +PHOTOTYPESETTERS +PHRASE +PHRASED +PHRASEOLOGY +PHRASES +PHRASING +PHRASINGS +PHYLA +PHYLLIS +PHYLUM +PHYSIC +PHYSICAL +PHYSICALLY +PHYSICALNESS +PHYSICALS +PHYSICIAN +PHYSICIANS +PHYSICIST +PHYSICISTS +PHYSICS +PHYSIOLOGICAL +PHYSIOLOGICALLY +PHYSIOLOGY +PHYSIOTHERAPIST +PHYSIOTHERAPY +PHYSIQUE +PHYTOPLANKTON +PIANIST +PIANO +PIANOS +PICA +PICAS +PICASSO +PICAYUNE +PICCADILLY +PICCOLO +PICK +PICKAXE +PICKED +PICKER +PICKERING +PICKERS +PICKET +PICKETED +PICKETER +PICKETERS +PICKETING +PICKETS +PICKETT +PICKFORD +PICKING +PICKINGS +PICKLE +PICKLED +PICKLES +PICKLING +PICKMAN +PICKS +PICKUP +PICKUPS +PICKY +PICNIC +PICNICKED +PICNICKING +PICNICS +PICOFARAD +PICOJOULE +PICOSECOND +PICT +PICTORIAL +PICTORIALLY +PICTURE +PICTURED +PICTURES +PICTURESQUE +PICTURESQUENESS +PICTURING +PIDDLE +PIDGIN +PIE +PIECE +PIECED +PIECEMEAL +PIECES +PIECEWISE +PIECING +PIEDFORT +PIEDMONT +PIER +PIERCE +PIERCED +PIERCES +PIERCING +PIERRE +PIERS +PIERSON +PIES +PIETY +PIEZOELECTRIC +PIG +PIGEON +PIGEONHOLE +PIGEONS +PIGGISH +PIGGY +PIGGYBACK +PIGGYBACKED +PIGGYBACKING +PIGGYBACKS +PIGMENT +PIGMENTATION +PIGMENTED +PIGMENTS +PIGPEN +PIGS +PIGSKIN +PIGTAIL +PIKE +PIKER +PIKES +PILATE +PILE +PILED +PILERS +PILES +PILFER +PILFERAGE +PILGRIM +PILGRIMAGE +PILGRIMAGES +PILGRIMS +PILING +PILINGS +PILL +PILLAGE +PILLAGED +PILLAR +PILLARED +PILLARS +PILLORY +PILLOW +PILLOWS +PILLS +PILLSBURY +PILOT +PILOTING +PILOTS +PIMP +PIMPLE +PIN +PINAFORE +PINBALL +PINCH +PINCHED +PINCHES +PINCHING +PINCUSHION +PINE +PINEAPPLE +PINEAPPLES +PINED +PINEHURST +PINES +PING +PINHEAD +PINHOLE +PINING +PINION +PINK +PINKER +PINKEST +PINKIE +PINKISH +PINKLY +PINKNESS +PINKS +PINNACLE +PINNACLES +PINNED +PINNING +PINNINGS +PINOCHLE +PINPOINT +PINPOINTING +PINPOINTS +PINS +PINSCHER +PINSKY +PINT +PINTO +PINTS +PINWHEEL +PION +PIONEER +PIONEERED +PIONEERING +PIONEERS +PIOTR +PIOUS +PIOUSLY +PIP +PIPE +PIPED +PIPELINE +PIPELINED +PIPELINES +PIPELINING +PIPER +PIPERS +PIPES +PIPESTONE +PIPETTE +PIPING +PIQUE +PIRACY +PIRAEUS +PIRATE +PIRATES +PISA +PISCATAWAY +PISCES +PISS +PISTACHIO +PISTIL +PISTILS +PISTOL +PISTOLS +PISTON +PISTONS +PIT +PITCH +PITCHED +PITCHER +PITCHERS +PITCHES +PITCHFORK +PITCHING +PITEOUS +PITEOUSLY +PITFALL +PITFALLS +PITH +PITHED +PITHES +PITHIER +PITHIEST +PITHINESS +PITHING +PITHY +PITIABLE +PITIED +PITIER +PITIERS +PITIES +PITIFUL +PITIFULLY +PITILESS +PITILESSLY +PITNEY +PITS +PITT +PITTED +PITTSBURGH +PITTSBURGHERS +PITTSFIELD +PITTSTON +PITUITARY +PITY +PITYING +PITYINGLY +PIUS +PIVOT +PIVOTAL +PIVOTING +PIVOTS +PIXEL +PIXELS +PIZARRO +PIZZA +PLACARD +PLACARDS +PLACATE +PLACE +PLACEBO +PLACED +PLACEHOLDER +PLACEMENT +PLACEMENTS +PLACENTA +PLACENTAL +PLACER +PLACES +PLACID +PLACIDLY +PLACING +PLAGIARISM +PLAGIARIST +PLAGUE +PLAGUED +PLAGUES +PLAGUING +PLAID +PLAIDS +PLAIN +PLAINER +PLAINEST +PLAINFIELD +PLAINLY +PLAINNESS +PLAINS +PLAINTEXT +PLAINTEXTS +PLAINTIFF +PLAINTIFFS +PLAINTIVE +PLAINTIVELY +PLAINTIVENESS +PLAINVIEW +PLAIT +PLAITS +PLAN +PLANAR +PLANARITY +PLANCK +PLANE +PLANED +PLANELOAD +PLANER +PLANERS +PLANES +PLANET +PLANETARIA +PLANETARIUM +PLANETARY +PLANETESIMAL +PLANETOID +PLANETS +PLANING +PLANK +PLANKING +PLANKS +PLANKTON +PLANNED +PLANNER +PLANNERS +PLANNING +PLANOCONCAVE +PLANOCONVEX +PLANS +PLANT +PLANTATION +PLANTATIONS +PLANTED +PLANTER +PLANTERS +PLANTING +PLANTINGS +PLANTS +PLAQUE +PLASMA +PLASTER +PLASTERED +PLASTERER +PLASTERING +PLASTERS +PLASTIC +PLASTICITY +PLASTICS +PLATE +PLATEAU +PLATEAUS +PLATED +PLATELET +PLATELETS +PLATEN +PLATENS +PLATES +PLATFORM +PLATFORMS +PLATING +PLATINUM +PLATITUDE +PLATO +PLATONIC +PLATONISM +PLATONIST +PLATOON +PLATTE +PLATTER +PLATTERS +PLATTEVILLE +PLAUSIBILITY +PLAUSIBLE +PLAY +PLAYABLE +PLAYBACK +PLAYBOY +PLAYED +PLAYER +PLAYERS +PLAYFUL +PLAYFULLY +PLAYFULNESS +PLAYGROUND +PLAYGROUNDS +PLAYHOUSE +PLAYING +PLAYMATE +PLAYMATES +PLAYOFF +PLAYROOM +PLAYS +PLAYTHING +PLAYTHINGS +PLAYTIME +PLAYWRIGHT +PLAYWRIGHTS +PLAYWRITING +PLAZA +PLEA +PLEAD +PLEADED +PLEADER +PLEADING +PLEADS +PLEAS +PLEASANT +PLEASANTLY +PLEASANTNESS +PLEASE +PLEASED +PLEASES +PLEASING +PLEASINGLY +PLEASURE +PLEASURES +PLEAT +PLEBEIAN +PLEBIAN +PLEBISCITE +PLEBISCITES +PLEDGE +PLEDGED +PLEDGES +PLEIADES +PLEISTOCENE +PLENARY +PLENIPOTENTIARY +PLENTEOUS +PLENTIFUL +PLENTIFULLY +PLENTY +PLETHORA +PLEURISY +PLEXIGLAS +PLIABLE +PLIANT +PLIED +PLIERS +PLIES +PLIGHT +PLINY +PLIOCENE +PLOD +PLODDING +PLOT +PLOTS +PLOTTED +PLOTTER +PLOTTERS +PLOTTING +PLOW +PLOWED +PLOWER +PLOWING +PLOWMAN +PLOWS +PLOWSHARE +PLOY +PLOYS +PLUCK +PLUCKED +PLUCKING +PLUCKS +PLUCKY +PLUG +PLUGGABLE +PLUGGED +PLUGGING +PLUGS +PLUM +PLUMAGE +PLUMB +PLUMBED +PLUMBING +PLUMBS +PLUME +PLUMED +PLUMES +PLUMMET +PLUMMETING +PLUMP +PLUMPED +PLUMPNESS +PLUMS +PLUNDER +PLUNDERED +PLUNDERER +PLUNDERERS +PLUNDERING +PLUNDERS +PLUNGE +PLUNGED +PLUNGER +PLUNGERS +PLUNGES +PLUNGING +PLUNK +PLURAL +PLURALITY +PLURALS +PLUS +PLUSES +PLUSH +PLUTARCH +PLUTO +PLUTONIUM +PLY +PLYMOUTH +PLYWOOD +PNEUMATIC +PNEUMONIA +POACH +POACHER +POACHES +POCAHONTAS +POCKET +POCKETBOOK +POCKETBOOKS +POCKETED +POCKETFUL +POCKETING +POCKETS +POCONO +POCONOS +POD +PODIA +PODIUM +PODS +PODUNK +POE +POEM +POEMS +POET +POETIC +POETICAL +POETICALLY +POETICS +POETRIES +POETRY +POETS +POGO +POGROM +POIGNANCY +POIGNANT +POINCARE +POINDEXTER +POINT +POINTED +POINTEDLY +POINTER +POINTERS +POINTING +POINTLESS +POINTS +POINTY +POISE +POISED +POISES +POISON +POISONED +POISONER +POISONING +POISONOUS +POISONOUSNESS +POISONS +POISSON +POKE +POKED +POKER +POKERFACE +POKES +POKING +POLAND +POLAR +POLARIS +POLARITIES +POLARITY +POLAROID +POLE +POLECAT +POLED +POLEMIC +POLEMICS +POLES +POLICE +POLICED +POLICEMAN +POLICEMEN +POLICES +POLICIES +POLICING +POLICY +POLING +POLIO +POLISH +POLISHED +POLISHER +POLISHERS +POLISHES +POLISHING +POLITBURO +POLITE +POLITELY +POLITENESS +POLITER +POLITEST +POLITIC +POLITICAL +POLITICALLY +POLITICIAN +POLITICIANS +POLITICKING +POLITICS +POLK +POLKA +POLL +POLLARD +POLLED +POLLEN +POLLING +POLLOI +POLLS +POLLUTANT +POLLUTE +POLLUTED +POLLUTES +POLLUTING +POLLUTION +POLLUX +POLO +POLYALPHABETIC +POLYGON +POLYGONS +POLYHYMNIA +POLYMER +POLYMERS +POLYMORPHIC +POLYNESIA +POLYNESIAN +POLYNOMIAL +POLYNOMIALS +POLYPHEMUS +POLYTECHNIC +POLYTHEIST +POMERANIA +POMERANIAN +POMONA +POMP +POMPADOUR +POMPEII +POMPEY +POMPOSITY +POMPOUS +POMPOUSLY +POMPOUSNESS +PONCE +PONCHARTRAIN +PONCHO +POND +PONDER +PONDERED +PONDERING +PONDEROUS +PONDERS +PONDS +PONG +PONIES +PONTIAC +PONTIFF +PONTIFIC +PONTIFICATE +PONY +POOCH +POODLE +POOL +POOLE +POOLED +POOLING +POOLS +POOR +POORER +POOREST +POORLY +POORNESS +POP +POPCORN +POPE +POPEK +POPEKS +POPISH +POPLAR +POPLIN +POPPED +POPPIES +POPPING +POPPY +POPS +POPSICLE +POPSICLES +POPULACE +POPULAR +POPULARITY +POPULARIZATION +POPULARIZE +POPULARIZED +POPULARIZES +POPULARIZING +POPULARLY +POPULATE +POPULATED +POPULATES +POPULATING +POPULATION +POPULATIONS +POPULOUS +POPULOUSNESS +PORCELAIN +PORCH +PORCHES +PORCINE +PORCUPINE +PORCUPINES +PORE +PORED +PORES +PORING +PORK +PORKER +PORNOGRAPHER +PORNOGRAPHIC +PORNOGRAPHY +POROUS +PORPOISE +PORRIDGE +PORT +PORTABILITY +PORTABLE +PORTAGE +PORTAL +PORTALS +PORTE +PORTED +PORTEND +PORTENDED +PORTENDING +PORTENDS +PORTENT +PORTENTOUS +PORTER +PORTERHOUSE +PORTERS +PORTFOLIO +PORTFOLIOS +PORTIA +PORTICO +PORTING +PORTION +PORTIONS +PORTLAND +PORTLY +PORTMANTEAU +PORTO +PORTRAIT +PORTRAITS +PORTRAY +PORTRAYAL +PORTRAYED +PORTRAYING +PORTRAYS +PORTS +PORTSMOUTH +PORTUGAL +PORTUGUESE +POSE +POSED +POSEIDON +POSER +POSERS +POSES +POSH +POSING +POSIT +POSITED +POSITING +POSITION +POSITIONAL +POSITIONED +POSITIONING +POSITIONS +POSITIVE +POSITIVELY +POSITIVENESS +POSITIVES +POSITRON +POSITS +POSNER +POSSE +POSSESS +POSSESSED +POSSESSES +POSSESSING +POSSESSION +POSSESSIONAL +POSSESSIONS +POSSESSIVE +POSSESSIVELY +POSSESSIVENESS +POSSESSOR +POSSESSORS +POSSIBILITIES +POSSIBILITY +POSSIBLE +POSSIBLY +POSSUM +POSSUMS +POST +POSTAGE +POSTAL +POSTCARD +POSTCONDITION +POSTDOCTORAL +POSTED +POSTER +POSTERIOR +POSTERIORI +POSTERITY +POSTERS +POSTFIX +POSTGRADUATE +POSTING +POSTLUDE +POSTMAN +POSTMARK +POSTMASTER +POSTMASTERS +POSTMORTEM +POSTOPERATIVE +POSTORDER +POSTPONE +POSTPONED +POSTPONING +POSTPROCESS +POSTPROCESSOR +POSTS +POSTSCRIPT +POSTSCRIPTS +POSTULATE +POSTULATED +POSTULATES +POSTULATING +POSTULATION +POSTULATIONS +POSTURE +POSTURES +POT +POTABLE +POTASH +POTASSIUM +POTATO +POTATOES +POTBELLY +POTEMKIN +POTENT +POTENTATE +POTENTATES +POTENTIAL +POTENTIALITIES +POTENTIALITY +POTENTIALLY +POTENTIALS +POTENTIATING +POTENTIOMETER +POTENTIOMETERS +POTHOLE +POTION +POTLATCH +POTOMAC +POTPOURRI +POTS +POTSDAM +POTTAWATOMIE +POTTED +POTTER +POTTERS +POTTERY +POTTING +POTTS +POUCH +POUCHES +POUGHKEEPSIE +POULTICE +POULTRY +POUNCE +POUNCED +POUNCES +POUNCING +POUND +POUNDED +POUNDER +POUNDERS +POUNDING +POUNDS +POUR +POURED +POURER +POURERS +POURING +POURS +POUSSIN +POUSSINS +POUT +POUTED +POUTING +POUTS +POVERTY +POWDER +POWDERED +POWDERING +POWDERPUFF +POWDERS +POWDERY +POWELL +POWER +POWERED +POWERFUL +POWERFULLY +POWERFULNESS +POWERING +POWERLESS +POWERLESSLY +POWERLESSNESS +POWERS +POX +POYNTING +PRACTICABLE +PRACTICABLY +PRACTICAL +PRACTICALITY +PRACTICALLY +PRACTICE +PRACTICED +PRACTICES +PRACTICING +PRACTITIONER +PRACTITIONERS +PRADESH +PRADO +PRAGMATIC +PRAGMATICALLY +PRAGMATICS +PRAGMATISM +PRAGMATIST +PRAGUE +PRAIRIE +PRAISE +PRAISED +PRAISER +PRAISERS +PRAISES +PRAISEWORTHY +PRAISING +PRAISINGLY +PRANCE +PRANCED +PRANCER +PRANCING +PRANK +PRANKS +PRATE +PRATT +PRATTVILLE +PRAVDA +PRAY +PRAYED +PRAYER +PRAYERS +PRAYING +PREACH +PREACHED +PREACHER +PREACHERS +PREACHES +PREACHING +PREALLOCATE +PREALLOCATED +PREALLOCATING +PREAMBLE +PREAMBLES +PREASSIGN +PREASSIGNED +PREASSIGNING +PREASSIGNS +PRECAMBRIAN +PRECARIOUS +PRECARIOUSLY +PRECARIOUSNESS +PRECAUTION +PRECAUTIONS +PRECEDE +PRECEDED +PRECEDENCE +PRECEDENCES +PRECEDENT +PRECEDENTED +PRECEDENTS +PRECEDES +PRECEDING +PRECEPT +PRECEPTS +PRECESS +PRECESSION +PRECINCT +PRECINCTS +PRECIOUS +PRECIOUSLY +PRECIOUSNESS +PRECIPICE +PRECIPITABLE +PRECIPITATE +PRECIPITATED +PRECIPITATELY +PRECIPITATENESS +PRECIPITATES +PRECIPITATING +PRECIPITATION +PRECIPITOUS +PRECIPITOUSLY +PRECISE +PRECISELY +PRECISENESS +PRECISION +PRECISIONS +PRECLUDE +PRECLUDED +PRECLUDES +PRECLUDING +PRECOCIOUS +PRECOCIOUSLY +PRECOCITY +PRECOMPUTE +PRECOMPUTED +PRECOMPUTING +PRECONCEIVE +PRECONCEIVED +PRECONCEPTION +PRECONCEPTIONS +PRECONDITION +PRECONDITIONED +PRECONDITIONS +PRECURSOR +PRECURSORS +PREDATE +PREDATED +PREDATES +PREDATING +PREDATORY +PREDECESSOR +PREDECESSORS +PREDEFINE +PREDEFINED +PREDEFINES +PREDEFINING +PREDEFINITION +PREDEFINITIONS +PREDETERMINATION +PREDETERMINE +PREDETERMINED +PREDETERMINES +PREDETERMINING +PREDICAMENT +PREDICATE +PREDICATED +PREDICATES +PREDICATING +PREDICATION +PREDICATIONS +PREDICT +PREDICTABILITY +PREDICTABLE +PREDICTABLY +PREDICTED +PREDICTING +PREDICTION +PREDICTIONS +PREDICTIVE +PREDICTOR +PREDICTS +PREDILECTION +PREDILECTIONS +PREDISPOSITION +PREDOMINANT +PREDOMINANTLY +PREDOMINATE +PREDOMINATED +PREDOMINATELY +PREDOMINATES +PREDOMINATING +PREDOMINATION +PREEMINENCE +PREEMINENT +PREEMPT +PREEMPTED +PREEMPTING +PREEMPTION +PREEMPTIVE +PREEMPTOR +PREEMPTS +PREEN +PREEXISTING +PREFAB +PREFABRICATE +PREFACE +PREFACED +PREFACES +PREFACING +PREFER +PREFERABLE +PREFERABLY +PREFERENCE +PREFERENCES +PREFERENTIAL +PREFERENTIALLY +PREFERRED +PREFERRING +PREFERS +PREFIX +PREFIXED +PREFIXES +PREFIXING +PREGNANCY +PREGNANT +PREHISTORIC +PREINITIALIZE +PREINITIALIZED +PREINITIALIZES +PREINITIALIZING +PREJUDGE +PREJUDGED +PREJUDICE +PREJUDICED +PREJUDICES +PREJUDICIAL +PRELATE +PRELIMINARIES +PRELIMINARY +PRELUDE +PRELUDES +PREMATURE +PREMATURELY +PREMATURITY +PREMEDITATED +PREMEDITATION +PREMIER +PREMIERS +PREMISE +PREMISES +PREMIUM +PREMIUMS +PREMONITION +PRENATAL +PRENTICE +PRENTICED +PRENTICING +PREOCCUPATION +PREOCCUPIED +PREOCCUPIES +PREOCCUPY +PREP +PREPARATION +PREPARATIONS +PREPARATIVE +PREPARATIVES +PREPARATORY +PREPARE +PREPARED +PREPARES +PREPARING +PREPEND +PREPENDED +PREPENDING +PREPOSITION +PREPOSITIONAL +PREPOSITIONS +PREPOSTEROUS +PREPOSTEROUSLY +PREPROCESSED +PREPROCESSING +PREPROCESSOR +PREPROCESSORS +PREPRODUCTION +PREPROGRAMMED +PREREQUISITE +PREREQUISITES +PREROGATIVE +PREROGATIVES +PRESBYTERIAN +PRESBYTERIANISM +PRESBYTERIANIZE +PRESBYTERIANIZES +PRESCOTT +PRESCRIBE +PRESCRIBED +PRESCRIBES +PRESCRIPTION +PRESCRIPTIONS +PRESCRIPTIVE +PRESELECT +PRESELECTED +PRESELECTING +PRESELECTS +PRESENCE +PRESENCES +PRESENT +PRESENTATION +PRESENTATIONS +PRESENTED +PRESENTER +PRESENTING +PRESENTLY +PRESENTNESS +PRESENTS +PRESERVATION +PRESERVATIONS +PRESERVE +PRESERVED +PRESERVER +PRESERVERS +PRESERVES +PRESERVING +PRESET +PRESIDE +PRESIDED +PRESIDENCY +PRESIDENT +PRESIDENTIAL +PRESIDENTS +PRESIDES +PRESIDING +PRESLEY +PRESS +PRESSED +PRESSER +PRESSES +PRESSING +PRESSINGS +PRESSURE +PRESSURED +PRESSURES +PRESSURING +PRESSURIZE +PRESSURIZED +PRESTIDIGITATE +PRESTIGE +PRESTIGIOUS +PRESTON +PRESUMABLY +PRESUME +PRESUMED +PRESUMES +PRESUMING +PRESUMPTION +PRESUMPTIONS +PRESUMPTIVE +PRESUMPTUOUS +PRESUMPTUOUSNESS +PRESUPPOSE +PRESUPPOSED +PRESUPPOSES +PRESUPPOSING +PRESUPPOSITION +PRETEND +PRETENDED +PRETENDER +PRETENDERS +PRETENDING +PRETENDS +PRETENSE +PRETENSES +PRETENSION +PRETENSIONS +PRETENTIOUS +PRETENTIOUSLY +PRETENTIOUSNESS +PRETEXT +PRETEXTS +PRETORIA +PRETORIAN +PRETTIER +PRETTIEST +PRETTILY +PRETTINESS +PRETTY +PREVAIL +PREVAILED +PREVAILING +PREVAILINGLY +PREVAILS +PREVALENCE +PREVALENT +PREVALENTLY +PREVENT +PREVENTABLE +PREVENTABLY +PREVENTED +PREVENTING +PREVENTION +PREVENTIVE +PREVENTIVES +PREVENTS +PREVIEW +PREVIEWED +PREVIEWING +PREVIEWS +PREVIOUS +PREVIOUSLY +PREY +PREYED +PREYING +PREYS +PRIAM +PRICE +PRICED +PRICELESS +PRICER +PRICERS +PRICES +PRICING +PRICK +PRICKED +PRICKING +PRICKLY +PRICKS +PRIDE +PRIDED +PRIDES +PRIDING +PRIEST +PRIESTLEY +PRIGGISH +PRIM +PRIMA +PRIMACY +PRIMAL +PRIMARIES +PRIMARILY +PRIMARY +PRIMATE +PRIME +PRIMED +PRIMENESS +PRIMER +PRIMERS +PRIMES +PRIMEVAL +PRIMING +PRIMITIVE +PRIMITIVELY +PRIMITIVENESS +PRIMITIVES +PRIMROSE +PRINCE +PRINCELY +PRINCES +PRINCESS +PRINCESSES +PRINCETON +PRINCIPAL +PRINCIPALITIES +PRINCIPALITY +PRINCIPALLY +PRINCIPALS +PRINCIPIA +PRINCIPLE +PRINCIPLED +PRINCIPLES +PRINT +PRINTABLE +PRINTABLY +PRINTED +PRINTER +PRINTERS +PRINTING +PRINTOUT +PRINTS +PRIOR +PRIORI +PRIORITIES +PRIORITY +PRIORY +PRISCILLA +PRISM +PRISMS +PRISON +PRISONER +PRISONERS +PRISONS +PRISTINE +PRITCHARD +PRIVACIES +PRIVACY +PRIVATE +PRIVATELY +PRIVATES +PRIVATION +PRIVATIONS +PRIVIES +PRIVILEGE +PRIVILEGED +PRIVILEGES +PRIVY +PRIZE +PRIZED +PRIZER +PRIZERS +PRIZES +PRIZEWINNING +PRIZING +PRO +PROBABILISTIC +PROBABILISTICALLY +PROBABILITIES +PROBABILITY +PROBABLE +PROBABLY +PROBATE +PROBATED +PROBATES +PROBATING +PROBATION +PROBATIVE +PROBE +PROBED +PROBES +PROBING +PROBINGS +PROBITY +PROBLEM +PROBLEMATIC +PROBLEMATICAL +PROBLEMATICALLY +PROBLEMS +PROCAINE +PROCEDURAL +PROCEDURALLY +PROCEDURE +PROCEDURES +PROCEED +PROCEEDED +PROCEEDING +PROCEEDINGS +PROCEEDS +PROCESS +PROCESSED +PROCESSES +PROCESSING +PROCESSION +PROCESSOR +PROCESSORS +PROCLAIM +PROCLAIMED +PROCLAIMER +PROCLAIMERS +PROCLAIMING +PROCLAIMS +PROCLAMATION +PROCLAMATIONS +PROCLIVITIES +PROCLIVITY +PROCOTOLS +PROCRASTINATE +PROCRASTINATED +PROCRASTINATES +PROCRASTINATING +PROCRASTINATION +PROCREATE +PROCRUSTEAN +PROCRUSTEANIZE +PROCRUSTEANIZES +PROCRUSTES +PROCTER +PROCURE +PROCURED +PROCUREMENT +PROCUREMENTS +PROCURER +PROCURERS +PROCURES +PROCURING +PROCYON +PROD +PRODIGAL +PRODIGALLY +PRODIGIOUS +PRODIGY +PRODUCE +PRODUCED +PRODUCER +PRODUCERS +PRODUCES +PRODUCIBLE +PRODUCING +PRODUCT +PRODUCTION +PRODUCTIONS +PRODUCTIVE +PRODUCTIVELY +PRODUCTIVITY +PRODUCTS +PROFANE +PROFANELY +PROFESS +PROFESSED +PROFESSES +PROFESSING +PROFESSION +PROFESSIONAL +PROFESSIONALISM +PROFESSIONALLY +PROFESSIONALS +PROFESSIONS +PROFESSOR +PROFESSORIAL +PROFESSORS +PROFFER +PROFFERED +PROFFERS +PROFICIENCY +PROFICIENT +PROFICIENTLY +PROFILE +PROFILED +PROFILES +PROFILING +PROFIT +PROFITABILITY +PROFITABLE +PROFITABLY +PROFITED +PROFITEER +PROFITEERS +PROFITING +PROFITS +PROFITTED +PROFLIGATE +PROFOUND +PROFOUNDEST +PROFOUNDLY +PROFUNDITY +PROFUSE +PROFUSION +PROGENITOR +PROGENY +PROGNOSIS +PROGNOSTICATE +PROGRAM +PROGRAMMABILITY +PROGRAMMABLE +PROGRAMMED +PROGRAMMER +PROGRAMMERS +PROGRAMMING +PROGRAMS +PROGRESS +PROGRESSED +PROGRESSES +PROGRESSING +PROGRESSION +PROGRESSIONS +PROGRESSIVE +PROGRESSIVELY +PROHIBIT +PROHIBITED +PROHIBITING +PROHIBITION +PROHIBITIONS +PROHIBITIVE +PROHIBITIVELY +PROHIBITORY +PROHIBITS +PROJECT +PROJECTED +PROJECTILE +PROJECTING +PROJECTION +PROJECTIONS +PROJECTIVE +PROJECTIVELY +PROJECTOR +PROJECTORS +PROJECTS +PROKOFIEFF +PROKOFIEV +PROLATE +PROLEGOMENA +PROLETARIAT +PROLIFERATE +PROLIFERATED +PROLIFERATES +PROLIFERATING +PROLIFERATION +PROLIFIC +PROLIX +PROLOG +PROLOGUE +PROLONG +PROLONGATE +PROLONGED +PROLONGING +PROLONGS +PROMENADE +PROMENADES +PROMETHEAN +PROMETHEUS +PROMINENCE +PROMINENT +PROMINENTLY +PROMISCUOUS +PROMISE +PROMISED +PROMISES +PROMISING +PROMONTORY +PROMOTE +PROMOTED +PROMOTER +PROMOTERS +PROMOTES +PROMOTING +PROMOTION +PROMOTIONAL +PROMOTIONS +PROMPT +PROMPTED +PROMPTER +PROMPTEST +PROMPTING +PROMPTINGS +PROMPTLY +PROMPTNESS +PROMPTS +PROMULGATE +PROMULGATED +PROMULGATES +PROMULGATING +PROMULGATION +PRONE +PRONENESS +PRONG +PRONGED +PRONGS +PRONOUN +PRONOUNCE +PRONOUNCEABLE +PRONOUNCED +PRONOUNCEMENT +PRONOUNCEMENTS +PRONOUNCES +PRONOUNCING +PRONOUNS +PRONUNCIATION +PRONUNCIATIONS +PROOF +PROOFREAD +PROOFREADER +PROOFS +PROP +PROPAGANDA +PROPAGANDIST +PROPAGATE +PROPAGATED +PROPAGATES +PROPAGATING +PROPAGATION +PROPAGATIONS +PROPANE +PROPEL +PROPELLANT +PROPELLED +PROPELLER +PROPELLERS +PROPELLING +PROPELS +PROPENSITY +PROPER +PROPERLY +PROPERNESS +PROPERTIED +PROPERTIES +PROPERTY +PROPHECIES +PROPHECY +PROPHESIED +PROPHESIER +PROPHESIES +PROPHESY +PROPHET +PROPHETIC +PROPHETS +PROPITIOUS +PROPONENT +PROPONENTS +PROPORTION +PROPORTIONAL +PROPORTIONALLY +PROPORTIONATELY +PROPORTIONED +PROPORTIONING +PROPORTIONMENT +PROPORTIONS +PROPOS +PROPOSAL +PROPOSALS +PROPOSE +PROPOSED +PROPOSER +PROPOSES +PROPOSING +PROPOSITION +PROPOSITIONAL +PROPOSITIONALLY +PROPOSITIONED +PROPOSITIONING +PROPOSITIONS +PROPOUND +PROPOUNDED +PROPOUNDING +PROPOUNDS +PROPRIETARY +PROPRIETOR +PROPRIETORS +PROPRIETY +PROPS +PROPULSION +PROPULSIONS +PRORATE +PRORATED +PRORATES +PROS +PROSCENIUM +PROSCRIBE +PROSCRIPTION +PROSE +PROSECUTE +PROSECUTED +PROSECUTES +PROSECUTING +PROSECUTION +PROSECUTIONS +PROSECUTOR +PROSELYTIZE +PROSELYTIZED +PROSELYTIZES +PROSELYTIZING +PROSERPINE +PROSODIC +PROSODICS +PROSPECT +PROSPECTED +PROSPECTING +PROSPECTION +PROSPECTIONS +PROSPECTIVE +PROSPECTIVELY +PROSPECTIVES +PROSPECTOR +PROSPECTORS +PROSPECTS +PROSPECTUS +PROSPER +PROSPERED +PROSPERING +PROSPERITY +PROSPEROUS +PROSPERS +PROSTATE +PROSTHETIC +PROSTITUTE +PROSTITUTION +PROSTRATE +PROSTRATION +PROTAGONIST +PROTEAN +PROTECT +PROTECTED +PROTECTING +PROTECTION +PROTECTIONS +PROTECTIVE +PROTECTIVELY +PROTECTIVENESS +PROTECTOR +PROTECTORATE +PROTECTORS +PROTECTS +PROTEGE +PROTEGES +PROTEIN +PROTEINS +PROTEST +PROTESTANT +PROTESTANTISM +PROTESTANTIZE +PROTESTANTIZES +PROTESTATION +PROTESTATIONS +PROTESTED +PROTESTING +PROTESTINGLY +PROTESTOR +PROTESTS +PROTISTA +PROTOCOL +PROTOCOLS +PROTON +PROTONS +PROTOPHYTA +PROTOPLASM +PROTOTYPE +PROTOTYPED +PROTOTYPES +PROTOTYPICAL +PROTOTYPICALLY +PROTOTYPING +PROTOZOA +PROTOZOAN +PROTRACT +PROTRUDE +PROTRUDED +PROTRUDES +PROTRUDING +PROTRUSION +PROTRUSIONS +PROTUBERANT +PROUD +PROUDER +PROUDEST +PROUDLY +PROUST +PROVABILITY +PROVABLE +PROVABLY +PROVE +PROVED +PROVEN +PROVENANCE +PROVENCE +PROVER +PROVERB +PROVERBIAL +PROVERBS +PROVERS +PROVES +PROVIDE +PROVIDED +PROVIDENCE +PROVIDENT +PROVIDER +PROVIDERS +PROVIDES +PROVIDING +PROVINCE +PROVINCES +PROVINCIAL +PROVING +PROVISION +PROVISIONAL +PROVISIONALLY +PROVISIONED +PROVISIONING +PROVISIONS +PROVISO +PROVOCATION +PROVOKE +PROVOKED +PROVOKES +PROVOST +PROW +PROWESS +PROWL +PROWLED +PROWLER +PROWLERS +PROWLING +PROWS +PROXIMAL +PROXIMATE +PROXIMITY +PROXMIRE +PROXY +PRUDENCE +PRUDENT +PRUDENTIAL +PRUDENTLY +PRUNE +PRUNED +PRUNER +PRUNERS +PRUNES +PRUNING +PRURIENT +PRUSSIA +PRUSSIAN +PRUSSIANIZATION +PRUSSIANIZATIONS +PRUSSIANIZE +PRUSSIANIZER +PRUSSIANIZERS +PRUSSIANIZES +PRY +PRYING +PSALM +PSALMS +PSEUDO +PSEUDOFILES +PSEUDOINSTRUCTION +PSEUDOINSTRUCTIONS +PSEUDONYM +PSEUDOPARALLELISM +PSILOCYBIN +PSYCH +PSYCHE +PSYCHEDELIC +PSYCHES +PSYCHIATRIC +PSYCHIATRIST +PSYCHIATRISTS +PSYCHIATRY +PSYCHIC +PSYCHO +PSYCHOANALYSIS +PSYCHOANALYST +PSYCHOANALYTIC +PSYCHOBIOLOGY +PSYCHOLOGICAL +PSYCHOLOGICALLY +PSYCHOLOGIST +PSYCHOLOGISTS +PSYCHOLOGY +PSYCHOPATH +PSYCHOPATHIC +PSYCHOPHYSIC +PSYCHOSES +PSYCHOSIS +PSYCHOSOCIAL +PSYCHOSOMATIC +PSYCHOTHERAPEUTIC +PSYCHOTHERAPIST +PSYCHOTHERAPY +PSYCHOTIC +PTOLEMAIC +PTOLEMAISTS +PTOLEMY +PUB +PUBERTY +PUBLIC +PUBLICATION +PUBLICATIONS +PUBLICITY +PUBLICIZE +PUBLICIZED +PUBLICIZES +PUBLICIZING +PUBLICLY +PUBLISH +PUBLISHED +PUBLISHER +PUBLISHERS +PUBLISHES +PUBLISHING +PUBS +PUCCINI +PUCKER +PUCKERED +PUCKERING +PUCKERS +PUDDING +PUDDINGS +PUDDLE +PUDDLES +PUDDLING +PUERTO +PUFF +PUFFED +PUFFIN +PUFFING +PUFFS +PUGH +PUKE +PULASKI +PULITZER +PULL +PULLED +PULLER +PULLEY +PULLEYS +PULLING +PULLINGS +PULLMAN +PULLMANIZE +PULLMANIZES +PULLMANS +PULLOVER +PULLS +PULMONARY +PULP +PULPING +PULPIT +PULPITS +PULSAR +PULSATE +PULSATION +PULSATIONS +PULSE +PULSED +PULSES +PULSING +PUMA +PUMICE +PUMMEL +PUMP +PUMPED +PUMPING +PUMPKIN +PUMPKINS +PUMPS +PUN +PUNCH +PUNCHED +PUNCHER +PUNCHES +PUNCHING +PUNCTUAL +PUNCTUALLY +PUNCTUATION +PUNCTURE +PUNCTURED +PUNCTURES +PUNCTURING +PUNDIT +PUNGENT +PUNIC +PUNISH +PUNISHABLE +PUNISHED +PUNISHES +PUNISHING +PUNISHMENT +PUNISHMENTS +PUNITIVE +PUNJAB +PUNJABI +PUNS +PUNT +PUNTED +PUNTING +PUNTS +PUNY +PUP +PUPA +PUPIL +PUPILS +PUPPET +PUPPETEER +PUPPETS +PUPPIES +PUPPY +PUPS +PURCELL +PURCHASE +PURCHASED +PURCHASER +PURCHASERS +PURCHASES +PURCHASING +PURDUE +PURE +PURELY +PURER +PUREST +PURGATORY +PURGE +PURGED +PURGES +PURGING +PURIFICATION +PURIFICATIONS +PURIFIED +PURIFIER +PURIFIERS +PURIFIES +PURIFY +PURIFYING +PURINA +PURIST +PURITAN +PURITANIC +PURITANIZE +PURITANIZER +PURITANIZERS +PURITANIZES +PURITY +PURPLE +PURPLER +PURPLEST +PURPORT +PURPORTED +PURPORTEDLY +PURPORTER +PURPORTERS +PURPORTING +PURPORTS +PURPOSE +PURPOSED +PURPOSEFUL +PURPOSEFULLY +PURPOSELY +PURPOSES +PURPOSIVE +PURR +PURRED +PURRING +PURRS +PURSE +PURSED +PURSER +PURSES +PURSUANT +PURSUE +PURSUED +PURSUER +PURSUERS +PURSUES +PURSUING +PURSUIT +PURSUITS +PURVEYOR +PURVIEW +PUS +PUSAN +PUSEY +PUSH +PUSHBUTTON +PUSHDOWN +PUSHED +PUSHER +PUSHERS +PUSHES +PUSHING +PUSS +PUSSY +PUSSYCAT +PUT +PUTNAM +PUTS +PUTT +PUTTER +PUTTERING +PUTTERS +PUTTING +PUTTY +PUZZLE +PUZZLED +PUZZLEMENT +PUZZLER +PUZZLERS +PUZZLES +PUZZLING +PUZZLINGS +PYGMALION +PYGMIES +PYGMY +PYLE +PYONGYANG +PYOTR +PYRAMID +PYRAMIDS +PYRE +PYREX +PYRRHIC +PYTHAGORAS +PYTHAGOREAN +PYTHAGOREANIZE +PYTHAGOREANIZES +PYTHAGOREANS +PYTHON +QATAR +QUA +QUACK +QUACKED +QUACKERY +QUACKS +QUAD +QUADRANGLE +QUADRANGULAR +QUADRANT +QUADRANTS +QUADRATIC +QUADRATICAL +QUADRATICALLY +QUADRATICS +QUADRATURE +QUADRATURES +QUADRENNIAL +QUADRILATERAL +QUADRILLION +QUADRUPLE +QUADRUPLED +QUADRUPLES +QUADRUPLING +QUADRUPOLE +QUAFF +QUAGMIRE +QUAGMIRES +QUAHOG +QUAIL +QUAILS +QUAINT +QUAINTLY +QUAINTNESS +QUAKE +QUAKED +QUAKER +QUAKERESS +QUAKERIZATION +QUAKERIZATIONS +QUAKERIZE +QUAKERIZES +QUAKERS +QUAKES +QUAKING +QUALIFICATION +QUALIFICATIONS +QUALIFIED +QUALIFIER +QUALIFIERS +QUALIFIES +QUALIFY +QUALIFYING +QUALITATIVE +QUALITATIVELY +QUALITIES +QUALITY +QUALM +QUANDARIES +QUANDARY +QUANTA +QUANTICO +QUANTIFIABLE +QUANTIFICATION +QUANTIFICATIONS +QUANTIFIED +QUANTIFIER +QUANTIFIERS +QUANTIFIES +QUANTIFY +QUANTIFYING +QUANTILE +QUANTITATIVE +QUANTITATIVELY +QUANTITIES +QUANTITY +QUANTIZATION +QUANTIZE +QUANTIZED +QUANTIZES +QUANTIZING +QUANTUM +QUARANTINE +QUARANTINES +QUARANTINING +QUARK +QUARREL +QUARRELED +QUARRELING +QUARRELS +QUARRELSOME +QUARRIES +QUARRY +QUART +QUARTER +QUARTERBACK +QUARTERED +QUARTERING +QUARTERLY +QUARTERMASTER +QUARTERS +QUARTET +QUARTETS +QUARTILE +QUARTS +QUARTZ +QUARTZITE +QUASAR +QUASH +QUASHED +QUASHES +QUASHING +QUASI +QUASIMODO +QUATERNARY +QUAVER +QUAVERED +QUAVERING +QUAVERS +QUAY +QUEASY +QUEBEC +QUEEN +QUEENLY +QUEENS +QUEENSLAND +QUEER +QUEERER +QUEEREST +QUEERLY +QUEERNESS +QUELL +QUELLING +QUENCH +QUENCHED +QUENCHES +QUENCHING +QUERIED +QUERIES +QUERY +QUERYING +QUEST +QUESTED +QUESTER +QUESTERS +QUESTING +QUESTION +QUESTIONABLE +QUESTIONABLY +QUESTIONED +QUESTIONER +QUESTIONERS +QUESTIONING +QUESTIONINGLY +QUESTIONINGS +QUESTIONNAIRE +QUESTIONNAIRES +QUESTIONS +QUESTS +QUEUE +QUEUED +QUEUEING +QUEUER +QUEUERS +QUEUES +QUEUING +QUEZON +QUIBBLE +QUICHUA +QUICK +QUICKEN +QUICKENED +QUICKENING +QUICKENS +QUICKER +QUICKEST +QUICKIE +QUICKLIME +QUICKLY +QUICKNESS +QUICKSAND +QUICKSILVER +QUIESCENT +QUIET +QUIETED +QUIETER +QUIETEST +QUIETING +QUIETLY +QUIETNESS +QUIETS +QUIETUDE +QUILL +QUILT +QUILTED +QUILTING +QUILTS +QUINCE +QUININE +QUINN +QUINT +QUINTET +QUINTILLION +QUIP +QUIRINAL +QUIRK +QUIRKY +QUIT +QUITE +QUITO +QUITS +QUITTER +QUITTERS +QUITTING +QUIVER +QUIVERED +QUIVERING +QUIVERS +QUIXOTE +QUIXOTIC +QUIXOTISM +QUIZ +QUIZZED +QUIZZES +QUIZZICAL +QUIZZING +QUO +QUONSET +QUORUM +QUOTA +QUOTAS +QUOTATION +QUOTATIONS +QUOTE +QUOTED +QUOTES +QUOTH +QUOTIENT +QUOTIENTS +QUOTING +RABAT +RABBI +RABBIT +RABBITS +RABBLE +RABID +RABIES +RABIN +RACCOON +RACCOONS +RACE +RACED +RACER +RACERS +RACES +RACETRACK +RACHEL +RACHMANINOFF +RACIAL +RACIALLY +RACINE +RACING +RACK +RACKED +RACKET +RACKETEER +RACKETEERING +RACKETEERS +RACKETS +RACKING +RACKS +RADAR +RADARS +RADCLIFFE +RADIAL +RADIALLY +RADIAN +RADIANCE +RADIANT +RADIANTLY +RADIATE +RADIATED +RADIATES +RADIATING +RADIATION +RADIATIONS +RADIATOR +RADIATORS +RADICAL +RADICALLY +RADICALS +RADICES +RADII +RADIO +RADIOACTIVE +RADIOASTRONOMY +RADIOED +RADIOGRAPHY +RADIOING +RADIOLOGY +RADIOS +RADISH +RADISHES +RADIUM +RADIUS +RADIX +RADON +RAE +RAFAEL +RAFFERTY +RAFT +RAFTER +RAFTERS +RAFTS +RAG +RAGE +RAGED +RAGES +RAGGED +RAGGEDLY +RAGGEDNESS +RAGING +RAGS +RAGUSAN +RAGWEED +RAID +RAIDED +RAIDER +RAIDERS +RAIDING +RAIDS +RAIL +RAILED +RAILER +RAILERS +RAILING +RAILROAD +RAILROADED +RAILROADER +RAILROADERS +RAILROADING +RAILROADS +RAILS +RAILWAY +RAILWAYS +RAIMENT +RAIN +RAINBOW +RAINCOAT +RAINCOATS +RAINDROP +RAINDROPS +RAINED +RAINFALL +RAINIER +RAINIEST +RAINING +RAINS +RAINSTORM +RAINY +RAISE +RAISED +RAISER +RAISERS +RAISES +RAISIN +RAISING +RAKE +RAKED +RAKES +RAKING +RALEIGH +RALLIED +RALLIES +RALLY +RALLYING +RALPH +RALSTON +RAM +RAMADA +RAMAN +RAMBLE +RAMBLER +RAMBLES +RAMBLING +RAMBLINGS +RAMIFICATION +RAMIFICATIONS +RAMIREZ +RAMO +RAMONA +RAMP +RAMPAGE +RAMPANT +RAMPART +RAMPS +RAMROD +RAMS +RAMSEY +RAN +RANCH +RANCHED +RANCHER +RANCHERS +RANCHES +RANCHING +RANCID +RAND +RANDALL +RANDOLPH +RANDOM +RANDOMIZATION +RANDOMIZE +RANDOMIZED +RANDOMIZES +RANDOMLY +RANDOMNESS +RANDY +RANG +RANGE +RANGED +RANGELAND +RANGER +RANGERS +RANGES +RANGING +RANGOON +RANGY +RANIER +RANK +RANKED +RANKER +RANKERS +RANKEST +RANKIN +RANKINE +RANKING +RANKINGS +RANKLE +RANKLY +RANKNESS +RANKS +RANSACK +RANSACKED +RANSACKING +RANSACKS +RANSOM +RANSOMER +RANSOMING +RANSOMS +RANT +RANTED +RANTER +RANTERS +RANTING +RANTS +RAOUL +RAP +RAPACIOUS +RAPE +RAPED +RAPER +RAPES +RAPHAEL +RAPID +RAPIDITY +RAPIDLY +RAPIDS +RAPIER +RAPING +RAPPORT +RAPPROCHEMENT +RAPS +RAPT +RAPTLY +RAPTURE +RAPTURES +RAPTUROUS +RAPUNZEL +RARE +RARELY +RARENESS +RARER +RAREST +RARITAN +RARITY +RASCAL +RASCALLY +RASCALS +RASH +RASHER +RASHLY +RASHNESS +RASMUSSEN +RASP +RASPBERRY +RASPED +RASPING +RASPS +RASTER +RASTUS +RAT +RATE +RATED +RATER +RATERS +RATES +RATFOR +RATHER +RATIFICATION +RATIFIED +RATIFIES +RATIFY +RATIFYING +RATING +RATINGS +RATIO +RATION +RATIONAL +RATIONALE +RATIONALES +RATIONALITIES +RATIONALITY +RATIONALIZATION +RATIONALIZATIONS +RATIONALIZE +RATIONALIZED +RATIONALIZES +RATIONALIZING +RATIONALLY +RATIONALS +RATIONING +RATIONS +RATIOS +RATS +RATTLE +RATTLED +RATTLER +RATTLERS +RATTLES +RATTLESNAKE +RATTLESNAKES +RATTLING +RAUCOUS +RAUL +RAVAGE +RAVAGED +RAVAGER +RAVAGERS +RAVAGES +RAVAGING +RAVE +RAVED +RAVEN +RAVENING +RAVENOUS +RAVENOUSLY +RAVENS +RAVES +RAVINE +RAVINES +RAVING +RAVINGS +RAW +RAWER +RAWEST +RAWLINGS +RAWLINS +RAWLINSON +RAWLY +RAWNESS +RAWSON +RAY +RAYBURN +RAYLEIGH +RAYMOND +RAYMONDVILLE +RAYS +RAYTHEON +RAZE +RAZOR +RAZORS +REABBREVIATE +REABBREVIATED +REABBREVIATES +REABBREVIATING +REACH +REACHABILITY +REACHABLE +REACHABLY +REACHED +REACHER +REACHES +REACHING +REACQUIRED +REACT +REACTED +REACTING +REACTION +REACTIONARIES +REACTIONARY +REACTIONS +REACTIVATE +REACTIVATED +REACTIVATES +REACTIVATING +REACTIVATION +REACTIVE +REACTIVELY +REACTIVITY +REACTOR +REACTORS +REACTS +READ +READABILITY +READABLE +READER +READERS +READIED +READIER +READIES +READIEST +READILY +READINESS +READING +READINGS +READJUSTED +READOUT +READOUTS +READS +READY +READYING +REAGAN +REAL +REALEST +REALIGN +REALIGNED +REALIGNING +REALIGNS +REALISM +REALIST +REALISTIC +REALISTICALLY +REALISTS +REALITIES +REALITY +REALIZABLE +REALIZABLY +REALIZATION +REALIZATIONS +REALIZE +REALIZED +REALIZES +REALIZING +REALLOCATE +REALLY +REALM +REALMS +REALNESS +REALS +REALTOR +REAM +REANALYZE +REANALYZES +REANALYZING +REAP +REAPED +REAPER +REAPING +REAPPEAR +REAPPEARED +REAPPEARING +REAPPEARS +REAPPRAISAL +REAPPRAISALS +REAPS +REAR +REARED +REARING +REARRANGE +REARRANGEABLE +REARRANGED +REARRANGEMENT +REARRANGEMENTS +REARRANGES +REARRANGING +REARREST +REARRESTED +REARS +REASON +REASONABLE +REASONABLENESS +REASONABLY +REASONED +REASONER +REASONING +REASONINGS +REASONS +REASSEMBLE +REASSEMBLED +REASSEMBLES +REASSEMBLING +REASSEMBLY +REASSESSMENT +REASSESSMENTS +REASSIGN +REASSIGNED +REASSIGNING +REASSIGNMENT +REASSIGNMENTS +REASSIGNS +REASSURE +REASSURED +REASSURES +REASSURING +REAWAKEN +REAWAKENED +REAWAKENING +REAWAKENS +REBATE +REBATES +REBECCA +REBEL +REBELLED +REBELLING +REBELLION +REBELLIONS +REBELLIOUS +REBELLIOUSLY +REBELLIOUSNESS +REBELS +REBIND +REBINDING +REBINDS +REBOOT +REBOOTED +REBOOTING +REBOOTS +REBOUND +REBOUNDED +REBOUNDING +REBOUNDS +REBROADCAST +REBROADCASTING +REBROADCASTS +REBUFF +REBUFFED +REBUILD +REBUILDING +REBUILDS +REBUILT +REBUKE +REBUKED +REBUKES +REBUKING +REBUTTAL +REBUTTED +REBUTTING +RECALCITRANT +RECALCULATE +RECALCULATED +RECALCULATES +RECALCULATING +RECALCULATION +RECALCULATIONS +RECALIBRATE +RECALIBRATED +RECALIBRATES +RECALIBRATING +RECALL +RECALLED +RECALLING +RECALLS +RECANT +RECAPITULATE +RECAPITULATED +RECAPITULATES +RECAPITULATION +RECAPTURE +RECAPTURED +RECAPTURES +RECAPTURING +RECAST +RECASTING +RECASTS +RECEDE +RECEDED +RECEDES +RECEDING +RECEIPT +RECEIPTS +RECEIVABLE +RECEIVE +RECEIVED +RECEIVER +RECEIVERS +RECEIVES +RECEIVING +RECENT +RECENTLY +RECENTNESS +RECEPTACLE +RECEPTACLES +RECEPTION +RECEPTIONIST +RECEPTIONS +RECEPTIVE +RECEPTIVELY +RECEPTIVENESS +RECEPTIVITY +RECEPTOR +RECESS +RECESSED +RECESSES +RECESSION +RECESSIVE +RECIFE +RECIPE +RECIPES +RECIPIENT +RECIPIENTS +RECIPROCAL +RECIPROCALLY +RECIPROCATE +RECIPROCATED +RECIPROCATES +RECIPROCATING +RECIPROCATION +RECIPROCITY +RECIRCULATE +RECIRCULATED +RECIRCULATES +RECIRCULATING +RECITAL +RECITALS +RECITATION +RECITATIONS +RECITE +RECITED +RECITER +RECITES +RECITING +RECKLESS +RECKLESSLY +RECKLESSNESS +RECKON +RECKONED +RECKONER +RECKONING +RECKONINGS +RECKONS +RECLAIM +RECLAIMABLE +RECLAIMED +RECLAIMER +RECLAIMERS +RECLAIMING +RECLAIMS +RECLAMATION +RECLAMATIONS +RECLASSIFICATION +RECLASSIFIED +RECLASSIFIES +RECLASSIFY +RECLASSIFYING +RECLINE +RECLINING +RECODE +RECODED +RECODES +RECODING +RECOGNITION +RECOGNITIONS +RECOGNIZABILITY +RECOGNIZABLE +RECOGNIZABLY +RECOGNIZE +RECOGNIZED +RECOGNIZER +RECOGNIZERS +RECOGNIZES +RECOGNIZING +RECOIL +RECOILED +RECOILING +RECOILS +RECOLLECT +RECOLLECTED +RECOLLECTING +RECOLLECTION +RECOLLECTIONS +RECOMBINATION +RECOMBINE +RECOMBINED +RECOMBINES +RECOMBINING +RECOMMEND +RECOMMENDATION +RECOMMENDATIONS +RECOMMENDED +RECOMMENDER +RECOMMENDING +RECOMMENDS +RECOMPENSE +RECOMPILE +RECOMPILED +RECOMPILES +RECOMPILING +RECOMPUTE +RECOMPUTED +RECOMPUTES +RECOMPUTING +RECONCILE +RECONCILED +RECONCILER +RECONCILES +RECONCILIATION +RECONCILING +RECONFIGURABLE +RECONFIGURATION +RECONFIGURATIONS +RECONFIGURE +RECONFIGURED +RECONFIGURER +RECONFIGURES +RECONFIGURING +RECONNECT +RECONNECTED +RECONNECTING +RECONNECTION +RECONNECTS +RECONSIDER +RECONSIDERATION +RECONSIDERED +RECONSIDERING +RECONSIDERS +RECONSTITUTED +RECONSTRUCT +RECONSTRUCTED +RECONSTRUCTING +RECONSTRUCTION +RECONSTRUCTS +RECONVERTED +RECONVERTS +RECORD +RECORDED +RECORDER +RECORDERS +RECORDING +RECORDINGS +RECORDS +RECOUNT +RECOUNTED +RECOUNTING +RECOUNTS +RECOURSE +RECOVER +RECOVERABLE +RECOVERED +RECOVERIES +RECOVERING +RECOVERS +RECOVERY +RECREATE +RECREATED +RECREATES +RECREATING +RECREATION +RECREATIONAL +RECREATIONS +RECREATIVE +RECRUIT +RECRUITED +RECRUITER +RECRUITING +RECRUITS +RECTA +RECTANGLE +RECTANGLES +RECTANGULAR +RECTIFY +RECTOR +RECTORS +RECTUM +RECTUMS +RECUPERATE +RECUR +RECURRENCE +RECURRENCES +RECURRENT +RECURRENTLY +RECURRING +RECURS +RECURSE +RECURSED +RECURSES +RECURSING +RECURSION +RECURSIONS +RECURSIVE +RECURSIVELY +RECYCLABLE +RECYCLE +RECYCLED +RECYCLES +RECYCLING +RED +REDBREAST +REDCOAT +REDDEN +REDDENED +REDDER +REDDEST +REDDISH +REDDISHNESS +REDECLARE +REDECLARED +REDECLARES +REDECLARING +REDEEM +REDEEMED +REDEEMER +REDEEMERS +REDEEMING +REDEEMS +REDEFINE +REDEFINED +REDEFINES +REDEFINING +REDEFINITION +REDEFINITIONS +REDEMPTION +REDESIGN +REDESIGNED +REDESIGNING +REDESIGNS +REDEVELOPMENT +REDFORD +REDHEAD +REDHOOK +REDIRECT +REDIRECTED +REDIRECTING +REDIRECTION +REDIRECTIONS +REDISPLAY +REDISPLAYED +REDISPLAYING +REDISPLAYS +REDISTRIBUTE +REDISTRIBUTED +REDISTRIBUTES +REDISTRIBUTING +REDLY +REDMOND +REDNECK +REDNESS +REDO +REDONE +REDOUBLE +REDOUBLED +REDRAW +REDRAWN +REDRESS +REDRESSED +REDRESSES +REDRESSING +REDS +REDSTONE +REDUCE +REDUCED +REDUCER +REDUCERS +REDUCES +REDUCIBILITY +REDUCIBLE +REDUCIBLY +REDUCING +REDUCTION +REDUCTIONS +REDUNDANCIES +REDUNDANCY +REDUNDANT +REDUNDANTLY +REDWOOD +REED +REEDS +REEDUCATION +REEDVILLE +REEF +REEFER +REEFS +REEL +REELECT +REELECTED +REELECTING +REELECTS +REELED +REELER +REELING +REELS +REEMPHASIZE +REEMPHASIZED +REEMPHASIZES +REEMPHASIZING +REENABLED +REENFORCEMENT +REENTER +REENTERED +REENTERING +REENTERS +REENTRANT +REESE +REESTABLISH +REESTABLISHED +REESTABLISHES +REESTABLISHING +REEVALUATE +REEVALUATED +REEVALUATES +REEVALUATING +REEVALUATION +REEVES +REEXAMINE +REEXAMINED +REEXAMINES +REEXAMINING +REEXECUTED +REFER +REFEREE +REFEREED +REFEREEING +REFEREES +REFERENCE +REFERENCED +REFERENCER +REFERENCES +REFERENCING +REFERENDA +REFERENDUM +REFERENDUMS +REFERENT +REFERENTIAL +REFERENTIALITY +REFERENTIALLY +REFERENTS +REFERRAL +REFERRALS +REFERRED +REFERRING +REFERS +REFILL +REFILLABLE +REFILLED +REFILLING +REFILLS +REFINE +REFINED +REFINEMENT +REFINEMENTS +REFINER +REFINERY +REFINES +REFINING +REFLECT +REFLECTED +REFLECTING +REFLECTION +REFLECTIONS +REFLECTIVE +REFLECTIVELY +REFLECTIVITY +REFLECTOR +REFLECTORS +REFLECTS +REFLEX +REFLEXES +REFLEXIVE +REFLEXIVELY +REFLEXIVENESS +REFLEXIVITY +REFORESTATION +REFORM +REFORMABLE +REFORMAT +REFORMATION +REFORMATORY +REFORMATS +REFORMATTED +REFORMATTING +REFORMED +REFORMER +REFORMERS +REFORMING +REFORMS +REFORMULATE +REFORMULATED +REFORMULATES +REFORMULATING +REFORMULATION +REFRACT +REFRACTED +REFRACTION +REFRACTORY +REFRAGMENT +REFRAIN +REFRAINED +REFRAINING +REFRAINS +REFRESH +REFRESHED +REFRESHER +REFRESHERS +REFRESHES +REFRESHING +REFRESHINGLY +REFRESHMENT +REFRESHMENTS +REFRIGERATE +REFRIGERATOR +REFRIGERATORS +REFUEL +REFUELED +REFUELING +REFUELS +REFUGE +REFUGEE +REFUGEES +REFUSAL +REFUSE +REFUSED +REFUSES +REFUSING +REFUTABLE +REFUTATION +REFUTE +REFUTED +REFUTER +REFUTES +REFUTING +REGAIN +REGAINED +REGAINING +REGAINS +REGAL +REGALED +REGALLY +REGARD +REGARDED +REGARDING +REGARDLESS +REGARDS +REGATTA +REGENERATE +REGENERATED +REGENERATES +REGENERATING +REGENERATION +REGENERATIVE +REGENERATOR +REGENERATORS +REGENT +REGENTS +REGIME +REGIMEN +REGIMENT +REGIMENTATION +REGIMENTED +REGIMENTS +REGIMES +REGINA +REGINALD +REGION +REGIONAL +REGIONALLY +REGIONS +REGIS +REGISTER +REGISTERED +REGISTERING +REGISTERS +REGISTRAR +REGISTRATION +REGISTRATIONS +REGISTRY +REGRESS +REGRESSED +REGRESSES +REGRESSING +REGRESSION +REGRESSIONS +REGRESSIVE +REGRET +REGRETFUL +REGRETFULLY +REGRETS +REGRETTABLE +REGRETTABLY +REGRETTED +REGRETTING +REGROUP +REGROUPED +REGROUPING +REGULAR +REGULARITIES +REGULARITY +REGULARLY +REGULARS +REGULATE +REGULATED +REGULATES +REGULATING +REGULATION +REGULATIONS +REGULATIVE +REGULATOR +REGULATORS +REGULATORY +REGULUS +REHABILITATE +REHEARSAL +REHEARSALS +REHEARSE +REHEARSED +REHEARSER +REHEARSES +REHEARSING +REICH +REICHENBERG +REICHSTAG +REID +REIGN +REIGNED +REIGNING +REIGNS +REILLY +REIMBURSABLE +REIMBURSE +REIMBURSED +REIMBURSEMENT +REIMBURSEMENTS +REIN +REINCARNATE +REINCARNATED +REINCARNATION +REINDEER +REINED +REINFORCE +REINFORCED +REINFORCEMENT +REINFORCEMENTS +REINFORCER +REINFORCES +REINFORCING +REINHARD +REINHARDT +REINHOLD +REINITIALIZE +REINITIALIZED +REINITIALIZING +REINS +REINSERT +REINSERTED +REINSERTING +REINSERTS +REINSTATE +REINSTATED +REINSTATEMENT +REINSTATES +REINSTATING +REINTERPRET +REINTERPRETED +REINTERPRETING +REINTERPRETS +REINTRODUCE +REINTRODUCED +REINTRODUCES +REINTRODUCING +REINVENT +REINVENTED +REINVENTING +REINVENTS +REITERATE +REITERATED +REITERATES +REITERATING +REITERATION +REJECT +REJECTED +REJECTING +REJECTION +REJECTIONS +REJECTOR +REJECTORS +REJECTS +REJOICE +REJOICED +REJOICER +REJOICES +REJOICING +REJOIN +REJOINDER +REJOINED +REJOINING +REJOINS +RELABEL +RELABELED +RELABELING +RELABELLED +RELABELLING +RELABELS +RELAPSE +RELATE +RELATED +RELATER +RELATES +RELATING +RELATION +RELATIONAL +RELATIONALLY +RELATIONS +RELATIONSHIP +RELATIONSHIPS +RELATIVE +RELATIVELY +RELATIVENESS +RELATIVES +RELATIVISM +RELATIVISTIC +RELATIVISTICALLY +RELATIVITY +RELAX +RELAXATION +RELAXATIONS +RELAXED +RELAXER +RELAXES +RELAXING +RELAY +RELAYED +RELAYING +RELAYS +RELEASE +RELEASED +RELEASES +RELEASING +RELEGATE +RELEGATED +RELEGATES +RELEGATING +RELENT +RELENTED +RELENTING +RELENTLESS +RELENTLESSLY +RELENTLESSNESS +RELENTS +RELEVANCE +RELEVANCES +RELEVANT +RELEVANTLY +RELIABILITY +RELIABLE +RELIABLY +RELIANCE +RELIANT +RELIC +RELICS +RELIED +RELIEF +RELIES +RELIEVE +RELIEVED +RELIEVER +RELIEVERS +RELIEVES +RELIEVING +RELIGION +RELIGIONS +RELIGIOUS +RELIGIOUSLY +RELIGIOUSNESS +RELINK +RELINQUISH +RELINQUISHED +RELINQUISHES +RELINQUISHING +RELISH +RELISHED +RELISHES +RELISHING +RELIVE +RELIVES +RELIVING +RELOAD +RELOADED +RELOADER +RELOADING +RELOADS +RELOCATABLE +RELOCATE +RELOCATED +RELOCATES +RELOCATING +RELOCATION +RELOCATIONS +RELUCTANCE +RELUCTANT +RELUCTANTLY +RELY +RELYING +REMAIN +REMAINDER +REMAINDERS +REMAINED +REMAINING +REMAINS +REMARK +REMARKABLE +REMARKABLENESS +REMARKABLY +REMARKED +REMARKING +REMARKS +REMBRANDT +REMEDIAL +REMEDIED +REMEDIES +REMEDY +REMEDYING +REMEMBER +REMEMBERED +REMEMBERING +REMEMBERS +REMEMBRANCE +REMEMBRANCES +REMIND +REMINDED +REMINDER +REMINDERS +REMINDING +REMINDS +REMINGTON +REMINISCENCE +REMINISCENCES +REMINISCENT +REMINISCENTLY +REMISS +REMISSION +REMIT +REMITTANCE +REMNANT +REMNANTS +REMODEL +REMODELED +REMODELING +REMODELS +REMONSTRATE +REMONSTRATED +REMONSTRATES +REMONSTRATING +REMONSTRATION +REMONSTRATIVE +REMORSE +REMORSEFUL +REMOTE +REMOTELY +REMOTENESS +REMOTEST +REMOVABLE +REMOVAL +REMOVALS +REMOVE +REMOVED +REMOVER +REMOVES +REMOVING +REMUNERATE +REMUNERATION +REMUS +REMY +RENA +RENAISSANCE +RENAL +RENAME +RENAMED +RENAMES +RENAMING +RENAULT +RENAULTS +REND +RENDER +RENDERED +RENDERING +RENDERINGS +RENDERS +RENDEZVOUS +RENDING +RENDITION +RENDITIONS +RENDS +RENE +RENEE +RENEGADE +RENEGOTIABLE +RENEW +RENEWABLE +RENEWAL +RENEWED +RENEWER +RENEWING +RENEWS +RENO +RENOIR +RENOUNCE +RENOUNCES +RENOUNCING +RENOVATE +RENOVATED +RENOVATION +RENOWN +RENOWNED +RENSSELAER +RENT +RENTAL +RENTALS +RENTED +RENTING +RENTS +RENUMBER +RENUMBERING +RENUMBERS +RENUNCIATE +RENUNCIATION +RENVILLE +REOCCUR +REOPEN +REOPENED +REOPENING +REOPENS +REORDER +REORDERED +REORDERING +REORDERS +REORGANIZATION +REORGANIZATIONS +REORGANIZE +REORGANIZED +REORGANIZES +REORGANIZING +REPACKAGE +REPAID +REPAIR +REPAIRED +REPAIRER +REPAIRING +REPAIRMAN +REPAIRMEN +REPAIRS +REPARATION +REPARATIONS +REPARTEE +REPARTITION +REPAST +REPASTS +REPAY +REPAYING +REPAYS +REPEAL +REPEALED +REPEALER +REPEALING +REPEALS +REPEAT +REPEATABLE +REPEATED +REPEATEDLY +REPEATER +REPEATERS +REPEATING +REPEATS +REPEL +REPELLED +REPELLENT +REPELS +REPENT +REPENTANCE +REPENTED +REPENTING +REPENTS +REPERCUSSION +REPERCUSSIONS +REPERTOIRE +REPERTORY +REPETITION +REPETITIONS +REPETITIOUS +REPETITIVE +REPETITIVELY +REPETITIVENESS +REPHRASE +REPHRASED +REPHRASES +REPHRASING +REPINE +REPLACE +REPLACEABLE +REPLACED +REPLACEMENT +REPLACEMENTS +REPLACER +REPLACES +REPLACING +REPLAY +REPLAYED +REPLAYING +REPLAYS +REPLENISH +REPLENISHED +REPLENISHES +REPLENISHING +REPLETE +REPLETENESS +REPLETION +REPLICA +REPLICAS +REPLICATE +REPLICATED +REPLICATES +REPLICATING +REPLICATION +REPLICATIONS +REPLIED +REPLIES +REPLY +REPLYING +REPORT +REPORTED +REPORTEDLY +REPORTER +REPORTERS +REPORTING +REPORTS +REPOSE +REPOSED +REPOSES +REPOSING +REPOSITION +REPOSITIONED +REPOSITIONING +REPOSITIONS +REPOSITORIES +REPOSITORY +REPREHENSIBLE +REPRESENT +REPRESENTABLE +REPRESENTABLY +REPRESENTATION +REPRESENTATIONAL +REPRESENTATIONALLY +REPRESENTATIONS +REPRESENTATIVE +REPRESENTATIVELY +REPRESENTATIVENESS +REPRESENTATIVES +REPRESENTED +REPRESENTING +REPRESENTS +REPRESS +REPRESSED +REPRESSES +REPRESSING +REPRESSION +REPRESSIONS +REPRESSIVE +REPRIEVE +REPRIEVED +REPRIEVES +REPRIEVING +REPRIMAND +REPRINT +REPRINTED +REPRINTING +REPRINTS +REPRISAL +REPRISALS +REPROACH +REPROACHED +REPROACHES +REPROACHING +REPROBATE +REPRODUCE +REPRODUCED +REPRODUCER +REPRODUCERS +REPRODUCES +REPRODUCIBILITIES +REPRODUCIBILITY +REPRODUCIBLE +REPRODUCIBLY +REPRODUCING +REPRODUCTION +REPRODUCTIONS +REPROGRAM +REPROGRAMMED +REPROGRAMMING +REPROGRAMS +REPROOF +REPROVE +REPROVER +REPTILE +REPTILES +REPTILIAN +REPUBLIC +REPUBLICAN +REPUBLICANS +REPUBLICS +REPUDIATE +REPUDIATED +REPUDIATES +REPUDIATING +REPUDIATION +REPUDIATIONS +REPUGNANT +REPULSE +REPULSED +REPULSES +REPULSING +REPULSION +REPULSIONS +REPULSIVE +REPUTABLE +REPUTABLY +REPUTATION +REPUTATIONS +REPUTE +REPUTED +REPUTEDLY +REPUTES +REQUEST +REQUESTED +REQUESTER +REQUESTERS +REQUESTING +REQUESTS +REQUIRE +REQUIRED +REQUIREMENT +REQUIREMENTS +REQUIRES +REQUIRING +REQUISITE +REQUISITES +REQUISITION +REQUISITIONED +REQUISITIONING +REQUISITIONS +REREAD +REREGISTER +REROUTE +REROUTED +REROUTES +REROUTING +RERUN +RERUNS +RESCHEDULE +RESCIND +RESCUE +RESCUED +RESCUER +RESCUERS +RESCUES +RESCUING +RESEARCH +RESEARCHED +RESEARCHER +RESEARCHERS +RESEARCHES +RESEARCHING +RESELECT +RESELECTED +RESELECTING +RESELECTS +RESELL +RESELLING +RESEMBLANCE +RESEMBLANCES +RESEMBLE +RESEMBLED +RESEMBLES +RESEMBLING +RESENT +RESENTED +RESENTFUL +RESENTFULLY +RESENTING +RESENTMENT +RESENTS +RESERPINE +RESERVATION +RESERVATIONS +RESERVE +RESERVED +RESERVER +RESERVES +RESERVING +RESERVOIR +RESERVOIRS +RESET +RESETS +RESETTING +RESETTINGS +RESIDE +RESIDED +RESIDENCE +RESIDENCES +RESIDENT +RESIDENTIAL +RESIDENTIALLY +RESIDENTS +RESIDES +RESIDING +RESIDUAL +RESIDUE +RESIDUES +RESIGN +RESIGNATION +RESIGNATIONS +RESIGNED +RESIGNING +RESIGNS +RESILIENT +RESIN +RESINS +RESIST +RESISTABLE +RESISTANCE +RESISTANCES +RESISTANT +RESISTANTLY +RESISTED +RESISTIBLE +RESISTING +RESISTIVE +RESISTIVITY +RESISTOR +RESISTORS +RESISTS +RESOLUTE +RESOLUTELY +RESOLUTENESS +RESOLUTION +RESOLUTIONS +RESOLVABLE +RESOLVE +RESOLVED +RESOLVER +RESOLVERS +RESOLVES +RESOLVING +RESONANCE +RESONANCES +RESONANT +RESONATE +RESORT +RESORTED +RESORTING +RESORTS +RESOUND +RESOUNDING +RESOUNDS +RESOURCE +RESOURCEFUL +RESOURCEFULLY +RESOURCEFULNESS +RESOURCES +RESPECT +RESPECTABILITY +RESPECTABLE +RESPECTABLY +RESPECTED +RESPECTER +RESPECTFUL +RESPECTFULLY +RESPECTFULNESS +RESPECTING +RESPECTIVE +RESPECTIVELY +RESPECTS +RESPIRATION +RESPIRATOR +RESPIRATORY +RESPITE +RESPLENDENT +RESPLENDENTLY +RESPOND +RESPONDED +RESPONDENT +RESPONDENTS +RESPONDER +RESPONDING +RESPONDS +RESPONSE +RESPONSES +RESPONSIBILITIES +RESPONSIBILITY +RESPONSIBLE +RESPONSIBLENESS +RESPONSIBLY +RESPONSIVE +RESPONSIVELY +RESPONSIVENESS +REST +RESTART +RESTARTED +RESTARTING +RESTARTS +RESTATE +RESTATED +RESTATEMENT +RESTATES +RESTATING +RESTAURANT +RESTAURANTS +RESTAURATEUR +RESTED +RESTFUL +RESTFULLY +RESTFULNESS +RESTING +RESTITUTION +RESTIVE +RESTLESS +RESTLESSLY +RESTLESSNESS +RESTORATION +RESTORATIONS +RESTORE +RESTORED +RESTORER +RESTORERS +RESTORES +RESTORING +RESTRAIN +RESTRAINED +RESTRAINER +RESTRAINERS +RESTRAINING +RESTRAINS +RESTRAINT +RESTRAINTS +RESTRICT +RESTRICTED +RESTRICTING +RESTRICTION +RESTRICTIONS +RESTRICTIVE +RESTRICTIVELY +RESTRICTS +RESTROOM +RESTRUCTURE +RESTRUCTURED +RESTRUCTURES +RESTRUCTURING +RESTS +RESULT +RESULTANT +RESULTANTLY +RESULTANTS +RESULTED +RESULTING +RESULTS +RESUMABLE +RESUME +RESUMED +RESUMES +RESUMING +RESUMPTION +RESUMPTIONS +RESURGENT +RESURRECT +RESURRECTED +RESURRECTING +RESURRECTION +RESURRECTIONS +RESURRECTOR +RESURRECTORS +RESURRECTS +RESUSCITATE +RESYNCHRONIZATION +RESYNCHRONIZE +RESYNCHRONIZED +RESYNCHRONIZING +RETAIL +RETAILER +RETAILERS +RETAILING +RETAIN +RETAINED +RETAINER +RETAINERS +RETAINING +RETAINMENT +RETAINS +RETALIATE +RETALIATION +RETALIATORY +RETARD +RETARDED +RETARDER +RETARDING +RETCH +RETENTION +RETENTIONS +RETENTIVE +RETENTIVELY +RETENTIVENESS +RETICLE +RETICLES +RETICULAR +RETICULATE +RETICULATED +RETICULATELY +RETICULATES +RETICULATING +RETICULATION +RETINA +RETINAL +RETINAS +RETINUE +RETIRE +RETIRED +RETIREE +RETIREMENT +RETIREMENTS +RETIRES +RETIRING +RETORT +RETORTED +RETORTS +RETRACE +RETRACED +RETRACES +RETRACING +RETRACT +RETRACTED +RETRACTING +RETRACTION +RETRACTIONS +RETRACTS +RETRAIN +RETRAINED +RETRAINING +RETRAINS +RETRANSLATE +RETRANSLATED +RETRANSMISSION +RETRANSMISSIONS +RETRANSMIT +RETRANSMITS +RETRANSMITTED +RETRANSMITTING +RETREAT +RETREATED +RETREATING +RETREATS +RETRIBUTION +RETRIED +RETRIER +RETRIERS +RETRIES +RETRIEVABLE +RETRIEVAL +RETRIEVALS +RETRIEVE +RETRIEVED +RETRIEVER +RETRIEVERS +RETRIEVES +RETRIEVING +RETROACTIVE +RETROACTIVELY +RETROFIT +RETROFITTING +RETROGRADE +RETROSPECT +RETROSPECTION +RETROSPECTIVE +RETRY +RETRYING +RETURN +RETURNABLE +RETURNED +RETURNER +RETURNING +RETURNS +RETYPE +RETYPED +RETYPES +RETYPING +REUB +REUBEN +REUNION +REUNIONS +REUNITE +REUNITED +REUNITING +REUSABLE +REUSE +REUSED +REUSES +REUSING +REUTERS +REUTHER +REVAMP +REVAMPED +REVAMPING +REVAMPS +REVEAL +REVEALED +REVEALING +REVEALS +REVEL +REVELATION +REVELATIONS +REVELED +REVELER +REVELING +REVELRY +REVELS +REVENGE +REVENGER +REVENUE +REVENUERS +REVENUES +REVERBERATE +REVERE +REVERED +REVERENCE +REVEREND +REVERENDS +REVERENT +REVERENTLY +REVERES +REVERIE +REVERIFIED +REVERIFIES +REVERIFY +REVERIFYING +REVERING +REVERSAL +REVERSALS +REVERSE +REVERSED +REVERSELY +REVERSER +REVERSES +REVERSIBLE +REVERSING +REVERSION +REVERT +REVERTED +REVERTING +REVERTS +REVIEW +REVIEWED +REVIEWER +REVIEWERS +REVIEWING +REVIEWS +REVILE +REVILED +REVILER +REVILING +REVISE +REVISED +REVISER +REVISES +REVISING +REVISION +REVISIONARY +REVISIONS +REVISIT +REVISITED +REVISITING +REVISITS +REVIVAL +REVIVALS +REVIVE +REVIVED +REVIVER +REVIVES +REVIVING +REVOCABLE +REVOCATION +REVOKE +REVOKED +REVOKER +REVOKES +REVOKING +REVOLT +REVOLTED +REVOLTER +REVOLTING +REVOLTINGLY +REVOLTS +REVOLUTION +REVOLUTIONARIES +REVOLUTIONARY +REVOLUTIONIZE +REVOLUTIONIZED +REVOLUTIONIZER +REVOLUTIONS +REVOLVE +REVOLVED +REVOLVER +REVOLVERS +REVOLVES +REVOLVING +REVULSION +REWARD +REWARDED +REWARDING +REWARDINGLY +REWARDS +REWIND +REWINDING +REWINDS +REWIRE +REWORK +REWORKED +REWORKING +REWORKS +REWOUND +REWRITE +REWRITES +REWRITING +REWRITTEN +REX +REYKJAVIK +REYNOLDS +RHAPSODY +RHEA +RHEIMS +RHEINHOLDT +RHENISH +RHESUS +RHETORIC +RHEUMATIC +RHEUMATISM +RHINE +RHINESTONE +RHINO +RHINOCEROS +RHO +RHODA +RHODE +RHODES +RHODESIA +RHODODENDRON +RHOMBIC +RHOMBUS +RHUBARB +RHYME +RHYMED +RHYMES +RHYMING +RHYTHM +RHYTHMIC +RHYTHMICALLY +RHYTHMS +RIB +RIBALD +RIBBED +RIBBING +RIBBON +RIBBONS +RIBOFLAVIN +RIBONUCLEIC +RIBS +RICA +RICAN +RICANISM +RICANS +RICE +RICH +RICHARD +RICHARDS +RICHARDSON +RICHER +RICHES +RICHEST +RICHEY +RICHFIELD +RICHLAND +RICHLY +RICHMOND +RICHNESS +RICHTER +RICK +RICKENBAUGH +RICKETS +RICKETTSIA +RICKETY +RICKSHAW +RICKSHAWS +RICO +RICOCHET +RID +RIDDANCE +RIDDEN +RIDDING +RIDDLE +RIDDLED +RIDDLES +RIDDLING +RIDE +RIDER +RIDERS +RIDES +RIDGE +RIDGEFIELD +RIDGEPOLE +RIDGES +RIDGWAY +RIDICULE +RIDICULED +RIDICULES +RIDICULING +RIDICULOUS +RIDICULOUSLY +RIDICULOUSNESS +RIDING +RIDS +RIEMANN +RIEMANNIAN +RIFLE +RIFLED +RIFLEMAN +RIFLER +RIFLES +RIFLING +RIFT +RIG +RIGA +RIGEL +RIGGING +RIGGS +RIGHT +RIGHTED +RIGHTEOUS +RIGHTEOUSLY +RIGHTEOUSNESS +RIGHTER +RIGHTFUL +RIGHTFULLY +RIGHTFULNESS +RIGHTING +RIGHTLY +RIGHTMOST +RIGHTNESS +RIGHTS +RIGHTWARD +RIGID +RIGIDITY +RIGIDLY +RIGOR +RIGOROUS +RIGOROUSLY +RIGORS +RIGS +RILEY +RILKE +RILL +RIM +RIME +RIMS +RIND +RINDS +RINEHART +RING +RINGED +RINGER +RINGERS +RINGING +RINGINGLY +RINGINGS +RINGS +RINGSIDE +RINK +RINSE +RINSED +RINSER +RINSES +RINSING +RIO +RIORDAN +RIOT +RIOTED +RIOTER +RIOTERS +RIOTING +RIOTOUS +RIOTS +RIP +RIPE +RIPELY +RIPEN +RIPENESS +RIPLEY +RIPOFF +RIPPED +RIPPING +RIPPLE +RIPPLED +RIPPLES +RIPPLING +RIPS +RISC +RISE +RISEN +RISER +RISERS +RISES +RISING +RISINGS +RISK +RISKED +RISKING +RISKS +RISKY +RITCHIE +RITE +RITES +RITTER +RITUAL +RITUALLY +RITUALS +RITZ +RIVAL +RIVALED +RIVALLED +RIVALLING +RIVALRIES +RIVALRY +RIVALS +RIVER +RIVERBANK +RIVERFRONT +RIVERS +RIVERSIDE +RIVERVIEW +RIVET +RIVETER +RIVETS +RIVIERA +RIVULET +RIVULETS +RIYADH +ROACH +ROAD +ROADBED +ROADBLOCK +ROADS +ROADSIDE +ROADSTER +ROADSTERS +ROADWAY +ROADWAYS +ROAM +ROAMED +ROAMING +ROAMS +ROAR +ROARED +ROARER +ROARING +ROARS +ROAST +ROASTED +ROASTER +ROASTING +ROASTS +ROB +ROBBED +ROBBER +ROBBERIES +ROBBERS +ROBBERY +ROBBIE +ROBBIN +ROBBING +ROBBINS +ROBE +ROBED +ROBERT +ROBERTA +ROBERTO +ROBERTS +ROBERTSON +ROBERTSONS +ROBES +ROBIN +ROBING +ROBINS +ROBINSON +ROBINSONVILLE +ROBOT +ROBOTIC +ROBOTICS +ROBOTS +ROBS +ROBUST +ROBUSTLY +ROBUSTNESS +ROCCO +ROCHESTER +ROCHFORD +ROCK +ROCKABYE +ROCKAWAY +ROCKAWAYS +ROCKED +ROCKEFELLER +ROCKER +ROCKERS +ROCKET +ROCKETED +ROCKETING +ROCKETS +ROCKFORD +ROCKIES +ROCKING +ROCKLAND +ROCKS +ROCKVILLE +ROCKWELL +ROCKY +ROD +RODE +RODENT +RODENTS +RODEO +RODGERS +RODNEY +RODRIGUEZ +RODS +ROE +ROENTGEN +ROGER +ROGERS +ROGUE +ROGUES +ROLAND +ROLE +ROLES +ROLL +ROLLBACK +ROLLED +ROLLER +ROLLERS +ROLLIE +ROLLING +ROLLINS +ROLLS +ROMAN +ROMANCE +ROMANCER +ROMANCERS +ROMANCES +ROMANCING +ROMANESQUE +ROMANIA +ROMANIZATIONS +ROMANIZER +ROMANIZERS +ROMANIZES +ROMANO +ROMANS +ROMANTIC +ROMANTICS +ROME +ROMELDALE +ROMEO +ROMP +ROMPED +ROMPER +ROMPING +ROMPS +ROMULUS +RON +RONALD +RONNIE +ROOF +ROOFED +ROOFER +ROOFING +ROOFS +ROOFTOP +ROOK +ROOKIE +ROOM +ROOMED +ROOMER +ROOMERS +ROOMFUL +ROOMING +ROOMMATE +ROOMS +ROOMY +ROONEY +ROOSEVELT +ROOSEVELTIAN +ROOST +ROOSTER +ROOSTERS +ROOT +ROOTED +ROOTER +ROOTING +ROOTS +ROPE +ROPED +ROPER +ROPERS +ROPES +ROPING +ROQUEMORE +RORSCHACH +ROSA +ROSABELLE +ROSALIE +ROSARY +ROSE +ROSEBUD +ROSEBUDS +ROSEBUSH +ROSELAND +ROSELLA +ROSEMARY +ROSEN +ROSENBERG +ROSENBLUM +ROSENTHAL +ROSENZWEIG +ROSES +ROSETTA +ROSETTE +ROSIE +ROSINESS +ROSS +ROSSI +ROSTER +ROSTRUM +ROSWELL +ROSY +ROT +ROTARIAN +ROTARIANS +ROTARY +ROTATE +ROTATED +ROTATES +ROTATING +ROTATION +ROTATIONAL +ROTATIONS +ROTATOR +ROTH +ROTHSCHILD +ROTOR +ROTS +ROTTEN +ROTTENNESS +ROTTERDAM +ROTTING +ROTUND +ROTUNDA +ROUGE +ROUGH +ROUGHED +ROUGHEN +ROUGHER +ROUGHEST +ROUGHLY +ROUGHNECK +ROUGHNESS +ROULETTE +ROUND +ROUNDABOUT +ROUNDED +ROUNDEDNESS +ROUNDER +ROUNDEST +ROUNDHEAD +ROUNDHOUSE +ROUNDING +ROUNDLY +ROUNDNESS +ROUNDOFF +ROUNDS +ROUNDTABLE +ROUNDUP +ROUNDWORM +ROURKE +ROUSE +ROUSED +ROUSES +ROUSING +ROUSSEAU +ROUSTABOUT +ROUT +ROUTE +ROUTED +ROUTER +ROUTERS +ROUTES +ROUTINE +ROUTINELY +ROUTINES +ROUTING +ROUTINGS +ROVE +ROVED +ROVER +ROVES +ROVING +ROW +ROWBOAT +ROWDY +ROWE +ROWED +ROWENA +ROWER +ROWING +ROWLAND +ROWLEY +ROWS +ROXBURY +ROXY +ROY +ROYAL +ROYALIST +ROYALISTS +ROYALLY +ROYALTIES +ROYALTY +ROYCE +ROZELLE +RUANDA +RUB +RUBAIYAT +RUBBED +RUBBER +RUBBERS +RUBBERY +RUBBING +RUBBISH +RUBBLE +RUBDOWN +RUBE +RUBEN +RUBENS +RUBIES +RUBIN +RUBLE +RUBLES +RUBOUT +RUBS +RUBY +RUDDER +RUDDERS +RUDDINESS +RUDDY +RUDE +RUDELY +RUDENESS +RUDIMENT +RUDIMENTARY +RUDIMENTS +RUDOLF +RUDOLPH +RUDY +RUDYARD +RUE +RUEFULLY +RUFFIAN +RUFFIANLY +RUFFIANS +RUFFLE +RUFFLED +RUFFLES +RUFUS +RUG +RUGGED +RUGGEDLY +RUGGEDNESS +RUGS +RUIN +RUINATION +RUINATIONS +RUINED +RUINING +RUINOUS +RUINOUSLY +RUINS +RULE +RULED +RULER +RULERS +RULES +RULING +RULINGS +RUM +RUMANIA +RUMANIAN +RUMANIANS +RUMBLE +RUMBLED +RUMBLER +RUMBLES +RUMBLING +RUMEN +RUMFORD +RUMMAGE +RUMMEL +RUMMY +RUMOR +RUMORED +RUMORS +RUMP +RUMPLE +RUMPLED +RUMPLY +RUMPUS +RUN +RUNAWAY +RUNDOWN +RUNG +RUNGE +RUNGS +RUNNABLE +RUNNER +RUNNERS +RUNNING +RUNNYMEDE +RUNOFF +RUNS +RUNT +RUNTIME +RUNYON +RUPEE +RUPPERT +RUPTURE +RUPTURED +RUPTURES +RUPTURING +RURAL +RURALLY +RUSH +RUSHED +RUSHER +RUSHES +RUSHING +RUSHMORE +RUSS +RUSSELL +RUSSET +RUSSIA +RUSSIAN +RUSSIANIZATIONS +RUSSIANIZES +RUSSIANS +RUSSO +RUST +RUSTED +RUSTIC +RUSTICATE +RUSTICATED +RUSTICATES +RUSTICATING +RUSTICATION +RUSTING +RUSTLE +RUSTLED +RUSTLER +RUSTLERS +RUSTLING +RUSTS +RUSTY +RUT +RUTGERS +RUTH +RUTHERFORD +RUTHLESS +RUTHLESSLY +RUTHLESSNESS +RUTLAND +RUTLEDGE +RUTS +RWANDA +RYAN +RYDBERG +RYDER +RYE +SABBATH +SABBATHIZE +SABBATHIZES +SABBATICAL +SABER +SABERS +SABINA +SABINE +SABLE +SABLES +SABOTAGE +SACHS +SACK +SACKER +SACKING +SACKS +SACRAMENT +SACRAMENTO +SACRED +SACREDLY +SACREDNESS +SACRIFICE +SACRIFICED +SACRIFICER +SACRIFICERS +SACRIFICES +SACRIFICIAL +SACRIFICIALLY +SACRIFICING +SACRILEGE +SACRILEGIOUS +SACROSANCT +SAD +SADDEN +SADDENED +SADDENS +SADDER +SADDEST +SADDLE +SADDLEBAG +SADDLED +SADDLES +SADIE +SADISM +SADIST +SADISTIC +SADISTICALLY +SADISTS +SADLER +SADLY +SADNESS +SAFARI +SAFE +SAFEGUARD +SAFEGUARDED +SAFEGUARDING +SAFEGUARDS +SAFEKEEPING +SAFELY +SAFENESS +SAFER +SAFES +SAFEST +SAFETIES +SAFETY +SAFFRON +SAG +SAGA +SAGACIOUS +SAGACITY +SAGE +SAGEBRUSH +SAGELY +SAGES +SAGGING +SAGINAW +SAGITTAL +SAGITTARIUS +SAGS +SAGUARO +SAHARA +SAID +SAIGON +SAIL +SAILBOAT +SAILED +SAILFISH +SAILING +SAILOR +SAILORLY +SAILORS +SAILS +SAINT +SAINTED +SAINTHOOD +SAINTLY +SAINTS +SAKE +SAKES +SAL +SALAAM +SALABLE +SALAD +SALADS +SALAMANDER +SALAMI +SALARIED +SALARIES +SALARY +SALE +SALEM +SALERNO +SALES +SALESGIRL +SALESIAN +SALESLADY +SALESMAN +SALESMEN +SALESPERSON +SALIENT +SALINA +SALINE +SALISBURY +SALISH +SALIVA +SALIVARY +SALIVATE +SALK +SALLE +SALLIES +SALLOW +SALLY +SALLYING +SALMON +SALON +SALONS +SALOON +SALOONS +SALT +SALTED +SALTER +SALTERS +SALTIER +SALTIEST +SALTINESS +SALTING +SALTON +SALTS +SALTY +SALUTARY +SALUTATION +SALUTATIONS +SALUTE +SALUTED +SALUTES +SALUTING +SALVADOR +SALVADORAN +SALVAGE +SALVAGED +SALVAGER +SALVAGES +SALVAGING +SALVATION +SALVATORE +SALVE +SALVER +SALVES +SALZ +SAM +SAMARITAN +SAME +SAMENESS +SAMMY +SAMOA +SAMOAN +SAMPLE +SAMPLED +SAMPLER +SAMPLERS +SAMPLES +SAMPLING +SAMPLINGS +SAMPSON +SAMSON +SAMUEL +SAMUELS +SAMUELSON +SAN +SANA +SANATORIA +SANATORIUM +SANBORN +SANCHEZ +SANCHO +SANCTIFICATION +SANCTIFIED +SANCTIFY +SANCTIMONIOUS +SANCTION +SANCTIONED +SANCTIONING +SANCTIONS +SANCTITY +SANCTUARIES +SANCTUARY +SANCTUM +SAND +SANDAL +SANDALS +SANDBAG +SANDBURG +SANDED +SANDER +SANDERLING +SANDERS +SANDERSON +SANDIA +SANDING +SANDMAN +SANDPAPER +SANDRA +SANDS +SANDSTONE +SANDUSKY +SANDWICH +SANDWICHES +SANDY +SANE +SANELY +SANER +SANEST +SANFORD +SANG +SANGUINE +SANHEDRIN +SANITARIUM +SANITARY +SANITATION +SANITY +SANK +SANSKRIT +SANSKRITIC +SANSKRITIZE +SANTA +SANTAYANA +SANTIAGO +SANTO +SAO +SAP +SAPIENS +SAPLING +SAPLINGS +SAPPHIRE +SAPPHO +SAPS +SAPSUCKER +SARA +SARACEN +SARACENS +SARAH +SARAN +SARASOTA +SARATOGA +SARCASM +SARCASMS +SARCASTIC +SARDINE +SARDINIA +SARDONIC +SARGENT +SARI +SARTRE +SASH +SASKATCHEWAN +SASKATOON +SAT +SATAN +SATANIC +SATANISM +SATANIST +SATCHEL +SATCHELS +SATE +SATED +SATELLITE +SATELLITES +SATES +SATIN +SATING +SATIRE +SATIRES +SATIRIC +SATISFACTION +SATISFACTIONS +SATISFACTORILY +SATISFACTORY +SATISFIABILITY +SATISFIABLE +SATISFIED +SATISFIES +SATISFY +SATISFYING +SATURATE +SATURATED +SATURATES +SATURATING +SATURATION +SATURDAY +SATURDAYS +SATURN +SATURNALIA +SATURNISM +SATYR +SAUCE +SAUCEPAN +SAUCEPANS +SAUCER +SAUCERS +SAUCES +SAUCY +SAUD +SAUDI +SAUKVILLE +SAUL +SAULT +SAUNDERS +SAUNTER +SAUSAGE +SAUSAGES +SAVAGE +SAVAGED +SAVAGELY +SAVAGENESS +SAVAGER +SAVAGERS +SAVAGES +SAVAGING +SAVANNAH +SAVE +SAVED +SAVER +SAVERS +SAVES +SAVING +SAVINGS +SAVIOR +SAVIORS +SAVIOUR +SAVONAROLA +SAVOR +SAVORED +SAVORING +SAVORS +SAVORY +SAVOY +SAVOYARD +SAVOYARDS +SAW +SAWDUST +SAWED +SAWFISH +SAWING +SAWMILL +SAWMILLS +SAWS +SAWTOOTH +SAX +SAXON +SAXONIZATION +SAXONIZATIONS +SAXONIZE +SAXONIZES +SAXONS +SAXONY +SAXOPHONE +SAXTON +SAY +SAYER +SAYERS +SAYING +SAYINGS +SAYS +SCAB +SCABBARD +SCABBARDS +SCABROUS +SCAFFOLD +SCAFFOLDING +SCAFFOLDINGS +SCAFFOLDS +SCALA +SCALABLE +SCALAR +SCALARS +SCALD +SCALDED +SCALDING +SCALE +SCALED +SCALES +SCALING +SCALINGS +SCALLOP +SCALLOPED +SCALLOPS +SCALP +SCALPS +SCALY +SCAMPER +SCAMPERING +SCAMPERS +SCAN +SCANDAL +SCANDALOUS +SCANDALS +SCANDINAVIA +SCANDINAVIAN +SCANDINAVIANS +SCANNED +SCANNER +SCANNERS +SCANNING +SCANS +SCANT +SCANTIER +SCANTIEST +SCANTILY +SCANTINESS +SCANTLY +SCANTY +SCAPEGOAT +SCAR +SCARBOROUGH +SCARCE +SCARCELY +SCARCENESS +SCARCER +SCARCITY +SCARE +SCARECROW +SCARED +SCARES +SCARF +SCARING +SCARLATTI +SCARLET +SCARS +SCARSDALE +SCARVES +SCARY +SCATTER +SCATTERBRAIN +SCATTERED +SCATTERING +SCATTERS +SCENARIO +SCENARIOS +SCENE +SCENERY +SCENES +SCENIC +SCENT +SCENTED +SCENTS +SCEPTER +SCEPTERS +SCHAEFER +SCHAEFFER +SCHAFER +SCHAFFNER +SCHANTZ +SCHAPIRO +SCHEDULABLE +SCHEDULE +SCHEDULED +SCHEDULER +SCHEDULERS +SCHEDULES +SCHEDULING +SCHEHERAZADE +SCHELLING +SCHEMA +SCHEMAS +SCHEMATA +SCHEMATIC +SCHEMATICALLY +SCHEMATICS +SCHEME +SCHEMED +SCHEMER +SCHEMERS +SCHEMES +SCHEMING +SCHILLER +SCHISM +SCHIZOPHRENIA +SCHLESINGER +SCHLITZ +SCHLOSS +SCHMIDT +SCHMITT +SCHNABEL +SCHNEIDER +SCHOENBERG +SCHOFIELD +SCHOLAR +SCHOLARLY +SCHOLARS +SCHOLARSHIP +SCHOLARSHIPS +SCHOLASTIC +SCHOLASTICALLY +SCHOLASTICS +SCHOOL +SCHOOLBOY +SCHOOLBOYS +SCHOOLED +SCHOOLER +SCHOOLERS +SCHOOLHOUSE +SCHOOLHOUSES +SCHOOLING +SCHOOLMASTER +SCHOOLMASTERS +SCHOOLROOM +SCHOOLROOMS +SCHOOLS +SCHOONER +SCHOPENHAUER +SCHOTTKY +SCHROEDER +SCHROEDINGER +SCHUBERT +SCHULTZ +SCHULZ +SCHUMACHER +SCHUMAN +SCHUMANN +SCHUSTER +SCHUYLER +SCHUYLKILL +SCHWAB +SCHWARTZ +SCHWEITZER +SCIENCE +SCIENCES +SCIENTIFIC +SCIENTIFICALLY +SCIENTIST +SCIENTISTS +SCISSOR +SCISSORED +SCISSORING +SCISSORS +SCLEROSIS +SCLEROTIC +SCOFF +SCOFFED +SCOFFER +SCOFFING +SCOFFS +SCOLD +SCOLDED +SCOLDING +SCOLDS +SCOOP +SCOOPED +SCOOPING +SCOOPS +SCOOT +SCOPE +SCOPED +SCOPES +SCOPING +SCORCH +SCORCHED +SCORCHER +SCORCHES +SCORCHING +SCORE +SCOREBOARD +SCORECARD +SCORED +SCORER +SCORERS +SCORES +SCORING +SCORINGS +SCORN +SCORNED +SCORNER +SCORNFUL +SCORNFULLY +SCORNING +SCORNS +SCORPIO +SCORPION +SCORPIONS +SCOT +SCOTCH +SCOTCHGARD +SCOTCHMAN +SCOTIA +SCOTIAN +SCOTLAND +SCOTS +SCOTSMAN +SCOTSMEN +SCOTT +SCOTTISH +SCOTTSDALE +SCOTTY +SCOUNDREL +SCOUNDRELS +SCOUR +SCOURED +SCOURGE +SCOURING +SCOURS +SCOUT +SCOUTED +SCOUTING +SCOUTS +SCOW +SCOWL +SCOWLED +SCOWLING +SCOWLS +SCRAM +SCRAMBLE +SCRAMBLED +SCRAMBLER +SCRAMBLES +SCRAMBLING +SCRANTON +SCRAP +SCRAPE +SCRAPED +SCRAPER +SCRAPERS +SCRAPES +SCRAPING +SCRAPINGS +SCRAPPED +SCRAPS +SCRATCH +SCRATCHED +SCRATCHER +SCRATCHERS +SCRATCHES +SCRATCHING +SCRATCHY +SCRAWL +SCRAWLED +SCRAWLING +SCRAWLS +SCRAWNY +SCREAM +SCREAMED +SCREAMER +SCREAMERS +SCREAMING +SCREAMS +SCREECH +SCREECHED +SCREECHES +SCREECHING +SCREEN +SCREENED +SCREENING +SCREENINGS +SCREENPLAY +SCREENS +SCREW +SCREWBALL +SCREWDRIVER +SCREWED +SCREWING +SCREWS +SCRIBBLE +SCRIBBLED +SCRIBBLER +SCRIBBLES +SCRIBE +SCRIBES +SCRIBING +SCRIBNERS +SCRIMMAGE +SCRIPPS +SCRIPT +SCRIPTS +SCRIPTURE +SCRIPTURES +SCROLL +SCROLLED +SCROLLING +SCROLLS +SCROOGE +SCROUNGE +SCRUB +SCRUMPTIOUS +SCRUPLE +SCRUPULOUS +SCRUPULOUSLY +SCRUTINIZE +SCRUTINIZED +SCRUTINIZING +SCRUTINY +SCUBA +SCUD +SCUFFLE +SCUFFLED +SCUFFLES +SCUFFLING +SCULPT +SCULPTED +SCULPTOR +SCULPTORS +SCULPTS +SCULPTURE +SCULPTURED +SCULPTURES +SCURRIED +SCURRY +SCURVY +SCUTTLE +SCUTTLED +SCUTTLES +SCUTTLING +SCYLLA +SCYTHE +SCYTHES +SCYTHIA +SEA +SEABOARD +SEABORG +SEABROOK +SEACOAST +SEACOASTS +SEAFOOD +SEAGATE +SEAGRAM +SEAGULL +SEAHORSE +SEAL +SEALED +SEALER +SEALING +SEALS +SEALY +SEAM +SEAMAN +SEAMED +SEAMEN +SEAMING +SEAMS +SEAMY +SEAN +SEAPORT +SEAPORTS +SEAQUARIUM +SEAR +SEARCH +SEARCHED +SEARCHER +SEARCHERS +SEARCHES +SEARCHING +SEARCHINGLY +SEARCHINGS +SEARCHLIGHT +SEARED +SEARING +SEARINGLY +SEARS +SEAS +SEASHORE +SEASHORES +SEASIDE +SEASON +SEASONABLE +SEASONABLY +SEASONAL +SEASONALLY +SEASONED +SEASONER +SEASONERS +SEASONING +SEASONINGS +SEASONS +SEAT +SEATED +SEATING +SEATS +SEATTLE +SEAWARD +SEAWEED +SEBASTIAN +SECANT +SECEDE +SECEDED +SECEDES +SECEDING +SECESSION +SECLUDE +SECLUDED +SECLUSION +SECOND +SECONDARIES +SECONDARILY +SECONDARY +SECONDED +SECONDER +SECONDERS +SECONDHAND +SECONDING +SECONDLY +SECONDS +SECRECY +SECRET +SECRETARIAL +SECRETARIAT +SECRETARIES +SECRETARY +SECRETE +SECRETED +SECRETES +SECRETING +SECRETION +SECRETIONS +SECRETIVE +SECRETIVELY +SECRETLY +SECRETS +SECT +SECTARIAN +SECTION +SECTIONAL +SECTIONED +SECTIONING +SECTIONS +SECTOR +SECTORS +SECTS +SECULAR +SECURE +SECURED +SECURELY +SECURES +SECURING +SECURINGS +SECURITIES +SECURITY +SEDAN +SEDATE +SEDGE +SEDGWICK +SEDIMENT +SEDIMENTARY +SEDIMENTS +SEDITION +SEDITIOUS +SEDUCE +SEDUCED +SEDUCER +SEDUCERS +SEDUCES +SEDUCING +SEDUCTION +SEDUCTIVE +SEE +SEED +SEEDED +SEEDER +SEEDERS +SEEDING +SEEDINGS +SEEDLING +SEEDLINGS +SEEDS +SEEDY +SEEING +SEEK +SEEKER +SEEKERS +SEEKING +SEEKS +SEELEY +SEEM +SEEMED +SEEMING +SEEMINGLY +SEEMLY +SEEMS +SEEN +SEEP +SEEPAGE +SEEPED +SEEPING +SEEPS +SEER +SEERS +SEERSUCKER +SEES +SEETHE +SEETHED +SEETHES +SEETHING +SEGMENT +SEGMENTATION +SEGMENTATIONS +SEGMENTED +SEGMENTING +SEGMENTS +SEGOVIA +SEGREGATE +SEGREGATED +SEGREGATES +SEGREGATING +SEGREGATION +SEGUNDO +SEIDEL +SEISMIC +SEISMOGRAPH +SEISMOLOGY +SEIZE +SEIZED +SEIZES +SEIZING +SEIZURE +SEIZURES +SELDOM +SELECT +SELECTED +SELECTING +SELECTION +SELECTIONS +SELECTIVE +SELECTIVELY +SELECTIVITY +SELECTMAN +SELECTMEN +SELECTOR +SELECTORS +SELECTRIC +SELECTS +SELENA +SELENIUM +SELF +SELFISH +SELFISHLY +SELFISHNESS +SELFRIDGE +SELFSAME +SELKIRK +SELL +SELLER +SELLERS +SELLING +SELLOUT +SELLS +SELMA +SELTZER +SELVES +SELWYN +SEMANTIC +SEMANTICAL +SEMANTICALLY +SEMANTICIST +SEMANTICISTS +SEMANTICS +SEMAPHORE +SEMAPHORES +SEMBLANCE +SEMESTER +SEMESTERS +SEMI +SEMIAUTOMATED +SEMICOLON +SEMICOLONS +SEMICONDUCTOR +SEMICONDUCTORS +SEMINAL +SEMINAR +SEMINARIAN +SEMINARIES +SEMINARS +SEMINARY +SEMINOLE +SEMIPERMANENT +SEMIPERMANENTLY +SEMIRAMIS +SEMITE +SEMITIC +SEMITICIZE +SEMITICIZES +SEMITIZATION +SEMITIZATIONS +SEMITIZE +SEMITIZES +SENATE +SENATES +SENATOR +SENATORIAL +SENATORS +SEND +SENDER +SENDERS +SENDING +SENDS +SENECA +SENEGAL +SENILE +SENIOR +SENIORITY +SENIORS +SENSATION +SENSATIONAL +SENSATIONALLY +SENSATIONS +SENSE +SENSED +SENSELESS +SENSELESSLY +SENSELESSNESS +SENSES +SENSIBILITIES +SENSIBILITY +SENSIBLE +SENSIBLY +SENSING +SENSITIVE +SENSITIVELY +SENSITIVENESS +SENSITIVES +SENSITIVITIES +SENSITIVITY +SENSOR +SENSORS +SENSORY +SENSUAL +SENSUOUS +SENT +SENTENCE +SENTENCED +SENTENCES +SENTENCING +SENTENTIAL +SENTIMENT +SENTIMENTAL +SENTIMENTALLY +SENTIMENTS +SENTINEL +SENTINELS +SENTRIES +SENTRY +SEOUL +SEPARABLE +SEPARATE +SEPARATED +SEPARATELY +SEPARATENESS +SEPARATES +SEPARATING +SEPARATION +SEPARATIONS +SEPARATOR +SEPARATORS +SEPIA +SEPOY +SEPT +SEPTEMBER +SEPTEMBERS +SEPULCHER +SEPULCHERS +SEQUEL +SEQUELS +SEQUENCE +SEQUENCED +SEQUENCER +SEQUENCERS +SEQUENCES +SEQUENCING +SEQUENCINGS +SEQUENTIAL +SEQUENTIALITY +SEQUENTIALIZE +SEQUENTIALIZED +SEQUENTIALIZES +SEQUENTIALIZING +SEQUENTIALLY +SEQUESTER +SEQUOIA +SERAFIN +SERBIA +SERBIAN +SERBIANS +SERENDIPITOUS +SERENDIPITY +SERENE +SERENELY +SERENITY +SERF +SERFS +SERGEANT +SERGEANTS +SERGEI +SERIAL +SERIALIZABILITY +SERIALIZABLE +SERIALIZATION +SERIALIZATIONS +SERIALIZE +SERIALIZED +SERIALIZES +SERIALIZING +SERIALLY +SERIALS +SERIES +SERIF +SERIOUS +SERIOUSLY +SERIOUSNESS +SERMON +SERMONS +SERPENS +SERPENT +SERPENTINE +SERPENTS +SERRA +SERUM +SERUMS +SERVANT +SERVANTS +SERVE +SERVED +SERVER +SERVERS +SERVES +SERVICE +SERVICEABILITY +SERVICEABLE +SERVICED +SERVICEMAN +SERVICEMEN +SERVICES +SERVICING +SERVILE +SERVING +SERVINGS +SERVITUDE +SERVO +SERVOMECHANISM +SESAME +SESSION +SESSIONS +SET +SETBACK +SETH +SETS +SETTABLE +SETTER +SETTERS +SETTING +SETTINGS +SETTLE +SETTLED +SETTLEMENT +SETTLEMENTS +SETTLER +SETTLERS +SETTLES +SETTLING +SETUP +SETUPS +SEVEN +SEVENFOLD +SEVENS +SEVENTEEN +SEVENTEENS +SEVENTEENTH +SEVENTH +SEVENTIES +SEVENTIETH +SEVENTY +SEVER +SEVERAL +SEVERALFOLD +SEVERALLY +SEVERANCE +SEVERE +SEVERED +SEVERELY +SEVERER +SEVEREST +SEVERING +SEVERITIES +SEVERITY +SEVERN +SEVERS +SEVILLE +SEW +SEWAGE +SEWARD +SEWED +SEWER +SEWERS +SEWING +SEWS +SEX +SEXED +SEXES +SEXIST +SEXTANS +SEXTET +SEXTILLION +SEXTON +SEXTUPLE +SEXTUPLET +SEXUAL +SEXUALITY +SEXUALLY +SEXY +SEYCHELLES +SEYMOUR +SHABBY +SHACK +SHACKED +SHACKLE +SHACKLED +SHACKLES +SHACKLING +SHACKS +SHADE +SHADED +SHADES +SHADIER +SHADIEST +SHADILY +SHADINESS +SHADING +SHADINGS +SHADOW +SHADOWED +SHADOWING +SHADOWS +SHADOWY +SHADY +SHAFER +SHAFFER +SHAFT +SHAFTS +SHAGGY +SHAKABLE +SHAKABLY +SHAKE +SHAKEDOWN +SHAKEN +SHAKER +SHAKERS +SHAKES +SHAKESPEARE +SHAKESPEAREAN +SHAKESPEARIAN +SHAKESPEARIZE +SHAKESPEARIZES +SHAKINESS +SHAKING +SHAKY +SHALE +SHALL +SHALLOW +SHALLOWER +SHALLOWLY +SHALLOWNESS +SHAM +SHAMBLES +SHAME +SHAMED +SHAMEFUL +SHAMEFULLY +SHAMELESS +SHAMELESSLY +SHAMES +SHAMING +SHAMPOO +SHAMROCK +SHAMS +SHANGHAI +SHANGHAIED +SHANGHAIING +SHANGHAIINGS +SHANGHAIS +SHANNON +SHANTIES +SHANTUNG +SHANTY +SHAPE +SHAPED +SHAPELESS +SHAPELESSLY +SHAPELESSNESS +SHAPELY +SHAPER +SHAPERS +SHAPES +SHAPING +SHAPIRO +SHARABLE +SHARD +SHARE +SHAREABLE +SHARECROPPER +SHARECROPPERS +SHARED +SHAREHOLDER +SHAREHOLDERS +SHARER +SHARERS +SHARES +SHARI +SHARING +SHARK +SHARKS +SHARON +SHARP +SHARPE +SHARPEN +SHARPENED +SHARPENING +SHARPENS +SHARPER +SHARPEST +SHARPLY +SHARPNESS +SHARPSHOOT +SHASTA +SHATTER +SHATTERED +SHATTERING +SHATTERPROOF +SHATTERS +SHATTUCK +SHAVE +SHAVED +SHAVEN +SHAVES +SHAVING +SHAVINGS +SHAWANO +SHAWL +SHAWLS +SHAWNEE +SHE +SHEA +SHEAF +SHEAR +SHEARED +SHEARER +SHEARING +SHEARS +SHEATH +SHEATHING +SHEATHS +SHEAVES +SHEBOYGAN +SHED +SHEDDING +SHEDIR +SHEDS +SHEEHAN +SHEEN +SHEEP +SHEEPSKIN +SHEER +SHEERED +SHEET +SHEETED +SHEETING +SHEETS +SHEFFIELD +SHEIK +SHEILA +SHELBY +SHELDON +SHELF +SHELL +SHELLED +SHELLER +SHELLEY +SHELLING +SHELLS +SHELTER +SHELTERED +SHELTERING +SHELTERS +SHELTON +SHELVE +SHELVED +SHELVES +SHELVING +SHENANDOAH +SHENANIGAN +SHEPARD +SHEPHERD +SHEPHERDS +SHEPPARD +SHERATON +SHERBET +SHERIDAN +SHERIFF +SHERIFFS +SHERLOCK +SHERMAN +SHERRILL +SHERRY +SHERWIN +SHERWOOD +SHIBBOLETH +SHIED +SHIELD +SHIELDED +SHIELDING +SHIELDS +SHIES +SHIFT +SHIFTED +SHIFTER +SHIFTERS +SHIFTIER +SHIFTIEST +SHIFTILY +SHIFTINESS +SHIFTING +SHIFTS +SHIFTY +SHIITE +SHIITES +SHILL +SHILLING +SHILLINGS +SHILLONG +SHILOH +SHIMMER +SHIMMERING +SHIN +SHINBONE +SHINE +SHINED +SHINER +SHINERS +SHINES +SHINGLE +SHINGLES +SHINING +SHININGLY +SHINTO +SHINTOISM +SHINTOIZE +SHINTOIZES +SHINY +SHIP +SHIPBOARD +SHIPBUILDING +SHIPLEY +SHIPMATE +SHIPMENT +SHIPMENTS +SHIPPED +SHIPPER +SHIPPERS +SHIPPING +SHIPS +SHIPSHAPE +SHIPWRECK +SHIPWRECKED +SHIPWRECKS +SHIPYARD +SHIRE +SHIRK +SHIRKER +SHIRKING +SHIRKS +SHIRLEY +SHIRT +SHIRTING +SHIRTS +SHIT +SHIVA +SHIVER +SHIVERED +SHIVERER +SHIVERING +SHIVERS +SHMUEL +SHOAL +SHOALS +SHOCK +SHOCKED +SHOCKER +SHOCKERS +SHOCKING +SHOCKINGLY +SHOCKLEY +SHOCKS +SHOD +SHODDY +SHOE +SHOED +SHOEHORN +SHOEING +SHOELACE +SHOEMAKER +SHOES +SHOESTRING +SHOJI +SHONE +SHOOK +SHOOT +SHOOTER +SHOOTERS +SHOOTING +SHOOTINGS +SHOOTS +SHOP +SHOPKEEPER +SHOPKEEPERS +SHOPPED +SHOPPER +SHOPPERS +SHOPPING +SHOPS +SHOPWORN +SHORE +SHORELINE +SHORES +SHOREWOOD +SHORN +SHORT +SHORTAGE +SHORTAGES +SHORTCOMING +SHORTCOMINGS +SHORTCUT +SHORTCUTS +SHORTED +SHORTEN +SHORTENED +SHORTENING +SHORTENS +SHORTER +SHORTEST +SHORTFALL +SHORTHAND +SHORTHANDED +SHORTING +SHORTISH +SHORTLY +SHORTNESS +SHORTS +SHORTSIGHTED +SHORTSTOP +SHOSHONE +SHOT +SHOTGUN +SHOTGUNS +SHOTS +SHOULD +SHOULDER +SHOULDERED +SHOULDERING +SHOULDERS +SHOUT +SHOUTED +SHOUTER +SHOUTERS +SHOUTING +SHOUTS +SHOVE +SHOVED +SHOVEL +SHOVELED +SHOVELS +SHOVES +SHOVING +SHOW +SHOWBOAT +SHOWCASE +SHOWDOWN +SHOWED +SHOWER +SHOWERED +SHOWERING +SHOWERS +SHOWING +SHOWINGS +SHOWN +SHOWPIECE +SHOWROOM +SHOWS +SHOWY +SHRANK +SHRAPNEL +SHRED +SHREDDER +SHREDDING +SHREDS +SHREVEPORT +SHREW +SHREWD +SHREWDEST +SHREWDLY +SHREWDNESS +SHREWS +SHRIEK +SHRIEKED +SHRIEKING +SHRIEKS +SHRILL +SHRILLED +SHRILLING +SHRILLNESS +SHRILLY +SHRIMP +SHRINE +SHRINES +SHRINK +SHRINKABLE +SHRINKAGE +SHRINKING +SHRINKS +SHRIVEL +SHRIVELED +SHROUD +SHROUDED +SHRUB +SHRUBBERY +SHRUBS +SHRUG +SHRUGS +SHRUNK +SHRUNKEN +SHU +SHUDDER +SHUDDERED +SHUDDERING +SHUDDERS +SHUFFLE +SHUFFLEBOARD +SHUFFLED +SHUFFLES +SHUFFLING +SHULMAN +SHUN +SHUNS +SHUNT +SHUT +SHUTDOWN +SHUTDOWNS +SHUTOFF +SHUTOUT +SHUTS +SHUTTER +SHUTTERED +SHUTTERS +SHUTTING +SHUTTLE +SHUTTLECOCK +SHUTTLED +SHUTTLES +SHUTTLING +SHY +SHYLOCK +SHYLOCKIAN +SHYLY +SHYNESS +SIAM +SIAMESE +SIAN +SIBERIA +SIBERIAN +SIBLEY +SIBLING +SIBLINGS +SICILIAN +SICILIANA +SICILIANS +SICILY +SICK +SICKEN +SICKER +SICKEST +SICKLE +SICKLY +SICKNESS +SICKNESSES +SICKROOM +SIDE +SIDEARM +SIDEBAND +SIDEBOARD +SIDEBOARDS +SIDEBURNS +SIDECAR +SIDED +SIDELIGHT +SIDELIGHTS +SIDELINE +SIDEREAL +SIDES +SIDESADDLE +SIDESHOW +SIDESTEP +SIDETRACK +SIDEWALK +SIDEWALKS +SIDEWAYS +SIDEWISE +SIDING +SIDINGS +SIDNEY +SIEGE +SIEGEL +SIEGES +SIEGFRIED +SIEGLINDA +SIEGMUND +SIEMENS +SIENA +SIERRA +SIEVE +SIEVES +SIFFORD +SIFT +SIFTED +SIFTER +SIFTING +SIGGRAPH +SIGH +SIGHED +SIGHING +SIGHS +SIGHT +SIGHTED +SIGHTING +SIGHTINGS +SIGHTLY +SIGHTS +SIGHTSEEING +SIGMA +SIGMUND +SIGN +SIGNAL +SIGNALED +SIGNALING +SIGNALLED +SIGNALLING +SIGNALLY +SIGNALS +SIGNATURE +SIGNATURES +SIGNED +SIGNER +SIGNERS +SIGNET +SIGNIFICANCE +SIGNIFICANT +SIGNIFICANTLY +SIGNIFICANTS +SIGNIFICATION +SIGNIFIED +SIGNIFIES +SIGNIFY +SIGNIFYING +SIGNING +SIGNS +SIKH +SIKHES +SIKHS +SIKKIM +SIKKIMESE +SIKORSKY +SILAS +SILENCE +SILENCED +SILENCER +SILENCERS +SILENCES +SILENCING +SILENT +SILENTLY +SILHOUETTE +SILHOUETTED +SILHOUETTES +SILICA +SILICATE +SILICON +SILICONE +SILK +SILKEN +SILKIER +SILKIEST +SILKILY +SILKINE +SILKS +SILKY +SILL +SILLIEST +SILLINESS +SILLS +SILLY +SILO +SILT +SILTED +SILTING +SILTS +SILVER +SILVERED +SILVERING +SILVERMAN +SILVERS +SILVERSMITH +SILVERSTEIN +SILVERWARE +SILVERY +SIMILAR +SIMILARITIES +SIMILARITY +SIMILARLY +SIMILE +SIMILITUDE +SIMLA +SIMMER +SIMMERED +SIMMERING +SIMMERS +SIMMONS +SIMMONSVILLE +SIMMS +SIMON +SIMONS +SIMONSON +SIMPLE +SIMPLEMINDED +SIMPLENESS +SIMPLER +SIMPLEST +SIMPLETON +SIMPLEX +SIMPLICITIES +SIMPLICITY +SIMPLIFICATION +SIMPLIFICATIONS +SIMPLIFIED +SIMPLIFIER +SIMPLIFIERS +SIMPLIFIES +SIMPLIFY +SIMPLIFYING +SIMPLISTIC +SIMPLY +SIMPSON +SIMS +SIMULA +SIMULA +SIMULATE +SIMULATED +SIMULATES +SIMULATING +SIMULATION +SIMULATIONS +SIMULATOR +SIMULATORS +SIMULCAST +SIMULTANEITY +SIMULTANEOUS +SIMULTANEOUSLY +SINAI +SINATRA +SINBAD +SINCE +SINCERE +SINCERELY +SINCEREST +SINCERITY +SINCLAIR +SINE +SINES +SINEW +SINEWS +SINEWY +SINFUL +SINFULLY +SINFULNESS +SING +SINGABLE +SINGAPORE +SINGBORG +SINGE +SINGED +SINGER +SINGERS +SINGING +SINGINGLY +SINGLE +SINGLED +SINGLEHANDED +SINGLENESS +SINGLES +SINGLET +SINGLETON +SINGLETONS +SINGLING +SINGLY +SINGS +SINGSONG +SINGULAR +SINGULARITIES +SINGULARITY +SINGULARLY +SINISTER +SINK +SINKED +SINKER +SINKERS +SINKHOLE +SINKING +SINKS +SINNED +SINNER +SINNERS +SINNING +SINS +SINUOUS +SINUS +SINUSOID +SINUSOIDAL +SINUSOIDS +SIOUX +SIP +SIPHON +SIPHONING +SIPPING +SIPS +SIR +SIRE +SIRED +SIREN +SIRENS +SIRES +SIRIUS +SIRS +SIRUP +SISTER +SISTERLY +SISTERS +SISTINE +SISYPHEAN +SISYPHUS +SIT +SITE +SITED +SITES +SITING +SITS +SITTER +SITTERS +SITTING +SITTINGS +SITU +SITUATE +SITUATED +SITUATES +SITUATING +SITUATION +SITUATIONAL +SITUATIONALLY +SITUATIONS +SIVA +SIX +SIXES +SIXFOLD +SIXGUN +SIXPENCE +SIXTEEN +SIXTEENS +SIXTEENTH +SIXTH +SIXTIES +SIXTIETH +SIXTY +SIZABLE +SIZE +SIZED +SIZES +SIZING +SIZINGS +SIZZLE +SKATE +SKATED +SKATER +SKATERS +SKATES +SKATING +SKELETAL +SKELETON +SKELETONS +SKEPTIC +SKEPTICAL +SKEPTICALLY +SKEPTICISM +SKEPTICS +SKETCH +SKETCHBOOK +SKETCHED +SKETCHES +SKETCHILY +SKETCHING +SKETCHPAD +SKETCHY +SKEW +SKEWED +SKEWER +SKEWERS +SKEWING +SKEWS +SKI +SKID +SKIDDING +SKIED +SKIES +SKIFF +SKIING +SKILL +SKILLED +SKILLET +SKILLFUL +SKILLFULLY +SKILLFULNESS +SKILLS +SKIM +SKIMMED +SKIMMING +SKIMP +SKIMPED +SKIMPING +SKIMPS +SKIMPY +SKIMS +SKIN +SKINDIVE +SKINNED +SKINNER +SKINNERS +SKINNING +SKINNY +SKINS +SKIP +SKIPPED +SKIPPER +SKIPPERS +SKIPPING +SKIPPY +SKIPS +SKIRMISH +SKIRMISHED +SKIRMISHER +SKIRMISHERS +SKIRMISHES +SKIRMISHING +SKIRT +SKIRTED +SKIRTING +SKIRTS +SKIS +SKIT +SKOPJE +SKULK +SKULKED +SKULKER +SKULKING +SKULKS +SKULL +SKULLCAP +SKULLDUGGERY +SKULLS +SKUNK +SKUNKS +SKY +SKYE +SKYHOOK +SKYJACK +SKYLARK +SKYLARKING +SKYLARKS +SKYLIGHT +SKYLIGHTS +SKYLINE +SKYROCKETS +SKYSCRAPER +SKYSCRAPERS +SLAB +SLACK +SLACKEN +SLACKER +SLACKING +SLACKLY +SLACKNESS +SLACKS +SLAIN +SLAM +SLAMMED +SLAMMING +SLAMS +SLANDER +SLANDERER +SLANDEROUS +SLANDERS +SLANG +SLANT +SLANTED +SLANTING +SLANTS +SLAP +SLAPPED +SLAPPING +SLAPS +SLAPSTICK +SLASH +SLASHED +SLASHES +SLASHING +SLAT +SLATE +SLATED +SLATER +SLATES +SLATS +SLAUGHTER +SLAUGHTERED +SLAUGHTERHOUSE +SLAUGHTERING +SLAUGHTERS +SLAV +SLAVE +SLAVER +SLAVERY +SLAVES +SLAVIC +SLAVICIZE +SLAVICIZES +SLAVISH +SLAVIZATION +SLAVIZATIONS +SLAVIZE +SLAVIZES +SLAVONIC +SLAVONICIZE +SLAVONICIZES +SLAVS +SLAY +SLAYER +SLAYERS +SLAYING +SLAYS +SLED +SLEDDING +SLEDGE +SLEDGEHAMMER +SLEDGES +SLEDS +SLEEK +SLEEP +SLEEPER +SLEEPERS +SLEEPILY +SLEEPINESS +SLEEPING +SLEEPLESS +SLEEPLESSLY +SLEEPLESSNESS +SLEEPS +SLEEPWALK +SLEEPY +SLEET +SLEEVE +SLEEVES +SLEIGH +SLEIGHS +SLEIGHT +SLENDER +SLENDERER +SLEPT +SLESINGER +SLEUTH +SLEW +SLEWING +SLICE +SLICED +SLICER +SLICERS +SLICES +SLICING +SLICK +SLICKER +SLICKERS +SLICKS +SLID +SLIDE +SLIDER +SLIDERS +SLIDES +SLIDING +SLIGHT +SLIGHTED +SLIGHTER +SLIGHTEST +SLIGHTING +SLIGHTLY +SLIGHTNESS +SLIGHTS +SLIM +SLIME +SLIMED +SLIMLY +SLIMY +SLING +SLINGING +SLINGS +SLINGSHOT +SLIP +SLIPPAGE +SLIPPED +SLIPPER +SLIPPERINESS +SLIPPERS +SLIPPERY +SLIPPING +SLIPS +SLIT +SLITHER +SLITS +SLIVER +SLOAN +SLOANE +SLOB +SLOCUM +SLOGAN +SLOGANS +SLOOP +SLOP +SLOPE +SLOPED +SLOPER +SLOPERS +SLOPES +SLOPING +SLOPPED +SLOPPINESS +SLOPPING +SLOPPY +SLOPS +SLOT +SLOTH +SLOTHFUL +SLOTHS +SLOTS +SLOTTED +SLOTTING +SLOUCH +SLOUCHED +SLOUCHES +SLOUCHING +SLOVAKIA +SLOVENIA +SLOW +SLOWDOWN +SLOWED +SLOWER +SLOWEST +SLOWING +SLOWLY +SLOWNESS +SLOWS +SLUDGE +SLUG +SLUGGISH +SLUGGISHLY +SLUGGISHNESS +SLUGS +SLUICE +SLUM +SLUMBER +SLUMBERED +SLUMMING +SLUMP +SLUMPED +SLUMPS +SLUMS +SLUNG +SLUR +SLURP +SLURRING +SLURRY +SLURS +SLY +SLYLY +SMACK +SMACKED +SMACKING +SMACKS +SMALL +SMALLER +SMALLEST +SMALLEY +SMALLISH +SMALLNESS +SMALLPOX +SMALLTIME +SMALLWOOD +SMART +SMARTED +SMARTER +SMARTEST +SMARTLY +SMARTNESS +SMASH +SMASHED +SMASHER +SMASHERS +SMASHES +SMASHING +SMASHINGLY +SMATTERING +SMEAR +SMEARED +SMEARING +SMEARS +SMELL +SMELLED +SMELLING +SMELLS +SMELLY +SMELT +SMELTER +SMELTS +SMILE +SMILED +SMILES +SMILING +SMILINGLY +SMIRK +SMITE +SMITH +SMITHEREENS +SMITHFIELD +SMITHS +SMITHSON +SMITHSONIAN +SMITHTOWN +SMITHY +SMITTEN +SMOCK +SMOCKING +SMOCKS +SMOG +SMOKABLE +SMOKE +SMOKED +SMOKER +SMOKERS +SMOKES +SMOKESCREEN +SMOKESTACK +SMOKIES +SMOKING +SMOKY +SMOLDER +SMOLDERED +SMOLDERING +SMOLDERS +SMOOCH +SMOOTH +SMOOTHBORE +SMOOTHED +SMOOTHER +SMOOTHES +SMOOTHEST +SMOOTHING +SMOOTHLY +SMOOTHNESS +SMOTE +SMOTHER +SMOTHERED +SMOTHERING +SMOTHERS +SMUCKER +SMUDGE +SMUG +SMUGGLE +SMUGGLED +SMUGGLER +SMUGGLERS +SMUGGLES +SMUGGLING +SMUT +SMUTTY +SMYRNA +SMYTHE +SNACK +SNAFU +SNAG +SNAIL +SNAILS +SNAKE +SNAKED +SNAKELIKE +SNAKES +SNAP +SNAPDRAGON +SNAPPED +SNAPPER +SNAPPERS +SNAPPILY +SNAPPING +SNAPPY +SNAPS +SNAPSHOT +SNAPSHOTS +SNARE +SNARED +SNARES +SNARING +SNARK +SNARL +SNARLED +SNARLING +SNATCH +SNATCHED +SNATCHES +SNATCHING +SNAZZY +SNEAD +SNEAK +SNEAKED +SNEAKER +SNEAKERS +SNEAKIER +SNEAKIEST +SNEAKILY +SNEAKINESS +SNEAKING +SNEAKS +SNEAKY +SNEED +SNEER +SNEERED +SNEERING +SNEERS +SNEEZE +SNEEZED +SNEEZES +SNEEZING +SNIDER +SNIFF +SNIFFED +SNIFFING +SNIFFLE +SNIFFS +SNIFTER +SNIGGER +SNIP +SNIPE +SNIPPET +SNIVEL +SNOB +SNOBBERY +SNOBBISH +SNODGRASS +SNOOP +SNOOPED +SNOOPING +SNOOPS +SNOOPY +SNORE +SNORED +SNORES +SNORING +SNORKEL +SNORT +SNORTED +SNORTING +SNORTS +SNOTTY +SNOUT +SNOUTS +SNOW +SNOWBALL +SNOWBELT +SNOWED +SNOWFALL +SNOWFLAKE +SNOWIER +SNOWIEST +SNOWILY +SNOWING +SNOWMAN +SNOWMEN +SNOWS +SNOWSHOE +SNOWSHOES +SNOWSTORM +SNOWY +SNUB +SNUFF +SNUFFED +SNUFFER +SNUFFING +SNUFFS +SNUG +SNUGGLE +SNUGGLED +SNUGGLES +SNUGGLING +SNUGLY +SNUGNESS +SNYDER +SOAK +SOAKED +SOAKING +SOAKS +SOAP +SOAPED +SOAPING +SOAPS +SOAPY +SOAR +SOARED +SOARING +SOARS +SOB +SOBBING +SOBER +SOBERED +SOBERING +SOBERLY +SOBERNESS +SOBERS +SOBRIETY +SOBS +SOCCER +SOCIABILITY +SOCIABLE +SOCIABLY +SOCIAL +SOCIALISM +SOCIALIST +SOCIALISTS +SOCIALIZE +SOCIALIZED +SOCIALIZES +SOCIALIZING +SOCIALLY +SOCIETAL +SOCIETIES +SOCIETY +SOCIOECONOMIC +SOCIOLOGICAL +SOCIOLOGICALLY +SOCIOLOGIST +SOCIOLOGISTS +SOCIOLOGY +SOCK +SOCKED +SOCKET +SOCKETS +SOCKING +SOCKS +SOCRATES +SOCRATIC +SOD +SODA +SODDY +SODIUM +SODOMY +SODS +SOFA +SOFAS +SOFIA +SOFT +SOFTBALL +SOFTEN +SOFTENED +SOFTENING +SOFTENS +SOFTER +SOFTEST +SOFTLY +SOFTNESS +SOFTWARE +SOFTWARES +SOGGY +SOIL +SOILED +SOILING +SOILS +SOIREE +SOJOURN +SOJOURNER +SOJOURNERS +SOL +SOLACE +SOLACED +SOLAR +SOLD +SOLDER +SOLDERED +SOLDIER +SOLDIERING +SOLDIERLY +SOLDIERS +SOLE +SOLELY +SOLEMN +SOLEMNITY +SOLEMNLY +SOLEMNNESS +SOLENOID +SOLES +SOLICIT +SOLICITATION +SOLICITED +SOLICITING +SOLICITOR +SOLICITOUS +SOLICITS +SOLICITUDE +SOLID +SOLIDARITY +SOLIDIFICATION +SOLIDIFIED +SOLIDIFIES +SOLIDIFY +SOLIDIFYING +SOLIDITY +SOLIDLY +SOLIDNESS +SOLIDS +SOLILOQUY +SOLITAIRE +SOLITARY +SOLITUDE +SOLITUDES +SOLLY +SOLO +SOLOMON +SOLON +SOLOS +SOLOVIEV +SOLSTICE +SOLUBILITY +SOLUBLE +SOLUTION +SOLUTIONS +SOLVABLE +SOLVE +SOLVED +SOLVENT +SOLVENTS +SOLVER +SOLVERS +SOLVES +SOLVING +SOMALI +SOMALIA +SOMALIS +SOMATIC +SOMBER +SOMBERLY +SOME +SOMEBODY +SOMEDAY +SOMEHOW +SOMEONE +SOMEPLACE +SOMERS +SOMERSAULT +SOMERSET +SOMERVILLE +SOMETHING +SOMETIME +SOMETIMES +SOMEWHAT +SOMEWHERE +SOMMELIER +SOMMERFELD +SOMNOLENT +SON +SONAR +SONATA +SONENBERG +SONG +SONGBOOK +SONGS +SONIC +SONNET +SONNETS +SONNY +SONOMA +SONORA +SONS +SONY +SOON +SOONER +SOONEST +SOOT +SOOTH +SOOTHE +SOOTHED +SOOTHER +SOOTHES +SOOTHING +SOOTHSAYER +SOPHIA +SOPHIAS +SOPHIE +SOPHISTICATED +SOPHISTICATION +SOPHISTRY +SOPHOCLEAN +SOPHOCLES +SOPHOMORE +SOPHOMORES +SOPRANO +SORCERER +SORCERERS +SORCERY +SORDID +SORDIDLY +SORDIDNESS +SORE +SORELY +SORENESS +SORENSEN +SORENSON +SORER +SORES +SOREST +SORGHUM +SORORITY +SORREL +SORRENTINE +SORRIER +SORRIEST +SORROW +SORROWFUL +SORROWFULLY +SORROWS +SORRY +SORT +SORTED +SORTER +SORTERS +SORTIE +SORTING +SORTS +SOUGHT +SOUL +SOULFUL +SOULS +SOUND +SOUNDED +SOUNDER +SOUNDEST +SOUNDING +SOUNDINGS +SOUNDLY +SOUNDNESS +SOUNDPROOF +SOUNDS +SOUP +SOUPED +SOUPS +SOUR +SOURCE +SOURCES +SOURDOUGH +SOURED +SOURER +SOUREST +SOURING +SOURLY +SOURNESS +SOURS +SOUSA +SOUTH +SOUTHAMPTON +SOUTHBOUND +SOUTHEAST +SOUTHEASTERN +SOUTHERN +SOUTHERNER +SOUTHERNERS +SOUTHERNMOST +SOUTHERNWOOD +SOUTHEY +SOUTHFIELD +SOUTHLAND +SOUTHPAW +SOUTHWARD +SOUTHWEST +SOUTHWESTERN +SOUVENIR +SOVEREIGN +SOVEREIGNS +SOVEREIGNTY +SOVIET +SOVIETS +SOW +SOWN +SOY +SOYA +SOYBEAN +SPA +SPACE +SPACECRAFT +SPACED +SPACER +SPACERS +SPACES +SPACESHIP +SPACESHIPS +SPACESUIT +SPACEWAR +SPACING +SPACINGS +SPACIOUS +SPADED +SPADES +SPADING +SPAFFORD +SPAHN +SPAIN +SPALDING +SPAN +SPANDREL +SPANIARD +SPANIARDIZATION +SPANIARDIZATIONS +SPANIARDIZE +SPANIARDIZES +SPANIARDS +SPANIEL +SPANISH +SPANISHIZE +SPANISHIZES +SPANK +SPANKED +SPANKING +SPANKS +SPANNED +SPANNER +SPANNERS +SPANNING +SPANS +SPARC +SPARCSTATION +SPARE +SPARED +SPARELY +SPARENESS +SPARER +SPARES +SPAREST +SPARING +SPARINGLY +SPARK +SPARKED +SPARKING +SPARKLE +SPARKLING +SPARKMAN +SPARKS +SPARRING +SPARROW +SPARROWS +SPARSE +SPARSELY +SPARSENESS +SPARSER +SPARSEST +SPARTA +SPARTAN +SPARTANIZE +SPARTANIZES +SPASM +SPASTIC +SPAT +SPATE +SPATES +SPATIAL +SPATIALLY +SPATTER +SPATTERED +SPATULA +SPAULDING +SPAWN +SPAWNED +SPAWNING +SPAWNS +SPAYED +SPEAK +SPEAKABLE +SPEAKEASY +SPEAKER +SPEAKERPHONE +SPEAKERPHONES +SPEAKERS +SPEAKING +SPEAKS +SPEAR +SPEARED +SPEARMINT +SPEARS +SPEC +SPECIAL +SPECIALIST +SPECIALISTS +SPECIALIZATION +SPECIALIZATIONS +SPECIALIZE +SPECIALIZED +SPECIALIZES +SPECIALIZING +SPECIALLY +SPECIALS +SPECIALTIES +SPECIALTY +SPECIE +SPECIES +SPECIFIABLE +SPECIFIC +SPECIFICALLY +SPECIFICATION +SPECIFICATIONS +SPECIFICITY +SPECIFICS +SPECIFIED +SPECIFIER +SPECIFIERS +SPECIFIES +SPECIFY +SPECIFYING +SPECIMEN +SPECIMENS +SPECIOUS +SPECK +SPECKLE +SPECKLED +SPECKLES +SPECKS +SPECTACLE +SPECTACLED +SPECTACLES +SPECTACULAR +SPECTACULARLY +SPECTATOR +SPECTATORS +SPECTER +SPECTERS +SPECTOR +SPECTRA +SPECTRAL +SPECTROGRAM +SPECTROGRAMS +SPECTROGRAPH +SPECTROGRAPHIC +SPECTROGRAPHY +SPECTROMETER +SPECTROPHOTOMETER +SPECTROPHOTOMETRY +SPECTROSCOPE +SPECTROSCOPIC +SPECTROSCOPY +SPECTRUM +SPECULATE +SPECULATED +SPECULATES +SPECULATING +SPECULATION +SPECULATIONS +SPECULATIVE +SPECULATOR +SPECULATORS +SPED +SPEECH +SPEECHES +SPEECHLESS +SPEECHLESSNESS +SPEED +SPEEDBOAT +SPEEDED +SPEEDER +SPEEDERS +SPEEDILY +SPEEDING +SPEEDOMETER +SPEEDS +SPEEDUP +SPEEDUPS +SPEEDY +SPELL +SPELLBOUND +SPELLED +SPELLER +SPELLERS +SPELLING +SPELLINGS +SPELLS +SPENCER +SPENCERIAN +SPEND +SPENDER +SPENDERS +SPENDING +SPENDS +SPENGLERIAN +SPENT +SPERM +SPERRY +SPHERE +SPHERES +SPHERICAL +SPHERICALLY +SPHEROID +SPHEROIDAL +SPHINX +SPICA +SPICE +SPICED +SPICES +SPICINESS +SPICY +SPIDER +SPIDERS +SPIDERY +SPIEGEL +SPIES +SPIGOT +SPIKE +SPIKED +SPIKES +SPILL +SPILLED +SPILLER +SPILLING +SPILLS +SPILT +SPIN +SPINACH +SPINAL +SPINALLY +SPINDLE +SPINDLED +SPINDLING +SPINE +SPINNAKER +SPINNER +SPINNERS +SPINNING +SPINOFF +SPINS +SPINSTER +SPINY +SPIRAL +SPIRALED +SPIRALING +SPIRALLY +SPIRE +SPIRES +SPIRIT +SPIRITED +SPIRITEDLY +SPIRITING +SPIRITS +SPIRITUAL +SPIRITUALLY +SPIRITUALS +SPIRO +SPIT +SPITE +SPITED +SPITEFUL +SPITEFULLY +SPITEFULNESS +SPITES +SPITFIRE +SPITING +SPITS +SPITTING +SPITTLE +SPITZ +SPLASH +SPLASHED +SPLASHES +SPLASHING +SPLASHY +SPLEEN +SPLENDID +SPLENDIDLY +SPLENDOR +SPLENETIC +SPLICE +SPLICED +SPLICER +SPLICERS +SPLICES +SPLICING +SPLICINGS +SPLINE +SPLINES +SPLINT +SPLINTER +SPLINTERED +SPLINTERS +SPLINTERY +SPLIT +SPLITS +SPLITTER +SPLITTERS +SPLITTING +SPLURGE +SPOIL +SPOILAGE +SPOILED +SPOILER +SPOILERS +SPOILING +SPOILS +SPOKANE +SPOKE +SPOKED +SPOKEN +SPOKES +SPOKESMAN +SPOKESMEN +SPONGE +SPONGED +SPONGER +SPONGERS +SPONGES +SPONGING +SPONGY +SPONSOR +SPONSORED +SPONSORING +SPONSORS +SPONSORSHIP +SPONTANEITY +SPONTANEOUS +SPONTANEOUSLY +SPOOF +SPOOK +SPOOKY +SPOOL +SPOOLED +SPOOLER +SPOOLERS +SPOOLING +SPOOLS +SPOON +SPOONED +SPOONFUL +SPOONING +SPOONS +SPORADIC +SPORE +SPORES +SPORT +SPORTED +SPORTING +SPORTINGLY +SPORTIVE +SPORTS +SPORTSMAN +SPORTSMEN +SPORTSWEAR +SPORTSWRITER +SPORTSWRITING +SPORTY +SPOSATO +SPOT +SPOTLESS +SPOTLESSLY +SPOTLIGHT +SPOTS +SPOTTED +SPOTTER +SPOTTERS +SPOTTING +SPOTTY +SPOUSE +SPOUSES +SPOUT +SPOUTED +SPOUTING +SPOUTS +SPRAGUE +SPRAIN +SPRANG +SPRAWL +SPRAWLED +SPRAWLING +SPRAWLS +SPRAY +SPRAYED +SPRAYER +SPRAYING +SPRAYS +SPREAD +SPREADER +SPREADERS +SPREADING +SPREADINGS +SPREADS +SPREADSHEET +SPREE +SPREES +SPRIG +SPRIGHTLY +SPRING +SPRINGBOARD +SPRINGER +SPRINGERS +SPRINGFIELD +SPRINGIER +SPRINGIEST +SPRINGINESS +SPRINGING +SPRINGS +SPRINGTIME +SPRINGY +SPRINKLE +SPRINKLED +SPRINKLER +SPRINKLES +SPRINKLING +SPRINT +SPRINTED +SPRINTER +SPRINTERS +SPRINTING +SPRINTS +SPRITE +SPROCKET +SPROUL +SPROUT +SPROUTED +SPROUTING +SPRUCE +SPRUCED +SPRUNG +SPUDS +SPUN +SPUNK +SPUR +SPURIOUS +SPURN +SPURNED +SPURNING +SPURNS +SPURS +SPURT +SPURTED +SPURTING +SPURTS +SPUTTER +SPUTTERED +SPY +SPYGLASS +SPYING +SQUABBLE +SQUABBLED +SQUABBLES +SQUABBLING +SQUAD +SQUADRON +SQUADRONS +SQUADS +SQUALID +SQUALL +SQUALLS +SQUANDER +SQUARE +SQUARED +SQUARELY +SQUARENESS +SQUARER +SQUARES +SQUAREST +SQUARESVILLE +SQUARING +SQUASH +SQUASHED +SQUASHING +SQUAT +SQUATS +SQUATTING +SQUAW +SQUAWK +SQUAWKED +SQUAWKING +SQUAWKS +SQUEAK +SQUEAKED +SQUEAKING +SQUEAKS +SQUEAKY +SQUEAL +SQUEALED +SQUEALING +SQUEALS +SQUEAMISH +SQUEEZE +SQUEEZED +SQUEEZER +SQUEEZES +SQUEEZING +SQUELCH +SQUIBB +SQUID +SQUINT +SQUINTED +SQUINTING +SQUIRE +SQUIRES +SQUIRM +SQUIRMED +SQUIRMS +SQUIRMY +SQUIRREL +SQUIRRELED +SQUIRRELING +SQUIRRELS +SQUIRT +SQUISHY +SRI +STAB +STABBED +STABBING +STABILE +STABILITIES +STABILITY +STABILIZE +STABILIZED +STABILIZER +STABILIZERS +STABILIZES +STABILIZING +STABLE +STABLED +STABLER +STABLES +STABLING +STABLY +STABS +STACK +STACKED +STACKING +STACKS +STACY +STADIA +STADIUM +STAFF +STAFFED +STAFFER +STAFFERS +STAFFING +STAFFORD +STAFFORDSHIRE +STAFFS +STAG +STAGE +STAGECOACH +STAGECOACHES +STAGED +STAGER +STAGERS +STAGES +STAGGER +STAGGERED +STAGGERING +STAGGERS +STAGING +STAGNANT +STAGNATE +STAGNATION +STAGS +STAHL +STAID +STAIN +STAINED +STAINING +STAINLESS +STAINS +STAIR +STAIRCASE +STAIRCASES +STAIRS +STAIRWAY +STAIRWAYS +STAIRWELL +STAKE +STAKED +STAKES +STALACTITE +STALE +STALEMATE +STALEY +STALIN +STALINIST +STALINS +STALK +STALKED +STALKING +STALL +STALLED +STALLING +STALLINGS +STALLION +STALLS +STALWART +STALWARTLY +STAMEN +STAMENS +STAMFORD +STAMINA +STAMMER +STAMMERED +STAMMERER +STAMMERING +STAMMERS +STAMP +STAMPED +STAMPEDE +STAMPEDED +STAMPEDES +STAMPEDING +STAMPER +STAMPERS +STAMPING +STAMPS +STAN +STANCH +STANCHEST +STANCHION +STAND +STANDARD +STANDARDIZATION +STANDARDIZE +STANDARDIZED +STANDARDIZES +STANDARDIZING +STANDARDLY +STANDARDS +STANDBY +STANDING +STANDINGS +STANDISH +STANDOFF +STANDPOINT +STANDPOINTS +STANDS +STANDSTILL +STANFORD +STANHOPE +STANLEY +STANS +STANTON +STANZA +STANZAS +STAPHYLOCOCCUS +STAPLE +STAPLER +STAPLES +STAPLETON +STAPLING +STAR +STARBOARD +STARCH +STARCHED +STARDOM +STARE +STARED +STARER +STARES +STARFISH +STARGATE +STARING +STARK +STARKEY +STARKLY +STARLET +STARLIGHT +STARLING +STARR +STARRED +STARRING +STARRY +STARS +START +STARTED +STARTER +STARTERS +STARTING +STARTLE +STARTLED +STARTLES +STARTLING +STARTS +STARTUP +STARTUPS +STARVATION +STARVE +STARVED +STARVES +STARVING +STATE +STATED +STATELY +STATEMENT +STATEMENTS +STATEN +STATES +STATESMAN +STATESMANLIKE +STATESMEN +STATEWIDE +STATIC +STATICALLY +STATING +STATION +STATIONARY +STATIONED +STATIONER +STATIONERY +STATIONING +STATIONMASTER +STATIONS +STATISTIC +STATISTICAL +STATISTICALLY +STATISTICIAN +STATISTICIANS +STATISTICS +STATLER +STATUE +STATUES +STATUESQUE +STATUESQUELY +STATUESQUENESS +STATUETTE +STATURE +STATUS +STATUSES +STATUTE +STATUTES +STATUTORILY +STATUTORINESS +STATUTORY +STAUFFER +STAUNCH +STAUNCHEST +STAUNCHLY +STAUNTON +STAVE +STAVED +STAVES +STAY +STAYED +STAYING +STAYS +STEAD +STEADFAST +STEADFASTLY +STEADFASTNESS +STEADIED +STEADIER +STEADIES +STEADIEST +STEADILY +STEADINESS +STEADY +STEADYING +STEAK +STEAKS +STEAL +STEALER +STEALING +STEALS +STEALTH +STEALTHILY +STEALTHY +STEAM +STEAMBOAT +STEAMBOATS +STEAMED +STEAMER +STEAMERS +STEAMING +STEAMS +STEAMSHIP +STEAMSHIPS +STEAMY +STEARNS +STEED +STEEL +STEELE +STEELED +STEELERS +STEELING +STEELMAKER +STEELS +STEELY +STEEN +STEEP +STEEPED +STEEPER +STEEPEST +STEEPING +STEEPLE +STEEPLES +STEEPLY +STEEPNESS +STEEPS +STEER +STEERABLE +STEERED +STEERING +STEERS +STEFAN +STEGOSAURUS +STEINBECK +STEINBERG +STEINER +STELLA +STELLAR +STEM +STEMMED +STEMMING +STEMS +STENCH +STENCHES +STENCIL +STENCILS +STENDHAL +STENDLER +STENOGRAPHER +STENOGRAPHERS +STENOTYPE +STEP +STEPCHILD +STEPHAN +STEPHANIE +STEPHEN +STEPHENS +STEPHENSON +STEPMOTHER +STEPMOTHERS +STEPPED +STEPPER +STEPPING +STEPS +STEPSON +STEPWISE +STEREO +STEREOS +STEREOSCOPIC +STEREOTYPE +STEREOTYPED +STEREOTYPES +STEREOTYPICAL +STERILE +STERILIZATION +STERILIZATIONS +STERILIZE +STERILIZED +STERILIZER +STERILIZES +STERILIZING +STERLING +STERN +STERNBERG +STERNLY +STERNNESS +STERNO +STERNS +STETHOSCOPE +STETSON +STETSONS +STEUBEN +STEVE +STEVEDORE +STEVEN +STEVENS +STEVENSON +STEVIE +STEW +STEWARD +STEWARDESS +STEWARDS +STEWART +STEWED +STEWS +STICK +STICKER +STICKERS +STICKIER +STICKIEST +STICKILY +STICKINESS +STICKING +STICKLEBACK +STICKS +STICKY +STIFF +STIFFEN +STIFFENS +STIFFER +STIFFEST +STIFFLY +STIFFNESS +STIFFS +STIFLE +STIFLED +STIFLES +STIFLING +STIGMA +STIGMATA +STILE +STILES +STILETTO +STILL +STILLBIRTH +STILLBORN +STILLED +STILLER +STILLEST +STILLING +STILLNESS +STILLS +STILLWELL +STILT +STILTS +STIMSON +STIMULANT +STIMULANTS +STIMULATE +STIMULATED +STIMULATES +STIMULATING +STIMULATION +STIMULATIONS +STIMULATIVE +STIMULI +STIMULUS +STING +STINGING +STINGS +STINGY +STINK +STINKER +STINKERS +STINKING +STINKS +STINT +STIPEND +STIPENDS +STIPULATE +STIPULATED +STIPULATES +STIPULATING +STIPULATION +STIPULATIONS +STIR +STIRLING +STIRRED +STIRRER +STIRRERS +STIRRING +STIRRINGLY +STIRRINGS +STIRRUP +STIRS +STITCH +STITCHED +STITCHES +STITCHING +STOCHASTIC +STOCHASTICALLY +STOCK +STOCKADE +STOCKADES +STOCKBROKER +STOCKED +STOCKER +STOCKERS +STOCKHOLDER +STOCKHOLDERS +STOCKHOLM +STOCKING +STOCKINGS +STOCKPILE +STOCKROOM +STOCKS +STOCKTON +STOCKY +STODGY +STOICHIOMETRY +STOKE +STOKES +STOLE +STOLEN +STOLES +STOLID +STOMACH +STOMACHED +STOMACHER +STOMACHES +STOMACHING +STOMP +STONE +STONED +STONEHENGE +STONES +STONING +STONY +STOOD +STOOGE +STOOL +STOOP +STOOPED +STOOPING +STOOPS +STOP +STOPCOCK +STOPCOCKS +STOPGAP +STOPOVER +STOPPABLE +STOPPAGE +STOPPED +STOPPER +STOPPERS +STOPPING +STOPS +STOPWATCH +STORAGE +STORAGES +STORE +STORED +STOREHOUSE +STOREHOUSES +STOREKEEPER +STOREROOM +STORES +STOREY +STOREYED +STOREYS +STORIED +STORIES +STORING +STORK +STORKS +STORM +STORMED +STORMIER +STORMIEST +STORMINESS +STORMING +STORMS +STORMY +STORY +STORYBOARD +STORYTELLER +STOUFFER +STOUT +STOUTER +STOUTEST +STOUTLY +STOUTNESS +STOVE +STOVES +STOW +STOWE +STOWED +STRADDLE +STRAFE +STRAGGLE +STRAGGLED +STRAGGLER +STRAGGLERS +STRAGGLES +STRAGGLING +STRAIGHT +STRAIGHTAWAY +STRAIGHTEN +STRAIGHTENED +STRAIGHTENS +STRAIGHTER +STRAIGHTEST +STRAIGHTFORWARD +STRAIGHTFORWARDLY +STRAIGHTFORWARDNESS +STRAIGHTNESS +STRAIGHTWAY +STRAIN +STRAINED +STRAINER +STRAINERS +STRAINING +STRAINS +STRAIT +STRAITEN +STRAITS +STRAND +STRANDED +STRANDING +STRANDS +STRANGE +STRANGELY +STRANGENESS +STRANGER +STRANGERS +STRANGEST +STRANGLE +STRANGLED +STRANGLER +STRANGLERS +STRANGLES +STRANGLING +STRANGLINGS +STRANGULATION +STRANGULATIONS +STRAP +STRAPS +STRASBOURG +STRATAGEM +STRATAGEMS +STRATEGIC +STRATEGIES +STRATEGIST +STRATEGY +STRATFORD +STRATIFICATION +STRATIFICATIONS +STRATIFIED +STRATIFIES +STRATIFY +STRATOSPHERE +STRATOSPHERIC +STRATTON +STRATUM +STRAUSS +STRAVINSKY +STRAW +STRAWBERRIES +STRAWBERRY +STRAWS +STRAY +STRAYED +STRAYS +STREAK +STREAKED +STREAKS +STREAM +STREAMED +STREAMER +STREAMERS +STREAMING +STREAMLINE +STREAMLINED +STREAMLINER +STREAMLINES +STREAMLINING +STREAMS +STREET +STREETCAR +STREETCARS +STREETERS +STREETS +STRENGTH +STRENGTHEN +STRENGTHENED +STRENGTHENER +STRENGTHENING +STRENGTHENS +STRENGTHS +STRENUOUS +STRENUOUSLY +STREPTOCOCCUS +STRESS +STRESSED +STRESSES +STRESSFUL +STRESSING +STRETCH +STRETCHED +STRETCHER +STRETCHERS +STRETCHES +STRETCHING +STREW +STREWN +STREWS +STRICKEN +STRICKLAND +STRICT +STRICTER +STRICTEST +STRICTLY +STRICTNESS +STRICTURE +STRIDE +STRIDER +STRIDES +STRIDING +STRIFE +STRIKE +STRIKEBREAKER +STRIKER +STRIKERS +STRIKES +STRIKING +STRIKINGLY +STRINDBERG +STRING +STRINGED +STRINGENT +STRINGENTLY +STRINGER +STRINGERS +STRINGIER +STRINGIEST +STRINGINESS +STRINGING +STRINGS +STRINGY +STRIP +STRIPE +STRIPED +STRIPES +STRIPPED +STRIPPER +STRIPPERS +STRIPPING +STRIPS +STRIPTEASE +STRIVE +STRIVEN +STRIVES +STRIVING +STRIVINGS +STROBE +STROBED +STROBES +STROBOSCOPIC +STRODE +STROKE +STROKED +STROKER +STROKERS +STROKES +STROKING +STROLL +STROLLED +STROLLER +STROLLING +STROLLS +STROM +STROMBERG +STRONG +STRONGER +STRONGEST +STRONGHEART +STRONGHOLD +STRONGLY +STRONTIUM +STROVE +STRUCK +STRUCTURAL +STRUCTURALLY +STRUCTURE +STRUCTURED +STRUCTURER +STRUCTURES +STRUCTURING +STRUGGLE +STRUGGLED +STRUGGLES +STRUGGLING +STRUNG +STRUT +STRUTS +STRUTTING +STRYCHNINE +STU +STUART +STUB +STUBBLE +STUBBLEFIELD +STUBBLEFIELDS +STUBBORN +STUBBORNLY +STUBBORNNESS +STUBBY +STUBS +STUCCO +STUCK +STUD +STUDEBAKER +STUDENT +STUDENTS +STUDIED +STUDIES +STUDIO +STUDIOS +STUDIOUS +STUDIOUSLY +STUDS +STUDY +STUDYING +STUFF +STUFFED +STUFFIER +STUFFIEST +STUFFING +STUFFS +STUFFY +STUMBLE +STUMBLED +STUMBLES +STUMBLING +STUMP +STUMPED +STUMPING +STUMPS +STUN +STUNG +STUNNING +STUNNINGLY +STUNT +STUNTS +STUPEFY +STUPEFYING +STUPENDOUS +STUPENDOUSLY +STUPID +STUPIDEST +STUPIDITIES +STUPIDITY +STUPIDLY +STUPOR +STURBRIDGE +STURDINESS +STURDY +STURGEON +STURM +STUTTER +STUTTGART +STUYVESANT +STYGIAN +STYLE +STYLED +STYLER +STYLERS +STYLES +STYLI +STYLING +STYLISH +STYLISHLY +STYLISHNESS +STYLISTIC +STYLISTICALLY +STYLIZED +STYLUS +STYROFOAM +STYX +SUAVE +SUB +SUBATOMIC +SUBCHANNEL +SUBCHANNELS +SUBCLASS +SUBCLASSES +SUBCOMMITTEES +SUBCOMPONENT +SUBCOMPONENTS +SUBCOMPUTATION +SUBCOMPUTATIONS +SUBCONSCIOUS +SUBCONSCIOUSLY +SUBCULTURE +SUBCULTURES +SUBCYCLE +SUBCYCLES +SUBDIRECTORIES +SUBDIRECTORY +SUBDIVIDE +SUBDIVIDED +SUBDIVIDES +SUBDIVIDING +SUBDIVISION +SUBDIVISIONS +SUBDOMAINS +SUBDUE +SUBDUED +SUBDUES +SUBDUING +SUBEXPRESSION +SUBEXPRESSIONS +SUBFIELD +SUBFIELDS +SUBFILE +SUBFILES +SUBGOAL +SUBGOALS +SUBGRAPH +SUBGRAPHS +SUBGROUP +SUBGROUPS +SUBINTERVAL +SUBINTERVALS +SUBJECT +SUBJECTED +SUBJECTING +SUBJECTION +SUBJECTIVE +SUBJECTIVELY +SUBJECTIVITY +SUBJECTS +SUBLANGUAGE +SUBLANGUAGES +SUBLAYER +SUBLAYERS +SUBLIMATION +SUBLIMATIONS +SUBLIME +SUBLIMED +SUBLIST +SUBLISTS +SUBMARINE +SUBMARINER +SUBMARINERS +SUBMARINES +SUBMERGE +SUBMERGED +SUBMERGES +SUBMERGING +SUBMISSION +SUBMISSIONS +SUBMISSIVE +SUBMIT +SUBMITS +SUBMITTAL +SUBMITTED +SUBMITTING +SUBMODE +SUBMODES +SUBMODULE +SUBMODULES +SUBMULTIPLEXED +SUBNET +SUBNETS +SUBNETWORK +SUBNETWORKS +SUBOPTIMAL +SUBORDINATE +SUBORDINATED +SUBORDINATES +SUBORDINATION +SUBPARTS +SUBPHASES +SUBPOENA +SUBPROBLEM +SUBPROBLEMS +SUBPROCESSES +SUBPROGRAM +SUBPROGRAMS +SUBPROJECT +SUBPROOF +SUBPROOFS +SUBRANGE +SUBRANGES +SUBROUTINE +SUBROUTINES +SUBS +SUBSCHEMA +SUBSCHEMAS +SUBSCRIBE +SUBSCRIBED +SUBSCRIBER +SUBSCRIBERS +SUBSCRIBES +SUBSCRIBING +SUBSCRIPT +SUBSCRIPTED +SUBSCRIPTING +SUBSCRIPTION +SUBSCRIPTIONS +SUBSCRIPTS +SUBSECTION +SUBSECTIONS +SUBSEGMENT +SUBSEGMENTS +SUBSEQUENCE +SUBSEQUENCES +SUBSEQUENT +SUBSEQUENTLY +SUBSERVIENT +SUBSET +SUBSETS +SUBSIDE +SUBSIDED +SUBSIDES +SUBSIDIARIES +SUBSIDIARY +SUBSIDIES +SUBSIDING +SUBSIDIZE +SUBSIDIZED +SUBSIDIZES +SUBSIDIZING +SUBSIDY +SUBSIST +SUBSISTED +SUBSISTENCE +SUBSISTENT +SUBSISTING +SUBSISTS +SUBSLOT +SUBSLOTS +SUBSPACE +SUBSPACES +SUBSTANCE +SUBSTANCES +SUBSTANTIAL +SUBSTANTIALLY +SUBSTANTIATE +SUBSTANTIATED +SUBSTANTIATES +SUBSTANTIATING +SUBSTANTIATION +SUBSTANTIATIONS +SUBSTANTIVE +SUBSTANTIVELY +SUBSTANTIVITY +SUBSTATION +SUBSTATIONS +SUBSTITUTABILITY +SUBSTITUTABLE +SUBSTITUTE +SUBSTITUTED +SUBSTITUTES +SUBSTITUTING +SUBSTITUTION +SUBSTITUTIONS +SUBSTRATE +SUBSTRATES +SUBSTRING +SUBSTRINGS +SUBSTRUCTURE +SUBSTRUCTURES +SUBSUME +SUBSUMED +SUBSUMES +SUBSUMING +SUBSYSTEM +SUBSYSTEMS +SUBTASK +SUBTASKS +SUBTERFUGE +SUBTERRANEAN +SUBTITLE +SUBTITLED +SUBTITLES +SUBTLE +SUBTLENESS +SUBTLER +SUBTLEST +SUBTLETIES +SUBTLETY +SUBTLY +SUBTOTAL +SUBTRACT +SUBTRACTED +SUBTRACTING +SUBTRACTION +SUBTRACTIONS +SUBTRACTOR +SUBTRACTORS +SUBTRACTS +SUBTRAHEND +SUBTRAHENDS +SUBTREE +SUBTREES +SUBUNIT +SUBUNITS +SUBURB +SUBURBAN +SUBURBIA +SUBURBS +SUBVERSION +SUBVERSIVE +SUBVERT +SUBVERTED +SUBVERTER +SUBVERTING +SUBVERTS +SUBWAY +SUBWAYS +SUCCEED +SUCCEEDED +SUCCEEDING +SUCCEEDS +SUCCESS +SUCCESSES +SUCCESSFUL +SUCCESSFULLY +SUCCESSION +SUCCESSIONS +SUCCESSIVE +SUCCESSIVELY +SUCCESSOR +SUCCESSORS +SUCCINCT +SUCCINCTLY +SUCCINCTNESS +SUCCOR +SUCCUMB +SUCCUMBED +SUCCUMBING +SUCCUMBS +SUCH +SUCK +SUCKED +SUCKER +SUCKERS +SUCKING +SUCKLE +SUCKLING +SUCKS +SUCTION +SUDAN +SUDANESE +SUDANIC +SUDDEN +SUDDENLY +SUDDENNESS +SUDS +SUDSING +SUE +SUED +SUES +SUEZ +SUFFER +SUFFERANCE +SUFFERED +SUFFERER +SUFFERERS +SUFFERING +SUFFERINGS +SUFFERS +SUFFICE +SUFFICED +SUFFICES +SUFFICIENCY +SUFFICIENT +SUFFICIENTLY +SUFFICING +SUFFIX +SUFFIXED +SUFFIXER +SUFFIXES +SUFFIXING +SUFFOCATE +SUFFOCATED +SUFFOCATES +SUFFOCATING +SUFFOCATION +SUFFOLK +SUFFRAGE +SUFFRAGETTE +SUGAR +SUGARED +SUGARING +SUGARINGS +SUGARS +SUGGEST +SUGGESTED +SUGGESTIBLE +SUGGESTING +SUGGESTION +SUGGESTIONS +SUGGESTIVE +SUGGESTIVELY +SUGGESTS +SUICIDAL +SUICIDALLY +SUICIDE +SUICIDES +SUING +SUIT +SUITABILITY +SUITABLE +SUITABLENESS +SUITABLY +SUITCASE +SUITCASES +SUITE +SUITED +SUITERS +SUITES +SUITING +SUITOR +SUITORS +SUITS +SUKARNO +SULFA +SULFUR +SULFURIC +SULFUROUS +SULK +SULKED +SULKINESS +SULKING +SULKS +SULKY +SULLEN +SULLENLY +SULLENNESS +SULLIVAN +SULPHATE +SULPHUR +SULPHURED +SULPHURIC +SULTAN +SULTANS +SULTRY +SULZBERGER +SUM +SUMAC +SUMATRA +SUMERIA +SUMERIAN +SUMMAND +SUMMANDS +SUMMARIES +SUMMARILY +SUMMARIZATION +SUMMARIZATIONS +SUMMARIZE +SUMMARIZED +SUMMARIZES +SUMMARIZING +SUMMARY +SUMMATION +SUMMATIONS +SUMMED +SUMMER +SUMMERDALE +SUMMERS +SUMMERTIME +SUMMING +SUMMIT +SUMMITRY +SUMMON +SUMMONED +SUMMONER +SUMMONERS +SUMMONING +SUMMONS +SUMMONSES +SUMNER +SUMPTUOUS +SUMS +SUMTER +SUN +SUNBEAM +SUNBEAMS +SUNBELT +SUNBONNET +SUNBURN +SUNBURNT +SUNDAY +SUNDAYS +SUNDER +SUNDIAL +SUNDOWN +SUNDRIES +SUNDRY +SUNFLOWER +SUNG +SUNGLASS +SUNGLASSES +SUNK +SUNKEN +SUNLIGHT +SUNLIT +SUNNED +SUNNING +SUNNY +SUNNYVALE +SUNRISE +SUNS +SUNSET +SUNSHINE +SUNSPOT +SUNTAN +SUNTANNED +SUNTANNING +SUPER +SUPERB +SUPERBLOCK +SUPERBLY +SUPERCOMPUTER +SUPERCOMPUTERS +SUPEREGO +SUPEREGOS +SUPERFICIAL +SUPERFICIALLY +SUPERFLUITIES +SUPERFLUITY +SUPERFLUOUS +SUPERFLUOUSLY +SUPERGROUP +SUPERGROUPS +SUPERHUMAN +SUPERHUMANLY +SUPERIMPOSE +SUPERIMPOSED +SUPERIMPOSES +SUPERIMPOSING +SUPERINTEND +SUPERINTENDENT +SUPERINTENDENTS +SUPERIOR +SUPERIORITY +SUPERIORS +SUPERLATIVE +SUPERLATIVELY +SUPERLATIVES +SUPERMARKET +SUPERMARKETS +SUPERMINI +SUPERMINIS +SUPERNATURAL +SUPERPOSE +SUPERPOSED +SUPERPOSES +SUPERPOSING +SUPERPOSITION +SUPERSCRIPT +SUPERSCRIPTED +SUPERSCRIPTING +SUPERSCRIPTS +SUPERSEDE +SUPERSEDED +SUPERSEDES +SUPERSEDING +SUPERSET +SUPERSETS +SUPERSTITION +SUPERSTITIONS +SUPERSTITIOUS +SUPERUSER +SUPERVISE +SUPERVISED +SUPERVISES +SUPERVISING +SUPERVISION +SUPERVISOR +SUPERVISORS +SUPERVISORY +SUPINE +SUPPER +SUPPERS +SUPPLANT +SUPPLANTED +SUPPLANTING +SUPPLANTS +SUPPLE +SUPPLEMENT +SUPPLEMENTAL +SUPPLEMENTARY +SUPPLEMENTED +SUPPLEMENTING +SUPPLEMENTS +SUPPLENESS +SUPPLICATION +SUPPLIED +SUPPLIER +SUPPLIERS +SUPPLIES +SUPPLY +SUPPLYING +SUPPORT +SUPPORTABLE +SUPPORTED +SUPPORTER +SUPPORTERS +SUPPORTING +SUPPORTINGLY +SUPPORTIVE +SUPPORTIVELY +SUPPORTS +SUPPOSE +SUPPOSED +SUPPOSEDLY +SUPPOSES +SUPPOSING +SUPPOSITION +SUPPOSITIONS +SUPPRESS +SUPPRESSED +SUPPRESSES +SUPPRESSING +SUPPRESSION +SUPPRESSOR +SUPPRESSORS +SUPRANATIONAL +SUPREMACY +SUPREME +SUPREMELY +SURCHARGE +SURE +SURELY +SURENESS +SURETIES +SURETY +SURF +SURFACE +SURFACED +SURFACENESS +SURFACES +SURFACING +SURGE +SURGED +SURGEON +SURGEONS +SURGERY +SURGES +SURGICAL +SURGICALLY +SURGING +SURLINESS +SURLY +SURMISE +SURMISED +SURMISES +SURMOUNT +SURMOUNTED +SURMOUNTING +SURMOUNTS +SURNAME +SURNAMES +SURPASS +SURPASSED +SURPASSES +SURPASSING +SURPLUS +SURPLUSES +SURPRISE +SURPRISED +SURPRISES +SURPRISING +SURPRISINGLY +SURREAL +SURRENDER +SURRENDERED +SURRENDERING +SURRENDERS +SURREPTITIOUS +SURREY +SURROGATE +SURROGATES +SURROUND +SURROUNDED +SURROUNDING +SURROUNDINGS +SURROUNDS +SURTAX +SURVEY +SURVEYED +SURVEYING +SURVEYOR +SURVEYORS +SURVEYS +SURVIVAL +SURVIVALS +SURVIVE +SURVIVED +SURVIVES +SURVIVING +SURVIVOR +SURVIVORS +SUS +SUSAN +SUSANNE +SUSCEPTIBLE +SUSIE +SUSPECT +SUSPECTED +SUSPECTING +SUSPECTS +SUSPEND +SUSPENDED +SUSPENDER +SUSPENDERS +SUSPENDING +SUSPENDS +SUSPENSE +SUSPENSES +SUSPENSION +SUSPENSIONS +SUSPICION +SUSPICIONS +SUSPICIOUS +SUSPICIOUSLY +SUSQUEHANNA +SUSSEX +SUSTAIN +SUSTAINED +SUSTAINING +SUSTAINS +SUSTENANCE +SUTHERLAND +SUTTON +SUTURE +SUTURES +SUWANEE +SUZANNE +SUZERAINTY +SUZUKI +SVELTE +SVETLANA +SWAB +SWABBING +SWAGGER +SWAGGERED +SWAGGERING +SWAHILI +SWAIN +SWAINS +SWALLOW +SWALLOWED +SWALLOWING +SWALLOWS +SWALLOWTAIL +SWAM +SWAMI +SWAMP +SWAMPED +SWAMPING +SWAMPS +SWAMPY +SWAN +SWANK +SWANKY +SWANLIKE +SWANS +SWANSEA +SWANSON +SWAP +SWAPPED +SWAPPING +SWAPS +SWARM +SWARMED +SWARMING +SWARMS +SWARTHMORE +SWARTHOUT +SWARTHY +SWARTZ +SWASTIKA +SWAT +SWATTED +SWAY +SWAYED +SWAYING +SWAZILAND +SWEAR +SWEARER +SWEARING +SWEARS +SWEAT +SWEATED +SWEATER +SWEATERS +SWEATING +SWEATS +SWEATSHIRT +SWEATY +SWEDE +SWEDEN +SWEDES +SWEDISH +SWEENEY +SWEENEYS +SWEEP +SWEEPER +SWEEPERS +SWEEPING +SWEEPINGS +SWEEPS +SWEEPSTAKES +SWEET +SWEETEN +SWEETENED +SWEETENER +SWEETENERS +SWEETENING +SWEETENINGS +SWEETENS +SWEETER +SWEETEST +SWEETHEART +SWEETHEARTS +SWEETISH +SWEETLY +SWEETNESS +SWEETS +SWELL +SWELLED +SWELLING +SWELLINGS +SWELLS +SWELTER +SWENSON +SWEPT +SWERVE +SWERVED +SWERVES +SWERVING +SWIFT +SWIFTER +SWIFTEST +SWIFTLY +SWIFTNESS +SWIM +SWIMMER +SWIMMERS +SWIMMING +SWIMMINGLY +SWIMS +SWIMSUIT +SWINBURNE +SWINDLE +SWINE +SWING +SWINGER +SWINGERS +SWINGING +SWINGS +SWINK +SWIPE +SWIRL +SWIRLED +SWIRLING +SWISH +SWISHED +SWISS +SWITCH +SWITCHBLADE +SWITCHBOARD +SWITCHBOARDS +SWITCHED +SWITCHER +SWITCHERS +SWITCHES +SWITCHING +SWITCHINGS +SWITCHMAN +SWITZER +SWITZERLAND +SWIVEL +SWIZZLE +SWOLLEN +SWOON +SWOOP +SWOOPED +SWOOPING +SWOOPS +SWORD +SWORDFISH +SWORDS +SWORE +SWORN +SWUM +SWUNG +SYBIL +SYCAMORE +SYCOPHANT +SYCOPHANTIC +SYDNEY +SYKES +SYLLABLE +SYLLABLES +SYLLOGISM +SYLLOGISMS +SYLLOGISTIC +SYLOW +SYLVAN +SYLVANIA +SYLVESTER +SYLVIA +SYLVIE +SYMBIOSIS +SYMBIOTIC +SYMBOL +SYMBOLIC +SYMBOLICALLY +SYMBOLICS +SYMBOLISM +SYMBOLIZATION +SYMBOLIZE +SYMBOLIZED +SYMBOLIZES +SYMBOLIZING +SYMBOLS +SYMINGTON +SYMMETRIC +SYMMETRICAL +SYMMETRICALLY +SYMMETRIES +SYMMETRY +SYMPATHETIC +SYMPATHIES +SYMPATHIZE +SYMPATHIZED +SYMPATHIZER +SYMPATHIZERS +SYMPATHIZES +SYMPATHIZING +SYMPATHIZINGLY +SYMPATHY +SYMPHONIC +SYMPHONIES +SYMPHONY +SYMPOSIA +SYMPOSIUM +SYMPOSIUMS +SYMPTOM +SYMPTOMATIC +SYMPTOMS +SYNAGOGUE +SYNAPSE +SYNAPSES +SYNAPTIC +SYNCHRONISM +SYNCHRONIZATION +SYNCHRONIZE +SYNCHRONIZED +SYNCHRONIZER +SYNCHRONIZERS +SYNCHRONIZES +SYNCHRONIZING +SYNCHRONOUS +SYNCHRONOUSLY +SYNCHRONY +SYNCHROTRON +SYNCOPATE +SYNDICATE +SYNDICATED +SYNDICATES +SYNDICATION +SYNDROME +SYNDROMES +SYNERGISM +SYNERGISTIC +SYNERGY +SYNGE +SYNOD +SYNONYM +SYNONYMOUS +SYNONYMOUSLY +SYNONYMS +SYNOPSES +SYNOPSIS +SYNTACTIC +SYNTACTICAL +SYNTACTICALLY +SYNTAX +SYNTAXES +SYNTHESIS +SYNTHESIZE +SYNTHESIZED +SYNTHESIZER +SYNTHESIZERS +SYNTHESIZES +SYNTHESIZING +SYNTHETIC +SYNTHETICS +SYRACUSE +SYRIA +SYRIAN +SYRIANIZE +SYRIANIZES +SYRIANS +SYRINGE +SYRINGES +SYRUP +SYRUPY +SYSTEM +SYSTEMATIC +SYSTEMATICALLY +SYSTEMATIZE +SYSTEMATIZED +SYSTEMATIZES +SYSTEMATIZING +SYSTEMIC +SYSTEMS +SYSTEMWIDE +SZILARD +TAB +TABERNACLE +TABERNACLES +TABLE +TABLEAU +TABLEAUS +TABLECLOTH +TABLECLOTHS +TABLED +TABLES +TABLESPOON +TABLESPOONFUL +TABLESPOONFULS +TABLESPOONS +TABLET +TABLETS +TABLING +TABOO +TABOOS +TABS +TABULAR +TABULATE +TABULATED +TABULATES +TABULATING +TABULATION +TABULATIONS +TABULATOR +TABULATORS +TACHOMETER +TACHOMETERS +TACIT +TACITLY +TACITUS +TACK +TACKED +TACKING +TACKLE +TACKLES +TACOMA +TACT +TACTIC +TACTICS +TACTILE +TAFT +TAG +TAGGED +TAGGING +TAGS +TAHITI +TAHOE +TAIL +TAILED +TAILING +TAILOR +TAILORED +TAILORING +TAILORS +TAILS +TAINT +TAINTED +TAIPEI +TAIWAN +TAIWANESE +TAKE +TAKEN +TAKER +TAKERS +TAKES +TAKING +TAKINGS +TALE +TALENT +TALENTED +TALENTS +TALES +TALK +TALKATIVE +TALKATIVELY +TALKATIVENESS +TALKED +TALKER +TALKERS +TALKIE +TALKING +TALKS +TALL +TALLADEGA +TALLAHASSEE +TALLAHATCHIE +TALLAHOOSA +TALLCHIEF +TALLER +TALLEST +TALLEYRAND +TALLNESS +TALLOW +TALLY +TALMUD +TALMUDISM +TALMUDIZATION +TALMUDIZATIONS +TALMUDIZE +TALMUDIZES +TAME +TAMED +TAMELY +TAMENESS +TAMER +TAMES +TAMIL +TAMING +TAMMANY +TAMMANYIZE +TAMMANYIZES +TAMPA +TAMPER +TAMPERED +TAMPERING +TAMPERS +TAN +TANAKA +TANANARIVE +TANDEM +TANG +TANGANYIKA +TANGENT +TANGENTIAL +TANGENTS +TANGIBLE +TANGIBLY +TANGLE +TANGLED +TANGY +TANK +TANKER +TANKERS +TANKS +TANNENBAUM +TANNER +TANNERS +TANTALIZING +TANTALIZINGLY +TANTALUS +TANTAMOUNT +TANTRUM +TANTRUMS +TANYA +TANZANIA +TAOISM +TAOIST +TAOS +TAP +TAPE +TAPED +TAPER +TAPERED +TAPERING +TAPERS +TAPES +TAPESTRIES +TAPESTRY +TAPING +TAPINGS +TAPPED +TAPPER +TAPPERS +TAPPING +TAPROOT +TAPROOTS +TAPS +TAR +TARA +TARBELL +TARDINESS +TARDY +TARGET +TARGETED +TARGETING +TARGETS +TARIFF +TARIFFS +TARRY +TARRYTOWN +TART +TARTARY +TARTLY +TARTNESS +TARTUFFE +TARZAN +TASK +TASKED +TASKING +TASKS +TASMANIA +TASS +TASSEL +TASSELS +TASTE +TASTED +TASTEFUL +TASTEFULLY +TASTEFULNESS +TASTELESS +TASTELESSLY +TASTER +TASTERS +TASTES +TASTING +TATE +TATTER +TATTERED +TATTOO +TATTOOED +TATTOOS +TAU +TAUGHT +TAUNT +TAUNTED +TAUNTER +TAUNTING +TAUNTS +TAURUS +TAUT +TAUTLY +TAUTNESS +TAUTOLOGICAL +TAUTOLOGICALLY +TAUTOLOGIES +TAUTOLOGY +TAVERN +TAVERNS +TAWNEY +TAWNY +TAX +TAXABLE +TAXATION +TAXED +TAXES +TAXI +TAXICAB +TAXICABS +TAXIED +TAXIING +TAXING +TAXIS +TAXONOMIC +TAXONOMICALLY +TAXONOMY +TAXPAYER +TAXPAYERS +TAYLOR +TAYLORIZE +TAYLORIZES +TAYLORS +TCHAIKOVSKY +TEA +TEACH +TEACHABLE +TEACHER +TEACHERS +TEACHES +TEACHING +TEACHINGS +TEACUP +TEAM +TEAMED +TEAMING +TEAMS +TEAR +TEARED +TEARFUL +TEARFULLY +TEARING +TEARS +TEAS +TEASE +TEASED +TEASES +TEASING +TEASPOON +TEASPOONFUL +TEASPOONFULS +TEASPOONS +TECHNICAL +TECHNICALITIES +TECHNICALITY +TECHNICALLY +TECHNICIAN +TECHNICIANS +TECHNION +TECHNIQUE +TECHNIQUES +TECHNOLOGICAL +TECHNOLOGICALLY +TECHNOLOGIES +TECHNOLOGIST +TECHNOLOGISTS +TECHNOLOGY +TED +TEDDY +TEDIOUS +TEDIOUSLY +TEDIOUSNESS +TEDIUM +TEEM +TEEMED +TEEMING +TEEMS +TEEN +TEENAGE +TEENAGED +TEENAGER +TEENAGERS +TEENS +TEETH +TEETHE +TEETHED +TEETHES +TEETHING +TEFLON +TEGUCIGALPA +TEHERAN +TEHRAN +TEKTRONIX +TELECOMMUNICATION +TELECOMMUNICATIONS +TELEDYNE +TELEFUNKEN +TELEGRAM +TELEGRAMS +TELEGRAPH +TELEGRAPHED +TELEGRAPHER +TELEGRAPHERS +TELEGRAPHIC +TELEGRAPHING +TELEGRAPHS +TELEMANN +TELEMETRY +TELEOLOGICAL +TELEOLOGICALLY +TELEOLOGY +TELEPATHY +TELEPHONE +TELEPHONED +TELEPHONER +TELEPHONERS +TELEPHONES +TELEPHONIC +TELEPHONING +TELEPHONY +TELEPROCESSING +TELESCOPE +TELESCOPED +TELESCOPES +TELESCOPING +TELETEX +TELETEXT +TELETYPE +TELETYPES +TELEVISE +TELEVISED +TELEVISES +TELEVISING +TELEVISION +TELEVISIONS +TELEVISOR +TELEVISORS +TELEX +TELL +TELLER +TELLERS +TELLING +TELLS +TELNET +TELNET +TEMPER +TEMPERAMENT +TEMPERAMENTAL +TEMPERAMENTS +TEMPERANCE +TEMPERATE +TEMPERATELY +TEMPERATENESS +TEMPERATURE +TEMPERATURES +TEMPERED +TEMPERING +TEMPERS +TEMPEST +TEMPESTUOUS +TEMPESTUOUSLY +TEMPLATE +TEMPLATES +TEMPLE +TEMPLEMAN +TEMPLES +TEMPLETON +TEMPORAL +TEMPORALLY +TEMPORARIES +TEMPORARILY +TEMPORARY +TEMPT +TEMPTATION +TEMPTATIONS +TEMPTED +TEMPTER +TEMPTERS +TEMPTING +TEMPTINGLY +TEMPTS +TEN +TENACIOUS +TENACIOUSLY +TENANT +TENANTS +TEND +TENDED +TENDENCIES +TENDENCY +TENDER +TENDERLY +TENDERNESS +TENDERS +TENDING +TENDS +TENEMENT +TENEMENTS +TENEX +TENEX +TENFOLD +TENNECO +TENNESSEE +TENNEY +TENNIS +TENNYSON +TENOR +TENORS +TENS +TENSE +TENSED +TENSELY +TENSENESS +TENSER +TENSES +TENSEST +TENSING +TENSION +TENSIONS +TENT +TENTACLE +TENTACLED +TENTACLES +TENTATIVE +TENTATIVELY +TENTED +TENTH +TENTING +TENTS +TENURE +TERESA +TERM +TERMED +TERMINAL +TERMINALLY +TERMINALS +TERMINATE +TERMINATED +TERMINATES +TERMINATING +TERMINATION +TERMINATIONS +TERMINATOR +TERMINATORS +TERMING +TERMINOLOGIES +TERMINOLOGY +TERMINUS +TERMS +TERMWISE +TERNARY +TERPSICHORE +TERRA +TERRACE +TERRACED +TERRACES +TERRAIN +TERRAINS +TERRAN +TERRE +TERRESTRIAL +TERRESTRIALS +TERRIBLE +TERRIBLY +TERRIER +TERRIERS +TERRIFIC +TERRIFIED +TERRIFIES +TERRIFY +TERRIFYING +TERRITORIAL +TERRITORIES +TERRITORY +TERROR +TERRORISM +TERRORIST +TERRORISTIC +TERRORISTS +TERRORIZE +TERRORIZED +TERRORIZES +TERRORIZING +TERRORS +TERTIARY +TESS +TESSIE +TEST +TESTABILITY +TESTABLE +TESTAMENT +TESTAMENTS +TESTED +TESTER +TESTERS +TESTICLE +TESTICLES +TESTIFIED +TESTIFIER +TESTIFIERS +TESTIFIES +TESTIFY +TESTIFYING +TESTIMONIES +TESTIMONY +TESTING +TESTINGS +TESTS +TEUTONIC +TEX +TEX +TEXACO +TEXAN +TEXANS +TEXAS +TEXASES +TEXT +TEXTBOOK +TEXTBOOKS +TEXTILE +TEXTILES +TEXTRON +TEXTS +TEXTUAL +TEXTUALLY +TEXTURE +TEXTURED +TEXTURES +THAI +THAILAND +THALIA +THAMES +THAN +THANK +THANKED +THANKFUL +THANKFULLY +THANKFULNESS +THANKING +THANKLESS +THANKLESSLY +THANKLESSNESS +THANKS +THANKSGIVING +THANKSGIVINGS +THAT +THATCH +THATCHES +THATS +THAW +THAWED +THAWING +THAWS +THAYER +THE +THEA +THEATER +THEATERS +THEATRICAL +THEATRICALLY +THEATRICALS +THEBES +THEFT +THEFTS +THEIR +THEIRS +THELMA +THEM +THEMATIC +THEME +THEMES +THEMSELVES +THEN +THENCE +THENCEFORTH +THEODORE +THEODOSIAN +THEODOSIUS +THEOLOGICAL +THEOLOGY +THEOREM +THEOREMS +THEORETIC +THEORETICAL +THEORETICALLY +THEORETICIANS +THEORIES +THEORIST +THEORISTS +THEORIZATION +THEORIZATIONS +THEORIZE +THEORIZED +THEORIZER +THEORIZERS +THEORIZES +THEORIZING +THEORY +THERAPEUTIC +THERAPIES +THERAPIST +THERAPISTS +THERAPY +THERE +THEREABOUTS +THEREAFTER +THEREBY +THEREFORE +THEREIN +THEREOF +THEREON +THERESA +THERETO +THEREUPON +THEREWITH +THERMAL +THERMODYNAMIC +THERMODYNAMICS +THERMOFAX +THERMOMETER +THERMOMETERS +THERMOSTAT +THERMOSTATS +THESE +THESES +THESEUS +THESIS +THESSALONIAN +THESSALY +THETIS +THEY +THICK +THICKEN +THICKENS +THICKER +THICKEST +THICKET +THICKETS +THICKLY +THICKNESS +THIEF +THIENSVILLE +THIEVE +THIEVES +THIEVING +THIGH +THIGHS +THIMBLE +THIMBLES +THIMBU +THIN +THING +THINGS +THINK +THINKABLE +THINKABLY +THINKER +THINKERS +THINKING +THINKS +THINLY +THINNER +THINNESS +THINNEST +THIRD +THIRDLY +THIRDS +THIRST +THIRSTED +THIRSTS +THIRSTY +THIRTEEN +THIRTEENS +THIRTEENTH +THIRTIES +THIRTIETH +THIRTY +THIS +THISTLE +THOMAS +THOMISTIC +THOMPSON +THOMSON +THONG +THOR +THOREAU +THORN +THORNBURG +THORNS +THORNTON +THORNY +THOROUGH +THOROUGHFARE +THOROUGHFARES +THOROUGHLY +THOROUGHNESS +THORPE +THORSTEIN +THOSE +THOUGH +THOUGHT +THOUGHTFUL +THOUGHTFULLY +THOUGHTFULNESS +THOUGHTLESS +THOUGHTLESSLY +THOUGHTLESSNESS +THOUGHTS +THOUSAND +THOUSANDS +THOUSANDTH +THRACE +THRACIAN +THRASH +THRASHED +THRASHER +THRASHES +THRASHING +THREAD +THREADED +THREADER +THREADERS +THREADING +THREADS +THREAT +THREATEN +THREATENED +THREATENING +THREATENS +THREATS +THREE +THREEFOLD +THREES +THREESCORE +THRESHOLD +THRESHOLDS +THREW +THRICE +THRIFT +THRIFTY +THRILL +THRILLED +THRILLER +THRILLERS +THRILLING +THRILLINGLY +THRILLS +THRIVE +THRIVED +THRIVES +THRIVING +THROAT +THROATED +THROATS +THROB +THROBBED +THROBBING +THROBS +THRONE +THRONEBERRY +THRONES +THRONG +THRONGS +THROTTLE +THROTTLED +THROTTLES +THROTTLING +THROUGH +THROUGHOUT +THROUGHPUT +THROW +THROWER +THROWING +THROWN +THROWS +THRUSH +THRUST +THRUSTER +THRUSTERS +THRUSTING +THRUSTS +THUBAN +THUD +THUDS +THUG +THUGS +THULE +THUMB +THUMBED +THUMBING +THUMBS +THUMP +THUMPED +THUMPING +THUNDER +THUNDERBOLT +THUNDERBOLTS +THUNDERED +THUNDERER +THUNDERERS +THUNDERING +THUNDERS +THUNDERSTORM +THUNDERSTORMS +THURBER +THURMAN +THURSDAY +THURSDAYS +THUS +THUSLY +THWART +THWARTED +THWARTING +THWARTS +THYSELF +TIBER +TIBET +TIBETAN +TIBURON +TICK +TICKED +TICKER +TICKERS +TICKET +TICKETS +TICKING +TICKLE +TICKLED +TICKLES +TICKLING +TICKLISH +TICKS +TICONDEROGA +TIDAL +TIDALLY +TIDE +TIDED +TIDES +TIDIED +TIDINESS +TIDING +TIDINGS +TIDY +TIDYING +TIE +TIECK +TIED +TIENTSIN +TIER +TIERS +TIES +TIFFANY +TIGER +TIGERS +TIGHT +TIGHTEN +TIGHTENED +TIGHTENER +TIGHTENERS +TIGHTENING +TIGHTENINGS +TIGHTENS +TIGHTER +TIGHTEST +TIGHTLY +TIGHTNESS +TIGRIS +TIJUANA +TILDE +TILE +TILED +TILES +TILING +TILL +TILLABLE +TILLED +TILLER +TILLERS +TILLICH +TILLIE +TILLING +TILLS +TILT +TILTED +TILTING +TILTS +TIM +TIMBER +TIMBERED +TIMBERING +TIMBERS +TIME +TIMED +TIMELESS +TIMELESSLY +TIMELESSNESS +TIMELY +TIMEOUT +TIMEOUTS +TIMER +TIMERS +TIMES +TIMESHARE +TIMESHARES +TIMESHARING +TIMESTAMP +TIMESTAMPS +TIMETABLE +TIMETABLES +TIMEX +TIMID +TIMIDITY +TIMIDLY +TIMING +TIMINGS +TIMMY +TIMON +TIMONIZE +TIMONIZES +TIMS +TIN +TINA +TINCTURE +TINGE +TINGED +TINGLE +TINGLED +TINGLES +TINGLING +TINIER +TINIEST +TINILY +TININESS +TINKER +TINKERED +TINKERING +TINKERS +TINKLE +TINKLED +TINKLES +TINKLING +TINNIER +TINNIEST +TINNILY +TINNINESS +TINNY +TINS +TINSELTOWN +TINT +TINTED +TINTING +TINTS +TINY +TIOGA +TIP +TIPPECANOE +TIPPED +TIPPER +TIPPERARY +TIPPERS +TIPPING +TIPS +TIPTOE +TIRANA +TIRE +TIRED +TIREDLY +TIRELESS +TIRELESSLY +TIRELESSNESS +TIRES +TIRESOME +TIRESOMELY +TIRESOMENESS +TIRING +TISSUE +TISSUES +TIT +TITAN +TITHE +TITHER +TITHES +TITHING +TITLE +TITLED +TITLES +TITO +TITS +TITTER +TITTERS +TITUS +TOAD +TOADS +TOAST +TOASTED +TOASTER +TOASTING +TOASTS +TOBACCO +TOBAGO +TOBY +TODAY +TODAYS +TODD +TOE +TOES +TOGETHER +TOGETHERNESS +TOGGLE +TOGGLED +TOGGLES +TOGGLING +TOGO +TOIL +TOILED +TOILER +TOILET +TOILETS +TOILING +TOILS +TOKEN +TOKENS +TOKYO +TOLAND +TOLD +TOLEDO +TOLERABILITY +TOLERABLE +TOLERABLY +TOLERANCE +TOLERANCES +TOLERANT +TOLERANTLY +TOLERATE +TOLERATED +TOLERATES +TOLERATING +TOLERATION +TOLL +TOLLED +TOLLEY +TOLLS +TOLSTOY +TOM +TOMAHAWK +TOMAHAWKS +TOMATO +TOMATOES +TOMB +TOMBIGBEE +TOMBS +TOMLINSON +TOMMIE +TOMOGRAPHY +TOMORROW +TOMORROWS +TOMPKINS +TON +TONE +TONED +TONER +TONES +TONGS +TONGUE +TONGUED +TONGUES +TONI +TONIC +TONICS +TONIGHT +TONING +TONIO +TONNAGE +TONS +TONSIL +TOO +TOOK +TOOL +TOOLED +TOOLER +TOOLERS +TOOLING +TOOLS +TOOMEY +TOOTH +TOOTHBRUSH +TOOTHBRUSHES +TOOTHPASTE +TOOTHPICK +TOOTHPICKS +TOP +TOPEKA +TOPER +TOPIC +TOPICAL +TOPICALLY +TOPICS +TOPMOST +TOPOGRAPHY +TOPOLOGICAL +TOPOLOGIES +TOPOLOGY +TOPPLE +TOPPLED +TOPPLES +TOPPLING +TOPS +TOPSY +TORAH +TORCH +TORCHES +TORE +TORIES +TORMENT +TORMENTED +TORMENTER +TORMENTERS +TORMENTING +TORN +TORNADO +TORNADOES +TORONTO +TORPEDO +TORPEDOES +TORQUE +TORQUEMADA +TORRANCE +TORRENT +TORRENTS +TORRID +TORTOISE +TORTOISES +TORTURE +TORTURED +TORTURER +TORTURERS +TORTURES +TORTURING +TORUS +TORUSES +TORY +TORYIZE +TORYIZES +TOSCA +TOSCANINI +TOSHIBA +TOSS +TOSSED +TOSSES +TOSSING +TOTAL +TOTALED +TOTALING +TOTALITIES +TOTALITY +TOTALLED +TOTALLER +TOTALLERS +TOTALLING +TOTALLY +TOTALS +TOTO +TOTTER +TOTTERED +TOTTERING +TOTTERS +TOUCH +TOUCHABLE +TOUCHED +TOUCHES +TOUCHIER +TOUCHIEST +TOUCHILY +TOUCHINESS +TOUCHING +TOUCHINGLY +TOUCHY +TOUGH +TOUGHEN +TOUGHER +TOUGHEST +TOUGHLY +TOUGHNESS +TOULOUSE +TOUR +TOURED +TOURING +TOURIST +TOURISTS +TOURNAMENT +TOURNAMENTS +TOURS +TOW +TOWARD +TOWARDS +TOWED +TOWEL +TOWELING +TOWELLED +TOWELLING +TOWELS +TOWER +TOWERED +TOWERING +TOWERS +TOWN +TOWNLEY +TOWNS +TOWNSEND +TOWNSHIP +TOWNSHIPS +TOWSLEY +TOY +TOYED +TOYING +TOYNBEE +TOYOTA +TOYS +TRACE +TRACEABLE +TRACED +TRACER +TRACERS +TRACES +TRACING +TRACINGS +TRACK +TRACKED +TRACKER +TRACKERS +TRACKING +TRACKS +TRACT +TRACTABILITY +TRACTABLE +TRACTARIANS +TRACTIVE +TRACTOR +TRACTORS +TRACTS +TRACY +TRADE +TRADED +TRADEMARK +TRADEMARKS +TRADEOFF +TRADEOFFS +TRADER +TRADERS +TRADES +TRADESMAN +TRADING +TRADITION +TRADITIONAL +TRADITIONALLY +TRADITIONS +TRAFFIC +TRAFFICKED +TRAFFICKER +TRAFFICKERS +TRAFFICKING +TRAFFICS +TRAGEDIES +TRAGEDY +TRAGIC +TRAGICALLY +TRAIL +TRAILED +TRAILER +TRAILERS +TRAILING +TRAILINGS +TRAILS +TRAIN +TRAINED +TRAINEE +TRAINEES +TRAINER +TRAINERS +TRAINING +TRAINS +TRAIT +TRAITOR +TRAITORS +TRAITS +TRAJECTORIES +TRAJECTORY +TRAMP +TRAMPED +TRAMPING +TRAMPLE +TRAMPLED +TRAMPLER +TRAMPLES +TRAMPLING +TRAMPS +TRANCE +TRANCES +TRANQUIL +TRANQUILITY +TRANQUILLY +TRANSACT +TRANSACTION +TRANSACTIONS +TRANSATLANTIC +TRANSCEIVE +TRANSCEIVER +TRANSCEIVERS +TRANSCEND +TRANSCENDED +TRANSCENDENT +TRANSCENDING +TRANSCENDS +TRANSCONTINENTAL +TRANSCRIBE +TRANSCRIBED +TRANSCRIBER +TRANSCRIBERS +TRANSCRIBES +TRANSCRIBING +TRANSCRIPT +TRANSCRIPTION +TRANSCRIPTIONS +TRANSCRIPTS +TRANSFER +TRANSFERABILITY +TRANSFERABLE +TRANSFERAL +TRANSFERALS +TRANSFERENCE +TRANSFERRED +TRANSFERRER +TRANSFERRERS +TRANSFERRING +TRANSFERS +TRANSFINITE +TRANSFORM +TRANSFORMABLE +TRANSFORMATION +TRANSFORMATIONAL +TRANSFORMATIONS +TRANSFORMED +TRANSFORMER +TRANSFORMERS +TRANSFORMING +TRANSFORMS +TRANSGRESS +TRANSGRESSED +TRANSGRESSION +TRANSGRESSIONS +TRANSIENCE +TRANSIENCY +TRANSIENT +TRANSIENTLY +TRANSIENTS +TRANSISTOR +TRANSISTORIZE +TRANSISTORIZED +TRANSISTORIZING +TRANSISTORS +TRANSIT +TRANSITE +TRANSITION +TRANSITIONAL +TRANSITIONED +TRANSITIONS +TRANSITIVE +TRANSITIVELY +TRANSITIVENESS +TRANSITIVITY +TRANSITORY +TRANSLATABILITY +TRANSLATABLE +TRANSLATE +TRANSLATED +TRANSLATES +TRANSLATING +TRANSLATION +TRANSLATIONAL +TRANSLATIONS +TRANSLATOR +TRANSLATORS +TRANSLUCENT +TRANSMISSION +TRANSMISSIONS +TRANSMIT +TRANSMITS +TRANSMITTAL +TRANSMITTED +TRANSMITTER +TRANSMITTERS +TRANSMITTING +TRANSMOGRIFICATION +TRANSMOGRIFY +TRANSPACIFIC +TRANSPARENCIES +TRANSPARENCY +TRANSPARENT +TRANSPARENTLY +TRANSPIRE +TRANSPIRED +TRANSPIRES +TRANSPIRING +TRANSPLANT +TRANSPLANTED +TRANSPLANTING +TRANSPLANTS +TRANSPONDER +TRANSPONDERS +TRANSPORT +TRANSPORTABILITY +TRANSPORTATION +TRANSPORTED +TRANSPORTER +TRANSPORTERS +TRANSPORTING +TRANSPORTS +TRANSPOSE +TRANSPOSED +TRANSPOSES +TRANSPOSING +TRANSPOSITION +TRANSPUTER +TRANSVAAL +TRANSYLVANIA +TRAP +TRAPEZOID +TRAPEZOIDAL +TRAPEZOIDS +TRAPPED +TRAPPER +TRAPPERS +TRAPPING +TRAPPINGS +TRAPS +TRASH +TRASTEVERE +TRAUMA +TRAUMATIC +TRAVAIL +TRAVEL +TRAVELED +TRAVELER +TRAVELERS +TRAVELING +TRAVELINGS +TRAVELS +TRAVERSAL +TRAVERSALS +TRAVERSE +TRAVERSED +TRAVERSES +TRAVERSING +TRAVESTIES +TRAVESTY +TRAVIS +TRAY +TRAYS +TREACHERIES +TREACHEROUS +TREACHEROUSLY +TREACHERY +TREAD +TREADING +TREADS +TREADWELL +TREASON +TREASURE +TREASURED +TREASURER +TREASURES +TREASURIES +TREASURING +TREASURY +TREAT +TREATED +TREATIES +TREATING +TREATISE +TREATISES +TREATMENT +TREATMENTS +TREATS +TREATY +TREBLE +TREE +TREES +TREETOP +TREETOPS +TREK +TREKS +TREMBLE +TREMBLED +TREMBLES +TREMBLING +TREMENDOUS +TREMENDOUSLY +TREMOR +TREMORS +TRENCH +TRENCHER +TRENCHES +TREND +TRENDING +TRENDS +TRENTON +TRESPASS +TRESPASSED +TRESPASSER +TRESPASSERS +TRESPASSES +TRESS +TRESSES +TREVELYAN +TRIAL +TRIALS +TRIANGLE +TRIANGLES +TRIANGULAR +TRIANGULARLY +TRIANGULUM +TRIANON +TRIASSIC +TRIBAL +TRIBE +TRIBES +TRIBUNAL +TRIBUNALS +TRIBUNE +TRIBUNES +TRIBUTARY +TRIBUTE +TRIBUTES +TRICERATOPS +TRICHINELLA +TRICHOTOMY +TRICK +TRICKED +TRICKIER +TRICKIEST +TRICKINESS +TRICKING +TRICKLE +TRICKLED +TRICKLES +TRICKLING +TRICKS +TRICKY +TRIED +TRIER +TRIERS +TRIES +TRIFLE +TRIFLER +TRIFLES +TRIFLING +TRIGGER +TRIGGERED +TRIGGERING +TRIGGERS +TRIGONOMETRIC +TRIGONOMETRY +TRIGRAM +TRIGRAMS +TRIHEDRAL +TRILATERAL +TRILL +TRILLED +TRILLION +TRILLIONS +TRILLIONTH +TRIM +TRIMBLE +TRIMLY +TRIMMED +TRIMMER +TRIMMEST +TRIMMING +TRIMMINGS +TRIMNESS +TRIMS +TRINIDAD +TRINKET +TRINKETS +TRIO +TRIP +TRIPLE +TRIPLED +TRIPLES +TRIPLET +TRIPLETS +TRIPLETT +TRIPLING +TRIPOD +TRIPS +TRISTAN +TRIUMPH +TRIUMPHAL +TRIUMPHANT +TRIUMPHANTLY +TRIUMPHED +TRIUMPHING +TRIUMPHS +TRIVIA +TRIVIAL +TRIVIALITIES +TRIVIALITY +TRIVIALLY +TROBRIAND +TROD +TROJAN +TROLL +TROLLEY +TROLLEYS +TROLLS +TROOP +TROOPER +TROOPERS +TROOPS +TROPEZ +TROPHIES +TROPHY +TROPIC +TROPICAL +TROPICS +TROT +TROTS +TROTSKY +TROUBLE +TROUBLED +TROUBLEMAKER +TROUBLEMAKERS +TROUBLES +TROUBLESHOOT +TROUBLESHOOTER +TROUBLESHOOTERS +TROUBLESHOOTING +TROUBLESHOOTS +TROUBLESOME +TROUBLESOMELY +TROUBLING +TROUGH +TROUSER +TROUSERS +TROUT +TROUTMAN +TROWEL +TROWELS +TROY +TRUANT +TRUANTS +TRUCE +TRUCK +TRUCKED +TRUCKEE +TRUCKER +TRUCKERS +TRUCKING +TRUCKS +TRUDEAU +TRUDGE +TRUDGED +TRUDY +TRUE +TRUED +TRUER +TRUES +TRUEST +TRUING +TRUISM +TRUISMS +TRUJILLO +TRUK +TRULY +TRUMAN +TRUMBULL +TRUMP +TRUMPED +TRUMPET +TRUMPETER +TRUMPS +TRUNCATE +TRUNCATED +TRUNCATES +TRUNCATING +TRUNCATION +TRUNCATIONS +TRUNK +TRUNKS +TRUST +TRUSTED +TRUSTEE +TRUSTEES +TRUSTFUL +TRUSTFULLY +TRUSTFULNESS +TRUSTING +TRUSTINGLY +TRUSTS +TRUSTWORTHINESS +TRUSTWORTHY +TRUSTY +TRUTH +TRUTHFUL +TRUTHFULLY +TRUTHFULNESS +TRUTHS +TRY +TRYING +TSUNEMATSU +TUB +TUBE +TUBER +TUBERCULOSIS +TUBERS +TUBES +TUBING +TUBS +TUCK +TUCKED +TUCKER +TUCKING +TUCKS +TUCSON +TUDOR +TUESDAY +TUESDAYS +TUFT +TUFTS +TUG +TUGS +TUITION +TULANE +TULIP +TULIPS +TULSA +TUMBLE +TUMBLED +TUMBLER +TUMBLERS +TUMBLES +TUMBLING +TUMOR +TUMORS +TUMULT +TUMULTS +TUMULTUOUS +TUNABLE +TUNE +TUNED +TUNER +TUNERS +TUNES +TUNIC +TUNICS +TUNING +TUNIS +TUNISIA +TUNISIAN +TUNNEL +TUNNELED +TUNNELS +TUPLE +TUPLES +TURBAN +TURBANS +TURBULENCE +TURBULENT +TURBULENTLY +TURF +TURGID +TURGIDLY +TURIN +TURING +TURKEY +TURKEYS +TURKISH +TURKIZE +TURKIZES +TURMOIL +TURMOILS +TURN +TURNABLE +TURNAROUND +TURNED +TURNER +TURNERS +TURNING +TURNINGS +TURNIP +TURNIPS +TURNOVER +TURNS +TURPENTINE +TURQUOISE +TURRET +TURRETS +TURTLE +TURTLENECK +TURTLES +TUSCALOOSA +TUSCAN +TUSCANIZE +TUSCANIZES +TUSCANY +TUSCARORA +TUSKEGEE +TUTANKHAMEN +TUTANKHAMON +TUTANKHAMUN +TUTENKHAMON +TUTOR +TUTORED +TUTORIAL +TUTORIALS +TUTORING +TUTORS +TUTTLE +TWAIN +TWANG +TWAS +TWEED +TWELFTH +TWELVE +TWELVES +TWENTIES +TWENTIETH +TWENTY +TWICE +TWIG +TWIGS +TWILIGHT +TWILIGHTS +TWILL +TWIN +TWINE +TWINED +TWINER +TWINKLE +TWINKLED +TWINKLER +TWINKLES +TWINKLING +TWINS +TWIRL +TWIRLED +TWIRLER +TWIRLING +TWIRLS +TWIST +TWISTED +TWISTER +TWISTERS +TWISTING +TWISTS +TWITCH +TWITCHED +TWITCHING +TWITTER +TWITTERED +TWITTERING +TWO +TWOFOLD +TWOMBLY +TWOS +TYBURN +TYING +TYLER +TYLERIZE +TYLERIZES +TYNDALL +TYPE +TYPED +TYPEOUT +TYPES +TYPESETTER +TYPEWRITER +TYPEWRITERS +TYPHOID +TYPHON +TYPICAL +TYPICALLY +TYPICALNESS +TYPIFIED +TYPIFIES +TYPIFY +TYPIFYING +TYPING +TYPIST +TYPISTS +TYPO +TYPOGRAPHIC +TYPOGRAPHICAL +TYPOGRAPHICALLY +TYPOGRAPHY +TYRANNICAL +TYRANNOSAURUS +TYRANNY +TYRANT +TYRANTS +TYSON +TZELTAL +UBIQUITOUS +UBIQUITOUSLY +UBIQUITY +UDALL +UGANDA +UGH +UGLIER +UGLIEST +UGLINESS +UGLY +UKRAINE +UKRAINIAN +UKRAINIANS +ULAN +ULCER +ULCERS +ULLMAN +ULSTER +ULTIMATE +ULTIMATELY +ULTRA +ULTRASONIC +ULTRIX +ULTRIX +ULYSSES +UMBRAGE +UMBRELLA +UMBRELLAS +UMPIRE +UMPIRES +UNABATED +UNABBREVIATED +UNABLE +UNACCEPTABILITY +UNACCEPTABLE +UNACCEPTABLY +UNACCOUNTABLE +UNACCUSTOMED +UNACHIEVABLE +UNACKNOWLEDGED +UNADULTERATED +UNAESTHETICALLY +UNAFFECTED +UNAFFECTEDLY +UNAFFECTEDNESS +UNAIDED +UNALIENABILITY +UNALIENABLE +UNALTERABLY +UNALTERED +UNAMBIGUOUS +UNAMBIGUOUSLY +UNAMBITIOUS +UNANALYZABLE +UNANIMITY +UNANIMOUS +UNANIMOUSLY +UNANSWERABLE +UNANSWERED +UNANTICIPATED +UNARMED +UNARY +UNASSAILABLE +UNASSIGNED +UNASSISTED +UNATTAINABILITY +UNATTAINABLE +UNATTENDED +UNATTRACTIVE +UNATTRACTIVELY +UNAUTHORIZED +UNAVAILABILITY +UNAVAILABLE +UNAVOIDABLE +UNAVOIDABLY +UNAWARE +UNAWARENESS +UNAWARES +UNBALANCED +UNBEARABLE +UNBECOMING +UNBELIEVABLE +UNBIASED +UNBIND +UNBLOCK +UNBLOCKED +UNBLOCKING +UNBLOCKS +UNBORN +UNBOUND +UNBOUNDED +UNBREAKABLE +UNBRIDLED +UNBROKEN +UNBUFFERED +UNCANCELLED +UNCANNY +UNCAPITALIZED +UNCAUGHT +UNCERTAIN +UNCERTAINLY +UNCERTAINTIES +UNCERTAINTY +UNCHANGEABLE +UNCHANGED +UNCHANGING +UNCLAIMED +UNCLASSIFIED +UNCLE +UNCLEAN +UNCLEANLY +UNCLEANNESS +UNCLEAR +UNCLEARED +UNCLES +UNCLOSED +UNCOMFORTABLE +UNCOMFORTABLY +UNCOMMITTED +UNCOMMON +UNCOMMONLY +UNCOMPROMISING +UNCOMPUTABLE +UNCONCERNED +UNCONCERNEDLY +UNCONDITIONAL +UNCONDITIONALLY +UNCONNECTED +UNCONSCIONABLE +UNCONSCIOUS +UNCONSCIOUSLY +UNCONSCIOUSNESS +UNCONSTITUTIONAL +UNCONSTRAINED +UNCONTROLLABILITY +UNCONTROLLABLE +UNCONTROLLABLY +UNCONTROLLED +UNCONVENTIONAL +UNCONVENTIONALLY +UNCONVINCED +UNCONVINCING +UNCOORDINATED +UNCORRECTABLE +UNCORRECTED +UNCOUNTABLE +UNCOUNTABLY +UNCOUTH +UNCOVER +UNCOVERED +UNCOVERING +UNCOVERS +UNDAMAGED +UNDAUNTED +UNDAUNTEDLY +UNDECIDABLE +UNDECIDED +UNDECLARED +UNDECOMPOSABLE +UNDEFINABILITY +UNDEFINED +UNDELETED +UNDENIABLE +UNDENIABLY +UNDER +UNDERBRUSH +UNDERDONE +UNDERESTIMATE +UNDERESTIMATED +UNDERESTIMATES +UNDERESTIMATING +UNDERESTIMATION +UNDERFLOW +UNDERFLOWED +UNDERFLOWING +UNDERFLOWS +UNDERFOOT +UNDERGO +UNDERGOES +UNDERGOING +UNDERGONE +UNDERGRADUATE +UNDERGRADUATES +UNDERGROUND +UNDERLIE +UNDERLIES +UNDERLINE +UNDERLINED +UNDERLINES +UNDERLING +UNDERLINGS +UNDERLINING +UNDERLININGS +UNDERLOADED +UNDERLYING +UNDERMINE +UNDERMINED +UNDERMINES +UNDERMINING +UNDERNEATH +UNDERPINNING +UNDERPINNINGS +UNDERPLAY +UNDERPLAYED +UNDERPLAYING +UNDERPLAYS +UNDERSCORE +UNDERSCORED +UNDERSCORES +UNDERSTAND +UNDERSTANDABILITY +UNDERSTANDABLE +UNDERSTANDABLY +UNDERSTANDING +UNDERSTANDINGLY +UNDERSTANDINGS +UNDERSTANDS +UNDERSTATED +UNDERSTOOD +UNDERTAKE +UNDERTAKEN +UNDERTAKER +UNDERTAKERS +UNDERTAKES +UNDERTAKING +UNDERTAKINGS +UNDERTOOK +UNDERWATER +UNDERWAY +UNDERWEAR +UNDERWENT +UNDERWORLD +UNDERWRITE +UNDERWRITER +UNDERWRITERS +UNDERWRITES +UNDERWRITING +UNDESIRABILITY +UNDESIRABLE +UNDETECTABLE +UNDETECTED +UNDETERMINED +UNDEVELOPED +UNDID +UNDIMINISHED +UNDIRECTED +UNDISCIPLINED +UNDISCOVERED +UNDISTURBED +UNDIVIDED +UNDO +UNDOCUMENTED +UNDOES +UNDOING +UNDOINGS +UNDONE +UNDOUBTEDLY +UNDRESS +UNDRESSED +UNDRESSES +UNDRESSING +UNDUE +UNDULY +UNEASILY +UNEASINESS +UNEASY +UNECONOMIC +UNECONOMICAL +UNEMBELLISHED +UNEMPLOYED +UNEMPLOYMENT +UNENCRYPTED +UNENDING +UNENLIGHTENING +UNEQUAL +UNEQUALED +UNEQUALLY +UNEQUIVOCAL +UNEQUIVOCALLY +UNESCO +UNESSENTIAL +UNEVALUATED +UNEVEN +UNEVENLY +UNEVENNESS +UNEVENTFUL +UNEXCUSED +UNEXPANDED +UNEXPECTED +UNEXPECTEDLY +UNEXPLAINED +UNEXPLORED +UNEXTENDED +UNFAIR +UNFAIRLY +UNFAIRNESS +UNFAITHFUL +UNFAITHFULLY +UNFAITHFULNESS +UNFAMILIAR +UNFAMILIARITY +UNFAMILIARLY +UNFAVORABLE +UNFETTERED +UNFINISHED +UNFIT +UNFITNESS +UNFLAGGING +UNFOLD +UNFOLDED +UNFOLDING +UNFOLDS +UNFORESEEN +UNFORGEABLE +UNFORGIVING +UNFORMATTED +UNFORTUNATE +UNFORTUNATELY +UNFORTUNATES +UNFOUNDED +UNFRIENDLINESS +UNFRIENDLY +UNFULFILLED +UNGRAMMATICAL +UNGRATEFUL +UNGRATEFULLY +UNGRATEFULNESS +UNGROUNDED +UNGUARDED +UNGUIDED +UNHAPPIER +UNHAPPIEST +UNHAPPILY +UNHAPPINESS +UNHAPPY +UNHARMED +UNHEALTHY +UNHEARD +UNHEEDED +UNIBUS +UNICORN +UNICORNS +UNICYCLE +UNIDENTIFIED +UNIDIRECTIONAL +UNIDIRECTIONALITY +UNIDIRECTIONALLY +UNIFICATION +UNIFICATIONS +UNIFIED +UNIFIER +UNIFIERS +UNIFIES +UNIFORM +UNIFORMED +UNIFORMITY +UNIFORMLY +UNIFORMS +UNIFY +UNIFYING +UNILLUMINATING +UNIMAGINABLE +UNIMPEDED +UNIMPLEMENTED +UNIMPORTANT +UNINDENTED +UNINITIALIZED +UNINSULATED +UNINTELLIGIBLE +UNINTENDED +UNINTENTIONAL +UNINTENTIONALLY +UNINTERESTING +UNINTERESTINGLY +UNINTERPRETED +UNINTERRUPTED +UNINTERRUPTEDLY +UNION +UNIONIZATION +UNIONIZE +UNIONIZED +UNIONIZER +UNIONIZERS +UNIONIZES +UNIONIZING +UNIONS +UNIPLUS +UNIPROCESSOR +UNIQUE +UNIQUELY +UNIQUENESS +UNIROYAL +UNISOFT +UNISON +UNIT +UNITARIAN +UNITARIANIZE +UNITARIANIZES +UNITARIANS +UNITE +UNITED +UNITES +UNITIES +UNITING +UNITS +UNITY +UNIVAC +UNIVALVE +UNIVALVES +UNIVERSAL +UNIVERSALITY +UNIVERSALLY +UNIVERSALS +UNIVERSE +UNIVERSES +UNIVERSITIES +UNIVERSITY +UNIX +UNIX +UNJUST +UNJUSTIFIABLE +UNJUSTIFIED +UNJUSTLY +UNKIND +UNKINDLY +UNKINDNESS +UNKNOWABLE +UNKNOWING +UNKNOWINGLY +UNKNOWN +UNKNOWNS +UNLABELLED +UNLAWFUL +UNLAWFULLY +UNLEASH +UNLEASHED +UNLEASHES +UNLEASHING +UNLESS +UNLIKE +UNLIKELY +UNLIKENESS +UNLIMITED +UNLINK +UNLINKED +UNLINKING +UNLINKS +UNLOAD +UNLOADED +UNLOADING +UNLOADS +UNLOCK +UNLOCKED +UNLOCKING +UNLOCKS +UNLUCKY +UNMANAGEABLE +UNMANAGEABLY +UNMANNED +UNMARKED +UNMARRIED +UNMASK +UNMASKED +UNMATCHED +UNMENTIONABLE +UNMERCIFUL +UNMERCIFULLY +UNMISTAKABLE +UNMISTAKABLY +UNMODIFIED +UNMOVED +UNNAMED +UNNATURAL +UNNATURALLY +UNNATURALNESS +UNNECESSARILY +UNNECESSARY +UNNEEDED +UNNERVE +UNNERVED +UNNERVES +UNNERVING +UNNOTICED +UNOBSERVABLE +UNOBSERVED +UNOBTAINABLE +UNOCCUPIED +UNOFFICIAL +UNOFFICIALLY +UNOPENED +UNORDERED +UNPACK +UNPACKED +UNPACKING +UNPACKS +UNPAID +UNPARALLELED +UNPARSED +UNPLANNED +UNPLEASANT +UNPLEASANTLY +UNPLEASANTNESS +UNPLUG +UNPOPULAR +UNPOPULARITY +UNPRECEDENTED +UNPREDICTABLE +UNPREDICTABLY +UNPRESCRIBED +UNPRESERVED +UNPRIMED +UNPROFITABLE +UNPROJECTED +UNPROTECTED +UNPROVABILITY +UNPROVABLE +UNPROVEN +UNPUBLISHED +UNQUALIFIED +UNQUALIFIEDLY +UNQUESTIONABLY +UNQUESTIONED +UNQUOTED +UNRAVEL +UNRAVELED +UNRAVELING +UNRAVELS +UNREACHABLE +UNREAL +UNREALISTIC +UNREALISTICALLY +UNREASONABLE +UNREASONABLENESS +UNREASONABLY +UNRECOGNIZABLE +UNRECOGNIZED +UNREGULATED +UNRELATED +UNRELIABILITY +UNRELIABLE +UNREPORTED +UNREPRESENTABLE +UNRESOLVED +UNRESPONSIVE +UNREST +UNRESTRAINED +UNRESTRICTED +UNRESTRICTEDLY +UNRESTRICTIVE +UNROLL +UNROLLED +UNROLLING +UNROLLS +UNRULY +UNSAFE +UNSAFELY +UNSANITARY +UNSATISFACTORY +UNSATISFIABILITY +UNSATISFIABLE +UNSATISFIED +UNSATISFYING +UNSCRUPULOUS +UNSEEDED +UNSEEN +UNSELECTED +UNSELFISH +UNSELFISHLY +UNSELFISHNESS +UNSENT +UNSETTLED +UNSETTLING +UNSHAKEN +UNSHARED +UNSIGNED +UNSKILLED +UNSLOTTED +UNSOLVABLE +UNSOLVED +UNSOPHISTICATED +UNSOUND +UNSPEAKABLE +UNSPECIFIED +UNSTABLE +UNSTEADINESS +UNSTEADY +UNSTRUCTURED +UNSUCCESSFUL +UNSUCCESSFULLY +UNSUITABLE +UNSUITED +UNSUPPORTED +UNSURE +UNSURPRISING +UNSURPRISINGLY +UNSYNCHRONIZED +UNTAGGED +UNTAPPED +UNTENABLE +UNTERMINATED +UNTESTED +UNTHINKABLE +UNTHINKING +UNTIDINESS +UNTIDY +UNTIE +UNTIED +UNTIES +UNTIL +UNTIMELY +UNTO +UNTOLD +UNTOUCHABLE +UNTOUCHABLES +UNTOUCHED +UNTOWARD +UNTRAINED +UNTRANSLATED +UNTREATED +UNTRIED +UNTRUE +UNTRUTHFUL +UNTRUTHFULNESS +UNTYING +UNUSABLE +UNUSED +UNUSUAL +UNUSUALLY +UNVARYING +UNVEIL +UNVEILED +UNVEILING +UNVEILS +UNWANTED +UNWELCOME +UNWHOLESOME +UNWIELDINESS +UNWIELDY +UNWILLING +UNWILLINGLY +UNWILLINGNESS +UNWIND +UNWINDER +UNWINDERS +UNWINDING +UNWINDS +UNWISE +UNWISELY +UNWISER +UNWISEST +UNWITTING +UNWITTINGLY +UNWORTHINESS +UNWORTHY +UNWOUND +UNWRAP +UNWRAPPED +UNWRAPPING +UNWRAPS +UNWRITTEN +UPBRAID +UPCOMING +UPDATE +UPDATED +UPDATER +UPDATES +UPDATING +UPGRADE +UPGRADED +UPGRADES +UPGRADING +UPHELD +UPHILL +UPHOLD +UPHOLDER +UPHOLDERS +UPHOLDING +UPHOLDS +UPHOLSTER +UPHOLSTERED +UPHOLSTERER +UPHOLSTERING +UPHOLSTERS +UPKEEP +UPLAND +UPLANDS +UPLIFT +UPLINK +UPLINKS +UPLOAD +UPON +UPPER +UPPERMOST +UPRIGHT +UPRIGHTLY +UPRIGHTNESS +UPRISING +UPRISINGS +UPROAR +UPROOT +UPROOTED +UPROOTING +UPROOTS +UPSET +UPSETS +UPSHOT +UPSHOTS +UPSIDE +UPSTAIRS +UPSTREAM +UPTON +UPTURN +UPTURNED +UPTURNING +UPTURNS +UPWARD +UPWARDS +URANIA +URANUS +URBAN +URBANA +URCHIN +URCHINS +URDU +URGE +URGED +URGENT +URGENTLY +URGES +URGING +URGINGS +URI +URINATE +URINATED +URINATES +URINATING +URINATION +URINE +URIS +URN +URNS +URQUHART +URSA +URSULA +URSULINE +URUGUAY +URUGUAYAN +URUGUAYANS +USABILITY +USABLE +USABLY +USAGE +USAGES +USE +USED +USEFUL +USEFULLY +USEFULNESS +USELESS +USELESSLY +USELESSNESS +USENET +USENIX +USER +USERS +USES +USHER +USHERED +USHERING +USHERS +USING +USUAL +USUALLY +USURP +USURPED +USURPER +UTAH +UTENSIL +UTENSILS +UTICA +UTILITIES +UTILITY +UTILIZATION +UTILIZATIONS +UTILIZE +UTILIZED +UTILIZES +UTILIZING +UTMOST +UTOPIA +UTOPIAN +UTOPIANIZE +UTOPIANIZES +UTOPIANS +UTRECHT +UTTER +UTTERANCE +UTTERANCES +UTTERED +UTTERING +UTTERLY +UTTERMOST +UTTERS +UZI +VACANCIES +VACANCY +VACANT +VACANTLY +VACATE +VACATED +VACATES +VACATING +VACATION +VACATIONED +VACATIONER +VACATIONERS +VACATIONING +VACATIONS +VACUO +VACUOUS +VACUOUSLY +VACUUM +VACUUMED +VACUUMING +VADUZ +VAGABOND +VAGABONDS +VAGARIES +VAGARY +VAGINA +VAGINAS +VAGRANT +VAGRANTLY +VAGUE +VAGUELY +VAGUENESS +VAGUER +VAGUEST +VAIL +VAIN +VAINLY +VALE +VALENCE +VALENCES +VALENTINE +VALENTINES +VALERIE +VALERY +VALES +VALET +VALETS +VALHALLA +VALIANT +VALIANTLY +VALID +VALIDATE +VALIDATED +VALIDATES +VALIDATING +VALIDATION +VALIDITY +VALIDLY +VALIDNESS +VALKYRIE +VALLETTA +VALLEY +VALLEYS +VALOIS +VALOR +VALPARAISO +VALUABLE +VALUABLES +VALUABLY +VALUATION +VALUATIONS +VALUE +VALUED +VALUER +VALUERS +VALUES +VALUING +VALVE +VALVES +VAMPIRE +VAN +VANCE +VANCEMENT +VANCOUVER +VANDALIZE +VANDALIZED +VANDALIZES +VANDALIZING +VANDENBERG +VANDERBILT +VANDERBURGH +VANDERPOEL +VANE +VANES +VANESSA +VANGUARD +VANILLA +VANISH +VANISHED +VANISHER +VANISHES +VANISHING +VANISHINGLY +VANITIES +VANITY +VANQUISH +VANQUISHED +VANQUISHES +VANQUISHING +VANS +VANTAGE +VAPOR +VAPORING +VAPORS +VARIABILITY +VARIABLE +VARIABLENESS +VARIABLES +VARIABLY +VARIAN +VARIANCE +VARIANCES +VARIANT +VARIANTLY +VARIANTS +VARIATION +VARIATIONS +VARIED +VARIES +VARIETIES +VARIETY +VARIOUS +VARIOUSLY +VARITYPE +VARITYPING +VARNISH +VARNISHES +VARY +VARYING +VARYINGS +VASE +VASES +VASQUEZ +VASSAL +VASSAR +VAST +VASTER +VASTEST +VASTLY +VASTNESS +VAT +VATICAN +VATICANIZATION +VATICANIZATIONS +VATICANIZE +VATICANIZES +VATS +VAUDEVILLE +VAUDOIS +VAUGHAN +VAUGHN +VAULT +VAULTED +VAULTER +VAULTING +VAULTS +VAUNT +VAUNTED +VAX +VAXES +VEAL +VECTOR +VECTORIZATION +VECTORIZING +VECTORS +VEDA +VEER +VEERED +VEERING +VEERS +VEGA +VEGANISM +VEGAS +VEGETABLE +VEGETABLES +VEGETARIAN +VEGETARIANS +VEGETATE +VEGETATED +VEGETATES +VEGETATING +VEGETATION +VEGETATIVE +VEHEMENCE +VEHEMENT +VEHEMENTLY +VEHICLE +VEHICLES +VEHICULAR +VEIL +VEILED +VEILING +VEILS +VEIN +VEINED +VEINING +VEINS +VELA +VELASQUEZ +VELLA +VELOCITIES +VELOCITY +VELVET +VENDOR +VENDORS +VENERABLE +VENERATION +VENETIAN +VENETO +VENEZUELA +VENEZUELAN +VENGEANCE +VENIAL +VENICE +VENISON +VENN +VENOM +VENOMOUS +VENOMOUSLY +VENT +VENTED +VENTILATE +VENTILATED +VENTILATES +VENTILATING +VENTILATION +VENTRICLE +VENTRICLES +VENTS +VENTURA +VENTURE +VENTURED +VENTURER +VENTURERS +VENTURES +VENTURING +VENTURINGS +VENUS +VENUSIAN +VENUSIANS +VERA +VERACITY +VERANDA +VERANDAS +VERB +VERBAL +VERBALIZE +VERBALIZED +VERBALIZES +VERBALIZING +VERBALLY +VERBOSE +VERBS +VERDE +VERDERER +VERDI +VERDICT +VERDURE +VERGE +VERGER +VERGES +VERGIL +VERIFIABILITY +VERIFIABLE +VERIFICATION +VERIFICATIONS +VERIFIED +VERIFIER +VERIFIERS +VERIFIES +VERIFY +VERIFYING +VERILY +VERITABLE +VERLAG +VERMIN +VERMONT +VERN +VERNA +VERNACULAR +VERNE +VERNON +VERONA +VERONICA +VERSA +VERSAILLES +VERSATEC +VERSATILE +VERSATILITY +VERSE +VERSED +VERSES +VERSING +VERSION +VERSIONS +VERSUS +VERTEBRATE +VERTEBRATES +VERTEX +VERTICAL +VERTICALLY +VERTICALNESS +VERTICES +VERY +VESSEL +VESSELS +VEST +VESTED +VESTIGE +VESTIGES +VESTIGIAL +VESTS +VESUVIUS +VETERAN +VETERANS +VETERINARIAN +VETERINARIANS +VETERINARY +VETO +VETOED +VETOER +VETOES +VEX +VEXATION +VEXED +VEXES +VEXING +VIA +VIABILITY +VIABLE +VIABLY +VIAL +VIALS +VIBRATE +VIBRATED +VIBRATING +VIBRATION +VIBRATIONS +VIBRATOR +VIC +VICE +VICEROY +VICES +VICHY +VICINITY +VICIOUS +VICIOUSLY +VICIOUSNESS +VICISSITUDE +VICISSITUDES +VICKERS +VICKSBURG +VICKY +VICTIM +VICTIMIZE +VICTIMIZED +VICTIMIZER +VICTIMIZERS +VICTIMIZES +VICTIMIZING +VICTIMS +VICTOR +VICTORIA +VICTORIAN +VICTORIANIZE +VICTORIANIZES +VICTORIANS +VICTORIES +VICTORIOUS +VICTORIOUSLY +VICTORS +VICTORY +VICTROLA +VICTUAL +VICTUALER +VICTUALS +VIDA +VIDAL +VIDEO +VIDEOTAPE +VIDEOTAPES +VIDEOTEX +VIE +VIED +VIENNA +VIENNESE +VIENTIANE +VIER +VIES +VIET +VIETNAM +VIETNAMESE +VIEW +VIEWABLE +VIEWED +VIEWER +VIEWERS +VIEWING +VIEWPOINT +VIEWPOINTS +VIEWS +VIGILANCE +VIGILANT +VIGILANTE +VIGILANTES +VIGILANTLY +VIGNETTE +VIGNETTES +VIGOR +VIGOROUS +VIGOROUSLY +VIKING +VIKINGS +VIKRAM +VILE +VILELY +VILENESS +VILIFICATION +VILIFICATIONS +VILIFIED +VILIFIES +VILIFY +VILIFYING +VILLA +VILLAGE +VILLAGER +VILLAGERS +VILLAGES +VILLAIN +VILLAINOUS +VILLAINOUSLY +VILLAINOUSNESS +VILLAINS +VILLAINY +VILLAS +VINCE +VINCENT +VINCI +VINDICATE +VINDICATED +VINDICATION +VINDICTIVE +VINDICTIVELY +VINDICTIVENESS +VINE +VINEGAR +VINES +VINEYARD +VINEYARDS +VINSON +VINTAGE +VIOLATE +VIOLATED +VIOLATES +VIOLATING +VIOLATION +VIOLATIONS +VIOLATOR +VIOLATORS +VIOLENCE +VIOLENT +VIOLENTLY +VIOLET +VIOLETS +VIOLIN +VIOLINIST +VIOLINISTS +VIOLINS +VIPER +VIPERS +VIRGIL +VIRGIN +VIRGINIA +VIRGINIAN +VIRGINIANS +VIRGINITY +VIRGINS +VIRGO +VIRTUAL +VIRTUALLY +VIRTUE +VIRTUES +VIRTUOSO +VIRTUOSOS +VIRTUOUS +VIRTUOUSLY +VIRULENT +VIRUS +VIRUSES +VISA +VISAGE +VISAS +VISCOUNT +VISCOUNTS +VISCOUS +VISHNU +VISIBILITY +VISIBLE +VISIBLY +VISIGOTH +VISIGOTHS +VISION +VISIONARY +VISIONS +VISIT +VISITATION +VISITATIONS +VISITED +VISITING +VISITOR +VISITORS +VISITS +VISOR +VISORS +VISTA +VISTAS +VISUAL +VISUALIZE +VISUALIZED +VISUALIZER +VISUALIZES +VISUALIZING +VISUALLY +VITA +VITAE +VITAL +VITALITY +VITALLY +VITALS +VITO +VITUS +VIVALDI +VIVIAN +VIVID +VIVIDLY +VIVIDNESS +VIZIER +VLADIMIR +VLADIVOSTOK +VOCABULARIES +VOCABULARY +VOCAL +VOCALLY +VOCALS +VOCATION +VOCATIONAL +VOCATIONALLY +VOCATIONS +VOGEL +VOGUE +VOICE +VOICED +VOICER +VOICERS +VOICES +VOICING +VOID +VOIDED +VOIDER +VOIDING +VOIDS +VOLATILE +VOLATILITIES +VOLATILITY +VOLCANIC +VOLCANO +VOLCANOS +VOLITION +VOLKSWAGEN +VOLKSWAGENS +VOLLEY +VOLLEYBALL +VOLLEYBALLS +VOLSTEAD +VOLT +VOLTA +VOLTAGE +VOLTAGES +VOLTAIRE +VOLTERRA +VOLTS +VOLUME +VOLUMES +VOLUNTARILY +VOLUNTARY +VOLUNTEER +VOLUNTEERED +VOLUNTEERING +VOLUNTEERS +VOLVO +VOMIT +VOMITED +VOMITING +VOMITS +VORTEX +VOSS +VOTE +VOTED +VOTER +VOTERS +VOTES +VOTING +VOTIVE +VOUCH +VOUCHER +VOUCHERS +VOUCHES +VOUCHING +VOUGHT +VOW +VOWED +VOWEL +VOWELS +VOWER +VOWING +VOWS +VOYAGE +VOYAGED +VOYAGER +VOYAGERS +VOYAGES +VOYAGING +VOYAGINGS +VREELAND +VULCAN +VULCANISM +VULGAR +VULGARLY +VULNERABILITIES +VULNERABILITY +VULNERABLE +VULTURE +VULTURES +WAALS +WABASH +WACKE +WACKY +WACO +WADE +WADED +WADER +WADES +WADING +WADSWORTH +WAFER +WAFERS +WAFFLE +WAFFLES +WAFT +WAG +WAGE +WAGED +WAGER +WAGERS +WAGES +WAGING +WAGNER +WAGNERIAN +WAGNERIZE +WAGNERIZES +WAGON +WAGONER +WAGONS +WAGS +WAHL +WAIL +WAILED +WAILING +WAILS +WAINWRIGHT +WAIST +WAISTCOAT +WAISTCOATS +WAISTS +WAIT +WAITE +WAITED +WAITER +WAITERS +WAITING +WAITRESS +WAITRESSES +WAITS +WAIVE +WAIVED +WAIVER +WAIVERABLE +WAIVES +WAIVING +WAKE +WAKED +WAKEFIELD +WAKEN +WAKENED +WAKENING +WAKES +WAKEUP +WAKING +WALBRIDGE +WALCOTT +WALDEN +WALDENSIAN +WALDO +WALDORF +WALDRON +WALES +WALFORD +WALGREEN +WALK +WALKED +WALKER +WALKERS +WALKING +WALKS +WALL +WALLACE +WALLED +WALLENSTEIN +WALLER +WALLET +WALLETS +WALLING +WALLIS +WALLOW +WALLOWED +WALLOWING +WALLOWS +WALLS +WALNUT +WALNUTS +WALPOLE +WALRUS +WALRUSES +WALSH +WALT +WALTER +WALTERS +WALTHAM +WALTON +WALTZ +WALTZED +WALTZES +WALTZING +WALWORTH +WAN +WAND +WANDER +WANDERED +WANDERER +WANDERERS +WANDERING +WANDERINGS +WANDERS +WANE +WANED +WANES +WANG +WANING +WANLY +WANSEE +WANSLEY +WANT +WANTED +WANTING +WANTON +WANTONLY +WANTONNESS +WANTS +WAPATO +WAPPINGER +WAR +WARBLE +WARBLED +WARBLER +WARBLES +WARBLING +WARBURTON +WARD +WARDEN +WARDENS +WARDER +WARDROBE +WARDROBES +WARDS +WARE +WAREHOUSE +WAREHOUSES +WAREHOUSING +WARES +WARFARE +WARFIELD +WARILY +WARINESS +WARING +WARLIKE +WARM +WARMED +WARMER +WARMERS +WARMEST +WARMING +WARMLY +WARMS +WARMTH +WARN +WARNED +WARNER +WARNING +WARNINGLY +WARNINGS +WARNOCK +WARNS +WARP +WARPED +WARPING +WARPS +WARRANT +WARRANTED +WARRANTIES +WARRANTING +WARRANTS +WARRANTY +WARRED +WARRING +WARRIOR +WARRIORS +WARS +WARSAW +WARSHIP +WARSHIPS +WART +WARTIME +WARTS +WARWICK +WARY +WAS +WASH +WASHBURN +WASHED +WASHER +WASHERS +WASHES +WASHING +WASHINGS +WASHINGTON +WASHOE +WASP +WASPS +WASSERMAN +WASTE +WASTED +WASTEFUL +WASTEFULLY +WASTEFULNESS +WASTES +WASTING +WATANABE +WATCH +WATCHED +WATCHER +WATCHERS +WATCHES +WATCHFUL +WATCHFULLY +WATCHFULNESS +WATCHING +WATCHINGS +WATCHMAN +WATCHWORD +WATCHWORDS +WATER +WATERBURY +WATERED +WATERFALL +WATERFALLS +WATERGATE +WATERHOUSE +WATERING +WATERINGS +WATERLOO +WATERMAN +WATERPROOF +WATERPROOFING +WATERS +WATERTOWN +WATERWAY +WATERWAYS +WATERY +WATKINS +WATSON +WATTENBERG +WATTERSON +WATTS +WAUKESHA +WAUNONA +WAUPACA +WAUPUN +WAUSAU +WAUWATOSA +WAVE +WAVED +WAVEFORM +WAVEFORMS +WAVEFRONT +WAVEFRONTS +WAVEGUIDES +WAVELAND +WAVELENGTH +WAVELENGTHS +WAVER +WAVERS +WAVES +WAVING +WAX +WAXED +WAXEN +WAXER +WAXERS +WAXES +WAXING +WAXY +WAY +WAYNE +WAYNESBORO +WAYS +WAYSIDE +WAYWARD +WEAK +WEAKEN +WEAKENED +WEAKENING +WEAKENS +WEAKER +WEAKEST +WEAKLY +WEAKNESS +WEAKNESSES +WEALTH +WEALTHIEST +WEALTHS +WEALTHY +WEAN +WEANED +WEANING +WEAPON +WEAPONS +WEAR +WEARABLE +WEARER +WEARIED +WEARIER +WEARIEST +WEARILY +WEARINESS +WEARING +WEARISOME +WEARISOMELY +WEARS +WEARY +WEARYING +WEASEL +WEASELS +WEATHER +WEATHERCOCK +WEATHERCOCKS +WEATHERED +WEATHERFORD +WEATHERING +WEATHERS +WEAVE +WEAVER +WEAVES +WEAVING +WEB +WEBB +WEBBER +WEBS +WEBSTER +WEBSTERVILLE +WEDDED +WEDDING +WEDDINGS +WEDGE +WEDGED +WEDGES +WEDGING +WEDLOCK +WEDNESDAY +WEDNESDAYS +WEDS +WEE +WEED +WEEDS +WEEK +WEEKEND +WEEKENDS +WEEKLY +WEEKS +WEEP +WEEPER +WEEPING +WEEPS +WEHR +WEI +WEIBULL +WEIDER +WEIDMAN +WEIERSTRASS +WEIGH +WEIGHED +WEIGHING +WEIGHINGS +WEIGHS +WEIGHT +WEIGHTED +WEIGHTING +WEIGHTS +WEIGHTY +WEINBERG +WEINER +WEINSTEIN +WEIRD +WEIRDLY +WEISENHEIMER +WEISS +WEISSMAN +WEISSMULLER +WELCH +WELCHER +WELCHES +WELCOME +WELCOMED +WELCOMES +WELCOMING +WELD +WELDED +WELDER +WELDING +WELDON +WELDS +WELDWOOD +WELFARE +WELL +WELLED +WELLER +WELLES +WELLESLEY +WELLING +WELLINGTON +WELLMAN +WELLS +WELLSVILLE +WELMERS +WELSH +WELTON +WENCH +WENCHES +WENDELL +WENDY +WENT +WENTWORTH +WEPT +WERE +WERNER +WERTHER +WESLEY +WESLEYAN +WESSON +WEST +WESTBOUND +WESTBROOK +WESTCHESTER +WESTERN +WESTERNER +WESTERNERS +WESTFIELD +WESTHAMPTON +WESTINGHOUSE +WESTMINSTER +WESTMORE +WESTON +WESTPHALIA +WESTPORT +WESTWARD +WESTWARDS +WESTWOOD +WET +WETLY +WETNESS +WETS +WETTED +WETTER +WETTEST +WETTING +WEYERHAUSER +WHACK +WHACKED +WHACKING +WHACKS +WHALE +WHALEN +WHALER +WHALES +WHALING +WHARF +WHARTON +WHARVES +WHAT +WHATEVER +WHATLEY +WHATSOEVER +WHEAT +WHEATEN +WHEATLAND +WHEATON +WHEATSTONE +WHEEL +WHEELED +WHEELER +WHEELERS +WHEELING +WHEELINGS +WHEELOCK +WHEELS +WHELAN +WHELLER +WHELP +WHEN +WHENCE +WHENEVER +WHERE +WHEREABOUTS +WHEREAS +WHEREBY +WHEREIN +WHEREUPON +WHEREVER +WHETHER +WHICH +WHICHEVER +WHILE +WHIM +WHIMPER +WHIMPERED +WHIMPERING +WHIMPERS +WHIMS +WHIMSICAL +WHIMSICALLY +WHIMSIES +WHIMSY +WHINE +WHINED +WHINES +WHINING +WHIP +WHIPPANY +WHIPPED +WHIPPER +WHIPPERS +WHIPPING +WHIPPINGS +WHIPPLE +WHIPS +WHIRL +WHIRLED +WHIRLING +WHIRLPOOL +WHIRLPOOLS +WHIRLS +WHIRLWIND +WHIRR +WHIRRING +WHISK +WHISKED +WHISKER +WHISKERS +WHISKEY +WHISKING +WHISKS +WHISPER +WHISPERED +WHISPERING +WHISPERINGS +WHISPERS +WHISTLE +WHISTLED +WHISTLER +WHISTLERS +WHISTLES +WHISTLING +WHIT +WHITAKER +WHITCOMB +WHITE +WHITEHALL +WHITEHORSE +WHITELEAF +WHITELEY +WHITELY +WHITEN +WHITENED +WHITENER +WHITENERS +WHITENESS +WHITENING +WHITENS +WHITER +WHITES +WHITESPACE +WHITEST +WHITEWASH +WHITEWASHED +WHITEWATER +WHITFIELD +WHITING +WHITLOCK +WHITMAN +WHITMANIZE +WHITMANIZES +WHITNEY +WHITTAKER +WHITTIER +WHITTLE +WHITTLED +WHITTLES +WHITTLING +WHIZ +WHIZZED +WHIZZES +WHIZZING +WHO +WHOEVER +WHOLE +WHOLEHEARTED +WHOLEHEARTEDLY +WHOLENESS +WHOLES +WHOLESALE +WHOLESALER +WHOLESALERS +WHOLESOME +WHOLESOMENESS +WHOLLY +WHOM +WHOMEVER +WHOOP +WHOOPED +WHOOPING +WHOOPS +WHORE +WHORES +WHORL +WHORLS +WHOSE +WHY +WICHITA +WICK +WICKED +WICKEDLY +WICKEDNESS +WICKER +WICKS +WIDE +WIDEBAND +WIDELY +WIDEN +WIDENED +WIDENER +WIDENING +WIDENS +WIDER +WIDESPREAD +WIDEST +WIDGET +WIDOW +WIDOWED +WIDOWER +WIDOWERS +WIDOWS +WIDTH +WIDTHS +WIELAND +WIELD +WIELDED +WIELDER +WIELDING +WIELDS +WIER +WIFE +WIFELY +WIG +WIGGINS +WIGHTMAN +WIGS +WIGWAM +WILBUR +WILCOX +WILD +WILDCAT +WILDCATS +WILDER +WILDERNESS +WILDEST +WILDLY +WILDNESS +WILE +WILES +WILEY +WILFRED +WILHELM +WILHELMINA +WILINESS +WILKES +WILKIE +WILKINS +WILKINSON +WILL +WILLA +WILLAMETTE +WILLARD +WILLCOX +WILLED +WILLEM +WILLFUL +WILLFULLY +WILLIAM +WILLIAMS +WILLIAMSBURG +WILLIAMSON +WILLIE +WILLIED +WILLIES +WILLING +WILLINGLY +WILLINGNESS +WILLIS +WILLISSON +WILLOUGHBY +WILLOW +WILLOWS +WILLS +WILLY +WILMA +WILMETTE +WILMINGTON +WILSHIRE +WILSON +WILSONIAN +WILT +WILTED +WILTING +WILTS +WILTSHIRE +WILY +WIN +WINCE +WINCED +WINCES +WINCHELL +WINCHESTER +WINCING +WIND +WINDED +WINDER +WINDERS +WINDING +WINDMILL +WINDMILLS +WINDOW +WINDOWS +WINDS +WINDSOR +WINDY +WINE +WINED +WINEHEAD +WINER +WINERS +WINES +WINFIELD +WING +WINGED +WINGING +WINGS +WINIFRED +WINING +WINK +WINKED +WINKER +WINKING +WINKS +WINNEBAGO +WINNER +WINNERS +WINNETKA +WINNIE +WINNING +WINNINGLY +WINNINGS +WINNIPEG +WINNIPESAUKEE +WINOGRAD +WINOOSKI +WINS +WINSBOROUGH +WINSETT +WINSLOW +WINSTON +WINTER +WINTERED +WINTERING +WINTERS +WINTHROP +WINTRY +WIPE +WIPED +WIPER +WIPERS +WIPES +WIPING +WIRE +WIRED +WIRELESS +WIRES +WIRETAP +WIRETAPPERS +WIRETAPPING +WIRETAPS +WIRINESS +WIRING +WIRY +WISCONSIN +WISDOM +WISDOMS +WISE +WISED +WISELY +WISENHEIMER +WISER +WISEST +WISH +WISHED +WISHER +WISHERS +WISHES +WISHFUL +WISHING +WISP +WISPS +WISTFUL +WISTFULLY +WISTFULNESS +WIT +WITCH +WITCHCRAFT +WITCHES +WITCHING +WITH +WITHAL +WITHDRAW +WITHDRAWAL +WITHDRAWALS +WITHDRAWING +WITHDRAWN +WITHDRAWS +WITHDREW +WITHER +WITHERS +WITHERSPOON +WITHHELD +WITHHOLD +WITHHOLDER +WITHHOLDERS +WITHHOLDING +WITHHOLDINGS +WITHHOLDS +WITHIN +WITHOUT +WITHSTAND +WITHSTANDING +WITHSTANDS +WITHSTOOD +WITNESS +WITNESSED +WITNESSES +WITNESSING +WITS +WITT +WITTGENSTEIN +WITTY +WIVES +WIZARD +WIZARDS +WOE +WOEFUL +WOEFULLY +WOKE +WOLCOTT +WOLF +WOLFE +WOLFF +WOLFGANG +WOLVERTON +WOLVES +WOMAN +WOMANHOOD +WOMANLY +WOMB +WOMBS +WOMEN +WON +WONDER +WONDERED +WONDERFUL +WONDERFULLY +WONDERFULNESS +WONDERING +WONDERINGLY +WONDERMENT +WONDERS +WONDROUS +WONDROUSLY +WONG +WONT +WONTED +WOO +WOOD +WOODARD +WOODBERRY +WOODBURY +WOODCHUCK +WOODCHUCKS +WOODCOCK +WOODCOCKS +WOODED +WOODEN +WOODENLY +WOODENNESS +WOODLAND +WOODLAWN +WOODMAN +WOODPECKER +WOODPECKERS +WOODROW +WOODS +WOODSTOCK +WOODWARD +WOODWARDS +WOODWORK +WOODWORKING +WOODY +WOOED +WOOER +WOOF +WOOFED +WOOFER +WOOFERS +WOOFING +WOOFS +WOOING +WOOL +WOOLEN +WOOLLY +WOOLS +WOOLWORTH +WOONSOCKET +WOOS +WOOSTER +WORCESTER +WORCESTERSHIRE +WORD +WORDED +WORDILY +WORDINESS +WORDING +WORDS +WORDSWORTH +WORDY +WORE +WORK +WORKABLE +WORKABLY +WORKBENCH +WORKBENCHES +WORKBOOK +WORKBOOKS +WORKED +WORKER +WORKERS +WORKHORSE +WORKHORSES +WORKING +WORKINGMAN +WORKINGS +WORKLOAD +WORKMAN +WORKMANSHIP +WORKMEN +WORKS +WORKSHOP +WORKSHOPS +WORKSPACE +WORKSTATION +WORKSTATIONS +WORLD +WORLDLINESS +WORLDLY +WORLDS +WORLDWIDE +WORM +WORMED +WORMING +WORMS +WORN +WORRIED +WORRIER +WORRIERS +WORRIES +WORRISOME +WORRY +WORRYING +WORRYINGLY +WORSE +WORSHIP +WORSHIPED +WORSHIPER +WORSHIPFUL +WORSHIPING +WORSHIPS +WORST +WORSTED +WORTH +WORTHIEST +WORTHINESS +WORTHINGTON +WORTHLESS +WORTHLESSNESS +WORTHS +WORTHWHILE +WORTHWHILENESS +WORTHY +WOTAN +WOULD +WOUND +WOUNDED +WOUNDING +WOUNDS +WOVE +WOVEN +WRANGLE +WRANGLED +WRANGLER +WRAP +WRAPAROUND +WRAPPED +WRAPPER +WRAPPERS +WRAPPING +WRAPPINGS +WRAPS +WRATH +WREAK +WREAKS +WREATH +WREATHED +WREATHES +WRECK +WRECKAGE +WRECKED +WRECKER +WRECKERS +WRECKING +WRECKS +WREN +WRENCH +WRENCHED +WRENCHES +WRENCHING +WRENS +WREST +WRESTLE +WRESTLER +WRESTLES +WRESTLING +WRESTLINGS +WRETCH +WRETCHED +WRETCHEDNESS +WRETCHES +WRIGGLE +WRIGGLED +WRIGGLER +WRIGGLES +WRIGGLING +WRIGLEY +WRING +WRINGER +WRINGS +WRINKLE +WRINKLED +WRINKLES +WRIST +WRISTS +WRISTWATCH +WRISTWATCHES +WRIT +WRITABLE +WRITE +WRITER +WRITERS +WRITES +WRITHE +WRITHED +WRITHES +WRITHING +WRITING +WRITINGS +WRITS +WRITTEN +WRONG +WRONGED +WRONGING +WRONGLY +WRONGS +WRONSKIAN +WROTE +WROUGHT +WRUNG +WUHAN +WYANDOTTE +WYATT +WYETH +WYLIE +WYMAN +WYNER +WYNN +WYOMING +XANTHUS +XAVIER +XEBEC +XENAKIS +XENIA +XENIX +XEROX +XEROXED +XEROXES +XEROXING +XERXES +XHOSA +YAGI +YAKIMA +YALE +YALIES +YALTA +YAMAHA +YANK +YANKED +YANKEE +YANKEES +YANKING +YANKS +YANKTON +YAOUNDE +YAQUI +YARD +YARDS +YARDSTICK +YARDSTICKS +YARMOUTH +YARN +YARNS +YATES +YAUNDE +YAWN +YAWNER +YAWNING +YEA +YEAGER +YEAR +YEARLY +YEARN +YEARNED +YEARNING +YEARNINGS +YEARS +YEAS +YEAST +YEASTS +YEATS +YELL +YELLED +YELLER +YELLING +YELLOW +YELLOWED +YELLOWER +YELLOWEST +YELLOWING +YELLOWISH +YELLOWKNIFE +YELLOWNESS +YELLOWS +YELLOWSTONE +YELP +YELPED +YELPING +YELPS +YEMEN +YENTL +YEOMAN +YEOMEN +YERKES +YES +YESTERDAY +YESTERDAYS +YET +YIDDISH +YIELD +YIELDED +YIELDING +YIELDS +YODER +YOKE +YOKES +YOKNAPATAWPHA +YOKOHAMA +YOKUTS +YON +YONDER +YONKERS +YORICK +YORK +YORKER +YORKERS +YORKSHIRE +YORKTOWN +YOSEMITE +YOST +YOU +YOUNG +YOUNGER +YOUNGEST +YOUNGLY +YOUNGSTER +YOUNGSTERS +YOUNGSTOWN +YOUR +YOURS +YOURSELF +YOURSELVES +YOUTH +YOUTHES +YOUTHFUL +YOUTHFULLY +YOUTHFULNESS +YPSILANTI +YUBA +YUCATAN +YUGOSLAV +YUGOSLAVIA +YUGOSLAVIAN +YUGOSLAVIANS +YUH +YUKI +YUKON +YURI +YVES +YVETTE +ZACHARY +ZAGREB +ZAIRE +ZAMBIA +ZAN +ZANZIBAR +ZEAL +ZEALAND +ZEALOUS +ZEALOUSLY +ZEALOUSNESS +ZEBRA +ZEBRAS +ZEFFIRELLI +ZEISS +ZELLERBACH +ZEN +ZENITH +ZENNIST +ZERO +ZEROED +ZEROES +ZEROING +ZEROS +ZEROTH +ZEST +ZEUS +ZIEGFELD +ZIEGFELDS +ZIEGLER +ZIGGY +ZIGZAG +ZILLIONS +ZIMMERMAN +ZINC +ZION +ZIONISM +ZIONIST +ZIONISTS +ZIONS +ZODIAC +ZOE +ZOMBA +ZONAL +ZONALLY +ZONE +ZONED +ZONES +ZONING +ZOO +ZOOLOGICAL +ZOOLOGICALLY +ZOOM +ZOOMS +ZOOS +ZORN +ZOROASTER +ZOROASTRIAN +ZULU +ZULUS +ZURICH \ No newline at end of file diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example01.py b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example01.py new file mode 100644 index 0000000..a4626b1 --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example01.py @@ -0,0 +1,5 @@ +nums = [] +for i in range(100000): + nums.append(i) +nums.reverse() +print(nums) diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example02.py b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example02.py new file mode 100644 index 0000000..4fb84b4 --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example02.py @@ -0,0 +1,4 @@ +nums = [] +for i in range(100000): + nums.insert(0, i) +print(nums) diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example03.py b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example03.py new file mode 100644 index 0000000..1ce532f --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example03.py @@ -0,0 +1,5 @@ +a, b = 0, 1 +for num in range(1, 101): + a, b = b, a + b + print(f'{num}: {a}') + diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example04.py b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example04.py new file mode 100644 index 0000000..c6b622e --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example04.py @@ -0,0 +1,12 @@ +from functools import lru_cache + + +@lru_cache() +def fib(num): + if num in (1, 2): + return 1 + return fib(num - 1) + fib(num - 2) + + +for num in range(1, 101): + print(f'{num}: {fib(num)}') diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example05.py b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example05.py new file mode 100644 index 0000000..fafdd56 --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example05.py @@ -0,0 +1,9 @@ +""" +公鸡5元一只,母鸡3元一只,小鸡1元三只,用100元买一百只鸡,问公鸡、母鸡、小鸡各有多少只? +""" +for x in range(21): + for y in range(34): + z = 100 - x - y + if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100: + print(x, y, z) + diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example06.py b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example06.py new file mode 100644 index 0000000..993ea08 --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/code/example06.py @@ -0,0 +1,14 @@ +import re + +import PyPDF2 + +with open('Python_Tricks_encrypted.pdf', 'rb') as pdf_file_stream: + reader = PyPDF2.PdfFileReader(pdf_file_stream) + with open('dictionary.txt', 'r') as txt_file_stream: + file_iter = iter(lambda: txt_file_stream.readline(), '') + for word in file_iter: + word = re.sub(r'\s', '', word) + if reader.decrypt(word): + print(word) + break + diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/算法入门系列1-周而复始.key b/公开课/文档/第05次公开课-算法入门系列1-周而复始/算法入门系列1-周而复始.key new file mode 100644 index 0000000..cf16463 Binary files /dev/null and b/公开课/文档/第05次公开课-算法入门系列1-周而复始/算法入门系列1-周而复始.key differ diff --git a/公开课/文档/第05次公开课-算法入门系列1-周而复始/算法入门系列1-周而复始.md b/公开课/文档/第05次公开课-算法入门系列1-周而复始/算法入门系列1-周而复始.md new file mode 100644 index 0000000..b9dcb3f --- /dev/null +++ b/公开课/文档/第05次公开课-算法入门系列1-周而复始/算法入门系列1-周而复始.md @@ -0,0 +1,158 @@ +## 算法入门系列课程1 - 周而复始 + +### 算法概述 + +1. 什么是算法? + + 解决问题的正确方法和具体的实施步骤。 + + 例子1:如何在两栋相距50m的大楼的两个房间牵一条线(两个房间都有窗)? + + - 养一只鸟(如鸽子),将线送过去 + - 用很长的杆子将线递过去 + - 用无人机(遥控飞行器)将线送过去 + + 如何评价这些方法的好坏?**少花钱,不费事**! + + 例子2:大教室里坐了几百名学生一起听课,如何快速的统计学生人数? + + 例子3:向列表容器中**逆向**插入100000个元素。 + + - 方法1: + + ```Python + nums = [] + for i in range(100000): + nums.append(i) + nums.reverse() + ``` + + - 方法2: + + ```Python + nums = [] + for i in range(100000): + nums.insert(0, i) + ``` + + 例子3:生成Fibonacci数列(前100个Fibonacci数)。 + + - 方法1 - 递推: + + ```Python + a, b = 0, 1 + for num in range(1, 101): + a, b = b, a + b + print(f'{num}: {a}') + ``` + + - 方法2 - 递归: + + ```Python + def fib(num): + if num in (1, 2): + return 1 + return fib(num - 1) + fib(num - 2) + + + for num in range(1, 101): + print(f'{num}: {fib(num)}') + ``` + + - 方法3 - 改进的递归: + + ```Python + def fib(num, temp={}): + if num in (1, 2): + return 1 + elif num not in temp: + temp[num] = fib(num - 1) + fib(num - 2) + return temp[num] + ``` + + - 方法4 - 改进的递归: + + ```Python + from functools import lru_cache + + + @lru_cache() + def fib(num): + if num in (1, 2): + return 1 + return fib(num - 1) + fib(num - 2) + ``` + +2. 如何评价算法的好坏? + + [渐近时间复杂度]()和渐近空间复杂度。 + +3. 大***O***符号的意义? + + 表示一个函数相对于输入规模的增长速度,也可以称之为函数的数量级。 + + | 大*O*符号 | 说明 | 例子 | + | --------------- | ------------------ | -------------------------------------------- | + | $$O(c)$$ | 常量时间复杂度 | 布隆过滤器 / 哈希存储 | + | $$O(log_2n)$$ | 对数时间复杂度 | 二分查找(折半查找) | + | $$O(n)$$ | 线性时间复杂度 | 顺序查找 / 桶排序 | + | $$O(n*log_2n)$$ | 对数线性时间复杂度 | 高级排序算法(归并排序、快速排序) | + | $$O(n^2)$$ | 平方时间复杂度 | 简单排序算法(选择排序、插入排序、冒泡排序) | + | $$O(n^3)$$ | 立方时间复杂度 | Floyd算法 / 矩阵乘法运算 | + | $$O(2^n)$$ | 几何级数时间复杂度 | 汉诺塔 | + | $$O(n!)$$ | 阶乘时间复杂度 | 旅行经销商问题 | + +### 穷举法 + +在计算机科学中,**穷举法**或者**暴力搜索法**是一个非常非常直观的解决问题的方法,这种方法通过一项一项的列举解决方案所有可能的候选项以及检查每个候选项是否符合问题的描述,最终得到问题的解。 + +虽然暴力搜索很容易实现,并且如果解决方案存在它就一定能够找到,但是它的代价是和候选方案的数量成比例的,由于这一点,在很多实际问题中,消耗的代价会随着问题规模的增加而快速地增长。因此,当问题规模有限或当存在可用于将候选解决方案的集合减少到可管理大小时,就可以使用暴力搜索。另外,当实现方法的简单度比速度更重要的时候,也可以考虑使用这种方法。 + +### 经典例子 + +1. **百钱百鸡**问题:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100元买一百只鸡,问公鸡、母鸡、小鸡各有多少只? + + ```Python + for x in range(21): + for y in range(34): + z = 100 - x - y + if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100: + print(x, y, z) + ``` + +2. **五人分鱼**问题:ABCDE五人在某天夜里合伙捕鱼,最后疲惫不堪各自睡觉。第二天A第一个醒来,他将鱼分为5份,扔掉多余的1条,拿走了属于自己的一份;B第二个醒来,也将鱼分为5份,扔掉多余的1条,拿走属于自己的一份;然后C、D、E依次醒来,也按同样的方式分鱼,问他们至少捕了多少条鱼? + + ```Python + fish = 6 + while True: + total = fish + enough = True + for _ in range(5): + if (total - 1) % 5 == 0: + total = (total - 1) // 5 * 4 + else: + enough = False + break + if enough: + print(fish) + break + fish += 5 + ``` + +3. **暴力破解口令**: + + ```Python + import re + + import PyPDF2 + + with open('Python_Tricks_encrypted.pdf', 'rb') as pdf_file_stream: + reader = PyPDF2.PdfFileReader(pdf_file_stream) + with open('dictionary.txt', 'r') as txt_file_stream: + file_iter = iter(lambda: txt_file_stream.readline(), '') + for word in file_iter: + word = re.sub(r'\s', '', word) + if reader.decrypt(word): + print(word) + break + ``` \ No newline at end of file diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example01.py b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example01.py new file mode 100644 index 0000000..cd41c9a --- /dev/null +++ b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example01.py @@ -0,0 +1,19 @@ +import sys + + +def fac(num): + if num == 0: + return 1 + return num * fac(num - 1) + + +def main(): + print(fac(59996)) + + +if __name__ == '__main__': + sys.setrecursionlimit(60000) + main() +# for i in range(1000): +# print(f'{i}:'.rjust(3), fac(i)) + diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example02.py b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example02.py new file mode 100644 index 0000000..b52c0e6 --- /dev/null +++ b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example02.py @@ -0,0 +1,14 @@ +def climb(num): + a, b, c = 1, 2, 4 + for _ in range(num - 1): + a, b, c = b, c, a + b + c + return a + + +def main(): + n = int(input('台阶数量: ')) + print(climb(n)) + + +if __name__ == '__main__': + main() diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example03.py b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example03.py new file mode 100644 index 0000000..000c764 --- /dev/null +++ b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example03.py @@ -0,0 +1,61 @@ +""" +迷宫寻路 +""" +import random +import sys + +WALL = -1 +ROAD = 0 + +ROWS = 10 +COLS = 10 + + +def find_way(maze, i=0, j=0, step=1): + """走迷宫""" + if 0 <= i < ROWS and 0 <= j < COLS and maze[i][j] == 0: + maze[i][j] = step + if i == ROWS - 1 and j == COLS - 1: + print('=' * 20) + display(maze) + sys.exit(0) + find_way(maze, i + 1, j, step + 1) + find_way(maze, i, j + 1, step + 1) + find_way(maze, i - 1, j, step + 1) + find_way(maze, i, j - 1, step + 1) + maze[i][j] = ROAD + + +def reset(maze): + """重置迷宫""" + for i in range(ROWS): + for j in range(COLS): + num = random.randint(1, 10) + maze[i][j] = WALL if num > 7 else ROAD + maze[0][0] = maze[ROWS - 1][COLS - 1] = ROAD + + +def display(maze): + """显示迷宫""" + for row in maze: + for col in row: + if col == -1: + print('■', end=' ') + elif col == 0: + print('□', end=' ') + else: + print(f'{col}'.ljust(2), end='') + print() + + +def main(): + """主函数""" + maze = [[0] * COLS for _ in range(ROWS)] + reset(maze) + display(maze) + find_way(maze) + print('没有出路!!!') + + +if __name__ == '__main__': + main() diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example04.py b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example04.py new file mode 100644 index 0000000..204c12a --- /dev/null +++ b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example04.py @@ -0,0 +1,42 @@ +""" +骑士巡逻 +""" +import sys + +SIZE = 8 + + +def display(board): + """显示棋盘""" + for row in board: + for col in row: + print(f'{col}'.rjust(2, '0'), end=' ') + print() + + +def patrol(board, i=0, j=0, step=1): + """巡逻""" + if 0 <= i < SIZE and 0 <= j < SIZE and board[i][j] == 0: + board[i][j] = step + if step == SIZE * SIZE: + display(board) + sys.exit(0) + patrol(board, i + 1, j + 2, step + 1) + patrol(board, i + 2, j + 1, step + 1) + patrol(board, i + 2, j - 1, step + 1) + patrol(board, i + 1, j - 2, step + 1) + patrol(board, i - 1, j - 2, step + 1) + patrol(board, i - 2, j - 1, step + 1) + patrol(board, i - 2, j + 1, step + 1) + patrol(board, i - 1, j + 2, step + 1) + board[i][j] = 0 + + +def main(): + """主函数""" + board = [[0] * SIZE for _ in range(SIZE)] + patrol(board) + + +if __name__ == '__main__': + main() diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example05.py b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example05.py new file mode 100644 index 0000000..932fc57 --- /dev/null +++ b/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example05.py @@ -0,0 +1,10 @@ +size = 25 + +for i in range(size): + for j in range(size): + if i % 2 == 1 or j % 2 == 1: + print('■', end='') + else: + print('□', end='') + print() + diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/droste.png b/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/droste.png new file mode 100644 index 0000000..5d4d71a Binary files /dev/null and b/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/droste.png differ diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/eight_queen.png b/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/eight_queen.png new file mode 100644 index 0000000..84ed539 Binary files /dev/null and b/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/eight_queen.png differ diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/knight_tour.gif b/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/knight_tour.gif new file mode 100644 index 0000000..95e3ee8 Binary files /dev/null and b/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/knight_tour.gif differ diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/maze.png b/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/maze.png new file mode 100644 index 0000000..82bf4c4 Binary files /dev/null and b/公开课/文档/第06次公开课-算法入门系列2-在水一方/res/maze.png differ diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/算法入门系列2 - 在水一方.md b/公开课/文档/第06次公开课-算法入门系列2-在水一方/算法入门系列2 - 在水一方.md new file mode 100644 index 0000000..459d5d0 --- /dev/null +++ b/公开课/文档/第06次公开课-算法入门系列2-在水一方/算法入门系列2 - 在水一方.md @@ -0,0 +1,212 @@ +## 算法入门系列2 - 在水一方 + +在第一次的公开课中,我们讲到了穷举法。穷举法也被称为暴力搜索法,今天我们要讲的回溯法就是暴力搜索法的一种。接下来我们讲到的很多算法跟“递归”这个概念有或多或少的关系,所以我们先说说“递归”。 + +### 现实中的递归 + +从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?…… + +野比大雄在房间里,用时光电视看着未来的情况。电视画面中,野比大雄在房间里,用时光电视看着未来的情况。电视画面中,野比大雄在房间里,用时光电视看着未来的情况…… + +阶乘的递归定义:$$0! = 1$$,$$n!=n*(n-1)!$$ ,使用被定义对象的自身来为其下定义称为递归定义。 + +[德罗斯特效应](https://zh.wikipedia.org/wiki/%E5%BE%B7%E7%BD%97%E6%96%AF%E7%89%B9%E6%95%88%E5%BA%94)是递归的一种视觉形式。图中女性手持的物体中有一幅她本人手持同一物体的小图片,进而小图片中还有更小的一幅她手持同一物体的图片…… + +![](./res/droste.png) + +### 递归的应用 + +在程序中,一个函数如果直接或者间接的调用了自身,我们就称之为递归函数。 + +写递归函数有两个要点: + +1. 收敛条件 - 什么时候结束递归。 +2. 递归公式 - 每一项与前一项(前*N*项)的关系。 + +例子1:求阶乘。 + +```Python +def fac(num): + if num == 0: + return 1 + return num * fac(num - 1) +``` + +Python对递归的深度加以了限制(默认1000层函数调用),如果想突破这个限制,可以使用下面的方法。 + +```Python +import sys + +sys.setrecursionlimit(10000) +``` + +例子2:爬楼梯 - 楼梯有*n*个台阶,一步可以走1阶、2阶或3阶,走完*n*个台阶共有多少种不同的走法。 + +```Python +def climb(num): + if num == 0: + return 1 + elif num < 0: + return 0 + return climb(num - 1) + climb(num - 2) + climb(num - 3) +``` + +**注意**:上面的递归函数性能会非常的差,因为时间复杂度是几何级数级的。 + +优化后的代码。 + +```Python +from functools import lru_cache + + +@lru_cache() +def climb(num): + if num == 0: + return 1 + elif num < 0: + return 0 + return climb(num - 1) + climb(num - 2) + climb(num - 3) +``` + +不使用的递归的代码。 + +```Python +def climb(num): + a, b, c = 1, 2, 4 + for _ in range(num - 1): + a, b, c = b, c, a + b + c + return a +``` + +**重点**:有更好的办法的时候,请不要考虑递归。 + +### 回溯法 + +**回溯法**是[暴力搜索法](https://zh.wikipedia.org/wiki/%E6%9A%B4%E5%8A%9B%E6%90%9C%E5%B0%8B%E6%B3%95)中的一种。对于某些计算问题而言,回溯法是一种可以找出所有(或一部分)解的一般性算法,尤其适用于约束满足问题(在解决约束满足问题时,我们逐步构造更多的候选解,并且在确定某一部分候选解不可能补全成正确解之后放弃继续搜索这个部分候选解本身及其可以拓展出的子候选解,转而测试其他的部分候选解)。 + +### 经典案例 + +例子1:**迷宫寻路**。 + +![](./res/maze.png) + +```Python +""" +迷宫寻路 +""" +import random +import sys + +WALL = -1 +ROAD = 0 + +ROWS = 10 +COLS = 10 + + +def find_way(maze, i=0, j=0, step=1): + """走迷宫""" + if 0 <= i < ROWS and 0 <= j < COLS and maze[i][j] == 0: + maze[i][j] = step + if i == ROWS - 1 and j == COLS - 1: + print('=' * 20) + display(maze) + sys.exit(0) + find_way(maze, i + 1, j, step + 1) + find_way(maze, i, j + 1, step + 1) + find_way(maze, i - 1, j, step + 1) + find_way(maze, i, j - 1, step + 1) + maze[i][j] = ROAD + + +def reset(maze): + """重置迷宫""" + for i in range(ROWS): + for j in range(COLS): + num = random.randint(1, 10) + maze[i][j] = WALL if num > 7 else ROAD + maze[0][0] = maze[ROWS - 1][COLS - 1] = ROAD + + +def display(maze): + """显示迷宫""" + for row in maze: + for col in row: + if col == -1: + print('■', end=' ') + elif col == 0: + print('□', end=' ') + else: + print(f'{col}'.ljust(2), end='') + print() + + +def main(): + """主函数""" + maze = [[0] * COLS for _ in range(ROWS)] + reset(maze) + display(maze) + find_way(maze) + print('没有出路!!!') + + +if __name__ == '__main__': + main() +``` + +**说明:**上面的代码用随机放置围墙的方式来生成迷宫,更好的生成迷宫的方式请参考[《简单的使用回溯法生成 Tile Based 迷宫》]()一文。 + +例子2:**骑士巡逻** - 国际象棋中的骑士(马),按照骑士的移动规则走遍整个棋盘的每一个方格,而且每个方格只能够经过一次。 + +![](./res/knight_tour.gif) + +```Python +""" +骑士巡逻 +""" +import sys + +SIZE = 8 + + +def display(board): + """显示棋盘""" + for row in board: + for col in row: + print(f'{col}'.rjust(2, '0'), end=' ') + print() + + +def patrol(board, i=0, j=0, step=1): + """巡逻""" + if 0 <= i < SIZE and 0 <= j < SIZE and board[i][j] == 0: + board[i][j] = step + if step == SIZE * SIZE: + display(board) + sys.exit(0) + patrol(board, i + 1, j + 2, step + 1) + patrol(board, i + 2, j + 1, step + 1) + patrol(board, i + 2, j - 1, step + 1) + patrol(board, i + 1, j - 2, step + 1) + patrol(board, i - 1, j - 2, step + 1) + patrol(board, i - 2, j - 1, step + 1) + patrol(board, i - 2, j + 1, step + 1) + patrol(board, i - 1, j + 2, step + 1) + board[i][j] = 0 + + +def main(): + """主函数""" + board = [[0] * SIZE for _ in range(SIZE)] + patrol(board) + + +if __name__ == '__main__': + main() +``` + +例子3:**八皇后** - 如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。 + +![](./res/eight_queen.png) + +**说明**:这个问题太经典了,网上有大把的答案,留给大家自己搞定。 \ No newline at end of file diff --git a/公开课/文档/第06次公开课-算法入门系列2-在水一方/算法入门系列2-在水一方.key b/公开课/文档/第06次公开课-算法入门系列2-在水一方/算法入门系列2-在水一方.key new file mode 100755 index 0000000..838f8de Binary files /dev/null and b/公开课/文档/第06次公开课-算法入门系列2-在水一方/算法入门系列2-在水一方.key differ diff --git a/公开课/视频/视频链接.txt b/公开课/视频/视频链接.txt new file mode 100644 index 0000000..c043bcf --- /dev/null +++ b/公开课/视频/视频链接.txt @@ -0,0 +1 @@ +链接:https://pan.baidu.com/s/1PuevYD_A0c1DgJbyeAycHA 密码:l2nd \ No newline at end of file diff --git a/Day66-75/常见反爬策略及应对方案.md b/常见反爬策略及应对方案.md similarity index 100% rename from Day66-75/常见反爬策略及应对方案.md rename to 常见反爬策略及应对方案.md diff --git a/更新日志.md b/更新日志.md new file mode 100644 index 0000000..b15e47f --- /dev/null +++ b/更新日志.md @@ -0,0 +1,45 @@ +## 更新日志 + +### 2019年8月12日 + +1. 发布了《使用Hexo搭建自己的博客》一文。 + +### 2019年8月8日 + +1. 最近公司给安排了很多任务,所以好久都没有更新这个项目,今天终于把一直计划更新的《关系型数据库MySQL》更新完了。 +2. 昨天微信收款提示我已经连续有48天收到了打赏,非常感谢大家持续的支持。 +3. 最近一直在计划为这个项目录制一个配套的视频,当然这个工作量的巨大是可想而知的,但是我还是决定要在年底之前开始做这件事情,这样才能不辜负那么多希望通过这个项目学习和了解Python的人。 + +### 2019年7月11日 + +1. 今天终于结束了出差的日子,回来先把最近收到的打赏全部捐赠给了绿之叶,总共捐出了111笔打赏。 + + ![](./res/donation.png) + +### 2019年7月9日 + +1. 最近出差,项目一直处于停更状态。交流群的很多初学者反馈从第8天开始内容就有一定难度,最近本来也打算把语言基础部分和爬虫的部门重新整理一次,这次争取将文字和案例做得更加通俗易懂,而且更具实用性,这个事情从今天已然开始了,最终的目标是要将这部分的内容整理成一本书,希望大家到时候能够一如既往的支持。 +2. 最近1周多的时间一共收到60笔以上的打赏,最多的一天收到了14笔打赏,还是要再次谢谢大家为知识付费的行为,当然加交流群是不用付费的,您支付的费用会用于支持山区儿童教育。 +3. 今天重新翻译了*Zen of Python*,这次的版本我自己都比较喜欢,所以也分享给大家。 + +### 2019年6月30日 + +1. 最近2天一共收到11笔打赏。 +2. 终于将第48天《前后端分离开发》一文更新完,但是自己都感觉有点凑数的嫌疑,文字描述没怎么花心思去写,大家可以参考项目的代码来了解前后端分离开发。项目中使用了Vue.js,但是没有使用脚手架工具,也没有配置前端路由,仅仅使用了Vue.js来渲染页面,毕竟我自己也不是专业的前端。 + +### 2019年6月27日 + +1. 最近3天一共收到35笔打赏,感谢大家持续关注。 +2. 近期事情较多,更新速度可能会放缓,请大家谅解。 +3. 今晚公开课相关的资料已经更新到公开课目录中。 + +### 2019年6月23日 + +1. 最近几天一共收到25笔打赏,感谢大家的支持。 +2. 更新了QQ交流群,重新创建了一个2000人群。 + +### 2019年6月18日 + +1. 在朋友的建议下,给首页加了一个打赏的二维码,看看有多少愿意为知识付费。今天一共收到了7位小伙伴的打赏,在此表示感谢。打赏获得的收入将全部捐赠给**绿之叶公益**([点击了解]())。之前每年都会试着为这个公益组织做一些自己能做的事情,这次当然也不能例外。 +2. Django部分(第41天到第55天)更新到第47天,最新上线的部分包括报表、日志、ORM查询优化以及中间件相关的内容,并将投票应用的完成代码同步到github。 + diff --git a/玩转PyCharm.md b/玩转PyCharm.md index b40f819..cf74f5d 100644 --- a/玩转PyCharm.md +++ b/玩转PyCharm.md @@ -1,6 +1,6 @@ ## 玩转PyCharm -PyCharm是由JetBrains公司开发的提供给Python专业的开发者的一个集成开发环境,它最大的优点是能够大大提升Python开发者的工作效率,为开发者集成了很多用起来非常顺手的功能,包括代码调试、高亮语法、代码跳转、智能提示、自动补全、单元测试、版本控制等等。此外,PyCharm还提供了对一些高级功能的支持,包括支持基于Django框架的Web开发、。 +PyCharm是由JetBrains公司开发的提供给Python专业的开发者的一个集成开发环境,它最大的优点是能够大大提升Python开发者的工作效率,为开发者集成了很多用起来非常顺手的功能,包括代码调试、高亮语法、代码跳转、智能提示、自动补全、单元测试、版本控制等等。此外,PyCharm还提供了对一些高级功能的支持,包括支持基于Django框架的Web开发。 ### PyCharm的安装 @@ -66,7 +66,7 @@ PyCharm社区版只能创建Python项目,如果项目中需要Django的支持 ![](./res/pycharm-comm-django-1.png) -创建好Python项目之后,可以打开屏幕下方的终端(Terminal),并通过`pip install`安装Django项目的依赖项。 +创建好Python项目之后,可以打开屏幕下方的终端(Terminal),并通过`pip install`安装Django项目的依赖项,可以通过`-i https://pypi.doubanio.com/simple`来指定下载依赖库的镜像仓库。 ![](./res/pycharm-comm-django-2.png) @@ -74,6 +74,8 @@ PyCharm社区版只能创建Python项目,如果项目中需要Django的支持 ![](./res/pycharm-comm-django-7.png) +下面是搜索依赖项的界面,可以通过点击“Install Package”按钮来安装指定的依赖项;也可以通过点击“Manage Repositories”按钮来指定下载依赖项的仓库,国内用户推荐使用豆瓣镜像。 + ![](./res/pycharm-comm-django-8.png) 接下来可以在终端中输入`django-amdin startproject`指令来创建项目。 @@ -84,7 +86,7 @@ PyCharm社区版只能创建Python项目,如果项目中需要Django的支持 ![](./res/pycharm-comm-django-4.png) -在配置窗口的右侧,指定要执行的脚本路径(Django项目的manage.py文件的位置)和运行参数(runserver)。 +在配置窗口的右侧,指定要执行的脚本路径(Django项目的manage.py文件的位置)和运行参数(runserver),运行参数的后面还可以跟IP地址和端口。 ![](./res/pycharm-comm-django-5.png) diff --git a/用函数还是用复杂的表达式.md b/用函数还是用复杂的表达式.md index ebf10eb..b084543 100644 --- a/用函数还是用复杂的表达式.md +++ b/用函数还是用复杂的表达式.md @@ -1,6 +1,6 @@ ## 要不要使用复杂表达式 -Perl语言的原作者Larry Wall曾经说过,伟大的程序员都有三个优点:懒惰、暴躁和自负。乍一看这三个词语没有一个是褒义词,但在程序员的世界里,这三个词有不同的意义。首先,懒惰会促使程序员去写一些省事儿的程序来辅助自己或别人更好的完成工作,这样我们就无需做那些重复和繁琐的劳动;同理能够用3行代码解决的事情,我们也绝不会写出10行代码来。其次,暴躁会让程序员主动的去完成一些你还没有提出的工作,去优化自己的代码让它更有效率,能够3秒钟完成的任务,我们绝不能容忍1分钟的等待。最后,自负会促使程序员写出可靠无误的代码,我们写代码不是为了接受批评和指责,而是为了让其他人来膜拜。 +Perl语言的原作者*Larry Wall*曾经说过,伟大的程序员都有三个优点:懒惰、暴躁和自负。乍一看这三个词语没有一个是褒义词,但在程序员的世界里,这三个词有不同的意义。首先,懒惰会促使程序员去写一些省事儿的程序来辅助自己或别人更好的完成工作,这样我们就无需做那些重复和繁琐的劳动;同理能够用3行代码解决的事情,我们也绝不会写出10行代码来。其次,暴躁会让程序员主动的去完成一些你还没有提出的工作,去优化自己的代码让它更有效率,能够3秒钟完成的任务,我们绝不能容忍1分钟的等待。最后,自负会促使程序员写出可靠无误的代码,我们写代码不是为了接受批评和指责,而是为了让其他人来膜拜。 那么接下来就有一个很有意思的问题值得探讨一下,我们需要一个程序从输入的三个数中找出最大的那个数。这个程序对任何会编程的人来说都是小菜一碟,甚至不会编程的人经过10分钟的学习也能搞定。下面是用来解决这个问题的Python代码。 diff --git a/那些年我们踩过的那些坑.md b/那些年我们踩过的那些坑.md index 3be7d4f..f9cd50d 100644 --- a/那些年我们踩过的那些坑.md +++ b/那些年我们踩过的那些坑.md @@ -34,7 +34,6 @@ def main(): if __name__ == '__main__': main() - ``` 上面代码的部分运行结果如下图所示,出现这个结果的原因是Python出于对性能的考虑所做的一项优化。对于整数对象,Python把一些频繁使用的整数对象缓存起来,保存到一个叫`small_ints`的链表中,在Python的整个生命周期内,任何需要引用这些整数对象的地方,都不再重新创建新的对象,而是直接引用缓存中的对象。Python把频繁使用的整数对象的值定在[-5, 256]这个区间,如果需要这个范围的整数,就直接从`small_ints`中获取引用而不是临时创建新的对象。因为大于256或小于-5的整数不在该范围之内,所以就算两个整数的值是一样,但它们是不同的对象。 @@ -44,7 +43,6 @@ if __name__ == '__main__': 当然仅仅如此这个坑就不值一提了,如果你理解了上面的规则,我们就再看看下面的代码。 ```Python -import dis a = 257 @@ -58,17 +56,15 @@ def main(): if __name__ == "__main__": main() - ``` 程序的执行结果已经用注释写在代码上了。够坑吧!看上去`a`、`b`和`c`的值都是一样的,但是`is`运算的结果却不一样。为什么会出现这样的结果,首先我们来说说Python程序中的代码块。所谓代码块是程序的一个最小的基本执行单位,一个模块文件、一个函数体、一个类、交互式命令中的单行代码都叫做一个代码块。上面的代码由两个代码块构成,`a = 257`是一个代码块,`main`函数是另外一个代码块。Python内部为了进一步提高性能,凡是在一个代码块中创建的整数对象,如果值不在`small_ints`缓存范围之内,但在同一个代码块中已经存在一个值与其相同的整数对象了,那么就直接引用该对象,否则创建一个新的对象出来,这条规则对不在`small_ints`范围的负数并不适用,对负数值浮点数也不适用,但对非负浮点数和字符串都是适用的,这一点读者可以自行证明。所以 `b is c`返回了`True`,而`a`和`b`不在同一个代码块中,虽然值都是257,但却是两个不同的对象,`is`运算的结果自然是`False`了。 为了验证刚刚的结论,我们可以借用`dis`模块(听名字就知道是进行反汇编的模块)从字节码的角度来看看这段代码。如果不理解什么是字节码,可以先看看[《谈谈 Python 程序的运行原理》]((http://www.cnblogs.com/restran/p/4903056.html))这篇文章。可以先用`import dis`导入`dis`模块并按照如下所示的方式修改代码。 ```Python -if __name__ == "__main__": - main() - dis.dis(main) +import dis +dis.dis(main) ``` 代码的执行结果如下图所示。可以看出代码第6行和第7行,也就是`main`函数中的257是从同一个位置加载的,因此是同一个对象;而代码第9行的`a`明显是从不同的地方加载的,因此引用的是不同的对象。 @@ -82,20 +78,14 @@ if __name__ == "__main__": Python中有一种内置的数据类型叫列表,它是一种容器,可以用来承载其他的对象(准确的说是其他对象的引用),列表中的对象可以称为列表的元素,很明显我们可以把列表作为列表中的元素,这就是所谓的嵌套列表。嵌套列表可以模拟出现实中的表格、矩阵、2D游戏的地图(如植物大战僵尸的花园)、棋盘(如国际象棋、黑白棋)等。但是在使用嵌套的列表时要小心,否则很可能遭遇非常尴尬的情况,下面是一个小例子。 ```Python -def main(): - names = ['关羽', '张飞', '赵云', '马超', '黄忠'] - subjs = ['语文', '数学', '英语'] - scores = [[0] * 3] * 5 - for row, name in enumerate(names): - print('请输入%s的成绩' % name) - for col, subj in enumerate(subjs): - scores[row][col] = float(input(subj + ': ')) - print(scores) - - -if __name__ == '__main__': - main() - +names = ['关羽', '张飞', '赵云', '马超', '黄忠'] +subjs = ['语文', '数学', '英语'] +scores = [[0] * 3] * 5 +for row, name in enumerate(names): + print('请输入%s的成绩' % name) + for col, subj in enumerate(subjs): + scores[row][col] = float(input(subj + ': ')) + print(scores) ``` 我们希望录入5个学生3门课程的成绩,于是定义了一个有5个元素的列表,而列表中的每个元素又是一个由3个元素构成的列表,这样一个列表的列表刚好跟一个表格是一致的,相当于有5行3列,接下来我们通过嵌套的for-in循环输入每个学生3门课程的成绩。程序执行完成后我们发现,每个学生3门课程的成绩是一模一样的,而且就是最后录入的那个学生的成绩。 @@ -110,41 +100,29 @@ b = ['apple', 'pitaya', 'grape'] 知道了这一点,我们可以回过头看看刚才的程序,我们对列表进行`[[0] * 3] * 5`操作时,仅仅是将`[0, 0, 0]`这个列表的地址进行了复制,并没有创建新的列表对象,所以容器中虽然有5个元素,但是这5个元素引用了同一个列表对象,这一点可以通过`id`函数检查`scores[0]`和`scores[1]`的地址得到证实。所以正确的代码应该按照如下的方式进行修改。 ```Python -def main(): - names = ['关羽', '张飞', '赵云', '马超', '黄忠'] - subjs = ['语文', '数学', '英语'] - scores = [[]] * 5 - for row, name in enumerate(names): - print('请输入%s的成绩' % name) - scores[row] = [0] * 3 - for col, subj in enumerate(subjs): - scores[row][col] = float(input(subj + ': ')) - print(scores) - - -if __name__ == '__main__': - main() - +names = ['关羽', '张飞', '赵云', '马超', '黄忠'] +subjs = ['语文', '数学', '英语'] +scores = [[]] * 5 +for row, name in enumerate(names): + print('请输入%s的成绩' % name) + scores[row] = [0] * 3 + for col, subj in enumerate(subjs): + scores[row][col] = float(input(subj + ': ')) + print(scores) ``` 或者 ```Python -def main(): - names = ['关羽', '张飞', '赵云', '马超', '黄忠'] - subjs = ['语文', '数学', '英语'] - scores = [[0] * 3 for _ in range(5)] - for row, name in enumerate(names): - print('请输入%s的成绩' % name) - scores[row] = [0] * 3 - for col, subj in enumerate(subjs): - scores[row][col] = float(input(subj + ': ')) - print(scores) - - -if __name__ == '__main__': - main() - +names = ['关羽', '张飞', '赵云', '马超', '黄忠'] +subjs = ['语文', '数学', '英语'] +scores = [[0] * 3 for _ in range(5)] +for row, name in enumerate(names): + print('请输入%s的成绩' % name) + scores[row] = [0] * 3 + for col, subj in enumerate(subjs): + scores[row][col] = float(input(subj + ': ')) + print(scores) ``` 如果对内存的使用不是很理解,可以看看[PythonTutor网站](http://www.pythontutor.com/)上提供的代码可视化执行功能,通过可视化执行,我们可以看到内存是如何分配的,从而避免在使用嵌套列表或者复制对象时可能遇到的坑。 @@ -168,18 +146,9 @@ class Student(object): return self.__name + ': ' + str(self.__age) -def main(): - stu = Student('骆昊', 38) - # 'Student' object has no attribute '__name' - # print(stu.__name) - # 用下面的方式照样可以访问类中的私有成员 - print(stu._Student__name) - print(stu._Student__age) - - -if __name__ == '__main__': - main() - +stu = Student('骆昊', 38) +print(stu._Student__name) +print(stu._Student__age) ``` Python为什么要做出这样的设定呢?用一句广为流传的格言来解释这个问题:“We are all consenting adults here”(我们都是成年人)。这句话表达了很多Python程序员的一个共同观点,那就是开放比封闭要好,我们应该自己对自己的行为负责而不是从语言层面来限制对数据或方法的访问。